*.h crlf
*.cs crlf
*.sh crlf
+*.il crlf
.gitattributes crlf
ChangeLog crlf
AC_ARG_WITH(sigaltstack, [ --with-sigaltstack=yes,no enable/disable support for sigaltstack (defaults to yes)],[],[with_sigaltstack=yes])
AC_ARG_WITH(static_mono, [ --with-static_mono=yes,no link mono statically to libmono (faster) (defaults to yes)],[],[with_static_mono=yes])
+AC_ARG_WITH(shared_mono, [ --with-shared_mono=yes,no build a shared libmono library (defaults to yes)],[],[with_shared_mono=yes])
if test "x$enable_static" = "xno"; then
with_static_mono=no
fi
+if test "x$enable_shared" = "xno"; then
+ with_shared_mono=no
+fi
+
if test "x$host_win32" = "xyes"; then
# Boehm GC requires the runtime to be in its own dll
with_static_mono=no
fi
AM_CONDITIONAL(STATIC_MONO, test x$with_static_mono != xno)
+AM_CONDITIONAL(SHARED_MONO, test x$with_shared_mono != xno)
AC_ARG_ENABLE(mcs-build, [ --disable-mcs-build disable the build of the mcs directory], try_mcs_build=$enableval, enable_mcs_build=yes)
AC_ARG_WITH(xen_opt, [ --with-xen_opt=yes,no Enable Xen-specific behaviour (defaults to yes)],[],[with_xen_opt=yes])
AC_ARG_ENABLE(minimal, [ --enable-minimal=LIST drop support for LIST subsystems.
LIST is a comma-separated list from: aot, profiler, decimal, pinvoke, debug,
- reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, normalization.],
+ reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, normalization, assembly_remapping.],
[
for feature in `echo "$enable_minimal" | sed -e "s/,/ /g"`; do
eval "mono_feature_disable_$feature='yes'"
AC_MSG_NOTICE([Disabled String normalization support.])
fi
+if test "x$mono_feature_disable_assembly_remapping" = "xyes"; then
+ AC_DEFINE(DISABLE_ASSEMBLY_REMAPPING, 1, [Disable assembly remapping.])
+ AC_MSG_NOTICE([Disabled Assembly remapping.])
+fi
+
AC_MSG_CHECKING(for visibility __attribute__)
AC_TRY_COMPILE([], [
void __attribute__ ((visibility ("hidden"))) doit (void) {}
fi
fi
+# disable the debugger entirely when building with moonlight
+if test "x$with_moonlight" != "xno"; then
+ mono_debugger_supported=no
+fi
+
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"
#AC_ARG_WITH(profile2, [ --with-profile2=yes,no If you want to install the 2.0 FX (defaults to yes)], [], [with_profile2=yes])
AC_ARG_WITH(profile4, [ --with-profile4=yes,no If you want to install the 4.0 FX (defaults to yes)], [], [with_profile4=yes])
-AC_ARG_WITH(monotouch, [ --with-monotouch=yes,no If you want to build the raw MonoTouch 2.1 assemblies (defaults to no)], [], [with_monotouch=no])
+AC_ARG_WITH(monodroid, [ --with-monodroid=yes,no If you want to build the MonoDroid 2.1 assemblies (defaults to no)], [], [with_monodroid=no])
+AC_ARG_WITH(monotouch, [ --with-monotouch=yes,no If you want to build the MonoTouch 2.1 assemblies (defaults to no)], [], [with_monotouch=no])
OPROFILE=no
AC_ARG_WITH(oprofile,[ --with-oprofile=no,<oprofile install dir> Enable oprofile support (defaults to no)],[
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" = "xyes"; then
- AC_DEFINE(MOONLIGHT,1,[Building for Moonlight])
- elif test "x$with_moonlight" = "xonly"; then
- AC_DEFINE(MOONLIGHT,1,[Building for Moonlight])
- fi
+ MOONLIGHT_DEFINES="-DMOONLIGHT -DDISABLE_ASSEMBLY_REMAPPING"
], [with_moonlight=no])
+AC_SUBST(MOONLIGHT_DEFINES)
AM_CONDITIONAL(MOONLIGHT, [test "x$with_moonlight" != "xno"])
AM_CONDITIONAL(ONLY_MOONLIGHT, [test "x$with_moonlight" = "xonly"])
AM_CONDITIONAL(INSTALL_4_0, [test "x$with_profile4" = xyes])
+AM_CONDITIONAL(INSTALL_MONODROID, [test "x$with_monodroid" = xyes])
AM_CONDITIONAL(INSTALL_MONOTOUCH, [test "x$with_monotouch" = xyes])
AM_CONDITIONAL(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes)
Libraries:
Moon Profile: $with_moonlight
+ MonoDroid: $with_monodroid
MonoTouch: $with_monotouch
JNI support: $jdk_headers_found
libgdiplus: $libgdiplus_msg
--- /dev/null
+<%--
+//
+// DefaultWsdlHelpGenerator.aspx:
+//
+// Author:
+// Lluis Sanchez Gual (lluis@ximian.com)
+//
+// (C) 2003 Ximian, Inc. http://www.ximian.com
+//
+--%>
+
+<%@ Import Namespace="System.Collections" %>
+<%@ Import Namespace="System.Collections.Generic" %>
+<%@ Import Namespace="System.IO" %>
+<%@ Import Namespace="System.Xml.Serialization" %>
+<%@ Import Namespace="System.Xml" %>
+<%@ Import Namespace="System.Xml.Schema" %>
+<%@ Import Namespace="System.Web.Services" %>
+<%@ Import Namespace="System.Web.Services.Description" %>
+<%@ Import Namespace="System.Web.Services.Configuration" %>
+<%@ Import Namespace="System.Web.Configuration" %>
+<%@ Import Namespace="System" %>
+<%@ Import Namespace="System.Net" %>
+<%@ Import Namespace="System.Globalization" %>
+<%@ Import Namespace="System.Resources" %>
+<%@ Import Namespace="System.Diagnostics" %>
+<%@ Import Namespace="System.CodeDom" %>
+<%@ Import Namespace="System.CodeDom.Compiler" %>
+<%@ Import Namespace="Microsoft.CSharp" %>
+<%@ Import Namespace="Microsoft.VisualBasic" %>
+<%@ Import Namespace="System.Text" %>
+<%@ Import Namespace="System.Text.RegularExpressions" %>
+<%@ Import Namespace="System.Security.Cryptography.X509Certificates" %>
+<%@ Assembly name="System.Web.Services" %>
+<%@ Page debug="true" %>
+
+<html>
+<script language="C#" runat="server">
+
+ServiceDescriptionCollection descriptions;
+XmlSchemas schemas;
+
+string WebServiceName;
+string WebServiceDescription;
+string PageName;
+
+string DefaultBinding;
+ArrayList ServiceProtocols;
+
+string CurrentOperationName;
+string CurrentOperationBinding;
+string OperationDocumentation;
+string CurrentOperationFormat;
+bool CurrentOperationSupportsTest;
+ArrayList InParams;
+ArrayList OutParams;
+string CurrentOperationProtocols;
+int CodeTextColumns = 95;
+BasicProfileViolationCollection ProfileViolations;
+
+void Page_Load(object sender, EventArgs e)
+{
+ descriptions = (ServiceDescriptionCollection) Context.Items["wsdls"];
+ schemas = (XmlSchemas) Context.Items["schemas"];
+
+ ServiceDescription desc = descriptions [0];
+ if (schemas.Count == 0) schemas = desc.Types.Schemas;
+
+ Service service = desc.Services[0];
+ WebServiceName = service.Name;
+ if (desc.Bindings.Count == 0)
+ return;
+
+ DefaultBinding = desc.Bindings[0].Name;
+ WebServiceDescription = service.Documentation;
+ if (WebServiceDescription == "" || WebServiceDescription == null)
+ WebServiceDescription = "Description has not been provided";
+ ServiceProtocols = FindServiceProtocols (null);
+
+ CurrentOperationName = Request.QueryString["op"];
+ CurrentOperationBinding = Request.QueryString["bnd"];
+ if (CurrentOperationName != null) BuildOperationInfo ();
+
+ PageName = HttpUtility.UrlEncode (Path.GetFileName(Request.Path), Encoding.UTF8);
+
+ ArrayList list = new ArrayList ();
+ foreach (ServiceDescription sd in descriptions) {
+ foreach (Binding bin in sd.Bindings)
+ if (bin.Extensions.Find (typeof(SoapBinding)) != null) list.Add (bin);
+ }
+
+ BindingsRepeater.DataSource = list;
+ Page.DataBind();
+
+ ProfileViolations = new BasicProfileViolationCollection ();
+ foreach (WsiProfilesElement claims in ((WebServicesSection) WebConfigurationManager.GetSection("system.web/webServices")).ConformanceWarnings)
+ if (claims.Name != WsiProfiles.None)
+ WebServicesInteroperability.CheckConformance (claims.Name, descriptions, ProfileViolations);
+}
+
+void BuildOperationInfo ()
+{
+ InParams = new ArrayList ();
+ OutParams = new ArrayList ();
+
+ Port port = FindPort (CurrentOperationBinding, null);
+ Binding binding = descriptions.GetBinding (port.Binding);
+
+ PortType portType = descriptions.GetPortType (binding.Type);
+ Operation oper = FindOperation (portType, CurrentOperationName);
+
+ OperationDocumentation = oper.Documentation;
+ if (OperationDocumentation == null || OperationDocumentation == "")
+ OperationDocumentation = "No additional remarks";
+
+ foreach (OperationMessage opm in oper.Messages)
+ {
+ if (opm is OperationInput)
+ BuildParameters (InParams, opm);
+ else if (opm is OperationOutput)
+ BuildParameters (OutParams, opm);
+ }
+
+ // Protocols supported by the operation
+ CurrentOperationProtocols = "";
+ WebServiceProtocols testProtocols = 0;
+ ArrayList prots = FindServiceProtocols (CurrentOperationName);
+ for (int n=0; n<prots.Count; n++) {
+ string prot = (string) prots [n];
+ if (n != 0) CurrentOperationProtocols += ", ";
+ CurrentOperationProtocols += prot;
+ if (prot == "HttpGet")
+ testProtocols |= WebServiceProtocols.HttpGet;
+ else if (prot == "HttpPost") {
+ testProtocols |= WebServiceProtocols.HttpPost;
+ if (Context.Request.IsLocal)
+ testProtocols |= WebServiceProtocols.HttpPostLocalhost;
+ }
+ }
+ CurrentOperationSupportsTest = (WebServicesSection.Current.EnabledProtocols & testProtocols) != 0;
+
+ // Operation format
+ OperationBinding obin = FindOperation (binding, CurrentOperationName);
+ if (obin != null)
+ CurrentOperationFormat = GetOperationFormat (obin);
+
+ InputParamsRepeater.DataSource = InParams;
+ InputFormParamsRepeater.DataSource = InParams;
+ OutputParamsRepeater.DataSource = OutParams;
+}
+
+void BuildParameters (ArrayList list, OperationMessage opm)
+{
+ Message msg = descriptions.GetMessage (opm.Message);
+ if (msg.Parts.Count > 0 && msg.Parts[0].Name == "parameters")
+ {
+ MessagePart part = msg.Parts[0];
+ XmlSchemaComplexType ctype;
+ if (part.Element == XmlQualifiedName.Empty)
+ {
+ ctype = (XmlSchemaComplexType) schemas.Find (part.Type, typeof(XmlSchemaComplexType));
+ }
+ else
+ {
+ XmlSchemaElement elem = (XmlSchemaElement) schemas.Find (part.Element, typeof(XmlSchemaElement));
+ ctype = (XmlSchemaComplexType) elem.SchemaType;
+ }
+ XmlSchemaSequence seq = ctype.Particle as XmlSchemaSequence;
+ if (seq == null) return;
+
+ foreach (XmlSchemaObject ob in seq.Items)
+ {
+ Parameter p = new Parameter();
+ p.Description = "No additional remarks";
+
+ if (ob is XmlSchemaElement)
+ {
+ XmlSchemaElement selem = GetRefElement ((XmlSchemaElement)ob);
+ p.Name = selem.Name;
+ p.Type = selem.SchemaTypeName.Name;
+ }
+ else
+ {
+ p.Name = "Unknown";
+ p.Type = "Unknown";
+ }
+ list.Add (p);
+ }
+ }
+ else
+ {
+ foreach (MessagePart part in msg.Parts)
+ {
+ Parameter p = new Parameter ();
+ p.Description = "No additional remarks";
+ p.Name = part.Name;
+ if (part.Element == XmlQualifiedName.Empty)
+ p.Type = part.Type.Name;
+ else
+ {
+ XmlSchemaElement elem = (XmlSchemaElement) schemas.Find (part.Element, typeof(XmlSchemaElement));
+ p.Type = elem.SchemaTypeName.Name;
+ }
+ list.Add (p);
+ }
+ }
+}
+
+string GetOperationFormat (OperationBinding obin)
+{
+ string format = "";
+ SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
+ if (sob != null) {
+ format = sob.Style.ToString ();
+ SoapBodyBinding sbb = obin.Input.Extensions.Find (typeof(SoapBodyBinding)) as SoapBodyBinding;
+ if (sbb != null)
+ format += " / " + sbb.Use;
+ }
+ return format;
+}
+
+XmlSchemaElement GetRefElement (XmlSchemaElement elem)
+{
+ if (!elem.RefName.IsEmpty)
+ return (XmlSchemaElement) schemas.Find (elem.RefName, typeof(XmlSchemaElement));
+ else
+ return elem;
+}
+
+ArrayList FindServiceProtocols(string operName)
+{
+ ArrayList table = new ArrayList ();
+ Service service = descriptions[0].Services[0];
+ foreach (Port port in service.Ports)
+ {
+ string prot = null;
+ Binding bin = descriptions.GetBinding (port.Binding);
+ if (bin.Extensions.Find (typeof(SoapBinding)) != null)
+ prot = "Soap";
+ else
+ {
+ HttpBinding hb = (HttpBinding) bin.Extensions.Find (typeof(HttpBinding));
+ if (hb != null && hb.Verb == "POST") prot = "HttpPost";
+ else if (hb != null && hb.Verb == "GET") prot = "HttpGet";
+ }
+
+ if (prot != null && operName != null)
+ {
+ if (FindOperation (bin, operName) == null)
+ prot = null;
+ }
+
+ if (prot != null && !table.Contains (prot))
+ table.Add (prot);
+ }
+ return table;
+}
+
+Port FindPort (string portName, string protocol)
+{
+ Service service = descriptions[0].Services[0];
+ foreach (Port port in service.Ports)
+ {
+ if (portName == null)
+ {
+ Binding binding = descriptions.GetBinding (port.Binding);
+ if (GetProtocol (binding) == protocol) return port;
+ }
+ else if (port.Name == portName)
+ return port;
+ }
+ return null;
+}
+
+string GetProtocol (Binding binding)
+{
+ if (binding.Extensions.Find (typeof(SoapBinding)) != null) return "Soap";
+ HttpBinding hb = (HttpBinding) binding.Extensions.Find (typeof(HttpBinding));
+ if (hb == null) return "";
+ if (hb.Verb == "POST") return "HttpPost";
+ if (hb.Verb == "GET") return "HttpGet";
+ return "";
+}
+
+
+Operation FindOperation (PortType portType, string name)
+{
+ foreach (Operation oper in portType.Operations) {
+ if (oper.Messages.Input.Name != null) {
+ if (oper.Messages.Input.Name == name) return oper;
+ }
+ else
+ if (oper.Name == name) return oper;
+ }
+
+ return null;
+}
+
+OperationBinding FindOperation (Binding binding, string name)
+{
+ foreach (OperationBinding oper in binding.Operations) {
+ if (oper.Input.Name != null) {
+ if (oper.Input.Name == name) return oper;
+ }
+ else
+ if (oper.Name == name) return oper;
+ }
+
+ return null;
+}
+
+string FormatBindingName (string name)
+{
+ if (name == DefaultBinding) return "Methods";
+ else return "Methods for binding<br>" + name;
+}
+
+string GetOpName (object op)
+{
+ OperationBinding ob = op as OperationBinding;
+ if (ob == null) return "";
+ if (ob.Input.Name != null) return ob.Input.Name;
+ else return ob.Name;
+}
+
+bool HasFormResult
+{
+ get { return Request.QueryString ["ext"] == "testform"; }
+}
+
+class NoCheckCertificatePolicy : ICertificatePolicy {
+ public bool CheckValidationResult (ServicePoint a, X509Certificate b, WebRequest c, int d)
+ {
+ return true;
+ }
+}
+
+string GetOrPost ()
+{
+ return (CurrentOperationProtocols.IndexOf ("HttpGet") >= 0) ? "GET" : "POST";
+}
+
+string GetQS ()
+{
+ bool fill = false;
+ string qs = "";
+ NameValueCollection query_string = Request.QueryString;
+ for (int n = 0; n < query_string.Count; n++) {
+ if (fill) {
+ if (qs != "") qs += "&";
+ qs += query_string.GetKey(n) + "=" + Server.UrlEncode (query_string [n]);
+ }
+ if (query_string.GetKey(n) == "ext") fill = true;
+ }
+
+ return qs;
+}
+
+string GetTestResultUrl ()
+{
+ if (!HasFormResult) return "";
+
+ string location = null;
+ ServiceDescription desc = descriptions [0];
+ Service service = desc.Services[0];
+ foreach (Port port in service.Ports)
+ if (port.Name == CurrentOperationBinding)
+ {
+ SoapAddressBinding sbi = (SoapAddressBinding) port.Extensions.Find (typeof(SoapAddressBinding));
+ if (sbi != null)
+ location = sbi.Location;
+ }
+
+ if (location == null)
+ return "Could not locate web service";
+
+ return location + "/" + CurrentOperationName;
+}
+
+string GenerateOperationMessages (string protocol, bool generateInput)
+{
+ if (!IsOperationSupported (protocol)) return "";
+
+ Port port;
+ if (protocol != "Soap") port = FindPort (null, protocol);
+ else port = FindPort (CurrentOperationBinding, null);
+
+ Binding binding = descriptions.GetBinding (port.Binding);
+ OperationBinding obin = FindOperation (binding, CurrentOperationName);
+ PortType portType = descriptions.GetPortType (binding.Type);
+ Operation oper = FindOperation (portType, CurrentOperationName);
+
+ HtmlSampleGenerator sg = new HtmlSampleGenerator (descriptions, schemas);
+ string txt = sg.GenerateMessage (port, obin, oper, protocol, generateInput);
+ if (protocol == "Soap") txt = WrapText (txt,CodeTextColumns);
+ txt = ColorizeXml (txt);
+ txt = txt.Replace ("@placeholder!","<span class='literal-placeholder'>");
+ txt = txt.Replace ("!placeholder@","</span>");
+ return txt;
+}
+
+bool IsOperationSupported (string protocol)
+{
+ if (CurrentPage != "op" || CurrentTab != "msg") return false;
+ if (protocol == "Soap") return true;
+
+ Port port = FindPort (null, protocol);
+ if (port == null) return false;
+ Binding binding = descriptions.GetBinding (port.Binding);
+ if (binding == null) return false;
+ return FindOperation (binding, CurrentOperationName) != null;
+}
+
+//
+// Proxy code generation
+//
+
+string GetProxyCode ()
+{
+ CodeNamespace codeNamespace = new CodeNamespace();
+ CodeCompileUnit codeUnit = new CodeCompileUnit();
+
+ codeUnit.Namespaces.Add (codeNamespace);
+
+ ServiceDescriptionImporter importer = new ServiceDescriptionImporter();
+
+ foreach (ServiceDescription sd in descriptions)
+ importer.AddServiceDescription(sd, null, null);
+
+ foreach (XmlSchema sc in schemas)
+ importer.Schemas.Add (sc);
+
+ importer.Import(codeNamespace, codeUnit);
+
+ string langId = Request.QueryString ["lang"];
+ if (langId == null || langId == "") langId = "cs";
+ CodeDomProvider provider = GetProvider (langId);
+ ICodeGenerator generator = provider.CreateGenerator();
+ CodeGeneratorOptions options = new CodeGeneratorOptions();
+
+ StringWriter sw = new StringWriter ();
+ generator.GenerateCodeFromCompileUnit(codeUnit, sw, options);
+
+ return Colorize (WrapText (sw.ToString (), CodeTextColumns), langId);
+}
+
+public string CurrentLanguage
+{
+ get {
+ string langId = Request.QueryString ["lang"];
+ if (langId == null || langId == "") langId = "cs";
+ return langId;
+ }
+}
+
+public string CurrentProxytName
+{
+ get {
+ string lan = CurrentLanguage == "cs" ? "C#" : "Visual Basic";
+ return lan + " Client Proxy";
+ }
+}
+
+private CodeDomProvider GetProvider(string langId)
+{
+ switch (langId.ToUpper())
+ {
+ case "CS": return new CSharpCodeProvider();
+ case "VB": return new VBCodeProvider();
+ default: return null;
+ }
+}
+
+//
+// Document generation
+//
+
+string GenerateDocument ()
+{
+ StringWriter sw = new StringWriter ();
+
+ if (CurrentDocType == "wsdl")
+ descriptions [CurrentDocInd].Write (sw);
+ else if (CurrentDocType == "schema")
+ schemas [CurrentDocInd].Write (sw);
+
+ return Colorize (WrapText (sw.ToString (), CodeTextColumns), "xml");
+}
+
+public string CurrentDocType
+{
+ get { return Request.QueryString ["doctype"] != null ? Request.QueryString ["doctype"] : "wsdl"; }
+}
+
+public int CurrentDocInd
+{
+ get { return Request.QueryString ["docind"] != null ? int.Parse (Request.QueryString ["docind"]) : 0; }
+}
+
+public string CurrentDocumentName
+{
+ get {
+ if (CurrentDocType == "wsdl")
+ return "WSDL document for namespace \"" + descriptions [CurrentDocInd].TargetNamespace + "\"";
+ else
+ return "Xml Schema for namespace \"" + schemas [CurrentDocInd].TargetNamespace + "\"";
+ }
+}
+
+//
+// Pages and tabs
+//
+
+bool firstTab = true;
+ArrayList disabledTabs = new ArrayList ();
+
+string CurrentTab
+{
+ get { return Request.QueryString["tab"] != null ? Request.QueryString["tab"] : "main" ; }
+}
+
+string CurrentPage
+{
+ get { return Request.QueryString["page"] != null ? Request.QueryString["page"] : "main" ; }
+}
+
+void WriteTabs ()
+{
+ if (CurrentOperationName != null)
+ {
+ WriteTab ("main","Overview");
+ WriteTab ("test","Test Form");
+ WriteTab ("msg","Message Layout");
+ }
+}
+
+void WriteTab (string id, string label)
+{
+ if (!firstTab) Response.Write(" | ");
+ firstTab = false;
+
+ string cname = CurrentTab == id ? "tabLabelOn" : "tabLabelOff";
+ Response.Write ("<a href='" + PageName + "?" + GetPageContext(null) + GetDataContext() + "tab=" + id + "' style='text-decoration:none'>");
+ Response.Write ("<span class='" + cname + "'>" + label + "</span>");
+ Response.Write ("</a>");
+}
+
+string GetTabContext (string pag, string tab)
+{
+ if (tab == null) tab = CurrentTab;
+ if (pag == null) pag = CurrentPage;
+ if (pag != CurrentPage) tab = "main";
+ return "page=" + pag + "&tab=" + tab + "&";
+}
+
+string GetPageContext (string pag)
+{
+ if (pag == null) pag = CurrentPage;
+ return "page=" + pag + "&";
+}
+
+class Tab
+{
+ public string Id;
+ public string Label;
+}
+
+//
+// Syntax coloring
+//
+
+static string keywords_cs =
+ "(\\babstract\\b|\\bevent\\b|\\bnew\\b|\\bstruct\\b|\\bas\\b|\\bexplicit\\b|\\bnull\\b|\\bswitch\\b|\\bbase\\b|\\bextern\\b|" +
+ "\\bobject\\b|\\bthis\\b|\\bbool\\b|\\bfalse\\b|\\boperator\\b|\\bthrow\\b|\\bbreak\\b|\\bfinally\\b|\\bout\\b|\\btrue\\b|" +
+ "\\bbyte\\b|\\bfixed\\b|\\boverride\\b|\\btry\\b|\\bcase\\b|\\bfloat\\b|\\bparams\\b|\\btypeof\\b|\\bcatch\\b|\\bfor\\b|" +
+ "\\bprivate\\b|\\buint\\b|\\bchar\\b|\\bforeach\\b|\\bprotected\\b|\\bulong\\b|\\bchecked\\b|\\bgoto\\b|\\bpublic\\b|" +
+ "\\bunchecked\\b|\\bclass\\b|\\bif\\b|\\breadonly\\b|\\bunsafe\\b|\\bconst\\b|\\bimplicit\\b|\\bref\\b|\\bushort\\b|" +
+ "\\bcontinue\\b|\\bin\\b|\\breturn\\b|\\busing\\b|\\bdecimal\\b|\\bint\\b|\\bsbyte\\b|\\bvirtual\\b|\\bdefault\\b|" +
+ "\\binterface\\b|\\bsealed\\b|\\bvolatile\\b|\\bdelegate\\b|\\binternal\\b|\\bshort\\b|\\bvoid\\b|\\bdo\\b|\\bis\\b|" +
+ "\\bsizeof\\b|\\bwhile\\b|\\bdouble\\b|\\block\\b|\\bstackalloc\\b|\\belse\\b|\\blong\\b|\\bstatic\\b|\\benum\\b|" +
+ "\\bnamespace\\b|\\bstring\\b)";
+
+static string keywords_vb =
+ "(\\bAddHandler\\b|\\bAddressOf\\b|\\bAlias\\b|\\bAnd\\b|\\bAndAlso\\b|\\bAnsi\\b|\\bAs\\b|\\bAssembly\\b|" +
+ "\\bAuto\\b|\\bBoolean\\b|\\bByRef\\b|\\bByte\\b|\\bByVal\\b|\\bCall\\b|\\bCase\\b|\\bCatch\\b|" +
+ "\\bCBool\\b|\\bCByte\\b|\\bCChar\\b|\\bCDate\\b|\\bCDec\\b|\\bCDbl\\b|\\bChar\\b|\\bCInt\\b|" +
+ "\\bClass\\b|\\bCLng\\b|\\bCObj\\b|\\bConst\\b|\\bCShort\\b|\\bCSng\\b|\\bCStr\\b|\\bCType\\b|" +
+ "\\bDate\\b|\\bDecimal\\b|\\bDeclare\\b|\\bDefault\\b|\\bDelegate\\b|\\bDim\\b|\\bDirectCast\\b|\\bDo\\b|" +
+ "\\bDouble\\b|\\bEach\\b|\\bElse\\b|\\bElseIf\\b|\\bEnd\\b|\\bEnum\\b|\\bErase\\b|\\bError\\b|" +
+ "\\bEvent\\b|\\bExit\\b|\\bFalse\\b|\\bFinally\\b|\\bFor\\b|\\bFriend\\b|\\bFunction\\b|\\bGet\\b|" +
+ "\\bGetType\\b|\\bGoSub\\b|\\bGoTo\\b|\\bHandles\\b|\\bIf\\b|\\bImplements\\b|\\bImports\\b|\\bIn\\b|" +
+ "\\bInherits\\b|\\bInteger\\b|\\bInterface\\b|\\bIs\\b|\\bLet\\b|\\bLib\\b|\\bLike\\b|\\bLong\\b|" +
+ "\\bLoop\\b|\\bMe\\b|\\bMod\\b|\\bModule\\b|\\bMustInherit\\b|\\bMustOverride\\b|\\bMyBase\\b|\\bMyClass\\b|" +
+ "\\bNamespace\\b|\\bNew\\b|\\bNext\\b|\\bNot\\b|\\bNothing\\b|\\bNotInheritable\\b|\\bNotOverridable\\b|\\bObject\\b|" +
+ "\\bOn\\b|\\bOption\\b|\\bOptional\\b|\\bOr\\b|\\bOrElse\\b|\\bOverloads\\b|\\bOverridable\\b|\\bOverrides\\b|" +
+ "\\bParamArray\\b|\\bPreserve\\b|\\bPrivate\\b|\\bProperty\\b|\\bProtected\\b|\\bPublic\\b|\\bRaiseEvent\\b|\\bReadOnly\\b|" +
+ "\\bReDim\\b|\\bREM\\b|\\bRemoveHandler\\b|\\bResume\\b|\\bReturn\\b|\\bSelect\\b|\\bSet\\b|\\bShadows\\b|" +
+ "\\bShared\\b|\\bShort\\b|\\bSingle\\b|\\bStatic\\b|\\bStep\\b|\\bStop\\b|\\bString\\b|\\bStructure\\b|" +
+ "\\bSub\\b|\\bSyncLock\\b|\\bThen\\b|\\bThrow\\b|\\bTo\\b|\\bTrue\\b|\\bTry\\b|\\bTypeOf\\b|" +
+ "\\bUnicode\\b|\\bUntil\\b|\\bVariant\\b|\\bWhen\\b|\\bWhile\\b|\\bWith\\b|\\bWithEvents\\b|\\bWriteOnly\\b|\\bXor\\b)";
+
+string Colorize (string text, string lang)
+{
+ if (lang == "xml") return ColorizeXml (text);
+ else if (lang == "cs") return ColorizeCs (text);
+ else if (lang == "vb") return ColorizeVb (text);
+ else return text;
+}
+
+string ColorizeXml (string text)
+{
+ text = text.Replace (" ", " ");
+ Regex re = new Regex ("\r\n|\r|\n");
+ text = re.Replace (text, "_br_");
+
+ re = new Regex ("<\\s*(\\/?)\\s*([\\s\\S]*?)\\s*(\\/?)\\s*>");
+ text = re.Replace (text,"{blue:<$1}{maroon:$2}{blue:$3>}");
+
+ re = new Regex ("\\{(\\w*):([\\s\\S]*?)\\}");
+ text = re.Replace (text,"<span style='color:$1'>$2</span>");
+
+ re = new Regex ("\"(.*?)\"");
+ text = re.Replace (text,"\"<span style='color:purple'>$1</span>\"");
+
+
+ text = text.Replace ("\t", " ");
+ text = text.Replace ("_br_", "<br>");
+ return text;
+}
+
+string ColorizeCs (string text)
+{
+ text = text.Replace (" ", " ");
+
+ text = text.Replace ("<", "<");
+ text = text.Replace (">", ">");
+
+ Regex re = new Regex ("\"((((?!\").)|\\\")*?)\"");
+ text = re.Replace (text,"<span style='color:purple'>\"$1\"</span>");
+
+ re = new Regex ("//(((.(?!\"</span>))|\"(((?!\").)*)\"</span>)*)(\r|\n|\r\n)");
+ text = re.Replace (text,"<span style='color:green'>//$1</span><br/>");
+
+ re = new Regex (keywords_cs);
+ text = re.Replace (text,"<span style='color:blue'>$1</span>");
+
+ text = text.Replace ("\t"," ");
+ text = text.Replace ("\n","<br/>");
+
+ return text;
+}
+
+string ColorizeVb (string text)
+{
+ text = text.Replace (" ", " ");
+
+/* Regex re = new Regex ("\"((((?!\").)|\\\")*?)\"");
+ text = re.Replace (text,"<span style='color:purple'>\"$1\"</span>");
+
+ re = new Regex ("'(((.(?!\"\\<\\/span\\>))|\"(((?!\").)*)\"\\<\\/span\\>)*)(\r|\n|\r\n)");
+ text = re.Replace (text,"<span style='color:green'>//$1</span><br/>");
+
+ re = new Regex (keywords_vb);
+ text = re.Replace (text,"<span style='color:blue'>$1</span>");
+*/
+ text = text.Replace ("\t"," ");
+ text = text.Replace ("\n","<br/>");
+ return text;
+}
+
+//
+// Helper methods and classes
+//
+
+string GetDataContext ()
+{
+ return "op=" + CurrentOperationName + "&bnd=" + CurrentOperationBinding + "&";
+}
+
+string GetOptionSel (string v1, string v2)
+{
+ string op = "<option ";
+ if (v1 == v2) op += "selected ";
+ return op + "value='" + v1 + "'>";
+}
+
+string WrapText (string text, int maxChars)
+{
+ text = text.Replace(" />","/>");
+
+ string linspace = null;
+ int lincount = 0;
+ int breakpos = 0;
+ int linstart = 0;
+ bool inquotes = false;
+ char lastc = ' ';
+ string sublineIndent = "";
+ System.Text.StringBuilder sb = new System.Text.StringBuilder ();
+ for (int n=0; n<text.Length; n++)
+ {
+ char c = text [n];
+
+ if (c=='\r' || c=='\n' || n==text.Length-1)
+ {
+ sb.Append (linspace + sublineIndent + text.Substring (linstart, n-linstart+1));
+ linspace = null;
+ lincount = 0;
+ linstart = n+1;
+ breakpos = linstart;
+ sublineIndent = "";
+ lastc = c;
+ continue;
+ }
+
+ if (lastc==',' || lastc=='(')
+ {
+ if (!inquotes) breakpos = n;
+ }
+
+ if (lincount > maxChars && breakpos >= linstart)
+ {
+ if (linspace != null)
+ sb.Append (linspace + sublineIndent);
+ sb.Append (text.Substring (linstart, breakpos-linstart));
+ sb.Append ("\n");
+ sublineIndent = " ";
+ lincount = linspace.Length + sublineIndent.Length + (n-breakpos);
+ linstart = breakpos;
+ }
+
+ if (c==' ' || c=='\t')
+ {
+ if (!inquotes)
+ breakpos = n;
+ }
+ else if (c=='"')
+ {
+ inquotes = !inquotes;
+ }
+ else
+ if (linspace == null) {
+ linspace = text.Substring (linstart, n-linstart);
+ linstart = n;
+ }
+
+ lincount++;
+ lastc = c;
+ }
+ return sb.ToString ();
+}
+
+class Parameter
+{
+ string name;
+ string type;
+ string description;
+
+ public string Name { get { return name; } set { name = value; } }
+ public string Type { get { return type; } set { type = value; } }
+ public string Description { get { return description; } set { description = value; } }
+}
+
+public class HtmlSampleGenerator: SampleGenerator
+{
+ public HtmlSampleGenerator (ServiceDescriptionCollection services, XmlSchemas schemas)
+ : base (services, schemas)
+ {
+ }
+
+ protected override string GetLiteral (string s)
+ {
+ return "@placeholder!" + s + "!placeholder@";
+ }
+}
+
+
+ public class SampleGenerator
+ {
+ protected ServiceDescriptionCollection descriptions;
+ protected XmlSchemas schemas;
+ XmlSchemaElement anyElement;
+ ArrayList queue;
+ SoapBindingUse currentUse;
+ XmlDocument document = new XmlDocument ();
+
+ static readonly XmlQualifiedName anyType = new XmlQualifiedName ("anyType",XmlSchema.Namespace);
+ static readonly XmlQualifiedName arrayType = new XmlQualifiedName ("Array","http://schemas.xmlsoap.org/soap/encoding/");
+ static readonly XmlQualifiedName arrayTypeRefName = new XmlQualifiedName ("arrayType","http://schemas.xmlsoap.org/soap/encoding/");
+ const string SoapEnvelopeNamespace = "http://schemas.xmlsoap.org/soap/envelope/";
+ const string WsdlNamespace = "http://schemas.xmlsoap.org/wsdl/";
+ const string SoapEncodingNamespace = "http://schemas.xmlsoap.org/soap/encoding/";
+
+ class EncodedType
+ {
+ public EncodedType (string ns, XmlSchemaElement elem) { Namespace = ns; Element = elem; }
+ public string Namespace;
+ public XmlSchemaElement Element;
+ }
+
+ public SampleGenerator (ServiceDescriptionCollection services, XmlSchemas schemas)
+ {
+ descriptions = services;
+ this.schemas = schemas;
+ queue = new ArrayList ();
+ }
+
+ public string GenerateMessage (Port port, OperationBinding obin, Operation oper, string protocol, bool generateInput)
+ {
+ OperationMessage msg = null;
+ foreach (OperationMessage opm in oper.Messages)
+ {
+ if (opm is OperationInput && generateInput) msg = opm;
+ else if (opm is OperationOutput && !generateInput) msg = opm;
+ }
+ if (msg == null) return null;
+
+ switch (protocol) {
+ case "Soap": return GenerateHttpSoapMessage (port, obin, oper, msg);
+ case "HttpGet": return GenerateHttpGetMessage (port, obin, oper, msg);
+ case "HttpPost": return GenerateHttpPostMessage (port, obin, oper, msg);
+ }
+ return "Unknown protocol";
+ }
+
+ public string GenerateHttpSoapMessage (Port port, OperationBinding obin, Operation oper, OperationMessage msg)
+ {
+ string req = "";
+
+ if (msg is OperationInput)
+ {
+ SoapAddressBinding sab = port.Extensions.Find (typeof(SoapAddressBinding)) as SoapAddressBinding;
+ SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
+ req += "POST " + new Uri (sab.Location).AbsolutePath + "\n";
+ req += "SOAPAction: " + sob.SoapAction + "\n";
+ req += "Content-Type: text/xml; charset=utf-8\n";
+ req += "Content-Length: " + GetLiteral ("string") + "\n";
+ req += "Host: " + GetLiteral ("string") + "\n\n";
+ }
+ else
+ {
+ req += "HTTP/1.0 200 OK\n";
+ req += "Content-Type: text/xml; charset=utf-8\n";
+ req += "Content-Length: " + GetLiteral ("string") + "\n\n";
+ }
+
+ req += GenerateSoapMessage (obin, oper, msg);
+ return req;
+ }
+
+ public string GenerateHttpGetMessage (Port port, OperationBinding obin, Operation oper, OperationMessage msg)
+ {
+ string req = "";
+
+ if (msg is OperationInput)
+ {
+ HttpAddressBinding sab = port.Extensions.Find (typeof(HttpAddressBinding)) as HttpAddressBinding;
+ HttpOperationBinding sob = obin.Extensions.Find (typeof(HttpOperationBinding)) as HttpOperationBinding;
+ string location = new Uri (sab.Location).AbsolutePath + sob.Location + "?" + BuildQueryString (msg);
+ req += "GET " + location + "\n";
+ req += "Host: " + GetLiteral ("string");
+ }
+ else
+ {
+ req += "HTTP/1.0 200 OK\n";
+ req += "Content-Type: text/xml; charset=utf-8\n";
+ req += "Content-Length: " + GetLiteral ("string") + "\n\n";
+
+ MimeXmlBinding mxb = (MimeXmlBinding) obin.Output.Extensions.Find (typeof(MimeXmlBinding)) as MimeXmlBinding;
+ if (mxb == null) return req;
+
+ Message message = descriptions.GetMessage (msg.Message);
+ XmlQualifiedName ename = null;
+ foreach (MessagePart part in message.Parts)
+ if (part.Name == mxb.Part) ename = part.Element;
+
+ if (ename == null) return req + GetLiteral("string");
+
+ StringWriter sw = new StringWriter ();
+ XmlTextWriter xtw = new XmlTextWriter (sw);
+ xtw.Formatting = Formatting.Indented;
+ currentUse = SoapBindingUse.Literal;
+ WriteRootElementSample (xtw, ename);
+ xtw.Close ();
+ req += sw.ToString ();
+ }
+
+ return req;
+ }
+
+ public string GenerateHttpPostMessage (Port port, OperationBinding obin, Operation oper, OperationMessage msg)
+ {
+ string req = "";
+
+ if (msg is OperationInput)
+ {
+ HttpAddressBinding sab = port.Extensions.Find (typeof(HttpAddressBinding)) as HttpAddressBinding;
+ HttpOperationBinding sob = obin.Extensions.Find (typeof(HttpOperationBinding)) as HttpOperationBinding;
+ string location = new Uri (sab.Location).AbsolutePath + sob.Location;
+ req += "POST " + location + "\n";
+ req += "Content-Type: application/x-www-form-urlencoded\n";
+ req += "Content-Length: " + GetLiteral ("string") + "\n";
+ req += "Host: " + GetLiteral ("string") + "\n\n";
+ req += BuildQueryString (msg);
+ }
+ else return GenerateHttpGetMessage (port, obin, oper, msg);
+
+ return req;
+ }
+
+ string BuildQueryString (OperationMessage opm)
+ {
+ string s = "";
+ Message msg = descriptions.GetMessage (opm.Message);
+ foreach (MessagePart part in msg.Parts)
+ {
+ if (s.Length != 0) s += "&";
+ s += part.Name + "=" + GetLiteral (part.Type.Name);
+ }
+ return s;
+ }
+
+ public string GenerateSoapMessage (OperationBinding obin, Operation oper, OperationMessage msg)
+ {
+ SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
+ SoapBindingStyle style = (sob != null) ? sob.Style : SoapBindingStyle.Document;
+
+ MessageBinding msgbin = (msg is OperationInput) ? (MessageBinding) obin.Input : (MessageBinding)obin.Output;
+ SoapBodyBinding sbb = msgbin.Extensions.Find (typeof(SoapBodyBinding)) as SoapBodyBinding;
+ SoapBindingUse bodyUse = (sbb != null) ? sbb.Use : SoapBindingUse.Literal;
+
+ StringWriter sw = new StringWriter ();
+ XmlTextWriter xtw = new XmlTextWriter (sw);
+ xtw.Formatting = Formatting.Indented;
+
+ xtw.WriteStartDocument ();
+ xtw.WriteStartElement ("soap", "Envelope", SoapEnvelopeNamespace);
+ xtw.WriteAttributeString ("xmlns", "xsi", null, XmlSchema.InstanceNamespace);
+ xtw.WriteAttributeString ("xmlns", "xsd", null, XmlSchema.Namespace);
+
+ if (bodyUse == SoapBindingUse.Encoded)
+ {
+ xtw.WriteAttributeString ("xmlns", "soapenc", null, SoapEncodingNamespace);
+ xtw.WriteAttributeString ("xmlns", "tns", null, msg.Message.Namespace);
+ }
+
+ // Serialize headers
+
+ bool writtenHeader = false;
+ foreach (object ob in msgbin.Extensions)
+ {
+ SoapHeaderBinding hb = ob as SoapHeaderBinding;
+ if (hb == null) continue;
+
+ if (!writtenHeader) {
+ xtw.WriteStartElement ("soap", "Header", SoapEnvelopeNamespace);
+ writtenHeader = true;
+ }
+
+ WriteHeader (xtw, hb);
+ }
+
+ if (writtenHeader)
+ xtw.WriteEndElement ();
+
+ // Serialize body
+ xtw.WriteStartElement ("soap", "Body", SoapEnvelopeNamespace);
+
+ currentUse = bodyUse;
+ WriteBody (xtw, oper, msg, sbb, style);
+
+ xtw.WriteEndElement ();
+ xtw.WriteEndElement ();
+ xtw.Close ();
+ return sw.ToString ();
+ }
+
+ void WriteHeader (XmlTextWriter xtw, SoapHeaderBinding header)
+ {
+ Message msg = descriptions.GetMessage (header.Message);
+ if (msg == null) throw new InvalidOperationException ("Message " + header.Message + " not found");
+ MessagePart part = msg.Parts [header.Part];
+ if (part == null) throw new InvalidOperationException ("Message part " + header.Part + " not found in message " + header.Message);
+
+ currentUse = header.Use;
+
+ if (currentUse == SoapBindingUse.Literal)
+ WriteRootElementSample (xtw, part.Element);
+ else
+ WriteTypeSample (xtw, part.Type);
+ }
+
+ void WriteBody (XmlTextWriter xtw, Operation oper, OperationMessage opm, SoapBodyBinding sbb, SoapBindingStyle style)
+ {
+ Message msg = descriptions.GetMessage (opm.Message);
+ if (msg.Parts.Count > 0 && msg.Parts[0].Name == "parameters")
+ {
+ MessagePart part = msg.Parts[0];
+ if (part.Element == XmlQualifiedName.Empty)
+ WriteTypeSample (xtw, part.Type);
+ else
+ WriteRootElementSample (xtw, part.Element);
+ }
+ else
+ {
+ string elemName = oper.Name;
+ string ns = "";
+ if (opm is OperationOutput) elemName += "Response";
+
+ if (style == SoapBindingStyle.Rpc) {
+ xtw.WriteStartElement (elemName, sbb.Namespace);
+ ns = sbb.Namespace;
+ }
+
+ foreach (MessagePart part in msg.Parts)
+ {
+ if (part.Element == XmlQualifiedName.Empty)
+ {
+ XmlSchemaElement elem = new XmlSchemaElement ();
+ elem.SchemaTypeName = part.Type;
+ elem.Name = part.Name;
+ WriteElementSample (xtw, ns, elem);
+ }
+ else
+ WriteRootElementSample (xtw, part.Element);
+ }
+
+ if (style == SoapBindingStyle.Rpc)
+ xtw.WriteEndElement ();
+ }
+ WriteQueuedTypeSamples (xtw);
+ }
+
+ void WriteRootElementSample (XmlTextWriter xtw, XmlQualifiedName qname)
+ {
+ XmlSchemaElement elem = (XmlSchemaElement) schemas.Find (qname, typeof(XmlSchemaElement));
+ if (elem == null) throw new InvalidOperationException ("Element not found: " + qname);
+ WriteElementSample (xtw, qname.Namespace, elem);
+ }
+
+ void WriteElementSample (XmlTextWriter xtw, string ns, XmlSchemaElement elem)
+ {
+ bool sharedAnnType = false;
+ XmlQualifiedName root;
+
+ if (!elem.RefName.IsEmpty) {
+ XmlSchemaElement refElem = FindRefElement (elem);
+ if (refElem == null) throw new InvalidOperationException ("Global element not found: " + elem.RefName);
+ root = elem.RefName;
+ elem = refElem;
+ sharedAnnType = true;
+ }
+ else
+ root = new XmlQualifiedName (elem.Name, ns);
+
+ if (!elem.SchemaTypeName.IsEmpty)
+ {
+ XmlSchemaComplexType st = FindComplexTyype (elem.SchemaTypeName);
+ if (st != null)
+ WriteComplexTypeSample (xtw, st, root);
+ else
+ {
+ xtw.WriteStartElement (root.Name, root.Namespace);
+ if (currentUse == SoapBindingUse.Encoded)
+ xtw.WriteAttributeString ("type", XmlSchema.InstanceNamespace, GetQualifiedNameString (xtw, elem.SchemaTypeName));
+ xtw.WriteString (GetLiteral (FindBuiltInType (elem.SchemaTypeName)));
+ xtw.WriteEndElement ();
+ }
+ }
+ else if (elem.SchemaType == null)
+ {
+ xtw.WriteStartElement ("any");
+ xtw.WriteEndElement ();
+ }
+ else
+ WriteComplexTypeSample (xtw, (XmlSchemaComplexType) elem.SchemaType, root);
+ }
+
+ void WriteTypeSample (XmlTextWriter xtw, XmlQualifiedName qname)
+ {
+ XmlSchemaComplexType ctype = FindComplexTyype (qname);
+ if (ctype != null) {
+ WriteComplexTypeSample (xtw, ctype, qname);
+ return;
+ }
+
+ XmlSchemaSimpleType stype = (XmlSchemaSimpleType) schemas.Find (qname, typeof(XmlSchemaSimpleType));
+ if (stype != null) {
+ WriteSimpleTypeSample (xtw, stype);
+ return;
+ }
+
+ xtw.WriteString (GetLiteral (FindBuiltInType (qname)));
+ throw new InvalidOperationException ("Type not found: " + qname);
+ }
+
+ void WriteComplexTypeSample (XmlTextWriter xtw, XmlSchemaComplexType stype, XmlQualifiedName rootName)
+ {
+ WriteComplexTypeSample (xtw, stype, rootName, -1);
+ }
+
+ void WriteComplexTypeSample (XmlTextWriter xtw, XmlSchemaComplexType stype, XmlQualifiedName rootName, int id)
+ {
+ string ns = rootName.Namespace;
+
+ if (rootName.Name.IndexOf ("[]") != -1) rootName = arrayType;
+
+ if (currentUse == SoapBindingUse.Encoded) {
+ string pref = xtw.LookupPrefix (rootName.Namespace);
+ if (pref == null) pref = "q1";
+ xtw.WriteStartElement (pref, rootName.Name, rootName.Namespace);
+ ns = "";
+ }
+ else
+ xtw.WriteStartElement (rootName.Name, rootName.Namespace);
+
+ if (id != -1)
+ {
+ xtw.WriteAttributeString ("id", "id" + id);
+ if (rootName != arrayType)
+ xtw.WriteAttributeString ("type", XmlSchema.InstanceNamespace, GetQualifiedNameString (xtw, rootName));
+ }
+
+ WriteComplexTypeAttributes (xtw, stype);
+ WriteComplexTypeElements (xtw, ns, stype);
+
+ xtw.WriteEndElement ();
+ }
+
+ void WriteComplexTypeAttributes (XmlTextWriter xtw, XmlSchemaComplexType stype)
+ {
+ WriteAttributes (xtw, stype.Attributes, stype.AnyAttribute);
+ }
+
+ Dictionary<XmlSchemaComplexType,int> recursed_types = new Dictionary<XmlSchemaComplexType,int> ();
+ void WriteComplexTypeElements (XmlTextWriter xtw, string ns, XmlSchemaComplexType stype)
+ {
+ int prev = 0;
+ if (recursed_types.ContainsKey (stype))
+ prev = recursed_types [stype];
+
+ if (prev > 1)
+ return;
+ recursed_types [stype] = ++prev;
+
+ if (stype.Particle != null)
+ WriteParticleComplexContent (xtw, ns, stype.Particle);
+ else
+ {
+ if (stype.ContentModel is XmlSchemaSimpleContent)
+ WriteSimpleContent (xtw, (XmlSchemaSimpleContent)stype.ContentModel);
+ else if (stype.ContentModel is XmlSchemaComplexContent)
+ WriteComplexContent (xtw, ns, (XmlSchemaComplexContent)stype.ContentModel);
+ }
+ prev = recursed_types [stype];
+ recursed_types [stype] = --prev;
+ }
+
+ void WriteAttributes (XmlTextWriter xtw, XmlSchemaObjectCollection atts, XmlSchemaAnyAttribute anyat)
+ {
+ foreach (XmlSchemaObject at in atts)
+ {
+ if (at is XmlSchemaAttribute)
+ {
+ string ns;
+ XmlSchemaAttribute attr = (XmlSchemaAttribute)at;
+ XmlSchemaAttribute refAttr = attr;
+
+ // refAttr.Form; TODO
+
+ if (!attr.RefName.IsEmpty) {
+ refAttr = FindRefAttribute (attr.RefName);
+ if (refAttr == null) throw new InvalidOperationException ("Global attribute not found: " + attr.RefName);
+ }
+
+ string val;
+ if (!refAttr.SchemaTypeName.IsEmpty) val = FindBuiltInType (refAttr.SchemaTypeName);
+ else val = FindBuiltInType ((XmlSchemaSimpleType) refAttr.SchemaType);
+
+ xtw.WriteAttributeString (refAttr.Name, val);
+ }
+ else if (at is XmlSchemaAttributeGroupRef)
+ {
+ XmlSchemaAttributeGroupRef gref = (XmlSchemaAttributeGroupRef)at;
+ XmlSchemaAttributeGroup grp = (XmlSchemaAttributeGroup) schemas.Find (gref.RefName, typeof(XmlSchemaAttributeGroup));
+ WriteAttributes (xtw, grp.Attributes, grp.AnyAttribute);
+ }
+ }
+
+ if (anyat != null)
+ xtw.WriteAttributeString ("custom-attribute","value");
+ }
+
+ void WriteParticleComplexContent (XmlTextWriter xtw, string ns, XmlSchemaParticle particle)
+ {
+ WriteParticleContent (xtw, ns, particle, false);
+ }
+
+ void WriteParticleContent (XmlTextWriter xtw, string ns, XmlSchemaParticle particle, bool multiValue)
+ {
+ if (particle is XmlSchemaGroupRef)
+ particle = GetRefGroupParticle ((XmlSchemaGroupRef)particle);
+
+ if (particle.MaxOccurs > 1) multiValue = true;
+
+ if (particle is XmlSchemaSequence) {
+ WriteSequenceContent (xtw, ns, ((XmlSchemaSequence)particle).Items, multiValue);
+ }
+ else if (particle is XmlSchemaChoice) {
+ if (((XmlSchemaChoice)particle).Items.Count == 1)
+ WriteSequenceContent (xtw, ns, ((XmlSchemaChoice)particle).Items, multiValue);
+ else
+ WriteChoiceContent (xtw, ns, (XmlSchemaChoice)particle, multiValue);
+ }
+ else if (particle is XmlSchemaAll) {
+ WriteSequenceContent (xtw, ns, ((XmlSchemaAll)particle).Items, multiValue);
+ }
+ }
+
+ void WriteSequenceContent (XmlTextWriter xtw, string ns, XmlSchemaObjectCollection items, bool multiValue)
+ {
+ foreach (XmlSchemaObject item in items)
+ WriteContentItem (xtw, ns, item, multiValue);
+ }
+
+ void WriteContentItem (XmlTextWriter xtw, string ns, XmlSchemaObject item, bool multiValue)
+ {
+ if (item is XmlSchemaGroupRef)
+ item = GetRefGroupParticle ((XmlSchemaGroupRef)item);
+
+ if (item is XmlSchemaElement)
+ {
+ XmlSchemaElement elem = (XmlSchemaElement) item;
+ XmlSchemaElement refElem;
+ if (!elem.RefName.IsEmpty) refElem = FindRefElement (elem);
+ else refElem = elem;
+
+ int num = (elem.MaxOccurs == 1 && !multiValue) ? 1 : 2;
+ for (int n=0; n<num; n++)
+ {
+ if (currentUse == SoapBindingUse.Literal)
+ WriteElementSample (xtw, ns, refElem);
+ else
+ WriteRefTypeSample (xtw, ns, refElem);
+ }
+ }
+ else if (item is XmlSchemaAny)
+ {
+ xtw.WriteString (GetLiteral ("xml"));
+ }
+ else if (item is XmlSchemaParticle) {
+ WriteParticleContent (xtw, ns, (XmlSchemaParticle)item, multiValue);
+ }
+ }
+
+ void WriteChoiceContent (XmlTextWriter xtw, string ns, XmlSchemaChoice choice, bool multiValue)
+ {
+ foreach (XmlSchemaObject item in choice.Items)
+ WriteContentItem (xtw, ns, item, multiValue);
+ }
+
+ void WriteSimpleContent (XmlTextWriter xtw, XmlSchemaSimpleContent content)
+ {
+ XmlSchemaSimpleContentExtension ext = content.Content as XmlSchemaSimpleContentExtension;
+ if (ext != null)
+ WriteAttributes (xtw, ext.Attributes, ext.AnyAttribute);
+
+ XmlQualifiedName qname = GetContentBaseType (content.Content);
+ xtw.WriteString (GetLiteral (FindBuiltInType (qname)));
+ }
+
+ string FindBuiltInType (XmlQualifiedName qname)
+ {
+ if (qname.Namespace == XmlSchema.Namespace)
+ return qname.Name;
+
+ XmlSchemaComplexType ct = FindComplexTyype (qname);
+ if (ct != null)
+ {
+ XmlSchemaSimpleContent sc = ct.ContentModel as XmlSchemaSimpleContent;
+ if (sc == null) throw new InvalidOperationException ("Invalid schema");
+ return FindBuiltInType (GetContentBaseType (sc.Content));
+ }
+
+ XmlSchemaSimpleType st = (XmlSchemaSimpleType) schemas.Find (qname, typeof(XmlSchemaSimpleType));
+ if (st != null)
+ return FindBuiltInType (st);
+
+ throw new InvalidOperationException ("Definition of type " + qname + " not found");
+ }
+
+ string FindBuiltInType (XmlSchemaSimpleType st)
+ {
+ if (st.Content is XmlSchemaSimpleTypeRestriction) {
+ return FindBuiltInType (GetContentBaseType (st.Content));
+ }
+ else if (st.Content is XmlSchemaSimpleTypeList) {
+ string s = FindBuiltInType (GetContentBaseType (st.Content));
+ return s + " " + s + " ...";
+ }
+ else if (st.Content is XmlSchemaSimpleTypeUnion)
+ {
+ //Check if all types of the union are equal. If not, then will use anyType.
+ XmlSchemaSimpleTypeUnion uni = (XmlSchemaSimpleTypeUnion) st.Content;
+ string utype = null;
+
+ // Anonymous types are unique
+ if (uni.BaseTypes.Count != 0 && uni.MemberTypes.Length != 0)
+ return "string";
+
+ foreach (XmlQualifiedName mt in uni.MemberTypes)
+ {
+ string qn = FindBuiltInType (mt);
+ if (utype != null && qn != utype) return "string";
+ else utype = qn;
+ }
+ return utype;
+ }
+ else
+ return "string";
+ }
+
+
+ XmlQualifiedName GetContentBaseType (XmlSchemaObject ob)
+ {
+ if (ob is XmlSchemaSimpleContentExtension)
+ return ((XmlSchemaSimpleContentExtension)ob).BaseTypeName;
+ else if (ob is XmlSchemaSimpleContentRestriction)
+ return ((XmlSchemaSimpleContentRestriction)ob).BaseTypeName;
+ else if (ob is XmlSchemaSimpleTypeRestriction)
+ return ((XmlSchemaSimpleTypeRestriction)ob).BaseTypeName;
+ else if (ob is XmlSchemaSimpleTypeList)
+ return ((XmlSchemaSimpleTypeList)ob).ItemTypeName;
+ else
+ return null;
+ }
+
+ void WriteComplexContent (XmlTextWriter xtw, string ns, XmlSchemaComplexContent content)
+ {
+ XmlQualifiedName qname;
+
+ XmlSchemaComplexContentExtension ext = content.Content as XmlSchemaComplexContentExtension;
+ if (ext != null) qname = ext.BaseTypeName;
+ else {
+ XmlSchemaComplexContentRestriction rest = (XmlSchemaComplexContentRestriction)content.Content;
+ qname = rest.BaseTypeName;
+ if (qname == arrayType) {
+ ParseArrayType (rest, out qname);
+ XmlSchemaElement elem = new XmlSchemaElement ();
+ elem.Name = "Item";
+ elem.SchemaTypeName = qname;
+
+ xtw.WriteAttributeString ("arrayType", SoapEncodingNamespace, qname.Name + "[2]");
+ WriteContentItem (xtw, ns, elem, true);
+ return;
+ }
+ }
+
+ // Add base map members to this map
+ XmlSchemaComplexType ctype = FindComplexTyype (qname);
+ WriteComplexTypeAttributes (xtw, ctype);
+
+ if (ext != null) {
+ // Add the members of this map
+ WriteAttributes (xtw, ext.Attributes, ext.AnyAttribute);
+ if (ext.Particle != null)
+ WriteParticleComplexContent (xtw, ns, ext.Particle);
+ }
+
+ WriteComplexTypeElements (xtw, ns, ctype);
+ }
+
+ void ParseArrayType (XmlSchemaComplexContentRestriction rest, out XmlQualifiedName qtype)
+ {
+ XmlSchemaAttribute arrayTypeAt = FindArrayAttribute (rest.Attributes);
+ XmlAttribute[] uatts = arrayTypeAt.UnhandledAttributes;
+ if (uatts == null || uatts.Length == 0) throw new InvalidOperationException ("arrayType attribute not specified in array declaration");
+
+ XmlAttribute xat = null;
+ foreach (XmlAttribute at in uatts)
+ if (at.LocalName == "arrayType" && at.NamespaceURI == WsdlNamespace)
+ { xat = at; break; }
+
+ if (xat == null)
+ throw new InvalidOperationException ("arrayType attribute not specified in array declaration");
+
+ string arrayType = xat.Value;
+ string type, ns;
+ int i = arrayType.LastIndexOf (":");
+ if (i == -1) ns = "";
+ else ns = arrayType.Substring (0,i);
+
+ int j = arrayType.IndexOf ("[", i+1);
+ if (j == -1) throw new InvalidOperationException ("Cannot parse WSDL array type: " + arrayType);
+ type = arrayType.Substring (i+1);
+ type = type.Substring (0, type.Length-2);
+
+ qtype = new XmlQualifiedName (type, ns);
+ }
+
+ XmlSchemaAttribute FindArrayAttribute (XmlSchemaObjectCollection atts)
+ {
+ foreach (object ob in atts)
+ {
+ XmlSchemaAttribute att = ob as XmlSchemaAttribute;
+ if (att != null && att.RefName == arrayTypeRefName) return att;
+
+ XmlSchemaAttributeGroupRef gref = ob as XmlSchemaAttributeGroupRef;
+ if (gref != null)
+ {
+ XmlSchemaAttributeGroup grp = (XmlSchemaAttributeGroup) schemas.Find (gref.RefName, typeof(XmlSchemaAttributeGroup));
+ att = FindArrayAttribute (grp.Attributes);
+ if (att != null) return att;
+ }
+ }
+ return null;
+ }
+
+ void WriteSimpleTypeSample (XmlTextWriter xtw, XmlSchemaSimpleType stype)
+ {
+ xtw.WriteString (GetLiteral (FindBuiltInType (stype)));
+ }
+
+ XmlSchemaParticle GetRefGroupParticle (XmlSchemaGroupRef refGroup)
+ {
+ XmlSchemaGroup grp = (XmlSchemaGroup) schemas.Find (refGroup.RefName, typeof (XmlSchemaGroup));
+ return grp.Particle;
+ }
+
+ XmlSchemaElement FindRefElement (XmlSchemaElement elem)
+ {
+ if (elem.RefName.Namespace == XmlSchema.Namespace)
+ {
+ if (anyElement != null) return anyElement;
+ anyElement = new XmlSchemaElement ();
+ anyElement.Name = "any";
+ anyElement.SchemaTypeName = anyType;
+ return anyElement;
+ }
+ return (XmlSchemaElement) schemas.Find (elem.RefName, typeof(XmlSchemaElement));
+ }
+
+ XmlSchemaAttribute FindRefAttribute (XmlQualifiedName refName)
+ {
+ if (refName.Namespace == XmlSchema.Namespace)
+ {
+ XmlSchemaAttribute at = new XmlSchemaAttribute ();
+ at.Name = refName.Name;
+ at.SchemaTypeName = new XmlQualifiedName ("string",XmlSchema.Namespace);
+ return at;
+ }
+ return (XmlSchemaAttribute) schemas.Find (refName, typeof(XmlSchemaAttribute));
+ }
+
+ void WriteRefTypeSample (XmlTextWriter xtw, string ns, XmlSchemaElement elem)
+ {
+ if (elem.SchemaTypeName.Namespace == XmlSchema.Namespace || schemas.Find (elem.SchemaTypeName, typeof(XmlSchemaSimpleType)) != null)
+ WriteElementSample (xtw, ns, elem);
+ else
+ {
+ xtw.WriteStartElement (elem.Name, ns);
+ xtw.WriteAttributeString ("href", "#id" + (queue.Count+1));
+ xtw.WriteEndElement ();
+ queue.Add (new EncodedType (ns, elem));
+ }
+ }
+
+ void WriteQueuedTypeSamples (XmlTextWriter xtw)
+ {
+ for (int n=0; n<queue.Count; n++)
+ {
+ EncodedType ec = (EncodedType) queue[n];
+ XmlSchemaComplexType st = FindComplexTyype (ec.Element.SchemaTypeName);
+ WriteComplexTypeSample (xtw, st, ec.Element.SchemaTypeName, n+1);
+ }
+ }
+
+ XmlSchemaComplexType FindComplexTyype (XmlQualifiedName qname)
+ {
+ if (qname.Name.IndexOf ("[]") != -1)
+ {
+ XmlSchemaComplexType stype = new XmlSchemaComplexType ();
+ stype.ContentModel = new XmlSchemaComplexContent ();
+
+ XmlSchemaComplexContentRestriction res = new XmlSchemaComplexContentRestriction ();
+ stype.ContentModel.Content = res;
+ res.BaseTypeName = arrayType;
+
+ XmlSchemaAttribute att = new XmlSchemaAttribute ();
+ att.RefName = arrayTypeRefName;
+ res.Attributes.Add (att);
+
+ XmlAttribute xat = document.CreateAttribute ("arrayType", WsdlNamespace);
+ xat.Value = qname.Namespace + ":" + qname.Name;
+ att.UnhandledAttributes = new XmlAttribute[] {xat};
+ return stype;
+ }
+
+ return (XmlSchemaComplexType) schemas.Find (qname, typeof(XmlSchemaComplexType));
+ }
+
+ string GetQualifiedNameString (XmlTextWriter xtw, XmlQualifiedName qname)
+ {
+ string pref = xtw.LookupPrefix (qname.Namespace);
+ if (pref != null) return pref + ":" + qname.Name;
+
+ xtw.WriteAttributeString ("xmlns", "q1", null, qname.Namespace);
+ return "q1:" + qname.Name;
+ }
+
+ protected virtual string GetLiteral (string s)
+ {
+ return s;
+ }
+
+ void GetOperationFormat (OperationBinding obin, out SoapBindingStyle style, out SoapBindingUse use)
+ {
+ style = SoapBindingStyle.Document;
+ use = SoapBindingUse.Literal;
+ SoapOperationBinding sob = obin.Extensions.Find (typeof(SoapOperationBinding)) as SoapOperationBinding;
+ if (sob != null) {
+ style = sob.Style;
+ SoapBodyBinding sbb = obin.Input.Extensions.Find (typeof(SoapBodyBinding)) as SoapBodyBinding;
+ if (sbb != null)
+ use = sbb.Use;
+ }
+ }
+ }
+
+
+
+
+
+</script>
+
+<head runat="server">
+ <%
+ Response.Write ("<link rel=\"alternate\" type=\"text/xml\" href=\"" + Request.FilePath + "?disco\"/>");
+ %>
+ <title><%=WebServiceName%> Web Service</title>
+ <style type="text/css">
+ BODY { font-family: Arial; margin-left: 20px; margin-top: 20px; font-size: x-small}
+ TABLE { font-size: x-small }
+ .title { color:dimgray; font-family: Arial; font-size:20pt; font-weight:900}
+ .operationTitle { color:dimgray; font-family: Arial; font-size:15pt; font-weight:900}
+ .method { font-size: x-small }
+ .bindingLabel { font-size: x-small; font-weight:bold; color:darkgray; line-height:8pt; display:block; margin-bottom:3px }
+ .label { font-size: small; font-weight:bold; color:darkgray }
+ .paramTable { font-size: x-small }
+ .paramTable TR { background-color: gainsboro }
+ .paramFormTable { font-size: x-small; padding: 10px; background-color: gainsboro }
+ .paramFormTable TR { background-color: gainsboro }
+ .paramInput { border: solid 1px gray }
+ .button {border: solid 1px gray }
+ .smallSeparator { height:3px; overflow:hidden }
+ .panel { background-color:whitesmoke; border: solid 1px silver; border-top: solid 1px silver }
+ .codePanel { background-color: white; font-size:x-small; padding:7px; border:solid 1px silver}
+ .code-xml { font-size:10pt; font-family:courier }
+ .code-cs { font-size:10pt; font-family:courier }
+ .code-vb { font-size:10pt; font-family:courier }
+ .tabLabelOn { font-weight:bold }
+ .tabLabelOff {color: darkgray }
+ .literal-placeholder {color: darkblue; font-weight:bold}
+ A:link { color: black; }
+ A:visited { color: black; }
+ A:active { color: black; }
+ A:hover { color: blue }
+ </style>
+
+<script language="javascript" type="text/javascript">
+var req;
+function getXML (command, url, qs) {
+ if (url == "" || url.substring (0, 4) != "http")
+ return;
+
+ var post_data = null;
+ req = getReq ();
+ req.onreadystatechange = stateChange;
+ if (command == "GET") {
+ url = url + "?" + qs;
+ } else {
+ post_data = qs;
+ }
+ req.open (command, url, true);
+ if (command == "POST")
+ req.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
+ req.send (post_data);
+}
+
+function stateChange () {
+ if (req.readyState == 4) {
+ var node = document.getElementById("testresult_div");
+ var text = "";
+ if (req.status == 200) {
+ node.innerHTML = "<div class='code-xml'>" + formatXml (req.responseText) + "</div>";
+ } else {
+ var ht = "<b style='color: red'>" + formatXml (req.status + " - " + req.statusText) + "</b>";
+ if (req.responseText != "")
+ ht = ht + "\n<div class='code-xml'>" + formatXml (req.responseText) + "</div>";
+ node.innerHTML = ht;
+
+ }
+ }
+}
+
+function formatXml (text)
+{
+ var re = / /g;
+ text = text.replace (re, " ");
+
+ re = /\t/g;
+ text = text.replace (re, " ");
+
+ re = /\<\s*(\/?)\s*(.*?)\s*(\/?)\s*\>/g;
+ text = text.replace (re,"{blue:<$1}{maroon:$2}{blue:$3>}");
+
+ re = /{(\w*):(.*?)}/g;
+ text = text.replace (re,"<span style='color:$1'>$2</span>");
+
+ re = /"(.*?)"/g;
+ text = text.replace (re,"\"<span style='color:purple'>$1</span>\"");
+
+ re = /\r\n|\r|\n/g;
+ text = text.replace (re, "<br/>");
+
+ return text;
+}
+
+function getReq () {
+ if (window.XMLHttpRequest) {
+ return new XMLHttpRequest(); // Firefox, Safari, ...
+ } else if (window.ActiveXObject) {
+ return new ActiveXObject("Microsoft.XMLHTTP");
+ }
+}
+
+function clearForm ()
+{
+ document.getElementById("testFormResult").style.display="none";
+}
+</script>
+
+</head>
+
+<body>
+<div class="title" style="margin-left:20px">
+<span class="label">Web Service</span><br>
+<%=WebServiceName%>
+</div>
+
+<!--
+ **********************************************************
+ Left panel
+-->
+
+<table border="0" width="100%" cellpadding="15px" cellspacing="15px">
+<tr valign="top"><td width="150px" class="panel">
+<div style="width:150px"></div>
+<a class="method" href='<%=PageName%>'>Overview</a><br>
+<div class="smallSeparator"></div>
+<a class="method" href='<%=PageName + "?" + GetPageContext("wsdl")%>'>Service Description</a>
+<div class="smallSeparator"></div>
+<a class="method" href='<%=PageName + "?" + GetPageContext("proxy")%>'>Client proxy</a>
+<br><br>
+ <asp:repeater id="BindingsRepeater" runat=server>
+ <itemtemplate name="itemtemplate">
+ <span class="bindingLabel"><%#FormatBindingName(DataBinder.Eval(Container.DataItem, "Name").ToString())%></span>
+ <asp:repeater id="OperationsRepeater" runat=server datasource='<%# ((Binding)Container.DataItem).Operations %>'>
+ <itemtemplate>
+ <a class="method" href="<%=PageName%>?<%=GetTabContext("op",null)%>op=<%#GetOpName(Container.DataItem)%>&bnd=<%#DataBinder.Eval(Container.DataItem, "Binding.Name")%>"><%#GetOpName(Container.DataItem)%></a>
+ <div class="smallSeparator"></div>
+ </itemtemplate>
+ </asp:repeater>
+ <br>
+ </itemtemplate>
+ </asp:repeater>
+
+</td><td class="panel">
+
+<% if (CurrentPage == "main") {%>
+
+<!--
+ **********************************************************
+ Web service overview
+-->
+
+ <p class="label">Web Service Overview</p>
+ <%=WebServiceDescription%>
+ <br/><br/>
+ <% if (ProfileViolations != null && ProfileViolations.Count > 0) { %>
+ <p class="label">Basic Profile Conformance</p>
+ This web service does not conform to WS-I Basic Profile v1.1
+ <%
+ Response.Write ("<ul>");
+ foreach (BasicProfileViolation vio in ProfileViolations) {
+ Response.Write ("<li><b>" + vio.NormativeStatement + "</b>: " + vio.Details);
+ Response.Write ("<ul>");
+ foreach (string ele in vio.Elements)
+ Response.Write ("<li>" + ele + "</li>");
+ Response.Write ("</ul>");
+ Response.Write ("</li>");
+ }
+ Response.Write ("</ul>");
+ }%>
+
+<%} if (DefaultBinding == null) {%>
+This service does not contain any public web method.
+<%} else if (CurrentPage == "op") {%>
+
+<!--
+ **********************************************************
+ Operation description
+-->
+
+ <span class="operationTitle"><%=CurrentOperationName%></span>
+ <br><br>
+ <% WriteTabs (); %>
+ <br><br><br>
+
+ <% if (CurrentTab == "main") { %>
+ <span class="label">Input Parameters</span>
+ <div class="smallSeparator"></div>
+ <% if (InParams.Count == 0) { %>
+ No input parameters<br>
+ <% } else { %>
+ <table class="paramTable" cellspacing="1" cellpadding="5">
+ <asp:repeater id="InputParamsRepeater" runat=server>
+ <itemtemplate>
+ <tr>
+ <td width="150"><%#DataBinder.Eval(Container.DataItem, "Name")%></td>
+ <td width="150"><%#DataBinder.Eval(Container.DataItem, "Type")%></td>
+ </tr>
+ </itemtemplate>
+ </asp:repeater>
+ </table>
+ <% } %>
+ <br>
+
+ <% if (OutParams.Count > 0) { %>
+ <span class="label">Output Parameters</span>
+ <div class="smallSeparator"></div>
+ <table class="paramTable" cellspacing="1" cellpadding="5">
+ <asp:repeater id="OutputParamsRepeater" runat=server>
+ <itemtemplate>
+ <tr>
+ <td width="150"><%#DataBinder.Eval(Container.DataItem, "Name")%></td>
+ <td width="150"><%#DataBinder.Eval(Container.DataItem, "Type")%></td>
+ </tr>
+ </itemtemplate>
+ </asp:repeater>
+ </table>
+ <br>
+ <% } %>
+
+ <span class="label">Remarks</span>
+ <div class="smallSeparator"></div>
+ <%=OperationDocumentation%>
+ <br><br>
+ <span class="label">Technical information</span>
+ <div class="smallSeparator"></div>
+ Format: <%=CurrentOperationFormat%>
+ <br>Supported protocols: <%=CurrentOperationProtocols%>
+ <% } %>
+
+<!--
+ **********************************************************
+ Operation description - Test form
+-->
+
+ <% if (CurrentTab == "test") {
+ if (CurrentOperationSupportsTest) {%>
+ Enter values for the parameters and click the 'Invoke' button to test this method:<br><br>
+ <form action="<%=PageName%>" method="GET">
+ <input type="hidden" name="page" value="<%=CurrentPage%>">
+ <input type="hidden" name="tab" value="<%=CurrentTab%>">
+ <input type="hidden" name="op" value="<%=CurrentOperationName%>">
+ <input type="hidden" name="bnd" value="<%=CurrentOperationBinding%>">
+ <input type="hidden" name="ext" value="testform">
+ <table class="paramFormTable" cellspacing="0" cellpadding="3">
+ <asp:repeater id="InputFormParamsRepeater" runat=server>
+ <itemtemplate>
+ <tr>
+ <td><%#DataBinder.Eval(Container.DataItem, "Name")%>: </td>
+ <td width="150"><input class="paramInput" type="text" size="20" name="<%#DataBinder.Eval(Container.DataItem, "Name")%>"></td>
+ </tr>
+ </itemtemplate>
+ </asp:repeater>
+ <tr><td></td><td><input class="button" type="submit" value="Invoke"> <input class="button" type="button" onclick="clearForm()" value="Clear"></td></tr>
+ </table>
+ </form>
+ <div id="testFormResult" style="display:<%= (HasFormResult?"block":"none") %>">
+ The web service returned the following result:<br/><br/>
+ <div class="codePanel" id="testresult_div">
+ </div>
+ <script language="javascript">
+ getXML ("<%= GetOrPost () %>", "<%= GetTestResultUrl () %>", "<%= GetQS () %>");
+ </script>
+ </div>
+ <% } else {%>
+ The test form is not available for this operation because it has parameters with a complex structure.
+ <% } %>
+ <% } %>
+
+<!--
+ **********************************************************
+ Operation description - Message Layout
+-->
+
+ <% if (CurrentTab == "msg") { %>
+
+ The following are sample SOAP requests and responses for each protocol supported by this method:
+ <br/><br/>
+
+ <% if (IsOperationSupported ("Soap")) { %>
+ <span class="label">Soap</span>
+ <br/><br/>
+ <div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("Soap", true)%></div></div>
+ <br/>
+ <div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("Soap", false)%></div></div>
+ <br/>
+ <% } %>
+ <% if (IsOperationSupported ("HttpGet")) { %>
+ <span class="label">HTTP Get</span>
+ <br/><br/>
+ <div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpGet", true)%></div></div>
+ <br/>
+ <div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpGet", false)%></div></div>
+ <br/>
+ <% } %>
+ <% if (IsOperationSupported ("HttpPost")) { %>
+ <span class="label">HTTP Post</span>
+ <br/><br/>
+ <div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpPost", true)%></div></div>
+ <br/>
+ <div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpPost", false)%></div></div>
+ <br/>
+ <% } %>
+
+ <% } %>
+<%} else if (CurrentPage == "proxy") {%>
+<!--
+ **********************************************************
+ Client Proxy
+-->
+ <form action="<%=PageName%>" name="langForm" method="GET">
+ Select the language for which you want to generate a proxy
+ <input type="hidden" name="page" value="<%=CurrentPage%>">
+ <SELECT name="lang" onchange="langForm.submit()">
+ <%=GetOptionSel("cs",CurrentLanguage)%>C#</option>
+ <%=GetOptionSel("vb",CurrentLanguage)%>Visual Basic</option>
+ </SELECT>
+
+ </form>
+ <br>
+ <span class="label"><%=CurrentProxytName%></span>
+ <a href="<%=PageName + "?code=" + CurrentLanguage%>">Download</a>
+ <br><br>
+ <div class="codePanel">
+ <div class="code-<%=CurrentLanguage%>"><%=GetProxyCode ()%></div>
+ </div>
+<%} else if (CurrentPage == "wsdl") {%>
+<!--
+ **********************************************************
+ Service description
+-->
+ <% if (descriptions.Count > 1 || schemas.Count > 1) {%>
+ The description of this web service is composed by several documents. Click on the document you want to see:
+
+ <ul>
+ <%
+ for (int n=0; n<descriptions.Count; n++)
+ Response.Write ("<li><a href='" + PageName + "?" + GetPageContext(null) + "doctype=wsdl&docind=" + n + "'>WSDL document " + descriptions[n].TargetNamespace + "</a></li>");
+ for (int n=0; n<schemas.Count; n++)
+ Response.Write ("<li><a href='" + PageName + "?" + GetPageContext(null) + "doctype=schema&docind=" + n + "'>Xml Schema " + schemas[n].TargetNamespace + "</a></li>");
+ %>
+ </ul>
+
+ <%} else {%>
+ <%}%>
+ <br>
+ <span class="label"><%=CurrentDocumentName%></span>
+ <a href="<%=PageName + "?" + CurrentDocType + "=" + CurrentDocInd %>">Download</a>
+ <br><br>
+ <div class="codePanel">
+ <div class="code-xml"><%=GenerateDocument ()%></div>
+ </div>
+
+<%}%>
+
+<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
+</td>
+<td width="20px"></td>
+</tr>
+
+</table>
+</body>
+</html>
EXTRA_DIST = machine.config \
web.config \
+ DefaultWsdlHelpGenerator.aspx \
settings.map
mono_DATA = machine.config \
web.config \
+ DefaultWsdlHelpGenerator.aspx \
settings.map
<section name="extensions" type="System.ServiceModel.Configuration.ExtensionsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="serviceHostingEnvironment" type="System.ServiceModel.Configuration.ServiceHostingEnvironmentSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="services" type="System.ServiceModel.Configuration.ServicesSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+ <section name="standardEndpoints" type="System.ServiceModel.Configuration.StandardEndpointsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
+ <section name="routing" type="System.ServiceModel.Routing.Configuration.RoutingSection, System.ServiceModel.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+ <section name="protocolMapping" type="System.ServiceModel.Configuration.ProtocolMappingSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</sectionGroup>
<section name="system.webServer" type="System.Configuration.IgnoreSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<section name="uri" type="System.Configuration.UriSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<bindingExtensions>
<add name="webHttpBinding" type="System.ServiceModel.Configuration.WebHttpBindingCollectionElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</bindingExtensions>
+ <endpointExtensions>
+ <add name="dynamicEndpoint" type="System.ServiceModel.Discovery.Configuration.DynamicEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+ <add name="discoveryEndpoint" type="System.ServiceModel.Discovery.Configuration.DiscoveryEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+ <add name="udpDiscoveryEndpoint" type="System.ServiceModel.Discovery.Configuration.UdpDiscoveryEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+ <add name="announcementEndpoint" type="System.ServiceModel.Discovery.Configuration.AnnouncementEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+ <add name="udpAnnouncementEndpoint" type="System.ServiceModel.Discovery.Configuration.UdpAnnouncementEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+ <add name="webHttpEndpoint" type="System.ServiceModel.Configuration.WebHttpEndpointCollectionElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+ <add name="webScriptEndpoint" type="System.ServiceModel.Configuration.WebScriptEndpointCollectionElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
+ </endpointExtensions>
</extensions>
</system.serviceModel>
</configuration>
<!--
<add path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
-->
+ <add verb="*" path="*.svc" type="System.ServiceModel.Channels.SvcHttpHandlerFactory, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add path="*.rules" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
<!--
<add path="*.xoml" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
sort.frag.h \
glib.h \
garray.c \
+ gbytearray.c \
gerror.c \
ghashtable.c \
gmem.c \
#define g_hash_table_new_full monoeg_g_hash_table_new_full
#define g_hash_table_remove monoeg_g_hash_table_remove
#define g_hash_table_size monoeg_g_hash_table_size
+#define g_hash_table_print_stats monoeg_g_hash_table_print_stats
#define g_int_equal monoeg_g_int_equal
#define g_int_hash monoeg_g_int_hash
#define g_list_alloc monoeg_g_list_alloc
#define g_pattern_spec_new monoeg_g_pattern_spec_new
#define g_print monoeg_g_print
#define g_printf monoeg_g_printf
+#define g_printerr monoeg_g_printerr
#define g_propagate_error monoeg_g_propagate_error
#define g_ptr_array_add monoeg_g_ptr_array_add
#define g_ptr_array_foreach monoeg_g_ptr_array_foreach
#define g_strerror monoeg_g_strerror
#define g_strescape monoeg_g_strescape
#define g_strfreev monoeg_g_strfreev
+#define g_strdupv monoeg_g_strdupv
#define g_string_append monoeg_g_string_append
#define g_string_append_c monoeg_g_string_append_c
#define g_string_append_len monoeg_g_string_append_len
--- /dev/null
+/*
+ * Arrays
+ *
+ * Author:
+ * Geoff Norton (gnorton@novell.com)
+ *
+ * (C) 2010 Novell, 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.
+ */
+
+#include <stdlib.h>
+#include <glib.h>
+
+#define INITIAL_CAPACITY 16
+
+static void
+ensure_capacity (GByteArray *array,
+ int capacity)
+{
+ int new_capacity = MAX (array->len, INITIAL_CAPACITY);
+
+ if (capacity < array->len)
+ return;
+
+ while (new_capacity < capacity) {
+ new_capacity <<= 1;
+ }
+ capacity = new_capacity;
+ array->data = (guint8*) g_realloc (array->data, capacity);
+
+ memset (array->data + array->len, 0, capacity - array->len);
+ array->len = capacity;
+}
+
+GByteArray *
+g_byte_array_new ()
+{
+ GByteArray *rv = g_new0 (GByteArray, 1);
+
+ ensure_capacity (rv, INITIAL_CAPACITY);
+
+ return rv;
+}
+
+guint8*
+g_byte_array_free (GByteArray *array,
+ gboolean free_segment)
+{
+ guint8* rv = NULL;
+
+ g_return_val_if_fail (array != NULL, NULL);
+
+ if (free_segment)
+ g_free (array->data);
+ else
+ rv = array->data;
+
+ g_free (array);
+
+ return rv;
+}
+
+GByteArray *
+g_array_append (GByteArray *array,
+ guint8 *data,
+ guint len)
+{
+ g_return_val_if_fail (array != NULL, NULL);
+
+ ensure_capacity (array, array->len + len);
+
+ memmove (array->data + array->len, data, len);
+
+ array->len += len;
+
+ return array;
+}
return NULL;
}
+void
+g_hash_table_remove_all (GHashTable *hash)
+{
+ int i;
+
+ g_return_if_fail (hash != NULL);
+
+ for (i = 0; i < hash->table_size; i++){
+ Slot *s;
+
+ for (s = hash->table [i]; s != NULL; s = s->next)
+ g_hash_table_remove (hash, s->key);
+ }
+}
+
gboolean
g_hash_table_remove (GHashTable *hash, gconstpointer key)
{
#endif
#endif
-
/*
* Macros
*/
void g_hash_table_foreach (GHashTable *hash, GHFunc func, gpointer user_data);
gpointer g_hash_table_find (GHashTable *hash, GHRFunc predicate, gpointer user_data);
gboolean g_hash_table_remove (GHashTable *hash, gconstpointer key);
+void g_hash_table_remove_all (GHashTable *hash);
guint g_hash_table_foreach_remove (GHashTable *hash, GHRFunc func, gpointer user_data);
guint g_hash_table_foreach_steal (GHashTable *hash, GHRFunc func, gpointer user_data);
void g_hash_table_destroy (GHashTable *hash);
GList *g_list_sort (GList *sort,
GCompareFunc func);
+/*
+ * ByteArray
+ */
+
+typedef struct _GByteArray GByteArray;
+struct _GByteArray {
+ guint8 *data;
+ gint len;
+};
+
+GByteArray *g_byte_array_new (void);
+GByteArray* g_byte_array_append (GByteArray *array, const guint8 *data, guint len);
+guint8* g_byte_array_free (GByteArray *array, gboolean free_segment);
+
/*
* Array
*/
gboolean g_queue_is_empty (GQueue *queue);
GQueue *g_queue_new (void);
void g_queue_free (GQueue *queue);
+void g_queue_foreach (GQueue *queue, GFunc func, gpointer user_data);
/*
* Messages
#endif /* ndef HAVE_C99_SUPPORT */
#define g_log_set_handler(a,b,c,d)
+#define G_GNUC_INTERNAL
+
/*
* Conversions
*/
# define GUINT16_TO_LE(x) (x)
# define GUINT_TO_LE(x) (x)
# define GUINT32_TO_BE(x) GUINT32_SWAP_LE_BE(x)
+# define GUINT16_FROM_BE(x) GUINT16_SWAP_LE_BE(x)
# define GUINT32_FROM_BE(x) GUINT32_SWAP_LE_BE(x)
+# define GUINT64_FROM_BE(x) GUINT64_SWAP_LE_BE(x)
+# define GINT16_FROM_BE(x) GUINT16_SWAP_LE_BE(x)
+# define GINT32_FROM_BE(x) GUINT32_SWAP_LE_BE(x)
+# define GINT64_FROM_BE(x) GUINT64_SWAP_LE_BE(x)
#else
# define GUINT32_TO_LE(x) GUINT32_SWAP_LE_BE(x)
# define GUINT64_TO_LE(x) GUINT64_SWAP_LE_BE(x)
# define GUINT16_TO_LE(x) GUINT16_SWAP_LE_BE(x)
# define GUINT_TO_LE(x) GUINT32_SWAP_LE_BE(x)
# define GUINT32_TO_BE(x) (x)
+# define GUINT16_FROM_BE(x) (x)
# define GUINT32_FROM_BE(x) (x)
+# define GUINT64_FROM_BE(x) (x)
+# define GINT16_FROM_BE(x) (x)
+# define GINT32_FROM_BE(x) (x)
+# define GINT64_FROM_BE(x) (x)
#endif
+#define GINT64_FROM_LE(x) (GUINT64_TO_LE (x))
+#define GINT32_FROM_LE(x) (GUINT32_TO_LE (x))
+#define GINT16_FROM_LE(x) (GUINT16_TO_LE (x))
+
#define GUINT32_FROM_LE(x) (GUINT32_TO_LE (x))
#define GUINT64_FROM_LE(x) (GUINT64_TO_LE (x))
#define GUINT16_FROM_LE(x) (GUINT16_TO_LE (x))
va_start (args, format);
g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, format, args);
va_end (args);
- g_assert_not_reached ();
+ abort ();
}
g_list_free (queue->head);
g_free (queue);
}
+
+void
+g_queue_foreach (GQueue *queue, GFunc func, gpointer user_data)
+{
+ g_list_foreach (queue->head, func, user_data);
+}
{
gchar *ptr;
gchar c;
- gboolean in_quote = FALSE;
gboolean escaped = FALSE;
gchar quote_char = '\0';
GString *str;
ptr = (gchar *) cmdline;
while ((c = *ptr++) != '\0') {
if (escaped) {
- escaped = FALSE;
- if (!g_ascii_isspace (c))
+ /*
+ * \CHAR is only special inside a double quote if CHAR is
+ * one of: $`"\ and newline
+ */
+ if (quote_char == '\"'){
+ if (!(c == '$' || c == '`' || c == '"' || c == '\\'))
+ g_string_append_c (str, '\\');
g_string_append_c (str, c);
- } else if (in_quote) {
+ } else {
+ if (!g_ascii_isspace (c))
+ g_string_append_c (str, c);
+ }
+ escaped = FALSE;
+ } else if (quote_char) {
if (c == quote_char) {
- in_quote = FALSE;
quote_char = '\0';
g_ptr_array_add (array, g_string_free (str, FALSE));
str = g_string_new ("");
- } else {
+ } else if (c == '\\'){
+ escaped = TRUE;
+ } else
g_string_append_c (str, c);
- }
} else if (g_ascii_isspace (c)) {
if (str->len > 0) {
g_ptr_array_add (array, g_string_free (str, FALSE));
} else if (c == '\\') {
escaped = TRUE;
} else if (c == '\'' || c == '"') {
- in_quote = TRUE;
quote_char = c;
} else {
g_string_append_c (str, c);
return -1;
}
- if (in_quote) {
+ if (quote_char) {
if (error)
*error = g_error_new (G_LOG_DOMAIN, 0, "Unfinished quote.");
g_string_free (str, TRUE);
guint length;
gchar **ret;
guint i;
+
+ if (!str_array)
+ return NULL;
+
length = g_strv_length(str_array);
ret = g_new0(gchar *, length + 1);
for (i = 0; str_array[i]; i++) {
glong in_pos, ret;
if (len < 0)
- len = strlen (str);
+ len = (glong) strlen (str);
in_pos = 0;
ret = 0;
*error = NULL;
if (len < 0)
- len = strlen (str);
+ len = (glong) strlen (str);
if (items_read)
*items_read = 0;
test_eglib_SOURCES = $(SOURCES)
-test_eglib_CFLAGS = -Wall -Werror -D_FORTIFY_SOURCE=2 -I$(srcdir)/../src -I../src -DDRIVER_NAME=\"EGlib\"
+test_eglib_CFLAGS = -Wall -D_FORTIFY_SOURCE=2 -I$(srcdir)/../src -I../src -DDRIVER_NAME=\"EGlib\"
test_eglib_LDADD = ../src/libeglib.la
run-eglib: all
return OK;
}
+// This was the 2.8 showstopper error
+RESULT
+test_shell_argv4 ()
+{
+ GError *error;
+ gint argc;
+ gchar **argv;
+ gboolean ret;
+ char *str = "'/usr/bin/gnome-terminal' -e \"bash -c 'read -p \\\"Press any key to continue...\\\" -n1;'\"";
+
+ argv = NULL;
+ argc = 0;
+ error = NULL;
+ ret = g_shell_parse_argv (str, &argc, &argv, &error);
+ if (!ret)
+ return FAILED ("1. It should return TRUE");
+ if (argc != 3)
+ return FAILED ("2. argc was %d", argc);
+ if (argv == NULL)
+ return FAILED ("3. argv[0] was NULL");
+ if (error != NULL)
+ return FAILED ("4. error was set");
+
+ if (strcmp (argv [0], "/usr/bin/gnome-terminal"))
+ return FAILED ("5. Expected /usr/bin/gnome-terminal got %s", argv [0]);
+ if (strcmp (argv [1], "-e"))
+ return FAILED ("6. Expected -e, got: %s", argv [1]);
+ if (strcmp (argv [2], "bash -c 'read -p \"Press any key to continue...\" -n1;'"))
+ return FAILED ("7. Got unexpected result: %s\n", argv [2]);
+
+ return OK;
+}
+
RESULT
test_quote ()
{
{"g_shell_parse_argv1", test_shell_argv1},
{"g_shell_parse_argv2", test_shell_argv2},
{"g_shell_parse_argv3", test_shell_argv3},
+ {"g_shell_parse_argv4", test_shell_argv4},
{"g_shell_quote", test_quote},
{NULL, NULL}
};
return OK;
}
+RESULT
+test_strdupv ()
+{
+ gchar **one;
+ gchar **two;
+ gint len;
+
+ one = g_strdupv (NULL);
+ if (one)
+ return FAILED ("Should have been NULL");
+
+ one = g_malloc (sizeof (gchar *));
+ *one = NULL;
+ two = g_strdupv (one);
+ if (!two)
+ FAILED ("Should have been not NULL");
+ len = g_strv_length (two);
+ if (len)
+ FAILED ("Should have been 0");
+ g_strfreev (two);
+ g_strfreev (one);
+ return NULL;
+}
+
static Test strutil_tests [] = {
{"g_strfreev", test_strfreev},
{"g_strconcat", test_concat},
{"g_strescape", test_strescape},
{"g_ascii_strncasecmp", test_ascii_strncasecmp },
{"g_ascii_strdown", test_ascii_strdown },
+ {"g_strdupv", test_strdupv },
{NULL, NULL}
};
and code coverage see the sections "PROFILING" and "CODE COVERAGE"
below.
.TP
+This option can be used multiple times, each time will load an
+additional profiler. This allows developers to use modules that
+extend the JIT through the Mono profiling interface.
+.TP
\fB--trace[=expression]\fR
Shows method names as they are invoked. By default all methods are
traced.
moonlight_bootstrap_SUBDIRS := build mcs class
moonlight_raw_SUBDIRS := build mcs class tools
moonlight_SUBDIRS := tools tests errors
-monotouch_SUBDIRS := build mcs class
+monodroid_bootstrap_SUBDIRS := build mcs class
+monodroid_SUBDIRS := build mcs class
monotouch_bootstrap_SUBDIRS := build mcs class
+monotouch_SUBDIRS := build mcs class
net_3_5_SUBDIRS := build class tools/xbuild
net_4_0_bootstrap_SUBDIRS := build mcs class tools
net_4_0_SUBDIRS := build mcs class nunit24 ilasm tools tests errors docs
$(_boot_:%=profile-do--net_4_0_bootstrap--%): profile-do--net_4_0_bootstrap--%: profile-do--net_2_0--%
$(_boot_:%=profile-do--net_3_5--%): profile-do--net_3_5--%: profile-do--net_2_0--%
$(_boot_:%=profile-do--moonlight--%): profile-do--moonlight--%: profile-do--moonlight_raw--%
+$(_boot_:%=profile-do--monodroid--%): profile-do--monodroid--%: profile-do--monodroid_bootstrap--%
+$(_boot_:%=profile-do--monodroid_bootstrap--%): profile-do--monodroid_bootstrap--%: profile-do--net_2_0--%
$(_boot_:%=profile-do--monotouch--%): profile-do--monotouch--%: profile-do--monotouch_bootstrap--%
$(_boot_:%=profile-do--monotouch_bootstrap--%): profile-do--monotouch_bootstrap--%: profile-do--net_2_0--%
$(_boot_:%=profile-do--moonlight_raw--%): profile-do--moonlight_raw--%: profile-do--moonlight_bootstrap--%
$(Q) test ! -f $(build_lib:.dll=.pdb) || mv $(build_lib:.dll=.pdb) $(the_lib:.dll=.pdb)
endif
+library_CLEAN_FILES += $(PROFILE)_aot.log
+
ifdef PLATFORM_AOT_SUFFIX
Q_AOT=$(if $(V),,@echo "AOT [$(PROFILE)] $(notdir $(@))";)
$(the_lib)$(PLATFORM_AOT_SUFFIX): $(the_lib)
@echo Converting $(sourcefile) to $@ ...
@cat $(sourcefile) | $(PLATFORM_CHANGE_SEPARATOR_CMD) >$@
endif
-
+
endif
-include $(makefrag)
--- /dev/null
+#! -*- makefile -*-
+
+my_runtime = $(RUNTIME) $(RUNTIME_FLAGS) --security=temporary-smcs-hack
+INTERNAL_SMCS = $(my_runtime) $(topdir)/class/lib/$(PROFILE)/smcs.exe
+
+BOOTSTRAP_PROFILE = monodroid_bootstrap
+
+BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(my_runtime) $(topdir)/class/lib/$(BOOTSTRAP_PROFILE)/smcs.exe
+MCS = MONO_PATH="$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_SMCS)
+
+profile-check:
+ @:
+
+PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_2_1 -d:MOBILE -d:MONODROID
+FRAMEWORK_VERSION = 2.1
+NO_TEST = yes
+
+# the tuner takes care of the install
+NO_INSTALL = yes
--- /dev/null
+#! -*- makefile -*-
+
+INTERNAL_SMCS = $(RUNTIME) $(RUNTIME_FLAGS) --security=temporary-smcs-hack $(topdir)/class/lib/$(PROFILE)/smcs.exe
+INTERNAL_GMCS = $(RUNTIME) $(RUNTIME_FLAGS) $(topdir)/class/lib/basic/gmcs.exe
+
+BOOTSTRAP_PROFILE = net_2_0
+BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
+MCS = MONO_PATH="$(topdir)/class/lib/$(PROFILE)$(PLATFORM_PATH_SEPARATOR)$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_SMCS)
+
+# We can enable this if System.dll depends on features of the mscorlib.dll from this profile
+#PROFILE_MCS_HAS_BOOTSTRAP_FALLBACK = yes
+
+profile-check:
+ @:
+
+PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_2_1 -d:MOBILE -d:MONODROID
+FRAMEWORK_VERSION = 2.1
+NO_TEST = yes
+
+# the tuner takes care of the install
+NO_INSTALL = yes
profile-check:
@:
-PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_2_1 -d:MONOTOUCH
+PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_2_1 -d:MOBILE -d:MONOTOUCH
FRAMEWORK_VERSION = 2.1
NO_TEST = yes
profile-check:
@:
-PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_2_1 -d:MONOTOUCH
+PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_2_1 -d:MOBILE -d:MONOTOUCH
FRAMEWORK_VERSION = 2.1
NO_TEST = yes
Mono.CSharp \
Moonlight.Build.Tasks \
WindowsBase \
- System.Data.Services
+ System.Data.Services \
+ System.Data.Services.Client \
+ System.Net
net_2_0_only_dirs := \
System.Web.Extensions_1.0 \
System.Web.Extensions.Design_1.0
+net_2_1_bootstrap_dirs := \
+ corlib \
+ System \
+ Mono.CompilerServices.SymbolWriter \
+ System.Core
+
moonlight_dirs := \
corlib \
Mono.CompilerServices.SymbolWriter \
System.ServiceModel \
System.ServiceModel.Web
-monotouch_dirs := \
+mobile_dirs := \
corlib \
Mono.CompilerServices.SymbolWriter \
System.Core \
System.Data \
Mono.Cairo \
Mono.Data.Sqlite
-
-net_3_5_dirs := \
+
+net_3_5_only_dirs := \
Microsoft.Build.Framework \
Microsoft.Build.Utilities \
Microsoft.Build.Engine \
- Microsoft.Build.Tasks \
- Moonlight.Build.Tasks \
- System.Web.Extensions.Design \
- System.Data.Services.Client
+ Microsoft.Build.Tasks
net_4_0_dirs := \
System.Dynamic \
net_2_0_bootstrap_SUBDIRS := $(bootstrap_dirs)
net_2_0_SUBDIRS := $(common_dirs) $(net_2_0_dirs) $(net_2_0_only_dirs)
-moonlight_bootstrap_SUBDIRS := corlib System Mono.CompilerServices.SymbolWriter System.Core
+moonlight_bootstrap_SUBDIRS := $(net_2_1_bootstrap_dirs)
moonlight_raw_SUBDIRS := $(moonlight_dirs)
-monotouch_bootstrap_SUBDIRS := corlib System Mono.CompilerServices.SymbolWriter System.Core
-monotouch_SUBDIRS := $(monotouch_dirs)
-net_3_5_SUBDIRS := $(net_3_5_dirs)
+monodroid_bootstrap_SUBDIRS := $(net_2_1_bootstrap_dirs)
+monodroid_SUBDIRS := $(mobile_dirs)
+monotouch_bootstrap_SUBDIRS := $(net_2_1_bootstrap_dirs)
+monotouch_SUBDIRS := $(mobile_dirs)
+net_3_5_SUBDIRS := $(net_3_5_only_dirs)
net_4_0_bootstrap_SUBDIRS := $(bootstrap_dirs) Mono.Posix System.Core
net_4_0_SUBDIRS := $(common_dirs) $(net_2_0_dirs) $(net_4_0_dirs)
include ../build/rules.make
-SUBDIRS = $(common_dirs) $(net_2_0_dirs) $(net_2_0_only_dirs) $(moonlight_dirs) $(monotouch_dirs) $(net_3_5_dirs) $(net_4_0_dirs)
+SUBDIRS = $(common_dirs) $(net_2_0_dirs) $(net_2_0_only_dirs) $(moonlight_dirs) $(mobile_dirs) $(net_4_0_dirs)
DIST_ONLY_SUBDIRS = dlr
private static DragTrackingDelegate DragTrackingHandler = new DragTrackingDelegate (TrackingCallback);
static Dnd () {
- InstallTrackingHandler (DragTrackingHandler, IntPtr.Zero, IntPtr.Zero);
+ try {
+ InstallTrackingHandler (DragTrackingHandler, IntPtr.Zero, IntPtr.Zero);
+ } catch (EntryPointNotFoundException) {
+ // it is deprecated in 10.6 and does not exist anymore.
+ }
}
internal Dnd () {
logCtor.DefineParameter (1, ParameterAttributes.None, "test");\r
logCtor.DefineParameter (2, ParameterAttributes.None, "obj");\r
ILGenerator logIL = logCtor.GetILGenerator ();\r
-
- logIL.Emit (OpCodes.Ldarg_0);
- logIL.Emit (OpCodes.Call, typeof (object).GetConstructor (Type.EmptyTypes));
-
+\r
+ logIL.Emit (OpCodes.Ldarg_0);\r
+ logIL.Emit (OpCodes.Call, typeof (object).GetConstructor (Type.EmptyTypes));\r
+\r
logIL.Emit (OpCodes.Ldarg_0);\r
logIL.Emit (OpCodes.Ldarg_1);\r
logIL.Emit (OpCodes.Stfld, logField);\r
LIBRARY = Microsoft.Build.Engine.dll
-ifeq (1.0, $(FRAMEWORK_VERSION))
-LIBRARY_NAME = dummy-Microsoft.Build.Engine.dll
-NO_INSTALL = yes
-NO_TEST = yes
-NO_SIGN_ASSEMBLY = yes
-endif
+BUILD_FRAMEWORK = Microsoft.Build.Framework.dll
ifeq (3.5, $(FRAMEWORK_VERSION))
NAME_SUFFIX = .v3.5
+BUILD_FRAMEWORK := $(topdir)/class/lib/$(PROFILE)/$(BUILD_FRAMEWORK)
else
ifeq (4.0, $(FRAMEWORK_VERSION))
NAME_SUFFIX = .v4.0
/r:System.dll \
/r:System.Core.dll \
/r:System.Xml.dll \
- /r:Microsoft.Build.Framework.dll \
+ /r:$(BUILD_FRAMEWORK) \
/r:Microsoft.Build.Utilities$(NAME_SUFFIX).dll
TEST_MCS_FLAGS = \
- /r:Microsoft.Build.Framework.dll \
+ /r:$(BUILD_FRAMEWORK) \
/r:Microsoft.Build.Utilities$(NAME_SUFFIX).dll
EXTRA_DISTFILES = \
bool no_message_color, use_colors;
bool noItemAndPropertyList;
- List<BuildStatusEventArgs> events;
+ List<BuildEvent> events;
Dictionary<string, List<string>> errorsTable;
Dictionary<string, List<string>> warningsTable;
SortedDictionary<string, PerfInfo> targetPerfTable, tasksPerfTable;
this.colorSet = colorSet;
this.colorReset = colorReset;
- events = new List<BuildStatusEventArgs> ();
+ events = new List<BuildEvent> ();
errorsTable = new Dictionary<string, List<string>> ();
warningsTable = new Dictionary<string, List<string>> ();
targetPerfTable = new SortedDictionary<string, PerfInfo> ();
{
this.eventSource = eventSource;
- eventSource.BuildStarted += new BuildStartedEventHandler (BuildStartedHandler);
- eventSource.BuildFinished += new BuildFinishedEventHandler (BuildFinishedHandler);
- eventSource.ProjectStarted += new ProjectStartedEventHandler (ProjectStartedHandler);
- eventSource.ProjectFinished += new ProjectFinishedEventHandler (ProjectFinishedHandler);
- eventSource.TargetStarted += new TargetStartedEventHandler (TargetStartedHandler);
- eventSource.TargetFinished += new TargetFinishedEventHandler (TargetFinishedHandler);
- eventSource.TaskStarted += new TaskStartedEventHandler (TaskStartedHandler);
- eventSource.TaskFinished += new TaskFinishedEventHandler (TaskFinishedHandler);
- eventSource.MessageRaised += new BuildMessageEventHandler (MessageHandler);
- eventSource.WarningRaised += new BuildWarningEventHandler (WarningHandler);
- eventSource.ErrorRaised += new BuildErrorEventHandler (ErrorHandler);
+ eventSource.BuildStarted += BuildStartedHandler;
+ eventSource.BuildFinished += BuildFinishedHandler;
+
+ eventSource.ProjectStarted += PushEvent;
+ eventSource.ProjectFinished += PopEvent;
+
+ eventSource.TargetStarted += PushEvent;
+ eventSource.TargetFinished += PopEvent;
+
+ eventSource.TaskStarted += PushEvent;
+ eventSource.TaskFinished += PopEvent;
+
+ eventSource.MessageRaised += MessageHandler;
+ eventSource.WarningRaised += WarningHandler;
+ eventSource.ErrorRaised += ErrorHandler;
}
-
+
public void BuildStartedHandler (object sender, BuildStartedEventArgs args)
{
if (IsVerbosityGreaterOrEqual (LoggerVerbosity.Normal)) {
public void BuildFinishedHandler (object sender, BuildFinishedEventArgs args)
{
if (!IsVerbosityGreaterOrEqual (LoggerVerbosity.Normal)) {
- PopEvent ();
+ PopEvent (args);
return;
}
WriteLine (String.Format ("\t {0} Error(s)", errorCount));
WriteLine (String.Empty);
WriteLine (String.Format ("Time Elapsed {0}", timeElapsed));
- }
- PopEvent ();
+ }
+
+ PopEvent (args);
}
public void ProjectStartedHandler (object sender, ProjectStartedEventArgs args)
WriteLine (String.Format ("Project \"{0}\" ({1} target(s)):", args.ProjectFile,
String.IsNullOrEmpty (args.TargetNames) ? "default" : args.TargetNames));
ResetColor ();
- WriteLine (String.Empty);
DumpProperties (args.Properties);
DumpItems (args.Items);
}
- PushEvent (args);
}
public void ProjectFinishedHandler (object sender, ProjectFinishedEventArgs args)
if (!projectFailed)
// no project has failed yet, so update the flag
projectFailed = !args.Succeeded;
-
- PopEvent ();
}
public void TargetStartedHandler (object sender, TargetStartedEventArgs args)
if (IsVerbosityGreaterOrEqual (LoggerVerbosity.Normal)) {
indent++;
SetColor (eventColor);
+ WriteLine (String.Empty);
WriteLine (String.Format ("Target {0}:",args.TargetName));
ResetColor ();
}
- PushEvent (args);
}
public void TargetFinishedHandler (object sender, TargetFinishedEventArgs args)
WriteLine (String.Empty);
}
indent--;
-
- PopEvent ();
}
public void TaskStartedHandler (object sender, TaskStartedEventArgs args)
{
- if (this.verbosity == LoggerVerbosity.Detailed) {
+ if (IsVerbosityGreaterOrEqual (LoggerVerbosity.Detailed)) {
SetColor (eventColor);
WriteLine (String.Format ("Task \"{0}\"",args.TaskName));
ResetColor ();
}
indent++;
- PushEvent (args);
}
public void TaskFinishedHandler (object sender, TaskFinishedEventArgs args)
WriteLine (String.Format ("Task \"{0}\" execution -- FAILED", args.TaskName));
ResetColor ();
}
- PopEvent ();
}
public void MessageHandler (object sender, BuildMessageEventArgs args)
{
if (IsMessageOk (args)) {
if (no_message_color) {
+ ExecutePendingEventHandlers ();
WriteLine (args.Message);
} else {
+ ExecutePendingEventHandlers ();
SetColor (args.Importance == MessageImportance.High ? highMessageColor : messageColor);
WriteLine (args.Message);
ResetColor ();
{
string msg = FormatWarningEvent (args);
if (IsVerbosityGreaterOrEqual (LoggerVerbosity.Quiet)) {
+ ExecutePendingEventHandlers ();
SetColor (warningColor);
WriteLineWithoutIndent (msg);
ResetColor ();
{
string msg = FormatErrorEvent (args);
if (IsVerbosityGreaterOrEqual (LoggerVerbosity.Quiet)) {
+ ExecutePendingEventHandlers ();
SetColor (errorColor);
WriteLineWithoutIndent (msg);
ResetColor ();
}
}
- void PushEvent (BuildStatusEventArgs args)
+ void PushEvent<T> (object sender, T args) where T: BuildStatusEventArgs
{
- events.Add (args);
+ PushEvent (args);
+ }
+
+ void PushEvent<T> (T args) where T: BuildStatusEventArgs
+ {
+ BuildEvent be = new BuildEvent {
+ EventArgs = args,
+ StartHandlerHasExecuted = false,
+ ConsoleLogger = this
+ };
+
+ events.Add (be);
current_events_string = null;
}
- void PopEvent ()
+ void PopEvent<T> (object sender, T finished_args) where T: BuildStatusEventArgs
+ {
+ PopEvent (finished_args);
+ }
+
+ void PopEvent<T> (T finished_args) where T: BuildStatusEventArgs
{
+ if (events.Count == 0)
+ throw new InvalidOperationException ("INTERNAL ERROR: Trying to pop from an empty events stack");
+
+ BuildEvent be = events [events.Count - 1];
if (performanceSummary || verbosity == LoggerVerbosity.Diagnostic) {
- var args = events [events.Count - 1];
+ var args = be.EventArgs;
TargetStartedEventArgs tgt_args = args as TargetStartedEventArgs;
if (tgt_args != null) {
AddPerfInfo (tgt_args.TargetName, args.Timestamp, targetPerfTable);
}
}
+ be.ExecuteFinishedHandler (finished_args);
events.RemoveAt (events.Count - 1);
current_events_string = null;
}
+ void ExecutePendingEventHandlers ()
+ {
+ foreach (var be in events)
+ be.ExecuteStartedHandler ();
+ }
+
string EventsToString ()
{
StringBuilder sb = new StringBuilder ();
string last_imported_target_file = String.Empty;
for (int i = 0; i < events.Count; i ++) {
- var args = events [i];
+ var args = events [i].EventArgs;
ProjectStartedEventArgs pargs = args as ProjectStartedEventArgs;
if (pargs != null) {
sb.AppendFormat ("{0} ({1}) ->\n", pargs.ProjectFile,
if (eventSource == null)
return;
- eventSource.BuildStarted -= BuildStartedHandler;
+ eventSource.BuildStarted -= BuildStartedHandler;
eventSource.BuildFinished -= BuildFinishedHandler;
- eventSource.ProjectStarted -= ProjectStartedHandler;
- eventSource.ProjectFinished -= ProjectFinishedHandler;
- eventSource.TargetStarted -= TargetStartedHandler;
- eventSource.TargetFinished -= TargetFinishedHandler;
- eventSource.TaskStarted -= TaskStartedHandler;
- eventSource.TaskFinished -= TaskFinishedHandler;
+
+ eventSource.ProjectStarted -= PushEvent;
+ eventSource.ProjectFinished -= PopEvent;
+
+ eventSource.TargetStarted -= PushEvent;
+ eventSource.TargetFinished -= PopEvent;
+
+ eventSource.TaskStarted -= PushEvent;
+ eventSource.TaskFinished -= PopEvent;
+
eventSource.MessageRaised -= MessageHandler;
eventSource.WarningRaised -= WarningHandler;
eventSource.ErrorRaised -= ErrorHandler;
return;
SetColor (eventColor);
- WriteLine ("\n");
+ WriteLine (String.Empty);
WriteLine ("Initial Properties:");
ResetColor ();
foreach (KeyValuePair<string, string> pair in dict)
WriteLine (String.Format ("{0} = {1}", pair.Key, pair.Value));
- WriteLine ("\n");
}
void DumpItems (IEnumerable items)
return;
SetColor (eventColor);
- WriteLine ("\n");
+ WriteLine (String.Empty);
WriteLine ("Initial Items:");
ResetColor ();
if (items == null)
WriteLine (item.ItemSpec);
indent--;
}
- WriteLine ("\n");
}
public string Parameters {
}
}
+ class BuildEvent {
+ public BuildStatusEventArgs EventArgs;
+ public bool StartHandlerHasExecuted;
+ public ConsoleLogger ConsoleLogger;
+
+ public void ExecuteStartedHandler ()
+ {
+ if (StartHandlerHasExecuted)
+ return;
+
+ if (EventArgs is ProjectStartedEventArgs)
+ ConsoleLogger.ProjectStartedHandler (null, (ProjectStartedEventArgs)EventArgs);
+ else if (EventArgs is TargetStartedEventArgs)
+ ConsoleLogger.TargetStartedHandler (null, (TargetStartedEventArgs)EventArgs);
+ else if (EventArgs is TaskStartedEventArgs)
+ ConsoleLogger.TaskStartedHandler (null, (TaskStartedEventArgs)EventArgs);
+ else if (!(EventArgs is BuildStartedEventArgs))
+ throw new InvalidOperationException ("Unexpected event on the stack, type: " + EventArgs.GetType ());
+
+ StartHandlerHasExecuted = true;
+ }
+
+ public void ExecuteFinishedHandler (BuildStatusEventArgs finished_args)
+ {
+ if (!StartHandlerHasExecuted)
+ return;
+
+ if (EventArgs is ProjectStartedEventArgs)
+ ConsoleLogger.ProjectFinishedHandler (null, finished_args as ProjectFinishedEventArgs);
+ else if (EventArgs is TargetStartedEventArgs)
+ ConsoleLogger.TargetFinishedHandler (null, finished_args as TargetFinishedEventArgs);
+ else if (EventArgs is TaskStartedEventArgs)
+ ConsoleLogger.TaskFinishedHandler (null, finished_args as TaskFinishedEventArgs);
+ else if (!(EventArgs is BuildStartedEventArgs))
+ throw new InvalidOperationException ("Unexpected event on the stack, type: " + EventArgs.GetType ());
+ }
+ }
+
class PerfInfo {
public TimeSpan Time;
public int NumberOfCalls;
void LogTargetSkipped (Target target, string reason)
{
BuildMessageEventArgs bmea;
- bmea = new BuildMessageEventArgs (reason ?? String.Format ("Skipping target \"{0}\" because its outputs are up-to-date.", target.Name),
- null, "MSBuild", MessageImportance.Normal);
+ bmea = new BuildMessageEventArgs (String.IsNullOrEmpty (reason)
+ ? String.Format ("Skipping target \"{0}\" because its outputs are up-to-date.", target.Name)
+ : reason,
+ null, "MSBuild", MessageImportance.Normal);
target.Engine.EventSource.FireMessageRaised (this, bmea);
}
include ../../build/rules.make
LIBRARY = Microsoft.Build.Tasks.dll
-ifeq (1.0, $(FRAMEWORK_VERSION))
-
-LIBRARY_NAME = dummy-Microsoft.Build.Tasks.dll
-NO_INSTALL = yes
-NO_TEST = yes
-NO_SIGN_ASSEMBLY = yes
-
-else
+BUILD_FRAMEWORK = Microsoft.Build.Framework.dll
+BUILD_ENGINE = Microsoft.Build.Engine.dll
ifeq (3.5, $(FRAMEWORK_VERSION))
NAME_SUFFIX = .v3.5
+BUILD_FRAMEWORK := $(topdir)/class/lib/$(PROFILE)/$(BUILD_FRAMEWORK)
+BUILD_ENGINE := $(topdir)/class/lib/$(PROFILE)/$(BUILD_ENGINE)
else
ifeq (4.0, $(FRAMEWORK_VERSION))
NAME_SUFFIX = .v4.0
LIBRARY_NAME = Microsoft.Build.Tasks$(NAME_SUFFIX).dll
-endif
-
LIB_MCS_FLAGS = \
/r:$(corlib) \
/r:System.dll \
/r:System.Xml.dll \
/r:System.Windows.Forms.dll \
/r:Microsoft.Build.Utilities$(NAME_SUFFIX).dll \
- /r:Microsoft.Build.Framework.dll \
- /r:Microsoft.Build.Engine.dll
+ /r:$(BUILD_FRAMEWORK) \
+ /r:$(BUILD_ENGINE)
TEST_MCS_FLAGS = \
- /r:Microsoft.Build.Engine.dll \
- /r:Microsoft.Build.Framework.dll \
+ /r:$(BUILD_ENGINE) \
+ /r:$(BUILD_FRAMEWORK) \
/r:Microsoft.Build.Utilities$(NAME_SUFFIX).dll
EXTRA_DISTFILES = \
// Marek Sieradzki (marek.sieradzki@gmail.com)
// Paolo Molaro (lupus@ximian.com)
// Gonzalo Paniagua Javier (gonzalo@ximian.com)
+// Lluis Sanchez Gual <lluis@novell.com>
+// Ankit Jain <jankit@novell.com>
//
// (C) 2005 Marek Sieradzki
+// Copyright 2010 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
using System.Collections.Generic;
using System.Resources;
using System.Reflection;
+using System.Xml;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using Mono.XBuild.Tasks.GenerateResourceInternal;
string sourceFile = source.ItemSpec;
string outputFile = Path.ChangeExtension (sourceFile, "resources");
- result &= CompileResourceFile (sourceFile, outputFile);
+ if (IsResgenRequired (sourceFile, outputFile))
+ result &= CompileResourceFile (sourceFile, outputFile);
ITaskItem newItem = new TaskItem (source);
source.ItemSpec = outputFile;
continue;
}
- result &= CompileResourceFile (sources [i].ItemSpec, outputResources [i].ItemSpec);
+ if (IsResgenRequired (sources [i].ItemSpec, outputResources [i].ItemSpec))
+ result &= CompileResourceFile (sources [i].ItemSpec, outputResources [i].ItemSpec);
temporaryFilesWritten.Add (outputResources [i]);
}
}
return result;
}
+ // true if the resx file or any file referenced
+ // by the resx is newer than the .resources file
+ //
+ // Code taken from monodevelop
+ // main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MD1/MD1DotNetProjectHandler.cs
+ bool IsResgenRequired (string resx_filename, string resources_filename)
+ {
+ if (IsFileNewerThan (resx_filename, resources_filename)) {
+ Log.LogMessage (MessageImportance.Low,
+ "Resource file '{0}' is newer than the source file '{1}', skipping.",
+ resources_filename, resx_filename);
+ return true;
+ }
+
+ if (String.Compare (Path.GetExtension (resx_filename), ".resx", true) != 0)
+ return true;
+
+ // resx file, check for files referenced from there
+ XmlTextReader xr = null;
+ try {
+ // look for
+ // <data type="System.Resources.ResXFileRef, System.Windows.Forms" ..>
+ // <value>... filename;.. </value>
+ // </data>
+ xr = new XmlTextReader (resx_filename);
+ string basepath = Path.GetDirectoryName (resx_filename);
+ while (xr.Read ()) {
+ if (xr.NodeType != XmlNodeType.Element ||
+ String.Compare (xr.LocalName, "data") != 0)
+ continue;
+
+ string type = xr.GetAttribute ("type");
+ if (String.IsNullOrEmpty (type))
+ continue;
+
+ if (String.Compare (type, "System.Resources.ResXFileRef, System.Windows.Forms") != 0)
+ continue;
+
+ xr.ReadToDescendant ("value");
+ if (xr.NodeType != XmlNodeType.Element)
+ continue;
+
+ string value = xr.ReadElementContentAsString ();
+
+ string [] parts = value.Split (';');
+ if (parts.Length > 0) {
+ string referenced_filename = Utilities.FromMSBuildPath (
+ Path.Combine (basepath, parts [0]).Trim ());
+ if (File.Exists (referenced_filename) &&
+ IsFileNewerThan (referenced_filename, resources_filename))
+ return true;
+ }
+ }
+ } catch (XmlException) {
+ // Ignore xml errors, let resgen handle it
+ return true;
+ } finally {
+ if (xr != null)
+ xr.Close ();
+ }
+
+ return false;
+ }
+
+ // true if first is newer than second
+ static bool IsFileNewerThan (string first, string second)
+ {
+ FileInfo finfo_first = new FileInfo (first);
+ FileInfo finfo_second = new FileInfo (second);
+ return finfo_first.LastWriteTime > finfo_second.LastWriteTime;
+ }
+
#if false
private IResourceReader GetReader (Stream stream, string name)
{
return false;
}
- if (File.GetLastWriteTime (sname) <= File.GetLastWriteTime (dname)) {
- Log.LogMessage (MessageImportance.Low,
- "Resource file '{0}' is newer than the source file '{1}', skipping.",
- dname, sname);
- return true;
- }
-
Resgen resgen = new Resgen ();
resgen.BuildEngine = this.BuildEngine;
resgen.UseSourcePath = true;
public override bool Execute ()
{
if (String.IsNullOrEmpty (Environment.GetEnvironmentVariable ("MONO_IOMAP")))
- EnvironmentOverride ["MONO_IOMAP"] = "drive";
+ EnvironmentVariables = new string [] { "MONO_IOMAP=drive" };
return base.Execute ();
}
#if NET_2_0
using System;
+using System.IO;
namespace Microsoft.Build.Tasks {
internal static class Utilities {
}
}
+
+ internal static string FromMSBuildPath (string relPath)
+ {
+ if (relPath == null || relPath.Length == 0)
+ return null;
+
+ bool is_windows = Path.DirectorySeparatorChar == '\\';
+ string path = relPath;
+ if (!is_windows)
+ path = path.Replace ("\\", "/");
+
+ // a path with drive letter is invalid/unusable on non-windows
+ if (!is_windows && char.IsLetter (path [0]) && path.Length > 1 && path[1] == ':')
+ return null;
+
+ if (System.IO.File.Exists (path)){
+ return Path.GetFullPath (path);
+ }
+
+ if (Path.IsPathRooted (path)) {
+
+ // Windows paths are case-insensitive. When mapping an absolute path
+ // we can try to find the correct case for the path.
+
+ string[] names = path.Substring (1).Split ('/');
+ string part = "/";
+
+ for (int n=0; n<names.Length; n++) {
+ string[] entries;
+
+ if (names [n] == ".."){
+ if (part == "/")
+ return ""; // Can go further back. It's not an existing file
+ part = Path.GetFullPath (part + "/..");
+ continue;
+ }
+
+ entries = Directory.GetFileSystemEntries (part);
+
+ string fpath = null;
+ foreach (string e in entries) {
+ if (string.Compare (Path.GetFileName (e), names[n], true) == 0) {
+ fpath = e;
+ break;
+ }
+ }
+ if (fpath == null) {
+ // Part of the path does not exist. Can't do any more checking.
+ part = Path.GetFullPath (part);
+ for (; n < names.Length; n++)
+ part += "/" + names[n];
+ return part;
+ }
+
+ part = fpath;
+ }
+ return Path.GetFullPath (part);
+ } else {
+ return Path.GetFullPath (path);
+ }
+ }
+
}
}
include ../../build/rules.make
LIBRARY = Microsoft.Build.Utilities.dll
-ifeq (1.0, $(FRAMEWORK_VERSION))
-LIBRARY_NAME = dummy-Microsoft.Build.Utilities.dll
-NO_INSTALL = yes
-NO_TEST = yes
-NO_SIGN_ASSEMBLY = yes
-endif
+BUILD_FRAMEWORK = Microsoft.Build.Framework.dll
ifeq (3.5, $(FRAMEWORK_VERSION))
LIBRARY_NAME = Microsoft.Build.Utilities.v3.5.dll
+BUILD_FRAMEWORK := $(topdir)/class/lib/$(PROFILE)/$(BUILD_FRAMEWORK)
else
ifeq (4.0, $(FRAMEWORK_VERSION))
LIBRARY_NAME = Microsoft.Build.Utilities.v4.0.dll
LIB_MCS_FLAGS = \
/r:$(corlib) \
/r:System.dll \
- /r:Microsoft.Build.Framework.dll
+ /r:$(BUILD_FRAMEWORK)
-TEST_MCS_FLAGS = /r:Microsoft.Build.Framework.dll
+TEST_MCS_FLAGS = /r:$(BUILD_FRAMEWORK)
export TESTING_MONO=a
XBUILD_DIR=../../tools/xbuild
{
public abstract class ToolTask : Task
{
- SCS.ProcessStringDictionary environmentOverride;
int exitCode;
int timeout;
string toolPath, toolExe;
this.toolPath = MonoLocationHelper.GetBinDir ();
this.responseFileEncoding = Encoding.UTF8;
this.timeout = Int32.MaxValue;
- this.environmentOverride = new SCS.ProcessStringDictionary ();
}
[MonoTODO]
if (pathToTool == null)
throw new ArgumentNullException ("pathToTool");
- string output, error, responseFileName;
- StreamWriter outwr, errwr;
-
- outwr = errwr = null;
- responseFileName = output = error = null;
+ string responseFileName;
+ responseFileName = null;
toolOutput = new StringBuilder ();
try {
LogToolCommand (String.Format ("Tool {0} execution started with arguments: {1} {2}",
pathToTool, commandLineCommands, responseFileCommands));
- output = Path.GetTempFileName ();
- error = Path.GetTempFileName ();
- outwr = new StreamWriter (output);
- errwr = new StreamWriter (error);
-
ProcessStartInfo pinfo = new ProcessStartInfo (pathToTool, arguments);
pinfo.WorkingDirectory = GetWorkingDirectory () ?? Environment.CurrentDirectory;
pinfo.RedirectStandardOutput = true;
pinfo.RedirectStandardError = true;
+ var pendingLineFragmentOutput = new StringBuilder ();
+ var pendingLineFragmentError = new StringBuilder ();
+ var environmentOverride = GetAndLogEnvironmentVariables ();
try {
- ProcessWrapper pw = ProcessService.StartProcess (pinfo, outwr, errwr, null, environmentOverride);
- pw.OutputStreamChanged += delegate (object o, string msg) { ProcessLine (msg, StandardOutputLoggingImportance); };
- pw.ErrorStreamChanged += delegate (object o, string msg) { ProcessLine (msg, StandardErrorLoggingImportance); };
+ // When StartProcess returns, the process has already .Start()'ed
+ // If we subscribe to the events after that, then for processes that
+ // finish executing before we can subscribe, we won't get the output/err
+ // events at all!
+ ProcessWrapper pw = ProcessService.StartProcess (pinfo,
+ (_, msg) => ProcessLine (pendingLineFragmentOutput, msg, StandardOutputLoggingImportance),
+ (_, msg) => ProcessLine (pendingLineFragmentError, msg, StandardErrorLoggingImportance),
+ null,
+ environmentOverride);
+
+ pw.WaitForOutput (timeout == Int32.MaxValue ? Int32.MaxValue : timeout);
+
+ // Process any remaining line
+ ProcessLine (pendingLineFragmentOutput, StandardOutputLoggingImportance, true);
+ ProcessLine (pendingLineFragmentError, StandardErrorLoggingImportance, true);
- pw.WaitForOutput (timeout == Int32.MaxValue ? -1 : timeout);
exitCode = pw.ExitCode;
- outwr.Close();
- errwr.Close();
pw.Dispose ();
} catch (System.ComponentModel.Win32Exception e) {
Log.LogError ("Error executing tool '{0}': {1}", pathToTool, e.Message);
if (typeLoadException)
ProcessTypeLoadException ();
+ pendingLineFragmentOutput.Length = 0;
+ pendingLineFragmentError.Length = 0;
+
Log.LogMessage (MessageImportance.Low, "Tool {0} execution finished.", pathToTool);
return exitCode;
} finally {
DeleteTempFile (responseFileName);
- if (outwr != null)
- outwr.Dispose ();
- if (errwr != null)
- errwr.Dispose ();
-
- DeleteTempFile (output);
- DeleteTempFile (error);
}
}
Log.LogError (output_str);
}
- void ProcessLine (string line, MessageImportance importance)
+ void ProcessLine (StringBuilder outputBuilder, MessageImportance importance, bool isLastLine)
+ {
+ if (outputBuilder.Length == 0)
+ return;
+
+ if (isLastLine && !outputBuilder.ToString ().EndsWith (Environment.NewLine))
+ // last line, but w/o an trailing newline, so add that
+ outputBuilder.Append (Environment.NewLine);
+
+ ProcessLine (outputBuilder, null, importance);
+ }
+
+ void ProcessLine (StringBuilder outputBuilder, string line, MessageImportance importance)
{
- foreach (string singleLine in line.Split (new string [] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)) {
+ // Add to any line fragment from previous call
+ if (line != null)
+ outputBuilder.Append (line);
+
+ // Don't remove empty lines!
+ var lines = outputBuilder.ToString ().Split (new string [] {Environment.NewLine}, StringSplitOptions.None);
+
+ // Clear the builder. If any incomplete line is found,
+ // then it will get added back
+ outputBuilder.Length = 0;
+ for (int i = 0; i < lines.Length; i ++) {
+ string singleLine = lines [i];
+ if (i == lines.Length - 1 && !singleLine.EndsWith (Environment.NewLine)) {
+ // Last line doesn't end in newline, could be part of
+ // a bigger line. Save for later processing
+ outputBuilder.Append (singleLine);
+ continue;
+ }
+
toolOutput.AppendLine (singleLine);
// in case of typeLoadException, collect all the output
protected virtual void LogEventsFromTextOutput (string singleLine, MessageImportance importance)
{
- singleLine = singleLine.Trim ();
- if (singleLine.Length == 0)
+ if (singleLine.Length == 0) {
+ Log.LogMessage (singleLine, importance);
return;
+ }
if (singleLine.StartsWith ("Unhandled Exception: System.TypeLoadException") ||
singleLine.StartsWith ("Unhandled Exception: System.IO.FileNotFoundException")) {
}
}
+ // If EnvironmentVariables is defined, then merge EnvironmentOverride
+ // EnvironmentOverride is Obsolete'd in 4.0
+ //
+ // Returns the final set of environment variables and logs them
+ SCS.StringDictionary GetAndLogEnvironmentVariables ()
+ {
+ var env_vars = GetEnvironmentVariables ();
+ if (env_vars == null)
+ return env_vars;
+
+ Log.LogMessage (MessageImportance.Low, "Environment variables being passed to the tool:");
+ foreach (DictionaryEntry entry in env_vars)
+ Log.LogMessage (MessageImportance.Low, "\t{0}={1}", (string)entry.Key, (string)entry.Value);
+
+ return env_vars;
+ }
+
+ SCS.StringDictionary GetEnvironmentVariables ()
+ {
+ if (EnvironmentVariables == null || EnvironmentVariables.Length == 0)
+ return EnvironmentOverride;
+
+ var env_vars = new SCS.ProcessStringDictionary ();
+ foreach (string pair in EnvironmentVariables) {
+ string [] key_value = pair.Split ('=');
+ if (!String.IsNullOrEmpty (key_value [0]))
+ env_vars [key_value [0]] = key_value.Length > 1 ? key_value [1] : String.Empty;
+ }
+
+ if (EnvironmentOverride != null)
+ foreach (DictionaryEntry entry in EnvironmentOverride)
+ env_vars [(string)entry.Key] = (string)entry.Value;
+
+ return env_vars;
+ }
+
protected virtual StringDictionary EnvironmentOverride
{
- get { return environmentOverride; }
+ get { return null; }
}
-
+
+ // Ignore EnvironmentOverride if this is set
+ public string[] EnvironmentVariables { get; set; }
+
[Output]
public int ExitCode {
get { return exitCode; }
IgnorePrivateMembers = false
};
- var core_types = Compiler.TypeManager.InitCoreTypes ();
+ var reporter = new Compiler.Report (ErrorPrinter.Instance) {
+ WarningLevel = 0
+ };
+
+ var cc = new Compiler.CompilerContext (importer, reporter) {
+ IsRuntimeBinder = true
+ };
+
+ IList<Compiler.PredefinedTypeSpec> core_types = null;
+ // HACK: To avoid re-initializing static TypeManager types, like string_type
+ if (!Compiler.RootContext.EvalMode) {
+ core_types = Compiler.TypeManager.InitCoreTypes ();
+ }
+
importer.Initialize ();
// I don't think dynamically loaded assemblies can be used as dynamic
// AppDomain.CurrentDomain.AssemblyLoad += (sender, e) => { throw new NotImplementedException (); };
// Import all currently loaded assemblies
- var ns = Compiler.GlobalRootNamespace.Instance;
+ var ns = cc.GlobalRootNamespace;
foreach (System.Reflection.Assembly a in AppDomain.CurrentDomain.GetAssemblies ()) {
ns.AddAssemblyReference (a);
importer.ImportAssembly (a, ns);
}
- var reporter = new Compiler.Report (ErrorPrinter.Instance) {
- WarningLevel = 0
- };
-
- var cc = new Compiler.CompilerContext (importer, reporter) {
- IsRuntimeBinder = true
- };
-
- Compiler.TypeManager.InitCoreTypes (cc, core_types);
- Compiler.TypeManager.InitOptionalCoreTypes (cc);
+ if (!Compiler.RootContext.EvalMode) {
+ Compiler.TypeManager.InitCoreTypes (cc, core_types);
+ Compiler.TypeManager.InitOptionalCoreTypes (cc);
+ }
dc = new DynamicContext (cc);
}
var queried_type = ctx.ImportType (target.LimitType);
var rc = new Compiler.ResolveContext (new RuntimeBinderContext (ctx, context_type), 0);
- var expr = Compiler.Expression.MemberLookup (rc, context_type, queried_type, name, 0, false, Compiler.Location.Null);
+ var expr = Compiler.Expression.MemberLookup (rc, context_type, queried_type,
+ name, 0, Compiler.Expression.MemberLookupRestrictions.ExactArity, Compiler.Location.Null);
var binder = new CSharpBinder (
this, new Compiler.BoolConstant (expr is Compiler.EventExpr, Compiler.Location.Null), null);
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-#if !MONOTOUCH
+#if !MOBILE
#if NET_4_0
[assembly: AssemblyVersion("4.0.0.0")]
#else // NET_4_0
[assembly: AssemblyVersion("2.0.0.0")]
#endif // NET_4_0
-#else // !MONOTOUCH
+#else
[assembly: AssemblyVersion(Consts.FxVersion)]
-#endif // !MONOTOUCH
+#endif
#if !PLATFORM_COMPACTFRAMEWORK
[assembly: AssemblyFileVersion("1.0.61.0")]
#endif
* with newer runtimes, and vice versa.
*/
public const int MAJOR_VERSION = 2;
- public const int MINOR_VERSION = 1;
+ public const int MINOR_VERSION = 2;
enum WPSuspendPolicy {
NONE = 0,
[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
delegate int Mono_Posix_RuntimeIsShuttingDown ();
+ static Mono_Posix_RuntimeIsShuttingDown ShuttingDown = RuntimeShuttingDownCallback;
+
+ static int RuntimeShuttingDownCallback ()
+ {
+ return Environment.HasShutdownStarted ? 1 : 0;
+ }
[DllImport (Stdlib.MPH, CallingConvention=CallingConvention.Cdecl,
EntryPoint="Mono_Unix_UnixSignal_WaitAny")]
return WaitAny (signals, (int) ms);
}
+
public static unsafe int WaitAny (UnixSignal[] signals, int millisecondsTimeout)
{
if (signals == null)
if (infos [i] == IntPtr.Zero)
throw new InvalidOperationException ("Disposed UnixSignal");
}
- return WaitAny (infos, infos.Length, millisecondsTimeout, () => Environment.HasShutdownStarted ? 1 : 0);
+ return WaitAny (infos, infos.Length, millisecondsTimeout, ShuttingDown);
}
}
}
[assembly: AssemblyDelaySign (true)]
[assembly: AssemblyKeyFile ("../mono.pub")]
-#if MONOTOUCH
+#if MOBILE
[assembly: InternalsVisibleTo ("System, PublicKey=00240000048000009400000006020000002400005253413100040000010001008D56C76F9E8649383049F383C44BE0EC204181822A6C31CF5EB7EF486944D032188EA1D3920763712CCB12D75FB77E9811149E6148E5D32FBAAB37611C1878DDC19E20EF135D0CB2CFF2BFEC3D115810C3D9069638FE4BE215DBF795861920E5AB6F7DB2E2CEEF136AC23D5DD2BF031700AEC232F6C6B1C785B4305C123B37AB")]
#endif
static RandomNumberGenerator Rng {
get {
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
if (rng == null)
rng = new RNGCryptoServiceProvider ();
#else
private byte[] temp2;
private byte[] workBuff;
private byte[] workout;
-#if !NET_2_1 || MONOTOUCH
+#if !MOONLIGHT
// Silverlight 2.0 does not support any feedback mode
private int FeedBackByte;
private int FeedBackIter;
temp = new byte [BlockSizeByte];
Buffer.BlockCopy (rgbIV, 0, temp, 0, System.Math.Min (BlockSizeByte, rgbIV.Length));
temp2 = new byte [BlockSizeByte];
-#if !NET_2_1 || MONOTOUCH
+#if !MOONLIGHT
FeedBackByte = (algo.FeedbackSize >> 3);
if (FeedBackByte != 0)
FeedBackIter = (int) BlockSizeByte / FeedBackByte;
// i.e. Any padding must be done before calling this method
protected virtual void Transform (byte[] input, byte[] output)
{
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
// Silverlight 2.0 only supports CBC
CBC (input, output);
#else
}
}
-#if !NET_2_1 || MONOTOUCH
+#if !MOONLIGHT
// Cipher-FeedBack (CFB)
protected virtual void CFB (byte[] input, byte[] output)
{
// ordered to avoid possible integer overflow
int len = outputBuffer.Length - inputCount - outputOffset;
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
// only PKCS7 is supported Silverlight 2.0
if (KeepLastBlock) {
#else
private bool KeepLastBlock {
get {
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
// only PKCS7 is supported Silverlight 2.0
return !encrypt;
#else
return total;
}
-#if (!NET_2_1 || MONOTOUCH)
+#if !MOONLIGHT
RandomNumberGenerator _rng;
private void Random (byte[] buffer, int start, int length)
int rem = inputCount - full;
int total = full;
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
// only PKCS7 is supported Silverlight 2.0
total += BlockSizeByte;
#else
// now we only have a single last block to encrypt
byte padding = (byte) (BlockSizeByte - rem);
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
// only PKCS7 is supported Silverlight 2.0
for (int i = res.Length; --i >= (res.Length - padding);)
res [i] = padding;
// total may be 0 (e.g. PaddingMode.None)
byte padding = ((total > 0) ? res [total - 1] : (byte) 0);
-#if NET_2_1 && !MONOTOUCH
+#if MOONLIGHT
// only PKCS7 is supported Silverlight 2.0
if ((padding == 0) || (padding > BlockSizeByte))
throw new CryptographicException (Locale.GetText ("Bad padding length."));
LIB_MCS_FLAGS += -d:CODEPLEX_40
endif
-FULL_PROFILE := $(filter net_2_0 net_4_0 moonlight_raw monotouch, $(PROFILE))
+FULL_PROFILE := $(filter net_2_0 net_4_0 moonlight_raw monotouch monodroid, $(PROFILE))
ifdef FULL_PROFILE
LIBRARY_COMPILE = $(BOOT_COMPILE)
endif
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-#if (INSIDE_CORLIB && (NET_4_0 || MOONLIGHT)) || (MONOTOUCH && !INSIDE_CORLIB) || (NET_3_5 && !NET_4_0 && !BOOTSTRAP_NET_4_0)
+#if (INSIDE_CORLIB && (NET_4_0 || MOONLIGHT)) || (MOBILE && !INSIDE_CORLIB) || (NET_3_5 && !NET_4_0 && !BOOTSTRAP_NET_4_0)
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-#if (INSIDE_CORLIB && (NET_4_0 || BOOTSTRAP_NET_4_0 || MOONLIGHT)) || (MONOTOUCH && !INSIDE_CORLIB) || (NET_3_5 && !NET_4_0 && !BOOTSTRAP_NET_4_0)
+#if (INSIDE_CORLIB && (NET_4_0 || BOOTSTRAP_NET_4_0 || MOONLIGHT)) || (MOBILE && !INSIDE_CORLIB) || (NET_3_5 && !NET_4_0 && !BOOTSTRAP_NET_4_0)
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
[assembly:TypeForwardedTo (typeof(TimeZoneInfo))]
-#elif NET_3_5 || (MONOTOUCH && !INSIDE_CORLIB) || (MOONLIGHT && INSIDE_CORLIB)
+#elif NET_3_5 || (MOBILE && !INSIDE_CORLIB) || (MOONLIGHT && INSIDE_CORLIB)
using System.Collections.Generic;
using System.Collections.ObjectModel;
--- /dev/null
+../../build/common/Consts.cs
+../../build/common/Locale.cs
+../../build/common/MonoTODOAttribute.cs
+../corlib/Mono.Security.Cryptography/CryptoTools.cs
+../corlib/Mono.Security.Cryptography/SymmetricTransform.cs
+Assembly/AssemblyInfo.cs
+System/Actions.cs
+System/Funcs.cs
+System/InvalidTimeZoneException.cs
+System/TimeZoneInfo.AdjustmentRule.cs
+System/TimeZoneInfo.cs
+System/TimeZoneInfo.TransitionTime.cs
+System/TimeZoneNotFoundException.cs
+System.Runtime.CompilerServices/ExecutionScope.cs
+System.Runtime.CompilerServices/ExtensionAttribute.cs
+System.Runtime.CompilerServices/IStrongBox.cs
+System.Runtime.CompilerServices/StrongBox_T.cs
+System.Linq/Check.cs
+System.Linq/Enumerable.cs
+System.Linq/QueryableEnumerable.cs
+System.Linq/QueryableTransformer.cs
+System.Linq/Grouping.cs
+System.Linq/IGrouping.cs
+System.Linq/IOrderedQueryable.cs
+System.Linq/IOrderedQueryable_T.cs
+System.Linq/IOrderedEnumerable_T.cs
+System.Linq/IQueryable.cs
+System.Linq/IQueryable_T.cs
+System.Linq/Lookup.cs
+System.Linq/ILookup_T.cs
+System.Linq/OrderedEnumerable.cs
+System.Linq/OrderedSequence.cs
+System.Linq/Queryable.cs
+System.Linq/QuickSort.cs
+System.Linq/SortContext.cs
+System.Linq/SortDirection.cs
+System.Linq/SortSequenceContext.cs
+System.Linq/IQueryProvider.cs
+System.Linq.Expressions/BinaryExpression.cs
+System.Linq.Expressions/ConditionalExpression.cs
+System.Linq.Expressions/ConstantExpression.cs
+System.Linq.Expressions/ElementInit.cs
+System.Linq.Expressions/EmitContext.cs
+System.Linq.Expressions/Expression.cs
+System.Linq.Expressions/Expression_T.cs
+System.Linq.Expressions/ExpressionPrinter.cs
+System.Linq.Expressions/ExpressionType.cs
+System.Linq.Expressions/ExpressionVisitor.cs
+System.Linq.Expressions/ExpressionTransformer.cs
+System.Linq.Expressions/Extensions.cs
+System.Linq.Expressions/InvocationExpression.cs
+System.Linq.Expressions/LambdaExpression.cs
+System.Linq.Expressions/ListInitExpression.cs
+System.Linq.Expressions/MemberAssignment.cs
+System.Linq.Expressions/MemberBinding.cs
+System.Linq.Expressions/MemberBindingType.cs
+System.Linq.Expressions/MemberExpression.cs
+System.Linq.Expressions/MemberInitExpression.cs
+System.Linq.Expressions/MemberListBinding.cs
+System.Linq.Expressions/MemberMemberBinding.cs
+System.Linq.Expressions/MethodCallExpression.cs
+System.Linq.Expressions/NewArrayExpression.cs
+System.Linq.Expressions/NewExpression.cs
+System.Linq.Expressions/ParameterExpression.cs
+System.Linq.Expressions/TypeBinaryExpression.cs
+System.Linq.Expressions/UnaryExpression.cs
+System.Collections.Generic/HashSet.cs
+../corlib/System.Collections.Generic/CollectionDebuggerView.cs
+System.Security.Cryptography/Aes.cs
+System.Security.Cryptography/AesManaged.cs
+System.Security.Cryptography/AesTransform.cs
+System.Threading/LockRecursionException.cs
+System.Threading/LockRecursionPolicy.cs
+System.Threading/ReaderWriterLockSlim.cs
+System.Threading/ThreadLockState.cs
+System.Threading/ReaderWriterLockSlimExtensions.cs
+../corlib/System.Threading/AtomicBoolean.cs
--- /dev/null
+#include monodroid_bootstrap_System.Core.dll.sources
--- /dev/null
+#include mobile_System.Core.dll.sources
-../../build/common/Consts.cs
-../../build/common/Locale.cs
-../../build/common/MonoTODOAttribute.cs
-../corlib/Mono.Security.Cryptography/CryptoTools.cs
-../corlib/Mono.Security.Cryptography/SymmetricTransform.cs
-Assembly/AssemblyInfo.cs
-System/Actions.cs
-System/Funcs.cs
-System/InvalidTimeZoneException.cs
-System/TimeZoneInfo.AdjustmentRule.cs
-System/TimeZoneInfo.cs
-System/TimeZoneInfo.TransitionTime.cs
-System/TimeZoneNotFoundException.cs
-System.Runtime.CompilerServices/ExecutionScope.cs
-System.Runtime.CompilerServices/ExtensionAttribute.cs
-System.Runtime.CompilerServices/IStrongBox.cs
-System.Runtime.CompilerServices/StrongBox_T.cs
-System.Linq/Check.cs
-System.Linq/Enumerable.cs
-System.Linq/QueryableEnumerable.cs
-System.Linq/QueryableTransformer.cs
-System.Linq/Grouping.cs
-System.Linq/IGrouping.cs
-System.Linq/IOrderedQueryable.cs
-System.Linq/IOrderedQueryable_T.cs
-System.Linq/IOrderedEnumerable_T.cs
-System.Linq/IQueryable.cs
-System.Linq/IQueryable_T.cs
-System.Linq/Lookup.cs
-System.Linq/ILookup_T.cs
-System.Linq/OrderedEnumerable.cs
-System.Linq/OrderedSequence.cs
-System.Linq/Queryable.cs
-System.Linq/QuickSort.cs
-System.Linq/SortContext.cs
-System.Linq/SortDirection.cs
-System.Linq/SortSequenceContext.cs
-System.Linq/IQueryProvider.cs
-System.Linq.Expressions/BinaryExpression.cs
-System.Linq.Expressions/ConditionalExpression.cs
-System.Linq.Expressions/ConstantExpression.cs
-System.Linq.Expressions/ElementInit.cs
-System.Linq.Expressions/EmitContext.cs
-System.Linq.Expressions/Expression.cs
-System.Linq.Expressions/Expression_T.cs
-System.Linq.Expressions/ExpressionPrinter.cs
-System.Linq.Expressions/ExpressionType.cs
-System.Linq.Expressions/ExpressionVisitor.cs
-System.Linq.Expressions/ExpressionTransformer.cs
-System.Linq.Expressions/Extensions.cs
-System.Linq.Expressions/InvocationExpression.cs
-System.Linq.Expressions/LambdaExpression.cs
-System.Linq.Expressions/ListInitExpression.cs
-System.Linq.Expressions/MemberAssignment.cs
-System.Linq.Expressions/MemberBinding.cs
-System.Linq.Expressions/MemberBindingType.cs
-System.Linq.Expressions/MemberExpression.cs
-System.Linq.Expressions/MemberInitExpression.cs
-System.Linq.Expressions/MemberListBinding.cs
-System.Linq.Expressions/MemberMemberBinding.cs
-System.Linq.Expressions/MethodCallExpression.cs
-System.Linq.Expressions/NewArrayExpression.cs
-System.Linq.Expressions/NewExpression.cs
-System.Linq.Expressions/ParameterExpression.cs
-System.Linq.Expressions/TypeBinaryExpression.cs
-System.Linq.Expressions/UnaryExpression.cs
-System.Collections.Generic/HashSet.cs
-../corlib/System.Collections.Generic/CollectionDebuggerView.cs
-System.Security.Cryptography/Aes.cs
-System.Security.Cryptography/AesManaged.cs
-System.Security.Cryptography/AesTransform.cs
+#include mobile_System.Core.dll.sources
System.Linq.jvm/Conversion.cs
System.Linq.jvm/ExpressionInterpreter.cs
System.Linq.jvm/ExpressionValidator.cs
System.Linq.jvm/Interpreter.cs
System.Linq.jvm/Math.cs
-System.Threading/LockRecursionException.cs
-System.Threading/LockRecursionPolicy.cs
-System.Threading/ReaderWriterLockSlim.cs
-System.Threading/ThreadLockState.cs
-System.Threading/ReaderWriterLockSlimExtensions.cs
-../corlib/System.Threading/AtomicBoolean.cs
/r:System.Xml.dll \
/r:System.Data.dll \
/r:System.Runtime.Serialization.dll \
+ /resource:./src/DbLinq/Schema/Dbml/DbmlSchema.xsd,DbLinq.Schema.Dbml.DbmlSchema.xsd \
/d:MONO_STRICT /d:MONO_DEPLOY
ifeq (2.0, $(FRAMEWORK_VERSION))
TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
-EXTRA_DISTFILES =
+EXTRA_DISTFILES = src/DbLinq/Schema/Dbml/DbmlSchema.xsd
# This is a .NET 3.5+ assembly
VALID_PROFILE := $(filter net_2_0 net_4_0, $(PROFILE))
-r:J2SE.Helpers.dll \
$(OTHER_LIB_MCS_FLAGS)
else
-ifeq (monotouch, $(PROFILE))
+MOBILE := $(filter monotouch monodroid, $(PROFILE))
+ifdef MOBILE
LIB_MCS_FLAGS += \
-r:Mono.Data.Tds.dll \
-r:System.Transactions.dll
}
protected virtual DbProviderFactory DbProviderFactory {
-#if MONOTOUCH
+#if MOBILE
get {throw new NotImplementedException();}
-#else // MONOTOUCH
+#else
get { return DbProviderFactories.GetFactory (this.GetType (). ToString ()); }
-#endif // MONOTOUCH
+#endif
}
#endif
using System.ComponentModel;
using System.Data;
using System.Data.Common;
-#if !MONOTOUCH
+#if !MOBILE
using System.EnterpriseServices;
-#endif // !MONOTOUCH
+#endif
using System.Globalization;
using System.Net;
using System.Net.Sockets;
}
}
-#if !MONOTOUCH
+#if !MOBILE
[MonoTODO ("Not sure what this means at present.")]
public void EnlistDistributedTransaction (ITransaction transaction)
{
throw new NotImplementedException ();
}
-#endif // !MONOTOUCH
+#endif
object ICloneable.Clone ()
{
if (e == null)
continue;
-#if !MONOTOUCH
+#if !MOBILE
if (e.LocalName == "Connections" && (firstChild = e.FirstChild as XmlElement) != null) {
providerName = firstChild.GetAttribute ("Provider");
connString = firstChild.GetAttribute ("AppSettingsPropertyName");
provider = DbProviderFactories.GetFactory (providerName);
continue;
}
-#endif // !MONOTOUCH
+#endif
// #325464 debugging
//Console.WriteLine ("ProviderName: " + providerName + "Connstr: " + connString);
--- /dev/null
+Assembly/AssemblyInfo.cs
+../../build/common/Consts.cs.in
+../../build/common/Locale.cs
+System.Data/AcceptRejectRule.cs
+System.Data/ColumnTypeConverter.cs
+System.Data/CommandBehavior.cs
+System.Data/CommandType.cs
+System.Data/ConnectionState.cs
+System.Data/ConflictOption.cs
+System.Data/Constraint.cs
+System.Data/ConstraintCollection.cs
+System.Data/ConstraintConverter.cs
+System.Data/ConstraintException.cs
+System.Data/DataCategoryAttribute.cs
+System.Data/DataColumn.cs
+System.Data/DataColumnChangeEventArgs.cs
+System.Data/DataColumnChangeEventHandler.cs
+System.Data/DataColumnCollection.cs
+System.Data/DataColumnPropertyDescriptor.cs
+System.Data/DataException.cs
+System.Data/RelatedDataView.cs
+System.Data/RelationshipConverter.cs
+System.Data/DataRelation.cs
+System.Data/DataRelationCollection.cs
+System.Data/DataRelationPropertyDescriptor.cs
+System.Data/DataRow.cs
+System.Data/DataRowAction.cs
+System.Data/DataRowBuilder.cs
+System.Data/DataRowChangeEventArgs.cs
+System.Data/DataRowChangeEventHandler.cs
+System.Data/DataRowCollection.cs
+System.Data/DataRowState.cs
+System.Data/DataRowVersion.cs
+System.Data/DataRowView.cs
+System.Data/DataSet.cs
+System.Data/DataSetDateTime.cs
+System.Data/DataSysDescriptionAttribute.cs
+System.Data/DataTable.cs
+System.Data/DataTableCollection.cs
+System.Data/DataTableClearEventArgs.cs
+System.Data/DataTableClearEventHandler.cs
+System.Data/DataTableTypeConverter.cs
+System.Data/DataTablePropertyDescriptor.cs
+System.Data/DataTableReader.cs
+System.Data/DataTableNewRowEventArgs.cs
+System.Data/DataTableNewRowEventHandler.cs
+System.Data/DataView.cs
+System.Data/DataViewManager.cs
+System.Data/DataViewManagerListItemTypeDescriptor.cs
+System.Data/DataViewRowState.cs
+System.Data/DataViewSetting.cs
+System.Data/DataViewSettingCollection.cs
+System.Data/DBConcurrencyException.cs
+System.Data/DbType.cs
+System.Data/DefaultValueTypeConverter.cs
+System.Data/DeletedRowInaccessibleException.cs
+System.Data/DuplicateNameException.cs
+System.Data/EvaluateException.cs
+System.Data/FillErrorEventArgs.cs
+System.Data/FillErrorEventHandler.cs
+System.Data/ForeignKeyConstraint.cs
+System.Data/IColumnMapping.cs
+System.Data/IColumnMappingCollection.cs
+System.Data/IDataAdapter.cs
+System.Data/IDataParameter.cs
+System.Data/IDataParameterCollection.cs
+System.Data/IDataReader.cs
+System.Data/IDataRecord.cs
+System.Data/IDbCommand.cs
+System.Data/IDbConnection.cs
+System.Data/IDbDataAdapter.cs
+System.Data/IDbDataParameter.cs
+System.Data/IDbTransaction.cs
+System.Data/InRowChangingEventException.cs
+System.Data/InternalDataCollectionBase.cs
+System.Data/InvalidConstraintException.cs
+System.Data/InvalidExpressionException.cs
+System.Data/ISafeDataRecord.cs
+System.Data/IsolationLevel.cs
+System.Data/ITableMapping.cs
+System.Data/ITableMappingCollection.cs
+System.Data/KeyRestrictionBehavior.cs
+System.Data/LoadOption.cs
+System.Data/MappingType.cs
+System.Data/MergeFailedEventArgs.cs
+System.Data/MergeFailedEventHandler.cs
+System.Data/MergeManager.cs
+System.Data/MissingMappingAction.cs
+System.Data/MissingPrimaryKeyException.cs
+System.Data/MissingSchemaAction.cs
+System.Data/Node.cs
+System.Data/NoNullAllowedException.cs
+System.Data/OperationAbortedException.cs
+System.Data/ParameterDirection.cs
+System.Data/PropertyAttributes.cs
+System.Data/PropertyCollection.cs
+System.Data/ReadOnlyException.cs
+System.Data/ResDescriptionAttribute.cs
+System.Data/RowNotInTableException.cs
+System.Data/Rule.cs
+System.Data/SchemaType.cs
+System.Data/SerializationFormat.cs
+System.Data/SchemaSerializationMode.cs
+System.Data/SqlDbType.cs
+System.Data/StateChangeEventArgs.cs
+System.Data/StateChangeEventHandler.cs
+System.Data/StatementCompletedEventArgs.cs
+System.Data/StatementCompletedEventHandler.cs
+System.Data/StatementType.cs
+System.Data/StrongTypingException.cs
+System.Data/SyntaxErrorException.cs
+../../build/common/MonoTODOAttribute.cs
+System.Data/TableAdapterSchemaInfo.cs
+System.Data/TypeDataSetGeneratorException.cs
+System.Data/UniqueConstraint.cs
+System.Data/UpdateRowSource.cs
+System.Data/UpdateStatus.cs
+System.Data/VersionNotFoundException.cs
+System.Data/XmlDataInferenceLoader.cs
+System.Data/XmlHelper.cs
+System.Data/XmlDataReader.cs
+System.Data/XmlReadMode.cs
+System.Data/XmlWriteMode.cs
+System.Data/XmlConstants.cs
+System.Data/XmlDiffLoader.cs
+System.Data.Common/CatalogLocation.cs
+System.Data.Common/ComparerFactory.cs
+System.Data.Common/DataAdapter.cs
+System.Data.Common/DataColumnMappingCollection.cs
+System.Data.Common/DataColumnMapping.cs
+System.Data.Common/DataColumnMappingConverter.cs
+System.Data.Common/DataContainer.cs
+System.Data.Common/DataTableMappingCollection.cs
+System.Data.Common/DataTableMapping.cs
+System.Data.Common/DataTableMappingConverter.cs
+System.Data.Common/DbCommandBuilder.cs
+System.Data.Common/DbConnectionStringBuilder.cs
+System.Data.Common/DbConnectionStringBuilderHelper.cs
+System.Data.Common/DbCommand.cs
+System.Data.Common/DbConnection.cs
+System.Data.Common/DbConnectionOptions.cs
+System.Data.Common/DbConnectionString.cs
+System.Data.Common/DbDataAdapter.cs
+System.Data.Common/DbDataPermissionAttribute.cs
+System.Data.Common/DbDataPermission.cs
+System.Data.Common/DbDataReader.cs
+System.Data.Common/DbDataRecord.cs
+System.Data.Common/DbDataSourceEnumerator.cs
+System.Data.Common/DbEnumerator.cs
+System.Data.Common/DbException.cs
+System.Data.Common/DbMetaDataCollectionNames.cs
+System.Data.Common/DbMetaDataColumnNames.cs
+System.Data.Common/DbParameterCollection.cs
+System.Data.Common/DbParameter.cs
+System.Data.Common/DbProviderFactory.cs
+System.Data.Common/DbProviderSpecificTypePropertyAttribute.cs
+System.Data.Common/DbTable.cs
+System.Data.Common/DbTransaction.cs
+System.Data.Common/DbTypes.cs
+System.Data.Common/ExceptionHelper.cs
+System.Data.Common/FieldNameLookup.cs
+System.Data.Common/GroupByBehavior.cs
+System.Data.Common/IdentifierCase.cs
+System.Data.Common/Index.cs
+System.Data.Common/Key.cs
+System.Data.Common/PermissionHelper.cs
+System.Data.Common/RecordCache.cs
+System.Data.Common/RowUpdatedEventArgs.cs
+System.Data.Common/RowUpdatingEventArgs.cs
+System.Data.Common/SchemaInfo.cs
+System.Data.Common/SchemaTableColumn.cs
+System.Data.Common/SchemaTableOptionalColumn.cs
+System.Data.Common/SupportedJoinOperators.cs
+System.Data.SqlTypes/INullable.cs
+System.Data.SqlTypes/SqlBinary.cs
+System.Data.SqlTypes/SqlBoolean.cs
+System.Data.SqlTypes/SqlByte.cs
+System.Data.SqlTypes/SqlBytes.cs
+System.Data.SqlTypes/SqlChars.cs
+System.Data.SqlTypes/SqlCompareOptions.cs
+System.Data.SqlTypes/SqlDateTime.cs
+System.Data.SqlTypes/SqlDecimal.cs
+System.Data.SqlTypes/SqlDouble.cs
+System.Data.SqlTypes/SqlGuid.cs
+System.Data.SqlTypes/SqlInt16.cs
+System.Data.SqlTypes/SqlInt32.cs
+System.Data.SqlTypes/SqlInt64.cs
+System.Data.SqlTypes/SqlMoney.cs
+System.Data.SqlTypes/SqlNullValueException.cs
+System.Data.SqlTypes/SqlSingle.cs
+System.Data.SqlTypes/SqlString.cs
+System.Data.SqlTypes/SqlTruncateException.cs
+System.Data.SqlTypes/SqlTypeException.cs
+System.Data.SqlTypes/StorageState.cs
+System.Data.SqlTypes/SqlAlreadyFilledException.cs
+System.Data.SqlTypes/SqlNotFilledException.cs
+System.Data.SqlTypes/SqlXml.cs
+System.Data.Sql/SqlDataSourceEnumerator.cs
+System.Data.Sql/SqlNotificationRequest.cs
+Microsoft.SqlServer.Server/Format.cs
+Microsoft.SqlServer.Server/DataAccessKind.cs
+Microsoft.SqlServer.Server/IBinarySerialize.cs
+Microsoft.SqlServer.Server/InvalidUdtException.cs
+Microsoft.SqlServer.Server/SqlFunctionAttribute.cs
+Microsoft.SqlServer.Server/SqlMetaData.cs
+Microsoft.SqlServer.Server/SqlMethodAttribute.cs
+Microsoft.SqlServer.Server/SqlUserDefinedAggregateAttribute.cs
+Microsoft.SqlServer.Server/SqlUserDefinedTypeAttribute.cs
+Microsoft.SqlServer.Server/SystemDataAccessKind.cs
+Microsoft.SqlServer.Server/SqlFacetAttribute.cs
+Microsoft.SqlServer.Server/TriggerAction.cs
+Microsoft.SqlServer.Server/SqlTriggerContext.cs
+Microsoft.SqlServer.Server/SqlProcedureAttribute.cs
+Microsoft.SqlServer.Server/SqlTriggerAttribute.cs
+System.Data.SqlClient/SqlNotificationType.cs
+System.Data.SqlClient/SqlNotificationInfo.cs
+System.Data.SqlClient/SqlNotificationSource.cs
+System.Data.SqlClient/SqlAsyncState.cs
+System.Data.SqlClient/SqlAsyncResult.cs
+System.Data.SqlClient/SqlClientMetaDataCollectionNames.cs
+System.Data.SqlClient/SqlClientPermission.cs
+System.Data.SqlClient/SqlClientPermissionAttribute.cs
+System.Data.SqlClient/SqlCommand.cs
+System.Data.SqlClient/SqlCommandBuilder.cs
+System.Data.SqlClient/SqlConnection.cs
+System.Data.SqlClient/SqlConnectionStringBuilder.cs
+System.Data.SqlClient/SqlDataAdapter.cs
+System.Data.SqlClient/SqlDataReader.cs
+System.Data.SqlClient/SqlDataSourceConverter.cs
+System.Data.SqlClient/SqlDependency.cs
+System.Data.SqlClient/SqlError.cs
+System.Data.SqlClient/SqlErrorCollection.cs
+System.Data.SqlClient/SqlException.cs
+System.Data.SqlClient/SqlInfoMessageEventArgs.cs
+System.Data.SqlClient/SqlInfoMessageEventHandler.cs
+System.Data.SqlClient/SqlInitialCatalogConverter.cs
+System.Data.SqlClient/NetworkLibraryConverter.cs
+System.Data.SqlClient/SqlParameter.cs
+System.Data.SqlClient/SqlParameterCollection.cs
+System.Data.SqlClient/SqlParameterConverter.cs
+System.Data.SqlClient/SqlRowUpdatedEventArgs.cs
+System.Data.SqlClient/SqlRowUpdatedEventHandler.cs
+System.Data.SqlClient/SqlRowUpdatingEventArgs.cs
+System.Data.SqlClient/SqlRowUpdatingEventHandler.cs
+System.Data.SqlClient/SqlTransaction.cs
+System.Data.SqlClient/SqlXmlTextReader.cs
+System.Data.SqlClient/SQLDebugging.cs
+System.Data.SqlClient/SqlClientFactory.cs
+System.Data.SqlClient/SqlBulkCopy.cs
+System.Data.SqlClient/SqlBulkCopyOptions.cs
+System.Data.SqlClient/SqlBulkCopyColumnMapping.cs
+System.Data.SqlClient/SqlBulkCopyColumnMappingCollection.cs
+System.Data.SqlClient/SqlRowsCopiedEventHandler.cs
+System.Data.SqlClient/SqlRowsCopiedEventArgs.cs
+System.Data.SqlClient/SqlNotificationEventArgs.cs
+System.Data.SqlClient/OnChangeEventHandler.cs
+System.Data/XmlDataLoader.cs
+System.Data/XmlSchemaDataImporter.cs
+System.Data/XmlSchemaWriter.cs
+System.Data/XmlTableWriter.cs
+System.Xml/XmlDataDocument.cs
+Mono.Data.SqlExpressions/Tokenizer.cs
+Mono.Data.SqlExpressions/Numeric.cs
+Mono.Data.SqlExpressions/Expressions.cs
+Mono.Data.SqlExpressions/Literal.cs
+Mono.Data.SqlExpressions/ColumnReference.cs
+Mono.Data.SqlExpressions/ArithmeticExpressions.cs
+Mono.Data.SqlExpressions/BooleanExpressions.cs
+Mono.Data.SqlExpressions/Comparison.cs
+Mono.Data.SqlExpressions/StringFunctions.cs
+Mono.Data.SqlExpressions/Functions.cs
+Mono.Data.SqlExpressions/Like.cs
+Mono.Data.SqlExpressions/In.cs
+Mono.Data.SqlExpressions/Aggregation.cs
--- /dev/null
+#include mobile_System.Data.dll.sources
-Assembly/AssemblyInfo.cs
-../../build/common/Consts.cs.in
-../../build/common/Locale.cs
-System.Data/AcceptRejectRule.cs
-System.Data/ColumnTypeConverter.cs
-System.Data/CommandBehavior.cs
-System.Data/CommandType.cs
-System.Data/ConnectionState.cs
-System.Data/ConflictOption.cs
-System.Data/Constraint.cs
-System.Data/ConstraintCollection.cs
-System.Data/ConstraintConverter.cs
-System.Data/ConstraintException.cs
-System.Data/DataCategoryAttribute.cs
-System.Data/DataColumn.cs
-System.Data/DataColumnChangeEventArgs.cs
-System.Data/DataColumnChangeEventHandler.cs
-System.Data/DataColumnCollection.cs
-System.Data/DataColumnPropertyDescriptor.cs
-System.Data/DataException.cs
-System.Data/RelatedDataView.cs
-System.Data/RelationshipConverter.cs
-System.Data/DataRelation.cs
-System.Data/DataRelationCollection.cs
-System.Data/DataRelationPropertyDescriptor.cs
-System.Data/DataRow.cs
-System.Data/DataRowAction.cs
-System.Data/DataRowBuilder.cs
-System.Data/DataRowChangeEventArgs.cs
-System.Data/DataRowChangeEventHandler.cs
-System.Data/DataRowCollection.cs
-System.Data/DataRowState.cs
-System.Data/DataRowVersion.cs
-System.Data/DataRowView.cs
-System.Data/DataSet.cs
-System.Data/DataSetDateTime.cs
-System.Data/DataSysDescriptionAttribute.cs
-System.Data/DataTable.cs
-System.Data/DataTableCollection.cs
-System.Data/DataTableClearEventArgs.cs
-System.Data/DataTableClearEventHandler.cs
-System.Data/DataTableTypeConverter.cs
-System.Data/DataTablePropertyDescriptor.cs
-System.Data/DataTableReader.cs
-System.Data/DataTableNewRowEventArgs.cs
-System.Data/DataTableNewRowEventHandler.cs
-System.Data/DataView.cs
-System.Data/DataViewManager.cs
-System.Data/DataViewManagerListItemTypeDescriptor.cs
-System.Data/DataViewRowState.cs
-System.Data/DataViewSetting.cs
-System.Data/DataViewSettingCollection.cs
-System.Data/DBConcurrencyException.cs
-System.Data/DbType.cs
-System.Data/DefaultValueTypeConverter.cs
-System.Data/DeletedRowInaccessibleException.cs
-System.Data/DuplicateNameException.cs
-System.Data/EvaluateException.cs
-System.Data/FillErrorEventArgs.cs
-System.Data/FillErrorEventHandler.cs
-System.Data/ForeignKeyConstraint.cs
-System.Data/IColumnMapping.cs
-System.Data/IColumnMappingCollection.cs
-System.Data/IDataAdapter.cs
-System.Data/IDataParameter.cs
-System.Data/IDataParameterCollection.cs
-System.Data/IDataReader.cs
-System.Data/IDataRecord.cs
-System.Data/IDbCommand.cs
-System.Data/IDbConnection.cs
-System.Data/IDbDataAdapter.cs
-System.Data/IDbDataParameter.cs
-System.Data/IDbTransaction.cs
-System.Data/InRowChangingEventException.cs
-System.Data/InternalDataCollectionBase.cs
-System.Data/InvalidConstraintException.cs
-System.Data/InvalidExpressionException.cs
-System.Data/ISafeDataRecord.cs
-System.Data/IsolationLevel.cs
-System.Data/ITableMapping.cs
-System.Data/ITableMappingCollection.cs
-System.Data/KeyRestrictionBehavior.cs
-System.Data/LoadOption.cs
-System.Data/MappingType.cs
-System.Data/MergeFailedEventArgs.cs
-System.Data/MergeFailedEventHandler.cs
-System.Data/MergeManager.cs
-System.Data/MissingMappingAction.cs
-System.Data/MissingPrimaryKeyException.cs
-System.Data/MissingSchemaAction.cs
-System.Data/Node.cs
-System.Data/NoNullAllowedException.cs
-System.Data/OperationAbortedException.cs
-System.Data/ParameterDirection.cs
-System.Data/PropertyAttributes.cs
-System.Data/PropertyCollection.cs
-System.Data/ReadOnlyException.cs
-System.Data/ResDescriptionAttribute.cs
-System.Data/RowNotInTableException.cs
-System.Data/Rule.cs
-System.Data/SchemaType.cs
-System.Data/SerializationFormat.cs
-System.Data/SchemaSerializationMode.cs
-System.Data/SqlDbType.cs
-System.Data/StateChangeEventArgs.cs
-System.Data/StateChangeEventHandler.cs
-System.Data/StatementCompletedEventArgs.cs
-System.Data/StatementCompletedEventHandler.cs
-System.Data/StatementType.cs
-System.Data/StrongTypingException.cs
-System.Data/SyntaxErrorException.cs
-../../build/common/MonoTODOAttribute.cs
-System.Data/TableAdapterSchemaInfo.cs
-System.Data/TypeDataSetGeneratorException.cs
-System.Data/UniqueConstraint.cs
-System.Data/UpdateRowSource.cs
-System.Data/UpdateStatus.cs
-System.Data/VersionNotFoundException.cs
-System.Data/XmlDataInferenceLoader.cs
-System.Data/XmlHelper.cs
-System.Data/XmlDataReader.cs
-System.Data/XmlReadMode.cs
-System.Data/XmlWriteMode.cs
-System.Data/XmlConstants.cs
-System.Data/XmlDiffLoader.cs
-System.Data.Common/CatalogLocation.cs
-System.Data.Common/ComparerFactory.cs
-System.Data.Common/DataAdapter.cs
-System.Data.Common/DataColumnMappingCollection.cs
-System.Data.Common/DataColumnMapping.cs
-System.Data.Common/DataColumnMappingConverter.cs
-System.Data.Common/DataContainer.cs
-System.Data.Common/DataTableMappingCollection.cs
-System.Data.Common/DataTableMapping.cs
-System.Data.Common/DataTableMappingConverter.cs
-System.Data.Common/DbCommandBuilder.cs
-System.Data.Common/DbConnectionStringBuilder.cs
-System.Data.Common/DbConnectionStringBuilderHelper.cs
-System.Data.Common/DbCommand.cs
-System.Data.Common/DbConnection.cs
-System.Data.Common/DbConnectionOptions.cs
-System.Data.Common/DbConnectionString.cs
-System.Data.Common/DbDataAdapter.cs
-System.Data.Common/DbDataPermissionAttribute.cs
-System.Data.Common/DbDataPermission.cs
-System.Data.Common/DbDataReader.cs
-System.Data.Common/DbDataRecord.cs
-System.Data.Common/DbDataSourceEnumerator.cs
-System.Data.Common/DbEnumerator.cs
-System.Data.Common/DbException.cs
-System.Data.Common/DbMetaDataCollectionNames.cs
-System.Data.Common/DbMetaDataColumnNames.cs
-System.Data.Common/DbParameterCollection.cs
-System.Data.Common/DbParameter.cs
-System.Data.Common/DbProviderFactory.cs
-System.Data.Common/DbProviderSpecificTypePropertyAttribute.cs
-System.Data.Common/DbTable.cs
-System.Data.Common/DbTransaction.cs
-System.Data.Common/DbTypes.cs
-System.Data.Common/ExceptionHelper.cs
-System.Data.Common/FieldNameLookup.cs
-System.Data.Common/GroupByBehavior.cs
-System.Data.Common/IdentifierCase.cs
-System.Data.Common/Index.cs
-System.Data.Common/Key.cs
-System.Data.Common/PermissionHelper.cs
-System.Data.Common/RecordCache.cs
-System.Data.Common/RowUpdatedEventArgs.cs
-System.Data.Common/RowUpdatingEventArgs.cs
-System.Data.Common/SchemaInfo.cs
-System.Data.Common/SchemaTableColumn.cs
-System.Data.Common/SchemaTableOptionalColumn.cs
-System.Data.Common/SupportedJoinOperators.cs
-System.Data.SqlTypes/INullable.cs
-System.Data.SqlTypes/SqlBinary.cs
-System.Data.SqlTypes/SqlBoolean.cs
-System.Data.SqlTypes/SqlByte.cs
-System.Data.SqlTypes/SqlBytes.cs
-System.Data.SqlTypes/SqlChars.cs
-System.Data.SqlTypes/SqlCompareOptions.cs
-System.Data.SqlTypes/SqlDateTime.cs
-System.Data.SqlTypes/SqlDecimal.cs
-System.Data.SqlTypes/SqlDouble.cs
-System.Data.SqlTypes/SqlGuid.cs
-System.Data.SqlTypes/SqlInt16.cs
-System.Data.SqlTypes/SqlInt32.cs
-System.Data.SqlTypes/SqlInt64.cs
-System.Data.SqlTypes/SqlMoney.cs
-System.Data.SqlTypes/SqlNullValueException.cs
-System.Data.SqlTypes/SqlSingle.cs
-System.Data.SqlTypes/SqlString.cs
-System.Data.SqlTypes/SqlTruncateException.cs
-System.Data.SqlTypes/SqlTypeException.cs
-System.Data.SqlTypes/StorageState.cs
-System.Data.SqlTypes/SqlAlreadyFilledException.cs
-System.Data.SqlTypes/SqlNotFilledException.cs
-System.Data.SqlTypes/SqlXml.cs
-System.Data.Sql/SqlDataSourceEnumerator.cs
-System.Data.Sql/SqlNotificationRequest.cs
-Microsoft.SqlServer.Server/Format.cs
-Microsoft.SqlServer.Server/DataAccessKind.cs
-Microsoft.SqlServer.Server/IBinarySerialize.cs
-Microsoft.SqlServer.Server/InvalidUdtException.cs
-Microsoft.SqlServer.Server/SqlFunctionAttribute.cs
-Microsoft.SqlServer.Server/SqlMetaData.cs
-Microsoft.SqlServer.Server/SqlMethodAttribute.cs
-Microsoft.SqlServer.Server/SqlUserDefinedAggregateAttribute.cs
-Microsoft.SqlServer.Server/SqlUserDefinedTypeAttribute.cs
-Microsoft.SqlServer.Server/SystemDataAccessKind.cs
-Microsoft.SqlServer.Server/SqlFacetAttribute.cs
-Microsoft.SqlServer.Server/TriggerAction.cs
-Microsoft.SqlServer.Server/SqlTriggerContext.cs
-Microsoft.SqlServer.Server/SqlProcedureAttribute.cs
-Microsoft.SqlServer.Server/SqlTriggerAttribute.cs
-System.Data.SqlClient/SqlNotificationType.cs
-System.Data.SqlClient/SqlNotificationInfo.cs
-System.Data.SqlClient/SqlNotificationSource.cs
-System.Data.SqlClient/SqlAsyncState.cs
-System.Data.SqlClient/SqlAsyncResult.cs
-System.Data.SqlClient/SqlClientMetaDataCollectionNames.cs
-System.Data.SqlClient/SqlClientPermission.cs
-System.Data.SqlClient/SqlClientPermissionAttribute.cs
-System.Data.SqlClient/SqlCommand.cs
-System.Data.SqlClient/SqlCommandBuilder.cs
-System.Data.SqlClient/SqlConnection.cs
-System.Data.SqlClient/SqlConnectionStringBuilder.cs
-System.Data.SqlClient/SqlDataAdapter.cs
-System.Data.SqlClient/SqlDataReader.cs
-System.Data.SqlClient/SqlDataSourceConverter.cs
-System.Data.SqlClient/SqlDependency.cs
-System.Data.SqlClient/SqlError.cs
-System.Data.SqlClient/SqlErrorCollection.cs
-System.Data.SqlClient/SqlException.cs
-System.Data.SqlClient/SqlInfoMessageEventArgs.cs
-System.Data.SqlClient/SqlInfoMessageEventHandler.cs
-System.Data.SqlClient/SqlInitialCatalogConverter.cs
-System.Data.SqlClient/NetworkLibraryConverter.cs
-System.Data.SqlClient/SqlParameter.cs
-System.Data.SqlClient/SqlParameterCollection.cs
-System.Data.SqlClient/SqlParameterConverter.cs
-System.Data.SqlClient/SqlRowUpdatedEventArgs.cs
-System.Data.SqlClient/SqlRowUpdatedEventHandler.cs
-System.Data.SqlClient/SqlRowUpdatingEventArgs.cs
-System.Data.SqlClient/SqlRowUpdatingEventHandler.cs
-System.Data.SqlClient/SqlTransaction.cs
-System.Data.SqlClient/SqlXmlTextReader.cs
-System.Data.SqlClient/SQLDebugging.cs
-System.Data.SqlClient/SqlClientFactory.cs
-System.Data.SqlClient/SqlBulkCopy.cs
-System.Data.SqlClient/SqlBulkCopyOptions.cs
-System.Data.SqlClient/SqlBulkCopyColumnMapping.cs
-System.Data.SqlClient/SqlBulkCopyColumnMappingCollection.cs
-System.Data.SqlClient/SqlRowsCopiedEventHandler.cs
-System.Data.SqlClient/SqlRowsCopiedEventArgs.cs
-System.Data.SqlClient/SqlNotificationEventArgs.cs
-System.Data.SqlClient/OnChangeEventHandler.cs
-System.Data/XmlDataLoader.cs
-System.Data/XmlSchemaDataImporter.cs
-System.Data/XmlSchemaWriter.cs
-System.Data/XmlTableWriter.cs
-System.Xml/XmlDataDocument.cs
-Mono.Data.SqlExpressions/Tokenizer.cs
-Mono.Data.SqlExpressions/Numeric.cs
-Mono.Data.SqlExpressions/Expressions.cs
-Mono.Data.SqlExpressions/Literal.cs
-Mono.Data.SqlExpressions/ColumnReference.cs
-Mono.Data.SqlExpressions/ArithmeticExpressions.cs
-Mono.Data.SqlExpressions/BooleanExpressions.cs
-Mono.Data.SqlExpressions/Comparison.cs
-Mono.Data.SqlExpressions/StringFunctions.cs
-Mono.Data.SqlExpressions/Functions.cs
-Mono.Data.SqlExpressions/Like.cs
-Mono.Data.SqlExpressions/In.cs
-Mono.Data.SqlExpressions/Aggregation.cs
+#include mobile_System.Data.dll.sources
string clrns = ns.StartsWith (dnsb, StringComparison.Ordinal) ? ns.Substring (dnsb.Length) : ns;
foreach (var ass in AppDomain.CurrentDomain.GetAssemblies ()) {
- foreach (var t in ass.GetTypes ()) {
+ Type [] types;
+
+#if MOONLIGHT
+ try {
+ types = ass.GetTypes ();
+ } catch (System.Reflection.ReflectionTypeLoadException rtle) {
+ types = rtle.Types;
+ }
+#else
+ types = ass.GetTypes ();
+#endif
+ if (types == null)
+ continue;
+
+ foreach (var t in types) {
// there can be null entries or exception throw to access the attribute -
// at least when some referenced assemblies could not be loaded (affects moonlight)
if (t == null)
--- /dev/null
+#include moonlight_raw_System.Runtime.Serialization.dll.sources
+System.Xml/OnXmlDictionaryReaderClose.cs
--- /dev/null
+#include mobile_System.Runtime.Serialization.dll.sources
-#include moonlight_raw_System.Runtime.Serialization.dll.sources
-System.Xml/OnXmlDictionaryReaderClose.cs
+#include mobile_System.Runtime.Serialization.dll.sources
protected override void OnInitializeAndValidate (ChannelEndpointElement channelEndpointElement)
{
- throw new NotImplementedException ();
+ // It seems to do nothing.
}
protected override void OnInitializeAndValidate (ServiceEndpointElement serviceEndpointElement)
{
- throw new NotImplementedException ();
+ // It seems to do nothing.
}
}
}
protected override BindingElement CreateBindingElement ()
{
- throw new NotImplementedException ();
+ var be = new DiscoveryClientBindingElement ();
+ ApplyConfiguration (be);
+ return be;
}
protected override void InitializeFrom (BindingElement bindingElement)
{
+ if (bindingElement == null)
+ throw new ArgumentNullException ("bindingElement");
+ if (DiscoveryEndpoint == null)
+ throw new ArgumentNullException ("'endpoint' configuration element is missing.");
+ var be = (DiscoveryClientBindingElement) bindingElement;
+
+ base.InitializeFrom (be);
+
+ if (be.FindCriteria != null)
+ FindCriteria.InitializeFrom (be.FindCriteria);
+
+ // FIXME: initialize DiscoveryEndpoint
throw new NotImplementedException ();
}
}
protected override ConfigurationPropertyCollection Properties {
get { return properties; }
}
-
+
protected override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
{
- throw new NotImplementedException ();
+ if (contractDescription == null)
+ throw new ArgumentNullException ("contractDescription");
+ var ret = new DiscoveryEndpoint (DiscoveryVersion, DiscoveryMode) { MaxResponseDelay = this.MaxResponseDelay };
+ if (ret.Contract.ContractType != contractDescription.ContractType)
+ throw new ArgumentException ("The argument contractDescription does not represent the expected Discovery contract");
+ return ret;
}
-
+
protected override void InitializeFrom (ServiceEndpoint endpoint)
{
- throw new NotImplementedException ();
+ if (endpoint == null)
+ throw new ArgumentNullException ("endpoint");
+ var de = (DiscoveryEndpoint) endpoint;
+ DiscoveryVersion = de.DiscoveryVersion;
+ MaxResponseDelay = de.MaxResponseDelay;
}
protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement serviceEndpointElement)
{
- throw new NotImplementedException ();
+ if (endpoint == null)
+ throw new ArgumentNullException ("endpoint");
+ var de = (DiscoveryEndpoint) endpoint;
+ if (!de.DiscoveryVersion.Equals (DiscoveryVersion))
+ throw new ArgumentException ("Argument DiscoveryEndpoint is initialized with different DiscoveryVersion");
+ de.MaxResponseDelay = MaxResponseDelay;
+ de.Address = serviceEndpointElement.CreateEndpointAddress (); // it depends on InternalVisibleTo(System.ServiceModel)
+ de.Binding = ConfigUtil.CreateBinding (serviceEndpointElement.Binding, serviceEndpointElement.BindingConfiguration); // it depends on InternalVisibleTo(System.ServiceModel)
}
-
+
protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)
{
- throw new NotImplementedException ();
+ if (endpoint == null)
+ throw new ArgumentNullException ("endpoint");
+ var de = (DiscoveryEndpoint) endpoint;
+ if (!de.DiscoveryVersion.Equals (DiscoveryVersion))
+ throw new ArgumentException ("Argument AnnouncementEndpoint is initialized with different DiscoveryVersion");
+ de.MaxResponseDelay = MaxResponseDelay;
+ de.Address = serviceEndpointElement.CreateEndpointAddress (); // it depends on InternalVisibleTo(System.ServiceModel)
+ de.Binding = ConfigUtil.CreateBinding (serviceEndpointElement.Binding, serviceEndpointElement.BindingConfiguration); // it depends on InternalVisibleTo(System.ServiceModel)
}
protected override void OnInitializeAndValidate (ChannelEndpointElement channelEndpointElement)
{
- throw new NotImplementedException ();
+ // It seems to do nothing.
}
protected override void OnInitializeAndValidate (ServiceEndpointElement channelEndpointElement)
{
- throw new NotImplementedException ();
+ // It seems to do nothing.
}
}
}
{
}
+ private bool CanConvert (Type type)
+ {
+ if (type == typeof (string))
+ return true;
+ if (type == typeof (DiscoveryVersion))
+ return true;
+ return false;
+ }
+
public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
{
- throw new NotImplementedException ();
+ if (sourceType == null)
+ throw new ArgumentNullException ("sourceType");
+
+ return CanConvert (sourceType);
}
public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
{
- throw new NotImplementedException ();
+ if (destinationType == null)
+ return false;
+
+ return CanConvert (destinationType);
}
public override object ConvertFrom (ITypeDescriptorContext context, CultureInfo culture, object value)
{
- throw new NotImplementedException ();
+ if (value == null)
+ throw new ArgumentNullException ("value");
+
+ if (!CanConvertFrom (context, value.GetType ()))
+ throw new NotSupportedException ("Cannot convert from value.");
+
+ if (value is DiscoveryVersion)
+ return value;
+
+ string s = (value as string);
+ if (s != null) {
+ switch (s) {
+ case "WSDiscovery11":
+ return DiscoveryVersion.WSDiscovery11;
+ case "WSDiscoveryApril2005":
+ return DiscoveryVersion.WSDiscoveryApril2005;
+ case "WSDiscoveryCD1":
+ return DiscoveryVersion.WSDiscoveryCD1;
+ }
+ throw new NotSupportedException ("Cannot convert from value.");
+ }
+
+ return base.ConvertFrom (context, culture, value);
}
public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
- throw new NotImplementedException ();
+ if (!CanConvertTo (context, destinationType))
+ throw new NotSupportedException (Locale.GetText ("Cannot convert to destination type."));
+
+ var ver = (value as DiscoveryVersion);
+ if (ver != null) {
+ if (destinationType == typeof (DiscoveryVersion))
+ return ver;
+
+ if (destinationType == typeof (string)) {
+ if (ver.Equals (DiscoveryVersion.WSDiscovery11))
+ return "WSDiscovery11";
+ if (ver.Equals (DiscoveryVersion.WSDiscoveryApril2005))
+ return "WSDiscoveryApril2005";
+ if (ver.Equals (DiscoveryVersion.WSDiscoveryCD1))
+ return "WSDiscoveryCD1";
+ }
+ throw new NotSupportedException ("Cannot convert to destination type.");
+ }
+ return base.ConvertTo (context, culture, value, destinationType);
}
}
}
protected override void OnInitializeAndValidate (ChannelEndpointElement channelEndpointElement)
{
- throw new NotImplementedException ();
+ // There seems nothing to do here.
}
protected override void OnInitializeAndValidate (ServiceEndpointElement serviceEndpointElement)
{
- throw new NotImplementedException ();
+ // There seems nothing to do here.
}
}
}
using System.ComponentModel;
using System.Configuration;
using System.ServiceModel.Configuration;
+using System.Xml;
+using System.Xml.Linq;
namespace System.ServiceModel.Discovery.Configuration
{
protected override object CreateBehavior ()
{
- throw new NotImplementedException ();
+ var ret = new EndpointDiscoveryBehavior () { Enabled = this.Enabled };
+ foreach (ContractTypeNameElement ctn in ContractTypeNames)
+ ret.ContractTypeNames.Add (new XmlQualifiedName (ctn.Name, ctn.Namespace));
+ foreach (XmlElementElement xee in Extensions)
+ ret.Extensions.Add (XElement.Load (new XmlNodeReader (xee.XmlElement)));
+ foreach (ScopeElement se in Scopes)
+ ret.Scopes.Add (se.Scope);
+ return ret;
}
}
}
foreach (ScopeElement scope in other.Scopes)
Scopes.Add (new ScopeElement () { Scope = scope.Scope });
}
+
+ internal void InitializeFrom (FindCriteria fc)
+ {
+ foreach (var ctn in fc.ContractTypeNames)
+ ContractTypeNames.Add (new ContractTypeNameElement () { Name = ctn.Name, Namespace = ctn.Namespace});
+ Duration = fc.Duration;
+ var doc = new XmlDocument ();
+ foreach (var ext in fc.Extensions) {
+ var xr = ext.CreateReader ();
+ xr.MoveToContent ();
+ Extensions.Add (new XmlElementElement () { XmlElement = (XmlElement) doc.ReadNode (xr) });
+ }
+ MaxResults = fc.MaxResults;
+ ScopeMatchBy = fc.ScopeMatchBy;
+ foreach (var scope in fc.Scopes)
+ Scopes.Add (new ScopeElement () { Scope = scope});
+ }
}
}
using System;
using System.ComponentModel;
using System.Configuration;
+using System.Linq;
using System.ServiceModel.Configuration;
using System.ServiceModel.Description;
[TypeConverter (typeof (TimeSpanConverter))]
[ConfigurationPropertyAttribute("maxAnnouncementDelay", DefaultValue = "00:00:00.500")]
- public TimeSpan MaxAnnouncementDelay {
+ public new TimeSpan MaxAnnouncementDelay {
get { return (TimeSpan) base [max_announcement_delay]; }
set { base [max_announcement_delay] = value; }
}
protected override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
{
- throw new NotImplementedException ();
+ if (contractDescription == null)
+ throw new ArgumentNullException ("contractDescription");
+ DiscoveryVersion ver = null;
+ switch (contractDescription.ContractType.Namespace) {
+ case DiscoveryVersion.Namespace11:
+ ver = DiscoveryVersion.WSDiscovery11;
+ break;
+ case DiscoveryVersion.NamespaceApril2005:
+ ver = DiscoveryVersion.WSDiscoveryApril2005;
+ break;
+ case DiscoveryVersion.NamespaceCD1:
+ ver = DiscoveryVersion.WSDiscoveryCD1;
+ break;
+ }
+ var ret = new UdpAnnouncementEndpoint (ver, MulticastAddress);
+ ret.MaxAnnouncementDelay = MaxAnnouncementDelay;
+ TransportSettings.ApplyConfiguration (ret.TransportSettings);
+ return ret;
}
protected override void InitializeFrom (ServiceEndpoint endpoint)
{
- throw new NotImplementedException ();
+ if (endpoint == null)
+ throw new ArgumentNullException ("endpoint");
+ var e = (UdpAnnouncementEndpoint) endpoint;
+ MaxAnnouncementDelay = e.MaxAnnouncementDelay;
+ MulticastAddress = e.MulticastAddress;
+ TransportSettings.InitializeFrom (e.TransportSettings);
}
-
+
protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement serviceEndpointElement)
{
- throw new NotImplementedException ();
+ if (endpoint == null)
+ throw new ArgumentNullException ("endpoint");
+ var de = (AnnouncementEndpoint) endpoint;
+ if (!de.DiscoveryVersion.Equals (DiscoveryVersion))
+ throw new ArgumentException ("Argument AnnouncementEndpoint is initialized with different DiscoveryVersion");
+ de.MaxAnnouncementDelay = MaxAnnouncementDelay;
+ de.Address = serviceEndpointElement.CreateEndpointAddress (); // it depends on InternalVisibleTo(System.ServiceModel)
+ var be = (UdpTransportBindingElement) de.Binding.CreateBindingElements ().First (b => b is UdpTransportBindingElement);
+ TransportSettings.ApplyConfiguration (be.TransportSettings);
}
-
+
protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)
{
- throw new NotImplementedException ();
+ if (endpoint == null)
+ throw new ArgumentNullException ("endpoint");
+ var de = (AnnouncementEndpoint) endpoint;
+ if (!de.DiscoveryVersion.Equals (DiscoveryVersion))
+ throw new ArgumentException ("Argument AnnouncementEndpoint is initialized with different DiscoveryVersion");
+ de.MaxAnnouncementDelay = MaxAnnouncementDelay;
+ de.Address = serviceEndpointElement.CreateEndpointAddress (); // it depends on InternalVisibleTo(System.ServiceModel)
+ var be = (UdpTransportBindingElement) de.Binding.CreateBindingElements ().First (b => b is UdpTransportBindingElement);
+ TransportSettings.ApplyConfiguration (be.TransportSettings);
}
-
+
protected override void OnInitializeAndValidate (ChannelEndpointElement channelEndpointElement)
{
- throw new NotImplementedException ();
+ // It seems to do nothing.
+ base.OnInitializeAndValidate (channelEndpointElement);
}
-
+
protected override void OnInitializeAndValidate (ServiceEndpointElement channelEndpointElement)
{
- throw new NotImplementedException ();
+ // It seems to do nothing.
+ base.OnInitializeAndValidate (channelEndpointElement);
}
}
}
using System;
using System.ComponentModel;
using System.Configuration;
+using System.Linq;
using System.ServiceModel.Configuration;
using System.ServiceModel.Description;
}
[ConfigurationProperty ("discoveryMode", DefaultValue = ServiceDiscoveryMode.Adhoc)]
- public ServiceDiscoveryMode DiscoveryMode {
+ public new ServiceDiscoveryMode DiscoveryMode {
get { return (ServiceDiscoveryMode) base [discovery_mode]; }
set { base [discovery_mode] = value; }
}
[TypeConverter (typeof (TimeSpanConverter))]
[ConfigurationProperty ("maxResponseDelay", DefaultValue = "00:00:00.500")]
- public TimeSpan MaxResponseDelay {
+ public new TimeSpan MaxResponseDelay {
get { return (TimeSpan) base [max_response_delay]; }
set { base [max_response_delay] = value; }
}
protected override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
{
- throw new NotImplementedException ();
+ if (contractDescription == null)
+ throw new ArgumentNullException ("contractDescription");
+ DiscoveryVersion ver = null;
+ switch (contractDescription.ContractType.Namespace) {
+ case DiscoveryVersion.Namespace11:
+ ver = DiscoveryVersion.WSDiscovery11;
+ break;
+ case DiscoveryVersion.NamespaceApril2005:
+ ver = DiscoveryVersion.WSDiscoveryApril2005;
+ break;
+ case DiscoveryVersion.NamespaceCD1:
+ ver = DiscoveryVersion.WSDiscoveryCD1;
+ break;
+ }
+ var ret = new UdpDiscoveryEndpoint (ver, MulticastAddress);
+ ret.MaxResponseDelay = MaxResponseDelay;
+ TransportSettings.ApplyConfiguration (ret.TransportSettings);
+ return ret;
}
+
protected override void InitializeFrom (ServiceEndpoint endpoint)
{
- throw new NotImplementedException ();
+ if (endpoint == null)
+ throw new ArgumentNullException ("endpoint");
+ var e = (UdpDiscoveryEndpoint) endpoint;
+ MaxResponseDelay = e.MaxResponseDelay;
+ MulticastAddress = e.MulticastAddress;
+ TransportSettings.InitializeFrom (e.TransportSettings);
}
+
protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement serviceEndpointElement)
{
- throw new NotImplementedException ();
+ if (endpoint == null)
+ throw new ArgumentNullException ("endpoint");
+ var de = (DiscoveryEndpoint) endpoint;
+ if (!de.DiscoveryVersion.Equals (DiscoveryVersion))
+ throw new ArgumentException ("Argument AnnouncementEndpoint is initialized with different DiscoveryVersion");
+ de.MaxResponseDelay = MaxResponseDelay;
+ de.Address = serviceEndpointElement.CreateEndpointAddress (); // it depends on InternalVisibleTo(System.ServiceModel)
+ var be = (UdpTransportBindingElement) de.Binding.CreateBindingElements ().First (b => b is UdpTransportBindingElement);
+ TransportSettings.ApplyConfiguration (be.TransportSettings);
}
+
protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)
{
- throw new NotImplementedException ();
+ if (endpoint == null)
+ throw new ArgumentNullException ("endpoint");
+ var de = (DiscoveryEndpoint) endpoint;
+ if (!de.DiscoveryVersion.Equals (DiscoveryVersion))
+ throw new ArgumentException ("Argument AnnouncementEndpoint is initialized with different DiscoveryVersion");
+ de.MaxResponseDelay = MaxResponseDelay;
+ de.Address = serviceEndpointElement.CreateEndpointAddress (); // it depends on InternalVisibleTo(System.ServiceModel)
+ var be = (UdpTransportBindingElement) de.Binding.CreateBindingElements ().First (b => b is UdpTransportBindingElement);
+ TransportSettings.ApplyConfiguration (be.TransportSettings);
}
+
protected override void OnInitializeAndValidate (ChannelEndpointElement channelEndpointElement)
{
- throw new NotImplementedException ();
+ // It seems to do nothing.
+ base.OnInitializeAndValidate (channelEndpointElement);
}
+
protected override void OnInitializeAndValidate (ServiceEndpointElement channelEndpointElement)
{
- throw new NotImplementedException ();
+ // It seems to do nothing.
+ base.OnInitializeAndValidate (channelEndpointElement);
}
}
}
max_received_message_size = new ConfigurationProperty ("maxReceivedMessageSize", typeof (long), 0xFFE7, null, new LongValidator (0, long.MaxValue), ConfigurationPropertyOptions.None);
max_unicast_retransmit_count = new ConfigurationProperty ("maxUnicastRetransmitCount", typeof (long), 1, null, new IntegerValidator (0, int.MaxValue), ConfigurationPropertyOptions.None);
multicast_interface_id = new ConfigurationProperty ("multicastInterfaceId", typeof (string), null, null, null, ConfigurationPropertyOptions.None);
+ socket_receive_buffer_size = new ConfigurationProperty ("socketReceiveBufferSize", typeof (int), 0x10000, null, new IntegerValidator (0, int.MaxValue), ConfigurationPropertyOptions.None);
ttl = new ConfigurationProperty ("timeToLive", typeof (int), 1, null, new IntegerValidator (0, int.MaxValue), ConfigurationPropertyOptions.None);
properties = new ConfigurationPropertyCollection ();
ConfigurationProperty [] props = {duplicate_message_history_length, max_buffer_pool_size, max_multicast_retransmit_count, max_pending_message_count, max_received_message_size, max_unicast_retransmit_count, multicast_interface_id, ttl};
get { return (int) base [ttl]; }
set { base [ttl] = value; }
}
+
+ protected override ConfigurationPropertyCollection Properties {
+ get { return properties; }
+ }
+
+ internal void ApplyConfiguration (UdpTransportSettings t)
+ {
+ t.DuplicateMessageHistoryLength = DuplicateMessageHistoryLength;
+ t.MaxBufferPoolSize = MaxBufferPoolSize;
+ t.MaxMulticastRetransmitCount = MaxMulticastRetransmitCount;
+ t.MaxPendingMessageCount = MaxPendingMessageCount;
+ t.MaxReceivedMessageSize = MaxReceivedMessageSize;
+ t.MaxUnicastRetransmitCount = MaxUnicastRetransmitCount;
+ t.MulticastInterfaceId = MulticastInterfaceId;
+ t.SocketReceiveBufferSize = SocketReceiveBufferSize;
+ t.TimeToLive = TimeToLive;
+ }
+
+ internal void InitializeFrom (UdpTransportSettings t)
+ {
+ DuplicateMessageHistoryLength = t.DuplicateMessageHistoryLength;
+ MaxBufferPoolSize = t.MaxBufferPoolSize;
+ MaxMulticastRetransmitCount = t.MaxMulticastRetransmitCount;
+ MaxPendingMessageCount = t.MaxPendingMessageCount;
+ MaxReceivedMessageSize = t.MaxReceivedMessageSize;
+ MaxUnicastRetransmitCount = t.MaxUnicastRetransmitCount;
+ MulticastInterfaceId = t.MulticastInterfaceId;
+ SocketReceiveBufferSize = t.SocketReceiveBufferSize;
+ TimeToLive = t.TimeToLive;
+ }
}
}
if (rmp == null)
throw new ArgumentException ("This duplex channel from the channel listener cannot send messages without RemoteEndpointMessageProperty");
var cli = new UdpClient ();
-Console.Error.WriteLine ("Target: " + rmp.Address + ":" + rmp.Port);
cli.Connect (IPAddress.Parse (rmp.Address), rmp.Port);
return cli;
}
-../../build/common/Consts.cs
-../../build/common/Locale.cs
-../../build/common/MonoTODOAttribute.cs
Assembly/AssemblyInfo.cs
System.ServiceModel.Channels/DiscoveryChannelBase.cs
System.ServiceModel.Channels/RequestChannelBase.cs
{
public class DiscoveryMessageSequenceGenerator
{
- static readonly Random rnd = new Random ();
-
public DiscoveryMessageSequenceGenerator ()
: this (AppDomain.CurrentDomain.Id, null) // not sure what should be used for instanceId; multiple instances share the same Id
{
#endif
{
Encoding write_encoding;
- XmlDictionaryReaderQuotas reader_quotas;
WebContentTypeMapper content_type_mapper;
int max_read_pool_size = 0x10000, max_write_pool_size = 0x10000;
throw new ArgumentNullException ("writeEncoding");
WriteEncoding = writeEncoding;
#if !NET_2_1
- reader_quotas = new XmlDictionaryReaderQuotas ();
+ ReaderQuotas = new XmlDictionaryReaderQuotas ();
#endif
}
}
}
- public XmlDictionaryReaderQuotas ReaderQuotas {
- get { return reader_quotas; }
- }
+ public XmlDictionaryReaderQuotas ReaderQuotas { get; internal set; }
public Encoding WriteEncoding {
get { return write_encoding; }
--- /dev/null
+//
+// Author:
+// Atsushi Enomoto <atsushi@ximian.com>
+//
+// Copyright (C) 2010 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.
+//
+#if NET_4_0
+
+using System;
+using System.ComponentModel;
+using System.ServiceModel.Description;
+
+namespace System.ServiceModel.Configuration
+{
+ public class WebHttpEndpointCollectionElement : StandardEndpointCollectionElement<WebHttpEndpoint, WebHttpEndpointElement>
+ {
+ }
+
+}
+
+#endif
--- /dev/null
+//
+// Author:
+// Atsushi Enomoto <atsushi@ximian.com>
+//
+// Copyright (C) 2010 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.
+//
+#if NET_4_0
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Reflection;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Diagnostics;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.MsmqIntegration;
+using System.ServiceModel.PeerResolvers;
+using System.ServiceModel.Security;
+using System.ServiceModel.Web;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Configuration
+{
+ public class WebHttpEndpointElement : StandardEndpointElement
+ {
+ static ConfigurationPropertyCollection properties = new ConfigurationPropertyCollection ();
+
+ static ConfigurationProperty content_type_mapper, cross_domain_script_access_enabled, host_name_comparison_mode, max_buffer_pool_size, max_buffer_size, max_received_message_size, reader_quotas, security, transfer_mode, write_encoding, automatic_format_selection_enabled, default_outgoing_response_format, fault_exception_enabled, help_enabled;
+
+ static WebHttpEndpointElement ()
+ {
+ content_type_mapper = new ConfigurationProperty ("contentTypeMapper", typeof (string), "", null, null, ConfigurationPropertyOptions.None);
+ cross_domain_script_access_enabled = new ConfigurationProperty ("crossDomainScriptAccessEnabled", typeof (bool), false, null, null, ConfigurationPropertyOptions.None);
+ host_name_comparison_mode = new ConfigurationProperty ("hostNameComparisonMode", typeof (HostNameComparisonMode), HostNameComparisonMode.StrongWildcard, null, null, ConfigurationPropertyOptions.None);
+ max_buffer_pool_size = new ConfigurationProperty ("maxBufferPoolSize", typeof (long), 0x80000, null, null, ConfigurationPropertyOptions.None);
+ max_buffer_size = new ConfigurationProperty ("maxBufferSize", typeof (int), 0x10000, null, null, ConfigurationPropertyOptions.None);
+ max_received_message_size = new ConfigurationProperty ("maxReceivedMessageSize", typeof (long), 0x10000, null, null, ConfigurationPropertyOptions.None);
+ reader_quotas = new ConfigurationProperty ("readerQuotas", typeof (XmlDictionaryReaderQuotas), null, null, null, ConfigurationPropertyOptions.None);
+ security = new ConfigurationProperty ("security", typeof (WebHttpSecurity), null, null, null, ConfigurationPropertyOptions.None);
+ transfer_mode = new ConfigurationProperty ("transferMode", typeof (TransferMode), TransferMode.Buffered, null, null, ConfigurationPropertyOptions.None);
+ write_encoding = new ConfigurationProperty ("writeEncoding", typeof (Encoding), "utf-8", new EncodingConverter (), null, ConfigurationPropertyOptions.None);
+ automatic_format_selection_enabled = new ConfigurationProperty ("automaticFormatSelectionEnabled", typeof (bool), false, null, null, ConfigurationPropertyOptions.None);
+ default_outgoing_response_format = new ConfigurationProperty ("defaultOutgoingResponseFormat", typeof (WebMessageFormat), WebMessageFormat.Xml, null, null, ConfigurationPropertyOptions.None);
+ fault_exception_enabled = new ConfigurationProperty ("faultExceptionEnabled", typeof (bool), false, null, null, ConfigurationPropertyOptions.None);
+ help_enabled = new ConfigurationProperty ("helpEnabled", typeof (bool), false, null, null, ConfigurationPropertyOptions.None);
+
+ foreach (var item in new ConfigurationProperty [] {content_type_mapper, cross_domain_script_access_enabled, host_name_comparison_mode, max_buffer_pool_size, max_buffer_size, max_received_message_size, reader_quotas, security, transfer_mode, write_encoding, automatic_format_selection_enabled, default_outgoing_response_format, fault_exception_enabled, help_enabled})
+ properties.Add (item);
+ }
+
+ protected internal override Type EndpointType {
+ get { return typeof (WebHttpEndpoint); }
+ }
+
+ protected override ConfigurationPropertyCollection Properties {
+ get { return properties; }
+ }
+
+ [ConfigurationProperty ("contentTypeMapper", DefaultValue = "")]
+ [StringValidator (MinLength = 0)]
+ public string ContentTypeMapper {
+ get { return (string) this ["contentTypeMapper"]; }
+ set { this ["contentTypeMapper"] = value; }
+ }
+
+ [ConfigurationProperty ("crossDomainScriptAccessEnabled", DefaultValue = false)]
+ public bool CrossDomainScriptAccessEnabled {
+ get { return (bool) this ["crossDomainScriptAccessEnabled"]; }
+ set { this ["crossDomainScriptAccessEnabled"] = value; }
+ }
+
+ [ConfigurationProperty ("hostNameComparisonMode", DefaultValue = HostNameComparisonMode.StrongWildcard)]
+ public HostNameComparisonMode HostNameComparisonMode {
+ get { return (HostNameComparisonMode) this ["hostNameComparisonMode"]; }
+ set { this ["hostNameComparisonMode"] = value; }
+ }
+
+ [LongValidator (MinValue = 0, MaxValue = long.MaxValue, ExcludeRange = false)]
+ [ConfigurationProperty ("maxBufferPoolSize", DefaultValue = 0x80000,
+ Options = ConfigurationPropertyOptions.None)]
+ public long MaxBufferPoolSize {
+ get { return (long) this ["maxBufferPoolSize"]; }
+ set { this ["maxBufferPoolSize"] = value; }
+ }
+
+ [IntegerValidator ( MinValue = 1,
+ MaxValue = int.MaxValue,
+ ExcludeRange = false)]
+ [ConfigurationProperty ("maxBufferSize", DefaultValue = 0x10000,
+ Options = ConfigurationPropertyOptions.None)]
+ public int MaxBufferSize {
+ get { return (int) this ["maxBufferSize"]; }
+ set { this ["maxBufferSize"] = value; }
+ }
+
+ [LongValidator ( MinValue = 1, MaxValue = long.MaxValue, ExcludeRange = false)]
+ [ConfigurationProperty ("maxReceivedMessageSize", DefaultValue = 0x10000,
+ Options = ConfigurationPropertyOptions.None)]
+ public long MaxReceivedMessageSize {
+ get { return (long) this ["maxReceivedMessageSize"]; }
+ set { this ["maxReceivedMessageSize"] = value; }
+ }
+
+ [ConfigurationProperty ("readerQuotas")]
+ public XmlDictionaryReaderQuotasElement ReaderQuotas {
+ get { return (XmlDictionaryReaderQuotasElement) this ["readerQuotas"]; }
+ }
+
+ [ConfigurationProperty ("security")]
+ public WebHttpSecurityElement Security {
+ get { return (WebHttpSecurityElement) this ["security"]; }
+ }
+
+ [ConfigurationProperty ("transferMode", DefaultValue = TransferMode.Buffered)]
+ public TransferMode TransferMode {
+ get { return (TransferMode) this ["transferMode"]; }
+ set { this ["transferMode"] = value; }
+ }
+
+ [TypeConverter (typeof (EncodingConverter))]
+ [ConfigurationProperty ("writeEncoding", DefaultValue = "utf-8")]
+ public Encoding WriteEncoding {
+ get { return (Encoding) this ["writeEncoding"]; }
+ set { this ["writeEncoding"] = value; }
+ }
+
+
+ [ConfigurationProperty ("automaticFormatSelectionEnabled", DefaultValue = false)]
+ public bool AutomaticFormatSelectionEnabled {
+ get { return (bool) this ["automaticFormatSelectionEnabled"]; }
+ set { this ["automaticFormatSelectionEnabled"] = value; }
+ }
+
+ [ConfigurationProperty ("defaultOutgoingResponseFormat", DefaultValue = WebMessageFormat.Xml)]
+ public WebMessageFormat DefaultOutgoingResponseFormat {
+ get { return (WebMessageFormat) this ["defaultOutgoingResponseFormat"]; }
+ set { this ["defaultOutgoingResponseFormat"] = value; }
+ }
+
+ [ConfigurationProperty ("faultExceptionEnabled", DefaultValue = false)]
+ public bool FaultExceptionEnabled {
+ get { return (bool) this ["faultExceptionEnabled"]; }
+ set { this ["faultExceptionEnabled"] = value; }
+ }
+
+ [ConfigurationProperty ("helpEnabled", DefaultValue = false)]
+ public bool HelpEnabled {
+ get { return (bool) this ["helpEnabled"]; }
+ set { this ["helpEnabled"] = value; }
+ }
+
+
+ protected internal override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
+ {
+ throw new NotImplementedException ();
+ }
+
+ protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement serviceEndpointElement)
+ {
+ throw new NotImplementedException ();
+ }
+
+ protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)
+ {
+ throw new NotImplementedException ();
+ }
+
+ protected override void OnInitializeAndValidate (ChannelEndpointElement channelEndpointElement)
+ {
+ throw new NotImplementedException ();
+ }
+
+ protected override void OnInitializeAndValidate (ServiceEndpointElement serviceEndpointElement)
+ {
+ throw new NotImplementedException ();
+ }
+ }
+}
+
+#endif
--- /dev/null
+//
+// Author:
+// Atsushi Enomoto <atsushi@ximian.com>
+//
+// Copyright (C) 2010 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.
+//
+#if NET_4_0
+
+using System;
+using System.ComponentModel;
+using System.ServiceModel.Description;
+
+namespace System.ServiceModel.Configuration
+{
+ public class WebScriptEndpointCollectionElement : StandardEndpointCollectionElement<WebScriptEndpoint, WebScriptEndpointElement>
+ {
+ }
+
+}
+
+#endif
--- /dev/null
+//
+// Author:
+// Atsushi Enomoto <atsushi@ximian.com>
+//
+// Copyright (C) 2010 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.
+//
+#if NET_4_0
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Reflection;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Diagnostics;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.MsmqIntegration;
+using System.ServiceModel.PeerResolvers;
+using System.ServiceModel.Security;
+using System.ServiceModel.Web;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Configuration
+{
+ public class WebScriptEndpointElement : StandardEndpointElement
+ {
+ static ConfigurationPropertyCollection properties = new ConfigurationPropertyCollection ();
+
+ static ConfigurationProperty content_type_mapper, cross_domain_script_access_enabled, host_name_comparison_mode, max_buffer_pool_size, max_buffer_size, max_received_message_size, reader_quotas, security, transfer_mode, write_encoding;
+
+ static WebScriptEndpointElement ()
+ {
+ content_type_mapper = new ConfigurationProperty ("contentTypeMapper", typeof (string), "", null, null, ConfigurationPropertyOptions.None);
+ cross_domain_script_access_enabled = new ConfigurationProperty ("crossDomainScriptAccessEnabled", typeof (bool), false, null, null, ConfigurationPropertyOptions.None);
+ host_name_comparison_mode = new ConfigurationProperty ("hostNameComparisonMode", typeof (HostNameComparisonMode), HostNameComparisonMode.StrongWildcard, null, null, ConfigurationPropertyOptions.None);
+ max_buffer_pool_size = new ConfigurationProperty ("maxBufferPoolSize", typeof (long), 0x80000, null, null, ConfigurationPropertyOptions.None);
+ max_buffer_size = new ConfigurationProperty ("maxBufferSize", typeof (int), 0x10000, null, null, ConfigurationPropertyOptions.None);
+ max_received_message_size = new ConfigurationProperty ("maxReceivedMessageSize", typeof (long), 0x10000, null, null, ConfigurationPropertyOptions.None);
+ reader_quotas = new ConfigurationProperty ("readerQuotas", typeof (XmlDictionaryReaderQuotas), null, null, null, ConfigurationPropertyOptions.None);
+ security = new ConfigurationProperty ("security", typeof (WebHttpSecurity), null, null, null, ConfigurationPropertyOptions.None);
+ transfer_mode = new ConfigurationProperty ("transferMode", typeof (TransferMode), TransferMode.Buffered, null, null, ConfigurationPropertyOptions.None);
+ write_encoding = new ConfigurationProperty ("writeEncoding", typeof (Encoding), "utf-8", new EncodingConverter (), null, ConfigurationPropertyOptions.None);
+
+ foreach (var item in new ConfigurationProperty [] {content_type_mapper, cross_domain_script_access_enabled, host_name_comparison_mode, max_buffer_pool_size, max_buffer_size, max_received_message_size, reader_quotas, security, transfer_mode, write_encoding})
+ properties.Add (item);
+ }
+
+ protected internal override Type EndpointType {
+ get { return typeof (WebScriptEndpoint); }
+ }
+
+ protected override ConfigurationPropertyCollection Properties {
+ get { return properties; }
+ }
+
+ [ConfigurationProperty ("contentTypeMapper", DefaultValue = "")]
+ [StringValidator (MinLength = 0)]
+ public string ContentTypeMapper {
+ get { return (string) this ["contentTypeMapper"]; }
+ set { this ["contentTypeMapper"] = value; }
+ }
+
+ [ConfigurationProperty ("crossDomainScriptAccessEnabled", DefaultValue = false)]
+ public bool CrossDomainScriptAccessEnabled {
+ get { return (bool) this ["crossDomainScriptAccessEnabled"]; }
+ set { this ["crossDomainScriptAccessEnabled"] = value; }
+ }
+
+ [ConfigurationProperty ("hostNameComparisonMode", DefaultValue = HostNameComparisonMode.StrongWildcard)]
+ public HostNameComparisonMode HostNameComparisonMode {
+ get { return (HostNameComparisonMode) this ["hostNameComparisonMode"]; }
+ set { this ["hostNameComparisonMode"] = value; }
+ }
+
+ [LongValidator (MinValue = 0, MaxValue = long.MaxValue, ExcludeRange = false)]
+ [ConfigurationProperty ("maxBufferPoolSize", DefaultValue = 0x80000,
+ Options = ConfigurationPropertyOptions.None)]
+ public long MaxBufferPoolSize {
+ get { return (long) this ["maxBufferPoolSize"]; }
+ set { this ["maxBufferPoolSize"] = value; }
+ }
+
+ [IntegerValidator ( MinValue = 1,
+ MaxValue = int.MaxValue,
+ ExcludeRange = false)]
+ [ConfigurationProperty ("maxBufferSize", DefaultValue = 0x10000,
+ Options = ConfigurationPropertyOptions.None)]
+ public int MaxBufferSize {
+ get { return (int) this ["maxBufferSize"]; }
+ set { this ["maxBufferSize"] = value; }
+ }
+
+ [LongValidator ( MinValue = 1, MaxValue = long.MaxValue, ExcludeRange = false)]
+ [ConfigurationProperty ("maxReceivedMessageSize", DefaultValue = 0x10000,
+ Options = ConfigurationPropertyOptions.None)]
+ public long MaxReceivedMessageSize {
+ get { return (long) this ["maxReceivedMessageSize"]; }
+ set { this ["maxReceivedMessageSize"] = value; }
+ }
+
+ [ConfigurationProperty ("readerQuotas")]
+ public XmlDictionaryReaderQuotasElement ReaderQuotas {
+ get { return (XmlDictionaryReaderQuotasElement) this ["readerQuotas"]; }
+ }
+
+ [ConfigurationProperty ("security")]
+ public WebHttpSecurityElement Security {
+ get { return (WebHttpSecurityElement) this ["security"]; }
+ }
+
+ [ConfigurationProperty ("transferMode", DefaultValue = TransferMode.Buffered)]
+ public TransferMode TransferMode {
+ get { return (TransferMode) this ["transferMode"]; }
+ set { this ["transferMode"] = value; }
+ }
+
+ [TypeConverter (typeof (EncodingConverter))]
+ [ConfigurationProperty ("writeEncoding", DefaultValue = "utf-8")]
+ public Encoding WriteEncoding {
+ get { return (Encoding) this ["writeEncoding"]; }
+ set { this ["writeEncoding"] = value; }
+ }
+
+ protected internal override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
+ {
+ throw new NotImplementedException ();
+ }
+
+ protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement serviceEndpointElement)
+ {
+ throw new NotImplementedException ();
+ }
+
+ protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)
+ {
+ throw new NotImplementedException ();
+ }
+
+ protected override void OnInitializeAndValidate (ChannelEndpointElement channelEndpointElement)
+ {
+ throw new NotImplementedException ();
+ }
+
+ protected override void OnInitializeAndValidate (ServiceEndpointElement serviceEndpointElement)
+ {
+ throw new NotImplementedException ();
+ }
+ }
+}
+
+#endif
DefaultOutgoingResponseFormat = WebMessageFormat.Xml;
}
+#if NET_4_0
+ public virtual bool AutomaticFormatSelectionEnabled { get; set; }
+
+ public virtual bool FaultExceptionEnabled { get; set; }
+
+ public virtual bool HelpEnabled { get; set; }
+#endif
+
public virtual WebMessageBodyStyle DefaultBodyStyle { get; set; }
public virtual WebMessageFormat DefaultOutgoingRequestFormat { get; set; }
--- /dev/null
+//
+// Author:
+// Atsushi Enomoto <atsushi@ximian.com>
+//
+// Copyright (C) 2010 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.
+//
+#if NET_4_0
+using System;
+using System.Collections.ObjectModel;
+using System.Runtime.Serialization;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.Web;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Description
+{
+ [MonoTODO]
+ public class WebHttpEndpoint : WebServiceEndpoint
+ {
+ public WebHttpEndpoint (ContractDescription contract)
+ : this (contract, null)
+ {
+ }
+
+ public WebHttpEndpoint (ContractDescription contract, EndpointAddress address)
+ : base (contract, address)
+ {
+ }
+
+ WebHttpBehavior wb {
+ get {
+ var b = Behaviors.Find<WebHttpBehavior> ();
+ if (b != null)
+ return b;
+ throw new InvalidOperationException ("The preset WebHttpBehavior was unexpectedly removed.");
+ }
+ }
+
+ public bool AutomaticFormatSelectionEnabled {
+ get { return wb.AutomaticFormatSelectionEnabled; }
+ set { wb.AutomaticFormatSelectionEnabled = value; }
+ }
+
+ public WebMessageFormat DefaultOutgoingResponseFormat {
+ get { return wb.DefaultOutgoingResponseFormat; }
+ set { wb.DefaultOutgoingResponseFormat = value; }
+ }
+
+ public bool FaultExceptionEnabled {
+ get { return wb.FaultExceptionEnabled; }
+ set { wb.FaultExceptionEnabled = value; }
+ }
+
+ public bool HelpEnabled {
+ get { return wb.HelpEnabled; }
+ set { wb.HelpEnabled = value; }
+ }
+
+ protected override Type WebEndpointType {
+ get { throw new NotImplementedException (); }
+ }
+ }
+}
+#endif
--- /dev/null
+//
+// Author:
+// Atsushi Enomoto <atsushi@ximian.com>
+//
+// Copyright (C) 2010 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.
+//
+#if NET_4_0
+using System;
+using System.Collections.ObjectModel;
+using System.Runtime.Serialization;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+
+namespace System.ServiceModel.Description
+{
+ [MonoTODO]
+ public class WebScriptEndpoint : WebServiceEndpoint
+ {
+ public WebScriptEndpoint (ContractDescription contract)
+ : this (contract, null)
+ {
+ }
+
+ public WebScriptEndpoint (ContractDescription contract, EndpointAddress address)
+ : base (contract, address)
+ {
+ }
+
+ protected override Type WebEndpointType {
+ get { throw new NotImplementedException (); }
+ }
+ }
+}
+#endif
--- /dev/null
+//
+// Author:
+// Atsushi Enomoto <atsushi@ximian.com>
+//
+// Copyright (C) 2010 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.
+//
+#if NET_4_0
+using System;
+using System.Collections.ObjectModel;
+using System.Runtime.Serialization;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.Web;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Description
+{
+ public abstract class WebServiceEndpoint : ServiceEndpoint
+ {
+ internal WebServiceEndpoint (ContractDescription contract, EndpointAddress address)
+ : base (contract, new WebHttpBinding (), address)
+ {
+ Behaviors.Add (new WebHttpBehavior ());
+ }
+
+ protected abstract Type WebEndpointType { get; }
+
+ WebHttpBinding wbind {
+ get {
+ if (Binding is WebHttpBinding)
+ return (WebHttpBinding) Binding;
+ throw new InvalidOperationException ("Binding on this standard endpoint is not supposed to be overwritten.");
+ }
+ }
+
+ public WebContentTypeMapper ContentTypeMapper {
+ get { return wbind.ContentTypeMapper; }
+ set { wbind.ContentTypeMapper = value; }
+ }
+
+ public bool CrossDomainScriptAccessEnabled {
+ get { return wbind.CrossDomainScriptAccessEnabled; }
+ set { wbind.CrossDomainScriptAccessEnabled = value; }
+ }
+
+ public HostNameComparisonMode HostNameComparisonMode {
+ get { return wbind.HostNameComparisonMode; }
+ set { wbind.HostNameComparisonMode = value; }
+ }
+
+ public long MaxBufferPoolSize {
+ get { return wbind.MaxBufferPoolSize; }
+ set { wbind.MaxBufferPoolSize = value; }
+ }
+
+ public int MaxBufferSize {
+ get { return wbind.MaxBufferSize; }
+ set { wbind.MaxBufferSize = value; }
+ }
+
+ public long MaxReceivedMessageSize {
+ get { return wbind.MaxReceivedMessageSize; }
+ set { wbind.MaxReceivedMessageSize = value; }
+ }
+
+ public XmlDictionaryReaderQuotas ReaderQuotas {
+ get { return wbind.ReaderQuotas; }
+ set { wbind.ReaderQuotas = value; }
+ }
+
+ public WebHttpSecurity Security {
+ get { return wbind.Security; }
+ }
+
+ public TransferMode TransferMode {
+ get { return wbind.TransferMode; }
+ set { wbind.TransferMode = value; }
+ }
+
+ public Encoding WriteEncoding {
+ get { return wbind.WriteEncoding; }
+ set { wbind.WriteEncoding = value; }
+ }
+ }
+}
+#endif
System.ServiceModel.Channels/WebMessageEncodingBindingElementTest.cs
System.ServiceModel.Configuration/WebHttpBindingElementTest.cs
System.ServiceModel.Description/WebHttpBehaviorTest.cs
+System.ServiceModel.Description/WebHttpEndpointTest.cs
System.ServiceModel.Description/WebScriptEnablingBehaviorTest.cs
System.ServiceModel.Dispatcher/JsonQueryStringConverterTest.cs
System.ServiceModel.Dispatcher/QueryStringConverterTest.cs
throw new NotImplementedException ();
}
- XmlDictionaryReaderQuotas quotas;
WebHttpSecurity security = new WebHttpSecurity ();
- Encoding write_encoding = Encoding.UTF8;
HttpTransportBindingElement t;
// This can be changed only using <synchronousReceive> configuration element.
bool receive_synchronously;
+ WebMessageEncodingBindingElement msgenc = new WebMessageEncodingBindingElement ();
public EnvelopeVersion EnvelopeVersion {
get { return EnvelopeVersion.None; }
set { t.BypassProxyOnLocal = value; }
}
+#if NET_4_0
+ [MonoTODO]
+ public bool CrossDomainScriptAccessEnabled { get; set; }
+
+ public WebContentTypeMapper ContentTypeMapper {
+ get { return msgenc.ContentTypeMapper; }
+ set { msgenc.ContentTypeMapper = value; }
+ }
+#endif
+
public HostNameComparisonMode HostNameComparisonMode {
get { return t.HostNameComparisonMode; }
set { t.HostNameComparisonMode = value; }
#if !NET_2_1
public XmlDictionaryReaderQuotas ReaderQuotas {
- get { return quotas; }
- set { quotas = value; }
+ get { return msgenc.ReaderQuotas; }
+ set { msgenc.ReaderQuotas = value; }
}
#endif
}
public Encoding WriteEncoding {
- get { return write_encoding; }
+ get { return msgenc.WriteEncoding; }
set {
if (value == null)
throw new ArgumentNullException ("value");
- write_encoding = value;
+ msgenc.WriteEncoding = value;
}
}
public override BindingElementCollection CreateBindingElements ()
{
- WebMessageEncodingBindingElement m = new WebMessageEncodingBindingElement (WriteEncoding);
-#if !NET_2_1
- if (ReaderQuotas != null)
- ReaderQuotas.CopyTo (m.ReaderQuotas);
-#endif
-
- return new BindingElementCollection (new BindingElement [] { m, t.Clone () });
+ return new BindingElementCollection (new BindingElement [] { msgenc, t.Clone () });
}
#if !NET_2_1
--- /dev/null
+#if NET_4_0
+using System;
+using System.IO;
+using System.Runtime.Serialization;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.Web;
+using System.Text;
+using NUnit.Framework;
+
+namespace MonoTests.System.ServiceModel.Description
+{
+ [TestFixture]
+ public class WebHttpEndpointTest
+ {
+ [Test]
+ public void ReplaceBinding1 ()
+ {
+ var se = new WebHttpEndpoint (ContractDescription.GetContract (typeof (IMetadataExchange)), null);
+ se.Binding = new NetTcpBinding (); // this does not throw exception yet.
+ }
+
+ [Test]
+ [ExpectedException (typeof (InvalidOperationException))]
+ public void ReplaceBinding2 ()
+ {
+ var se = new WebHttpEndpoint (ContractDescription.GetContract (typeof (IMetadataExchange)), null);
+ se.Binding = new NetTcpBinding ();
+ se.WriteEncoding = Encoding.UTF8;
+ }
+ }
+}
+#endif
maxReceivedMessageSize="16384"
proxyAddress="proxy"
writeEncoding="unicode"
- transferMode="streamed">
+ transferMode="Streamed">
<security mode="TransportCredentialOnly">
<transport
clientCredentialType="Basic"
- proxyCredentialType="NTLM"
+ proxyCredentialType="Ntlm"
realm="realm" />
</security>
</binding>
</webHttpBinding>
</bindings>
</system.serviceModel>
-</configuration>
\ No newline at end of file
+</configuration>
System.ServiceModel.Configuration/WebHttpBindingCollectionElement.cs
System.ServiceModel.Configuration/WebHttpBindingElement.cs
System.ServiceModel.Configuration/WebHttpElement.cs
+System.ServiceModel.Configuration/WebHttpEndpointCollectionElement.cs
+System.ServiceModel.Configuration/WebHttpEndpointElement.cs
System.ServiceModel.Configuration/WebHttpSecurityElement.cs
System.ServiceModel.Configuration/WebMessageEncodingElement.cs
System.ServiceModel.Configuration/WebScriptEnablingElement.cs
+System.ServiceModel.Configuration/WebScriptEndpointCollectionElement.cs
+System.ServiceModel.Configuration/WebScriptEndpointElement.cs
System.ServiceModel.Description/WebHttpBehavior.cs
+System.ServiceModel.Description/WebHttpEndpoint.cs
System.ServiceModel.Description/WebScriptEnablingBehavior.cs
+System.ServiceModel.Description/WebScriptEndpoint.cs
+System.ServiceModel.Description/WebServiceEndpoint.cs
System.ServiceModel.Dispatcher/JsonQueryStringConverter.cs
System.ServiceModel.Dispatcher/QueryStringConverter.cs
System.ServiceModel.Dispatcher/WebHttpDispatchOperationSelector.cs
--- /dev/null
+Assembly/AssemblyInfo.cs
+System.Runtime.Serialization.Json/DataContractJsonSerializer.cs
+System.Runtime.Serialization.Json/IXmlJsonReaderInitializer.cs
+System.Runtime.Serialization.Json/IXmlJsonWriterInitializer.cs
+System.Runtime.Serialization.Json/JavaScriptObjectDeserializer.cs
+System.Runtime.Serialization.Json/JavaScriptReader.cs
+System.Runtime.Serialization.Json/JsonReader.cs
+System.Runtime.Serialization.Json/JsonReaderWriterFactory.cs
+System.Runtime.Serialization.Json/JsonSerializationReader.cs
+System.Runtime.Serialization.Json/JsonSerializationWriter.cs
+System.Runtime.Serialization.Json/JsonWriter.cs
+System.Runtime.Serialization.Json/TypeMap.cs
+System.ServiceModel.Channels/WebBodyFormatMessageProperty.cs
+System.ServiceModel.Channels/WebContentFormat.cs
+System.ServiceModel.Channels/WebContentTypeMapper.cs
+System.ServiceModel.Channels/WebMessageEncoder.cs
+System.ServiceModel.Channels/WebMessageEncoderFactory.cs
+System.ServiceModel.Channels/WebMessageEncodingBindingElement.cs
+System.ServiceModel.Description/WebHttpBehavior.cs
+System.ServiceModel.Dispatcher/JsonQueryStringConverter.cs
+System.ServiceModel.Dispatcher/QueryStringConverter.cs
+System.ServiceModel.Dispatcher/WebMessageFormatter.cs
+System.ServiceModel.Web/IncomingWebResponseContext.cs
+System.ServiceModel.Web/OutgoingWebRequestContext.cs
+System.ServiceModel.Web/WebAttributeInfo.cs
+System.ServiceModel.Web/WebChannelFactory.cs
+System.ServiceModel.Web/WebGetAttribute.cs
+System.ServiceModel.Web/WebInvokeAttribute.cs
+System.ServiceModel.Web/WebMessageBodyStyle.cs
+System.ServiceModel.Web/WebMessageFormat.cs
+System.ServiceModel.Web/WebOperationContext.cs
+System.ServiceModel/WebHttpBinding.cs
+System.ServiceModel/WebHttpSecurity.cs
+System.ServiceModel/WebHttpSecurityMode.cs
+System/UriTemplate.cs
+System/UriTemplateEquivalenceComparer.cs
+System/UriTemplateMatch.cs
+System/UriTemplateMatchException.cs
+System/UriTemplateTable.cs
--- /dev/null
+#include mobile_System.ServiceModel.Web.dll.sources
-Assembly/AssemblyInfo.cs
-System.Runtime.Serialization.Json/DataContractJsonSerializer.cs
-System.Runtime.Serialization.Json/IXmlJsonReaderInitializer.cs
-System.Runtime.Serialization.Json/IXmlJsonWriterInitializer.cs
-System.Runtime.Serialization.Json/JavaScriptObjectDeserializer.cs
-System.Runtime.Serialization.Json/JavaScriptReader.cs
-System.Runtime.Serialization.Json/JsonReader.cs
-System.Runtime.Serialization.Json/JsonReaderWriterFactory.cs
-System.Runtime.Serialization.Json/JsonSerializationReader.cs
-System.Runtime.Serialization.Json/JsonSerializationWriter.cs
-System.Runtime.Serialization.Json/JsonWriter.cs
-System.Runtime.Serialization.Json/TypeMap.cs
-System.ServiceModel.Channels/WebBodyFormatMessageProperty.cs
-System.ServiceModel.Channels/WebContentFormat.cs
-System.ServiceModel.Channels/WebContentTypeMapper.cs
-System.ServiceModel.Channels/WebMessageEncoder.cs
-System.ServiceModel.Channels/WebMessageEncoderFactory.cs
-System.ServiceModel.Channels/WebMessageEncodingBindingElement.cs
-System.ServiceModel.Description/WebHttpBehavior.cs
-System.ServiceModel.Dispatcher/JsonQueryStringConverter.cs
-System.ServiceModel.Dispatcher/QueryStringConverter.cs
-System.ServiceModel.Dispatcher/WebMessageFormatter.cs
-System.ServiceModel.Web/IncomingWebResponseContext.cs
-System.ServiceModel.Web/OutgoingWebRequestContext.cs
-System.ServiceModel.Web/WebAttributeInfo.cs
-System.ServiceModel.Web/WebChannelFactory.cs
-System.ServiceModel.Web/WebGetAttribute.cs
-System.ServiceModel.Web/WebInvokeAttribute.cs
-System.ServiceModel.Web/WebMessageBodyStyle.cs
-System.ServiceModel.Web/WebMessageFormat.cs
-System.ServiceModel.Web/WebOperationContext.cs
-System.ServiceModel/WebHttpBinding.cs
-System.ServiceModel/WebHttpSecurity.cs
-System.ServiceModel/WebHttpSecurityMode.cs
-System/UriTemplate.cs
-System/UriTemplateEquivalenceComparer.cs
-System/UriTemplateMatch.cs
-System/UriTemplateMatchException.cs
-System/UriTemplateTable.cs
+#include mobile_System.ServiceModel.Web.dll.sources
using System.Reflection;
using System.Runtime.Serialization;
+namespace System.Runtime.CompilerServices
+{
+ // introduced for silverlight sdk compatibility
+ internal class FriendAccessAllowedAttribute : Attribute
+ {
+ public FriendAccessAllowedAttribute ()
+ {
+ }
+ }
+}
+
namespace System.ServiceModel
{
public class EndpointIdentity {}
LIBRARY = System.ServiceModel.dll
LIB_MCS_FLAGS = \
- /d:USE_DATA_CONTRACT_IMPORTER \
/nowarn:414,169,67,3005,436,219,618 \
/unsafe \
/r:System.dll \
{
HttpChannelFactory<IRequestChannel> source;
- WebRequest web_request;
+ List<WebRequest> web_requests = new List<WebRequest> ();
// Constructor
destination = Via ?? RemoteAddress.Uri;
}
- web_request = HttpWebRequest.Create (destination);
+ var web_request = HttpWebRequest.Create (destination);
+ web_requests.Add (web_request);
+ result.WebRequest = web_request;
web_request.Method = "POST";
web_request.ContentType = Encoder.ContentType;
WebResponse res;
Stream resstr;
try {
- res = web_request.EndGetResponse (result);
+ res = channelResult.WebRequest.EndGetResponse (result);
resstr = res.GetResponseStream ();
} catch (WebException we) {
res = we.Response;
{
ThrowIfDisposedOrNotOpen ();
- HttpChannelRequestAsyncResult result = new HttpChannelRequestAsyncResult (message, timeout, callback, state);
+ HttpChannelRequestAsyncResult result = new HttpChannelRequestAsyncResult (message, timeout, this, callback, state);
BeginProcessRequest (result);
return result;
}
protected override void OnAbort ()
{
- if (web_request != null)
+ foreach (var web_request in web_requests)
web_request.Abort ();
- web_request = null;
+ web_requests.Clear ();
}
// Close
protected override void OnClose (TimeSpan timeout)
{
- if (web_request != null)
- web_request.Abort ();
- web_request = null;
+ OnAbort ();
}
protected override IAsyncResult OnBeginClose (TimeSpan timeout, AsyncCallback callback, object state)
{
- if (web_request != null)
- web_request.Abort ();
- web_request = null;
+ OnAbort ();
return base.OnBeginClose (timeout, callback, state);
}
base.OnEndOpen (result);
}
- class HttpChannelRequestAsyncResult : IAsyncResult
+ class HttpChannelRequestAsyncResult : IAsyncResult, IDisposable
{
public Message Message {
get; private set;
Exception error;
object locker = new object ();
bool is_completed;
+ HttpRequestChannel owner;
- public HttpChannelRequestAsyncResult (Message message, TimeSpan timeout, AsyncCallback callback, object state)
+ public HttpChannelRequestAsyncResult (Message message, TimeSpan timeout, HttpRequestChannel owner, AsyncCallback callback, object state)
{
Message = message;
Timeout = timeout;
+ this.owner = owner;
this.callback = callback;
AsyncState = state;
}
get; set;
}
+ public WebRequest WebRequest { get; set; }
+
public WaitHandle AsyncWaitHandle {
get {
lock (locker) {
lock (locker) {
if (is_completed && wait != null)
wait.Set ();
+ Cleanup ();
}
}
}
if (error != null)
throw error;
}
+
+ public void Dispose ()
+ {
+ Cleanup ();
+ }
+
+ void Cleanup ()
+ {
+ owner.web_requests.Remove (WebRequest);
+ }
}
}
}
static ConfigurationProperty headers;
static ConfigurationProperty identity;
static ConfigurationProperty name;
+#if NET_4_0
+ static ConfigurationProperty endpoint_configuration;
+ static ConfigurationProperty kind;
+#endif
static ChannelEndpointElement ()
{
typeof (string), "", new StringConverter (), null,
ConfigurationPropertyOptions.IsKey);
+#if NET_4_0
+ endpoint_configuration = new ConfigurationProperty ("endpointConfiguration", typeof (string), "", null, new StringValidator (0), ConfigurationPropertyOptions.IsKey);
+ kind = new ConfigurationProperty ("kind", typeof (string), "", null, new StringValidator (0), ConfigurationPropertyOptions.IsKey);
+#endif
+
properties.Add (address);
properties.Add (behavior_configuration);
properties.Add (binding);
properties.Add (headers);
properties.Add (identity);
properties.Add (name);
+
+#if NET_4_0
+ properties.Add (endpoint_configuration);
+ properties.Add (kind);
+#endif
}
public ChannelEndpointElement ()
set { base [name] = value; }
}
+#if NET_4_0
+ [StringValidator (MinLength = 0)]
+ [ConfigurationProperty ("endpointConfiguration", DefaultValue = "", Options = ConfigurationPropertyOptions.IsKey)]
+ public string EndpointConfiguration {
+ get { return (string) base [endpoint_configuration]; }
+ set { base [endpoint_configuration] = value; }
+ }
+
+ [ConfigurationProperty ("kind", DefaultValue = "", Options = ConfigurationPropertyOptions.IsKey)]
+ [StringValidator (MinLength = 0)]
+ public string Kind {
+ get { return (string) base [kind]; }
+ set { base [kind] = value; }
+ }
+#endif
+
protected override ConfigurationPropertyCollection Properties {
get { return properties; }
}
get { return (ExtensionsSection) GetSection ("system.serviceModel/extensions"); }
}
+#if NET_4_0
+ public static ProtocolMappingSection ProtocolMappingSection {
+ get {
+ return (ProtocolMappingSection) GetSection ("system.serviceModel/protocolMapping");
+ }
+ }
+
+ public static StandardEndpointsSection StandardEndpointsSection {
+ get {
+ return (StandardEndpointsSection) GetSection ("system.serviceModel/standardEndpoints");
+ }
+ }
+#endif
+
public static Binding CreateBinding (string binding, string bindingConfiguration)
{
BindingCollectionElement section = ConfigUtil.BindingsSection [binding];
return b;
}
+#if NET_4_0
+ public static ServiceEndpoint ConfigureStandardEndpoint (ContractDescription cd, ServiceEndpointElement element)
+ {
+ string kind = element.Kind;
+ string endpointConfiguration = element.EndpointConfiguration;
+
+ EndpointCollectionElement section = ConfigUtil.StandardEndpointsSection [kind];
+ if (section == null)
+ throw new ArgumentException (String.Format ("standard endpoint section for '{0}' was not found.", kind));
+
+ StandardEndpointElement e = section.GetDefaultStandardEndpointElement ();
+
+ ServiceEndpoint inst = e.CreateServiceEndpoint (cd);
+
+ foreach (StandardEndpointElement el in section.ConfiguredEndpoints) {
+ if (el.Name == endpointConfiguration) {
+ el.InitializeAndValidate (element);
+ el.ApplyConfiguration (inst, element);
+ break;
+ }
+ }
+
+ return inst;
+ }
+#endif
+
public static KeyedByTypeCollection<IEndpointBehavior> CreateEndpointBehaviors (string bindingConfiguration)
{
var ec = BehaviorsSection.EndpointBehaviors [bindingConfiguration];
public abstract ReadOnlyCollection<StandardEndpointElement> ConfiguredEndpoints { get; }
public string EndpointName {
- get { throw new NotImplementedException (); }
+ get {
+ foreach (ExtensionElement el in ConfigUtil.StandardEndpointsSection.Properties)
+ if (EndpointType.FullName == el.Type)
+ return el.Name;
+ throw new InvalidOperationException (String.Format ("This EndpointCollectionElement '{0}' is not found in the configuration", GetType ()));
+ }
}
public abstract Type EndpointType { get; }
get { return (ExtensionElementCollection) base ["bindingExtensions"]; }
}
+#if NET_4_0
+ [ConfigurationProperty ("endpointExtensions",
+ Options = ConfigurationPropertyOptions.None)]
+ public ExtensionElementCollection EndpointExtensions {
+ get { return (ExtensionElementCollection) base ["endpointExtensions"]; }
+ }
+#endif
+
protected override ConfigurationPropertyCollection Properties {
get {
if (_properties == null) {
_properties.Add (new ConfigurationProperty ("behaviorExtensions", typeof (ExtensionElementCollection), null, null, null, ConfigurationPropertyOptions.None));
_properties.Add (new ConfigurationProperty ("bindingElementExtensions", typeof (ExtensionElementCollection), null, null, null, ConfigurationPropertyOptions.None));
_properties.Add (new ConfigurationProperty ("bindingExtensions", typeof (ExtensionElementCollection), null, null, null, ConfigurationPropertyOptions.None));
+#if NET_4_0
+ _properties.Add (new ConfigurationProperty ("endpointExtensions", typeof (ExtensionElementCollection), null, null, null, ConfigurationPropertyOptions.None));
+#endif
}
return _properties;
}
InitializeBehaviorExtensionsDefault ();
InitializeBindingElementExtensionsDefault ();
InitializeBindingExtensionsDefault ();
+#if NET_4_0
+ InitializeEndpointExtensionsDefault ();
+#endif
}
void InitializeBindingExtensionsDefault () {
BehaviorExtensions.Add (new ExtensionElement ("transactedBatching", typeof (TransactedBatchingElement).AssemblyQualifiedName));
}
+#if NET_4_0
+ void InitializeEndpointExtensionsDefault () {
+ EndpointExtensions.Add (new ExtensionElement ("mexEndpoint", typeof (ServiceMetadataEndpointCollectionElement).AssemblyQualifiedName));
+ }
+#endif
}
}
--- /dev/null
+//
+// ProtocolMappingElement.cs
+//
+// Author:
+// Atsushi Enomoto <atsushi@ximian.com>
+//
+// Copyright (C) 2010 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.
+//
+
+#if NET_4_0
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Net;
+using System.Net.Security;
+using System.Reflection;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.IdentityModel.Claims;
+using System.IdentityModel.Policy;
+using System.IdentityModel.Tokens;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Diagnostics;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.MsmqIntegration;
+using System.ServiceModel.PeerResolvers;
+using System.ServiceModel.Security;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Configuration
+{
+ public sealed class ProtocolMappingElement : ConfigurationElement
+ {
+ static ConfigurationPropertyCollection properties;
+ static ConfigurationProperty binding, binding_configuration, scheme;
+
+ static ProtocolMappingElement ()
+ {
+ properties = new ConfigurationPropertyCollection ();
+ binding = new ConfigurationProperty ("binding", typeof (string), null, null, new StringValidator (0), ConfigurationPropertyOptions.IsRequired);
+ binding_configuration = new ConfigurationProperty ("bindingConfiguration", typeof (string), null, null, new StringValidator (0), ConfigurationPropertyOptions.None);
+ scheme = new ConfigurationProperty ("scheme", typeof (string), null, null, new StringValidator (0), ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey);
+
+ foreach (var item in new ConfigurationProperty [] {binding, binding_configuration, scheme})
+ properties.Add (item);
+ }
+
+ public ProtocolMappingElement ()
+ {
+ }
+
+ public ProtocolMappingElement (string schemeType, string binding, string bindingConfiguration)
+ {
+ Binding = binding;
+ BindingConfiguration = bindingConfiguration;
+ Scheme = schemeType;
+ }
+
+ [ConfigurationProperty ("binding", Options = ConfigurationPropertyOptions.IsRequired)]
+ [StringValidator (MinLength = 0)]
+ public string Binding {
+ get { return (string) base [binding]; }
+ set { base [binding] = value; }
+ }
+
+ [StringValidator (MinLength = 0)]
+ [ConfigurationProperty ("bindingConfiguration", Options = ConfigurationPropertyOptions.None)]
+ public string BindingConfiguration {
+ get { return (string) base [binding_configuration]; }
+ set { base [binding_configuration] = value; }
+ }
+
+ [StringValidator (MinLength = 0)]
+ [ConfigurationProperty ("scheme", Options = ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey)]
+ public string Scheme {
+ get { return (string) base [scheme]; }
+ set { base [scheme] = value; }
+ }
+ }
+}
+
+#endif
--- /dev/null
+//
+// ProtocolMappingElementCollection.cs
+//
+// Author:
+// Atsushi Enomoto <atsushi@ximian.com>
+//
+// Copyright (C) 2010 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.
+//
+
+#if NET_4_0
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Net;
+using System.Net.Security;
+using System.Reflection;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.IdentityModel.Claims;
+using System.IdentityModel.Policy;
+using System.IdentityModel.Tokens;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Diagnostics;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.MsmqIntegration;
+using System.ServiceModel.PeerResolvers;
+using System.ServiceModel.Security;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Configuration
+{
+ [ConfigurationCollection (typeof (ProtocolMappingElement), AddItemName = "add")]
+ public sealed class ProtocolMappingElementCollection : ServiceModelEnhancedConfigurationElementCollection<ProtocolMappingElement>
+ {
+ public ProtocolMappingElementCollection ()
+ {
+ AddElementName = "add";
+ }
+
+ protected override object GetElementKey (ConfigurationElement element)
+ {
+ return ((ProtocolMappingElement) element).Scheme;
+ }
+ }
+}
+#endif
--- /dev/null
+//
+// ProtocolMappingSection.cs
+//
+// Author:
+// Atsushi Enomoto <atsushi@ximian.com>
+//
+// Copyright (C) 2010 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.
+//
+#if NET_4_0
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Net;
+using System.Net.Security;
+using System.Reflection;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.IdentityModel.Claims;
+using System.IdentityModel.Policy;
+using System.IdentityModel.Tokens;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Diagnostics;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.MsmqIntegration;
+using System.ServiceModel.PeerResolvers;
+using System.ServiceModel.Security;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Configuration
+{
+ public sealed class ProtocolMappingSection : ConfigurationSection
+ {
+ static ConfigurationPropertyCollection properties;
+ static ConfigurationProperty collection;
+
+ static ProtocolMappingSection ()
+ {
+ collection = new ConfigurationProperty ("", typeof (ProtocolMappingElementCollection), null, null, null, ConfigurationPropertyOptions.IsDefaultCollection);
+ properties = new ConfigurationPropertyCollection ();
+ properties.Add (collection);
+ }
+
+ // Properties
+
+ [ConfigurationProperty ("", Options = ConfigurationPropertyOptions.IsDefaultCollection)]
+ public ProtocolMappingElementCollection ProtocolMappingCollection {
+ get { return (ProtocolMappingElementCollection) base [collection]; }
+ }
+
+ protected override ConfigurationPropertyCollection Properties {
+ get { return properties; }
+ }
+
+ protected override void InitializeDefault ()
+ {
+ base.InitializeDefault ();
+ // LAMESPEC: no https?
+ ProtocolMappingCollection.Add (new ProtocolMappingElement ("http", "basicHttpBinding", null));
+ ProtocolMappingCollection.Add (new ProtocolMappingElement ("net.tcp", "netTcpBinding", null));
+ ProtocolMappingCollection.Add (new ProtocolMappingElement ("net.msmq", "netMsmqBinding", null));
+ ProtocolMappingCollection.Add (new ProtocolMappingElement ("net.pipe", "netNamedPipeBinding", null));
+ }
+ }
+
+}
+#endif
static ConfigurationProperty listen_uri;
static ConfigurationProperty listen_uri_mode;
static ConfigurationProperty name;
+#if NET_4_0
+ static ConfigurationProperty endpoint_configuration;
+ static ConfigurationProperty is_system_endpoint;
+ static ConfigurationProperty kind;
+#endif
static ServiceEndpointElement ()
{
typeof (string), "", new StringConverter (), new StringValidator (0, int.MaxValue, null),
ConfigurationPropertyOptions.None);
+#if NET_4_0
+ endpoint_configuration = new ConfigurationProperty ("endpointConfiguration", typeof (string), "", null, new StringValidator (0), ConfigurationPropertyOptions.IsKey);
+ is_system_endpoint = new ConfigurationProperty ("isSystemEndpoint", typeof (bool), false, null, null, ConfigurationPropertyOptions.None);
+ kind = new ConfigurationProperty ("kind", typeof (string), "", null, new StringValidator (0), ConfigurationPropertyOptions.IsKey);
+#endif
+
properties.Add (address);
properties.Add (behavior_configuration);
properties.Add (binding);
properties.Add (listen_uri);
properties.Add (listen_uri_mode);
properties.Add (name);
+
+#if NET_4_0
+ properties.Add (endpoint_configuration);
+ properties.Add (is_system_endpoint);
+ properties.Add (kind);
+#endif
}
public ServiceEndpointElement ()
get { return (IdentityElement) base [identity]; }
}
+#if NET_4_0
+ [StringValidator (MinLength = 0)]
+ [ConfigurationProperty ("endpointConfiguration", DefaultValue = "", Options = ConfigurationPropertyOptions.IsKey)]
+ public string EndpointConfiguration {
+ get { return (string) base [endpoint_configuration]; }
+ set { base [endpoint_configuration] = value; }
+ }
+
+ [ConfigurationProperty ("isSystemEndpoint", DefaultValue = false)]
+ public bool IsSystemEndpoint {
+ get { return (bool) base [is_system_endpoint]; }
+ set { base [is_system_endpoint] = value; }
+ }
+
+ [ConfigurationProperty ("kind", DefaultValue = "", Options = ConfigurationPropertyOptions.IsKey)]
+ [StringValidator (MinLength = 0)]
+ public string Kind {
+ get { return (string) base [kind]; }
+ set { base [kind] = value; }
+ }
+#endif
+
[ConfigurationProperty ("listenUri",
Options = ConfigurationPropertyOptions.None,
DefaultValue = null)]
protected override object GetElementKey (ConfigurationElement element) {
ServiceEndpointElement el = (ServiceEndpointElement) element;
- return el.Address + ";" +
- el.Binding.GetHashCode () + ";" +
- el.BindingConfiguration.GetHashCode () + ";" +
- el.BindingName.GetHashCode () + ";" +
- el.BindingNamespace.GetHashCode () + ";" +
- el.Contract.GetHashCode ();
+ return GetHashCode (el.Address) +
+ GetHashCode (el.Binding) +
+ GetHashCode (el.BindingConfiguration) +
+ GetHashCode (el.BindingName) +
+ GetHashCode (el.BindingNamespace) +
+#if NET_4_0
+ GetHashCode (el.EndpointConfiguration) +
+ GetHashCode (el.Kind) +
+#endif
+ GetHashCode (el.Contract);
}
+ static string GetHashCode (object obj)
+ {
+ return (obj != null ? obj.GetHashCode () : 0) + ";";
+ }
}
}
--- /dev/null
+//
+// Author:
+// Atsushi Enomoto <atsushi@ximian.com>
+//
+// Copyright (C) 2010 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.
+//
+#if NET_4_0
+
+using System;
+using System.ComponentModel;
+using System.ServiceModel.Description;
+
+namespace System.ServiceModel.Configuration
+{
+ public class ServiceMetadataEndpointCollectionElement : StandardEndpointCollectionElement<ServiceMetadataEndpoint, ServiceMetadataEndpointElement>
+ {
+ }
+
+}
+
+#endif
--- /dev/null
+//
+// Author:
+// Atsushi Enomoto <atsushi@ximian.com>
+//
+// Copyright (C) 2010 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.
+//
+#if NET_4_0
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Net;
+using System.Net.Security;
+using System.Reflection;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.IdentityModel.Claims;
+using System.IdentityModel.Policy;
+using System.IdentityModel.Tokens;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Diagnostics;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.MsmqIntegration;
+using System.ServiceModel.PeerResolvers;
+using System.ServiceModel.Security;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Configuration
+{
+ public class ServiceMetadataEndpointElement : StandardEndpointElement
+ {
+ static ConfigurationPropertyCollection properties = new ConfigurationPropertyCollection ();
+
+ static ServiceMetadataEndpointElement ()
+ {
+ foreach (var item in new ConfigurationProperty [] {})
+ properties.Add (item);
+ }
+
+ protected internal override Type EndpointType {
+ get { return typeof (ServiceMetadataEndpoint); }
+ }
+
+ protected override ConfigurationPropertyCollection Properties {
+ get { return properties; }
+ }
+
+ protected internal override ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription)
+ {
+ return new ServiceMetadataEndpoint ();
+ }
+
+ protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement serviceEndpointElement)
+ {
+ throw new NotImplementedException ();
+ }
+
+ protected override void OnApplyConfiguration (ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)
+ {
+ throw new NotImplementedException ();
+ }
+
+ protected override void OnInitializeAndValidate (ChannelEndpointElement channelEndpointElement)
+ {
+ throw new NotImplementedException ();
+ }
+
+ protected override void OnInitializeAndValidate (ServiceEndpointElement serviceEndpointElement)
+ {
+ throw new NotImplementedException ();
+ }
+ }
+}
+
+#endif
public ServicesSection Services {
get { return (ServicesSection) Sections ["services"]; }
}
+
+#if NET_4_0
+ public ProtocolMappingSection ProtocolMapping {
+ get { return (ProtocolMappingSection) Sections ["protocolMapping"]; }
+ }
+
+ public StandardEndpointsSection StandardEndpoints {
+ get { return (StandardEndpointsSection) Sections ["standardEndpoints"]; }
+ }
+#endif
}
}
where TEndpointConfiguration : StandardEndpointElement, new()
{
static ConfigurationPropertyCollection properties;
- static ConfigurationProperty endpoints = new ConfigurationProperty ("endpoints",
+ static ConfigurationProperty endpoints = new ConfigurationProperty ("",
typeof (StandardEndpointElementCollection<TEndpointConfiguration>), null, null, null,
ConfigurationPropertyOptions.IsDefaultCollection);
void FillProperties (ConfigurationPropertyCollection baseProps)
{
properties = new ConfigurationPropertyCollection ();
+ foreach (ConfigurationProperty prop in baseProps)
+ properties.Add (prop);
properties.Add (endpoints);
}
public override ReadOnlyCollection<StandardEndpointElement> ConfiguredEndpoints {
- get { throw new NotImplementedException (); }
+ get {
+ var l = new List<StandardEndpointElement> ();
+ foreach (StandardEndpointElement e in Endpoints)
+ l.Add (e);
+ return new ReadOnlyCollection<StandardEndpointElement> (l);
+ }
}
[ConfigurationPropertyAttribute("", Options = ConfigurationPropertyOptions.IsDefaultCollection)]
public override bool ContainsKey (string name)
{
- throw new NotImplementedException ();
+ foreach (StandardEndpointElement e in Endpoints)
+ if (e.Name == name)
+ return true;
+ return false;
}
protected internal override StandardEndpointElement GetDefaultStandardEndpointElement ()
{
- throw new NotImplementedException ();
+ return (StandardEndpointElement) Activator.CreateInstance (typeof (TEndpointConfiguration));
}
protected internal override bool TryAdd (string name, ServiceEndpoint endpoint, ConfigurationType config)
get { return properties; }
}
+ public void ApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement channelEndpointElement)
+ {
+ OnApplyConfiguration (endpoint, channelEndpointElement);
+ }
+
+ public void ApplyConfiguration (ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)
+ {
+ OnApplyConfiguration (endpoint, serviceEndpointElement);
+ }
+
protected internal abstract ServiceEndpoint CreateServiceEndpoint (ContractDescription contractDescription);
+ public void InitializeAndValidate (ChannelEndpointElement channelEndpointElement)
+ {
+ OnInitializeAndValidate (channelEndpointElement);
+ }
+
+ public void InitializeAndValidate (ServiceEndpointElement serviceEndpointElement)
+ {
+ OnInitializeAndValidate (serviceEndpointElement);
+ }
+
protected internal virtual void InitializeFrom (ServiceEndpoint endpoint)
{
- throw new NotImplementedException ();
+ if (endpoint == null)
+ throw new ArgumentNullException ("endpoint");
+ if (!EndpointType.IsAssignableFrom (endpoint.GetType ()))
+ throw new ArgumentNullException (String.Format ("Argument endpoint type is not of expected type '{0}'", EndpointType));
+
+ // not sure if that's all, but that's what is documented.
}
protected abstract void OnApplyConfiguration (ServiceEndpoint endpoint, ChannelEndpointElement channelEndpointElement);
namespace System.ServiceModel.Configuration
{
+ // LAMESPEC: there should be ConfigurationPropertyAttribute whose AddElementName is "standardEndpoint" (see ServiceBehaviorElementCollection for reference).
public sealed class StandardEndpointElementCollection<TEndpointConfiguration> : ServiceModelEnhancedConfigurationElementCollection<TEndpointConfiguration>
where TEndpointConfiguration : StandardEndpointElement, new()
{
+ public StandardEndpointElementCollection ()
+ {
+ AddElementName = "standardEndpoint";
+ }
+
+ protected override bool ThrowOnDuplicate {
+ get { return false; }
+ }
+
protected override object GetElementKey (ConfigurationElement element)
{
return ((StandardEndpointElement) element).Name;
--- /dev/null
+//
+// BindingsSection.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.
+//
+#if NET_4_0
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Configuration;
+using System.Net;
+using System.Net.Security;
+using System.Reflection;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.IdentityModel.Claims;
+using System.IdentityModel.Policy;
+using System.IdentityModel.Tokens;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.ServiceModel.Description;
+using System.ServiceModel.Diagnostics;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.MsmqIntegration;
+using System.ServiceModel.PeerResolvers;
+using System.ServiceModel.Security;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Xml;
+
+namespace System.ServiceModel.Configuration
+{
+ public sealed class StandardEndpointsSection : ConfigurationSection
+ {
+ ConfigurationPropertyCollection _properties;
+
+ // Properties
+
+ List<EndpointCollectionElement> endpoint_collections;
+
+ public List<EndpointCollectionElement> EndpointCollections {
+ get {
+ if (endpoint_collections != null)
+ return endpoint_collections;
+ var list = new List<EndpointCollectionElement> ();
+ foreach (ConfigurationProperty cp in Properties)
+ list.Add ((EndpointCollectionElement) this [cp]);
+ endpoint_collections = list;
+ return list;
+ }
+ }
+
+
+ [ConfigurationProperty ("mexEndpoint", Options = ConfigurationPropertyOptions.None)]
+ public ServiceMetadataEndpointCollectionElement MexEndpoint {
+ get { return (ServiceMetadataEndpointCollectionElement) this ["mexEndpoint"]; }
+ }
+
+ protected override ConfigurationPropertyCollection Properties {
+ get {
+ if (_properties == null) {
+ _properties = new ConfigurationPropertyCollection ();
+ ExtensionElementCollection extensions = ((ExtensionsSection) EvaluationContext.GetSection ("system.serviceModel/extensions")).EndpointExtensions;
+ for (int i = 0; i < extensions.Count; i++) {
+ ExtensionElement extension = extensions [i];
+ _properties.Add (new ConfigurationProperty (extension.Name, Type.GetType (extension.Type), null, null, null, ConfigurationPropertyOptions.None));
+ }
+ }
+ return _properties;
+ }
+ }
+
+ public static StandardEndpointsSection GetSection (System.Configuration.Configuration config) {
+ ServiceModelSectionGroup sm = ServiceModelSectionGroup.GetSectionGroup (config);
+ if (sm == null)
+ throw new SystemException ("Could not retrieve configuration section group 'system.serviceModel'");
+ if (sm.StandardEndpoints == null)
+ throw new SystemException ("Could not retrieve configuration sub section group 'standardEndpoints' in 'system.serviceModel'");
+ return sm.StandardEndpoints;
+ }
+
+ public new EndpointCollectionElement this [string name] {
+ get {
+ object element = base [name];
+ if (element is EndpointCollectionElement)
+ return (EndpointCollectionElement) element;
+ throw new ArgumentException (String.Format ("Could not find {0}", name));
+ }
+ }
+
+ }
+
+}
+
+#endif
if (this.importer != null || this.context != null)
throw new SystemException ("INTERNAL ERROR: unexpected recursion of ImportContract method call");
-#if USE_DATA_CONTRACT_IMPORTER
dc_importer = new XsdDataContractImporter ();
schema_set_in_use = new XmlSchemaSet ();
schema_set_in_use.Add (importer.XmlSchemas);
foreach (XmlSchema xs in wsdl.Types.Schemas)
schema_set_in_use.Add (xs);
dc_importer.Import (schema_set_in_use);
-#endif
this.importer = importer;
this.context = context;
XsdDataContractImporter dc_importer;
-#if USE_DATA_CONTRACT_IMPORTER
XmlSchemaSet schema_set_in_use;
-#else
- XmlSchemaImporter schema_importer_;
- XmlSchemaImporter schema_importer {
- get {
- if (schema_importer_ != null)
- return schema_importer_;
- schema_importer_ = new XmlSchemaImporter (xml_schemas);
- return schema_importer_;
- }
- }
-
- XmlSchemas xml_schemas_;
- XmlSchemas xml_schemas {
- get {
- if (xml_schemas_ != null)
- return xml_schemas_;
- xml_schemas_ = new XmlSchemas ();
-
- foreach (WSDL wsdl in importer.WsdlDocuments)
- foreach (XmlSchema schema in wsdl.Types.Schemas)
- xml_schemas_.Add (schema);
-
- foreach (XmlSchema schema in importer.XmlSchemas.Schemas ())
- xml_schemas_.Add (schema);
-
- xml_schemas_.Compile (null, true);
-
- return xml_schemas_;
- }
- }
-#endif
void DoImportContract ()
{
}
}
-#if USE_DATA_CONTRACT_IMPORTER
void resolveElement (QName qname, List<MessagePartDescription> parts, string ns)
{
XmlSchemaElement element = (XmlSchemaElement) schema_set_in_use.GlobalElements [qname];
resolveParticle (element, parts, ns, 2);
}
-#else
- void resolveElement (QName qname, List<MessagePartDescription> parts, string ns)
- {
- XmlSchemaElement element = (XmlSchemaElement) xml_schemas.Find (qname, typeof (XmlSchemaElement));
- if (element == null)
- //FIXME: What to do here?
- throw new Exception ("Could not resolve : " + qname.ToString ());
- resolveParticle (element, parts, ns, 2);
- }
-#endif
void resolveType (QName qname, List<MessagePartDescription> parts, string ns)
{
XmlSchemaComplexType ct = elem.ElementSchemaType as XmlSchemaComplexType;
if (ct == null) {
//Not a complex type
- XmlSchemaSimpleType simple = elem.ElementSchemaType as XmlSchemaSimpleType;
-#if USE_DATA_CONTRACT_IMPORTER
msg_part = new MessagePartDescription (elem.QualifiedName.Name, elem.QualifiedName.Namespace);
msg_part.Importer = dc_importer;
msg_part.CodeTypeReference = dc_importer.GetCodeTypeReference (dc_importer.Import (schema_set_in_use, elem));
parts.Add (msg_part);
-#else
- msg_part = new MessagePartDescription (
- elem.Name, ns);
- if (elem.SchemaType != null)
- msg_part.XmlTypeMapping = schema_importer.ImportTypeMapping (elem.QualifiedName);
- else
- msg_part.XmlTypeMapping = schema_importer.ImportSchemaType (elem.SchemaTypeName);
- msg_part.TypeName = new QName (GetCLRTypeName (elem.SchemaTypeName), "");
- parts.Add (msg_part);
-#endif
return;
}
}
//depth <= 0
-#if USE_DATA_CONTRACT_IMPORTER
msg_part = new MessagePartDescription (elem.QualifiedName.Name, elem.QualifiedName.Namespace);
msg_part.Importer = dc_importer;
msg_part.CodeTypeReference = dc_importer.GetCodeTypeReference (dc_importer.Import (schema_set_in_use, elem));
parts.Add (msg_part);
-#else
- msg_part = new MessagePartDescription (elem.Name, ns);
- if (elem.SchemaType != null)
- msg_part.XmlTypeMapping = schema_importer.ImportTypeMapping (elem.QualifiedName);
- else
- msg_part.XmlTypeMapping = schema_importer.ImportSchemaType (elem.SchemaTypeName);
- msg_part.TypeName = elem.SchemaTypeName;
-
- parts.Add (msg_part);
-#endif
}
void IWsdlImportExtension.ImportEndpoint (WsdlImporter importer,
}
#if !NET_2_1
-#if USE_DATA_CONTRACT_IMPORTER
internal XsdDataContractImporter Importer { get; set; }
internal System.CodeDom.CodeTypeReference CodeTypeReference { get; set; }
-#else
- internal XmlQualifiedName TypeName {
- get { return xml_schema_type_name; }
- set { xml_schema_type_name = value; }
- }
-
- internal XmlTypeMapping XmlTypeMapping {
- get { return xml_type_mapping; }
- set { xml_type_mapping = value; }
- }
-#endif
#endif
#region internals required for moonlight compatibility
ServiceContractGenerationContext contract_context;
List<OPair> operation_contexts = new List<OPair> ();
-#if USE_DATA_CONTRACT_IMPORTER
XsdDataContractImporter xsd_data_importer;
-#endif
public ServiceContractGenerator ()
: this (null, null)
if ((Options & ServiceContractGenerationOptions.ClientClass) != 0)
GenerateProxyClass (contractDescription, cns);
-#if USE_DATA_CONTRACT_IMPORTER
if (xsd_data_importer != null)
MergeCompileUnit (xsd_data_importer.CodeCompileUnit, ccu);
-#endif
// Process extensions. Class first, then methods.
// (built-in ones must present before processing class extensions).
// [OperationContract (Action = "...", ReplyAction = "..")]
var ad = new CodeAttributeDeclaration (new CodeTypeReference (typeof (OperationContractAttribute)));
foreach (MessageDescription md in od.Messages) {
- if (md.IsRequest)
+ if (md.Direction == MessageDirection.Input)
ad.Arguments.Add (new CodeAttributeArgument ("Action", new CodePrimitiveExpression (md.Action)));
else
ad.Arguments.Add (new CodeAttributeArgument ("ReplyAction", new CodePrimitiveExpression (md.Action)));
{
CodeExpression [] args = null;
foreach (MessageDescription md in messages) {
- if (!md.IsRequest) {
+ if (md.Direction == MessageDirection.Output) {
if (md.Body.ReturnValue != null) {
ExportDataContract (md.Body.ReturnValue);
-#if USE_DATA_CONTRACT_IMPORTER
method.ReturnType = md.Body.ReturnValue.CodeTypeReference;
-#else
- method.ReturnType = new CodeTypeReference (GetCodeTypeName (md.Body.ReturnValue.TypeName));
-#endif
}
continue;
}
method.Parameters.Add (
new CodeParameterDeclarationExpression (
-#if USE_DATA_CONTRACT_IMPORTER
parts [i].CodeTypeReference,
-#else
- new CodeTypeReference (GetCodeTypeName (parts [i].TypeName)),
-#endif
parts [i].Name));
if (return_args)
throw new NotImplementedException ();
}
-#if USE_DATA_CONTRACT_IMPORTER
void MergeCompileUnit (CodeCompileUnit from, CodeCompileUnit to)
{
if (from == to)
to.Types.Add (ftd);
}
}
-#endif
private void ExportDataContract (MessagePartDescription md)
{
-#if USE_DATA_CONTRACT_IMPORTER
if (xsd_data_importer == null)
xsd_data_importer = md.Importer;
-#else
- var mapping = md.XmlTypeMapping;
-
- if (mapping == null)
- return;
-
- QName qname = new QName (mapping.TypeName, mapping.Namespace);
- if (imported_names.ContainsKey (qname))
- return;
-
- CodeNamespace cns = new CodeNamespace ();
-
- XmlCodeExporter xce = new XmlCodeExporter (cns);
- xce.ExportTypeMapping (mapping);
-
- List <CodeTypeDeclaration> to_remove = new List <CodeTypeDeclaration> ();
-
- //Process the types just generated
- //FIXME: Iterate and assign the types to correct namespaces
- //At the end, add all those namespaces to the ccu
- foreach (CodeTypeDeclaration type in cns.Types) {
- string ns = GetXmlNamespace (type);
- if (ns == null)
- //FIXME: do what here?
- continue;
-
- QName type_name = new QName (type.Name, ns);
- if (imported_names.ContainsKey (type_name)) {
- //Type got reemitted, so remove it!
- to_remove.Add (type);
- continue;
- }
- if (ns == ms_arrays_ns) {
- //Do not emit arrays as an independent type.
- to_remove.Add (type);
- continue;
- }
-
- imported_names [type_name] = type_name;
-
- type.Comments.Clear ();
- //Custom Attributes
- type.CustomAttributes.Clear ();
-
- if (type.IsEnum)
- continue;
-
- type.CustomAttributes.Add (
- new CodeAttributeDeclaration (
- new CodeTypeReference ("System.CodeDom.Compiler.GeneratedCodeAttribute"),
- new CodeAttributeArgument (new CodePrimitiveExpression ("System.Runtime.Serialization")),
- new CodeAttributeArgument (new CodePrimitiveExpression ("3.0.0.0"))));
-
- type.CustomAttributes.Add (
- new CodeAttributeDeclaration (
- new CodeTypeReference ("System.Runtime.Serialization.DataContractAttribute")));
-
- //BaseType and interface
- type.BaseTypes.Add (new CodeTypeReference (typeof (object)));
- type.BaseTypes.Add (new CodeTypeReference ("System.Runtime.Serialization.IExtensibleDataObject"));
-
- foreach (CodeTypeMember mbr in type.Members) {
- CodeMemberProperty p = mbr as CodeMemberProperty;
- if (p == null)
- continue;
-
- if ((p.Attributes & MemberAttributes.Public) == MemberAttributes.Public) {
- //FIXME: Clear all attributes or only XmlElementAttribute?
- p.CustomAttributes.Clear ();
- p.CustomAttributes.Add (new CodeAttributeDeclaration (
- new CodeTypeReference ("System.Runtime.Serialization.DataMemberAttribute")));
-
- p.Comments.Clear ();
- }
- }
-
- //Fields
- CodeMemberField field = new CodeMemberField (
- new CodeTypeReference ("System.Runtime.Serialization.ExtensionDataObject"),
- "extensionDataField");
- field.Attributes = MemberAttributes.Private | MemberAttributes.Final;
- type.Members.Add (field);
-
- //Property
- CodeMemberProperty prop = new CodeMemberProperty ();
- prop.Type = new CodeTypeReference ("System.Runtime.Serialization.ExtensionDataObject");
- prop.Name = "ExtensionData";
- prop.Attributes = MemberAttributes.Public | MemberAttributes.Final;
-
- //Get
- prop.GetStatements.Add (new CodeMethodReturnStatement (
- new CodeFieldReferenceExpression (
- new CodeThisReferenceExpression (),
- "extensionDataField")));
-
- //Set
- prop.SetStatements.Add (new CodeAssignStatement (
- new CodeFieldReferenceExpression (
- new CodeThisReferenceExpression (),
- "extensionDataField"),
- new CodePropertySetValueReferenceExpression ()));
-
- type.Members.Add (prop);
- }
-
- foreach (CodeTypeDeclaration type in to_remove)
- cns.Types.Remove (type);
-
- ccu.Namespaces.Add (cns);
-#endif
}
private string GetXmlNamespace (CodeTypeDeclaration type)
public ContractDescription Contract {
get { return contract; }
+#if NET_4_0
+ set {
+ if (value == null)
+ throw new ArgumentNullException ("value");
+ contract = value;
+ }
+#endif
}
public EndpointAddress Address {
--- /dev/null
+//
+// Author:
+// Atsushi Enomoto <atsushi@ximian.com>
+//
+// Copyright (C) 2010 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.
+//
+#if NET_4_0
+using System;
+using System.Collections.ObjectModel;
+using System.Runtime.Serialization;
+using System.ServiceModel.Channels;
+
+namespace System.ServiceModel.Description
+{
+ public class ServiceMetadataEndpoint : ServiceEndpoint
+ {
+ public ServiceMetadataEndpoint ()
+ : this (null)
+ {
+ }
+
+ public ServiceMetadataEndpoint (EndpointAddress address)
+ : this (MetadataExchangeBindings.CreateMexHttpBinding (), address)
+ {
+ }
+
+ public ServiceMetadataEndpoint (Binding binding, EndpointAddress address)
+ : base (ContractDescription.GetContract (typeof (IMetadataExchange)), binding, address)
+ {
+ }
+ }
+}
+
+#endif
System.ServiceModel.Configuration/PolicyImporterElementCollection.cs
System.ServiceModel.Configuration/PolicyVersionConverter.cs
System.ServiceModel.Configuration/PrivacyNoticeElement.cs
+System.ServiceModel.Configuration/ProtocolMappingElement.cs
+System.ServiceModel.Configuration/ProtocolMappingElementCollection.cs
+System.ServiceModel.Configuration/ProtocolMappingSection.cs
System.ServiceModel.Configuration/ReliableMessagingVersionConverter.cs
System.ServiceModel.Configuration/ReliableSessionElement.cs
System.ServiceModel.Configuration/RsaElement.cs
System.ServiceModel.Configuration/ServiceEndpointElement.cs
System.ServiceModel.Configuration/ServiceEndpointElementCollection.cs
System.ServiceModel.Configuration/ServiceHostingEnvironmentSection.cs
+System.ServiceModel.Configuration/ServiceMetadataEndpointCollectionElement.cs
+System.ServiceModel.Configuration/ServiceMetadataEndpointElement.cs
System.ServiceModel.Configuration/ServiceMetadataPublishingElement.cs
System.ServiceModel.Configuration/ServiceModelConfigurationElementCollection.cs
System.ServiceModel.Configuration/ServiceModelEnhancedConfigurationElementCollection.cs
System.ServiceModel.Configuration/StandardEndpointCollectionElement.cs
System.ServiceModel.Configuration/StandardEndpointElement.cs
System.ServiceModel.Configuration/StandardEndpointElementCollection.cs
+System.ServiceModel.Configuration/StandardEndpointsSection.cs
System.ServiceModel.Configuration/SynchronousReceiveElement.cs
System.ServiceModel.Configuration/TcpConnectionPoolSettingsElement.cs
System.ServiceModel.Configuration/TcpTransportElement.cs
System.ServiceModel.Description/ServiceEndpoint.cs
System.ServiceModel.Description/ServiceEndpointCollection.cs
System.ServiceModel.Description/ServiceMetadataBehavior.cs
+System.ServiceModel.Description/ServiceMetadataEndpoint.cs
System.ServiceModel.Description/ServiceMetadataExtension.cs
System.ServiceModel.Description/ServiceSecurityAuditBehavior.cs
System.ServiceModel.Description/ServiceThrottlingBehavior.cs
if (endpoint.Binding == null)
throw new ArgumentException ("Binding on the argument endpoint is null");
- if (!ImplementedContracts.Values.Any (cd => cd.ContractType == endpoint.Contract.ContractType))
+ if (!ImplementedContracts.Values.Any (cd => cd.ContractType == endpoint.Contract.ContractType) &&
+ endpoint.Binding.Namespace != "http://schemas.microsoft.com/ws/2005/02/mex/bindings") // special case
throw new InvalidOperationException (String.Format ("Contract '{0}' is not implemented in this service '{1}'", endpoint.Contract.Name, Description.Name));
Description.Endpoints.Add (endpoint);
throw new InvalidOperationException ("ApplyConfiguration requires that the Description property be initialized. Either provide a valid ServiceDescription in the CreateDescription method or override the ApplyConfiguration method to provide an alternative implementation");
ServiceElement service = GetServiceElement ();
- if (service != null) {
-
- //base addresses
- HostElement host = service.Host;
- foreach (BaseAddressElement baseAddress in host.BaseAddresses) {
- AddBaseAddress (new Uri (baseAddress.BaseAddress));
- }
+
+ if (service != null)
+ ApplyServiceElement (service);
- // behaviors
- ServiceBehaviorElement behavior = ConfigUtil.BehaviorsSection.ServiceBehaviors [service.BehaviorConfiguration];
- if (behavior != null) {
- foreach (var bxe in behavior) {
- IServiceBehavior b = (IServiceBehavior) bxe.CreateBehavior ();
- Description.Behaviors.Add (b);
- }
- }
- else
- throw new ArgumentException (String.Format ("Service behavior {0} is specified, but was not found", service.BehaviorConfiguration));
-
- // services
- foreach (ServiceEndpointElement endpoint in service.Endpoints) {
- ServiceEndpoint se = AddServiceEndpoint (
- endpoint.Contract,
- ConfigUtil.CreateBinding (endpoint.Binding, endpoint.BindingConfiguration),
- endpoint.Address);
- // endpoint behaviors
- EndpointBehaviorElement epbehavior = ConfigUtil.BehaviorsSection.EndpointBehaviors [endpoint.BehaviorConfiguration];
- if (epbehavior != null)
- foreach (var bxe in epbehavior) {
- IEndpointBehavior b = (IEndpointBehavior) bxe.CreateBehavior ();
- se.Behaviors.Add (b);
- }
- }
- }
// TODO: consider commonBehaviors here
// ensure ServiceAuthorizationBehavior
Description.Behaviors.Add (debugBehavior);
}
}
+
+ void ApplyServiceElement (ServiceElement service)
+ {
+ //base addresses
+ HostElement host = service.Host;
+ foreach (BaseAddressElement baseAddress in host.BaseAddresses) {
+ AddBaseAddress (new Uri (baseAddress.BaseAddress));
+ }
+
+ // behaviors
+ ServiceBehaviorElement behavior = ConfigUtil.BehaviorsSection.ServiceBehaviors [service.BehaviorConfiguration];
+ if (behavior != null) {
+ foreach (var bxe in behavior) {
+ IServiceBehavior b = (IServiceBehavior) bxe.CreateBehavior ();
+ Description.Behaviors.Add (b);
+ }
+ }
+ else if (!String.IsNullOrEmpty (service.BehaviorConfiguration))
+ throw new ArgumentException (String.Format ("Service behavior configuration '{0}' was not found", service.BehaviorConfiguration));
+
+ // services
+ foreach (ServiceEndpointElement endpoint in service.Endpoints) {
+ ServiceEndpoint se;
+
+#if NET_4_0
+ var binding = String.IsNullOrEmpty (endpoint.Binding) ? null : ConfigUtil.CreateBinding (endpoint.Binding, endpoint.BindingConfiguration);
+
+ if (!String.IsNullOrEmpty (endpoint.Kind)) {
+ var contract = String.IsNullOrEmpty (endpoint.Contract) ? null : GetContract (endpoint.Contract, false);
+ se = ConfigUtil.ConfigureStandardEndpoint (contract, endpoint);
+ if (se.Binding == null)
+ se.Binding = binding;
+ if (se.Address == null && se.Binding != null) // standard endpoint might have empty address
+ se.Address = new EndpointAddress (CreateUri (se.Binding.Scheme, endpoint.Address));
+ if (se.Binding == null && se.Address != null) // look for protocol mapping
+ se.Binding = GetBindingByProtocolMapping (se.Address.Uri);
+
+ AddServiceEndpoint (se);
+ }
+ else {
+ if (binding == null && endpoint.Address != null) // look for protocol mapping
+ binding = GetBindingByProtocolMapping (endpoint.Address);
+ se = AddServiceEndpoint (endpoint.Contract, binding, endpoint.Address);
+ }
+#else
+ var binding = ConfigUtil.CreateBinding (endpoint.Binding, endpoint.BindingConfiguration);
+ se = AddServiceEndpoint (endpoint.Contract, binding, endpoint.Address);
+#endif
+
+ // endpoint behaviors
+ EndpointBehaviorElement epbehavior = ConfigUtil.BehaviorsSection.EndpointBehaviors [endpoint.BehaviorConfiguration];
+ if (epbehavior != null)
+ foreach (var bxe in epbehavior) {
+ IEndpointBehavior b = (IEndpointBehavior) bxe.CreateBehavior ();
+ se.Behaviors.Add (b);
+ }
+ }
+ }
+
+#if NET_4_0
+ Binding GetBindingByProtocolMapping (Uri address)
+ {
+ ProtocolMappingElement el = ConfigUtil.ProtocolMappingSection.ProtocolMappingCollection [address.Scheme];
+ if (el == null)
+ return null;
+ return ConfigUtil.CreateBinding (el.Binding, el.BindingConfiguration);
+ }
+#endif
private ServiceElement GetServiceElement() {
Type serviceType = Description.ServiceType;
foreach (ServiceEndpoint endPoint in Description.Endpoints)
endPoint.Validate ();
+#if NET_4_0
+ // In 4.0, it seems that if there is no configured ServiceEndpoint, infer them from the service type.
+ if (Description.Endpoints.Count == 0) {
+ foreach (Type iface in Description.ServiceType.GetInterfaces ())
+ if (iface.GetCustomAttributes (typeof (ServiceContractAttribute), true).Length > 0)
+ foreach (var baddr in BaseAddresses) {
+ if (!baddr.IsAbsoluteUri)
+ continue;
+ var binding = GetBindingByProtocolMapping (baddr);
+ if (binding == null)
+ continue;
+ AddServiceEndpoint (iface.FullName, binding, baddr);
+ }
+ }
+#endif
+
if (Description.Endpoints.FirstOrDefault (e => e.Contract != mex_contract && !e.IsSystemEndpoint) == null)
throw new InvalidOperationException ("The ServiceHost must have at least one application endpoint (that does not include metadata exchange endpoint) defined by either configuration, behaviors or call to AddServiceEndpoint methods.");
}
System.ServiceModel.Configuration/StandardBindingCollectionElementTest.cs
System.ServiceModel.Configuration/StandardBindingElementCollectionTest.cs
System.ServiceModel.Configuration/StandardBindingElementTest.cs
+System.ServiceModel.Configuration/StandardEndpointsSectionTest.cs
System.ServiceModel.Configuration/UserBinding.cs
System.ServiceModel.Description/ClientCredentialsTest.cs
System.ServiceModel.Description/ContractDescriptionTest.cs
System.ServiceModel.Description/ServiceDebugBehaviorTest.cs
System.ServiceModel.Description/ServiceEndpointTest.cs
System.ServiceModel.Description/ServiceMetadataBehaviorTest.cs
+System.ServiceModel.Description/ServiceMetadataEndpointTest.cs
System.ServiceModel.Description/ServiceThrottlingBehaviorTest.cs
System.ServiceModel.Description/TypedMessageConverterTest.cs
System.ServiceModel.Description/WsdlExporterTest.cs
--- /dev/null
+//
+// StandardEndpointsSectionTest.cs
+//
+// Author:
+// Atsushi Enomoto <atsushi@ximian.com>
+//
+// Copyright (C) 2010 Novell, Inc. http://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.
+//
+#if NET_4_0
+
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using System.ServiceModel;
+using System.ServiceModel.Configuration;
+using System.ServiceModel.Description;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.Channels;
+
+namespace MonoTests.System.ServiceModel.Configuration
+{
+ [TestFixture]
+ public class StandardEndpointsSectionTest
+ {
+ [Test]
+ public void ServiceMetadataExists ()
+ {
+ var cfg = ConfigurationManager.OpenMachineConfiguration ();
+ Assert.IsNotNull (StandardEndpointsSection.GetSection (cfg).EndpointCollections.FirstOrDefault (e => e is ServiceMetadataEndpointCollectionElement), "#1");
+ }
+ }
+}
+#endif
--- /dev/null
+//
+// ServiceEndpointTest.cs
+//
+// Author:
+// Atsushi Enomoto <atsushi@ximian.com>
+//
+// Copyright (C) 2009 Novell, Inc. http://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.
+//
+#if NET_4_0
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.Framework;
+using System.ServiceModel;
+using System.ServiceModel.Description;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.Channels;
+
+namespace MonoTests.System.ServiceModel.Description
+{
+ [TestFixture]
+ public class ServiceMetadataEndpointTest
+ {
+ [Test]
+ public void DefaultValues ()
+ {
+ var se = new ServiceMetadataEndpoint ();
+ Assert.IsNotNull (se.Contract, "#1");
+ Assert.AreEqual (typeof (IMetadataExchange), se.Contract.ContractType, "#1.2");
+ Assert.IsNotNull (se.Binding, "#2");
+ // FIXME: enable once we get usable WSHttpBinding.
+ // Assert.AreEqual (typeof (WSHttpBinding), se.Binding.GetType (), "#2.2");
+ Assert.IsNull (se.Address, "#3");
+ }
+ }
+}
+#endif
}
[Test]
- [Category ("NotWorking")]
+ [Ignore ("This hangs on .NET")]
// not sure how "good" this test is ... if it fails at
// service side, it just results in timeout error.
// The assertion makes sure that it passes all the tests, but
host.AddServiceEndpoint (new ServiceEndpoint (contract, binding, address));
}
+ [Test]
+ [ExpectedException (typeof (ArgumentException))]
+ public void AddServiceEndpoint_Directly_NullAddress ()
+ {
+ var host = new ServiceHost (typeof (DummyService));
+ var binding = new BasicHttpBinding ();
+ var contract = ContractDescription.GetContract (typeof (IDummyService));
+ host.AddServiceEndpoint (new ServiceEndpoint (contract, binding, null));
+ }
+
+ [Test]
+ [ExpectedException (typeof (ArgumentException))]
+ public void AddServiceEndpoint_Directly_NullBinding ()
+ {
+ var host = new ServiceHost (typeof (DummyService));
+ var address = new EndpointAddress ("http://localhost:8080");
+ var contract = ContractDescription.GetContract (typeof (IDummyService));
+ host.AddServiceEndpoint (new ServiceEndpoint (contract, null, address));
+ }
+
+ [Test]
+ [ExpectedException (typeof (ArgumentException))]
+ public void AddServiceMetadataEndpoint ()
+ {
+ var host = new ServiceHost (typeof (DummyService));
+ host.AddServiceEndpoint (new ServiceMetadataEndpoint ());
+ }
+
[Test]
[ExpectedException (typeof (InvalidOperationException))]
public void AddServiceEndpoint_Directly_ContractMismatch ()
--- /dev/null
+../../build/common/Consts.cs
+../../build/common/MonoTODOAttribute.cs
+#include moonlight_raw_System.ServiceModel.dll.sources
--- /dev/null
+#include mobile_System.ServiceModel.dll.sources
-../../build/common/Consts.cs
-../../build/common/MonoTODOAttribute.cs
-#include moonlight_raw_System.ServiceModel.dll.sources
+#include mobile_System.ServiceModel.dll.sources
TEST_MCS_FLAGS = /nowarn:1595 $(LIB_MCS_FLAGS)
# This is a .NET 2.0+ only assembly
-VALID_PROFILE := $(filter net_2_0_bootstrap net_2_0 net_4_0 monotouch, $(PROFILE))
+VALID_PROFILE := $(filter net_2_0_bootstrap net_2_0 net_4_0 monotouch monodroid, $(PROFILE))
ifndef VALID_PROFILE
LIBRARY_NAME = dummy-System.Transactions.dll
NO_INSTALL = yes
include ../../build/rules.make
LIBRARY = System.Web.Services.dll
-ifeq (monotouch, $(PROFILE))
+MOBILE := $(filter monotouch monodroid, $(PROFILE))
+ifdef MOBILE
LIB_MCS_FLAGS = \
-nowarn:649 -nowarn:169 \
-r:$(corlib) \
RegisterExtensionType (typeof (Soap12OperationBinding));
#endif
-#if !MONOTOUCH
+#if !MOBILE
/*
- * Currently, the MonoTouch build has not support for
+ * Currently, the mobile profile has not support for
* System.Configuration, so there are no external modules
* defined
*/
}
/*
- * MonoTouch lacks support for configuration
+ * The mobile profile lacks support for configuration
*/
-#if MONOTOUCH
+#if MOBILE
public static ArrayList BuildExtensionImporters ()
{
return new ArrayList (0);
using System.Collections.Specialized;
using System.Configuration;
-#if !MONOTOUCH
+#if !MOBILE
using Microsoft.CSharp;
#endif
ServiceDescriptionCollection serviceDescriptions;
ServiceDescriptionImportStyle style;
-#if NET_2_0 && !MONOTOUCH
+#if NET_2_0 && !MOBILE
CodeGenerationOptions options;
CodeDomProvider codeGenerator = new CSharpCodeProvider ();
ImportContext context;
set { style = value; }
}
-#if NET_2_0 && !MONOTOUCH
+#if NET_2_0 && !MOBILE
[System.Runtime.InteropServices.ComVisible(false)]
public CodeGenerationOptions CodeGenerationOptions {
get { return options; }
schemas.Add (serviceDescription.Types.Schemas);
}
-#if !MONOTOUCH
+#if !MOBILE
public ServiceDescriptionImportWarnings Import (CodeNamespace codeNamespace, CodeCompileUnit codeCompileUnit)
{
foreach (ProtocolImporter importer in GetSupportedImporters ()) {
}
#endif
-#if NET_2_0 && !MONOTOUCH
+#if NET_2_0 && !MOBILE
[MonoTODO] // where to use Verbose and Extensions in options?
public static StringCollection GenerateWebReferences (
sealed class WebReference
{
DiscoveryClientDocumentCollection _documents;
-#if !TARGET_J2EE && !MONOTOUCH
+#if !TARGET_J2EE && !MOBILE
CodeNamespace _proxyCode;
ServiceDescriptionImportWarnings _warnings;
#endif
string _appSettingBaseUrl;
StringCollection _validationWarnings;
-#if !TARGET_J2EE && !MONOTOUCH
+#if !TARGET_J2EE && !MOBILE
public WebReference (DiscoveryClientDocumentCollection documents, CodeNamespace proxyCode)
{
if (documents == null) throw new ArgumentNullException ("documents");
get { return _protocolName; }
set { _protocolName = value; }
}
-#if !TARGET_J2EE && !MONOTOUCH
+#if !TARGET_J2EE && !MOBILE
public CodeNamespace ProxyCode {
get { return _proxyCode; }
}
using System.Xml.Serialization;
using System.Net;
using System.Text.RegularExpressions;
-#if !MONOTOUCH
+#if !MOBILE
using System.Web.Services.Description;
#endif
refe = new DiscoveryDocumentReference ();
AddDiscoReferences (doc);
}
-#if !MONOTOUCH
+#if !MOBILE
else if (ServiceDescription.CanRead (reader))
{
ServiceDescription wsdl = ServiceDescription.Read (reader);
using System.IO;
using System.Reflection;
using System.Xml.Serialization;
-#if !MONOTOUCH
+#if !MOBILE
using System.Web.Services.Description;
#endif
xmlImporter.IncludeTypes (Type);
soapImporter.IncludeTypes (Type);
-#if MONOTOUCH
+#if MOBILE
SoapExtensions = new SoapExtensionRuntimeConfig [2][];
#else
SoapExtensions = SoapExtension.GetTypeExtensions (Type);
soap12Protocol.Initialize ();
}
return soap12Protocol;
-#if !MONOTOUCH
+#if !MOBILE
case "HttpGet":
if (httpGetProtocol == null){
httpGetProtocol = new HttpGetTypeStubInfo (this);
return pos;
}
-#if !MONOTOUCH
+#if !MOBILE
static void InitializeGlobalExtensions ()
{
globalExtensions = new ArrayList[2];
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-#if !TARGET_J2EE && !MONOTOUCH
+#if !TARGET_J2EE && !MOBILE
using System.EnterpriseServices;
#endif
namespace System.Web.Services {
-#if TARGET_J2EE || MONOTOUCH
+#if TARGET_J2EE || MOBILE
public enum TransactionOption {Disabled , NotSupported , Required , RequiresNew , Supported }
#endif
--- /dev/null
+Assembly/AssemblyInfo.cs
+../../build/common/Consts.cs
+../../build/common/MonoTODOAttribute.cs
+System.Web.Services/WebServiceBindingAttribute.cs
+System.Web.Services/WebServiceAttribute.cs
+System.Web.Services.Protocols/SoapHttpClientProtocol.cs
+System.Web.Services.Protocols/HttpWebClientProtocol.cs
+System.Web.Services.Protocols/WebClientAsyncResult.cs
+System.Web.Services.Protocols/WebClientProtocol.cs
+System.Web.Services.Protocols/Methods.cs
+System.Web.Services.Protocols/TypeStubManager.cs
+System.Web.Services.Protocols/SoapClientMessage.cs
+System.Web.Services.Protocols/SoapExtension.cs
+System.Web.Services.Protocols/LogicalMethodInfo.cs
+System.Web.Services.Protocols/SoapMessage.cs
+System.Web.Services/WebMethodAttribute.cs
+System.Web.Services.Protocols/SoapParameterStyle.cs
+System.Web.Services.Description/SoapBindingUse.cs
+System.Web.Services.Protocols/SoapHeaderMapping.cs
+System.Web.Services.Protocols/SoapHeaderDirection.cs
+System.Web.Services.Protocols/SoapHeaderCollection.cs
+System.Web.Services.Description/SoapBindingStyle.cs
+System.Web.Services.Protocols/SoapServiceRoutingStyle.cs
+System.Web.Services.Protocols/SoapExtensionAttribute.cs
+System.Web.Services.Protocols/SoapException.cs
+System.Web.Services.Protocols/SoapHeader.cs
+System.Web.Services.Protocols/SoapMessageStage.cs
+System.Web.Services.Protocols/SoapHeaderAttribute.cs
+System.Web.Services.Protocols/ServerType.cs
+System.Web.Services.Protocols/LogicalMethodTypes.cs
+System.Web.Services/WebServicesDescriptionAttribute.cs
+System.Web.Services.Protocols/WebServiceHelper.cs
+System.Web.Services.Protocols/SoapDocumentMethodAttribute.cs
+System.Web.Services.Protocols/SoapDocumentServiceAttribute.cs
+System.Web.Services.Protocols/SoapRpcMethodAttribute.cs
+System.Web.Services.Protocols/SoapRpcServiceAttribute.cs
+System.Web.Services.Discovery/DiscoveryClientProtocol.cs
+System.Web.Services.Discovery/DiscoveryClientDocumentCollection.cs
+System.Web.Services.Discovery/DiscoveryDocument.cs
+System.Web.Services.Discovery/DiscoveryClientResultCollection.cs
+System.Web.Services.Discovery/DiscoveryClientResult.cs
+System.Web.Services.Discovery/DiscoveryExceptionDictionary.cs
+System.Web.Services.Discovery/DiscoveryClientReferenceCollection.cs
+System.Web.Services.Discovery/DiscoveryReference.cs
+System.Web.Services.Discovery/SoapBinding.cs
+System.Web.Services.Protocols/Fault.cs
+System.Web.Services.Protocols/InvokeCompletedEventArgs.cs
+System.Web.Services.Protocols/InvokeCompletedEventHandler.cs
+System.Web.Services.Protocols/SoapUnknownHeader.cs
+System.Web.Services/WsiProfiles.cs
+System.Web.Services.Protocols/SoapProtocolVersion.cs
+System.Web.Services.Protocols/SoapFaultSubcode.cs
+System.Web.Services.Protocols/Soap12FaultCodes.cs
+System.Web.Services.Protocols/Fault12.cs
+System.Web.Services.Protocols/MimeFormatter.cs
+System.Web.Services.Description/ServiceDescription.cs
+System.Web.Services.Description/NamedItem.cs
+System.Web.Services.Description/DocumentableItem.cs
+System.Web.Services.Description/ServiceDescriptionCollection.cs
+System.Web.Services.Description/ServiceCollection.cs
+System.Web.Services.Description/ServiceDescriptionBaseCollection.cs
+System.Web.Services.Description/ServiceDescriptionFormatExtension.cs
+System.Web.Services.Description/ServiceDescriptionFormatExtensionCollection.cs
+System.Web.Services.Description/Service.cs
+System.Web.Services.Description/Binding.cs
+System.Web.Services.Description/Port.cs
+System.Web.Services.Description/PortCollection.cs
+System.Web.Services.Description/MessageCollection.cs
+System.Web.Services.Description/Message.cs
+System.Web.Services.Description/MessagePart.cs
+System.Web.Services.Description/MessagePartCollection.cs
+System.Web.Services.Configuration/XmlFormatExtensionAttribute.cs
+System.Web.Services.Configuration/XmlFormatExtensionPointAttribute.cs
+System.Web.Services.Configuration/XmlFormatExtensionPrefixAttribute.cs
+System.Web.Services.Description/BindingCollection.cs
+System.Web.Services.Description/Import.cs
+System.Web.Services.Description/ImportCollection.cs
+System.Web.Services.Description/PortType.cs
+System.Web.Services.Description/PortTypeCollection.cs
+System.Web.Services.Description/OperationBinding.cs
+System.Web.Services.Description/OperationBindingCollection.cs
+System.Web.Services.Description/InputBinding.cs
+System.Web.Services.Description/OutputBinding.cs
+System.Web.Services.Description/MessageBinding.cs
+System.Web.Services.Description/FaultBindingCollection.cs
+System.Web.Services.Description/FaultBinding.cs
+System.Web.Services.Description/OperationCollection.cs
+System.Web.Services.Description/Operation.cs
+System.Web.Services.Description/Types.cs
+System.Web.Services.Description/OperationFault.cs
+System.Web.Services.Description/OperationFaultCollection.cs
+System.Web.Services.Description/OperationMessage.cs
+System.Web.Services.Description/OperationMessageCollection.cs
+System.Web.Services.Description/OperationFlow.cs
+System.Web.Services.Description/OperationInput.cs
+System.Web.Services.Description/OperationOutput.cs
+System.Web.Services.Description/ServiceDescriptionImporter.cs
+System.Web.Services.Description/WebReference.cs
+System.Web.Services.Description/ServiceDescriptionImportStyle.cs
+System.Web.Services.Discovery/DiscoveryDocumentReference.cs
+System.Web.Services.Discovery/ContractReference.cs
+System.Web.Services.Discovery/SchemaReference.cs
+System.Web.Services.Discovery/DiscoveryDocumentSerializer.cs
+
+System.Web.Services.Discovery/ContractSearchPattern.cs
+System.Web.Services.Discovery/DiscoveryDocumentLinksPattern.cs
+System.Web.Services.Discovery/DiscoveryDocumentSearchPattern.cs
+System.Web.Services.Discovery/DiscoveryReferenceCollection.cs
+System.Web.Services.Discovery/DiscoverySearchPattern.cs
+System.Web.Services.Discovery/DynamicDiscoveryDocument.cs
+System.Web.Services.Discovery/ExcludePathInfo.cs
+System.Web.Services.Discovery/XmlSchemaSearchPattern.cs
+
+System.Web.Services.Protocols/Fault12Serializer.cs
+System.Web.Services.Protocols/HttpMethodAttribute.cs
+System.Web.Services.Protocols/NopReturnReader.cs
+System.Web.Services.Protocols/MimeReturnReader.cs
+System.Web.Services.Protocols/XmlReturnReader.cs
+System.Web.Services.Protocols/UrlParameterWriter.cs
+System.Web.Services.Protocols/UrlEncodedParameterWriter.cs
+System.Web.Services.Protocols/MimeParameterWriter.cs
+System.Web.Services.Description/SoapBinding.cs
+System.Web.Services.Description/Soap12Binding.cs
+System.Web.Services.Description/HttpBinding.cs
+System.Web.Services.Description/MimeContentBinding.cs
+System.Web.Services.Description/MimeTextBinding.cs
+System.Web.Services.Description/MimeTextMatch.cs
+System.Web.Services.Description/MimeTextMatchCollection.cs
+System.Web.Services.Description/ExtensionManager.cs
+System.Web.Services.Description/ServiceDescriptionSerializerBase2.cs
+../System.Web/System.Web.Util/Helpers.cs
+../System.Web/System.Web.Util/HttpEncoder.cs
+../System.Web/System.Web/HttpUtility.cs
+System.Web.Services.Description/MimePart.cs
+System.Web.Services.Description/MimePartCollection.cs
+System.Web.Services.Description/HttpAddressBinding.cs
+System.Web.Services.Description/HttpOperationBinding.cs
+System.Web.Services.Description/HttpUrlEncodedBinding.cs
+System.Web.Services.Description/HttpUrlReplacementBinding.cs
+System.Web.Services.Description/MimeMultipartRelatedBinding.cs
+System.Web.Services.Description/MimeXmlBinding.cs
+System.Web.Services.Description/SoapAddressBinding.cs
+System.Web.Services.Description/SoapBodyBinding.cs
+System.Web.Services.Description/SoapFaultBinding.cs
+System.Web.Services.Description/SoapHeaderBinding.cs
+System.Web.Services.Description/SoapOperationBinding.cs
+System.Web.Services.Description/Soap12AddressBinding.cs
+System.Web.Services.Description/Soap12BodyBinding.cs
+System.Web.Services.Description/Soap12FaultBinding.cs
+System.Web.Services.Description/Soap12HeaderBinding.cs
+System.Web.Services.Description/Soap12OperationBinding.cs
+System.Web.Services.Description/SoapHeaderFaultBinding.cs
--- /dev/null
+#include mobile_System.Web.Services.dll.sources
-Assembly/AssemblyInfo.cs
-../../build/common/Consts.cs
-../../build/common/MonoTODOAttribute.cs
-System.Web.Services/WebServiceBindingAttribute.cs
-System.Web.Services/WebServiceAttribute.cs
-System.Web.Services.Protocols/SoapHttpClientProtocol.cs
-System.Web.Services.Protocols/HttpWebClientProtocol.cs
-System.Web.Services.Protocols/WebClientAsyncResult.cs
-System.Web.Services.Protocols/WebClientProtocol.cs
-System.Web.Services.Protocols/Methods.cs
-System.Web.Services.Protocols/TypeStubManager.cs
-System.Web.Services.Protocols/SoapClientMessage.cs
-System.Web.Services.Protocols/SoapExtension.cs
-System.Web.Services.Protocols/LogicalMethodInfo.cs
-System.Web.Services.Protocols/SoapMessage.cs
-System.Web.Services/WebMethodAttribute.cs
-System.Web.Services.Protocols/SoapParameterStyle.cs
-System.Web.Services.Description/SoapBindingUse.cs
-System.Web.Services.Protocols/SoapHeaderMapping.cs
-System.Web.Services.Protocols/SoapHeaderDirection.cs
-System.Web.Services.Protocols/SoapHeaderCollection.cs
-System.Web.Services.Description/SoapBindingStyle.cs
-System.Web.Services.Protocols/SoapServiceRoutingStyle.cs
-System.Web.Services.Protocols/SoapExtensionAttribute.cs
-System.Web.Services.Protocols/SoapException.cs
-System.Web.Services.Protocols/SoapHeader.cs
-System.Web.Services.Protocols/SoapMessageStage.cs
-System.Web.Services.Protocols/SoapHeaderAttribute.cs
-System.Web.Services.Protocols/ServerType.cs
-System.Web.Services.Protocols/LogicalMethodTypes.cs
-System.Web.Services/WebServicesDescriptionAttribute.cs
-System.Web.Services.Protocols/WebServiceHelper.cs
-System.Web.Services.Protocols/SoapDocumentMethodAttribute.cs
-System.Web.Services.Protocols/SoapDocumentServiceAttribute.cs
-System.Web.Services.Protocols/SoapRpcMethodAttribute.cs
-System.Web.Services.Protocols/SoapRpcServiceAttribute.cs
-System.Web.Services.Discovery/DiscoveryClientProtocol.cs
-System.Web.Services.Discovery/DiscoveryClientDocumentCollection.cs
-System.Web.Services.Discovery/DiscoveryDocument.cs
-System.Web.Services.Discovery/DiscoveryClientResultCollection.cs
-System.Web.Services.Discovery/DiscoveryClientResult.cs
-System.Web.Services.Discovery/DiscoveryExceptionDictionary.cs
-System.Web.Services.Discovery/DiscoveryClientReferenceCollection.cs
-System.Web.Services.Discovery/DiscoveryReference.cs
-System.Web.Services.Discovery/SoapBinding.cs
-System.Web.Services.Protocols/Fault.cs
-System.Web.Services.Protocols/InvokeCompletedEventArgs.cs
-System.Web.Services.Protocols/InvokeCompletedEventHandler.cs
-System.Web.Services.Protocols/SoapUnknownHeader.cs
-System.Web.Services/WsiProfiles.cs
-System.Web.Services.Protocols/SoapProtocolVersion.cs
-System.Web.Services.Protocols/SoapFaultSubcode.cs
-System.Web.Services.Protocols/Soap12FaultCodes.cs
-System.Web.Services.Protocols/Fault12.cs
-System.Web.Services.Protocols/MimeFormatter.cs
-System.Web.Services.Description/ServiceDescription.cs
-System.Web.Services.Description/NamedItem.cs
-System.Web.Services.Description/DocumentableItem.cs
-System.Web.Services.Description/ServiceDescriptionCollection.cs
-System.Web.Services.Description/ServiceCollection.cs
-System.Web.Services.Description/ServiceDescriptionBaseCollection.cs
-System.Web.Services.Description/ServiceDescriptionFormatExtension.cs
-System.Web.Services.Description/ServiceDescriptionFormatExtensionCollection.cs
-System.Web.Services.Description/Service.cs
-System.Web.Services.Description/Binding.cs
-System.Web.Services.Description/Port.cs
-System.Web.Services.Description/PortCollection.cs
-System.Web.Services.Description/MessageCollection.cs
-System.Web.Services.Description/Message.cs
-System.Web.Services.Description/MessagePart.cs
-System.Web.Services.Description/MessagePartCollection.cs
-System.Web.Services.Configuration/XmlFormatExtensionAttribute.cs
-System.Web.Services.Configuration/XmlFormatExtensionPointAttribute.cs
-System.Web.Services.Configuration/XmlFormatExtensionPrefixAttribute.cs
-System.Web.Services.Description/BindingCollection.cs
-System.Web.Services.Description/Import.cs
-System.Web.Services.Description/ImportCollection.cs
-System.Web.Services.Description/PortType.cs
-System.Web.Services.Description/PortTypeCollection.cs
-System.Web.Services.Description/OperationBinding.cs
-System.Web.Services.Description/OperationBindingCollection.cs
-System.Web.Services.Description/InputBinding.cs
-System.Web.Services.Description/OutputBinding.cs
-System.Web.Services.Description/MessageBinding.cs
-System.Web.Services.Description/FaultBindingCollection.cs
-System.Web.Services.Description/FaultBinding.cs
-System.Web.Services.Description/OperationCollection.cs
-System.Web.Services.Description/Operation.cs
-System.Web.Services.Description/Types.cs
-System.Web.Services.Description/OperationFault.cs
-System.Web.Services.Description/OperationFaultCollection.cs
-System.Web.Services.Description/OperationMessage.cs
-System.Web.Services.Description/OperationMessageCollection.cs
-System.Web.Services.Description/OperationFlow.cs
-System.Web.Services.Description/OperationInput.cs
-System.Web.Services.Description/OperationOutput.cs
-System.Web.Services.Description/ServiceDescriptionImporter.cs
-System.Web.Services.Description/WebReference.cs
-System.Web.Services.Description/ServiceDescriptionImportStyle.cs
-System.Web.Services.Discovery/DiscoveryDocumentReference.cs
-System.Web.Services.Discovery/ContractReference.cs
-System.Web.Services.Discovery/SchemaReference.cs
-System.Web.Services.Discovery/DiscoveryDocumentSerializer.cs
-
-System.Web.Services.Discovery/ContractSearchPattern.cs
-System.Web.Services.Discovery/DiscoveryDocumentLinksPattern.cs
-System.Web.Services.Discovery/DiscoveryDocumentSearchPattern.cs
-System.Web.Services.Discovery/DiscoveryReferenceCollection.cs
-System.Web.Services.Discovery/DiscoverySearchPattern.cs
-System.Web.Services.Discovery/DynamicDiscoveryDocument.cs
-System.Web.Services.Discovery/ExcludePathInfo.cs
-System.Web.Services.Discovery/XmlSchemaSearchPattern.cs
-
-System.Web.Services.Protocols/Fault12Serializer.cs
-System.Web.Services.Protocols/HttpMethodAttribute.cs
-System.Web.Services.Protocols/NopReturnReader.cs
-System.Web.Services.Protocols/MimeReturnReader.cs
-System.Web.Services.Protocols/XmlReturnReader.cs
-System.Web.Services.Protocols/UrlParameterWriter.cs
-System.Web.Services.Protocols/UrlEncodedParameterWriter.cs
-System.Web.Services.Protocols/MimeParameterWriter.cs
-System.Web.Services.Description/SoapBinding.cs
-System.Web.Services.Description/Soap12Binding.cs
-System.Web.Services.Description/HttpBinding.cs
-System.Web.Services.Description/MimeContentBinding.cs
-System.Web.Services.Description/MimeTextBinding.cs
-System.Web.Services.Description/MimeTextMatch.cs
-System.Web.Services.Description/MimeTextMatchCollection.cs
-System.Web.Services.Description/ExtensionManager.cs
-System.Web.Services.Description/ServiceDescriptionSerializerBase2.cs
-../System.Web/System.Web.Util/Helpers.cs
-../System.Web/System.Web.Util/HttpEncoder.cs
-../System.Web/System.Web/HttpUtility.cs
-System.Web.Services.Description/MimePart.cs
-System.Web.Services.Description/MimePartCollection.cs
-System.Web.Services.Description/HttpAddressBinding.cs
-System.Web.Services.Description/HttpOperationBinding.cs
-System.Web.Services.Description/HttpUrlEncodedBinding.cs
-System.Web.Services.Description/HttpUrlReplacementBinding.cs
-System.Web.Services.Description/MimeMultipartRelatedBinding.cs
-System.Web.Services.Description/MimeXmlBinding.cs
-System.Web.Services.Description/SoapAddressBinding.cs
-System.Web.Services.Description/SoapBodyBinding.cs
-System.Web.Services.Description/SoapFaultBinding.cs
-System.Web.Services.Description/SoapHeaderBinding.cs
-System.Web.Services.Description/SoapOperationBinding.cs
-System.Web.Services.Description/Soap12AddressBinding.cs
-System.Web.Services.Description/Soap12BodyBinding.cs
-System.Web.Services.Description/Soap12FaultBinding.cs
-System.Web.Services.Description/Soap12HeaderBinding.cs
-System.Web.Services.Description/Soap12OperationBinding.cs
-System.Web.Services.Description/SoapHeaderFaultBinding.cs
+#include mobile_System.Web.Services.dll.sources
[assembly: WebResource ("computer.gif", "image/gif")]
[assembly: WebResource ("TreeView.js", "text/javascript")]
[assembly: WebResource ("Menu.js", "text/javascript")]
+#if NET_4_0
+[assembly: WebResource ("MenuModern.js", "text/javascript")]
+#endif
[assembly: WebResource ("GridView.js", "text/javascript")]
[assembly: WebResource ("webform.js", "text/javascript")]
[assembly: WebResource ("WebUIValidation_2.0.js", "text/javascript")]
System.Web.UI.WebControls/TreeView.js \
System.Web.UI.WebControls/Menu.js
+RESOURCE_FILES_4 = \
+ System.Web.UI.WebControls/MenuModern.js
+
OTHER_RES = $(RESOURCE_FILES_1)
TEST_APP_CODE_FILES = \
Test/mainsoft/NunitWebResources/App_Code/EnumConverterControl.cs \
ifeq (4, $(FRAMEWORK_VERSION_MAJOR))
OTHER_LIB_MCS_FLAGS += -r:System.Web.ApplicationServices.dll
+OTHER_RES += $(RESOURCE_FILES_4)
endif
LIB_MCS_FLAGS = \
endif
EXTRA_DISTFILES = \
+ $(RESOURCE_FILES_4) \
$(RESOURCE_FILES_2) \
$(RESOURCE_FILES_1) \
$(TEST_RESOURCE_FILES) \
done
endif
-
\ No newline at end of file
+
int r = new Random ().Next (total_imp);
foreach (Hashtable a in ads) {
- if (keywordFilterEmpty && KeywordFilter != (string) a ["Keyword"])
+ if (!keywordFilterEmpty && KeywordFilter != (string) a ["Keyword"])
continue;
cur_imp += a ["Impressions"] != null ? int.Parse ((string) a ["Impressions"]) : 1;
--- /dev/null
+//
+// Authors:
+// Marek Habersack <grendel@twistedcode.net>
+//
+// (C) 2010 Novell, Inc (http://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.Generic;
+using System.Text;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.HtmlControls;
+
+namespace System.Web.UI.WebControls
+{
+ abstract class BaseMenuRenderer : IMenuRenderer
+ {
+ protected sealed class OwnerContext
+ {
+ BaseMenuRenderer container;
+
+ string staticPopOutImageTextFormatString;
+ string dynamicPopOutImageTextFormatString;
+ string dynamicTopSeparatorImageUrl;
+ string dynamicBottomSeparatorImageUrl;
+ string staticTopSeparatorImageUrl;
+ string staticBottomSeparatorImageUrl;
+ List <Style> levelMenuItemLinkStyles;
+ List<Style> levelSelectedLinkStyles;
+ Style staticMenuItemLinkStyle;
+ Style dynamicMenuItemLinkStyle;
+ MenuItemStyle staticSelectedStyle;
+ Style staticSelectedLinkStyle;
+ MenuItemStyle dynamicSelectedStyle;
+ Style dynamicSelectedLinkStyle;
+ MenuItemStyleCollection levelSelectedStyles;
+ ITemplate dynamicItemTemplate;
+ bool dynamicItemTemplateQueried;
+
+ public readonly MenuItemStyle StaticMenuItemStyle;
+ public readonly MenuItemStyle DynamicMenuItemStyle;
+ public readonly MenuItemStyleCollection LevelMenuItemStyles;
+ public readonly Style ControlLinkStyle;
+ public readonly HtmlHead Header;
+ public readonly string ClientID;
+ public readonly int StaticDisplayLevels;
+ public readonly bool IsVertical;
+ public readonly MenuItem SelectedItem;
+ public readonly Unit StaticSubMenuIndent;
+
+ public string StaticPopOutImageTextFormatString {
+ get {
+ if (staticPopOutImageTextFormatString == null)
+ staticPopOutImageTextFormatString = container.Owner.StaticPopOutImageTextFormatString;
+
+ return staticPopOutImageTextFormatString;
+ }
+ }
+
+ public string DynamicPopOutImageTextFormatString {
+ get {
+ if (dynamicPopOutImageTextFormatString == null)
+ dynamicPopOutImageTextFormatString = container.Owner.DynamicPopOutImageTextFormatString;
+
+ return dynamicPopOutImageTextFormatString;
+ }
+ }
+
+ public string DynamicTopSeparatorImageUrl {
+ get {
+ if (dynamicTopSeparatorImageUrl == null)
+ dynamicTopSeparatorImageUrl = container.Owner.DynamicTopSeparatorImageUrl;
+
+ return dynamicTopSeparatorImageUrl;
+ }
+ }
+
+ public string DynamicBottomSeparatorImageUrl {
+ get {
+ if (dynamicBottomSeparatorImageUrl == null)
+ dynamicBottomSeparatorImageUrl = container.Owner.DynamicBottomSeparatorImageUrl;
+
+ return dynamicBottomSeparatorImageUrl;
+ }
+ }
+
+ public string StaticTopSeparatorImageUrl {
+ get {
+ if (staticTopSeparatorImageUrl == null)
+ staticTopSeparatorImageUrl = container.Owner.StaticTopSeparatorImageUrl;
+
+ return staticBottomSeparatorImageUrl;
+ }
+ }
+
+ public string StaticBottomSeparatorImageUrl {
+ get {
+ if (staticBottomSeparatorImageUrl == null)
+ staticBottomSeparatorImageUrl = container.Owner.StaticBottomSeparatorImageUrl;
+
+ return staticBottomSeparatorImageUrl;
+ }
+ }
+
+ public List <Style> LevelMenuItemLinkStyles {
+ get {
+ if (levelMenuItemLinkStyles == null)
+ levelMenuItemLinkStyles = container.Owner.LevelMenuItemLinkStyles;
+
+ return levelMenuItemLinkStyles;
+ }
+ }
+
+ public List<Style> LevelSelectedLinkStyles {
+ get {
+ if (levelSelectedLinkStyles == null)
+ levelSelectedLinkStyles = container.Owner.LevelSelectedLinkStyles;
+
+ return levelSelectedLinkStyles;
+ }
+ }
+
+
+ public Style StaticMenuItemLinkStyle {
+ get {
+ if (staticMenuItemLinkStyle == null)
+ staticMenuItemLinkStyle = container.Owner.StaticMenuItemLinkStyle;
+
+ return staticMenuItemLinkStyle;
+ }
+ }
+
+ public Style DynamicMenuItemLinkStyle {
+ get {
+ if (dynamicMenuItemLinkStyle == null)
+ dynamicMenuItemLinkStyle = container.Owner.DynamicMenuItemLinkStyle;
+
+ return dynamicMenuItemLinkStyle;
+ }
+ }
+
+ public MenuItemStyle StaticSelectedStyle {
+ get {
+ if (staticSelectedStyle == null)
+ staticSelectedStyle = container.Owner.StaticSelectedStyle;
+
+ return staticSelectedStyle;
+ }
+ }
+
+ public MenuItemStyle DynamicSelectedStyle {
+ get {
+ if (dynamicSelectedStyle == null)
+ dynamicSelectedStyle = container.Owner.DynamicSelectedStyle;
+
+ return dynamicSelectedStyle;
+ }
+ }
+
+ public Style StaticSelectedLinkStyle {
+ get {
+ if (staticSelectedLinkStyle == null)
+ staticSelectedLinkStyle = container.Owner.StaticSelectedLinkStyle;
+
+ return staticSelectedLinkStyle;
+ }
+ }
+
+ public Style DynamicSelectedLinkStyle {
+ get {
+ if (dynamicSelectedLinkStyle == null)
+ dynamicSelectedLinkStyle = container.Owner.DynamicSelectedLinkStyle;
+
+ return dynamicSelectedLinkStyle;
+ }
+ }
+
+ public MenuItemStyleCollection LevelSelectedStyles {
+ get {
+ if (levelSelectedStyles == null)
+ levelSelectedStyles = container.Owner.LevelSelectedStyles;
+
+ return levelSelectedStyles;
+ }
+ }
+
+ public ITemplate DynamicItemTemplate {
+ get {
+ if (!dynamicItemTemplateQueried && dynamicItemTemplate == null) {
+ dynamicItemTemplate = container.Owner.DynamicItemTemplate;
+ dynamicItemTemplateQueried = true;
+ }
+
+ return dynamicItemTemplate;
+ }
+ }
+
+ public OwnerContext (BaseMenuRenderer container)
+ {
+ if (container == null)
+ throw new ArgumentNullException ("container");
+
+ this.container = container;
+ Menu owner = container.Owner;
+ Page page = owner.Page;
+
+ Header = page != null ? page.Header : null;
+ ClientID = owner.ClientID;
+ IsVertical = owner.Orientation == Orientation.Vertical;
+ StaticSubMenuIndent = owner.StaticSubMenuIndent;
+ SelectedItem = owner.SelectedItem;
+ ControlLinkStyle = owner.ControlLinkStyle;
+ StaticDisplayLevels = owner.StaticDisplayLevels;
+ StaticMenuItemStyle = owner.StaticMenuItemStyleInternal;
+ DynamicMenuItemStyle = owner.DynamicMenuItemStyleInternal;
+ LevelMenuItemStyles = owner.LevelMenuItemStyles;
+ }
+ }
+
+ int registeredStylesCounter = -1;
+
+ public abstract HtmlTextWriterTag Tag { get; }
+
+ protected Menu Owner {
+ get;
+ private set;
+ }
+
+ public BaseMenuRenderer (Menu owner)
+ {
+ if (owner == null)
+ throw new ArgumentNullException ("owner");
+
+ this.Owner = owner;
+ }
+
+ public virtual void AddAttributesToRender (HtmlTextWriter writer)
+ {
+ Menu owner = Owner;
+ Page page = owner.Page;
+ SubMenuStyle staticMenuStyle = owner.StaticMenuStyleInternal;
+ SubMenuStyleCollection levelSubMenuStyles = owner.LevelSubMenuStylesInternal;
+ bool haveSubStyles = levelSubMenuStyles != null && levelSubMenuStyles.Count > 0;
+ Style controlStyle = haveSubStyles || staticMenuStyle != null ? owner.ControlStyle : null;
+
+ if (page != null && page.Header != null) {
+ // styles are registered
+ if (staticMenuStyle != null) {
+ AddCssClass (controlStyle, staticMenuStyle.CssClass);
+ AddCssClass (controlStyle, staticMenuStyle.RegisteredCssClass);
+ }
+ if (haveSubStyles) {
+ AddCssClass (controlStyle, levelSubMenuStyles [0].CssClass);
+ AddCssClass (controlStyle, levelSubMenuStyles [0].RegisteredCssClass);
+ }
+ } else {
+ // styles are not registered
+ if (staticMenuStyle != null)
+ controlStyle.CopyFrom (staticMenuStyle);
+ if (haveSubStyles)
+ controlStyle.CopyFrom (levelSubMenuStyles [0]);
+ }
+ }
+
+ public abstract void PreRender (Page page, HtmlHead head, ClientScriptManager csm, string cmenu, StringBuilder script);
+ public abstract void RenderMenuBeginTag (HtmlTextWriter writer, bool dynamic, int menuLevel);
+ public abstract void RenderMenuBody (HtmlTextWriter writer, MenuItemCollection items, bool vertical, bool dynamic, bool notLast);
+ public abstract void RenderBeginTag (HtmlTextWriter writer, string skipLinkText);
+ public abstract void RenderEndTag (HtmlTextWriter writer);
+ public abstract void RenderContents (HtmlTextWriter writer);
+ public abstract bool IsDynamicItem (Menu owner, MenuItem item);
+
+ protected abstract void RenderMenuItem (HtmlTextWriter writer, MenuItem item, bool vertical, bool notLast, bool isFirst, OwnerContext oc);
+
+ public virtual void RenderMenuItem (HtmlTextWriter writer, MenuItem item, bool notLast, bool isFirst)
+ {
+ var oc = new OwnerContext (this);
+ RenderMenuItem (writer, item, oc.IsVertical, notLast, isFirst, oc);
+ }
+
+ public virtual void RenderMenuEndTag (HtmlTextWriter writer, bool dynamic, int menuLevel)
+ {
+ writer.RenderEndTag ();
+ }
+
+ public virtual void RenderItemContent (HtmlTextWriter writer, MenuItem item, bool isDynamicItem)
+ {
+ Menu owner = Owner;
+
+ if (!String.IsNullOrEmpty (item.ImageUrl)) {
+ writer.AddAttribute (HtmlTextWriterAttribute.Src, owner.ResolveClientUrl (item.ImageUrl));
+ writer.AddAttribute (HtmlTextWriterAttribute.Alt, item.ToolTip);
+ writer.AddStyleAttribute (HtmlTextWriterStyle.BorderStyle, "none");
+ writer.AddStyleAttribute (HtmlTextWriterStyle.VerticalAlign, "middle");
+ writer.RenderBeginTag (HtmlTextWriterTag.Img);
+ writer.RenderEndTag (); // IMG
+ }
+
+ string format;
+ if (isDynamicItem && (format = owner.DynamicItemFormatString).Length > 0)
+ writer.Write (String.Format (format, item.Text));
+ else if (!isDynamicItem && (format = owner.StaticItemFormatString).Length > 0)
+ writer.Write (String.Format (format, item.Text));
+ else
+ writer.Write (item.Text);
+ }
+
+ public void AddCssClass (Style style, string cssClass)
+ {
+ style.AddCssClass (cssClass);
+ }
+
+ public string GetItemClientId (string ownerClientID, MenuItem item, string suffix)
+ {
+ return ownerClientID + "_" + item.Path + suffix;
+ }
+
+ public virtual void RenderItemHref (Menu owner, HtmlTextWriter writer, MenuItem item)
+ {
+ if (!item.BranchEnabled)
+ writer.AddAttribute ("disabled", "true", false);
+ else if (!item.Selectable) {
+ writer.AddAttribute ("href", "#", false);
+ writer.AddStyleAttribute ("cursor", "text");
+ } else if (item.NavigateUrl != String.Empty) {
+ string target = item.Target != String.Empty ? item.Target : owner.Target;
+#if TARGET_J2EE
+ string navUrl = owner.ResolveClientUrl (item.NavigateUrl, String.Compare (target, "_blank", StringComparison.InvariantCultureIgnoreCase) != 0);
+#else
+ string navUrl = owner.ResolveClientUrl (item.NavigateUrl);
+#endif
+ writer.AddAttribute ("href", navUrl);
+ if (target != String.Empty)
+ writer.AddAttribute ("target", target);
+ } else
+ writer.AddAttribute ("href", GetClientEvent (owner, item));
+ }
+
+ public string GetPopOutImage (Menu owner, MenuItem item, bool isDynamicItem)
+ {
+ if (owner == null)
+ owner = Owner;
+
+ if (item.PopOutImageUrl != String.Empty)
+ return item.PopOutImageUrl;
+
+ bool needArrowResource = false;
+ if (isDynamicItem) {
+ if (owner.DynamicPopOutImageUrl != String.Empty)
+ return owner.DynamicPopOutImageUrl;
+ if (owner.DynamicEnableDefaultPopOutImage)
+ needArrowResource = true;
+ } else {
+ if (owner.StaticPopOutImageUrl != String.Empty)
+ return owner.StaticPopOutImageUrl;
+ if (owner.StaticEnableDefaultPopOutImage)
+ needArrowResource = true;
+ }
+
+ if (needArrowResource)
+ return GetArrowResourceUrl (owner);
+
+ return null;
+ }
+
+ public string GetArrowResourceUrl (Menu owner)
+ {
+ Page page = owner.Page;
+ ClientScriptManager csm = page != null ? page.ClientScript : null;
+ if (csm != null)
+ return csm.GetWebResourceUrl (typeof (Menu), "arrow_plus.gif");
+
+ return null;
+ }
+
+ public void FillMenuStyle (HtmlHead header, bool dynamic, int menuLevel, SubMenuStyle style)
+ {
+ Menu owner = Owner;
+ if (header == null) {
+ Page page = owner.Page;
+ header = page != null ? page.Header : null;
+ }
+
+ SubMenuStyle staticMenuStyle = owner.StaticMenuStyleInternal;
+ MenuItemStyle dynamicMenuItemStyle = owner.DynamicMenuItemStyleInternal;
+ SubMenuStyle dynamicMenuStyle = owner.DynamicMenuStyleInternal;
+ SubMenuStyleCollection levelSubMenuStyles = owner.LevelSubMenuStylesInternal;
+
+ if (header != null) {
+ // styles are registered
+ if (!dynamic && staticMenuStyle != null) {
+ AddCssClass (style, staticMenuStyle.CssClass);
+ AddCssClass (style, staticMenuStyle.RegisteredCssClass);
+ }
+ if (dynamic && dynamicMenuStyle != null) {
+ AddCssClass (style, dynamicMenuStyle.CssClass);
+ AddCssClass (style, dynamicMenuStyle.RegisteredCssClass);
+ }
+ if (levelSubMenuStyles != null && levelSubMenuStyles.Count > menuLevel) {
+ AddCssClass (style, levelSubMenuStyles [menuLevel].CssClass);
+ AddCssClass (style, levelSubMenuStyles [menuLevel].RegisteredCssClass);
+ }
+ } else {
+ // styles are not registered
+ if (!dynamic && staticMenuStyle != null)
+ style.CopyFrom (staticMenuStyle);
+ if (dynamic && dynamicMenuStyle != null)
+ style.CopyFrom (dynamicMenuStyle);
+ if (levelSubMenuStyles != null && levelSubMenuStyles.Count > menuLevel)
+ style.CopyFrom (levelSubMenuStyles [menuLevel]);
+ }
+ }
+
+ public void RegisterStyle (Style baseStyle, Style linkStyle, HtmlHead head)
+ {
+ RegisterStyle (baseStyle, linkStyle, null, head);
+ }
+
+ public void RegisterStyle (Style baseStyle, Style linkStyle, string className, HtmlHead head)
+ {
+ if (head == null)
+ return;
+
+ linkStyle.CopyTextStylesFrom (baseStyle);
+ linkStyle.BorderStyle = BorderStyle.None;
+ RegisterStyle (linkStyle, className, head);
+ RegisterStyle (baseStyle, className, head);
+ }
+
+ public void RegisterStyle (Style baseStyle, HtmlHead head)
+ {
+ RegisterStyle (baseStyle, (string)null, head);
+ }
+
+ public void RegisterStyle (Style baseStyle, string className, HtmlHead head)
+ {
+ if (head == null)
+ return;
+ if (String.IsNullOrEmpty (className))
+ className = IncrementStyleClassName ();
+ baseStyle.SetRegisteredCssClass (className);
+ head.StyleSheet.CreateStyleRule (baseStyle, Owner, "." + className);
+ }
+
+ public void RenderSeparatorImage (Menu owner, HtmlTextWriter writer, string url, bool standardsCompliant)
+ {
+ if (String.IsNullOrEmpty (url))
+ return;
+
+ writer.AddAttribute (HtmlTextWriterAttribute.Src, owner.ResolveClientUrl (url));
+ if (standardsCompliant) {
+ writer.AddAttribute (HtmlTextWriterAttribute.Alt, String.Empty);
+ writer.AddAttribute (HtmlTextWriterAttribute.Class, "separator");
+ }
+
+ writer.RenderBeginTag (HtmlTextWriterTag.Img);
+ writer.RenderEndTag ();
+ }
+
+ public bool IsDynamicItem (MenuItem item)
+ {
+ return IsDynamicItem (Owner, item);
+ }
+
+ string GetClientEvent (Menu owner, MenuItem item)
+ {
+ if (owner == null)
+ owner = Owner;
+
+ Page page = owner.Page;
+ ClientScriptManager csm = page != null ? page.ClientScript : null;
+
+ if (csm == null)
+ return String.Empty;
+
+ return csm.GetPostBackClientHyperlink (owner, item.Path, true);
+ }
+
+ string IncrementStyleClassName ()
+ {
+ registeredStylesCounter++;
+ return Owner.ClientID + "_" + registeredStylesCounter;
+ }
+ }
+}
--- /dev/null
+//
+// Authors:
+// Marek Habersack <grendel@twistedcode.net>
+//
+// (C) 2004-2010 Novell, Inc (http://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.Text;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.HtmlControls;
+
+namespace System.Web.UI.WebControls
+{
+ interface IMenuRenderer
+ {
+ HtmlTextWriterTag Tag { get; }
+
+ void AddAttributesToRender (HtmlTextWriter writer);
+ void PreRender (Page page, HtmlHead head, ClientScriptManager csm, string cmenu, StringBuilder script);
+ void RenderBeginTag (HtmlTextWriter writer, string skipLinkText);
+ void RenderEndTag (HtmlTextWriter writer);
+ void RenderContents (HtmlTextWriter writer);
+
+ void RenderItemContent (HtmlTextWriter writer, MenuItem item, bool isDynamicItem);
+ void RenderMenuBeginTag (HtmlTextWriter writer, bool dynamic, int menuLevel);
+ void RenderMenuBody (HtmlTextWriter writer, MenuItemCollection items, bool vertical, bool dynamic, bool notLast);
+ void RenderMenuEndTag (HtmlTextWriter writer, bool dynamic, int menuLevel);
+ void RenderMenuItem (HtmlTextWriter writer, MenuItem item, bool notLast, bool isFirst);
+
+ bool IsDynamicItem (MenuItem item);
+ bool IsDynamicItem (Menu owner, MenuItem item);
+ }
+}
// Lluis Sanchez Gual (lluis@novell.com)
// Igor Zelmanovich (igorz@mainsoft.com)
//
-// (C) 2004 Novell, Inc (http://www.novell.com)
+// (C) 2004-2010 Novell, Inc (http://www.novell.com)
//
//
using System.Text;
using System.ComponentModel;
using System.Web.UI;
+using System.Web.UI.HtmlControls;
using System.Web.Handlers;
using System.Collections.Specialized;
using System.IO;
[SupportsEventValidation]
public class Menu : HierarchicalDataBoundControl, IPostBackEventHandler, INamingContainer
{
+ IMenuRenderer renderer;
+
MenuItemStyle dynamicMenuItemStyle;
SubMenuStyle dynamicMenuStyle;
MenuItemStyle dynamicSelectedStyle;
Hashtable _menuItemControls;
bool _requiresChildControlsDataBinding;
SiteMapNode _currSiteMapNode;
- int registeredStylesCounter = -1;
List<Style> levelSelectedLinkStyles;
List<Style> levelMenuItemLinkStyles;
Style popOutBoxStyle;
Style dynamicHoverLinkStyle;
Style staticHoverLinkStyle;
#if NET_4_0
+ bool? renderList;
bool includeStyleBlock = true;
MenuRenderingMode renderingMode = MenuRenderingMode.Default;
#endif
if (eh != null) eh (this, e);
}
}
+
+ IMenuRenderer Renderer {
+ get {
+ if (renderer == null)
+ renderer = CreateRenderer (null);
+
+ return renderer;
+ }
+ }
#if NET_4_0
+ bool RenderList {
+ get {
+ if (renderList == null) {
+ switch (RenderingMode) {
+ case MenuRenderingMode.List:
+ renderList = true;
+ break;
+
+ case MenuRenderingMode.Table:
+ renderList = false;
+ break;
+
+ default:
+ if (RenderingCompatibilityLessThan40)
+ renderList = false;
+ else
+ renderList = true;
+ break;
+ }
+ }
+
+ return renderList.Value;
+ }
+ }
+
[DefaultValue (true)]
[Description ("Determines whether or not to render the inline style block (only used in standards compliance mode)")]
public bool IncludeStyleBlock {
throw new ArgumentOutOfRangeException ("value");
renderingMode = value;
+ renderer = CreateRenderer (renderer);
}
}
#endif
public string DynamicBottomSeparatorImageUrl {
get {
object o = ViewState ["dbsiu"];
- if (o != null) return (string)o;
- return "";
+ if (o != null)
+ return (string)o;
+ return String.Empty;
}
set {
ViewState["dbsiu"] = value;
}
}
- Style PopOutBoxStyle {
+ internal Style PopOutBoxStyle {
get {
if (popOutBoxStyle == null) {
popOutBoxStyle = new Style ();
}
}
- Style ControlLinkStyle {
+ internal Style ControlLinkStyle {
get {
if (controlLinkStyle == null) {
controlLinkStyle = new Style ();
}
}
- Style DynamicMenuItemLinkStyle {
+ internal Style DynamicMenuItemLinkStyle {
get {
if (dynamicMenuItemLinkStyle == null) {
dynamicMenuItemLinkStyle = new Style ();
}
}
- Style StaticMenuItemLinkStyle {
+ internal Style StaticMenuItemLinkStyle {
get {
if (staticMenuItemLinkStyle == null) {
staticMenuItemLinkStyle = new Style ();
}
}
- Style DynamicSelectedLinkStyle {
+ internal Style DynamicSelectedLinkStyle {
get {
if (dynamicSelectedLinkStyle == null) {
dynamicSelectedLinkStyle = new Style ();
}
}
- Style StaticSelectedLinkStyle {
+ internal Style StaticSelectedLinkStyle {
get {
if (staticSelectedLinkStyle == null) {
staticSelectedLinkStyle = new Style ();
}
}
- Style DynamicHoverLinkStyle {
+ internal Style DynamicHoverLinkStyle {
get {
if (dynamicHoverLinkStyle == null) {
dynamicHoverLinkStyle = new Style ();
}
}
- Style StaticHoverLinkStyle {
+ internal Style StaticHoverLinkStyle {
get {
if (staticHoverLinkStyle == null) {
staticHoverLinkStyle = new Style ();
}
}
+ internal MenuItemStyle StaticMenuItemStyleInternal {
+ get { return staticMenuItemStyle; }
+ }
+
+ internal SubMenuStyle StaticMenuStyleInternal {
+ get { return staticMenuStyle; }
+ }
+
+ internal MenuItemStyle DynamicMenuItemStyleInternal {
+ get { return dynamicMenuItemStyle; }
+ }
+
+ internal SubMenuStyle DynamicMenuStyleInternal {
+ get { return dynamicMenuStyle; }
+ }
+
+ internal MenuItemStyleCollection LevelMenuItemStylesInternal {
+ get { return levelMenuItemStyles; }
+ }
+
+ internal List<Style> LevelMenuItemLinkStyles {
+ get { return levelMenuItemLinkStyles; }
+ }
+
+ internal SubMenuStyleCollection LevelSubMenuStylesInternal {
+ get { return levelSubMenuStyles; }
+ }
+
+ internal MenuItemStyle StaticSelectedStyleInternal {
+ get { return staticSelectedStyle; }
+ }
+
+ internal MenuItemStyle DynamicSelectedStyleInternal {
+ get { return dynamicSelectedStyle; }
+ }
+
+ internal MenuItemStyleCollection LevelSelectedStylesInternal {
+ get { return levelSelectedStyles; }
+ }
+
+ internal List<Style> LevelSelectedLinkStyles {
+ get { return levelSelectedLinkStyles; }
+ }
+
+ internal Style StaticHoverStyleInternal {
+ get { return staticHoverStyle; }
+ }
+
+ internal Style DynamicHoverStyleInternal {
+ get { return dynamicHoverStyle; }
+ }
+
[PersistenceMode (PersistenceMode.InnerProperty)]
[NotifyParentProperty (true)]
[DefaultValue (null)]
}
}
+ IMenuRenderer CreateRenderer (IMenuRenderer current)
+ {
+#if NET_4_0
+ Type newType = null;
+
+ switch (RenderingMode) {
+ case MenuRenderingMode.Default:
+ if (RenderingCompatibilityLessThan40)
+ newType = typeof (MenuTableRenderer);
+ else
+ newType = typeof (MenuListRenderer);
+ break;
+
+ case MenuRenderingMode.Table:
+ newType = typeof (MenuTableRenderer);
+ break;
+ case MenuRenderingMode.List:
+ newType = typeof (MenuListRenderer);
+ break;
+ }
+
+ if (newType == null)
+ return null;
+
+ if (current == null || current.GetType () != newType)
+ return Activator.CreateInstance (newType, this) as IMenuRenderer;
+#else
+ if (current == null)
+ return new MenuTableRenderer (this);
+#endif
+ return current;
+ }
+
internal void SetSelectedItem (MenuItem item)
{
if (selectedItem == item) return;
}
protected override HtmlTextWriterTag TagKey {
- get { return HtmlTextWriterTag.Table; }
+ get { return Renderer.Tag; }
}
protected override void TrackViewState()
_requiresChildControlsDataBinding = true;
}
- void CreateChildControlsForItems (MenuItemCollection items ) {
+ void CreateChildControlsForItems (MenuItemCollection items )
+ {
+ IMenuRenderer renderer = Renderer;
foreach (MenuItem item in items) {
- bool isDynamicItem = IsDynamicItem (item);
+ bool isDynamicItem = renderer.IsDynamicItem (this, item);
if (isDynamicItem && dynamicItemTemplate != null) {
MenuItemTemplateContainer cter = new MenuItemTemplateContainer (item.Index, item);
dynamicItemTemplate.InstantiateIn (cter);
EnsureChildControls ();
base.OnDataBinding (e);
}
-
- const string onPreRenderScript = "var {0} = new Object ();\n{0}.webForm = {1};\n{0}.disappearAfter = {2};\n{0}.vertical = {3};";
protected internal override void OnPreRender (EventArgs e)
{
base.OnPreRender (e);
-
- if (!Page.ClientScript.IsClientScriptIncludeRegistered (typeof(Menu), "Menu.js")) {
- string url = Page.ClientScript.GetWebResourceUrl (typeof(Menu), "Menu.js");
- Page.ClientScript.RegisterClientScriptInclude (typeof(Menu), "Menu.js", url);
- }
-
- string cmenu = ClientID + "_data";
- string script = String.Format (onPreRenderScript,
- cmenu,
- Page.IsMultiForm ? Page.theForm : "window",
- ClientScriptManager.GetScriptLiteral (DisappearAfter),
- ClientScriptManager.GetScriptLiteral (Orientation == Orientation.Vertical));
-
- if (DynamicHorizontalOffset != 0)
- script += String.Concat (cmenu, ".dho = ", ClientScriptManager.GetScriptLiteral (DynamicHorizontalOffset), ";\n");
- if (DynamicVerticalOffset != 0)
- script += String.Concat (cmenu, ".dvo = ", ClientScriptManager.GetScriptLiteral (DynamicVerticalOffset), ";\n");
-
- // The order in which styles are defined matters when more than one class
- // is assigned to an element
- RegisterStyle (PopOutBoxStyle);
- RegisterStyle (ControlStyle, ControlLinkStyle);
-
- if (staticMenuItemStyle != null)
- RegisterStyle (StaticMenuItemStyle, StaticMenuItemLinkStyle);
-
- if (staticMenuStyle != null)
- RegisterStyle (StaticMenuStyle);
-
- if (dynamicMenuItemStyle != null)
- RegisterStyle (DynamicMenuItemStyle, DynamicMenuItemLinkStyle);
-
- if (dynamicMenuStyle != null)
- RegisterStyle (DynamicMenuStyle);
-
- if (levelMenuItemStyles != null && levelMenuItemStyles.Count > 0) {
- levelMenuItemLinkStyles = new List<Style> (levelMenuItemStyles.Count);
- foreach (Style style in levelMenuItemStyles) {
- Style linkStyle = new Style ();
- levelMenuItemLinkStyles.Add (linkStyle);
- RegisterStyle (style, linkStyle);
- }
- }
-
- if (levelSubMenuStyles != null)
- foreach (Style style in levelSubMenuStyles)
- RegisterStyle (style);
- if (staticSelectedStyle != null)
- RegisterStyle (staticSelectedStyle, StaticSelectedLinkStyle);
-
- if (dynamicSelectedStyle != null)
- RegisterStyle (dynamicSelectedStyle, DynamicSelectedLinkStyle);
-
- if (levelSelectedStyles != null && levelSelectedStyles.Count > 0) {
- levelSelectedLinkStyles = new List<Style> (levelSelectedStyles.Count);
- foreach (Style style in levelSelectedStyles) {
- Style linkStyle = new Style ();
- levelSelectedLinkStyles.Add (linkStyle);
- RegisterStyle (style, linkStyle);
- }
- }
-
- if (staticHoverStyle != null) {
- if (Page.Header == null)
- throw new InvalidOperationException ("Using Menu.StaticHoverStyle requires Page.Header to be non-null (e.g. <head runat=\"server\" />).");
- RegisterStyle (staticHoverStyle, StaticHoverLinkStyle);
- script += string.Concat (cmenu, ".staticHover = ", ClientScriptManager.GetScriptLiteral (staticHoverStyle.RegisteredCssClass), ";\n");
- script += string.Concat (cmenu, ".staticLinkHover = ", ClientScriptManager.GetScriptLiteral (StaticHoverLinkStyle.RegisteredCssClass), ";\n");
+ string cmenu = ClientID + "_data";
+ StringBuilder script = new StringBuilder ();
+ Page page = Page;
+ HtmlHead header;
+ ClientScriptManager csm;
+
+ if (page != null) {
+ header = page.Header;
+ csm = page.ClientScript;
+ } else {
+ header = null;
+ csm = null;
}
- if (dynamicHoverStyle != null) {
- if (Page.Header == null)
- throw new InvalidOperationException ("Using Menu.DynamicHoverStyle requires Page.Header to be non-null (e.g. <head runat=\"server\" />).");
- RegisterStyle (dynamicHoverStyle, DynamicHoverLinkStyle);
- script += string.Concat (cmenu, ".dynamicHover = ", ClientScriptManager.GetScriptLiteral (dynamicHoverStyle.RegisteredCssClass), ";\n");
- script += string.Concat (cmenu, ".dynamicLinkHover = ", ClientScriptManager.GetScriptLiteral (DynamicHoverLinkStyle.RegisteredCssClass), ";\n");
- }
-
- Page.ClientScript.RegisterWebFormClientScript ();
- Page.ClientScript.RegisterStartupScript (typeof(Menu), ClientID, script, true);
+ Renderer.PreRender (page, header, csm, cmenu, script);
+ if (csm != null) {
+ csm.RegisterWebFormClientScript ();
+ csm.RegisterStartupScript (typeof(Menu), ClientID, script.ToString (), true);
+ }
}
void InitializeDataBindings () {
else
bindings = null;
}
-
- string IncrementStyleClassName () {
- registeredStylesCounter++;
- return ClientID + "_" + registeredStylesCounter;
- }
-
- void RegisterStyle (Style baseStyle, Style linkStyle) {
- linkStyle.CopyTextStylesFrom (baseStyle);
- linkStyle.BorderStyle = BorderStyle.None;
- RegisterStyle (linkStyle);
- RegisterStyle (baseStyle);
- }
-
- void RegisterStyle (Style baseStyle)
- {
- if (Page.Header == null)
- return;
- string className = IncrementStyleClassName ();
- baseStyle.SetRegisteredCssClass (className);
- Page.Header.StyleSheet.CreateStyleRule (baseStyle, this, "." + className);
- }
protected internal override void Render (HtmlTextWriter writer)
{
protected override void AddAttributesToRender (HtmlTextWriter writer)
{
- writer.AddAttribute ("cellpadding", "0", false);
- writer.AddAttribute ("cellspacing", "0", false);
- writer.AddAttribute ("border", "0", false);
- if (Page.Header != null) {
- // styles are registered
- if (staticMenuStyle != null) {
- AddCssClass (ControlStyle, staticMenuStyle.CssClass);
- AddCssClass (ControlStyle, staticMenuStyle.RegisteredCssClass);
- }
- if (levelSubMenuStyles != null && levelSubMenuStyles.Count > 0) {
- AddCssClass (ControlStyle, levelSubMenuStyles [0].CssClass);
- AddCssClass (ControlStyle, levelSubMenuStyles [0].RegisteredCssClass);
- }
- }
- else {
- // styles are not registered
- if (staticMenuStyle != null){
- ControlStyle.CopyFrom (staticMenuStyle);
- }
- if (levelSubMenuStyles != null && levelSubMenuStyles.Count > 0) {
- ControlStyle.CopyFrom (levelSubMenuStyles [0]);
- }
- }
+ Renderer.AddAttributesToRender (writer);
base.AddAttributesToRender (writer);
}
-
- void AddCssClass (Style style, string cssClass) {
- style.AddCssClass (cssClass);
- }
public override void RenderBeginTag (HtmlTextWriter writer)
{
string skipLinkText = SkipLinkText;
- if (!String.IsNullOrEmpty (skipLinkText)) {
- // <a href="#ID_SkipLink">
- writer.AddAttribute (HtmlTextWriterAttribute.Href, "#" + ClientID + "_SkipLink");
- writer.RenderBeginTag (HtmlTextWriterTag.A);
-
- // <img alt="" height="0" width="0" src="" style="border-width:0px;"/>
- writer.AddAttribute (HtmlTextWriterAttribute.Alt, skipLinkText);
- writer.AddAttribute (HtmlTextWriterAttribute.Height, "0");
- writer.AddAttribute (HtmlTextWriterAttribute.Width, "0");
-
- Page page = Page;
- ClientScriptManager csm;
-
- if (page != null)
- csm = page.ClientScript;
- else
- csm = new ClientScriptManager (null);
- writer.AddAttribute (HtmlTextWriterAttribute.Src, csm.GetWebResourceUrl (typeof (SiteMapPath), "transparent.gif"));
- writer.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, "0px");
- writer.RenderBeginTag (HtmlTextWriterTag.Img);
- writer.RenderEndTag ();
-
- writer.RenderEndTag (); // </a>
- }
+ if (!String.IsNullOrEmpty (skipLinkText))
+ Renderer.RenderBeginTag (writer, skipLinkText);
base.RenderBeginTag (writer);
}
{
base.RenderEndTag (writer);
- if (StaticDisplayLevels == 1 && MaximumDynamicDisplayLevels > 0)
- RenderDynamicMenu (writer, Items);
-
+ Renderer.RenderEndTag (writer);
+
string skipLinkText = SkipLinkText;
if (!String.IsNullOrEmpty (skipLinkText)) {
- writer.AddAttribute (HtmlTextWriterAttribute.Id, "SkipLink");
+ writer.AddAttribute (HtmlTextWriterAttribute.Id, ClientID + "_SkipLink");
writer.RenderBeginTag (HtmlTextWriterTag.A);
writer.RenderEndTag ();
}
protected internal override void RenderContents (HtmlTextWriter writer)
{
- RenderMenuBody (writer, Items, Orientation == Orientation.Vertical, false, false);
+ Renderer.RenderContents (writer);
}
- void RenderDynamicMenu (HtmlTextWriter writer, MenuItemCollection items) {
+ internal void RenderDynamicMenu (HtmlTextWriter writer, MenuItemCollection items)
+ {
for (int n = 0; n < items.Count; n++) {
if (DisplayChildren (items [n])) {
RenderDynamicMenu (writer, items [n]);
}
}
- void RenderMenuBeginTagAttributes (HtmlTextWriter writer, bool dynamic, int menuLevel) {
- writer.AddAttribute ("cellpadding", "0", false);
- writer.AddAttribute ("cellspacing", "0", false);
- writer.AddAttribute ("border", "0", false);
-
- if (!dynamic) {
- SubMenuStyle style = new SubMenuStyle ();
- FillMenuStyle (dynamic, menuLevel, style);
- style.AddAttributesToRender (writer);
- }
- }
-
- void FillMenuStyle (bool dynamic, int menuLevel, SubMenuStyle style) {
- if (Page.Header != null) {
- // styles are registered
- if (!dynamic && staticMenuStyle != null) {
- AddCssClass (style, staticMenuStyle.CssClass);
- AddCssClass (style, staticMenuStyle.RegisteredCssClass);
- }
- if (dynamic && dynamicMenuStyle != null) {
- AddCssClass (style, dynamicMenuStyle.CssClass);
- AddCssClass (style, dynamicMenuStyle.RegisteredCssClass);
- }
- if (levelSubMenuStyles != null && levelSubMenuStyles.Count > menuLevel) {
- AddCssClass (style, levelSubMenuStyles [menuLevel].CssClass);
- AddCssClass (style, levelSubMenuStyles [menuLevel].RegisteredCssClass);
- }
- }
- else {
- // styles are not registered
- if (!dynamic && staticMenuStyle != null) {
- style.CopyFrom (staticMenuStyle);
- }
- if (dynamic && dynamicMenuStyle != null) {
- style.CopyFrom (dynamicMenuStyle);
- }
- if (levelSubMenuStyles != null && levelSubMenuStyles.Count > menuLevel) {
- style.CopyFrom (levelSubMenuStyles [menuLevel]);
- }
- }
- }
-
- void RenderMenu (HtmlTextWriter writer, MenuItemCollection items, bool vertical, bool dynamic, int menuLevel, bool notLast)
- {
- RenderMenuBeginTag (writer, dynamic, menuLevel);
- RenderMenuBody (writer, items, vertical, dynamic, notLast);
- RenderMenuEndTag (writer);
- }
-
- void RenderMenuBeginTag (HtmlTextWriter writer, bool dynamic, int menuLevel)
- {
- RenderMenuBeginTagAttributes (writer, dynamic, menuLevel);
- writer.RenderBeginTag (HtmlTextWriterTag.Table);
- }
-
- void RenderMenuEndTag (HtmlTextWriter writer)
+ internal void RenderMenu (HtmlTextWriter writer, MenuItemCollection items, bool vertical, bool dynamic, int menuLevel, bool notLast)
{
- writer.RenderEndTag ();
- }
-
- void RenderMenuBody (HtmlTextWriter writer, MenuItemCollection items, bool vertical, bool dynamic, bool notLast) {
- if (!vertical)
- writer.RenderBeginTag (HtmlTextWriterTag.Tr);
-
- int count = items.Count;
- for (int n = 0; n < count; n++) {
- MenuItem item = items [n];
- Adapters.MenuAdapter adapter = Adapter as Adapters.MenuAdapter;
- if (adapter != null)
- adapter.RenderItem (writer, item, n);
- else
- RenderMenuItem (writer, item, (n + 1 == count) ? notLast : true, n == 0);
- }
-
- if (!vertical)
- writer.RenderEndTag (); // TR
- }
-
- void RenderMenuItemSpacing (HtmlTextWriter writer, Unit itemSpacing, bool vertical) {
- if (vertical) {
- writer.AddStyleAttribute ("height", itemSpacing.ToString ());
- writer.RenderBeginTag (HtmlTextWriterTag.Tr);
- writer.RenderBeginTag (HtmlTextWriterTag.Td);
- writer.RenderEndTag ();
- writer.RenderEndTag ();
- }
- else {
- writer.AddStyleAttribute ("width", itemSpacing.ToString ());
- writer.RenderBeginTag (HtmlTextWriterTag.Td);
- writer.RenderEndTag ();
- }
- }
-
- bool IsDynamicItem (MenuItem item) {
- return item.Depth + 1 > StaticDisplayLevels;
+ IMenuRenderer renderer = Renderer;
+
+ renderer.RenderMenuBeginTag (writer, dynamic, menuLevel);
+ renderer.RenderMenuBody (writer, items, vertical, dynamic, notLast);
+ renderer.RenderMenuEndTag (writer, dynamic, menuLevel);
}
- bool DisplayChildren (MenuItem item) {
+ internal bool DisplayChildren (MenuItem item)
+ {
return (item.Depth + 1 < StaticDisplayLevels + MaximumDynamicDisplayLevels) && item.ChildItems.Count > 0;
}
- internal void RenderItem (HtmlTextWriter writer, MenuItem item, int position) {
+ internal void RenderItem (HtmlTextWriter writer, MenuItem item, int position)
+ {
// notLast should be true if item or any of its ancestors is not a
// last child.
bool notLast = false;
}
child = parent;
}
-
- RenderMenuItem (writer, item, notLast, position == 0);
- }
-
- void RenderMenuItem (HtmlTextWriter writer, MenuItem item, bool notLast, bool isFirst) {
- bool displayChildren = DisplayChildren (item);
- bool dynamicChildren = displayChildren && (item.Depth + 1 >= StaticDisplayLevels);
- bool isDynamicItem = IsDynamicItem (item);
- bool vertical = (Orientation == Orientation.Vertical) || isDynamicItem;
-
- Unit itemSpacing = GetItemSpacing (item, isDynamicItem);
-
- if (itemSpacing != Unit.Empty && (item.Depth > 0 || !isFirst))
- RenderMenuItemSpacing (writer, itemSpacing, vertical);
-
- if(!String.IsNullOrEmpty(item.ToolTip))
- writer.AddAttribute (HtmlTextWriterAttribute.Title, item.ToolTip);
- if (vertical)
- writer.RenderBeginTag (HtmlTextWriterTag.Tr);
-
- string parentId = isDynamicItem ? "'" + item.Parent.Path + "'" : "null";
- if (dynamicChildren) {
- writer.AddAttribute ("onmouseover",
- "javascript:Menu_OverItem ('" + ClientID + "','" + item.Path + "'," + parentId + ")");
- writer.AddAttribute ("onmouseout",
- "javascript:Menu_OutItem ('" + ClientID + "','" + item.Path + "')");
- } else if (isDynamicItem) {
- writer.AddAttribute ("onmouseover",
- "javascript:Menu_OverDynamicLeafItem ('" + ClientID + "','" + item.Path + "'," + parentId + ")");
- writer.AddAttribute ("onmouseout",
- "javascript:Menu_OutItem ('" + ClientID + "','" + item.Path + "'," + parentId + ")");
- } else {
- writer.AddAttribute ("onmouseover",
- "javascript:Menu_OverStaticLeafItem ('" + ClientID + "','" + item.Path + "')");
- writer.AddAttribute ("onmouseout",
- "javascript:Menu_OutItem ('" + ClientID + "','" + item.Path + "')");
- }
-
- writer.RenderBeginTag (HtmlTextWriterTag.Td);
-
- // Top separator image
-
- if (isDynamicItem && DynamicTopSeparatorImageUrl != "") {
- writer.AddAttribute ("src", ResolveClientUrl (DynamicTopSeparatorImageUrl));
- writer.RenderBeginTag (HtmlTextWriterTag.Img);
- writer.RenderEndTag (); // IMG
- }
- else if (!isDynamicItem && StaticTopSeparatorImageUrl != "") {
- writer.AddAttribute ("src", ResolveClientUrl (StaticTopSeparatorImageUrl));
- writer.RenderBeginTag (HtmlTextWriterTag.Img);
- writer.RenderEndTag (); // IMG
- }
-
- // Menu item box
-
- MenuItemStyle style = new MenuItemStyle ();
- if (Page.Header != null) {
- // styles are registered
- if (!isDynamicItem && staticMenuItemStyle != null) {
- AddCssClass (style, staticMenuItemStyle.CssClass);
- AddCssClass (style, staticMenuItemStyle.RegisteredCssClass);
- }
- if (isDynamicItem && dynamicMenuItemStyle != null) {
- AddCssClass (style, dynamicMenuItemStyle.CssClass);
- AddCssClass (style, dynamicMenuItemStyle.RegisteredCssClass);
- }
- if (levelMenuItemStyles != null && levelMenuItemStyles.Count > item.Depth) {
- AddCssClass (style, levelMenuItemStyles [item.Depth].CssClass);
- AddCssClass (style, levelMenuItemStyles [item.Depth].RegisteredCssClass);
- }
- if (item == SelectedItem) {
- if (!isDynamicItem && staticSelectedStyle != null) {
- AddCssClass (style, staticSelectedStyle.CssClass);
- AddCssClass (style, staticSelectedStyle.RegisteredCssClass);
- }
- if (isDynamicItem && dynamicSelectedStyle != null) {
- AddCssClass (style, dynamicSelectedStyle.CssClass);
- AddCssClass (style, dynamicSelectedStyle.RegisteredCssClass);
- }
- if (levelSelectedStyles != null && levelSelectedStyles.Count > item.Depth) {
- AddCssClass (style, levelSelectedStyles [item.Depth].CssClass);
- AddCssClass (style, levelSelectedStyles [item.Depth].RegisteredCssClass);
- }
- }
- }
- else {
- // styles are not registered
- if (!isDynamicItem && staticMenuItemStyle != null) {
- style.CopyFrom (staticMenuItemStyle);
- }
- if (isDynamicItem && dynamicMenuItemStyle != null) {
- style.CopyFrom (dynamicMenuItemStyle);
- }
- if (levelMenuItemStyles != null && levelMenuItemStyles.Count > item.Depth) {
- style.CopyFrom (levelMenuItemStyles [item.Depth]);
- }
- if (item == SelectedItem) {
- if (!isDynamicItem && staticSelectedStyle != null) {
- style.CopyFrom (staticSelectedStyle);
- }
- if (isDynamicItem && dynamicSelectedStyle != null) {
- style.CopyFrom (dynamicSelectedStyle);
- }
- if (levelSelectedStyles != null && levelSelectedStyles.Count > item.Depth) {
- style.CopyFrom (levelSelectedStyles [item.Depth]);
- }
- }
- }
- style.AddAttributesToRender (writer);
-
- writer.AddAttribute ("id", GetItemClientId (item, "i"));
-
- writer.AddAttribute ("cellpadding", "0", false);
- writer.AddAttribute ("cellspacing", "0", false);
- writer.AddAttribute ("border", "0", false);
- writer.AddAttribute ("width", "100%", false);
- writer.RenderBeginTag (HtmlTextWriterTag.Table);
- writer.RenderBeginTag (HtmlTextWriterTag.Tr);
-
- // Menu item text
-
- if (vertical)
- writer.AddStyleAttribute (HtmlTextWriterStyle.Width, "100%");
- if (!ItemWrap)
- writer.AddStyleAttribute ("white-space", "nowrap");
- writer.RenderBeginTag (HtmlTextWriterTag.Td);
-
- RenderItemHref (writer, item);
-
- Style linkStyle = new Style ();
- if (Page.Header != null) {
- // styles are registered
- AddCssClass (linkStyle, ControlLinkStyle.RegisteredCssClass);
-
- if (!isDynamicItem && staticMenuItemStyle != null) {
- AddCssClass (linkStyle, staticMenuItemStyle.CssClass);
- AddCssClass (linkStyle, staticMenuItemLinkStyle.RegisteredCssClass);
- }
- if (isDynamicItem && dynamicMenuItemStyle != null) {
- AddCssClass (linkStyle, dynamicMenuItemStyle.CssClass);
- AddCssClass (linkStyle, dynamicMenuItemLinkStyle.RegisteredCssClass);
- }
- if (levelMenuItemStyles != null && levelMenuItemStyles.Count > item.Depth) {
- AddCssClass (linkStyle, levelMenuItemStyles [item.Depth].CssClass);
- AddCssClass (linkStyle, levelMenuItemLinkStyles [item.Depth].RegisteredCssClass);
- }
- if (item == SelectedItem) {
- if (!isDynamicItem && staticSelectedStyle != null) {
- AddCssClass (linkStyle, staticSelectedStyle.CssClass);
- AddCssClass (linkStyle, staticSelectedLinkStyle.RegisteredCssClass);
- }
- if (isDynamicItem && dynamicSelectedStyle != null) {
- AddCssClass (linkStyle, dynamicSelectedStyle.CssClass);
- AddCssClass (linkStyle, dynamicSelectedLinkStyle.RegisteredCssClass);
- }
- if (levelSelectedStyles != null && levelSelectedStyles.Count > item.Depth) {
- AddCssClass (linkStyle, levelSelectedStyles [item.Depth].CssClass);
- AddCssClass (linkStyle, levelSelectedLinkStyles [item.Depth].RegisteredCssClass);
- }
- }
- }
- else {
- // styles are not registered
- linkStyle.CopyFrom (ControlLinkStyle);
-
- if (!isDynamicItem && staticMenuItemStyle != null) {
- linkStyle.CopyFrom (staticMenuItemLinkStyle);
- }
- if (isDynamicItem && dynamicMenuItemStyle != null) {
- linkStyle.CopyFrom (dynamicMenuItemLinkStyle);
- }
- if (levelMenuItemStyles != null && levelMenuItemStyles.Count > item.Depth) {
- linkStyle.CopyFrom (levelMenuItemLinkStyles [item.Depth]);
- }
- if (item == SelectedItem) {
- if (!isDynamicItem && staticSelectedStyle != null) {
- linkStyle.CopyFrom (staticSelectedLinkStyle);
- }
- if (isDynamicItem && dynamicSelectedStyle != null) {
- linkStyle.CopyFrom (dynamicSelectedLinkStyle);
- }
- if (levelSelectedStyles != null && levelSelectedStyles.Count > item.Depth) {
- linkStyle.CopyFrom (levelSelectedLinkStyles [item.Depth]);
- }
- }
-
- linkStyle.AlwaysRenderTextDecoration = true;
- }
- linkStyle.AddAttributesToRender (writer);
-
- writer.AddAttribute ("id", GetItemClientId (item, "l"));
-
- if (item.Depth > 0 && !isDynamicItem) {
- double value;
-#if NET_4_0
- Unit unit = StaticSubMenuIndent;
- if (unit == Unit.Empty)
- value = 16;
- else
- value = unit.Value;
-#else
- value = StaticSubMenuIndent.Value;
-#endif
- Unit indent = new Unit (value * item.Depth, StaticSubMenuIndent.Type);
- writer.AddStyleAttribute (HtmlTextWriterStyle.MarginLeft, indent.ToString ());
- }
- writer.RenderBeginTag (HtmlTextWriterTag.A);
- RenderItemContent (writer, item, isDynamicItem);
- writer.RenderEndTag (); // A
-
- writer.RenderEndTag (); // TD
-
- // Popup image
-
- if (dynamicChildren) {
- string popOutImage = GetPopOutImage (item, isDynamicItem);
- if (popOutImage != null) {
- writer.RenderBeginTag (HtmlTextWriterTag.Td);
- writer.AddAttribute ("src", ResolveClientUrl (popOutImage));
- writer.AddAttribute ("border", "0");
- string toolTip = String.Format (isDynamicItem ? DynamicPopOutImageTextFormatString : StaticPopOutImageTextFormatString, item.Text);
- writer.AddAttribute (HtmlTextWriterAttribute.Alt, toolTip);
- writer.RenderBeginTag (HtmlTextWriterTag.Img);
- writer.RenderEndTag (); // IMG
- writer.RenderEndTag (); // TD
- }
- }
-
- writer.RenderEndTag (); // TR
- writer.RenderEndTag (); // TABLE
-
- writer.RenderEndTag (); // TD
-
- if (!vertical && itemSpacing == Unit.Empty && (notLast || (displayChildren && !dynamicChildren))) {
- writer.AddStyleAttribute ("width", "3px");
- writer.RenderBeginTag (HtmlTextWriterTag.Td);
- writer.RenderEndTag ();
- }
-
- // Bottom separator image
- string separatorImg = item.SeparatorImageUrl;
- if (separatorImg.Length == 0) {
- if (isDynamicItem)
- separatorImg = DynamicBottomSeparatorImageUrl;
- else
- separatorImg = StaticBottomSeparatorImageUrl;
- }
- if (separatorImg.Length > 0) {
- if (!vertical)
- writer.RenderBeginTag (HtmlTextWriterTag.Td);
- writer.AddAttribute ("src", ResolveClientUrl (separatorImg));
- writer.RenderBeginTag (HtmlTextWriterTag.Img);
- writer.RenderEndTag (); // IMG
- if (!vertical)
- writer.RenderEndTag (); // TD
- }
-
- if (vertical)
- writer.RenderEndTag (); // TR
-
- if (itemSpacing != Unit.Empty)
- RenderMenuItemSpacing (writer, itemSpacing, vertical);
-
- // Submenu
-
- if (displayChildren && !dynamicChildren) {
- if (vertical)
- writer.RenderBeginTag (HtmlTextWriterTag.Tr);
- writer.RenderBeginTag (HtmlTextWriterTag.Td);
- writer.AddAttribute ("width", "100%");
- RenderMenu (writer, item.ChildItems, Orientation == Orientation.Vertical, false, item.Depth + 1, notLast);
- if (item.Depth + 2 == StaticDisplayLevels)
- RenderDynamicMenu (writer, item.ChildItems);
- writer.RenderEndTag (); // TD
- if (vertical)
- writer.RenderEndTag (); // TR
- }
-
+ Renderer.RenderMenuItem (writer, item, notLast, position == 0);
}
- void RenderItemContent (HtmlTextWriter writer, MenuItem item, bool isDynamicItem) {
- if (_menuItemControls!=null && _menuItemControls [item] != null) {
+ internal void RenderItemContent (HtmlTextWriter writer, MenuItem item, bool isDynamicItem)
+ {
+ if (_menuItemControls!=null && _menuItemControls [item] != null)
((Control) _menuItemControls [item]).Render (writer);
- }
- else {
-
- if (!String.IsNullOrEmpty (item.ImageUrl)) {
- writer.AddAttribute (HtmlTextWriterAttribute.Src, ResolveClientUrl (item.ImageUrl));
- writer.AddAttribute (HtmlTextWriterAttribute.Alt, item.ToolTip);
- writer.AddStyleAttribute (HtmlTextWriterStyle.BorderStyle, "none");
- writer.AddStyleAttribute (HtmlTextWriterStyle.VerticalAlign, "middle");
- writer.RenderBeginTag (HtmlTextWriterTag.Img);
- writer.RenderEndTag (); // IMG
- }
- if (isDynamicItem && DynamicItemFormatString.Length > 0) {
- writer.Write (String.Format (DynamicItemFormatString, item.Text));
- }
- else if (!isDynamicItem && StaticItemFormatString.Length > 0) {
- writer.Write (String.Format (StaticItemFormatString, item.Text));
- }
- else {
- writer.Write (item.Text);
- }
- }
+ Renderer.RenderItemContent (writer, item, isDynamicItem);
}
- Unit GetItemSpacing (MenuItem item, bool dynamic)
+ internal Unit GetItemSpacing (MenuItem item, bool dynamic)
{
Unit itemSpacing = Unit.Empty;
else
return Unit.Empty;
}
-
- string GetPopOutImage (MenuItem item, bool isDynamicItem)
- {
- if (item.PopOutImageUrl != "")
- return item.PopOutImageUrl;
-
- if (isDynamicItem) {
- if (DynamicPopOutImageUrl != "")
- return DynamicPopOutImageUrl;
- if (DynamicEnableDefaultPopOutImage)
- return Page.ClientScript.GetWebResourceUrl (typeof (Menu), "arrow_plus.gif");
- } else {
- if (StaticPopOutImageUrl != "")
- return StaticPopOutImageUrl;
- if (StaticEnableDefaultPopOutImage)
- return Page.ClientScript.GetWebResourceUrl (typeof (Menu), "arrow_plus.gif");
- }
- return null;
- }
-
- void RenderItemHref (HtmlTextWriter writer, MenuItem item)
- {
- if (!item.BranchEnabled) {
- writer.AddAttribute ("disabled", "true", false);
- }
- else if (!item.Selectable) {
- writer.AddAttribute ("href", "#", false);
- writer.AddStyleAttribute ("cursor", "text");
- }
- else if (item.NavigateUrl != "") {
- string target = item.Target != "" ? item.Target : Target;
-#if TARGET_J2EE
- string navUrl = ResolveClientUrl (item.NavigateUrl, String.Compare (target, "_blank", StringComparison.InvariantCultureIgnoreCase) != 0);
-#else
- string navUrl = ResolveClientUrl (item.NavigateUrl);
-#endif
- writer.AddAttribute ("href", navUrl);
- if (target != "")
- writer.AddAttribute ("target", target);
- }
- else {
- writer.AddAttribute ("href", GetClientEvent (item));
- }
-
- }
-
- string GetItemClientId (MenuItem item, string sufix)
- {
- return ClientID + "_" + item.Path + sufix;
- }
-
- string GetClientEvent (MenuItem item)
- {
- return Page.ClientScript.GetPostBackClientHyperlink (this, item.Path, true);
- }
class MenuTemplateWriter : TextWriter
{
--- /dev/null
+//
+// Authors:
+// Marek Habersack <grendel@twistedcode.net>
+//
+// (C) 2010 Novell, Inc (http://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.Collections.Generic;
+using System.Drawing;
+using System.Globalization;
+using System.Text;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.HtmlControls;
+
+namespace System.Web.UI.WebControls
+{
+ sealed class MenuListRenderer : BaseMenuRenderer
+ {
+ bool haveDynamicPopOut;
+
+ public override HtmlTextWriterTag Tag {
+ get { return HtmlTextWriterTag.Div; }
+
+ }
+
+ public MenuListRenderer (Menu owner)
+ : base (owner)
+ {
+ }
+
+ public override void PreRender (Page page, HtmlHead head, ClientScriptManager csm, string cmenu, StringBuilder script)
+ {
+ Menu owner = Owner;
+ script.AppendFormat ("new Sys.WebForms.Menu ({{ element: '{0}', disappearAfter: {1}, orientation: '{2}', tabIndex: {3}, disabled: {4} }});",
+ owner.ClientID,
+ ClientScriptManager.GetScriptLiteral (owner.DisappearAfter),
+ owner.Orientation.ToString ().ToLowerInvariant (),
+ ClientScriptManager.GetScriptLiteral (owner.TabIndex),
+ (!owner.Enabled).ToString ().ToLowerInvariant ());
+
+ Type mt = typeof (Menu);
+ if (!csm.IsClientScriptIncludeRegistered (mt, "MenuModern.js")) {
+ string url = csm.GetWebResourceUrl (mt, "MenuModern.js");
+ csm.RegisterClientScriptInclude (mt, "MenuModern.js", url);
+ }
+
+ if (!owner.IncludeStyleBlock)
+ return;
+
+ if (head == null)
+ throw new InvalidOperationException ("Using Menu.IncludeStyleBlock requires Page.Header to be non-null (e.g. <head runat=\"server\" />).");
+
+ StyleBlock block = new StyleBlock (owner.ClientID);
+ Style style = owner.ControlStyle;
+ bool horizontal = owner.Orientation == Orientation.Horizontal;
+ if (style != null)
+ block.RegisterStyle (style);
+
+ // #MenuId img.icon { border-style:none;vertical-align:middle; }
+ block.RegisterStyle (HtmlTextWriterStyle.BorderStyle, "none", "img.icon")
+ .Add (HtmlTextWriterStyle.VerticalAlign, "middle");
+
+ // #MenuId img.separator { border-style:none;display:block; }
+ block.RegisterStyle (HtmlTextWriterStyle.BorderStyle, "none", "img.separator")
+ .Add (HtmlTextWriterStyle.Display, "block");
+
+ // #MenuId img.horizontal-separator { border-style:none;vertical-align:middle; }
+ if (horizontal)
+ block.RegisterStyle (HtmlTextWriterStyle.BorderStyle, "none", "img.horizontal-separator")
+ .Add (HtmlTextWriterStyle.VerticalAlign, "middle");
+
+ // #MenuId ul { list-style:none;margin:0;padding:0;width:auto; }
+ block.RegisterStyle (HtmlTextWriterStyle.ListStyleType, "none", "ul")
+ .Add (HtmlTextWriterStyle.Margin, "0")
+ .Add (HtmlTextWriterStyle.Padding, "0")
+ .Add (HtmlTextWriterStyle.Width, "auto");
+
+ SubMenuStyle sms = owner.StaticMenuStyleInternal;
+ if (sms != null) {
+ // #MenuId ul.static { ... }
+ block.RegisterStyle (sms, "ul.static");
+ }
+
+ // #MenuId ul.dynamic { ...; z-index:1; ... }
+ NamedCssStyleCollection css = block.RegisterStyle ("ul.dynamic");
+ sms = owner.DynamicMenuStyleInternal;
+ if (sms != null) {
+ sms.ForeColor = Color.Empty;
+ css.Add (sms);
+ }
+
+ css.Add (HtmlTextWriterStyle.ZIndex, "1");
+ int num = owner.DynamicHorizontalOffset;
+ if (num != 0)
+ css.Add (HtmlTextWriterStyle.MarginLeft, num + "px");
+ num = owner.DynamicVerticalOffset;
+ if (num != 0)
+ css.Add (HtmlTextWriterStyle.MarginTop, num + "px");
+
+ // BUG: rendering of LevelSubMenuStyles throws InvalidCastException on .NET
+ // but I suspect the code it is supposed to generate is as follows:
+ //
+ // #MenuId ul.levelX { ... }
+ //
+ // so we will just ignore the bug and go with the above code.
+ RenderLevelStyles (block, num, owner.LevelSubMenuStyles, "ul.level");
+
+ // #MenuId a { text-decoration:none;white-space:nowrap;display:block; }
+ block.RegisterStyle (HtmlTextWriterStyle.TextDecoration, "none", "a")
+ .Add (HtmlTextWriterStyle.WhiteSpace, "nowrap")
+ .Add (HtmlTextWriterStyle.Display, "block");
+
+ // #MenuId a.static { ... }
+ RenderAnchorStyle (block, owner.StaticMenuItemStyleInternal, "a.static");
+
+ // #MenuId a.popout { background-image:url("...");background-repeat:no-repeat;background-position:right center;padding-right:14px; }
+ bool needDynamicPopOut = false;
+ string str = owner.StaticPopOutImageUrl;
+
+ css = null;
+ string urlFormat = "url(\"{0}\")";
+ if (String.IsNullOrEmpty (str)) {
+ if (owner.StaticEnableDefaultPopOutImage)
+ css = block.RegisterStyle (HtmlTextWriterStyle.BackgroundImage, String.Format (urlFormat, GetArrowResourceUrl (owner)), "a.popout");
+ else
+ needDynamicPopOut = true;
+ } else {
+ css = block.RegisterStyle (HtmlTextWriterStyle.BackgroundImage, String.Format (urlFormat, str), "a.popout");
+ needDynamicPopOut = true;
+ }
+
+ if (css != null)
+ css.Add ("background-repeat", "no-repeat")
+ .Add ("background-position", "right center")
+ .Add (HtmlTextWriterStyle.PaddingRight, "14px");
+
+ // #MenuId a.popout-dynamic { background:url("...") no-repeat right center;padding-right:14px; }
+ str = owner.DynamicPopOutImageUrl;
+ bool haveDynamicUrl = !String.IsNullOrEmpty (str);
+ css = null;
+ if (needDynamicPopOut || haveDynamicUrl) {
+ urlFormat = "url(\"{0}\") no-repeat right center";
+ if (!haveDynamicUrl) {
+ if (owner.DynamicEnableDefaultPopOutImage)
+ css = block.RegisterStyle (HtmlTextWriterStyle.BackgroundImage, String.Format (urlFormat, GetArrowResourceUrl (owner)), "a.popout-dynamic");
+ } else
+ css = block.RegisterStyle (HtmlTextWriterStyle.BackgroundImage, String.Format (urlFormat, str), "a.popout-dynamic");
+ }
+ if (css != null) {
+ haveDynamicPopOut = true;
+ css.Add (HtmlTextWriterStyle.PaddingRight, "14px");
+ }
+
+ // #MenuId a.dynamic { ... }
+ RenderAnchorStyle (block, owner.DynamicMenuItemStyleInternal, "a.dynamic");
+
+ num = owner.StaticDisplayLevels;
+ Unit ssmi = owner.StaticSubMenuIndent;
+ string unitName;
+ double indent;
+
+ if (ssmi == Unit.Empty) {
+ unitName = "em";
+ indent = 1;
+ } else {
+ unitName = Unit.GetExtension (ssmi.Type);
+ indent = ssmi.Value;
+ }
+
+ // #MenuId a.levelX { ... }
+ RenderLevelStyles (block, num, owner.LevelMenuItemStyles, "a.level", unitName, indent);
+
+ // #MenuId a.selected.levelX { ... }
+ RenderLevelStyles (block, num, owner.LevelSelectedStyles, "a.selected.level");
+
+ // #MenuId a.static.selected { ...;text-decoration:none; }
+ RenderAnchorStyle (block, owner.StaticSelectedStyleInternal, "a.static.selected");
+
+ // #MenuId a.dynamic.selected { ...;text-decoration:none;border-style:none; }
+ RenderAnchorStyle (block, owner.DynamicSelectedStyleInternal, "a.dynamic.selected");
+
+ // #MenuId a.static.highlighted { ... }
+ style = owner.StaticHoverStyleInternal;
+ if (style != null)
+ block.RegisterStyle (style, "a.static.highlighted");
+
+ // #MenuId a.dynamic.highlighted { ... }
+ style = owner.DynamicHoverStyleInternal;
+ if (style != null)
+ block.RegisterStyle (style, "a.dynamic.highlighted");
+
+ head.Controls.Add (block);
+ }
+
+ public override void RenderBeginTag (HtmlTextWriter writer, string skipLinkText)
+ {
+ Menu owner = Owner;
+
+ // <a href="#ID_SkipLink">
+ writer.AddAttribute (HtmlTextWriterAttribute.Href, "#" + owner.ClientID + "_SkipLink");
+ writer.RenderBeginTag (HtmlTextWriterTag.A);
+
+ // <img alt="" height="0" width="0" src="" style="border-width:0px;"/>
+ writer.AddAttribute (HtmlTextWriterAttribute.Alt, skipLinkText);
+ Page page = owner.Page;
+ ClientScriptManager csm = page != null ? page.ClientScript : new ClientScriptManager (null);
+
+ writer.AddAttribute (HtmlTextWriterAttribute.Src, csm.GetWebResourceUrl (typeof (SiteMapPath), "transparent.gif"));
+ writer.AddAttribute (HtmlTextWriterAttribute.Width, "0");
+ writer.AddAttribute (HtmlTextWriterAttribute.Height, "0");
+
+ writer.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, "0px");
+ writer.RenderBeginTag (HtmlTextWriterTag.Img);
+ writer.RenderEndTag ();
+
+ writer.RenderEndTag (); // </a>
+ }
+
+ public override void RenderEndTag (HtmlTextWriter writer)
+ {
+ }
+
+ public override void AddAttributesToRender (HtmlTextWriter writer)
+ {
+ // do nothing
+ }
+
+ public override void RenderContents (HtmlTextWriter writer)
+ {
+ Menu owner = Owner;
+ MenuItemCollection items = owner.Items;
+ owner.RenderMenu (writer, items, owner.Orientation == Orientation.Vertical, false, 0, items.Count > 1);
+ }
+
+ public override void RenderMenuBeginTag (HtmlTextWriter writer, bool dynamic, int menuLevel)
+ {
+ if (dynamic || menuLevel == 0) {
+ var style = new SubMenuStyle ();
+ AddCssClass (style, "level" + (menuLevel + 1));
+ FillMenuStyle (null, dynamic, menuLevel, style);
+ style.AddAttributesToRender (writer);
+ writer.RenderBeginTag (HtmlTextWriterTag.Ul);
+ }
+ }
+
+ public override void RenderMenuEndTag (HtmlTextWriter writer, bool dynamic, int menuLevel)
+ {
+ if (dynamic || menuLevel == 0)
+ base.RenderMenuEndTag (writer, dynamic, menuLevel);
+ }
+
+ public override void RenderMenuBody (HtmlTextWriter writer, MenuItemCollection items, bool vertical, bool dynamic, bool notLast)
+ {
+ Menu owner = Owner;
+ int count = items.Count;
+ var oc = new OwnerContext (this);
+
+ for (int n = 0; n < count; n++) {
+ MenuItem item = items [n];
+ Adapters.MenuAdapter adapter = owner.Adapter as Adapters.MenuAdapter;
+ if (adapter != null)
+ adapter.RenderItem (writer, item, n);
+ else
+ RenderMenuItem (writer, item, vertical, (n + 1) == count ? notLast : true, n == 0, oc);
+ }
+ }
+
+ protected override void RenderMenuItem (HtmlTextWriter writer, MenuItem item, bool vertical, bool notLast, bool isFirst, OwnerContext oc)
+ {
+ Menu owner = Owner;
+ string clientID = oc.ClientID;
+ bool displayChildren = owner.DisplayChildren (item);
+ bool isDynamicItem = IsDynamicItem (owner, item);
+ int itemLevel = item.Depth + 1;
+ string str;
+
+ writer.RenderBeginTag (HtmlTextWriterTag.Li);
+
+ if (isDynamicItem)
+ RenderSeparatorImage (owner, writer, oc.DynamicTopSeparatorImageUrl, true);
+ else
+ RenderSeparatorImage (owner, writer, oc.StaticTopSeparatorImageUrl, true);
+
+ var linkStyle = new Style ();
+ if (displayChildren && (isDynamicItem || itemLevel >= oc.StaticDisplayLevels))
+ AddCssClass (linkStyle, isDynamicItem && haveDynamicPopOut ? "popout-dynamic" : "popout");
+ AddCssClass (linkStyle, "level" + itemLevel);
+
+ MenuItemStyleCollection levelStyles = oc.LevelMenuItemStyles;
+ if (levelStyles != null && levelStyles.Count >= itemLevel) {
+ MenuItemStyle style = levelStyles [itemLevel - 1];
+ string cssClass = style.CssClass;
+ if (!String.IsNullOrEmpty (cssClass))
+ AddCssClass (linkStyle, cssClass);
+ }
+
+ if (owner.SelectedItem == item)
+ AddCssClass (linkStyle, "selected");
+
+ str = item.ToolTip;
+ if (!String.IsNullOrEmpty (str))
+ writer.AddAttribute ("title", str);
+ linkStyle.AddAttributesToRender (writer);
+ RenderItemHref (owner, writer, item);
+ writer.RenderBeginTag (HtmlTextWriterTag.A);
+ owner.RenderItemContent (writer, item, isDynamicItem);
+ writer.RenderEndTag ();
+
+ str = item.SeparatorImageUrl;
+ if (String.IsNullOrEmpty (str)) {
+ if (isDynamicItem)
+ str = oc.DynamicBottomSeparatorImageUrl;
+ else
+ str = oc.StaticBottomSeparatorImageUrl;
+ }
+ RenderSeparatorImage (owner, writer, str, true);
+
+ // if (itemLevel == 1)
+ // writer.RenderEndTag (); // </li>
+
+ if (displayChildren)
+ owner.RenderMenu (writer, item.ChildItems, vertical, isDynamicItem, itemLevel, notLast);
+
+ if (itemLevel > 1)
+ writer.RenderEndTag (); // </li>
+ }
+
+ public override bool IsDynamicItem (Menu owner, MenuItem item)
+ {
+ if (owner == null)
+ throw new ArgumentNullException ("owner");
+
+ if (item == null)
+ throw new ArgumentNullException ("item");
+
+ return item.Depth + 1 >= Owner.StaticDisplayLevels;
+ }
+
+ NamedCssStyleCollection RenderAnchorStyle (StyleBlock block, Style style, string styleName)
+ {
+ if (style == null || block == null)
+ return null;
+
+ style.AlwaysRenderTextDecoration = true;
+ NamedCssStyleCollection css = block.RegisterStyle (style, styleName);
+ if (style.BorderStyle == BorderStyle.NotSet)
+ css.Add (HtmlTextWriterStyle.BorderStyle, "none");
+
+ return css;
+ }
+
+ void RenderLevelStyles (StyleBlock block, int num, IList levelStyles, string name, string unitName = null, double indent = 0)
+ {
+ int stylesCount = levelStyles != null ? levelStyles.Count : 0;
+ bool haveStyles = stylesCount > 0;
+ if (!haveStyles || block == null)
+ return;
+
+ NamedCssStyleCollection css;
+ Style style;
+ bool haveIndent = !String.IsNullOrEmpty (unitName) && indent != 0;
+ for (int i = 0; i < stylesCount; i++) {
+ if ((i == 0 && !haveStyles))
+ continue;
+
+ css = block.RegisterStyle (name + (i + 1));
+ if (haveStyles && stylesCount > i) {
+ style = levelStyles [i] as Style;
+ if (style != null) {
+ style.AlwaysRenderTextDecoration = true;
+ css.CopyFrom (style.GetStyleAttributes (null));
+ }
+ }
+
+ if (haveIndent && i > 0 && i < num) {
+ css.Add (HtmlTextWriterStyle.PaddingLeft, indent.ToString (CultureInfo.InvariantCulture) + unitName);
+ indent += indent;
+ }
+ }
+ }
+ }
+}
--- /dev/null
+/*
+ * Authors:
+ * Marek Habersack <grendel@twistedcode.net>
+ *
+ * (C) 2010 Novell, Inc (http: *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.
+ *
+ * This code serves only the List rendering mode of the Menu control in Mono
+ *
+ */
+if (!window.Sys) { window.Sys = {}; }
+if (!Sys.WebForms) { Sys.WebForms = {}; }
+
+Sys.WebForms.Menu = function (options)
+{
+ if (options == null)
+ throw "Sys.WebForms.Menu constructor requires options to be not null.";
+
+ if (options.element == null)
+ throw "options.element is required.";
+
+ if (options.orientation == null)
+ throw "options.orientation is required.";
+
+ if (typeof (options.element) == "string")
+ this.menuID = options.element;
+ else
+ this.mainElement = options.element;
+
+ this.disappearAfter = options.disappearAfter || 500;
+ this.orientation = options.orientation;
+ this.tabIndex = options.tabIndex || 0;
+ this.disabled = options.disabled || false;
+ this.level = options.level || 0;
+ this.menuItemIndex = 0;
+
+ if (this.level != 0) {
+ if (options.parentMenu == null)
+ throw "options.parentMenu is required for all submenus.";
+
+ this.parentMenu = options.parentMenu;
+ }
+
+ if (this.mainElement == null) {
+ this.mainElement = document.getElementById (this.menuID);
+ if (this.mainElement == null)
+ throw "Unable to find menu element with id '" + this.menuID + "'.";
+
+ if (this.mainElement.tagName != "DIV")
+ throw "This script must be used only when the menu containing element is DIV.";
+ }
+
+ /* Due to the way we generate the menu in the list mode, every submenu other than the root one is dynamic */
+ if (this.level > 1) {
+ this.menuType = "dynamic";
+ if (options.parentMenu == null)
+ throw "options.parent is required for all submenus.";
+
+ var subMenuId = Sys.WebForms.Menu.Helpers.getNextSubMenuId ();
+ this.parentMenu = options.parentMenu;
+ this.orientation = this.parentMenu.orientation;
+ this.path = this.parentMenu.path + subMenuId;
+ this.menuID = this.parentMenu.menuID;
+ if (this.mainElement.id == null || this.mainElement.id == "")
+ this.mainElement.id = this.menuID + ":submenu:" + subMenuId;
+ } else {
+ this.menuType = "static";
+ if (this.level == 1) {
+ this.menuID = this.parentMenu.menuID;
+ this.orientation = this.parentMenu.orientation;
+ }
+ this.parentMenu = null;
+ this.path = "0";
+ this.mainElement.setAttribute ("tabindex", this.tabIndex);
+ this.mainElement.setAttribute ("role", this.orientation == "vertical" ? "menu" : "menubar");
+ with (this.mainElement.style) {
+ width = "auto";
+ position = "relative";
+ }
+ }
+
+ if (this.level > 0) {
+ Sys.WebForms.Menu.Helpers.appendCssClass (this.mainElement, this.menuType);
+ }
+
+ if (this.level <= 1)
+ Sys.WebForms.Menu.Helpers.setFloat (this.mainElement, "left");
+
+ this.loadItems ();
+}
+
+Sys.WebForms.Menu.Helpers = {
+ __subMenuCounter: 0,
+ __menuItems: [],
+ __popupToClose: null,
+
+ setPopupToClose: function (element) {
+ this.__popupToClose = element;
+ },
+
+ getPopupToClose: function () {
+ return this.__popupToClose;
+ },
+
+ setFloat: function (element, side) {
+ /* For standards-compliant browsers */
+ element.style.cssFloat = "left";
+
+ /* For IE */
+ element.style.styleFloat = "left";
+ },
+
+ appendCssClass: function (element, className) {
+ if (element == null || className == null)
+ return;
+
+ var cname = element.className;
+ if (cname == null || cname == "")
+ cname = className;
+ else
+ cname += " " + className;
+
+ element.className = cname;
+ },
+
+ getNextSubMenuId: function () {
+ return ++this.__subMenuCounter;
+ },
+
+ addMenuItem: function (item) {
+ if (item == null)
+ return;
+
+ if (!(item instanceof Sys.WebForms.MenuItem))
+ throw "item must be an instance of Sys.WebForms.MenuItem";
+
+ if (this.__menuItems [item.path] != null)
+ throw "item already exists (path " + item.path + ")";
+
+ this.__menuItems [item.path] = item;
+ },
+
+ getMenuItem: function (element) {
+ if (element == null)
+ return null;
+
+ var itemPath = element ["__MonoMenuItemPath"];
+ if (itemPath == null)
+ return null;
+
+ return this.__menuItems [itemPath];
+ },
+
+ addEventHandler: function (element, eventType, handler, capture) {
+ /* There's also element.attachEvent, but it changes handler semantics on IE, so we don't
+ * even take it into consideration.
+ */
+ if (element.addEventListener)
+ element.addEventListener(eventType, handler, !!capture);
+ else
+ element ["on" + eventType] = handler;
+ }
+};
+
+Sys.WebForms.Menu.prototype.loadItems = function ()
+{
+ var children = this.mainElement.childNodes;
+ var count = children.length;
+ var child;
+
+ for (var i = 0; i < count; i++) {
+ child = children [i];
+ if (child.nodeType != 1)
+ continue;
+
+ if (child.tagName == "UL") {
+ var submenu = new Sys.WebForms.Menu ({ element: child, disappearAfter: this.disappearAfter, orientation: this.orientation,
+ disabled: this.disabled, level: this.level + 1, tabIndex: this.tabIndex, parentMenu: this});
+ } else if (child.tagName == "LI") {
+ var menuItem = new Sys.WebForms.MenuItem ({ element: child, menuType: this.menuType, disappearAfter: this.disappearAfter, orientation: this.orientation,
+ disabled: this.disabled, level: this.level + 1, tabIndex: this.tabIndex, parentMenu: this});
+ }
+ }
+}
+
+Sys.WebForms.Menu.prototype.getNextMenuItemId = function ()
+{
+ return ++this.menuItemIndex;
+}
+
+Sys.WebForms.MenuItem = function (options)
+{
+ if (options == null)
+ throw "Sys.WebForms.MenuItem constructor requires options to be not null.";
+
+ if (options.element == null)
+ throw "options.element must be set.";
+
+ if (options.menuType == null)
+ throw "options.menuType must be set.";
+
+ if (options.parentMenu == null)
+ throw "options.parentMenu is required.";
+
+ this.element = options.element;
+ this.menuType = options.menuType;
+ this.parentMenu = options.parentMenu;
+ this.path = this.parentMenu.path + this.parentMenu.getNextMenuItemId ();
+
+ var children = this.element.childNodes;
+ var child;
+ var subMenu = null;
+
+ for (var i = 0; i < children.length; i++) {
+ child = children [i];
+ if (child.nodeType != 1)
+ continue;
+
+ switch (child.tagName) {
+ case "A":
+ Sys.WebForms.Menu.Helpers.appendCssClass (child, this.menuType);
+ child.setAttribute ("tabindex", "-1");
+ break;
+
+ case "UL":
+ this.subMenu = new Sys.WebForms.Menu ({ element: child, disappearAfter: options.disappearAfter, orientation: options.orientation,
+ disabled: options.disabled, level: options.level, tabIndex: options.tabIndex, parentMenu: options.parentMenu});
+ if (this.subMenu.menuType == "dynamic") {
+ var topValue;
+ var leftValue;
+
+ if (this.subMenu.orientation == "horizontal" && this.subMenu.parentMenu != null && this.subMenu.parentMenu.menuType == "static") {
+ topValue = "100%";
+ leftValue = "0px";
+ } else {
+ topValue = "0px";
+ leftValue = "100%";
+ }
+
+ with (this.subMenu.mainElement.style) {
+ display = "none";
+ position = "absolute";
+ top = topValue;
+ left = leftValue;
+ }
+ }
+
+ Sys.WebForms.Menu.Helpers.appendCssClass (this.element, "has-popup");
+ this.element.setAttribute ("aria-haspopup", this.subMenu.mainElement.id);
+ Sys.WebForms.Menu.Helpers.addEventHandler (this.element, "mouseover", this.mouseOverHandler);
+ Sys.WebForms.Menu.Helpers.addEventHandler (this.element, "mouseout", this.mouseOutHandler);
+ break;
+ }
+ }
+
+ Sys.WebForms.Menu.Helpers.appendCssClass (this.element, this.menuType);
+ this.element.style.position = "relative";
+ this.element.setAttribute ("role", "menuitem");
+ this.element ["__MonoMenuItemPath"] = this.path;
+
+ if (this.parentMenu.orientation == "horizontal" && this.parentMenu.menuType == "static")
+ Sys.WebForms.Menu.Helpers.setFloat (this.element, "left");
+
+ Sys.WebForms.Menu.Helpers.addMenuItem (this);
+}
+
+Sys.WebForms.MenuItem.prototype.log = function (msg)
+{
+ if (console && console.log)
+ console.log (msg);
+}
+
+Sys.WebForms.MenuItem.prototype.hide = function (popup, leaveParentOpen)
+{
+ if (popup == null || popup.mainElement == null || popup.menuType == "static")
+ return;
+
+ var current = popup;
+ while (current != null) {
+ if (current.menuType == "static" || (leaveParentOpen && current == this.parentMenu))
+ break;
+
+ if (current.mainElement != null)
+ current.mainElement.style.display = "none";
+
+ if (current.hideTimerId != null) {
+ window.clearTimeout (current.hideTimerId);
+ current.hideTimerId = null;
+ }
+
+ current = current.parentMenu;
+ }
+}
+
+Sys.WebForms.MenuItem.prototype.onMouseOver = function (popupId)
+{
+ var cur = Sys.WebForms.Menu.Helpers.getPopupToClose ();
+ if (cur != null) {
+ if (cur.hideTimerId != null) {
+ window.clearTimeout (cur.hideTimerId);
+ cur.hideTimerId = null;
+ }
+ this.hide (cur, true);
+ Sys.WebForms.Menu.Helpers.setPopupToClose (null);
+ }
+ if (popupId == null || popupId == "")
+ return;
+
+ var popup = document.getElementById (popupId);
+ if (popup == null)
+ throw "Popup with id '" + popupId + "' could not be found.";
+
+ this.hide (cur, true);
+ popup.style.display = "block";
+}
+
+Sys.WebForms.MenuItem.prototype.onMouseOut = function (popupId)
+{
+ if (popupId == null || popupId == "")
+ return;
+
+ var popup = document.getElementById (popupId);
+ if (popup == null)
+ throw "Popup with id '" + popupId + "' could not be found.";
+
+ var cur = this.subMenu;
+ if (cur != null) {
+ var myself = this;
+ cur.hideTimerId = window.setTimeout (function () {
+ myself.hide (cur, false);
+ },
+ this.subMenu.disappearAfter);
+
+ }
+ Sys.WebForms.Menu.Helpers.setPopupToClose (cur);
+}
+
+Sys.WebForms.MenuItem.prototype.mouseOverHandler = function (e)
+{
+ var menuItem = Sys.WebForms.Menu.Helpers.getMenuItem (this);
+ if (menuItem == null || !(menuItem instanceof Sys.WebForms.MenuItem)) {
+ e.returnResult = false;
+ e.cancelBuble = false;
+ throw "MenuItem could not be found in mouseover handler.";
+ }
+
+ menuItem.onMouseOver (this.getAttribute ("aria-haspopup"));
+ menuItem.finalizeEvent (e);
+}
+
+Sys.WebForms.MenuItem.prototype.mouseOutHandler = function (e)
+{
+ var menuItem = Sys.WebForms.Menu.Helpers.getMenuItem (this);
+
+ if (menuItem == null || !(menuItem instanceof Sys.WebForms.MenuItem)) {
+ e.returnResult = false;
+ e.cancelBuble = false;
+ throw "MenuItem could not be found in mouseout handler.";
+ }
+ menuItem.onMouseOut (this.getAttribute ("aria-haspopup"));
+ menuItem.finalizeEvent (e);
+}
+
+Sys.WebForms.MenuItem.prototype.finalizeEvent = function (e)
+{
+ /* For standards-compliant browsers */
+ if (e != null) {
+ if (e.preventDefault)
+ e.preventDefault();
+ else
+ e.returnResult = false;
+
+ if (e.stopPropagation)
+ e.stopPropagation();
+ else
+ e.cancelBubble = true;
+ }
+
+ /* For IE */
+ if (window.event != null)
+ window.event.cancelBubble = true;
+}
\ No newline at end of file
--- /dev/null
+//
+// Authors:
+// Lluis Sanchez Gual (lluis@novell.com)
+// Igor Zelmanovich (igorz@mainsoft.com)
+// Marek Habersack <grendel@twistedcode.net>
+//
+// (C) 2010 Novell, Inc (http://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.Generic;
+using System.Text;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.HtmlControls;
+
+namespace System.Web.UI.WebControls
+{
+ sealed class MenuTableRenderer : BaseMenuRenderer
+ {
+ const string onPreRenderScript = "var {0} = new Object ();\n{0}.webForm = {1};\n{0}.disappearAfter = {2};\n{0}.vertical = {3};";
+
+ public override HtmlTextWriterTag Tag {
+ get { return HtmlTextWriterTag.Table; }
+
+ }
+
+ public MenuTableRenderer (Menu owner)
+ : base (owner)
+ {
+ }
+
+ public override void AddAttributesToRender (HtmlTextWriter writer)
+ {
+ writer.AddAttribute ("cellpadding", "0", false);
+ writer.AddAttribute ("cellspacing", "0", false);
+ writer.AddAttribute ("border", "0", false);
+
+ base.AddAttributesToRender (writer);
+ }
+
+ public override void PreRender (Page page, HtmlHead head, ClientScriptManager csm, string cmenu, StringBuilder script)
+ {
+ Menu owner = Owner;
+ MenuItemStyle staticMenuItemStyle = owner.StaticMenuItemStyleInternal;
+ SubMenuStyle staticMenuStyle = owner.StaticMenuStyleInternal;
+ MenuItemStyle dynamicMenuItemStyle = owner.DynamicMenuItemStyleInternal;
+ SubMenuStyle dynamicMenuStyle = owner.DynamicMenuStyleInternal;
+ MenuItemStyleCollection levelMenuItemStyles = owner.LevelMenuItemStyles;
+ List<Style> levelMenuItemLinkStyles = owner.LevelMenuItemLinkStyles;
+ SubMenuStyleCollection levelSubMenuStyles = owner.LevelSubMenuStylesInternal;
+ MenuItemStyle staticSelectedStyle = owner.StaticSelectedStyleInternal;
+ MenuItemStyle dynamicSelectedStyle = owner.DynamicSelectedStyleInternal;
+ MenuItemStyleCollection levelSelectedStyles = owner.LevelSelectedStylesInternal;
+ List<Style> levelSelectedLinkStyles = owner.LevelSelectedLinkStyles;
+ Style staticHoverStyle = owner.StaticHoverStyleInternal;
+ Style dynamicHoverStyle = owner.DynamicHoverStyleInternal;
+
+ if (!csm.IsClientScriptIncludeRegistered (typeof (Menu), "Menu.js")) {
+ string url = csm.GetWebResourceUrl (typeof (Menu), "Menu.js");
+ csm.RegisterClientScriptInclude (typeof (Menu), "Menu.js", url);
+ }
+
+ script.AppendFormat (onPreRenderScript,
+ cmenu,
+ page.IsMultiForm ? page.theForm : "window",
+ ClientScriptManager.GetScriptLiteral (owner.DisappearAfter),
+ ClientScriptManager.GetScriptLiteral (owner.Orientation == Orientation.Vertical));
+
+ if (owner.DynamicHorizontalOffset != 0)
+ script.Append (String.Concat (cmenu, ".dho = ", ClientScriptManager.GetScriptLiteral (owner.DynamicHorizontalOffset), ";\n"));
+ if (owner.DynamicVerticalOffset != 0)
+ script.Append (String.Concat (cmenu, ".dvo = ", ClientScriptManager.GetScriptLiteral (owner.DynamicVerticalOffset), ";\n"));
+
+ // The order in which styles are defined matters when more than one class
+ // is assigned to an element
+ RegisterStyle (owner.PopOutBoxStyle, head);
+ RegisterStyle (owner.ControlStyle, owner.ControlLinkStyle, head);
+
+ if (staticMenuItemStyle != null)
+ RegisterStyle (owner.StaticMenuItemStyle, owner.StaticMenuItemLinkStyle, head);
+
+ if (staticMenuStyle != null)
+ RegisterStyle (owner.StaticMenuStyle, head);
+
+ if (dynamicMenuItemStyle != null)
+ RegisterStyle (owner.DynamicMenuItemStyle, owner.DynamicMenuItemLinkStyle, head);
+
+ if (dynamicMenuStyle != null)
+ RegisterStyle (owner.DynamicMenuStyle, head);
+
+ if (levelMenuItemStyles != null && levelMenuItemStyles.Count > 0) {
+ levelMenuItemLinkStyles = new List<Style> (levelMenuItemStyles.Count);
+ foreach (Style style in levelMenuItemStyles) {
+ Style linkStyle = new Style ();
+ levelMenuItemLinkStyles.Add (linkStyle);
+ RegisterStyle (style, linkStyle, head);
+ }
+ }
+
+ if (levelSubMenuStyles != null)
+ foreach (Style style in levelSubMenuStyles)
+ RegisterStyle (style, head);
+
+ if (staticSelectedStyle != null)
+ RegisterStyle (staticSelectedStyle, owner.StaticSelectedLinkStyle, head);
+
+ if (dynamicSelectedStyle != null)
+ RegisterStyle (dynamicSelectedStyle, owner.DynamicSelectedLinkStyle, head);
+
+ if (levelSelectedStyles != null && levelSelectedStyles.Count > 0) {
+ levelSelectedLinkStyles = new List<Style> (levelSelectedStyles.Count);
+ foreach (Style style in levelSelectedStyles) {
+ Style linkStyle = new Style ();
+ levelSelectedLinkStyles.Add (linkStyle);
+ RegisterStyle (style, linkStyle, head);
+ }
+ }
+
+ if (staticHoverStyle != null) {
+ if (head == null)
+ throw new InvalidOperationException ("Using Menu.StaticHoverStyle requires Page.Header to be non-null (e.g. <head runat=\"server\" />).");
+ RegisterStyle (staticHoverStyle, owner.StaticHoverLinkStyle, head);
+ script.Append (String.Concat (cmenu, ".staticHover = ", ClientScriptManager.GetScriptLiteral (staticHoverStyle.RegisteredCssClass), ";\n"));
+ script.Append (String.Concat (cmenu, ".staticLinkHover = ", ClientScriptManager.GetScriptLiteral (owner.StaticHoverLinkStyle.RegisteredCssClass), ";\n"));
+ }
+
+ if (dynamicHoverStyle != null) {
+ if (head == null)
+ throw new InvalidOperationException ("Using Menu.DynamicHoverStyle requires Page.Header to be non-null (e.g. <head runat=\"server\" />).");
+ RegisterStyle (dynamicHoverStyle, owner.DynamicHoverLinkStyle, head);
+ script.Append (String.Concat (cmenu, ".dynamicHover = ", ClientScriptManager.GetScriptLiteral (dynamicHoverStyle.RegisteredCssClass), ";\n"));
+ script.Append (String.Concat (cmenu, ".dynamicLinkHover = ", ClientScriptManager.GetScriptLiteral (owner.DynamicHoverLinkStyle.RegisteredCssClass), ";\n"));
+ }
+ }
+
+ public override void RenderBeginTag (HtmlTextWriter writer, string skipLinkText)
+ {
+ Menu owner = Owner;
+
+ // <a href="#ID_SkipLink">
+ writer.AddAttribute (HtmlTextWriterAttribute.Href, "#" + owner.ClientID + "_SkipLink");
+ writer.RenderBeginTag (HtmlTextWriterTag.A);
+
+ // <img alt="" height="0" width="0" src="" style="border-width:0px;"/>
+ writer.AddAttribute (HtmlTextWriterAttribute.Alt, skipLinkText);
+ writer.AddAttribute (HtmlTextWriterAttribute.Height, "0");
+ writer.AddAttribute (HtmlTextWriterAttribute.Width, "0");
+
+ Page page = owner.Page;
+ ClientScriptManager csm = page != null ? page.ClientScript : new ClientScriptManager (null);
+
+ writer.AddAttribute (HtmlTextWriterAttribute.Src, csm.GetWebResourceUrl (typeof (SiteMapPath), "transparent.gif"));
+ writer.AddStyleAttribute (HtmlTextWriterStyle.BorderWidth, "0px");
+ writer.RenderBeginTag (HtmlTextWriterTag.Img);
+ writer.RenderEndTag ();
+
+ writer.RenderEndTag (); // </a>
+ }
+
+ public override void RenderEndTag (HtmlTextWriter writer)
+ {
+ Menu owner = Owner;
+ if (owner.StaticDisplayLevels == 1 && owner.MaximumDynamicDisplayLevels > 0)
+ owner.RenderDynamicMenu (writer, owner.Items);
+ }
+
+ public override void RenderContents (HtmlTextWriter writer)
+ {
+ Menu owner = Owner;
+ RenderMenuBody (writer, owner.Items, owner.Orientation == Orientation.Vertical, false, false);
+ }
+
+ void RenderMenuBeginTagAttributes (HtmlTextWriter writer, bool dynamic, int menuLevel)
+ {
+ writer.AddAttribute ("cellpadding", "0", false);
+ writer.AddAttribute ("cellspacing", "0", false);
+ writer.AddAttribute ("border", "0", false);
+
+ if (!dynamic) {
+ SubMenuStyle style = new SubMenuStyle ();
+ FillMenuStyle (null, dynamic, menuLevel, style);
+ style.AddAttributesToRender (writer);
+ }
+ }
+
+ public override void RenderMenuBeginTag (HtmlTextWriter writer, bool dynamic, int menuLevel)
+ {
+ RenderMenuBeginTagAttributes (writer, dynamic, menuLevel);
+ writer.RenderBeginTag (HtmlTextWriterTag.Table);
+ }
+
+ void RenderMenuItemSpacing (HtmlTextWriter writer, Unit itemSpacing, bool vertical)
+ {
+ if (vertical) {
+ writer.AddStyleAttribute ("height", itemSpacing.ToString ());
+ writer.RenderBeginTag (HtmlTextWriterTag.Tr);
+ writer.RenderBeginTag (HtmlTextWriterTag.Td);
+ writer.RenderEndTag ();
+ writer.RenderEndTag ();
+ } else {
+ writer.AddStyleAttribute ("width", itemSpacing.ToString ());
+ writer.RenderBeginTag (HtmlTextWriterTag.Td);
+ writer.RenderEndTag ();
+ }
+ }
+
+ public override void RenderMenuBody (HtmlTextWriter writer, MenuItemCollection items, bool vertical, bool dynamic, bool notLast)
+ {
+ Menu owner = Owner;
+ if (!vertical)
+ writer.RenderBeginTag (HtmlTextWriterTag.Tr);
+
+ int count = items.Count;
+ var oc = new OwnerContext (this);
+
+ for (int n = 0; n < count; n++) {
+ MenuItem item = items [n];
+ Adapters.MenuAdapter adapter = owner.Adapter as Adapters.MenuAdapter;
+ if (adapter != null)
+ adapter.RenderItem (writer, item, n);
+ else
+ RenderMenuItem (writer, item, vertical, (n + 1) == count ? notLast : true, n == 0, oc);
+ }
+
+ if (!vertical)
+ writer.RenderEndTag (); // TR
+ }
+
+ protected override void RenderMenuItem (HtmlTextWriter writer, MenuItem item, bool vertical, bool notLast, bool isFirst, OwnerContext oc)
+ {
+ Menu owner = Owner;
+ string clientID = oc.ClientID;
+ bool displayChildren = owner.DisplayChildren (item);
+ bool dynamicChildren = displayChildren && (item.Depth + 1 >= oc.StaticDisplayLevels);
+ bool isDynamicItem = IsDynamicItem (owner, item);
+ bool isVertical = oc.IsVertical || isDynamicItem;
+ Unit itemSpacing = owner.GetItemSpacing (item, isDynamicItem);
+
+ if (itemSpacing != Unit.Empty && (item.Depth > 0 || !isFirst))
+ RenderMenuItemSpacing (writer, itemSpacing, isVertical);
+
+ if(!String.IsNullOrEmpty(item.ToolTip))
+ writer.AddAttribute (HtmlTextWriterAttribute.Title, item.ToolTip);
+ if (isVertical)
+ writer.RenderBeginTag (HtmlTextWriterTag.Tr);
+
+ string parentId = isDynamicItem ? "'" + item.Parent.Path + "'" : "null";
+ if (dynamicChildren) {
+ writer.AddAttribute ("onmouseover",
+ "javascript:Menu_OverItem ('" + clientID + "','" + item.Path + "'," + parentId + ")");
+ writer.AddAttribute ("onmouseout",
+ "javascript:Menu_OutItem ('" + clientID + "','" + item.Path + "')");
+ } else if (isDynamicItem) {
+ writer.AddAttribute ("onmouseover",
+ "javascript:Menu_OverDynamicLeafItem ('" + clientID + "','" + item.Path + "'," + parentId + ")");
+ writer.AddAttribute ("onmouseout",
+ "javascript:Menu_OutItem ('" + clientID + "','" + item.Path + "'," + parentId + ")");
+ } else {
+ writer.AddAttribute ("onmouseover",
+ "javascript:Menu_OverStaticLeafItem ('" + clientID + "','" + item.Path + "')");
+ writer.AddAttribute ("onmouseout",
+ "javascript:Menu_OutItem ('" + clientID + "','" + item.Path + "')");
+ }
+
+ writer.RenderBeginTag (HtmlTextWriterTag.Td);
+
+ // Top separator image
+
+ if (isDynamicItem)
+ RenderSeparatorImage (owner, writer, oc.DynamicTopSeparatorImageUrl, false);
+ else
+ RenderSeparatorImage (owner, writer, oc.StaticTopSeparatorImageUrl, false);
+
+ // Menu item box
+
+ MenuItemStyle style = new MenuItemStyle ();
+
+ if (oc.Header != null) {
+ // styles are registered
+ if (!isDynamicItem && oc.StaticMenuItemStyle != null) {
+ AddCssClass (style, oc.StaticMenuItemStyle.CssClass);
+ AddCssClass (style, oc.StaticMenuItemStyle.RegisteredCssClass);
+ }
+ if (isDynamicItem && oc.DynamicMenuItemStyle != null) {
+ AddCssClass (style, oc.DynamicMenuItemStyle.CssClass);
+ AddCssClass (style, oc.DynamicMenuItemStyle.RegisteredCssClass);
+ }
+ if (oc.LevelMenuItemStyles != null && oc.LevelMenuItemStyles.Count > item.Depth) {
+ AddCssClass (style, oc.LevelMenuItemStyles [item.Depth].CssClass);
+ AddCssClass (style, oc.LevelMenuItemStyles [item.Depth].RegisteredCssClass);
+ }
+ if (item == oc.SelectedItem) {
+ if (!isDynamicItem && oc.StaticSelectedStyle != null) {
+ AddCssClass (style, oc.StaticSelectedStyle.CssClass);
+ AddCssClass (style, oc.StaticSelectedStyle.RegisteredCssClass);
+ }
+ if (isDynamicItem && oc.DynamicSelectedStyle != null) {
+ AddCssClass (style, oc.DynamicSelectedStyle.CssClass);
+ AddCssClass (style, oc.DynamicSelectedStyle.RegisteredCssClass);
+ }
+ if (oc.LevelSelectedStyles != null && oc.LevelSelectedStyles.Count > item.Depth) {
+ AddCssClass (style, oc.LevelSelectedStyles [item.Depth].CssClass);
+ AddCssClass (style, oc.LevelSelectedStyles [item.Depth].RegisteredCssClass);
+ }
+ }
+ } else {
+ // styles are not registered
+ if (!isDynamicItem && oc.StaticMenuItemStyle != null)
+ style.CopyFrom (oc.StaticMenuItemStyle);
+ if (isDynamicItem && oc.DynamicMenuItemStyle != null)
+ style.CopyFrom (oc.DynamicMenuItemStyle);
+ if (oc.LevelMenuItemStyles != null && oc.LevelMenuItemStyles.Count > item.Depth)
+ style.CopyFrom (oc.LevelMenuItemStyles [item.Depth]);
+ if (item == oc.SelectedItem) {
+ if (!isDynamicItem && oc.StaticSelectedStyle != null)
+ style.CopyFrom (oc.StaticSelectedStyle);
+ if (isDynamicItem && oc.DynamicSelectedStyle != null)
+ style.CopyFrom (oc.DynamicSelectedStyle);
+ if (oc.LevelSelectedStyles != null && oc.LevelSelectedStyles.Count > item.Depth)
+ style.CopyFrom (oc.LevelSelectedStyles [item.Depth]);
+ }
+ }
+ style.AddAttributesToRender (writer);
+
+ writer.AddAttribute ("id", GetItemClientId (clientID, item, "i"));
+ writer.AddAttribute ("cellpadding", "0", false);
+ writer.AddAttribute ("cellspacing", "0", false);
+ writer.AddAttribute ("border", "0", false);
+ writer.AddAttribute ("width", "100%", false);
+ writer.RenderBeginTag (HtmlTextWriterTag.Table);
+ writer.RenderBeginTag (HtmlTextWriterTag.Tr);
+
+ // Menu item text
+
+ if (isVertical)
+ writer.AddStyleAttribute (HtmlTextWriterStyle.Width, "100%");
+ if (!owner.ItemWrap)
+ writer.AddStyleAttribute ("white-space", "nowrap");
+ writer.RenderBeginTag (HtmlTextWriterTag.Td);
+
+ RenderItemHref (owner, writer, item);
+
+ Style linkStyle = new Style ();
+ if (oc.Header != null) {
+ // styles are registered
+ AddCssClass (linkStyle, oc.ControlLinkStyle.RegisteredCssClass);
+
+ if (!isDynamicItem && oc.StaticMenuItemStyle != null) {
+ AddCssClass (linkStyle, oc.StaticMenuItemStyle.CssClass);
+ AddCssClass (linkStyle, oc.StaticMenuItemLinkStyle.RegisteredCssClass);
+ }
+ if (isDynamicItem && oc.DynamicMenuItemStyle != null) {
+ AddCssClass (linkStyle, oc.DynamicMenuItemStyle.CssClass);
+ AddCssClass (linkStyle, oc.DynamicMenuItemLinkStyle.RegisteredCssClass);
+ }
+ if (oc.LevelMenuItemStyles != null && oc.LevelMenuItemStyles.Count > item.Depth) {
+ AddCssClass (linkStyle, oc.LevelMenuItemStyles [item.Depth].CssClass);
+ AddCssClass (linkStyle, oc.LevelMenuItemLinkStyles [item.Depth].RegisteredCssClass);
+ }
+ if (item == oc.SelectedItem) {
+ if (!isDynamicItem && oc.StaticSelectedStyle != null) {
+ AddCssClass (linkStyle, oc.StaticSelectedStyle.CssClass);
+ AddCssClass (linkStyle, oc.StaticSelectedLinkStyle.RegisteredCssClass);
+ }
+ if (isDynamicItem && oc.DynamicSelectedStyle != null) {
+ AddCssClass (linkStyle, oc.DynamicSelectedStyle.CssClass);
+ AddCssClass (linkStyle, oc.DynamicSelectedLinkStyle.RegisteredCssClass);
+ }
+ if (oc.LevelSelectedStyles != null && oc.LevelSelectedStyles.Count > item.Depth) {
+ AddCssClass (linkStyle, oc.LevelSelectedStyles [item.Depth].CssClass);
+ AddCssClass (linkStyle, oc.LevelSelectedLinkStyles [item.Depth].RegisteredCssClass);
+ }
+ }
+ } else {
+ // styles are not registered
+ linkStyle.CopyFrom (oc.ControlLinkStyle);
+
+ if (!isDynamicItem && oc.StaticMenuItemStyle != null)
+ linkStyle.CopyFrom (oc.StaticMenuItemLinkStyle);
+ if (isDynamicItem && oc.DynamicMenuItemStyle != null)
+ linkStyle.CopyFrom (oc.DynamicMenuItemLinkStyle);
+ if (oc.LevelMenuItemStyles != null && oc.LevelMenuItemStyles.Count > item.Depth)
+ linkStyle.CopyFrom (oc.LevelMenuItemLinkStyles [item.Depth]);
+ if (item == oc.SelectedItem) {
+ if (!isDynamicItem && oc.StaticSelectedStyle != null)
+ linkStyle.CopyFrom (oc.StaticSelectedLinkStyle);
+ if (isDynamicItem && oc.DynamicSelectedStyle != null)
+ linkStyle.CopyFrom (oc.DynamicSelectedLinkStyle);
+ if (oc.LevelSelectedStyles != null && oc.LevelSelectedStyles.Count > item.Depth)
+ linkStyle.CopyFrom (oc.LevelSelectedLinkStyles [item.Depth]);
+ }
+
+ linkStyle.AlwaysRenderTextDecoration = true;
+ }
+ linkStyle.AddAttributesToRender (writer);
+
+ writer.AddAttribute ("id", GetItemClientId (clientID, item, "l"));
+
+ if (item.Depth > 0 && !isDynamicItem) {
+ double value;
+#if NET_4_0
+ Unit unit = oc.StaticSubMenuIndent;
+ if (unit == Unit.Empty)
+ value = 16;
+ else
+ value = unit.Value;
+#else
+ value = oc.StaticSubMenuIndent.Value;
+#endif
+ Unit indent = new Unit (value * item.Depth, oc.StaticSubMenuIndent.Type);
+ writer.AddStyleAttribute (HtmlTextWriterStyle.MarginLeft, indent.ToString ());
+ }
+ writer.RenderBeginTag (HtmlTextWriterTag.A);
+ owner.RenderItemContent (writer, item, isDynamicItem);
+ writer.RenderEndTag (); // A
+
+ writer.RenderEndTag (); // TD
+
+ // Popup image
+
+ if (dynamicChildren) {
+ string popOutImage = GetPopOutImage (owner, item, isDynamicItem);
+ if (popOutImage != null) {
+ writer.RenderBeginTag (HtmlTextWriterTag.Td);
+ writer.AddAttribute ("src", owner.ResolveClientUrl (popOutImage));
+ writer.AddAttribute ("border", "0");
+ string toolTip = String.Format (isDynamicItem ? oc.DynamicPopOutImageTextFormatString : oc.StaticPopOutImageTextFormatString, item.Text);
+ writer.AddAttribute (HtmlTextWriterAttribute.Alt, toolTip);
+ writer.RenderBeginTag (HtmlTextWriterTag.Img);
+ writer.RenderEndTag (); // IMG
+ writer.RenderEndTag (); // TD
+ }
+ }
+
+ writer.RenderEndTag (); // TR
+ writer.RenderEndTag (); // TABLE
+
+ writer.RenderEndTag (); // TD
+
+ if (!isVertical && itemSpacing == Unit.Empty && (notLast || (displayChildren && !dynamicChildren))) {
+ writer.AddStyleAttribute ("width", "3px");
+ writer.RenderBeginTag (HtmlTextWriterTag.Td);
+ writer.RenderEndTag ();
+ }
+
+ // Bottom separator image
+ string separatorImg = item.SeparatorImageUrl;
+ if (separatorImg.Length == 0) {
+ if (isDynamicItem)
+ separatorImg = oc.DynamicBottomSeparatorImageUrl;
+ else
+ separatorImg = oc.StaticBottomSeparatorImageUrl;
+ }
+
+ if (separatorImg.Length > 0) {
+ if (!isVertical)
+ writer.RenderBeginTag (HtmlTextWriterTag.Td);
+ RenderSeparatorImage (owner, writer, separatorImg, false);
+ if (!isVertical)
+ writer.RenderEndTag (); // TD
+ }
+
+ if (isVertical)
+ writer.RenderEndTag (); // TR
+
+ if (itemSpacing != Unit.Empty)
+ RenderMenuItemSpacing (writer, itemSpacing, isVertical);
+
+ // Submenu
+
+ if (displayChildren && !dynamicChildren) {
+ if (isVertical)
+ writer.RenderBeginTag (HtmlTextWriterTag.Tr);
+ writer.RenderBeginTag (HtmlTextWriterTag.Td);
+ writer.AddAttribute ("width", "100%");
+ owner.RenderMenu (writer, item.ChildItems, vertical, false, item.Depth + 1, notLast);
+ if (item.Depth + 2 == oc.StaticDisplayLevels)
+ owner.RenderDynamicMenu (writer, item.ChildItems);
+ writer.RenderEndTag (); // TD
+ if (isVertical)
+ writer.RenderEndTag (); // TR
+ }
+ }
+
+ public override bool IsDynamicItem (Menu owner, MenuItem item)
+ {
+ if (owner == null)
+ throw new ArgumentNullException ("owner");
+
+ if (item == null)
+ throw new ArgumentNullException ("item");
+
+ return item.Depth + 1 > owner.StaticDisplayLevels;
+ }
+ }
+}
--- /dev/null
+//
+// Authors:
+// Marek Habersack <grendel@twistedcode.net>
+//
+// (C) 2010 Novell, Inc (http://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.Generic;
+using System.Web.UI;
+
+namespace System.Web.UI.WebControls
+{
+ sealed class NamedCssStyleCollection
+ {
+ CssStyleCollection collection;
+
+ public CssStyleCollection Collection {
+ get {
+ if (collection == null)
+ collection = new CssStyleCollection ();
+
+ return collection;
+ }
+ }
+
+ public string Name { get; private set; }
+
+ public NamedCssStyleCollection (string name)
+ {
+ if (name == null)
+ name = String.Empty;
+
+ Name = name;
+ }
+
+ public NamedCssStyleCollection CopyFrom (CssStyleCollection coll)
+ {
+ if (coll == null)
+ return this;
+
+ CssStyleCollection collection = Collection;
+ foreach (string key in coll.Keys)
+ collection.Add (key, coll [key]);
+
+ return this;
+ }
+
+ public NamedCssStyleCollection Add (HtmlTextWriterStyle key, string value)
+ {
+ Collection.Add (key, value);
+ return this;
+ }
+
+ public NamedCssStyleCollection Add (string key, string value)
+ {
+ Collection.Add (key, value);
+ return this;
+ }
+
+ public NamedCssStyleCollection Add (Style style)
+ {
+ if (style != null)
+ CopyFrom (style.GetStyleAttributes (null));
+
+ return this;
+ }
+ }
+}
--- /dev/null
+//
+// Authors:
+// Marek Habersack <grendel@twistedcode.net>
+//
+// (C) 2010 Novell, Inc (http://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.Generic;
+using System.Web.UI;
+
+namespace System.Web.UI.WebControls
+{
+ sealed class StyleBlock : Control
+ {
+ List <NamedCssStyleCollection> cssStyles;
+ Dictionary <string, NamedCssStyleCollection> cssStyleIndex;
+ string stylePrefix;
+
+ List <NamedCssStyleCollection> CssStyles {
+ get {
+ if (cssStyles == null) {
+ cssStyles = new List <NamedCssStyleCollection> ();
+ cssStyleIndex = new Dictionary <string, NamedCssStyleCollection> (StringComparer.Ordinal);
+ }
+
+ return cssStyles;
+ }
+ }
+
+ public StyleBlock (string stylePrefix)
+ {
+ if (String.IsNullOrEmpty (stylePrefix))
+ throw new ArgumentNullException ("stylePrefix");
+
+ this.stylePrefix = stylePrefix;
+ }
+
+ public NamedCssStyleCollection RegisterStyle (string name = null)
+ {
+ if (name == null)
+ name = String.Empty;
+
+ return GetStyle (name);
+ }
+
+ public NamedCssStyleCollection RegisterStyle (Style style, string name = null)
+ {
+ if (style == null)
+ throw new ArgumentNullException ("style");
+
+ if (name == null)
+ name = String.Empty;
+
+ NamedCssStyleCollection cssStyle = GetStyle (name);
+ cssStyle.CopyFrom (style.GetStyleAttributes (null));
+
+ return cssStyle;
+ }
+
+ public NamedCssStyleCollection RegisterStyle (HtmlTextWriterStyle key, string value, string styleName = null)
+ {
+ if (styleName == null)
+ styleName = String.Empty;
+
+ NamedCssStyleCollection style = GetStyle (styleName);
+ style.Add (key, value);
+
+ return style;
+ }
+
+ NamedCssStyleCollection GetStyle (string name)
+ {
+ List <NamedCssStyleCollection> cssStyles = CssStyles;
+ NamedCssStyleCollection style;
+
+ if (!cssStyleIndex.TryGetValue (name, out style)) {
+ style = new NamedCssStyleCollection (name);
+ cssStyleIndex.Add (name, style);
+ cssStyles.Add (style);
+ }
+
+ if (style == null)
+ throw new InvalidOperationException (String.Format ("Internal error. Stylesheet for style {0} is null.", name));
+
+ return style;
+ }
+
+ protected internal override void Render (HtmlTextWriter writer)
+ {
+ if (cssStyles == null || cssStyles.Count == 0)
+ return;
+
+ writer.AddAttribute (HtmlTextWriterAttribute.Type, "text/css");
+ writer.RenderBeginTag (HtmlTextWriterTag.Style);
+ writer.WriteLine ("/* <![CDATA[ */");
+
+ string name, value;
+ foreach (var css in cssStyles) {
+ value = css.Collection.Value;
+ if (String.IsNullOrEmpty (value))
+ continue;
+
+ name = css.Name;
+ if (name != String.Empty)
+ name = name + " ";
+
+ writer.WriteLine ("#{0} {1}{{ {2} }}", stylePrefix, name, value);
+ }
+
+ writer.WriteLine ("/* ]]> */");
+ writer.RenderEndTag (); // </style>
+ }
+ }
+}
return;
writer.RenderBeginTag (HtmlTextWriterTag.Table);
- writer.AddAttribute (HtmlTextWriterAttribute.Height, ((int) value).ToString () + "dupa1", false);
+ writer.AddAttribute (HtmlTextWriterAttribute.Height, ((int) value).ToString (), false);
writer.RenderBeginTag (HtmlTextWriterTag.Tr);
writer.RenderBeginTag (HtmlTextWriterTag.Td);
writer.RenderEndTag (); // td
return new Unit (n);
}
- string GetExtension ()
+ internal static string GetExtension (UnitType type)
{
switch (type){
- case UnitType.Pixel: return "px";
- case UnitType.Point: return "pt";
- case UnitType.Pica: return "pc";
- case UnitType.Inch: return "in";
- case UnitType.Mm: return "mm";
- case UnitType.Cm: return "cm";
- case UnitType.Percentage: return "%";
- case UnitType.Em: return "em";
- case UnitType.Ex: return "ex";
- default: return "";
+ case UnitType.Pixel: return "px";
+ case UnitType.Point: return "pt";
+ case UnitType.Pica: return "pc";
+ case UnitType.Inch: return "in";
+ case UnitType.Mm: return "mm";
+ case UnitType.Cm: return "cm";
+ case UnitType.Percentage: return "%";
+ case UnitType.Em: return "em";
+ case UnitType.Ex: return "ex";
+ default: return String.Empty;
}
}
public string ToString (CultureInfo culture)
{
if (type == 0)
- return "";
+ return String.Empty;
- string ex = GetExtension ();
+ string ex = GetExtension (type);
return value.ToString (culture) + ex;
}
public string ToString (IFormatProvider provider)
{
if (type == 0)
- return "";
+ return String.Empty;
- string ex = GetExtension ();
+ string ex = GetExtension (type);
return value.ToString (provider) + ex;
}
uniqueID = null;
#if NET_4_0
ClearCachedClientID ();
+#else
+ clientID = null;
#endif
if (!HasControls ())
return;
System.Web.UI.WebControls/BaseCompareValidator.cs
System.Web.UI.WebControls/BaseDataBoundControl.cs
System.Web.UI.WebControls/BaseDataList.cs
+System.Web.UI.WebControls/BaseMenuRenderer.cs
System.Web.UI.WebControls/BaseValidator.cs
System.Web.UI.WebControls/BorderStyle.cs
System.Web.UI.WebControls/BoundColumn.cs
System.Web.UI.WebControls/ImageMap.cs
System.Web.UI.WebControls/ImageMapEventArgs.cs
System.Web.UI.WebControls/ImageMapEventHandler.cs
+System.Web.UI.WebControls/IMenuRenderer.cs
System.Web.UI.WebControls/IPersistedSelector.cs
System.Web.UI.WebControls/IPostBackContainer.cs
System.Web.UI.WebControls/IRepeatInfoUser.cs
System.Web.UI.WebControls/MenuItemStyleCollection.cs
System.Web.UI.WebControls/MenuItemStyle.cs
System.Web.UI.WebControls/MenuItemTemplateContainer.cs
+System.Web.UI.WebControls/MenuTableRenderer.cs
System.Web.UI.WebControls/MonthChangedEventArgs.cs
System.Web.UI.WebControls/MonthChangedEventHandler.cs
System.Web.UI.WebControls/MultiView.cs
namespace System.Web {
-#if !MONOTOUCH
+#if !MOBILE
// CAS - no InheritanceDemand here as the class is sealed
[AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
#endif
Test/standalone-tests/SiteMapPathRendering.cs
Test/standalone-tests/PageParserDefaultTypeProperties.cs
Test/standalone-tests/ChildrenAsProperties.cs
+Test/standalone-tests/Menu_4.0_List.cs
{
p = new Page ();
c = new MyMenu ();
+#if NET_4_0
+ c.RenderingMode = MenuRenderingMode.Table;
+#endif
a = new MyMenuAdapter (c);
p.Controls.Add(c);
sw = new StringWriter ();
namespace MonoTests.System.Web.UI.WebControls
{
+ class MenuTable : Menu
+ {
+ public MenuTable ()
+ {
+#if NET_4_0
+ RenderingMode = MenuRenderingMode.Table;
+#endif
+ }
+ }
-
- class PokerMenu:Menu
+ class PokerMenu : Menu
{
public PokerMenu ()
{
#endif
HtmlDiff.AssertAreEqual(OriginControlHtml,RenderedControlHtml,"RenderBeginTag");
}
+#if NET_4_0
+ [Test]
+ [Category ("NunitWeb")]
+ public void Menu_RenderBeginTag_List ()
+ {
+ new WebTest (PageInvoker.CreateOnLoad (_BeginTagRender_List)).Run ();
+ }
+
+ public static void _BeginTagRender_List (Page p)
+ {
+ PokerMenu pm = new PokerMenu ();
+ pm.RenderingCompatibility = new Version (4, 0);
+ pm.RenderingMode = MenuRenderingMode.List;
+ p.Form.Controls.Add (pm);
+ StringWriter sw = new StringWriter ();
+ HtmlTextWriter tw = new HtmlTextWriter (sw);
+ pm.RenderBeginTag (tw);
+ string RenderedControlHtml = sw.ToString ();
+ string OriginControlHtml = "<a href=\"#ctl01_SkipLink\"><img alt=\"Skip Navigation Links\" src=\"/NunitWeb/WebResource.axd?d=8VpphgAbakKUC_J8R6hR0Q2&t=634067491135766272\" width=\"0\" height=\"0\" style=\"border-width:0px;\" /></a><div id=\"ctl01\">\r\n";
+ HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderBeginTag_List");
+ }
+#endif
[Test]
[Category ("NunitWeb")]
public void Menu_RenderEndTag ()
#endif
HtmlDiff.AssertAreEqual(OriginControlHtml, RenderedControlHtml,"RenderEndTag");
}
+#if NET_4_0
+ [Test]
+ [Category ("NunitWeb")]
+ public void Menu_RenderEndTag_List ()
+ {
+ new WebTest (PageInvoker.CreateOnLoad (_EndTagRender_List)).Run ();
+ }
+ public static void _EndTagRender_List (Page p)
+ {
+ PokerMenu pm = new PokerMenu ();
+ pm.RenderingCompatibility = new Version (4, 0);
+ pm.RenderingMode = MenuRenderingMode.List;
+ p.Form.Controls.Add (pm);
+ StringWriter sw = new StringWriter ();
+ HtmlTextWriter tw = new HtmlTextWriter (sw);
+ pm.RenderBeginTag (tw);
+ pm.RenderEndTag (tw);
+ string RenderedControlHtml = sw.ToString ();
+ string OriginControlHtml = "<a href=\"#ctl01_SkipLink\"><img alt=\"Skip Navigation Links\" src=\"/NunitWeb/WebResource.axd?d=8VpphgAbakKUC_J8R6hR0Q2&t=634067491135766272\" width=\"0\" height=\"0\" style=\"border-width:0px;\" /></a><div id=\"ctl01\">\r\n\r\n</div><a id=\"ctl01_SkipLink\"></a>";
+ HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "RenderEndTag");
+ }
+#endif
[Test]
public void Menu_DataBind () {
Page p = new Page ();
}
static Menu CreateMenu () {
- Menu m = new Menu ();
+ Menu m = new MenuTable ();
MenuItem rootItem = new MenuItem ("RootItem-Text", "RootItem-Value");
m.Items.Add (rootItem);
rootItem.ChildItems.Add (new MenuItem ("Node1-Text", "Node1-Value"));
p.Form.Controls.Add (xmlDs);
Menu m = CreateMenu ();
+#if NET_4_0
+ m.RenderingMode = MenuRenderingMode.Table;
+#endif
m.DataSourceID = "XmlDataSource";
m.MenuItemDataBound += new MenuEventHandler (m_MenuItemDataBound);
p.Form.Controls.Add (m);
[Test]
public void Menu_DataBindings () {
- Menu m = new Menu ();
+ Menu m = new MenuTable ();
SetDataBindings (m);
m.DataSource = CreateXmlDataSource ();
m.DataBind ();
{
LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
- Menu menu = new Menu ();
+ Menu menu = new MenuTable ();
p.Form.Controls.Add (lcb);
p.Form.Controls.Add (menu);
p.Form.Controls.Add (lce);
#endregion
RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (Menu_RenderStaticItems_Vertical)).Run ();
RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
- Console.WriteLine (OriginControlHtml);
- Console.WriteLine ("----------------");
- Console.WriteLine (RenderedControlHtml);
HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Menu_RenderStaticItems_Vertical");
#if !NET_4_0 || (NET_4_0 && !DOT_NET)
// Throws NREX on .NET 4.0, most probably because the adapter's Control is null
HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Menu_RenderStaticItemsWithBaseAdapter_Horizontal");
#endif
}
-
+#if NET_4_0
+ [Test]
+ [Category ("NunitWeb")]
+ [Ignore ("Disabled temporarily")]
+ public void Menu_RenderStaticItems_List ()
+ {
+ string RenderedPageHtml, RenderedControlHtml, OriginControlHtml;
+ #region OriginControlHtml
+ OriginControlHtml = "<a href=\"#Menu_SkipLink\"><img alt=\"Skip Navigation Links\" src=\"/NunitWeb/WebResource.axd?d=8VpphgAbakKUC_J8R6hR0Q2&t=634067491135766272\" width=\"0\" height=\"0\" style=\"border-width:0px;\" /></a><div id=\"Menu\">\r\n\t<ul class=\"level1\">\r\n\t\t<li><a class=\"level1\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value')\">one-black</a></li><li><a class=\"level2\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value')\">two-black-1</a></li><li><a class=\"level3\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-1-value')\">three-black-1</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-1-value\\\\four-black-1-value')\">four-black-1</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-1-value\\\\four-black-2-value')\">four-black-2</a></li><li><a class=\"level3\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-2-value')\">three-black-2</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-2-value\\\\four-black-3-value')\">four-black-3</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-2-value\\\\four-black-4-value')\">four-black-4</a></li><li><a class=\"level2\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value')\">two-black-2</a></li><li><a class=\"level3\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-3-value')\">three-black-3</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-3-value\\\\four-black-5-value')\">four-black-5</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-3-value\\\\four-black-6-value')\">four-black-6</a></li><li><a class=\"level3\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-4-value')\">three-black-4</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-4-value\\\\four-black-7-value')\">four-black-7</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-4-value\\\\four-black-8-value')\">four-black-8</a></li>\r\n\t</ul>\r\n</div><a id=\"Menu_SkipLink\"></a>";
+ #endregion
+ RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (Menu_RenderStaticItems_Vertical_List)).Run ();
+ RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+ HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Menu_RenderStaticItems_Vertical");
+#if !DOT_NET
+ // Throws NREX on .NET 4.0, most probably because the adapter's Control is null
+ RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (Menu_RenderStaticItemsWithBaseAdapter_Vertical)).Run ();
+ RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+ HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Menu_RenderStaticItemsWithDefaultAdapter_Vertical");
+#endif
+ #region OriginControlHtml
+ OriginControlHtml = "<a href=\"#Menu_SkipLink\"><img alt=\"Skip Navigation Links\" src=\"/NunitWeb/WebResource.axd?d=8VpphgAbakKUC_J8R6hR0Q2&t=634067491135766272\" width=\"0\" height=\"0\" style=\"border-width:0px;\" /></a><div id=\"Menu\">\r\n\t<ul class=\"level1\">\r\n\t\t<li><a class=\"level1\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value')\">one-black</a></li><li><a class=\"level2\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value')\">two-black-1</a></li><li><a class=\"level3\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-1-value')\">three-black-1</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-1-value\\\\four-black-1-value')\">four-black-1</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-1-value\\\\four-black-2-value')\">four-black-2</a></li><li><a class=\"level3\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-2-value')\">three-black-2</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-2-value\\\\four-black-3-value')\">four-black-3</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-1-value\\\\three-black-2-value\\\\four-black-4-value')\">four-black-4</a></li><li><a class=\"level2\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value')\">two-black-2</a></li><li><a class=\"level3\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-3-value')\">three-black-3</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-3-value\\\\four-black-5-value')\">four-black-5</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-3-value\\\\four-black-6-value')\">four-black-6</a></li><li><a class=\"level3\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-4-value')\">three-black-4</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-4-value\\\\four-black-7-value')\">four-black-7</a></li><li><a class=\"level4\" href=\"#\" onclick=\"__doPostBack('Menu','one-black-value\\\\two-black-2-value\\\\three-black-4-value\\\\four-black-8-value')\">four-black-8</a></li>\r\n\t</ul>\r\n</div><a id=\"Menu_SkipLink\"></a>";
+ #endregion
+ RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (Menu_RenderStaticItems_Horizontal_List)).Run ();
+ RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+ HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Menu_RenderStaticItems_Horizontal");
+#if !DOT_NET
+ RenderedPageHtml = new WebTest (PageInvoker.CreateOnLoad (Menu_RenderStaticItemsWithBaseAdapter_Horizontal)).Run ();
+ RenderedControlHtml = HtmlDiff.GetControlFromPageHtml (RenderedPageHtml);
+ HtmlDiff.AssertAreEqual (OriginControlHtml, RenderedControlHtml, "Menu_RenderStaticItemsWithBaseAdapter_Horizontal");
+#endif
+ }
+#endif
class MyMenuAdapter : global::System.Web.UI.WebControls.Adapters.MenuAdapter
{
protected override void RenderItem (HtmlTextWriter writer,
m.StaticDisplayLevels = 4;
AddMenuToPage (p, m);
}
+#if NET_4_0
+ public static void Menu_RenderStaticItems_Vertical_List (Page p)
+ {
+ Menu m = CreateMenuForRenderTests (null, false);
+ m.RenderingCompatibility = new Version (4, 0);
+ m.RenderingMode = MenuRenderingMode.List;
+ m.StaticDisplayLevels = 4;
+ AddMenuToPage (p, m);
+ }
+ public static void Menu_RenderStaticItems_Horizontal_List (Page p)
+ {
+ Menu m = CreateMenuForRenderTests (null, false);
+ m.Orientation = Orientation.Horizontal;
+ m.StaticDisplayLevels = 4;
+ m.RenderingCompatibility = new Version (4, 0);
+ m.RenderingMode = MenuRenderingMode.List;
+ AddMenuToPage (p, m);
+ }
+#endif
public static void Menu_RenderStaticItemsWithBaseAdapter_Vertical (Page p) {
Menu m = CreateMenuForRenderTests (new MyWebControl.Adapters.MenuAdapter());
m.StaticDisplayLevels = 4;
[Category ("NotDotNet")] // implementation specific
public void Menu_PostBack ()
{
+ PageDelegates pd = new PageDelegates ();
+ pd.Init = Menu_SetTableMode;
WebTest t = new WebTest ("PostBackMenuTest.aspx");
+ t.Invoker = new PageInvoker (pd);
+
string str = t.Run ();
FormRequest fr = new FormRequest (t.Response, "form1");
fr.Controls.Add ("__EVENTTARGET");
fr.Controls["__EVENTTARGET"].Value = "Menu1";
fr.Controls ["__EVENTARGUMENT"].Value = "0_1";
t.Request = fr;
- PageDelegates pd = new PageDelegates ();
pd.PreRender = _MenuItemsPost;
t.Invoker = new PageInvoker (pd);
t.Run ();
}
+ public static void Menu_SetTableMode (Page p)
+ {
+#if NET_4_0
+ Menu m = p.Form.FindControl ("Menu1") as Menu;
+ Assert.IsNotNull (m, "Menu present");
+ m.RenderingMode = MenuRenderingMode.Table;
+#endif
+ }
+
public static void _MenuItemsPost (Page p)
{
foreach (Control c in p.Form.Controls) {
[Category ("NunitWeb")]
public void Menu_PostBackFireEvents_1 ()
{
+ PageDelegates pd = new PageDelegates ();
+ pd.Init = Menu_SetTableMode;
WebTest t = new WebTest ("PostBackMenuTest.aspx");
+ t.Invoker = new PageInvoker (pd);
+
string str = t.Run ();
FormRequest fr = new FormRequest (t.Response, "form1");
fr.Controls.Add ("__EVENTTARGET");
public static void PostBackFireEvents_Init (Page p)
{
- Menu m = new Menu ();
+ Menu_SetTableMode (p);
+ Menu m = new MenuTable ();
m.MenuItemDataBound += new MenuEventHandler (MenuItemDataBound_Event);
m.DataSource = LoadXml ();
p.Controls.Add (m);
[Test]
public void MenuItemCollection1 ()
{
- Menu m = new Menu ();
+ Menu m = new MenuTable ();
fillMenu (m);
((IStateManager) m.Items).TrackViewState ();
m.Items [0].ChildItems [0].ChildItems [0].Text = "subnode";
object state = ((IStateManager) m.Items).SaveViewState ();
- Menu copy = new Menu ();
+ Menu copy = new MenuTable ();
fillMenu (copy);
((IStateManager) copy.Items).TrackViewState ();
((IStateManager) copy.Items).LoadViewState (state);
[Test]
public void MenuItemCollection2 ()
{
- Menu m = new Menu ();
+ Menu m = new MenuTable ();
fillMenu (m);
((IStateManager) m.Items).TrackViewState ();
m.Items.Add (new MenuItem ("root 2"));
object state = ((IStateManager) m.Items).SaveViewState ();
- Menu copy = new Menu ();
+ Menu copy = new MenuTable ();
fillMenu (copy);
((IStateManager) copy.Items).TrackViewState ();
((IStateManager) copy.Items).LoadViewState (state);
[Test]
public void MenuItemCollection3 ()
{
- Menu m = new Menu ();
+ Menu m = new MenuTable ();
fillMenu (m);
m.Items.Add (new MenuItem ("root 2"));
m.Items.RemoveAt (1);
object state = ((IStateManager) m.Items).SaveViewState ();
- Menu copy = new Menu ();
+ Menu copy = new MenuTable ();
fillMenu (copy);
copy.Items.Add (new MenuItem ("root 2"));
((IStateManager) copy.Items).TrackViewState ();
[Test]
public void MenuItemCollection4 ()
{
- Menu m = new Menu ();
+ Menu m = new MenuTable ();
fillMenu (m);
m.Items.Add (new MenuItem ("root 2"));
m.Items [0].ChildItems.RemoveAt (1);
m.Items [0].ChildItems [0].ChildItems [0].Text = "subnode";
object state = ((IStateManager) m.Items).SaveViewState ();
- Menu copy = new Menu ();
+ Menu copy = new MenuTable ();
fillMenu (copy);
copy.Items.Add (new MenuItem ("root 2"));
copy.Items [0].ChildItems.RemoveAt (1);
[Test]
public void MenuItemCollection5 ()
{
- Menu m = new Menu ();
+ Menu m = new MenuTable ();
((IStateManager) m.Items).TrackViewState ();
fillMenu (m);
object state = ((IStateManager) m.Items).SaveViewState ();
- Menu copy = new Menu ();
+ Menu copy = new MenuTable ();
((IStateManager) copy.Items).TrackViewState ();
((IStateManager) copy.Items).LoadViewState (state);
using System;
using System.Collections.Generic;
using System.Text;
+using System.Text.RegularExpressions;
using System.Web;
using System.Web.Hosting;
{
if (String.IsNullOrEmpty (origHtml))
return origHtml;
-
- // Naive approach, enough for now
- int idx = origHtml.IndexOf (delimiter + "/WebResource.axd");
- if (idx == -1)
- return origHtml;
- var sb = new StringBuilder ();
- sb.Append (origHtml.Substring (0, idx));
- sb.Append (delimiter);
- idx++;
- int idx2 = origHtml.IndexOf (delimiter, idx);
- string webRes;
- sb.Append ("/WebResource.axd");
-
- if (idx2 > -1)
- sb.Append (origHtml.Substring (idx2));
-
- return sb.ToString ();
+ // Naive approach, enough for now
+ return new Regex (delimiter + "/WebResource\\.axd.*?" + delimiter).Replace (origHtml, delimiter + "/WebResource.axd" + delimiter);
}
public static bool HasException (string html, Type exceptionType)
--- /dev/null
+//
+// Authors:
+// Marek Habersack (mhabersack@novell.com)
+//
+// (C) 2010 Novell, Inc http://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.
+//
+#if NET_4_0
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Web.Util;
+
+using StandAloneRunnerSupport;
+using StandAloneTests;
+
+using NUnit.Framework;
+
+namespace StandAloneTests.Menu_40_List
+{
+ [TestCase ("Menu_40_List", "Menu control List rendering mode for 4.0", Disabled=true)]
+ public sealed class Test_01 : ITestCase
+ {
+ public string PhysicalPath {
+ get { return Path.Combine (Consts.BasePhysicalDir, "Menu_4.0_List"); }
+ }
+
+ public string VirtualPath {
+ get { return "/"; }
+ }
+
+ public bool SetUp (List <TestRunItem> runItems)
+ {
+ runItems.Add (new TestRunItem ("test_01.aspx", Test_01_Aspx));
+ return true;
+ }
+
+ void Test_01_Aspx (string result, TestRunItem runItem)
+ {
+ string originalHtml = "<a href=\"#MyMenu1_SkipLink\"><img alt=\"Skip Navigation Links\" src=\"/WebResource.axd\" width=\"0\" height=\"0\" style=\"border-width:0px;\" /></a><div id=\"MyMenu1\">\r\n\t<ul class=\"level1\">\r\n\t\t<li><a title=\"Root description\" class=\"popout level1\" href=\"./\">Root</a><ul class=\"level2\">\r\n\t\t\t<li><a title=\"Mono Project Home Page\" class=\"popout level2\" href=\"http://mono-project.com/\">Mono</a><ul class=\"level3\">\r\n\t\t\t\t<li><a title=\"How to report Mono bugs\" class=\"popout level3\" href=\"http://mono-project.com/Bugs\">Mono Bugs</a><ul class=\"level4\">\r\n\t\t\t\t\t<li><a title=\"Includes Mono bugs interface\" class=\"level4\" href=\"http://bugzilla.novell.com\">Novell Bugzilla</a></li>\r\n\t\t\t\t</ul></li>\r\n\t\t\t</ul></li><li><a title=\"Main page of the Google search engine\" class=\"popout level2\" href=\"http://google.com\">Google</a><ul class=\"level3\">\r\n\t\t\t\t<li><a title=\"Google language translation interface\" class=\"level3\" href=\"http://translate.google.com\">Translator</a></li><li><a title=\"Google code search engine\" class=\"level3\" href=\"http://google.com/codesearch\">Code Search</a></li>\r\n\t\t\t</ul></li>\r\n\t\t</ul></li>\r\n\t</ul>\r\n</div><a id=\"MyMenu1_SkipLink\"></a>";
+ Helpers.ExtractAndCompareCodeFromHtml (Helpers.StripWebResourceAxdQuery (result), originalHtml, "#A1");
+ }
+ }
+}
+#endif
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<MenuRoot url="~/" title="Root" description="Root description">
+ <MenuNode url="http://mono-project.com/" title="Mono" description="Mono Project Home Page">
+ <MenuNode url="http://mono-project.com/Bugs" title="Mono Bugs" description="How to report Mono bugs">
+ <MenuNode url="http://bugzilla.novell.com" title="Novell Bugzilla" description="Includes Mono bugs interface"/>
+ </MenuNode>
+ </MenuNode>
+ <MenuNode url="http://google.com" title="Google" description="Main page of the Google search engine">
+ <MenuNode url="http://translate.google.com" title="Translator" description="Google language translation interface"/>
+ <MenuNode url="http://google.com/codesearch" title="Code Search" description="Google code search engine"/>
+ </MenuNode>
+</MenuRoot>
\ No newline at end of file
--- /dev/null
+<%@ Page Language="C#" AutoEventWireup="true" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head runat="server">
+ <title></title>
+</head>
+<body>
+ <form id="form1" runat="server">
+ <div>
+
+ <!-- START --><%= AppDomain.CurrentDomain.GetData ("BEGIN_CODE_MARKER") %><asp:Menu ID="MyMenu1" runat="server" RenderingMode="List" DataSourceID="MenuDataSource" StaticDisplayLevels="1">
+ <DataBindings>
+ <asp:MenuItemBinding DataMember="MenuRoot" Depth="0" TextField="title" NavigateUrlField="url" ToolTipField="description" />
+ <asp:MenuItemBinding DataMember="MenuNode" Depth="1" TextField="title" NavigateUrlField="url" ToolTipField="description" />
+ <asp:MenuItemBinding DataMember="MenuNode" Depth="2" TextField="title" NavigateUrlField="url" ToolTipField="description" />
+ <asp:MenuItemBinding DataMember="MenuNode" Depth="3" TextField="title" NavigateUrlField="url" ToolTipField="description" />
+ </DataBindings>
+ </asp:Menu><%= AppDomain.CurrentDomain.GetData ("END_CODE_MARKER") %><!-- END -->
+ <asp:XmlDataSource ID="MenuDataSource" runat="server" DataFile="~/App_Data/MenuData.xml" />
+ </div>
+ </form>
+</body>
+</html>
--- /dev/null
+<?xml version="1.0"?>
+<configuration>
+ <system.web>
+ <compilation debug="true" targetFramework="4.0" />
+ <customErrors mode="Off"/>
+ </system.web>
+</configuration>
System.Web.UI.WebControls/IDataBoundListControl.cs
System.Web.UI.WebControls/IFieldControl.cs
System.Web.UI.WebControls/IRenderOuterTable.cs
+System.Web.UI.WebControls/MenuListRenderer.cs
System.Web.UI.WebControls/MenuRenderingMode.cs
+System.Web.UI.WebControls/NamedCssStyleCollection.cs
System.Web.UI.WebControls/RouteParameter.cs
+System.Web.UI.WebControls/StyleBlock.cs
System.Web.UI.WebControls/WizardLayoutContainer.cs
System.Web.UI.WebControls/WizardLayoutNavigationContainer.cs
System.Web.Util/RequestValidationSource.cs
public object Compile (XPathNavigator node)
{
-#if TARGET_JVM || MONOTOUCH
+#if TARGET_JVM || MOBILE
throw new NotImplementedException ();
#else
string suffix = "";
innerException)
{
hasLineInfo = true;
-#if !MONOTOUCH
+#if !MOBILE
this.lineNumber = sourceObject.LineNumber;
this.linePosition = sourceObject.LinePosition;
this.sourceObj = sourceObject;
(sourceUri != null && sourceUri != "") ? "URI: " + sourceUri + " ." : "",
lineNumber,
linePosition);
-#if !MONOTOUCH
+#if !MOBILE
if (sourceObj != null)
msg += String.Format (CultureInfo.InvariantCulture, " Related schema item SourceUri: {0}, Line {1}, Position {2}.",
sourceObj.SourceUri, sourceObj.LineNumber, sourceObj.LinePosition);
{
get { return _mapMember.Name; }
}
-#if !TARGET_JVM && !MONOTOUCH
+#if !TARGET_JVM && !MOBILE
public string GenerateTypeName (System.CodeDom.Compiler.CodeDomProvider codeProvider)
{
string ret = codeProvider.CreateValidIdentifier (_mapMember.TypeData.FullTypeName);
//
using System.Xml;
-#if !TARGET_JVM && !MONOTOUCH
+#if !TARGET_JVM && !MOBILE
using System.CodeDom.Compiler;
#endif
using System.Xml.Schema;
namespace System.Xml.Serialization
{
public class XmlSchemaImporter
-#if NET_2_0 && !MONOTOUCH
+#if NET_2_0 && !MOBILE
: SchemaImporter
#endif
{
}
#if NET_2_0
-#if !TARGET_JVM && !MONOTOUCH
+#if !TARGET_JVM && !MOBILE
[MonoTODO]
public XmlSchemaImporter (XmlSchemas schemas, CodeGenerationOptions options, CodeDomProvider codeProvider, ImportContext context)
{
using System.Xml;
using System.Xml.Schema;
using System.Text;
-#if !TARGET_JVM && !MONOTOUCH
+#if !TARGET_JVM && !MOBILE
using System.CodeDom;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
// debugging pourposes by adding the "nofallback" option.
// For example: MONO_XMLSERIALIZER_THS=0,nofallback
-#if TARGET_JVM || MONOTOUCH
+#if TARGET_JVM || MOBILE
string db = null;
string th = null;
generationThreshold = -1;
}
#endif
deleteTempFiles = (db == null || db == "no");
-#if !MONOTOUCH
+#if !MOBILE
IDictionary table = (IDictionary) ConfigurationSettings.GetConfig("system.diagnostics");
if (table != null)
{
throw new NotImplementedException ();
}
-#if !TARGET_JVM && !MONOTOUCH
+#if !TARGET_JVM && !MOBILE
public static Assembly GenerateSerializer (Type[] types, XmlMapping[] mappings)
{
return GenerateSerializer (types, mappings, null);
return new XmlSerializationReaderInterpreter (typeMapping);
}
-#if TARGET_JVM || MONOTOUCH
+#if TARGET_JVM || MOBILE
void CheckGeneratedTypes (XmlMapping typeMapping)
{
throw new NotImplementedException();
bool enable_debug;
object debugger;
CompiledStylesheet s;
-#if !TARGET_JVM && !MONOTOUCH
+#if !TARGET_JVM && !MOBILE
// TempFileCollection temporary_files;
#endif
XmlWriterSettings output_settings = new XmlWriterSettings ();
get { return output_settings; }
}
-#if !TARGET_JVM && !MONOTOUCH
+#if !TARGET_JVM && !MOBILE
[MonoTODO]
public TempFileCollection TemporaryFiles {
get { return null; /*temporary_files;*/ }
using System.IO;
using System.Reflection;
-#if !MONOTOUCH
+#if !MOBILE
namespace System.Xml
{
public class XmlXapResolver : XmlResolver
--- /dev/null
+Assembly/AssemblyInfo.cs
+../../build/common/Consts.cs
+../../build/common/Locale.cs
+
+Mono.Xml.Schema/XmlSchemaValidatingReader.cs
+Mono.Xml.Schema/XsdIdentityPath.cs
+Mono.Xml.Schema/XsdIdentityState.cs
+Mono.Xml.Schema/XsdKeyTable.cs
+Mono.Xml.Schema/XsdParticleValidationState.cs
+Mono.Xml.Schema/XsdValidatingReader.cs
+Mono.Xml.Schema/XsdWildcard.cs
+Mono.Xml.XPath/DTMXPathDocument.cs
+Mono.Xml.XPath/DTMXPathDocumentBuilder.cs
+Mono.Xml.XPath/DTMXPathDocumentWriter.cs
+Mono.Xml.XPath/DTMXPathNavigator.cs
+Mono.Xml.XPath/DTMXPathNode.cs
+Mono.Xml.XPath/DTMXPathDocument2.cs
+Mono.Xml.XPath/DTMXPathDocumentBuilder2.cs
+Mono.Xml.XPath/DTMXPathDocumentWriter2.cs
+Mono.Xml.XPath/DTMXPathNavigator2.cs
+Mono.Xml.XPath/DTMXPathNode2.cs
+Mono.Xml.XPath/IdPattern.cs
+Mono.Xml.XPath/KeyPattern.cs
+Mono.Xml.XPath/LocationPathPattern.cs
+Mono.Xml.XPath/Pattern.cs
+Mono.Xml.XPath/UnionPattern.cs
+Mono.Xml.XPath/XPathEditableDocument.cs
+Mono.Xml.XPath/XPathNavigatorReader.cs
+Mono.Xml.Xsl.Operations/XslApplyImports.cs
+Mono.Xml.Xsl.Operations/XslApplyTemplates.cs
+Mono.Xml.Xsl.Operations/XslAttribute.cs
+Mono.Xml.Xsl.Operations/XslAvt.cs
+Mono.Xml.Xsl.Operations/XslCallTemplate.cs
+Mono.Xml.Xsl.Operations/XslChoose.cs
+Mono.Xml.Xsl.Operations/XslComment.cs
+Mono.Xml.Xsl.Operations/XslCompiledElement.cs
+Mono.Xml.Xsl.Operations/XslCopy.cs
+Mono.Xml.Xsl.Operations/XslCopyOf.cs
+Mono.Xml.Xsl.Operations/XslElement.cs
+Mono.Xml.Xsl.Operations/XslFallback.cs
+Mono.Xml.Xsl.Operations/XslForEach.cs
+Mono.Xml.Xsl.Operations/XslIf.cs
+Mono.Xml.Xsl.Operations/XslLiteralElement.cs
+Mono.Xml.Xsl.Operations/XslMessage.cs
+Mono.Xml.Xsl.Operations/XslNotSupportedOperation.cs
+Mono.Xml.Xsl.Operations/XslNumber.cs
+Mono.Xml.Xsl.Operations/XslOperation.cs
+Mono.Xml.Xsl.Operations/XslProcessingInstruction.cs
+Mono.Xml.Xsl.Operations/XslTemplateContent.cs
+Mono.Xml.Xsl.Operations/XslText.cs
+Mono.Xml.Xsl.Operations/XslValueOf.cs
+Mono.Xml.Xsl.Operations/XslVariable.cs
+Mono.Xml.Xsl/Attribute.cs
+Mono.Xml.Xsl/Compiler.cs
+Mono.Xml.Xsl/Debug.cs
+Mono.Xml.Xsl/Emitter.cs
+Mono.Xml.Xsl/GenericOutputter.cs
+Mono.Xml.Xsl/HtmlEmitter.cs
+Mono.Xml.Xsl/MSXslScriptManager.cs
+Mono.Xml.Xsl/Outputter.cs
+Mono.Xml.Xsl/TextEmitter.cs
+Mono.Xml.Xsl/TextOutputter.cs
+Mono.Xml.Xsl/XmlWriterEmitter.cs
+Mono.Xml.Xsl/XslAttributeSet.cs
+Mono.Xml.Xsl/XslDecimalFormat.cs
+Mono.Xml.Xsl/XslKey.cs
+Mono.Xml.Xsl/XslOutput.cs
+Mono.Xml.Xsl/XslSortEvaluator.cs
+Mono.Xml.Xsl/XslStylesheet.cs
+Mono.Xml.Xsl/XslTemplate.cs
+Mono.Xml.Xsl/XslTransformProcessor.cs
+Mono.Xml.Xsl/XsltCompiledContext.cs
+Mono.Xml.Xsl/XsltDebuggerWrapper.cs
+Mono.Xml.Xsl/XslFunctions.cs
+Mono.Xml/IHasXmlParserContext.cs
+Mono.Xml/IHasXmlSchemaInfo.cs
+Mono.Xml/SubtreeXmlReader.cs
+Mono.Xml/XmlFilterReader.cs
+Mono.Xml/XmlNodeWriter.cs
+System.Xml/ConformanceLevel.cs
+System.Xml/DTDAutomata.cs
+System.Xml/DTDObjectModel.cs
+System.Xml/DTDReader.cs
+System.Xml/DTDValidatingReader2.cs
+System.Xml/DefaultXmlWriter.cs
+System.Xml/EntityResolvingXmlReader.cs
+System.Xml/EntityHandling.cs
+System.Xml/Formatting.cs
+System.Xml/IHasXmlNode.cs
+System.Xml/IXmlLineInfo.cs
+System.Xml/IHasXmlChildNode.cs
+System.Xml/IXmlNamespaceResolver.cs
+System.Xml/MonoFIXAttribute.cs
+System.Xml/NamespaceHandling.cs
+System.Xml/NameTable.cs
+System.Xml/NewLineHandling.cs
+System.Xml/ReadState.cs
+../../build/common/MonoTODOAttribute.cs
+System.Xml/ValidationType.cs
+System.Xml/WhitespaceHandling.cs
+System.Xml/WriteState.cs
+System.Xml/XmlEntity.cs
+System.Xml/XmlAttribute.cs
+System.Xml/XmlAttributeCollection.cs
+System.Xml/XmlCDataSection.cs
+System.Xml/XmlConstructs.cs
+System.Xml/XmlChar.cs
+System.Xml/XmlCharacterData.cs
+System.Xml/XmlComment.cs
+System.Xml/XmlNotation.cs
+System.Xml/XmlDeclaration.cs
+System.Xml/XmlDocument.cs
+System.Xml/XmlDocumentFragment.cs
+System.Xml/XmlDocumentNavigator.cs
+System.Xml/XmlDocumentType.cs
+System.Xml/XmlElement.cs
+System.Xml/XmlEntityReference.cs
+System.Xml/XmlException.cs
+System.Xml/XmlImplementation.cs
+System.Xml/XmlConvert.cs
+System.Xml/XmlDateTimeSerializationMode.cs
+System.Xml/XmlLinkedNode.cs
+System.Xml/XmlNameEntry.cs
+System.Xml/XmlNameEntryCache.cs
+System.Xml/XmlNameTable.cs
+System.Xml/XmlNamedNodeMap.cs
+System.Xml/XmlNamespaceScope.cs
+System.Xml/XmlNamespaceManager.cs
+System.Xml/XmlNode.cs
+System.Xml/XmlNodeChangedAction.cs
+System.Xml/XmlNodeChangedEventArgs.cs
+System.Xml/XmlNodeChangedEventHandler.cs
+System.Xml/XmlNodeList.cs
+System.Xml/XmlNodeListChildren.cs
+System.Xml/XmlNodeArrayList.cs
+System.Xml/XmlIteratorNodeList.cs
+System.Xml/XmlNodeOrder.cs
+System.Xml/XmlNodeReader2.cs
+System.Xml/XmlNodeReaderImpl.cs
+System.Xml/XmlNodeType.cs
+System.Xml/XmlOutputMethod.cs
+System.Xml/XmlParserContext.cs
+System.Xml/XmlProcessingInstruction.cs
+System.Xml/XmlQualifiedName.cs
+System.Xml/XmlReader.cs
+System.Xml/XmlReaderBinarySupport.cs
+System.Xml/XmlReaderSettings.cs
+System.Xml/XmlResolver.cs
+System.Xml/XmlSignificantWhitespace.cs
+System.Xml/XmlSpace.cs
+System.Xml/XmlText.cs
+System.Xml/XmlTextReader.cs
+System.Xml/XmlTextReader2.cs
+System.Xml/XmlTokenizedType.cs
+System.Xml/XmlUrlResolver.cs
+System.Xml/XmlValidatingReader.cs
+System.Xml/XmlWhitespace.cs
+System.Xml/XmlWriter.cs
+System.Xml/XmlWriterSettings.cs
+System.Xml/XmlTextWriter2.cs
+System.Xml/XmlInputStream.cs
+System.Xml/XmlParserInput.cs
+System.Xml.XPath/IXPathNavigable.cs
+System.Xml.XPath/XPathNavigator.cs
+System.Xml.XPath/XPathExpression.cs
+System.Xml.XPath/XPathItem.cs
+System.Xml.XPath/XPathNamespaceScope.cs
+System.Xml.XPath/XPathNodeIterator.cs
+System.Xml.XPath/XPathResultType.cs
+System.Xml.XPath/XPathNodeType.cs
+System.Xml.XPath/XmlDataType.cs
+System.Xml.XPath/XmlSortOrder.cs
+System.Xml.XPath/XmlCaseOrder.cs
+System.Xml.XPath/XPathDocument.cs
+System.Xml.XPath/XPathException.cs
+System.Xml.XPath/XPathComparer.cs
+System.Xml.XPath/DefaultContext.cs
+System.Xml.XPath/Expression.cs
+System.Xml.XPath/Iterator.cs
+System.Xml.XPath/Tokenizer.cs
+System.Xml.Xsl/IXsltContextFunction.cs
+System.Xml.Xsl/IXsltContextVariable.cs
+System.Xml.Xsl/XslTransform.cs
+System.Xml.Xsl/XslCompiledTransform.cs
+System.Xml.Xsl/XsltArgumentList.cs
+System.Xml.Xsl/XsltCompileException.cs
+System.Xml.Xsl/XsltContext.cs
+System.Xml.Xsl/XsltException.cs
+System.Xml.Xsl/XsltMessageEncounteredEventArgs.cs
+System.Xml.Xsl/XsltMessageEncounteredEventHandler.cs
+System.Xml.Xsl/XsltSettings.cs
+System.Xml.Schema/BuiltInDatatype.cs
+System.Xml.Schema/IXmlSchemaInfo.cs
+System.Xml.Schema/SchemaDataValueType.cs
+System.Xml.Schema/ValidationEventArgs.cs
+System.Xml.Schema/XmlAtomicValue.cs
+System.Xml.Schema/XmlSchema.cs
+System.Xml.Schema/XmlSchemaAll.cs
+System.Xml.Schema/XmlSchemaAnnotated.cs
+System.Xml.Schema/XmlSchemaAnnotation.cs
+System.Xml.Schema/XmlSchemaAny.cs
+System.Xml.Schema/XmlSchemaAnyAttribute.cs
+System.Xml.Schema/XmlSchemaAppInfo.cs
+System.Xml.Schema/XmlSchemaAttribute.cs
+System.Xml.Schema/XmlSchemaAttributeGroup.cs
+System.Xml.Schema/XmlSchemaAttributeGroupRef.cs
+System.Xml.Schema/XmlSchemaChoice.cs
+System.Xml.Schema/XmlSchemaCollection.cs
+System.Xml.Schema/XmlSchemaCollectionEnumerator.cs
+System.Xml.Schema/XmlSchemaCompilationSettings.cs
+System.Xml.Schema/XmlSchemaComplexContent.cs
+System.Xml.Schema/XmlSchemaComplexContentExtension.cs
+System.Xml.Schema/XmlSchemaComplexContentRestriction.cs
+System.Xml.Schema/XmlSchemaComplexType.cs
+System.Xml.Schema/XmlSchemaContent.cs
+System.Xml.Schema/XmlSchemaContentModel.cs
+System.Xml.Schema/XmlSchemaContentProcessing.cs
+System.Xml.Schema/XmlSchemaContentType.cs
+System.Xml.Schema/XmlSchemaDatatype.cs
+System.Xml.Schema/XmlSchemaDatatypeVariety.cs
+System.Xml.Schema/XmlSchemaDerivationMethod.cs
+System.Xml.Schema/XmlSchemaDocumentation.cs
+System.Xml.Schema/XmlSchemaElement.cs
+System.Xml.Schema/XmlSchemaEnumerationFacet.cs
+System.Xml.Schema/XmlSchemaException.cs
+System.Xml.Schema/XmlSchemaExternal.cs
+System.Xml.Schema/XmlSchemaFacet.cs
+System.Xml.Schema/XmlSchemaForm.cs
+System.Xml.Schema/XmlSchemaFractionDigitsFacet.cs
+System.Xml.Schema/XmlSchemaGroup.cs
+System.Xml.Schema/XmlSchemaGroupBase.cs
+System.Xml.Schema/XmlSchemaGroupRef.cs
+System.Xml.Schema/XmlSchemaIdentityConstraint.cs
+System.Xml.Schema/XmlSchemaImport.cs
+System.Xml.Schema/XmlSchemaInclude.cs
+System.Xml.Schema/XmlSchemaInference.cs
+System.Xml.Schema/XmlSchemaInferenceException.cs
+System.Xml.Schema/XmlSchemaInfo.cs
+System.Xml.Schema/XmlSchemaKey.cs
+System.Xml.Schema/XmlSchemaKeyref.cs
+System.Xml.Schema/XmlSchemaLengthFacet.cs
+System.Xml.Schema/XmlSchemaMaxExclusiveFacet.cs
+System.Xml.Schema/XmlSchemaMaxInclusiveFacet.cs
+System.Xml.Schema/XmlSchemaMaxLengthFacet.cs
+System.Xml.Schema/XmlSchemaMinExclusiveFacet.cs
+System.Xml.Schema/XmlSchemaMinInclusiveFacet.cs
+System.Xml.Schema/XmlSchemaMinLengthFacet.cs
+System.Xml.Schema/XmlSchemaNotation.cs
+System.Xml.Schema/XmlSchemaNumericFacet.cs
+System.Xml.Schema/XmlSchemaObject.cs
+System.Xml.Schema/XmlSchemaObjectCollection.cs
+System.Xml.Schema/XmlSchemaObjectEnumerator.cs
+System.Xml.Schema/XmlSchemaObjectTable.cs
+System.Xml.Schema/XmlSchemaParticle.cs
+System.Xml.Schema/XmlSchemaPatternFacet.cs
+System.Xml.Schema/XmlSchemaRedefine.cs
+System.Xml.Schema/XmlSchemaSet.cs
+System.Xml.Schema/XmlSchemaSequence.cs
+System.Xml.Schema/XmlSchemaSerializer.cs
+System.Xml.Schema/XmlSchemaSimpleContent.cs
+System.Xml.Schema/XmlSchemaSimpleContentExtension.cs
+System.Xml.Schema/XmlSchemaSimpleContentRestriction.cs
+System.Xml.Schema/XmlSchemaSimpleType.cs
+System.Xml.Schema/XmlSchemaSimpleTypeContent.cs
+System.Xml.Schema/XmlSchemaSimpleTypeList.cs
+System.Xml.Schema/XmlSchemaSimpleTypeRestriction.cs
+System.Xml.Schema/XmlSchemaSimpleTypeUnion.cs
+System.Xml.Schema/XmlSchemaTotalDigitsFacet.cs
+System.Xml.Schema/XmlSchemaType.cs
+System.Xml.Schema/XmlSchemaUnique.cs
+System.Xml.Schema/XmlSchemaUse.cs
+System.Xml.Schema/XmlSchemaValidator.cs
+System.Xml.Schema/XmlSchemaValidity.cs
+System.Xml.Schema/XmlSchemaValidationException.cs
+System.Xml.Schema/XmlSchemaWhiteSpaceFacet.cs
+System.Xml.Schema/XmlSchemaXPath.cs
+System.Xml.Schema/XmlSeverityType.cs
+System.Xml.Schema/ValidationHandler.cs
+System.Xml.Schema/XmlSchemaUtil.cs
+System.Xml.Schema/XmlSchemaReader.cs
+System.Xml.Schema/XmlSchemaValidationFlags.cs
+System.Xml.Schema/XmlTypeCode.cs
+System.Xml.Schema/XmlValueGetter.cs
+System.Xml.Serialization/IXmlTextParser.cs
+System.Xml.Serialization/CodeGenerationOptions.cs
+System.Xml.Serialization/CodeIdentifier.cs
+System.Xml.Serialization/CodeIdentifiers.cs
+System.Xml.Serialization/IXmlSerializable.cs
+System.Xml.Serialization/ImportContext.cs
+System.Xml.Serialization/KeyHelper.cs
+System.Xml.Serialization/ReflectionHelper.cs
+System.Xml.Serialization/SchemaTypes.cs
+System.Xml.Serialization/SerializationCodeGenerator.cs
+System.Xml.Serialization/SerializationCodeGeneratorConfiguration.cs
+System.Xml.Serialization/SerializationSource.cs
+System.Xml.Serialization/SoapAttributeAttribute.cs
+System.Xml.Serialization/SoapAttributeOverrides.cs
+System.Xml.Serialization/SoapAttributes.cs
+System.Xml.Serialization/SoapElementAttribute.cs
+System.Xml.Serialization/SoapEnumAttribute.cs
+System.Xml.Serialization/SoapIgnoreAttribute.cs
+System.Xml.Serialization/SoapIncludeAttribute.cs
+System.Xml.Serialization/SoapSchemaMember.cs
+System.Xml.Serialization/SoapReflectionImporter.cs
+System.Xml.Serialization/SoapTypeAttribute.cs
+System.Xml.Serialization/TypeData.cs
+System.Xml.Serialization/TypeMember.cs
+System.Xml.Serialization/TypeTranslator.cs
+System.Xml.Serialization/UnreferencedObjectEventArgs.cs
+System.Xml.Serialization/UnreferencedObjectEventHandler.cs
+System.Xml.Serialization/XmlAnyAttributeAttribute.cs
+System.Xml.Serialization/XmlAnyElementAttribute.cs
+System.Xml.Serialization/XmlAnyElementAttributes.cs
+System.Xml.Serialization/XmlArrayAttribute.cs
+System.Xml.Serialization/XmlArrayItemAttribute.cs
+System.Xml.Serialization/XmlArrayItemAttributes.cs
+System.Xml.Serialization/XmlAttributeAttribute.cs
+System.Xml.Serialization/XmlAttributeEventArgs.cs
+System.Xml.Serialization/XmlAttributeEventHandler.cs
+System.Xml.Serialization/XmlAttributeOverrides.cs
+System.Xml.Serialization/XmlAttributes.cs
+System.Xml.Serialization/XmlChoiceIdentifierAttribute.cs
+System.Xml.Serialization/XmlCustomFormatter.cs
+System.Xml.Serialization/XmlDeserializationEvents.cs
+System.Xml.Serialization/XmlElementAttribute.cs
+System.Xml.Serialization/XmlElementAttributes.cs
+System.Xml.Serialization/XmlElementEventArgs.cs
+System.Xml.Serialization/XmlEnumAttribute.cs
+System.Xml.Serialization/XmlIgnoreAttribute.cs
+System.Xml.Serialization/XmlIncludeAttribute.cs
+System.Xml.Serialization/XmlMemberMapping.cs
+System.Xml.Serialization/XmlMembersMapping.cs
+System.Xml.Serialization/XmlMapping.cs
+System.Xml.Serialization/XmlMappingAccess.cs
+System.Xml.Serialization/XmlNamespaceDeclarationsAttribute.cs
+System.Xml.Serialization/XmlNodeEventArgs.cs
+System.Xml.Serialization/XmlReflectionImporter.cs
+System.Xml.Serialization/XmlReflectionMember.cs
+System.Xml.Serialization/XmlRootAttribute.cs
+System.Xml.Serialization/XmlSchemaEnumerator.cs
+System.Xml.Serialization/XmlSchemaExporter.cs
+System.Xml.Serialization/XmlSchemaImporter.cs
+System.Xml.Serialization/XmlSchemaProviderAttribute.cs
+System.Xml.Serialization/XmlSchemas.cs
+System.Xml.Serialization/XmlSerializationCollectionFixupCallback.cs
+System.Xml.Serialization/XmlSerializationFixupCallback.cs
+System.Xml.Serialization/XmlSerializationGeneratedCode.cs
+System.Xml.Serialization/XmlSerializationReadCallback.cs
+System.Xml.Serialization/XmlSerializationReader.cs
+System.Xml.Serialization/XmlSerializationReaderInterpreter.cs
+System.Xml.Serialization/XmlSerializationWriteCallback.cs
+System.Xml.Serialization/XmlSerializationWriter.cs
+System.Xml.Serialization/XmlSerializationWriterInterpreter.cs
+System.Xml.Serialization/XmlSerializer.cs
+System.Xml.Serialization/XmlSerializerAssemblyAttribute.cs
+System.Xml.Serialization/XmlSerializerFactory.cs
+System.Xml.Serialization/XmlSerializerImplementation.cs
+System.Xml.Serialization/XmlSerializerNamespaces.cs
+System.Xml.Serialization/XmlSerializerVersionAttribute.cs
+System.Xml.Serialization/XmlTextAttribute.cs
+System.Xml.Serialization/XmlTypeAttribute.cs
+System.Xml.Serialization/XmlTypeMapElementInfo.cs
+System.Xml.Serialization/XmlTypeMapMember.cs
+System.Xml.Serialization/XmlTypeMapMemberAttribute.cs
+System.Xml.Serialization/XmlTypeMapMemberElement.cs
+System.Xml.Serialization/XmlTypeMapMemberNamespaces.cs
+System.Xml.Serialization/XmlTypeMapping.cs
+System.Xml.Serialization/XmlElementEventHandler.cs
+System.Xml.Serialization/XmlNodeEventHandler.cs
+
+System.Xml/XQueryConvert.cs
+
--- /dev/null
+#include mobile_System.Xml.dll.sources
-Assembly/AssemblyInfo.cs
-../../build/common/Consts.cs
-../../build/common/Locale.cs
-
-Mono.Xml.Schema/XmlSchemaValidatingReader.cs
-Mono.Xml.Schema/XsdIdentityPath.cs
-Mono.Xml.Schema/XsdIdentityState.cs
-Mono.Xml.Schema/XsdKeyTable.cs
-Mono.Xml.Schema/XsdParticleValidationState.cs
-Mono.Xml.Schema/XsdValidatingReader.cs
-Mono.Xml.Schema/XsdWildcard.cs
-Mono.Xml.XPath/DTMXPathDocument.cs
-Mono.Xml.XPath/DTMXPathDocumentBuilder.cs
-Mono.Xml.XPath/DTMXPathDocumentWriter.cs
-Mono.Xml.XPath/DTMXPathNavigator.cs
-Mono.Xml.XPath/DTMXPathNode.cs
-Mono.Xml.XPath/DTMXPathDocument2.cs
-Mono.Xml.XPath/DTMXPathDocumentBuilder2.cs
-Mono.Xml.XPath/DTMXPathDocumentWriter2.cs
-Mono.Xml.XPath/DTMXPathNavigator2.cs
-Mono.Xml.XPath/DTMXPathNode2.cs
-Mono.Xml.XPath/IdPattern.cs
-Mono.Xml.XPath/KeyPattern.cs
-Mono.Xml.XPath/LocationPathPattern.cs
-Mono.Xml.XPath/Pattern.cs
-Mono.Xml.XPath/UnionPattern.cs
-Mono.Xml.XPath/XPathEditableDocument.cs
-Mono.Xml.XPath/XPathNavigatorReader.cs
-Mono.Xml.Xsl.Operations/XslApplyImports.cs
-Mono.Xml.Xsl.Operations/XslApplyTemplates.cs
-Mono.Xml.Xsl.Operations/XslAttribute.cs
-Mono.Xml.Xsl.Operations/XslAvt.cs
-Mono.Xml.Xsl.Operations/XslCallTemplate.cs
-Mono.Xml.Xsl.Operations/XslChoose.cs
-Mono.Xml.Xsl.Operations/XslComment.cs
-Mono.Xml.Xsl.Operations/XslCompiledElement.cs
-Mono.Xml.Xsl.Operations/XslCopy.cs
-Mono.Xml.Xsl.Operations/XslCopyOf.cs
-Mono.Xml.Xsl.Operations/XslElement.cs
-Mono.Xml.Xsl.Operations/XslFallback.cs
-Mono.Xml.Xsl.Operations/XslForEach.cs
-Mono.Xml.Xsl.Operations/XslIf.cs
-Mono.Xml.Xsl.Operations/XslLiteralElement.cs
-Mono.Xml.Xsl.Operations/XslMessage.cs
-Mono.Xml.Xsl.Operations/XslNotSupportedOperation.cs
-Mono.Xml.Xsl.Operations/XslNumber.cs
-Mono.Xml.Xsl.Operations/XslOperation.cs
-Mono.Xml.Xsl.Operations/XslProcessingInstruction.cs
-Mono.Xml.Xsl.Operations/XslTemplateContent.cs
-Mono.Xml.Xsl.Operations/XslText.cs
-Mono.Xml.Xsl.Operations/XslValueOf.cs
-Mono.Xml.Xsl.Operations/XslVariable.cs
-Mono.Xml.Xsl/Attribute.cs
-Mono.Xml.Xsl/Compiler.cs
-Mono.Xml.Xsl/Debug.cs
-Mono.Xml.Xsl/Emitter.cs
-Mono.Xml.Xsl/GenericOutputter.cs
-Mono.Xml.Xsl/HtmlEmitter.cs
-Mono.Xml.Xsl/MSXslScriptManager.cs
-Mono.Xml.Xsl/Outputter.cs
-Mono.Xml.Xsl/TextEmitter.cs
-Mono.Xml.Xsl/TextOutputter.cs
-Mono.Xml.Xsl/XmlWriterEmitter.cs
-Mono.Xml.Xsl/XslAttributeSet.cs
-Mono.Xml.Xsl/XslDecimalFormat.cs
-Mono.Xml.Xsl/XslKey.cs
-Mono.Xml.Xsl/XslOutput.cs
-Mono.Xml.Xsl/XslSortEvaluator.cs
-Mono.Xml.Xsl/XslStylesheet.cs
-Mono.Xml.Xsl/XslTemplate.cs
-Mono.Xml.Xsl/XslTransformProcessor.cs
-Mono.Xml.Xsl/XsltCompiledContext.cs
-Mono.Xml.Xsl/XsltDebuggerWrapper.cs
-Mono.Xml.Xsl/XslFunctions.cs
-Mono.Xml/IHasXmlParserContext.cs
-Mono.Xml/IHasXmlSchemaInfo.cs
-Mono.Xml/SubtreeXmlReader.cs
-Mono.Xml/XmlFilterReader.cs
-Mono.Xml/XmlNodeWriter.cs
-System.Xml/ConformanceLevel.cs
-System.Xml/DTDAutomata.cs
-System.Xml/DTDObjectModel.cs
-System.Xml/DTDReader.cs
-System.Xml/DTDValidatingReader2.cs
-System.Xml/DefaultXmlWriter.cs
-System.Xml/EntityResolvingXmlReader.cs
-System.Xml/EntityHandling.cs
-System.Xml/Formatting.cs
-System.Xml/IHasXmlNode.cs
-System.Xml/IXmlLineInfo.cs
-System.Xml/IHasXmlChildNode.cs
-System.Xml/IXmlNamespaceResolver.cs
-System.Xml/MonoFIXAttribute.cs
-System.Xml/NamespaceHandling.cs
-System.Xml/NameTable.cs
-System.Xml/NewLineHandling.cs
-System.Xml/ReadState.cs
-../../build/common/MonoTODOAttribute.cs
-System.Xml/ValidationType.cs
-System.Xml/WhitespaceHandling.cs
-System.Xml/WriteState.cs
-System.Xml/XmlEntity.cs
-System.Xml/XmlAttribute.cs
-System.Xml/XmlAttributeCollection.cs
-System.Xml/XmlCDataSection.cs
-System.Xml/XmlConstructs.cs
-System.Xml/XmlChar.cs
-System.Xml/XmlCharacterData.cs
-System.Xml/XmlComment.cs
-System.Xml/XmlNotation.cs
-System.Xml/XmlDeclaration.cs
-System.Xml/XmlDocument.cs
-System.Xml/XmlDocumentFragment.cs
-System.Xml/XmlDocumentNavigator.cs
-System.Xml/XmlDocumentType.cs
-System.Xml/XmlElement.cs
-System.Xml/XmlEntityReference.cs
-System.Xml/XmlException.cs
-System.Xml/XmlImplementation.cs
-System.Xml/XmlConvert.cs
-System.Xml/XmlDateTimeSerializationMode.cs
-System.Xml/XmlLinkedNode.cs
-System.Xml/XmlNameEntry.cs
-System.Xml/XmlNameEntryCache.cs
-System.Xml/XmlNameTable.cs
-System.Xml/XmlNamedNodeMap.cs
-System.Xml/XmlNamespaceScope.cs
-System.Xml/XmlNamespaceManager.cs
-System.Xml/XmlNode.cs
-System.Xml/XmlNodeChangedAction.cs
-System.Xml/XmlNodeChangedEventArgs.cs
-System.Xml/XmlNodeChangedEventHandler.cs
-System.Xml/XmlNodeList.cs
-System.Xml/XmlNodeListChildren.cs
-System.Xml/XmlNodeArrayList.cs
-System.Xml/XmlIteratorNodeList.cs
-System.Xml/XmlNodeOrder.cs
-System.Xml/XmlNodeReader2.cs
-System.Xml/XmlNodeReaderImpl.cs
-System.Xml/XmlNodeType.cs
-System.Xml/XmlOutputMethod.cs
-System.Xml/XmlParserContext.cs
-System.Xml/XmlProcessingInstruction.cs
-System.Xml/XmlQualifiedName.cs
-System.Xml/XmlReader.cs
-System.Xml/XmlReaderBinarySupport.cs
-System.Xml/XmlReaderSettings.cs
-System.Xml/XmlResolver.cs
-System.Xml/XmlSignificantWhitespace.cs
-System.Xml/XmlSpace.cs
-System.Xml/XmlText.cs
-System.Xml/XmlTextReader.cs
-System.Xml/XmlTextReader2.cs
-System.Xml/XmlTokenizedType.cs
-System.Xml/XmlUrlResolver.cs
-System.Xml/XmlValidatingReader.cs
-System.Xml/XmlWhitespace.cs
-System.Xml/XmlWriter.cs
-System.Xml/XmlWriterSettings.cs
-System.Xml/XmlTextWriter2.cs
-System.Xml/XmlInputStream.cs
-System.Xml/XmlParserInput.cs
-System.Xml.XPath/IXPathNavigable.cs
-System.Xml.XPath/XPathNavigator.cs
-System.Xml.XPath/XPathExpression.cs
-System.Xml.XPath/XPathItem.cs
-System.Xml.XPath/XPathNamespaceScope.cs
-System.Xml.XPath/XPathNodeIterator.cs
-System.Xml.XPath/XPathResultType.cs
-System.Xml.XPath/XPathNodeType.cs
-System.Xml.XPath/XmlDataType.cs
-System.Xml.XPath/XmlSortOrder.cs
-System.Xml.XPath/XmlCaseOrder.cs
-System.Xml.XPath/XPathDocument.cs
-System.Xml.XPath/XPathException.cs
-System.Xml.XPath/XPathComparer.cs
-System.Xml.XPath/DefaultContext.cs
-System.Xml.XPath/Expression.cs
-System.Xml.XPath/Iterator.cs
-System.Xml.XPath/Tokenizer.cs
-System.Xml.Xsl/IXsltContextFunction.cs
-System.Xml.Xsl/IXsltContextVariable.cs
-System.Xml.Xsl/XslTransform.cs
-System.Xml.Xsl/XslCompiledTransform.cs
-System.Xml.Xsl/XsltArgumentList.cs
-System.Xml.Xsl/XsltCompileException.cs
-System.Xml.Xsl/XsltContext.cs
-System.Xml.Xsl/XsltException.cs
-System.Xml.Xsl/XsltMessageEncounteredEventArgs.cs
-System.Xml.Xsl/XsltMessageEncounteredEventHandler.cs
-System.Xml.Xsl/XsltSettings.cs
-System.Xml.Schema/BuiltInDatatype.cs
-System.Xml.Schema/IXmlSchemaInfo.cs
-System.Xml.Schema/SchemaDataValueType.cs
-System.Xml.Schema/ValidationEventArgs.cs
-System.Xml.Schema/XmlAtomicValue.cs
-System.Xml.Schema/XmlSchema.cs
-System.Xml.Schema/XmlSchemaAll.cs
-System.Xml.Schema/XmlSchemaAnnotated.cs
-System.Xml.Schema/XmlSchemaAnnotation.cs
-System.Xml.Schema/XmlSchemaAny.cs
-System.Xml.Schema/XmlSchemaAnyAttribute.cs
-System.Xml.Schema/XmlSchemaAppInfo.cs
-System.Xml.Schema/XmlSchemaAttribute.cs
-System.Xml.Schema/XmlSchemaAttributeGroup.cs
-System.Xml.Schema/XmlSchemaAttributeGroupRef.cs
-System.Xml.Schema/XmlSchemaChoice.cs
-System.Xml.Schema/XmlSchemaCollection.cs
-System.Xml.Schema/XmlSchemaCollectionEnumerator.cs
-System.Xml.Schema/XmlSchemaCompilationSettings.cs
-System.Xml.Schema/XmlSchemaComplexContent.cs
-System.Xml.Schema/XmlSchemaComplexContentExtension.cs
-System.Xml.Schema/XmlSchemaComplexContentRestriction.cs
-System.Xml.Schema/XmlSchemaComplexType.cs
-System.Xml.Schema/XmlSchemaContent.cs
-System.Xml.Schema/XmlSchemaContentModel.cs
-System.Xml.Schema/XmlSchemaContentProcessing.cs
-System.Xml.Schema/XmlSchemaContentType.cs
-System.Xml.Schema/XmlSchemaDatatype.cs
-System.Xml.Schema/XmlSchemaDatatypeVariety.cs
-System.Xml.Schema/XmlSchemaDerivationMethod.cs
-System.Xml.Schema/XmlSchemaDocumentation.cs
-System.Xml.Schema/XmlSchemaElement.cs
-System.Xml.Schema/XmlSchemaEnumerationFacet.cs
-System.Xml.Schema/XmlSchemaException.cs
-System.Xml.Schema/XmlSchemaExternal.cs
-System.Xml.Schema/XmlSchemaFacet.cs
-System.Xml.Schema/XmlSchemaForm.cs
-System.Xml.Schema/XmlSchemaFractionDigitsFacet.cs
-System.Xml.Schema/XmlSchemaGroup.cs
-System.Xml.Schema/XmlSchemaGroupBase.cs
-System.Xml.Schema/XmlSchemaGroupRef.cs
-System.Xml.Schema/XmlSchemaIdentityConstraint.cs
-System.Xml.Schema/XmlSchemaImport.cs
-System.Xml.Schema/XmlSchemaInclude.cs
-System.Xml.Schema/XmlSchemaInference.cs
-System.Xml.Schema/XmlSchemaInferenceException.cs
-System.Xml.Schema/XmlSchemaInfo.cs
-System.Xml.Schema/XmlSchemaKey.cs
-System.Xml.Schema/XmlSchemaKeyref.cs
-System.Xml.Schema/XmlSchemaLengthFacet.cs
-System.Xml.Schema/XmlSchemaMaxExclusiveFacet.cs
-System.Xml.Schema/XmlSchemaMaxInclusiveFacet.cs
-System.Xml.Schema/XmlSchemaMaxLengthFacet.cs
-System.Xml.Schema/XmlSchemaMinExclusiveFacet.cs
-System.Xml.Schema/XmlSchemaMinInclusiveFacet.cs
-System.Xml.Schema/XmlSchemaMinLengthFacet.cs
-System.Xml.Schema/XmlSchemaNotation.cs
-System.Xml.Schema/XmlSchemaNumericFacet.cs
-System.Xml.Schema/XmlSchemaObject.cs
-System.Xml.Schema/XmlSchemaObjectCollection.cs
-System.Xml.Schema/XmlSchemaObjectEnumerator.cs
-System.Xml.Schema/XmlSchemaObjectTable.cs
-System.Xml.Schema/XmlSchemaParticle.cs
-System.Xml.Schema/XmlSchemaPatternFacet.cs
-System.Xml.Schema/XmlSchemaRedefine.cs
-System.Xml.Schema/XmlSchemaSet.cs
-System.Xml.Schema/XmlSchemaSequence.cs
-System.Xml.Schema/XmlSchemaSerializer.cs
-System.Xml.Schema/XmlSchemaSimpleContent.cs
-System.Xml.Schema/XmlSchemaSimpleContentExtension.cs
-System.Xml.Schema/XmlSchemaSimpleContentRestriction.cs
-System.Xml.Schema/XmlSchemaSimpleType.cs
-System.Xml.Schema/XmlSchemaSimpleTypeContent.cs
-System.Xml.Schema/XmlSchemaSimpleTypeList.cs
-System.Xml.Schema/XmlSchemaSimpleTypeRestriction.cs
-System.Xml.Schema/XmlSchemaSimpleTypeUnion.cs
-System.Xml.Schema/XmlSchemaTotalDigitsFacet.cs
-System.Xml.Schema/XmlSchemaType.cs
-System.Xml.Schema/XmlSchemaUnique.cs
-System.Xml.Schema/XmlSchemaUse.cs
-System.Xml.Schema/XmlSchemaValidator.cs
-System.Xml.Schema/XmlSchemaValidity.cs
-System.Xml.Schema/XmlSchemaValidationException.cs
-System.Xml.Schema/XmlSchemaWhiteSpaceFacet.cs
-System.Xml.Schema/XmlSchemaXPath.cs
-System.Xml.Schema/XmlSeverityType.cs
-System.Xml.Schema/ValidationHandler.cs
-System.Xml.Schema/XmlSchemaUtil.cs
-System.Xml.Schema/XmlSchemaReader.cs
-System.Xml.Schema/XmlSchemaValidationFlags.cs
-System.Xml.Schema/XmlTypeCode.cs
-System.Xml.Schema/XmlValueGetter.cs
-System.Xml.Serialization/IXmlTextParser.cs
-System.Xml.Serialization/CodeGenerationOptions.cs
-System.Xml.Serialization/CodeIdentifier.cs
-System.Xml.Serialization/CodeIdentifiers.cs
-System.Xml.Serialization/IXmlSerializable.cs
-System.Xml.Serialization/ImportContext.cs
-System.Xml.Serialization/KeyHelper.cs
-System.Xml.Serialization/ReflectionHelper.cs
-System.Xml.Serialization/SchemaTypes.cs
-System.Xml.Serialization/SerializationCodeGenerator.cs
-System.Xml.Serialization/SerializationCodeGeneratorConfiguration.cs
-System.Xml.Serialization/SerializationSource.cs
-System.Xml.Serialization/SoapAttributeAttribute.cs
-System.Xml.Serialization/SoapAttributeOverrides.cs
-System.Xml.Serialization/SoapAttributes.cs
-System.Xml.Serialization/SoapElementAttribute.cs
-System.Xml.Serialization/SoapEnumAttribute.cs
-System.Xml.Serialization/SoapIgnoreAttribute.cs
-System.Xml.Serialization/SoapIncludeAttribute.cs
-System.Xml.Serialization/SoapSchemaMember.cs
-System.Xml.Serialization/SoapReflectionImporter.cs
-System.Xml.Serialization/SoapTypeAttribute.cs
-System.Xml.Serialization/TypeData.cs
-System.Xml.Serialization/TypeMember.cs
-System.Xml.Serialization/TypeTranslator.cs
-System.Xml.Serialization/UnreferencedObjectEventArgs.cs
-System.Xml.Serialization/UnreferencedObjectEventHandler.cs
-System.Xml.Serialization/XmlAnyAttributeAttribute.cs
-System.Xml.Serialization/XmlAnyElementAttribute.cs
-System.Xml.Serialization/XmlAnyElementAttributes.cs
-System.Xml.Serialization/XmlArrayAttribute.cs
-System.Xml.Serialization/XmlArrayItemAttribute.cs
-System.Xml.Serialization/XmlArrayItemAttributes.cs
-System.Xml.Serialization/XmlAttributeAttribute.cs
-System.Xml.Serialization/XmlAttributeEventArgs.cs
-System.Xml.Serialization/XmlAttributeEventHandler.cs
-System.Xml.Serialization/XmlAttributeOverrides.cs
-System.Xml.Serialization/XmlAttributes.cs
-System.Xml.Serialization/XmlChoiceIdentifierAttribute.cs
-System.Xml.Serialization/XmlCustomFormatter.cs
-System.Xml.Serialization/XmlDeserializationEvents.cs
-System.Xml.Serialization/XmlElementAttribute.cs
-System.Xml.Serialization/XmlElementAttributes.cs
-System.Xml.Serialization/XmlElementEventArgs.cs
-System.Xml.Serialization/XmlEnumAttribute.cs
-System.Xml.Serialization/XmlIgnoreAttribute.cs
-System.Xml.Serialization/XmlIncludeAttribute.cs
-System.Xml.Serialization/XmlMemberMapping.cs
-System.Xml.Serialization/XmlMembersMapping.cs
-System.Xml.Serialization/XmlMapping.cs
-System.Xml.Serialization/XmlMappingAccess.cs
-System.Xml.Serialization/XmlNamespaceDeclarationsAttribute.cs
-System.Xml.Serialization/XmlNodeEventArgs.cs
-System.Xml.Serialization/XmlReflectionImporter.cs
-System.Xml.Serialization/XmlReflectionMember.cs
-System.Xml.Serialization/XmlRootAttribute.cs
-System.Xml.Serialization/XmlSchemaEnumerator.cs
-System.Xml.Serialization/XmlSchemaExporter.cs
-System.Xml.Serialization/XmlSchemaImporter.cs
-System.Xml.Serialization/XmlSchemaProviderAttribute.cs
-System.Xml.Serialization/XmlSchemas.cs
-System.Xml.Serialization/XmlSerializationCollectionFixupCallback.cs
-System.Xml.Serialization/XmlSerializationFixupCallback.cs
-System.Xml.Serialization/XmlSerializationGeneratedCode.cs
-System.Xml.Serialization/XmlSerializationReadCallback.cs
-System.Xml.Serialization/XmlSerializationReader.cs
-System.Xml.Serialization/XmlSerializationReaderInterpreter.cs
-System.Xml.Serialization/XmlSerializationWriteCallback.cs
-System.Xml.Serialization/XmlSerializationWriter.cs
-System.Xml.Serialization/XmlSerializationWriterInterpreter.cs
-System.Xml.Serialization/XmlSerializer.cs
-System.Xml.Serialization/XmlSerializerAssemblyAttribute.cs
-System.Xml.Serialization/XmlSerializerFactory.cs
-System.Xml.Serialization/XmlSerializerImplementation.cs
-System.Xml.Serialization/XmlSerializerNamespaces.cs
-System.Xml.Serialization/XmlSerializerVersionAttribute.cs
-System.Xml.Serialization/XmlTextAttribute.cs
-System.Xml.Serialization/XmlTypeAttribute.cs
-System.Xml.Serialization/XmlTypeMapElementInfo.cs
-System.Xml.Serialization/XmlTypeMapMember.cs
-System.Xml.Serialization/XmlTypeMapMemberAttribute.cs
-System.Xml.Serialization/XmlTypeMapMemberElement.cs
-System.Xml.Serialization/XmlTypeMapMemberNamespaces.cs
-System.Xml.Serialization/XmlTypeMapping.cs
-System.Xml.Serialization/XmlElementEventHandler.cs
-System.Xml.Serialization/XmlNodeEventHandler.cs
-
-System.Xml/XQueryConvert.cs
-
+#include mobile_System.Xml.dll.sources
LIB_MCS_FLAGS = -nowarn:618 -d:CONFIGURATION_2_0 -unsafe $(RESOURCE_FILES:%=-resource:%)
TEST_MCS_FLAGS += -r:System.Configuration
PROFILE_2_OR_4 := $(filter net_2_0 net_4_0, $(PROFILE))
-NOT_SL := $(filter net_2_0 net_4_0 monotouch, $(PROFILE))
+NOT_SL := $(filter net_2_0 net_4_0 monotouch monodroid, $(PROFILE))
endif
ifeq (2.1, $(FRAMEWORK_VERSION))
LIB_MCS_FLAGS += -d:INSIDE_SYSTEM
--- /dev/null
+//
+// DateTimeOffsetConverter.cs
+//
+// Author:
+// Carlos Alberto Cortez (calberto.cortez@gmail.com)
+//
+// Copyright (C) 2010 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.
+//
+
+#if NET_4_0
+
+using System;
+using System.Globalization;
+using System.ComponentModel.Design.Serialization;
+using System.Reflection;
+
+namespace System.ComponentModel
+{
+ public class DateTimeOffsetConverter : TypeConverter
+ {
+ static readonly string OffsetPattern = "K";
+ static readonly string InvariantDatePattern = "yyyy-MM-dd";
+
+ public DateTimeOffsetConverter ()
+ {
+ }
+
+ public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
+ {
+ if (sourceType == typeof (string))
+ return true;
+
+ return base.CanConvertFrom (context, sourceType);
+ }
+
+ public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
+ {
+ if (destinationType == typeof (string) || destinationType == typeof (InstanceDescriptor))
+ return true;
+
+ return base.CanConvertTo (context, destinationType);
+ }
+
+ public override object ConvertFrom (ITypeDescriptorContext context, CultureInfo culture, object value)
+ {
+ if (value is string) {
+ string s = ((string) value).Trim ();
+ if (s.Length == 0)
+ return DateTimeOffset.MinValue;
+
+ DateTimeOffset retval;
+ if (culture == null) {
+ if (DateTimeOffset.TryParse (s, out retval))
+ return retval;
+ } else {
+ DateTimeFormatInfo info = (DateTimeFormatInfo) culture.GetFormat (typeof (DateTimeFormatInfo));
+ if (DateTimeOffset.TryParse (s, info, DateTimeStyles.None, out retval))
+ return retval;
+ }
+
+ throw new FormatException (s + " is not a valid DateTimeOffset value.");
+ }
+
+ return base.ConvertFrom (context, culture, value);
+ }
+
+ public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
+ {
+ if (value is DateTimeOffset) {
+ DateTimeOffset dt_offset = (DateTimeOffset) value;
+
+ if (destinationType == typeof (string)) {
+ if (dt_offset == DateTimeOffset.MinValue)
+ return String.Empty;
+
+ if (culture == null)
+ culture = CultureInfo.CurrentCulture;
+
+ // InvariantCulture gets special handling.
+ if (culture == CultureInfo.InvariantCulture) {
+ if (dt_offset.DateTime == dt_offset.Date)
+ return dt_offset.ToString (InvariantDatePattern + " " + OffsetPattern);
+
+ return dt_offset.ToString (culture);
+ }
+
+ DateTimeFormatInfo info = (DateTimeFormatInfo) culture.GetFormat (typeof (DateTimeFormatInfo));
+ if (dt_offset.DateTime == dt_offset.Date)
+ return dt_offset.ToString (info.ShortDatePattern + " " + OffsetPattern);
+
+ // No need to pass CultureInfo, as we already consumed the proper patterns.
+ return dt_offset.ToString (info.ShortDatePattern + " " + info.ShortTimePattern + " " + OffsetPattern, null);
+ }
+
+ if (destinationType == typeof (InstanceDescriptor)) {
+ ConstructorInfo ctor = typeof (DateTimeOffset).GetConstructor ( GetDateTimeOffsetArgumentTypes ());
+ object [] ctor_args = new object [] { dt_offset.Year, dt_offset.Month, dt_offset.Day,
+ dt_offset.Hour, dt_offset.Minute, dt_offset.Second, dt_offset.Millisecond,
+ dt_offset.Offset };
+ return new InstanceDescriptor (ctor, ctor_args);
+ }
+ }
+
+ return base.ConvertTo (context, culture, value, destinationType);
+ }
+
+ static Type [] ctor_argument_types;
+
+ static Type [] GetDateTimeOffsetArgumentTypes ()
+ {
+ if (ctor_argument_types == null) {
+ Type int_type = typeof (int);
+ ctor_argument_types = new Type [] { int_type, int_type, int_type, int_type, int_type, int_type, int_type,
+ typeof (TimeSpan) };
+ }
+
+ return ctor_argument_types;
+ }
+ }
+}
+
+#endif
+
private Type componentType;
private Type propertyType;
- public SimplePropertyDescriptor (Type componentType,
+#if NET_4_0
+ protected
+#else
+ public
+#endif
+ SimplePropertyDescriptor (Type componentType,
string name,
Type propertyType) :
this (componentType, name, propertyType, null)
{
}
- public SimplePropertyDescriptor (Type componentType,
+#if NET_4_0
+ protected
+#else
+ public
+#endif
+ SimplePropertyDescriptor (Type componentType,
string name,
Type propertyType,
Attribute [] attributes) : base (name, attributes)
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-#if NET_2_0
using System;
using System.Collections;
return _emptyCustomTypeDescriptor;
}
+#if NET_4_0
+ public virtual bool IsSupportedType (Type type)
+ {
+ if (type == null)
+ throw new ArgumentNullException ("type");
+
+ if (_parent != null)
+ return _parent.IsSupportedType (type);
+
+ return true;
+ }
+
+ public virtual Type GetRuntimeType (Type reflectionType)
+ {
+ if (reflectionType == null)
+ throw new ArgumentNullException ("reflectionType");
+
+ if (_parent != null)
+ return _parent.GetRuntimeType (reflectionType);
+
+ return reflectionType;
+ }
+
+ protected internal virtual IExtenderProvider[] GetExtenderProviders (object instance)
+ {
+ if (instance == null)
+ throw new ArgumentNullException ("instance");
+
+ if (_parent != null)
+ return _parent.GetExtenderProviders (instance);
+
+ return new IExtenderProvider [] { };
+ }
+#endif
+
}
}
-#endif
using System.ComponentModel.Design;
using System.Security.Permissions;
-#if NET_2_0
using System.Collections.Generic;
-#endif
namespace System.ComponentModel
{
private static Hashtable typeTable = new Hashtable ();
private static Hashtable editors;
-#if NET_2_0
static object typeDescriptionProvidersLock = new object ();
static Dictionary <Type, LinkedList <TypeDescriptionProvider>> typeDescriptionProviders;
typeDescriptionProviders = new Dictionary <Type, LinkedList <TypeDescriptionProvider>> ();
componentDescriptionProviders = new Dictionary <WeakObjectWrapper, LinkedList <TypeDescriptionProvider>> (new WeakObjectWrapperComparer ());
}
-#endif
+
private TypeDescriptor ()
{
}
-#if NET_2_0
[MonoNotSupported ("Mono does not support COM")]
[EditorBrowsable (EditorBrowsableState.Advanced)]
public static Type ComObjectType {
get { throw new NotImplementedException (); }
}
+#if NET_4_0
+ [EditorBrowsable (EditorBrowsableState.Advanced)]
+ public static Type InterfaceType {
+ get {
+ return typeof (TypeDescriptorInterface);
+ }
+ }
+#endif
+
[EditorBrowsable (EditorBrowsableState.Advanced)]
public static TypeDescriptionProvider AddAttributes (object instance, params Attribute [] attributes)
{
return instance;
}
-#endif
-#if NET_2_0
[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
#if !NET_2_1
public
#else
return GetAttributes (component, false);
}
-#if NET_2_0
[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
public static AttributeCollection GetAttributes (object component, bool noCustomTypeDesc)
{
if (component == null)
return GetClassName (component, false);
}
-#if NET_2_0
[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
public static string GetClassName (object component, bool noCustomTypeDesc)
{
if (component == null)
return GetComponentName (component, false);
}
-#if NET_2_0
[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
public static string GetComponentName (object component, bool noCustomTypeDesc)
{
if (component == null)
IComponent c = component as IComponent;
if (c != null && c.Site != null)
return c.Site.Name;
-#if NET_2_0
return null;
-#else
- return component.GetType().Name;
-#endif
}
}
-#if NET_2_0
[MonoNotSupported("")]
public static string GetFullComponentName (object component)
{
{
throw new NotImplementedException ();
}
-#endif
public static TypeConverter GetConverter (object component)
{
return GetConverter (component, false);
}
-#if NET_2_0
[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
public static TypeConverter GetConverter (object component, bool noCustomTypeDesc)
{
if (component == null)
{
Type converterType = null;
if (type != null) {
-#if NET_2_0
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
return typeof(NullableConverter);
-#endif
// Is there a default converter
foreach (DictionaryEntry entry in DefaultConverters) {
if ((Type)entry.Key == type)
return GetDefaultEvent (component, false);
}
-#if NET_2_0
[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
public static EventDescriptor GetDefaultEvent (object component, bool noCustomTypeDesc)
{
if (!noCustomTypeDesc && (component is ICustomTypeDescriptor))
return GetDefaultProperty (component, false);
}
-#if NET_2_0
[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
public static PropertyDescriptor GetDefaultProperty (object component, bool noCustomTypeDesc)
{
if (!noCustomTypeDesc && (component is ICustomTypeDescriptor))
return GetEditor (component, editorBaseType, false);
}
-#if NET_2_0
[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
public static object GetEditor (object component, Type editorBaseType, bool noCustomTypeDesc)
{
if (component == null)
return GetEvents (component, attributes, false);
}
-#if NET_2_0
[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
public static EventDescriptorCollection GetEvents (object component, bool noCustomTypeDesc)
{
if (!noCustomTypeDesc && (component is ICustomTypeDescriptor))
return GetTypeInfo (componentType).GetEvents (attributes);
}
-#if NET_2_0
[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
public static EventDescriptorCollection GetEvents (object component, Attribute [] attributes, bool noCustomTypeDesc)
{
if (!noCustomTypeDesc && (component is ICustomTypeDescriptor))
}
}
-#if NET_2_0
[EditorBrowsable (EditorBrowsableState.Advanced)]
-#endif
public static PropertyDescriptorCollection GetProperties (object component, bool noCustomTypeDesc)
{
if (component == null)
return GetTypeInfo (componentType).GetProperties (attributes);
}
-#if NET_2_0
[EditorBrowsable (EditorBrowsableState.Advanced)]
public static TypeDescriptionProvider GetProvider (object instance)
{
} while (true);
}
-#endif
public static void SortDescriptorArray (IList infos)
{
infos.Add (ob);
}
-#if NET_2_0
// well, ComObjectType is not implemented, but we don't support COM anyways ...
[Obsolete ("Use ComObjectType")]
-#endif
public static IComNativeDescriptorHandler ComNativeDescriptorHandler {
[PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
get { return descriptorHandler; }
return type;
}
-#if NET_2_0
sealed class AttributeProvider : TypeDescriptionProvider
{
Attribute[] attributes;
return new DefaultTypeDescriptor (this, objectType, instance);
}
}
-#endif
}
internal abstract class Info
return _properties;
}
}
+
+#if NET_4_0
+ // In .net this class seems to be a dummy and empty class
+ // used to represent internally any extender provider associated with
+ // all the interfaces.
+ sealed class TypeDescriptorInterface
+ {
+ }
+#endif
}
if (ext == null)
return empty;
-#if MONOTOUCH
+#if MOBILE
return empty;
#else
throw new ArgumentNullException ("remoteEP");
IPEndPoint ep = remoteEP as IPEndPoint;
+#if !MOONLIGHT
+ if (ep != null && socket_type != SocketType.Dgram) /* Dgram uses Any to 'disconnect' */
+#else
if (ep != null)
+#endif
if (ep.Address.Equals (IPAddress.Any) || ep.Address.Equals (IPAddress.IPv6Any))
throw new SocketException ((int) SocketError.AddressNotAvailable);
if (error != 0)
throw new SocketException (error);
- connected=true;
+#if !MOONLIGHT
+ if (socket_type != SocketType.Dgram)
+ connected=true;
+#else
+ connected = true;
+#endif
#if NET_2_0
isbound = true;
#if NET_2_1
AddPrefix ("http", typeof (HttpRequestCreator));
AddPrefix ("https", typeof (HttpRequestCreator));
- #if MONOTOUCH
+ #if MOBILE
AddPrefix ("file", typeof (FileWebRequestCreator));
AddPrefix ("ftp", typeof (FtpRequestCreator));
#endif
System.ComponentModel/DataObjectMethodAttribute.cs
System.ComponentModel/DataObjectMethodType.cs
System.ComponentModel/DateTimeConverter.cs
+System.ComponentModel/DateTimeOffsetConverter.cs
System.ComponentModel/DecimalConverter.cs
System.ComponentModel/DefaultBindingPropertyAttribute.cs
System.ComponentModel/DefaultEventAttribute.cs
using System.Runtime.Serialization;
using System.Text;
using System.Collections;
+using System.Collections.Generic;
using System.Globalization;
//
private bool isUnc;
private bool isOpaquePart;
private bool isAbsoluteUri = true;
+ private long scope_id;
- private string [] segments;
+ private List<string> segments;
private bool userEscaped;
private string cachedAbsoluteUri;
private int cachedHashCode;
private static readonly string hexUpperChars = "0123456789ABCDEF";
+ private static string [] Empty = new string [0];
+
// Fields
this.isUnixFilePath = baseUri.isUnixFilePath;
this.isOpaquePart = baseUri.isOpaquePart;
- if (relativeUri == String.Empty) {
+ if (relativeUri.Length == 0) {
this.path = baseUri.path;
this.query = baseUri.query;
this.fragment = baseUri.fragment;
return;
}
-
+
// 8 fragment
// Note that in relative constructor, file URI cannot handle '#' as a filename character, but just regarded as a fragment identifier.
pos = relativeUri.IndexOf ('#');
fragment = relativeUri.Substring (pos);
else
fragment = "#" + EscapeString (relativeUri.Substring (pos+1));
- relativeUri = relativeUri.Substring (0, pos);
+ relativeUri = pos == 0 ? String.Empty : relativeUri.Substring (0, pos);
}
+ bool consider_query = false;
+
// 6 query
pos = relativeUri.IndexOf ('?');
if (pos != -1) {
query = relativeUri.Substring (pos);
if (!userEscaped)
query = EscapeString (query);
- relativeUri = relativeUri.Substring (0, pos);
+#if !NET_4_0 && !MOONLIGHT
+ consider_query = query.Length > 0;
+#endif
+ relativeUri = pos == 0 ? String.Empty : relativeUri.Substring (0, pos);
+ } else if (relativeUri.Length == 0) {
+ // if there is no relative path then we keep the Query and Fragment from the absolute
+ query = baseUri.query;
}
if (relativeUri.Length > 0 && relativeUri [0] == '/') {
// par 5.2 step 6 a)
path = baseUri.path;
-#if NET_4_0
- if (relativeUri.Length > 0) {
-#else
- if (relativeUri.Length > 0 || query.Length > 0) {
-#endif
+ if ((relativeUri.Length > 0) || consider_query) {
pos = path.LastIndexOf ('/');
if (pos >= 0)
path = path.Substring (0, pos + 1);
}
}
+ private bool IsLocalIdenticalToAbsolutePath ()
+ {
+ if (IsFile)
+ return false;
+
+ if ((scheme == Uri.UriSchemeNews) || (scheme == Uri.UriSchemeNntp) || (scheme == Uri.UriSchemeFtp))
+ return false;
+
+ return IsWellFormedOriginalString ();
+ }
+
public string LocalPath {
get {
EnsureAbsoluteUri ();
if (cachedLocalPath != null)
return cachedLocalPath;
- if (!IsFile)
- return AbsolutePath;
- bool windows = (path.Length > 3 && path [1] == ':' &&
- (path [2] == '\\' || path [2] == '/'));
+ if (IsLocalIdenticalToAbsolutePath ())
+ return AbsolutePath;
if (!IsUnc) {
string p = Unescape (path);
- bool replace = windows;
-#if ONLY_1_1
- replace |= (System.IO.Path.DirectorySeparatorChar == '\\');
-#endif
- if (replace)
+ bool windows = (path.Length > 3 && path [1] == ':' &&
+ (path [2] == '\\' || path [2] == '/'));
+
+ if (windows)
cachedLocalPath = p.Replace ('/', '\\');
else
cachedLocalPath = p;
public string [] Segments {
get {
EnsureAbsoluteUri ();
+
+ // return a (pre-allocated) empty array
+ if (path.Length == 0)
+ return Empty;
+ // do not return the original array (since items can be changed)
if (segments != null)
- return segments;
+ return segments.ToArray ();
- if (path.Length == 0) {
- segments = new string [0];
- return segments;
+ List<string> list = new List<string> ();
+ StringBuilder current = new StringBuilder ();
+ for (int i = 0; i < path.Length; i++) {
+ switch (path [i]) {
+ case '/':
+ case '\\':
+ current.Append (path [i]);
+ list.Add (current.ToString ());
+ current.Length = 0;
+ break;
+ case '%':
+ if ((i < path.Length - 2) && (path [i + 1] == '5' && path [i + 2] == 'C')) {
+ current.Append ("%5C");
+ list.Add (current.ToString ());
+ current.Length = 0;
+ i += 2;
+ } else {
+ current.Append ('%');
+ }
+ break;
+ default:
+ current.Append (path [i]);
+ break;
+ }
}
- string [] parts = path.Split ('/');
- segments = parts;
- bool endSlash = path.EndsWith ("/");
- if (parts.Length > 0 && endSlash) {
- string [] newParts = new string [parts.Length - 1];
- Array.Copy (parts, 0, newParts, 0, parts.Length - 1);
- parts = newParts;
- }
+ if (current.Length > 0)
+ list.Add (current.ToString ());
- int i = 0;
- if (IsFile && path.Length > 1 && path [1] == ':') {
- string [] newParts = new string [parts.Length + 1];
- Array.Copy (parts, 1, newParts, 2, parts.Length - 1);
- parts = newParts;
- parts [0] = path.Substring (0, 2);
- parts [1] = String.Empty;
- i++;
+ if (IsFile && (list.Count > 0)) {
+ string first = list [0];
+ if ((first.Length > 1) && (first [1] == ':')) {
+ list.Insert (0, "/");
+ }
}
-
- int end = parts.Length;
- for (; i < end; i++)
- if (i != end - 1 || endSlash)
- parts [i] += '/';
-
- segments = parts;
- return segments;
+ segments = list;
+ return segments.ToArray ();
}
}
}
}
- [MonoTODO ("add support for IPv6 address")]
public string DnsSafeHost {
get {
EnsureAbsoluteUri ();
- return Unescape (Host);
+ string host = Host;
+ if (HostNameType == UriHostNameType.IPv6) {
+ host = Host.Substring (1, Host.Length - 2);
+ if (scope_id != 0)
+ host += "%" + scope_id.ToString ();
+ }
+ return Unescape (host);
}
}
//
public Uri MakeRelativeUri (Uri uri)
{
+#if NET_4_0
if (uri == null)
throw new ArgumentNullException ("uri");
-
+#endif
if (Host != uri.Host || Scheme != uri.Scheme)
return uri;
void AppendQueryAndFragment (ref string result)
{
if (query.Length > 0) {
- string q = query [0] == '?' ? '?' + Unescape (query.Substring (1), false) : Unescape (query, false);
+ string q = query [0] == '?' ? '?' + Unescape (query.Substring (1), true) : Unescape (query, false);
result += q;
}
if (fragment.Length > 0)
if (cachedToString != null)
return cachedToString;
- if (isAbsoluteUri)
+ if (isAbsoluteUri) {
cachedToString = Unescape (GetLeftPart (UriPartial.Path), true);
- else {
+ AppendQueryAndFragment (ref cachedToString);
+ } else {
// Everything is contained in path in this case.
- cachedToString = Unescape (path);
+ cachedToString = path;
}
- AppendQueryAndFragment (ref cachedToString);
return cachedToString;
}
protected static string EscapeString (string str)
#endif
{
- return EscapeString (str, false, true, true);
+ return EscapeString (str, Uri.EscapeCommonHexBrackets);
}
-
- internal static string EscapeString (string str, bool escapeReserved, bool escapeHex, bool escapeBrackets)
+
+ private const string EscapeCommon = "<>%\"{}|\\^`";
+ private const string EscapeReserved = ";/?:@&=+$,";
+ private const string EscapeHex = "#";
+ private const string EscapeBrackets = "[]";
+
+ private const string EscapeNews = EscapeCommon + EscapeBrackets + "?";
+ private const string EscapeCommonHex = EscapeCommon + EscapeHex;
+ private const string EscapeCommonBrackets = EscapeCommon + EscapeBrackets;
+ internal const string EscapeCommonHexBrackets = EscapeCommon + EscapeHex + EscapeBrackets;
+ internal const string EscapeCommonHexBracketsQuery = EscapeCommonHexBrackets + "?";
+
+ internal static string EscapeString (string str, string escape)
{
- if (str == null)
+ if (String.IsNullOrEmpty (str))
return String.Empty;
StringBuilder s = new StringBuilder ();
int length = data.Length;
for (int j = 0; j < length; j++) {
char c = (char) data [j];
- if ((c <= 0x20) || (c >= 0x7f) ||
- ("<>%\"{}|\\^`".IndexOf (c) != -1) ||
- (escapeHex && (c == '#')) ||
- (escapeBrackets && (c == '[' || c == ']')) ||
- (escapeReserved && (";/?:@&=+$,".IndexOf (c) != -1))) {
+ if ((c <= 0x20) || (c >= 0x7f) || (escape.IndexOf (c) != -1))
s.Append (HexEscape (c));
- continue;
- }
- s.Append (c);
+ else
+ s.Append (c);
}
}
if (userEscaped)
return;
- host = EscapeString (host, false, true, false);
+ host = EscapeString (host, EscapeCommonHex);
if (host.Length > 1 && host [0] != '[' && host [host.Length - 1] != ']') {
// host name present (but not an IPv6 address)
host = host.ToLower (CultureInfo.InvariantCulture);
}
- if (path.Length > 0) {
+ if (isAbsoluteUri && (path.Length > 0))
path = EscapeString (path);
- }
}
#if MOONLIGHT
internal static string Unescape (string str, bool excludeSpecial)
{
- if (str == null)
+ if (String.IsNullOrEmpty (str))
return String.Empty;
+
StringBuilder s = new StringBuilder ();
int len = str.Length;
for (int i = 0; i < len; i++) {
s.Append ("%25");
else if (excludeSpecial && x == '?')
s.Append ("%3F");
+ else if (excludeSpecial && x == '\\')
+ s.Append ("%5C");
else {
s.Append (x);
if (surrogate != char.MinValue)
throw new UriFormatException (s);
}
+ private bool SupportsQuery ()
+ {
+ return ((scheme != Uri.UriSchemeNntp) && (scheme != Uri.UriSchemeFtp) && (scheme != Uri.UriSchemeFile));
+ }
+
//
// This parse method will not throw exceptions on failure
//
endpos = pos;
}
- // 6 query
- pos = uriString.IndexOf ('?', startpos, endpos-startpos);
- if (pos != -1) {
- query = uriString.Substring (pos, endpos-pos);
- endpos = pos;
- if (!userEscaped)
- query = EscapeString (query);
+ // special case: there is no query part for 'news'
+ if (scheme == Uri.UriSchemeNews) {
+ pos = scheme.Length + 1;
+ path = EscapeString (uriString.Substring (pos, endpos - pos), EscapeNews);
+ return null;
+ }
+
+ // special case: there is no query part for 'nntp', 'file' and 'ftp' but there is an host, port, user...
+ if (SupportsQuery ()) {
+ // 6 query
+ pos = uriString.IndexOf ('?', startpos, endpos-startpos);
+ if (pos != -1) {
+ query = uriString.Substring (pos, endpos-pos);
+ endpos = pos;
+ if (!userEscaped)
+ query = EscapeString (query);
+ }
}
// 3
- if (IsPredefinedScheme (scheme) && scheme != UriSchemeMailto && scheme != UriSchemeNews && (
+ if (IsPredefinedScheme (scheme) && scheme != UriSchemeMailto && (
(endpos-startpos < 2) ||
(endpos-startpos >= 2 && uriString [startpos] == '/' && uriString [startpos+1] != '/')))
return "Invalid URI: The Authority/Host could not be parsed.";
if (kind == UriKind.Relative)
return "Absolute URI when we expected a relative one";
- if (scheme != UriSchemeMailto && scheme != UriSchemeNews)
+ if (scheme != UriSchemeMailto)
startpos += 2;
if (scheme == UriSchemeFile) {
if (unixAbsPath) {
pos = -1;
} else {
- pos = uriString.IndexOf ('/', startpos, endpos-startpos);
+ pos = uriString.IndexOf ('/', startpos, endpos - startpos);
if (pos == -1 && windowsFilePath)
- pos = uriString.IndexOf ('\\', startpos, endpos-startpos);
+ pos = uriString.IndexOf ('\\', startpos, endpos - startpos);
}
-
- if (pos == -1) {
- if ((scheme != Uri.UriSchemeMailto) &&
-#if ONLY_1_1
- (scheme != Uri.UriSchemeFile) &&
-#endif
- (scheme != Uri.UriSchemeNews))
- path = "/";
- } else {
- path = uriString.Substring (pos, endpos-pos);
+ if (pos != -1) {
+ path = uriString.Substring (pos, endpos - pos);
+ if (!SupportsQuery ()) {
+ if (scheme != Uri.UriSchemeNntp)
+ path = path.Replace ('\\', '/');
+ path = EscapeString (path, EscapeNews);
+ }
endpos = pos;
+ } else {
+ if (scheme != Uri.UriSchemeMailto)
+ path = "/";
}
// 4.a user info
else
pos = uriString.IndexOf ('@', startpos, endpos-startpos);
if (pos != -1) {
+ // supplying username / password on a file URI is not supported
+ if (scheme == UriSchemeFile)
+ return "Invalid host";
userinfo = uriString.Substring (startpos, pos-startpos);
startpos = pos + 1;
}
port = GetDefaultPort (scheme);
}
}
- } else {
- if (port == -1) {
+ } else if (!IsFile) {
+ // if no port is specified by a colon ':' is present then we must ignore it
+ // since it would be part of the host name and, as such, would be invalid
+ if (pos == endpos - 1)
+ endpos--;
+
+ if (port == -1)
port = GetDefaultPort (scheme);
- }
}
// 4 authority
path = Reduce ('/' + uriString, true);
host = String.Empty;
} else if (host.Length == 2 && host [1] == ':') {
- // windows filepath
- path = host + path;
- host = String.Empty;
+ if (scheme != UriSchemeFile) {
+ host = host [0].ToString ();
+ } else {
+ // windows filepath
+ path = host + path;
+ host = String.Empty;
+ }
} else if (isUnixFilePath) {
uriString = "//" + uriString;
host = String.Empty;
} else if (scheme == UriSchemeFile) {
isUnc = true;
- } else if (scheme == UriSchemeNews) {
- // no host for 'news', misinterpreted path
- if (host.Length > 0) {
- path = host;
- host = String.Empty;
- }
} else if (host.Length == 0 &&
(scheme == UriSchemeHttp || scheme == UriSchemeGopher || scheme == UriSchemeNntp ||
scheme == UriSchemeHttps || scheme == UriSchemeFtp)) {
if (!badhost && (host.Length > 1) && (host[0] == '[') && (host[host.Length - 1] == ']')) {
IPv6Address ipv6addr;
- if (IPv6Address.TryParse (host, out ipv6addr))
+ if (IPv6Address.TryParse (host, out ipv6addr)) {
host = "[" + ipv6addr.ToString (true) + "]";
- else
+ scope_id = ipv6addr.ScopeId;
+ } else
badhost = true;
}
if (badhost && (Parser is DefaultUriParser || Parser == null))
if (ex != null)
return ex.Message;
- if ((scheme != Uri.UriSchemeMailto) &&
- (scheme != Uri.UriSchemeNews) &&
- (scheme != Uri.UriSchemeFile)) {
+ if ((scheme != Uri.UriSchemeMailto) && (scheme != Uri.UriSchemeFile)) {
path = Reduce (path, CompactEscaped (scheme));
}
return false;
}
+ // replace '\', %5C ('\') and %2f ('/') into '/'
+ // replace %2e ('.') into '.'
+ private static string NormalizePath (string path)
+ {
+ StringBuilder res = new StringBuilder ();
+ for (int i = 0; i < path.Length; i++) {
+ char c = path [i];
+ switch (c) {
+ case '\\':
+ c = '/';
+ break;
+ case '%':
+ if (i < path.Length - 2) {
+ char c1 = path [i + 1];
+ char c2 = Char.ToUpper (path [i + 2]);
+ if ((c1 == '2') && (c2 == 'E')) {
+ c = '.';
+ i += 2;
+ } else if (((c1 == '2') && (c2 == 'F')) || ((c1 == '5') && (c2 == 'C'))) {
+ c = '/';
+ i += 2;
+ }
+ }
+ break;
+ }
+ res.Append (c);
+ }
+ return res.ToString ();
+ }
+
// This is called "compacting" in the MSDN documentation
private static string Reduce (string path, bool compact_escaped)
{
if (path == "/")
return path;
- StringBuilder res = new StringBuilder();
-
- if (compact_escaped) {
- // replace '\', %5C ('\') and %2f ('/') into '/'
+ if (compact_escaped && (path.IndexOf ('%') != -1)) {
+ // replace '\', %2f, %5c with '/' and replace %2e with '.'
// other escaped values seems to survive this step
- for (int i=0; i < path.Length; i++) {
- char c = path [i];
- switch (c) {
- case '\\':
- res.Append ('/');
- break;
- case '%':
- if (i < path.Length - 2) {
- char c1 = path [i + 1];
- char c2 = Char.ToUpper (path [i + 2]);
- if (((c1 == '2') && (c2 == 'F')) || ((c1 == '5') && (c2 == 'C'))) {
- res.Append ('/');
- i += 2;
- } else {
- res.Append (c);
- }
- } else {
- res.Append (c);
- }
- break;
- default:
- res.Append (c);
- break;
- }
- }
- path = res.ToString ();
+ path = NormalizePath (path);
} else {
+ // (always) replace '\' with '/'
path = path.Replace ('\\', '/');
}
- ArrayList result = new ArrayList ();
+ List<string> result = new List<string> ();
bool begin = true;
for (int startpos = 0; startpos < path.Length; ) {
- int endpos = path.IndexOf('/', startpos);
- if (endpos == -1) endpos = path.Length;
+ int endpos = path.IndexOf ('/', startpos);
+ if (endpos == -1)
+ endpos = path.Length;
string current = path.Substring (startpos, endpos-startpos);
startpos = endpos + 1;
- if ((begin && current.Length == 0) || current == "." )
+ if ((begin && current.Length == 0) || current == "." ) {
+ begin = false;
continue;
+ }
begin = false;
if (current == "..") {
if (result.Count == 0)
return "/";
- res.Length = 0;
+ StringBuilder res = new StringBuilder ();
+
if (path [0] == '/')
res.Append ('/');
public bool IsBaseOf (Uri uri)
{
+#if NET_4_0
+ if (uri == null)
+ throw new ArgumentNullException ("uri");
+#endif
return Parser.IsBaseOf (this, uri);
}
{
// funny, but it does not use the Parser's IsWellFormedOriginalString().
// Also, it seems we need to *not* escape hex.
- return EscapeString (OriginalString, false, false, true) == OriginalString;
+ return EscapeString (OriginalString, EscapeCommonBrackets) == OriginalString;
}
// static methods
// [MonoTODO ("rework code to avoid exception catching")]
public static bool TryCreate (Uri baseUri, string relativeUri, out Uri result)
{
+ result = null;
+ if (relativeUri == null)
+ return false;
+
try {
- // FIXME: this should call UriParser.Resolve
- result = new Uri (baseUri, relativeUri);
- return true;
+ Uri relative = new Uri (relativeUri, UriKind.RelativeOrAbsolute);
+ if ((baseUri != null) && baseUri.IsAbsoluteUri) {
+ // FIXME: this should call UriParser.Resolve
+ result = new Uri (baseUri, relative);
+ } else if (relative.IsAbsoluteUri) {
+ // special case - see unit tests
+ result = relative;
+ }
+ return (result != null);
} catch (UriFormatException) {
- result = null;
return false;
}
}
//[MonoTODO ("rework code to avoid exception catching")]
public static bool TryCreate (Uri baseUri, Uri relativeUri, out Uri result)
{
+ result = null;
+ if ((baseUri == null) || !baseUri.IsAbsoluteUri)
+ return false;
+#if NET_4_0
+ if (relativeUri == null)
+ return false;
+#endif
try {
// FIXME: this should call UriParser.Resolve
result = new Uri (baseUri, relativeUri.OriginalString);
return true;
} catch (UriFormatException) {
- result = null;
return false;
}
}
-//\r
-// System.UriBuilder\r
-//\r
-// Author:\r
-// Lawrence Pit (loz@cable.a2000.nl)\r
-//\r
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining\r
-// a copy of this software and associated documentation files (the\r
-// "Software"), to deal in the Software without restriction, including\r
-// without limitation the rights to use, copy, modify, merge, publish,\r
-// distribute, sublicense, and/or sell copies of the Software, and to\r
-// permit persons to whom the Software is furnished to do so, subject to\r
-// the following conditions:\r
-// \r
-// The above copyright notice and this permission notice shall be\r
-// included in all copies or substantial portions of the Software.\r
-// \r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-// 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
-\r
-using System;\r
-using System.Collections;\r
-using System.Runtime.Serialization;\r
-using System.Text;\r
-\r
-// See RFC 2396 for more info on URI's.\r
-\r
-namespace System \r
-{\r
- public class UriBuilder\r
- {\r
- private string scheme;\r
- private string host;\r
- private int port;\r
- private string path;\r
- private string query;\r
- private string fragment;\r
- private string username;\r
- private string password;\r
- \r
- private Uri uri;\r
- private bool modified;\r
- \r
- \r
- // Constructors\r
- \r
- public UriBuilder ()\r
-#if NET_2_0\r
- : this (Uri.UriSchemeHttp, "localhost")\r
-#else\r
- : this (Uri.UriSchemeHttp, "loopback")\r
-#endif\r
- {\r
- }\r
-\r
- public UriBuilder (string uri) : this (new Uri (uri))\r
- {\r
- }\r
- \r
- public UriBuilder (Uri uri)\r
- {\r
- scheme = uri.Scheme;\r
- host = uri.Host;\r
- port = uri.Port;\r
- path = uri.AbsolutePath;\r
- query = uri.Query;\r
- fragment = uri.Fragment;\r
- username = uri.UserInfo;\r
- int pos = username.IndexOf (':');\r
- if (pos != -1) {\r
- password = username.Substring (pos + 1);\r
- username = username.Substring (0, pos);\r
- } else {\r
- password = String.Empty;\r
- }\r
- modified = true;\r
- }\r
- \r
- public UriBuilder (string schemeName, string hostName) \r
- {\r
- Scheme = schemeName;\r
- Host = hostName;\r
- port = -1;\r
- Path = String.Empty; // dependent on scheme it may set path to "/"\r
- query = String.Empty;\r
- fragment = String.Empty;\r
- username = String.Empty;\r
- password = String.Empty;\r
- modified = true;\r
- }\r
- \r
- public UriBuilder (string scheme, string host, int portNumber) \r
- : this (scheme, host)\r
- {\r
- Port = portNumber;\r
- }\r
- \r
- public UriBuilder (string scheme, string host, int port, string pathValue)\r
- : this (scheme, host, port)\r
- {\r
- Path = pathValue;\r
- }\r
-\r
- public UriBuilder (string scheme, string host, int port, string pathValue, string extraValue)\r
- : this (scheme, host, port, pathValue)\r
- {\r
- if (extraValue == null || extraValue.Length == 0)\r
- return;\r
- \r
- if (extraValue [0] == '#') \r
- Fragment = extraValue.Remove (0, 1);\r
- else if (extraValue [0] == '?') \r
- Query = extraValue.Remove (0, 1);\r
- else \r
- throw new ArgumentException ("extraValue");\r
- }\r
-\r
- \r
- // Properties\r
- \r
- public string Fragment {\r
- get { return fragment; }\r
- set {\r
- fragment = value;\r
- if (fragment == null)\r
- fragment = String.Empty;\r
- else if (fragment.Length > 0)\r
-// fragment = "#" + EncodeUtf8 (value.Replace ("%23", "#"));\r
- fragment = "#" + value.Replace ("%23", "#");\r
-#if !NET_2_0\r
- query = String.Empty;\r
-#endif\r
- modified = true;\r
- }\r
- }\r
-\r
- public string Host {\r
- get { return host; }\r
- set {\r
- host = (value == null) ? String.Empty : value;;\r
- modified = true;\r
- }\r
- }\r
-\r
- public string Password {\r
- get { return password; }\r
- set {\r
- password = (value == null) ? String.Empty : value;;\r
- modified = true;\r
- }\r
- }\r
- \r
- public string Path {\r
- get { return path; }\r
- set {\r
- if (value == null || value.Length == 0) {\r
- path = "/";\r
- } else {\r
- path = Uri.EscapeString (value.Replace ('\\', '/'), false, true, true);\r
- }\r
- modified = true;\r
- }\r
- }\r
- \r
- public int Port {\r
- get { return port; }\r
- set {\r
-#if NET_2_0\r
- if (value < -1)\r
- throw new ArgumentOutOfRangeException ("value");\r
-#else\r
- if (value < 0)\r
- throw new ArgumentOutOfRangeException ("value");\r
-#endif\r
- // apparently it is\r
- port = value;\r
- modified = true;\r
- }\r
- }\r
- \r
- public string Query {\r
- get { return query; }\r
- set {\r
- // LAMESPEC: it doesn't say to always prepend a \r
- // question mark to the value.. it does say this \r
- // for fragment.\r
- if (value == null || value.Length == 0)\r
- query = String.Empty;\r
- else\r
-// query = "?" + EncodeUtf8 (value);\r
- query = "?" + value;\r
-#if !NET_2_0\r
- fragment = String.Empty;\r
-#endif\r
- modified = true;\r
- }\r
- }\r
- \r
- public string Scheme {\r
- get { return scheme; }\r
- set {\r
- if (value == null)\r
- value = String.Empty;\r
- int colonPos = value.IndexOf (':');\r
- if (colonPos != -1)\r
- value = value.Substring (0, colonPos);\r
- scheme = value.ToLower ();\r
- modified = true;\r
- }\r
- }\r
- \r
- public Uri Uri {\r
- get {\r
- if (!modified) \r
- return uri;\r
- uri = new Uri (ToString (), true);\r
- modified = false;\r
- return uri;\r
- }\r
- }\r
- \r
- public string UserName {\r
- get { return username; }\r
- set {\r
- username = (value == null) ? String.Empty : value;;\r
- modified = true;\r
- }\r
- }\r
-\r
- // Methods\r
- \r
- public override bool Equals (object rparam) \r
- {\r
- return (rparam == null) ? false : this.Uri.Equals (rparam.ToString ());\r
- }\r
- \r
- public override int GetHashCode ()\r
- {\r
- return this.Uri.GetHashCode ();\r
- }\r
- \r
- public override string ToString ()\r
- {\r
- StringBuilder builder = new StringBuilder ();\r
-\r
- builder.Append (scheme);\r
- builder.Append ("://");\r
-\r
- if (username != String.Empty) {\r
- builder.Append (username);\r
- if (password != String.Empty)\r
- builder.Append (":" + password);\r
- builder.Append ('@');\r
- }\r
-\r
- builder.Append (host);\r
- if (port > 0)\r
- builder.Append (":" + port);\r
-\r
- if (path != String.Empty &&\r
- builder [builder.Length - 1] != '/' &&\r
- path.Length > 0 && path [0] != '/')\r
- builder.Append ('/');\r
- builder.Append (path);\r
- builder.Append (query);\r
- builder.Append (fragment);\r
-\r
- return builder.ToString ();\r
- }\r
- }\r
-}\r
+//
+// System.UriBuilder
+//
+// Author:
+// Lawrence Pit (loz@cable.a2000.nl)
+//
+// Copyright (C) 2005, 2010 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.Runtime.Serialization;
+using System.Text;
+
+// See RFC 2396 for more info on URI's.
+
+namespace System
+{
+ public class UriBuilder
+ {
+ private string scheme;
+ private string host;
+ private int port;
+ private string path;
+ private string query;
+ private string fragment;
+ private string username;
+ private string password;
+
+ private Uri uri;
+ private bool modified;
+
+
+ // Constructors
+
+ public UriBuilder ()
+ {
+ Initialize (Uri.UriSchemeHttp, "localhost", -1, String.Empty, String.Empty);
+ }
+
+ public UriBuilder (string uri)
+ {
+ if (uri == null)
+ throw new ArgumentNullException ("uriString");
+
+ Uri u = null;
+ if (Uri.TryCreate (uri, UriKind.Absolute, out u)) {
+ Initialize (u);
+ } else if (!uri.Contains (Uri.SchemeDelimiter)) {
+ // second chance, UriBuilder parsing is more forgiving than Uri
+ Initialize (new Uri (Uri.UriSchemeHttp + Uri.SchemeDelimiter + uri));
+ } else
+ throw new UriFormatException ();
+ }
+
+ public UriBuilder (Uri uri)
+ {
+#if NET_4_0
+ if (uri == null)
+ throw new ArgumentNullException ("uri");
+#endif
+ Initialize (uri);
+ }
+
+ public UriBuilder (string schemeName, string hostName)
+ {
+ Initialize (schemeName, hostName, -1, String.Empty, String.Empty);
+ }
+
+ public UriBuilder (string scheme, string hostName, int portNumber)
+ {
+ Initialize (scheme, hostName, portNumber, String.Empty, String.Empty);
+ }
+
+ public UriBuilder (string scheme, string host, int port, string pathValue)
+ {
+ Initialize (scheme, host, port, pathValue, String.Empty);
+ }
+
+ public UriBuilder (string scheme, string host, int port, string pathValue, string extraValue)
+ {
+ Initialize (scheme, host, port, pathValue, extraValue);
+ }
+
+ private void Initialize (Uri uri)
+ {
+ Initialize (uri.Scheme, uri.Host, uri.Port, uri.AbsolutePath, String.Empty);
+ fragment = uri.Fragment;
+ query = uri.Query;
+ username = uri.UserInfo;
+ int pos = username.IndexOf (':');
+ if (pos != -1) {
+ password = username.Substring (pos + 1);
+ username = username.Substring (0, pos);
+ } else {
+ password = String.Empty;
+ }
+ }
+
+ private void Initialize (string scheme, string host, int port, string pathValue, string extraValue)
+ {
+ modified = true;
+
+ Scheme = scheme;
+ Host = host;
+ Port = port;
+ Path = pathValue;
+ query = String.Empty;
+ fragment = String.Empty;
+ Path = pathValue;
+ username = String.Empty;
+ password = String.Empty;
+
+ if (String.IsNullOrEmpty (extraValue))
+ return;
+
+ if (extraValue [0] == '#')
+ Fragment = extraValue.Remove (0, 1);
+ else if (extraValue [0] == '?')
+ Query = extraValue.Remove (0, 1);
+ else
+ throw new ArgumentException ("extraValue");
+ }
+
+ // Properties
+
+ public string Fragment {
+ get { return fragment; }
+ set {
+ fragment = value;
+ if (fragment == null)
+ fragment = String.Empty;
+ else if (fragment.Length > 0)
+ fragment = "#" + value.Replace ("%23", "#");
+ modified = true;
+ }
+ }
+
+ public string Host {
+ get { return host; }
+ set {
+ if (String.IsNullOrEmpty (value))
+ host = String.Empty;
+ else if ((value.IndexOf (':') != -1) && (value [0] != '[')) {
+ host = "[" + value + "]";
+ } else {
+ host = value;
+ }
+ modified = true;
+ }
+ }
+
+ public string Password {
+ get { return password; }
+ set {
+ password = (value == null) ? String.Empty : value;
+ }
+ }
+
+ public string Path {
+ get { return path; }
+ set {
+ if (value == null || value.Length == 0) {
+ path = "/";
+ } else {
+ path = Uri.EscapeString (value.Replace ('\\', '/'), Uri.EscapeCommonHexBracketsQuery);
+ }
+ modified = true;
+ }
+ }
+
+ public int Port {
+ get { return port; }
+ set {
+ if (value < -1)
+ throw new ArgumentOutOfRangeException ("value");
+ // apparently it is
+ port = value;
+ modified = true;
+ }
+ }
+
+ public string Query {
+ get { return query; }
+ set {
+ // LAMESPEC: it doesn't say to always prepend a
+ // question mark to the value.. it does say this
+ // for fragment.
+ if (value == null || value.Length == 0)
+ query = String.Empty;
+ else
+ query = "?" + value;
+ modified = true;
+ }
+ }
+
+ public string Scheme {
+ get { return scheme; }
+ set {
+ if (value == null)
+ value = String.Empty;
+ int colonPos = value.IndexOf (':');
+ if (colonPos != -1)
+ value = value.Substring (0, colonPos);
+ scheme = value.ToLower ();
+ modified = true;
+ }
+ }
+
+ public Uri Uri {
+ get {
+ if (!modified)
+ return uri;
+ uri = new Uri (ToString (), true);
+ // some properties are updated once the Uri is created - see unit tests
+ host = uri.Host;
+ path = uri.AbsolutePath;
+ modified = false;
+ return uri;
+ }
+ }
+
+ public string UserName {
+ get { return username; }
+ set {
+ username = (value == null) ? String.Empty : value;
+ modified = true;
+ }
+ }
+
+ // Methods
+
+ public override bool Equals (object rparam)
+ {
+ return (rparam == null) ? false : this.Uri.Equals (rparam.ToString ());
+ }
+
+ public override int GetHashCode ()
+ {
+ return this.Uri.GetHashCode ();
+ }
+
+ public override string ToString ()
+ {
+ StringBuilder builder = new StringBuilder ();
+
+ builder.Append (scheme);
+ // note: mailto and news use ':', not "://", as their delimiter
+ builder.Append (Uri.GetSchemeDelimiter (scheme));
+
+ if (username != String.Empty) {
+ builder.Append (username);
+ if (password != String.Empty)
+ builder.Append (":" + password);
+ builder.Append ('@');
+ }
+
+ if (host.Length > 0) {
+ builder.Append (host);
+ if (port > 0)
+ builder.Append (":" + port);
+ }
+
+ if (path != String.Empty &&
+ builder [builder.Length - 1] != '/' &&
+ path.Length > 0 && path [0] != '/')
+ builder.Append ('/');
+ builder.Append (path);
+ builder.Append (query);
+ builder.Append (fragment);
+
+ return builder.ToString ();
+ }
+ }
+}
switch (format) {
case UriFormat.UriEscaped:
- return Uri.EscapeString (s, false, true, true);
+ return Uri.EscapeString (s, Uri.EscapeCommonHexBrackets);
case UriFormat.SafeUnescaped:
// TODO subset of escape rules
s = Uri.Unescape (s, false);
InternalRegister (newtable, new DefaultUriParser (), Uri.UriSchemeHttp, 80);
InternalRegister (newtable, new DefaultUriParser (), Uri.UriSchemeHttps, 443);
InternalRegister (newtable, new DefaultUriParser (), Uri.UriSchemeMailto, 25);
-#if NET_2_0
InternalRegister (newtable, new DefaultUriParser (), Uri.UriSchemeNetPipe, -1);
InternalRegister (newtable, new DefaultUriParser (), Uri.UriSchemeNetTcp, -1);
-#endif
- InternalRegister (newtable, new DefaultUriParser (), Uri.UriSchemeNews, 119);
+ InternalRegister (newtable, new DefaultUriParser (), Uri.UriSchemeNews, -1);
InternalRegister (newtable, new DefaultUriParser (), Uri.UriSchemeNntp, 119);
// not defined in Uri.UriScheme* but a parser class exists
InternalRegister (newtable, new DefaultUriParser (), "ldap", 389);
#endif
}
- Console.WriteLine ("Converting: '{0}' of type '{1}'", value, value.GetType ().Name);
if (!CanConvertFrom (context, value.GetType ()))
throw new NotSupportedException (Locale.GetText ("Cannot convert from value."));
System.ComponentModel/CultureInfoConverterTest.cs
System.ComponentModel/DataObjectMethodAttributeTests.cs
System.ComponentModel/DateTimeConverterTests.cs
+System.ComponentModel/DateTimeOffsetConverterTests.cs
System.ComponentModel/DefaultBindingPropertyAttributeTest.cs
System.ComponentModel/DefaultValueAttributeTest.cs
System.ComponentModel/DecimalConverterTests.cs
System.ComponentModel/SingleConverterTests.cs
System.ComponentModel/ToolboxItemAttributeTests.cs
System.ComponentModel/TypeConverterTests.cs
+System.ComponentModel/TypeDescriptionProviderTest.cs
System.ComponentModel/TypeDescriptorTests.cs
System.ComponentModel/UInt16ConverterTests.cs
System.ComponentModel/UInt32ConverterTests.cs
--- /dev/null
+//
+// DateTimeOffsetConverterTests.cs
+//
+// Author:
+// Carlos Alberto Cortez (calberto.cortez@gmail.com)
+//
+// Copyright (C) 2010 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.
+//
+
+#if NET_4_0
+
+using System;
+using System.ComponentModel;
+using System.ComponentModel.Design.Serialization;
+using System.Globalization;
+using NUnit.Framework;
+
+namespace MonoTests.System.ComponentModel
+{
+ [TestFixture]
+ public class DateTimeOffsetConverterTests
+ {
+ DateTimeOffsetConverter converter;
+
+ [SetUp]
+ public void SetUp ()
+ {
+ converter = new DateTimeOffsetConverter ();
+ }
+
+ [Test]
+ public void CanConvertFrom ()
+ {
+ Assert.IsTrue (converter.CanConvertFrom (typeof (string)), "#A1");
+ Assert.IsFalse (converter.CanConvertFrom (typeof (DateTime)), "#A2");
+ Assert.IsFalse (converter.CanConvertFrom (typeof (DateTimeOffset)), "#A3");
+ Assert.IsFalse (converter.CanConvertFrom (typeof (object)), "#A4");
+ Assert.IsTrue (converter.CanConvertFrom (typeof (InstanceDescriptor)), "#A5");
+ }
+
+ [Test]
+ public void CanConvertTo ()
+ {
+ Assert.IsTrue (converter.CanConvertTo (typeof (string)), "#A1");
+ Assert.IsFalse (converter.CanConvertTo (typeof (object)), "#A2");
+ Assert.IsFalse (converter.CanConvertTo (typeof (DateTime)), "#A3");
+ Assert.IsFalse (converter.CanConvertTo (typeof (DateTimeOffset)), "#A4");
+ Assert.IsTrue (converter.CanConvertTo (typeof (InstanceDescriptor)), "#A5");
+ }
+
+ [Test]
+ public void ConvertFrom_String ()
+ {
+ DateTimeOffset dateOffset = DateTimeOffset.Now;
+ DateTimeOffset newDateOffset = (DateTimeOffset) converter.ConvertFrom (null, CultureInfo.InvariantCulture,
+ dateOffset.ToString (CultureInfo.InvariantCulture));
+
+ Assert.AreEqual (dateOffset.Date, newDateOffset.Date, "#A1");
+ Assert.AreEqual (dateOffset.Hour, newDateOffset.Hour, "#A2");
+ Assert.AreEqual (dateOffset.Minute, newDateOffset.Minute, "#A3");
+ Assert.AreEqual (dateOffset.Second, newDateOffset.Second, "#A4");
+ Assert.AreEqual (dateOffset.Offset, newDateOffset.Offset, "#A5");
+
+ newDateOffset = (DateTimeOffset) converter.ConvertFrom (null, CultureInfo.InvariantCulture, String.Empty);
+ Assert.AreEqual (DateTimeOffset.MinValue, newDateOffset, "#B1");
+ }
+
+ [Test]
+ [ExpectedException (typeof (NotSupportedException))]
+ public void ConvertFrom_Object ()
+ {
+ converter.ConvertFrom (new object ());
+ }
+
+ [Test]
+ [ExpectedException (typeof (NotSupportedException))]
+ public void ConvertFrom_Int32 ()
+ {
+ converter.ConvertFrom (10);
+ }
+
+ [Test]
+ public void ConvertTo_MinValue ()
+ {
+ Assert.AreEqual (String.Empty, converter.ConvertTo (null,
+ CultureInfo.InvariantCulture, DateTimeOffset.MinValue, typeof (string)), "#A1");
+ Assert.AreEqual (String.Empty, converter.ConvertTo (null,
+ CultureInfo.CurrentCulture, DateTimeOffset.MinValue, typeof (string)), "#A2");
+ Assert.AreEqual (String.Empty, converter.ConvertTo (DateTimeOffset.MinValue,
+ typeof (string)), "#A3");
+ }
+
+ [Test]
+ public void ConvertTo_MaxValue ()
+ {
+ Assert.AreEqual (DateTimeOffset.MaxValue.ToString (CultureInfo.InvariantCulture),
+ converter.ConvertTo (null, CultureInfo.InvariantCulture, DateTimeOffset.MaxValue,
+ typeof (string)), "#A1");
+ }
+
+ [Test]
+ [ExpectedException (typeof (NotSupportedException))]
+ public void ConvertTo_object ()
+ {
+ converter.ConvertTo (DateTimeOffset.Now, typeof (object));
+ }
+
+ [Test]
+ [ExpectedException (typeof (NotSupportedException))]
+ public void ConvertTo_int ()
+ {
+ converter.ConvertTo (DateTimeOffset.Now, typeof (int));
+ }
+
+ [Test]
+ [ExpectedException (typeof (NotSupportedException))]
+ public void ConvertTo_DateTime ()
+ {
+ converter.ConvertTo (DateTimeOffset.Now, typeof (DateTime));
+ }
+
+ [Test]
+ [ExpectedException (typeof (NotSupportedException))]
+ public void ConvertTo_DateTimeOffset ()
+ {
+ converter.ConvertTo (DateTimeOffset.Now, typeof (DateTimeOffset));
+ }
+
+ [Test]
+ public void ConvertToString_MinValue ()
+ {
+ Assert.AreEqual (String.Empty, converter.ConvertToString (null,
+ CultureInfo.InvariantCulture, DateTimeOffset.MinValue), "#A1");
+
+ Assert.AreEqual (String.Empty, converter.ConvertToString (null, DateTimeOffset.MinValue), "#A2");
+ Assert.AreEqual (String.Empty, converter.ConvertToString (null,
+ CultureInfo.CurrentCulture, DateTimeOffset.MinValue), "#A3");
+ Assert.AreEqual (String.Empty, converter.ConvertToString (DateTimeOffset.MinValue), "#A4");
+ }
+
+ [Test]
+ public void ConvertToString_MaxValue ()
+ {
+ Assert.AreEqual (DateTimeOffset.MaxValue.ToString (CultureInfo.InvariantCulture),
+ converter.ConvertToString (null, CultureInfo.InvariantCulture, DateTimeOffset.MaxValue), "#A1");
+ }
+
+ [Test]
+ public void ConvertToString ()
+ {
+ CultureInfo ciUS = new CultureInfo("en-US");
+ CultureInfo ciGB = new CultureInfo("en-GB");
+ CultureInfo ciDE = new CultureInfo("de-DE");
+
+ DateTimeOffset dateOffset = new DateTimeOffset (2008, 12, 31, 23, 59, 58, 5, new TimeSpan (3, 6, 0));
+ DoTestToString ("12/31/2008 11:59 p.m. +03:06", dateOffset, ciUS);
+ DoTestToString ("31/12/2008 23:59 +03:06", dateOffset, ciGB);
+ DoTestToString ("31.12.2008 23:59 +03:06", dateOffset, ciDE);
+ DoTestToString ("12/31/2008 23:59:58 +03:06", dateOffset, CultureInfo.InvariantCulture);
+ Assert.AreEqual ("12/31/2008 23:59:58 +03:06", converter.ConvertToInvariantString (dateOffset), "Invariant");
+
+ dateOffset = new DateTimeOffset (new DateTime (2008, 12, 31), new TimeSpan (0, 0, 0));
+ DoTestToString ("12/31/2008 +00:00", dateOffset, ciUS);
+ DoTestToString ("31/12/2008 +00:00", dateOffset, ciGB);
+ DoTestToString ("31.12.2008 +00:00", dateOffset, ciDE);
+ DoTestToString ("2008-12-31 +00:00", dateOffset, CultureInfo.InvariantCulture);
+ Assert.AreEqual ("2008-12-31 +00:00", converter.ConvertToInvariantString (dateOffset), "Invariant");
+ }
+
+ void DoTestToString (string expected, DateTimeOffset value, CultureInfo ci)
+ {
+ String message = ci.Name;
+ if (message == null || message.Length == 0)
+ message = "?Invariant";
+ Assert.AreEqual (expected, converter.ConvertTo (null, ci, value, typeof (string)), message);
+ }
+
+ [Test]
+ [ExpectedException (typeof (FormatException))]
+ public void ConvertFrom_InvalidValue ()
+ {
+ converter.ConvertFrom ("*1");
+ }
+
+ [Test]
+ [ExpectedException (typeof (FormatException))]
+ public void ConvertFrom_InvalidValue_Invariant ()
+ {
+ converter.ConvertFrom (null, CultureInfo.InvariantCulture, "*1");
+ }
+
+ [Test]
+ [ExpectedException (typeof (FormatException))]
+ public void ConvertFromString_InvalidValue ()
+ {
+ converter.ConvertFromString ("*1");
+ }
+
+ [Test]
+ [ExpectedException (typeof (FormatException))]
+ public void ConvertFromString_InvalidValue_Invariant ()
+ {
+ converter.ConvertFromString (null, CultureInfo.InvariantCulture, "*1");
+ }
+
+ [Test]
+ public void ConvertTo_InstanceDescriptor ()
+ {
+ DateTimeOffset dto = new DateTimeOffset (new DateTime (2010, 10, 11), new TimeSpan (3, 6, 0));
+ InstanceDescriptor descriptor = (InstanceDescriptor) converter.ConvertTo (dto, typeof (InstanceDescriptor));
+
+ Assert.AreEqual (".ctor", descriptor.MemberInfo.Name, "#A0");
+ Assert.AreEqual (8, descriptor.Arguments.Count, "#A1");
+ DateTimeOffset dto2 = (DateTimeOffset) descriptor.Invoke ();
+ Assert.AreEqual (dto, dto2, "#A2");
+ }
+ }
+}
+
+#endif
+
--- /dev/null
+//
+// TypeDescriptionProviderTest.cs
+//
+// Author:
+// Carlos Alberto Cortez (calberto.cortez@gmail.com)
+//
+// Copyright (C) 2010 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.ComponentModel;
+using System.ComponentModel.Design.Serialization;
+using System.Globalization;
+using NUnit.Framework;
+
+namespace MonoTests.System.ComponentModel
+{
+ [TestFixture]
+ public class TypeDescriptionProviderTest
+ {
+#if NET_4_0
+ [Test]
+ public void IsSupportedType ()
+ {
+ CustomDescriptionProvider provider = new CustomDescriptionProvider ();
+ Assert.IsTrue (provider.IsSupportedType (typeof (string)), "#A1");
+ Assert.IsTrue (provider.IsSupportedType (typeof (object)), "#A2");
+ Assert.IsTrue (provider.IsSupportedType (typeof (CustomDescriptionProvider)), "#A3");
+ }
+
+ [Test]
+ public void GetRuntimeType ()
+ {
+ CustomDescriptionProvider provider = new CustomDescriptionProvider ();
+ Assert.AreEqual (typeof (CustomDescriptionProvider), provider.GetRuntimeType (typeof (CustomDescriptionProvider)), "#A0");
+ Assert.AreEqual (typeof (object), provider.GetRuntimeType (typeof (object)), "#A1");
+ }
+
+ [Test]
+ public void GetExtenderProviders ()
+ {
+ CustomDescriptionProvider provider = new CustomDescriptionProvider ();
+ IExtenderProvider [] providers = provider.GetExtenderProviders (typeof (object));
+ Assert.IsNotNull (providers, "#A0");
+ Assert.AreEqual (0, providers.Length, "#A1");
+ }
+
+ class CustomDescriptionProvider : TypeDescriptionProvider
+ {
+ public new IExtenderProvider [] GetExtenderProviders (object instance)
+ {
+ return base.GetExtenderProviders (instance);
+ }
+ }
+#endif
+ }
+}
+
using System.ComponentModel.Design;
using System.Globalization;
-#if NET_2_0
using System.Collections.Generic;
-#endif
using NUnit.Framework;
+using System.Reflection;
namespace MonoTests.System.ComponentModel
{
}
}
-#if NET_2_0
class MyCustomTypeDescriptor : CustomTypeDescriptor
{
public MyTypeDescriptionProvider Provider { get; private set; }
return base.CreateInstance (provider, objectType, argTypes, args);
}
}
-#endif
[TestFixture]
public class TypeDescriptorTests
MyComponent nfscom = new MyComponent (new NoFilterSite (new MyContainer ()));
AnotherComponent anothercom = new AnotherComponent ();
-#if NET_2_0
[Test]
[ExpectedException (typeof (ArgumentNullException))]
public void TestAddAttributes_Type_Attributes_1 ()
Assert.IsNotNull (type, "#F1");
Assert.AreEqual (typeof (int), type, "#F1-1");
}
-#endif
[Test]
public void TestICustomTypeDescriptor ()
[Test]
public void TestGetComponentName ()
{
-#if NET_2_0
// in MS.NET 2.0, GetComponentName no longer returns
// the type name if there's no custom typedescriptor
// and no site
Assert.IsNull (TypeDescriptor.GetComponentName (new Exception (), false), "#4");
Assert.IsNull (TypeDescriptor.GetComponentName (typeof (Exception)), "#4");
Assert.IsNull (TypeDescriptor.GetComponentName (typeof (Exception), false), "#6");
-#else
- Assert.AreEqual ("MyComponent", TypeDescriptor.GetComponentName (com), "#1");
- Assert.AreEqual ("MyComponent", TypeDescriptor.GetComponentName (com, false), "#2");
- Assert.AreEqual ("Exception", TypeDescriptor.GetComponentName (new Exception ()), "#3");
- Assert.AreEqual ("Exception", TypeDescriptor.GetComponentName (new Exception (), false), "#4");
- Assert.IsNotNull (TypeDescriptor.GetComponentName (typeof (Exception)), "#5");
- Assert.IsNotNull (TypeDescriptor.GetComponentName (typeof (Exception), false), "#6");
-#endif
Assert.AreEqual ("TestName", TypeDescriptor.GetComponentName (sitedcom), "#7");
Assert.AreEqual ("TestName", TypeDescriptor.GetComponentName (sitedcom), "#8");
}
Assert.AreEqual (typeof (TypeConverter), TypeDescriptor.GetConverter (new TestStruct ()).GetType (), "#26");
Assert.AreEqual (typeof (CollectionConverter), TypeDescriptor.GetConverter (new Hashtable ()).GetType (), "#27");
-#if NET_2_0
// Test from bug #76686
Assert.AreEqual (typeof (Int32Converter), TypeDescriptor.GetConverter ((int?) 1).GetType (), "#28");
-#endif
Assert.IsTrue (TypeDescriptor.GetConverter (typeof (Component)) is ComponentConverter, "#29");
Assert.IsTrue (TypeDescriptor.GetConverter (new Component()) is ComponentConverter, "#30");
-#if NET_2_0
Assert.AreEqual (typeof (NullableConverter), TypeDescriptor.GetConverter (typeof (int?)).GetType (), "#31");
-#endif
}
[Test]
Assert.AreEqual ("AnotherEvent", des.Name, "#D2");
des = TypeDescriptor.GetDefaultEvent (sitedcom);
-#if NET_2_0
Assert.IsNull (des, "#E1");
-#else
- Assert.IsNotNull (des, "#E1");
- Assert.AreEqual ("AnotherEvent", des.Name, "#E2");
-#endif
des = TypeDescriptor.GetDefaultEvent (new MyComponent(new AnotherSite ()));
Assert.IsNotNull (des, "#F1");
}
[Test]
-#if ONLY_1_1
- // throws NullReferenceException on MS.NET 1.x due to bug
- // which is fixed in MS.NET 2.0
- [NUnit.Framework.Category("NotDotNet")]
-#endif
public void TestGetDefaultProperty2 ()
{
PropertyDescriptor des = TypeDescriptor.GetDefaultProperty (sitedcom);
}
[Test]
-#if ONLY_1_1
- // throws NullReferenceException on MS.NET 1.x due to bug
- // which is fixed in MS.NET 2.0
- [NUnit.Framework.Category("NotDotNet")]
-#endif
public void TestGetProperties2 ()
{
PropertyDescriptorCollection col = TypeDescriptor.GetProperties (sitedcom);
}
[Test]
-#if ONLY_1_1
- [NUnit.Framework.Category ("NotDotNet")] // .NET 1.x (or csc 1.x) does not retain the original order
-#endif
public void GetProperties_Order ()
{
MyComponent com = new MyComponent (new MyContainer ());
Assert.AreEqual (1, pc.Count, "#1");
Assert.AreEqual ("Length", pc [0].Name, "#2");
}
+
+#if NET_4_0
+ [Test]
+ public void InterfaceType ()
+ {
+ Type interface_type = TypeDescriptor.InterfaceType;
+ Assert.AreEqual ("TypeDescriptorInterface", interface_type.Name, "#A0");
+ Assert.IsTrue (interface_type.IsClass, "#A1");
+ Assert.IsTrue (interface_type.IsSealed, "#A2");
+ Assert.AreEqual (typeof (object), interface_type.BaseType, "#A3");
+ Assert.IsFalse (interface_type.IsInterface, "#A4");
+ Assert.IsFalse (interface_type.IsPublic, "#A5");
+ }
+#endif
}
}
// Martin Willemoes Hansen (mwh@sysrq.dk)
//
// (C) 2003 Martin Willemoes Hansen
+// Copyright (C) 2010 Novell, Inc (http://www.novell.com)
//
using NUnit.Framework;
{
b = new UriBuilder ();
Assert.AreEqual ("http", b.Scheme, "#1");
-#if NET_2_0
Assert.AreEqual ("localhost", b.Host, "#2");
-#else
- Assert.AreEqual ("loopback", b.Host, "#3");
-#endif
Assert.AreEqual (-1, b.Port, "#4");
Assert.AreEqual (string.Empty, b.Query, "#5");
Assert.AreEqual (string.Empty, b.Fragment, "#6");
Assert.AreEqual (80, b.Port, "#B5");
Assert.AreEqual ("?name=50", b.Query, "#B5");
Assert.AreEqual ("http", b.Scheme, "#B6");
-#if NET_2_0
- // our 1.0 behavior matches that of .NET 2.0
Assert.AreEqual ("http://www.ximian.com/?name=50#test", b.Uri.ToString (), "#B7");
-#endif
Assert.AreEqual (string.Empty, b.UserName, "#B8");
}
[Test] // ctor (string)
-#if ONLY_1_1
- [Category ("NotWorking")] // we always throw an ArgumentNullException
-#endif
public void Constructor1_Uri_Null ()
{
try {
new UriBuilder ((string) null);
Assert.Fail ("#1");
-#if NET_2_0
} catch (ArgumentNullException ex) {
Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
Assert.IsNull (ex.InnerException, "#3");
Assert.IsNotNull (ex.ParamName, "#5");
Assert.AreEqual ("uriString", ex.ParamName, "#6");
}
-#else
- } catch (NullReferenceException) {
- }
-#endif
}
[Test] // ctor (Uri)
+#if NET_4_0
+ [ExpectedException (typeof (ArgumentNullException))]
+#else
[ExpectedException (typeof (NullReferenceException))]
+#endif
public void Constructor2_Uri_Null ()
{
new UriBuilder ((Uri) null);
}
[Test]
- // This test does not make sense, will fix soon
- [Category ("NotWorking")] // bug #75144
+ public void Constructor_StringStringInt ()
+ {
+ UriBuilder ub = new UriBuilder ("http", "www.mono-project.com", 80);
+ Assert.AreEqual ("http://www.mono-project.com/", ub.Uri.AbsoluteUri, "Uri.AbsoluteUri");
+ }
+
+ [Test]
+ [ExpectedException (typeof (InvalidOperationException))]
+ public void Constructor_RelativeUri ()
+ {
+ Uri relative = new Uri ("../dir/subdir/file", UriKind.RelativeOrAbsolute);
+ UriBuilder ub = new UriBuilder (relative);
+ }
+
+ [Test]
public void UserInfo ()
{
- b = new UriBuilder ("mailto://myname:mypwd@contoso.com?subject=hello");
-#if NET_2_0
- Assert.AreEqual (string.Empty, b.UserName, "#1");
- Assert.AreEqual (string.Empty, b.Password, "#2");
-#else
- // NotWorking here for 1.x (bad behaviour in 1.x - may not be worth fixing)
- Assert.AreEqual ("myname", b.UserName, "#1");
- Assert.AreEqual ("mypwd", b.Password, "#2");
-#endif
+ string s = "mailto://myname:mypwd@contoso.com?subject=hello";
+ b = new UriBuilder (s);
+ Assert.AreEqual (s, b.ToString (), "1.ToString");
+ Assert.AreEqual (string.Empty, b.UserName, "1.UserName");
+ Assert.AreEqual (string.Empty, b.Password, "1.Password");
+ Assert.AreEqual ("//myname:mypwd@contoso.com", b.Uri.LocalPath, "1.Uri.LocalPath");
+
+ // weird ?caching? issue, UserInfo is not updated if we look at the value of UserName before setting Password
+ b = new UriBuilder ("mailto", "contoso.com");
+ b.UserName = "myname";
+ Assert.AreEqual ("myname", b.Uri.UserInfo, "2.UserName");
+ b.Password = "mypwd";
+ Assert.AreEqual ("myname", b.Uri.UserInfo, "2.Password");
+ Assert.AreEqual ("/", b.Uri.LocalPath, "2.Uri.LocalPath");
+
b = new UriBuilder ("mailto", "contoso.com");
b.UserName = "myname";
b.Password = "mypwd";
- // NotWorking here for 2.0 - worth fixing
- Assert.AreEqual ("myname:mypwd", b.Uri.UserInfo, "#3");
+ Assert.AreEqual ("myname:mypwd", b.Uri.UserInfo, "3.Uri.UserInfo");
+ Assert.AreEqual ("/", b.Uri.LocalPath, "3.Uri.LocalPath");
}
[Test]
{
b.Port = -12345;
}
-#if NET_2_0
+
[Test]
public void DefaultPort ()
{
Assert.AreEqual (-1, b.Port, "#1");
Assert.AreEqual ("http://www.ximian.com/foo/bar/index.html", b.ToString (), "#2");
}
-#else
- [Test]
- [ExpectedException (typeof (ArgumentOutOfRangeException))]
- public void BadPort3 ()
- {
- b.Port = -1;
- }
-#endif
+
[Test]
public void Query ()
{
b.Fragment = "test";
Assert.AreEqual ("#test", b.Fragment, "#5");
b.Query = "name";
-#if NET_2_0
Assert.AreEqual ("#test", b.Fragment, "#6");
-#else
- Assert.AreEqual (string.Empty, b.Fragment, "#6");
-#endif
Assert.AreEqual ("?name", b.Query, "#7");
b.Fragment = "run";
Assert.AreEqual ("#run", b.Fragment, "#8");
b.Query = null;
-#if NET_2_0
Assert.AreEqual ("#run", b.Fragment, "#9");
-#else
- Assert.AreEqual (string.Empty, b.Fragment, "#9");
-#endif
Assert.AreEqual (string.Empty, b.Query, "#10");
}
b.Query = "name";
Assert.AreEqual ("?name", b.Query, "#5");
b.Fragment = null;
-#if NET_2_0
Assert.AreEqual ("?name", b.Query, "#6");
-#else
- Assert.AreEqual (string.Empty, b.Query, "#6");
-#endif
Assert.AreEqual (string.Empty, b.Fragment, "#7");
}
}
[Test]
-#if NET_2_0
- [Category ("NotWorking")] // equals changed in 2.0
-#endif
public void Equals ()
{
b = new UriBuilder ("http://", "www.ximian.com", 80, "foo/bar/index.html?item=1");
+ Assert.AreEqual ("foo/bar/index.html%3Fitem=1", b.Path, "1.Path");
+ Assert.AreEqual ("http://www.ximian.com:80/foo/bar/index.html%3Fitem=1", b.ToString (), "1.ToString");
+
b2 = new UriBuilder ("http", "www.ximian.com", 80, "/foo/bar/index.html", "?item=1");
+ Assert.AreEqual ("http://www.ximian.com:80/foo/bar/index.html?item=1", b2.ToString (), "2.ToString");
+
b3 = new UriBuilder (new Uri ("http://www.ximian.com/foo/bar/index.html?item=1"));
-#if NET_2_0
+ Assert.AreEqual ("http://www.ximian.com:80/foo/bar/index.html?item=1", b3.ToString (), "3.ToString");
+
Assert.IsFalse (b.Equals (b2), "#1");
Assert.IsFalse (b.Uri.Equals (b2.Uri), "#2");
Assert.IsFalse (b.Equals (b3), "#3");
Assert.IsFalse (b3.Equals (b), "#4");
-#else
- Assert.IsTrue (b.Equals (b2), "#1");
- Assert.IsTrue (b.Uri.Equals (b2.Uri), "#2");
- Assert.IsTrue (b.Equals (b3), "#3");
- Assert.IsTrue (b3.Equals (b), "#4");
-#endif
Assert.IsTrue (b2.Equals (b3), "#5");
}
Assert.AreEqual ("#Features", uri.Fragment, "#1");
Assert.AreEqual ("http://www.mono-project.com/Main_Page#Features", uri.Uri.ToString (), "#2");
}
+
+ [Test]
+ public void IPv6_Host ()
+ {
+ UriBuilder ub = new UriBuilder ("http", "[1:2:3:4:5:6:7:8]", 8080, "/dir/subdir/file");
+ Assert.AreEqual ("[1:2:3:4:5:6:7:8]", ub.Host, "Host.1");
+ Assert.AreEqual ("[0001:0002:0003:0004:0005:0006:0007:0008]", ub.Uri.Host, "Uri.Host");
+ // once the Uri is created then some builder properties may change
+ Assert.AreEqual ("[0001:0002:0003:0004:0005:0006:0007:0008]", ub.Host, "Host.2");
+ }
+
+ [Test]
+ public void IPv6_Host_IncompleteAddress ()
+ {
+ UriBuilder ub = new UriBuilder ("http", "1:2:3:4:5:6:7:8", 8080, "/dir/subdir/file");
+ Assert.AreEqual ("[1:2:3:4:5:6:7:8]", ub.Host, "1.Host");
+ Assert.AreEqual ("http://[1:2:3:4:5:6:7:8]:8080/dir/subdir/file", ub.ToString (), "1.ToString ()");
+
+ ub = new UriBuilder ("http", "1:", 8080, "/dir/subdir/file");
+ Assert.AreEqual ("[1:]", ub.Host, "2.Host");
+ Assert.AreEqual ("http://[1:]:8080/dir/subdir/file", ub.ToString (), "2.ToString ()");
+
+ ub = new UriBuilder ("http", "[1:", 8080, "/dir/subdir/file");
+ Assert.AreEqual ("[1:", ub.Host, "3.Host");
+ Assert.AreEqual ("http://[1::8080/dir/subdir/file", ub.ToString (), "3.ToString ()");
+
+ ub = new UriBuilder ("http", "1:2]", 8080, "/dir/subdir/file");
+ Assert.AreEqual ("[1:2]]", ub.Host, "4.Host");
+ Assert.AreEqual ("http://[1:2]]:8080/dir/subdir/file", ub.ToString (), "4.ToString ()");
+ }
+
+ [Test]
+ public void Path_UriAbsolutePath_Path ()
+ {
+ UriBuilder ub = new UriBuilder ("http", "127.0.0.1", 80, "dir/subdir/file");
+ Assert.AreEqual ("dir/subdir/file", ub.Path, "Path.1");
+ Assert.AreEqual ("/dir/subdir/file", ub.Uri.AbsolutePath, "Uri.AbsolutePath");
+ // once the Uri is created then some builder properties may change
+ Assert.AreEqual ("/dir/subdir/file", ub.Path, "Path.2");
+ }
+
+ [Test]
+ public void UnparsableUri ()
+ {
+ // some URI can't be parsed by System.Uri but are accepted by UriBuilder
+ Uri u = null;
+ string uri = "www.mono-project.com";
+ Assert.IsFalse (Uri.TryCreate (uri, UriKind.Absolute, out u), "1.Uri.TryCreate");
+ UriBuilder ub = new UriBuilder (uri);
+ Assert.AreEqual ("www.mono-project.com", ub.Host, "1.Host");
+ Assert.AreEqual ("http", ub.Scheme, "1.Scheme");
+ Assert.AreEqual (80, ub.Port, "1.Port");
+ Assert.AreEqual ("/", ub.Path, "1.Path");
+
+ // always assume http, port 80
+ uri = "ftp.novell.com/dir/subdir/file";
+ ub = new UriBuilder (uri);
+ Assert.IsFalse (Uri.TryCreate (uri, UriKind.Absolute, out u), "2.Uri.TryCreate");
+ Assert.AreEqual ("ftp.novell.com", ub.Host, "2.Host");
+ Assert.AreEqual ("http", ub.Scheme, "2.Scheme");
+ Assert.AreEqual (80, ub.Port, "2.Port");
+ Assert.AreEqual ("/dir/subdir/file", ub.Path, "2.Path");
+ }
}
}
Uri u1 = new Uri("http://localhost:8080/test.aspx?ReturnUrl=%2fSearchDoc%2fSearcher.aspx");
Uri u2 = new Uri("http://localhost:8080/test.aspx?ReturnUrl=%252fSearchDoc%252fSearcher.aspx");
- Assert.AreEqual (u1.ToString (), "http://localhost:8080/test.aspx?ReturnUrl=/SearchDoc/Searcher.aspx", "QE1");
- Assert.AreEqual (u2.ToString (), "http://localhost:8080/test.aspx?ReturnUrl=%2fSearchDoc%2fSearcher.aspx", "QE2");
+ Assert.AreEqual ("http://localhost:8080/test.aspx?ReturnUrl=/SearchDoc/Searcher.aspx", u1.ToString (), "QE1");
+#if NET_2_0
+ Assert.AreEqual ("http://localhost:8080/test.aspx?ReturnUrl=%252fSearchDoc%252fSearcher.aspx", u2.ToString (), "QE2");
+#else
+ Assert.AreEqual ("http://localhost:8080/test.aspx?ReturnUrl=%2fSearchDoc%2fSearcher.aspx", u2.ToString (), "QE2");
+#endif
}
[Test]
Assert.AreEqual ("dummypage.html", segments [2], "#04");
}
+ [Test]
+ public void CachingSegments ()
+ {
+ Uri uri = new Uri ("http://localhost/dir/dummypage.html");
+ uri.Segments [0] = uri.Segments [1] = uri.Segments [2] = "*";
+ string [] segments = uri.Segments;
+ Assert.AreEqual (3, segments.Length, "#01");
+ Assert.AreEqual ("/", segments [0], "#02");
+ Assert.AreEqual ("dir/", segments [1], "#03");
+ Assert.AreEqual ("dummypage.html", segments [2], "#04");
+ }
+
[Test]
public void Segments3 ()
{
}
[Test]
-#if NET_2_0
- [Category ("NotWorking")]
-#endif
public void Segments4 ()
{
Uri uri = new Uri ("file:///c:/hello");
+
+ Assert.AreEqual ("c:/hello", uri.AbsolutePath, "AbsolutePath");
+ Assert.AreEqual ("c:\\hello", uri.LocalPath, "LocalPath");
+
string [] segments = uri.Segments;
Assert.AreEqual (3, segments.Length, "#01");
-#if NET_2_0
Assert.AreEqual ("/", segments [0], "#02");
Assert.AreEqual ("c:/", segments[1], "#03");
-#else
- Assert.AreEqual ("c:", segments [0], "#02");
- Assert.AreEqual ("/", segments [1], "#03");
-#endif
Assert.AreEqual ("hello", segments [2], "#04");
}
"file:///tmp/x (%232).jpg",
"file:///tmp/ü (%232).jpg" };
- foreach (string test in tests)
- Assert.AreEqual (test, new Uri (test).ToString ());
+ foreach (string test in tests) {
+ Uri uri = new Uri (test);
+ Assert.IsFalse (uri.IsWellFormedOriginalString (), "IsWellFormedOriginalString/" + test);
+ Assert.AreEqual (test, uri.OriginalString, "OriginalString/" + test);
+ Assert.AreEqual (test, uri.ToString (), "ToString/" + test);
+ }
}
// This test doesn't work on Linux, and arguably shouldn't work.
Assert.IsFalse (fileUri.IsUnc, "LocalPath_FileNameWithAtSign IsUnc");
Assert.AreEqual (fullpath, fileUri.OriginalString, "LocalPath_FileNameWithAtSign OriginalString");
- Assert.AreEqual (path, new DerivedUri (fullpath).TestUnescape(path), "LocalPath_FileNameWithAtSign ProtectedUnescape");
+ Assert.AreEqual (path, new DerivedUri (fullpath).TestUnescape (path), "LocalPath_FileNameWithAtSign ProtectedUnescape");
Assert.AreEqual (path, fileUri.AbsolutePath, "LocalPath_FileNameWithAtSign AbsPath");
Assert.AreEqual (path, fileUri.LocalPath, "LocalPath_FileNameWithAtSign LocalPath");
}
}
[Test]
- [Category ("NotWorking")] // MS.NET seems not to like userinfo in a file:// uri...
[ExpectedException (typeof (UriFormatException))]
public void LocalPath_FileNameWithAtSign6 ()
{
}
[Test]
+ [Category ("NotDotNet")]
public void UnixAbsoluteFilePath_WithSpecialChars1 ()
{
Uri unixuri = new Uri ("/home/user/a@b");
}
[Test]
+ [Category ("NotDotNet")]
public void UnixAbsoluteFilePath_WithSpecialChars2 ()
{
Uri unixuri = new Uri ("/home/user/a:b");
Assert.AreEqual ("http://media.libsyn.com/bounce/http://cdn4.libsyn.com/nerdist/somestuff.txt", uri.ToString ());
}
- public class DerivedUri : Uri
- {
- public DerivedUri (string uriString) : base (uriString)
+ public class DerivedUri : Uri {
+ public DerivedUri (string uriString)
+ : base (uriString)
{
}
\r
namespace MonoTests.System\r
{\r
-#if NET_2_0\r
// help bring Moonlight tests back to mono/mcs nunit\r
\r
public delegate void TestCode ();\r
throw new AssertionException (string.Format ("Expected '{0}', but got no exception. {1}", expected_exception.FullName, message));\r
}\r
}\r
-#endif\r
+
[TestFixture]\r
public class UriTest2\r
{\r
}\r
\r
[Test]\r
-#if NET_2_0\r
[Ignore ("Tests needs to be updated for 2.0")]\r
-#endif\r
public void AbsoluteUriFromFile ()\r
{\r
FromResource ("test-uri-props.txt", null);\r
\r
[Test]\r
[Category("NotDotNet")]\r
-#if NET_2_0\r
[Ignore ("Tests needs to be updated for 2.0")]\r
-#endif\r
public void AbsoluteUriFromFileManual ()\r
{\r
if (Path.DirectorySeparatorChar == '\\')\r
}\r
\r
[Test]\r
-#if NET_2_0\r
[Ignore ("Tests needs to be updated for 2.0")]\r
-#endif\r
public void RelativeUriFromFile ()\r
{\r
FromResource ("test-uri-relative-props.txt", new Uri ("http://www.go-mono.com"));\r
Assert.AreEqual ("mailto", Uri.UriSchemeMailto, "mailto");\r
Assert.AreEqual ("news", Uri.UriSchemeNews, "news");\r
Assert.AreEqual ("nntp", Uri.UriSchemeNntp, "file");\r
-#if NET_2_0\r
Assert.AreEqual ("net.pipe", Uri.UriSchemeNetPipe, "net.pipe");\r
Assert.AreEqual ("net.tcp", Uri.UriSchemeNetTcp, "net.tcp");\r
-#endif\r
}\r
\r
[Test] // bug #71049\r
}\r
\r
[Test]\r
-#if ONLY_1_1\r
- [Category ("NotDotNet")] // 1.x throws an UriFormatException\r
-#endif\r
public void NoHostName1_Bug76146 ()\r
{\r
Uri u = new Uri ("foo:///?bar");\r
}\r
\r
[Test]\r
-#if ONLY_1_1\r
- [Category ("NotDotNet")] // 1.x throws an UriFormatException\r
-#endif\r
public void NoHostName2_Bug76146 ()\r
{\r
Uri u = new Uri ("foo:///bar");\r
{\r
new Uri ("http://127.0.0.1::::/");\r
}\r
-#if NET_2_0\r
+
[Test]\r
public void File ()\r
{\r
Assert.AreEqual (uri.Port.ToString (), uri.GetComponents (UriComponents.StrongPort, UriFormat.Unescaped), "StrongPort");\r
Assert.AreEqual (uri.UserInfo, uri.GetComponents (UriComponents.UserInfo, UriFormat.Unescaped), "UserInfo");\r
}\r
-#endif\r
+
+ [Test]
+ public void Merge_Query_Fragment ()
+ {
+ Uri absolute = new Uri ("http://host/dir/subdir/weird;name?moonlight");
+ Assert.AreEqual ("?moonlight", absolute.Query, "absolute.Query");
+
+ Uri merged = new Uri (absolute, "#mono");
+ Assert.AreEqual ("#mono", merged.Fragment, "merged.Fragment");
+ Assert.AreEqual ("?moonlight", merged.Query, "merged.Query");
+ Assert.AreEqual ("http://host/dir/subdir/weird;name?moonlight#mono", merged.ToString (), "merged.ToString");
+ }
+
+ [Test]
+ public void Merge_Query_Query ()
+ {
+ Uri absolute = new Uri ("http://host/dir/subdir/weird;name?moonlight");
+ Assert.AreEqual ("?moonlight", absolute.Query, "absolute.Query");
+
+ Uri merged = new Uri (absolute, "?moon");
+ Assert.AreEqual ("?moon", merged.Query, "merged.Query");
+#if NET_4_0
+ Assert.AreEqual ("http://host/dir/subdir/weird;name?moon", merged.ToString (), "merged.ToString");
+#else
+ Assert.AreEqual ("http://host/dir/subdir/?moon", merged.ToString (), "merged.ToString");
+#endif
+ }
+
+ [Test]
+ public void Merge_Query_RelativePath ()
+ {
+ Uri absolute = new Uri ("http://host/dir/subdir/weird;name?moonlight");
+ Assert.AreEqual ("?moonlight", absolute.Query, "absolute.Query");
+
+ Uri merged = new Uri (absolute, "../");
+ Assert.AreEqual (String.Empty, merged.Query, "../Query");
+ Assert.AreEqual ("http://host/dir/", merged.ToString (), "../ToString");
+
+ merged = new Uri (absolute, "..");
+ Assert.AreEqual (String.Empty, merged.Query, "..Query");
+ Assert.AreEqual ("http://host/dir/", merged.ToString (), "..ToString");
+
+ merged = new Uri (absolute, "./");
+ Assert.AreEqual (String.Empty, merged.Query, "./Query");
+ Assert.AreEqual ("http://host/dir/subdir/", merged.ToString (), "./ToString");
+
+ merged = new Uri (absolute, ".");
+ Assert.AreEqual (String.Empty, merged.Query, ".Query");
+ Assert.AreEqual ("http://host/dir/subdir/", merged.ToString (), ".ToString");
+
+ merged = new Uri (absolute, "/");
+ Assert.AreEqual (String.Empty, merged.Query, "/Query");
+ Assert.AreEqual ("http://host/", merged.ToString (), "/ToString");
+
+ merged = new Uri (absolute, "index.html");
+ Assert.AreEqual (String.Empty, merged.Query, "index.html Query");
+ Assert.AreEqual ("http://host/dir/subdir/index.html", merged.ToString (), "index.html ToString");
+
+ merged = new Uri (absolute, "i");
+ Assert.AreEqual (String.Empty, merged.Query, "i Query");
+ Assert.AreEqual ("http://host/dir/subdir/i", merged.ToString (), "i ToString");
+
+ merged = new Uri (absolute, String.Empty);
+ Assert.AreEqual ("?moonlight", merged.Query, "Query");
+ Assert.AreEqual ("http://host/dir/subdir/weird;name?moonlight", merged.ToString (), "ToString");
+ }
+
+ [Test]
+ public void Merge_Fragment_RelativePath ()
+ {
+ Uri absolute = new Uri ("http://host/dir/subdir/weird;name#mono");
+ Assert.AreEqual ("#mono", absolute.Fragment, "absolute.Fragment");
+
+ Uri merged = new Uri (absolute, "../");
+ Assert.AreEqual (String.Empty, merged.Fragment, "../Fragment");
+ Assert.AreEqual ("http://host/dir/", merged.ToString (), "../ToString");
+
+ merged = new Uri (absolute, "..");
+ Assert.AreEqual (String.Empty, merged.Fragment, "..Fragment");
+ Assert.AreEqual ("http://host/dir/", merged.ToString (), "..ToString");
+
+ merged = new Uri (absolute, "./");
+ Assert.AreEqual (String.Empty, merged.Fragment, "./Fragment");
+ Assert.AreEqual ("http://host/dir/subdir/", merged.ToString (), "./ToString");
+
+ merged = new Uri (absolute, ".");
+ Assert.AreEqual (String.Empty, merged.Fragment, ".Fragment");
+ Assert.AreEqual ("http://host/dir/subdir/", merged.ToString (), ".ToString");
+
+ merged = new Uri (absolute, "/");
+ Assert.AreEqual (String.Empty, merged.Fragment, "/Fragment");
+ Assert.AreEqual ("http://host/", merged.ToString (), "/ToString");
+
+ merged = new Uri (absolute, "index.html");
+ Assert.AreEqual (String.Empty, merged.Fragment, "index.html Fragment");
+ Assert.AreEqual ("http://host/dir/subdir/index.html", merged.ToString (), "index.html ToString");
+
+ merged = new Uri (absolute, "i");
+ Assert.AreEqual (String.Empty, merged.Fragment, "i Fragment");
+ Assert.AreEqual ("http://host/dir/subdir/i", merged.ToString (), "i ToString");
+
+ merged = new Uri (absolute, String.Empty);
+ Assert.AreEqual ("#mono", merged.Fragment, "Fragment");
+ Assert.AreEqual ("http://host/dir/subdir/weird;name#mono", merged.ToString (), "ToString");
+ }
+
+ [Test]
+ public void Host_Drive ()
+ {
+ Assert.AreEqual (UriHostNameType.Unknown, Uri.CheckHostName ("c:"), "c:");
+ Assert.AreEqual (UriHostNameType.Dns, Uri.CheckHostName ("c"), "c");
+
+ Uri uri = new Uri ("http://c:/dir/subdir/file");
+ Assert.AreEqual ("c", uri.Authority, "http.Authority");
+ Assert.AreEqual ("c", uri.DnsSafeHost, "http.DnsSafeHost");
+ Assert.AreEqual ("c", uri.Host, "http.Host");
+ Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "http.HostNameType");
+ Assert.AreEqual ("http://c/dir/subdir/file", uri.ToString (), "http.ToString");
+
+ uri = new Uri ("https://c:/dir/subdir/file");
+ Assert.AreEqual ("c", uri.Authority, "https.Authority");
+ Assert.AreEqual ("c", uri.DnsSafeHost, "https.DnsSafeHost");
+ Assert.AreEqual ("c", uri.Host, "https.Host");
+ Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "https.HostNameType");
+ Assert.AreEqual ("https://c/dir/subdir/file", uri.ToString (), "https.ToString");
+
+ uri = new Uri ("ftp://c:/dir/subdir/file");
+ Assert.AreEqual ("c", uri.Authority, "ftp.Authority");
+ Assert.AreEqual ("c", uri.DnsSafeHost, "ftp.DnsSafeHost");
+ Assert.AreEqual ("c", uri.Host, "ftp.Host");
+ Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "ftp.HostNameType");
+ Assert.AreEqual ("ftp://c/dir/subdir/file", uri.ToString (), "ftp.ToString");
+
+ uri = new Uri ("nntp://c:/123456@c");
+ Assert.AreEqual ("c", uri.Authority, "nntp.Authority");
+ Assert.AreEqual ("c", uri.DnsSafeHost, "nntp.DnsSafeHost");
+ Assert.AreEqual ("c", uri.Host, "nntp.Host");
+ Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "nntp.HostNameType");
+ Assert.AreEqual ("nntp://c/123456@c", uri.ToString (), "nntp.ToString");
+
+ uri = new Uri ("file://c:/dir/subdir/file");
+ Assert.AreEqual (String.Empty, uri.Authority, "file.Authority");
+ Assert.AreEqual (String.Empty, uri.DnsSafeHost, "file.DnsSafeHost");
+ Assert.AreEqual (String.Empty, uri.Host, "file.Host");
+ Assert.AreEqual (UriHostNameType.Basic, uri.HostNameType, "file.HostNameType");
+ Assert.AreEqual ("file:///c:/dir/subdir/file", uri.ToString (), "file.ToString");
+ }
+
+ [Test]
+ public void UnknownScheme ()
+ {
+ Uri uri = new Uri ("mono:c:\\dir\\subdir\\file");
+ Assert.IsFalse (uri.IsWellFormedOriginalString (), "IsWellFormedOriginalString");
+ Assert.AreEqual (String.Empty, uri.Host, "Host");
+ Assert.AreEqual ("c:\\dir\\subdir\\file", uri.LocalPath, "LocalPath");
+ // make the next assert work on both Windows and Mac (wrt Silverlight)
+ Assert.AreEqual ("mono:c:/dir/subdir/file", uri.ToString ().Replace ("%5C", "/"), "ToString");
+
+ uri = new Uri ("mono://host/dir/subdir/file");
+ Assert.IsTrue (uri.IsWellFormedOriginalString (), "2/IsWellFormedOriginalString");
+ Assert.AreEqual ("host", uri.Host, "2/Host");
+ Assert.AreEqual ("/dir/subdir/file", uri.AbsolutePath, "2/AbsolutePath");
+ Assert.AreEqual ("/dir/subdir/file", uri.LocalPath, "2/LocalPath");
+
+ uri = new Uri ("mono:///host/dir/subdir/file");
+ Assert.IsTrue (uri.IsWellFormedOriginalString (), "3/IsWellFormedOriginalString");
+ Assert.AreEqual (String.Empty, uri.Host, "3/Host");
+ Assert.AreEqual ("/host/dir/subdir/file", uri.AbsolutePath, "3/AbsolutePath");
+ Assert.AreEqual ("/host/dir/subdir/file", uri.LocalPath, "3/LocalPath");
+
+ uri = new Uri ("mono:////host/dir/subdir/file");
+ Assert.IsTrue (uri.IsWellFormedOriginalString (), "4/IsWellFormedOriginalString");
+ Assert.AreEqual (String.Empty, uri.Host, "4/Host");
+ Assert.AreEqual ("//host/dir/subdir/file", uri.AbsolutePath, "4/AbsolutePath");
+ Assert.AreEqual ("//host/dir/subdir/file", uri.LocalPath, "4/LocalPath");
+
+ // query and fragment
+ uri = new Uri ("mono://host/dir/subdir/file?query#fragment");
+ Assert.AreEqual ("/dir/subdir/file", uri.AbsolutePath, "qf.AbsolutePath");
+ Assert.AreEqual ("?query", uri.Query, "qf.Query");
+ Assert.AreEqual ("#fragment", uri.Fragment, "qf.Fragment");
+
+ // special characters
+ uri = new Uri ("mono://host/<>%\"{}|\\^`;/:@&=+$,[]#abc");
+ Assert.AreEqual ("/%3C%3E%25%22%7B%7D%7C/%5E%60;/:@&=+$,%5B%5D", uri.AbsolutePath, "Special");
+ }
+
+ [Test]
+ public void DriveAndForwardSlashes_Segments ()
+ {
+ Uri uri = new Uri ("mono:c:\\dir\\subdir\\file");
+ string [] segments = uri.Segments;
+ Assert.AreEqual (4, segments.Length, "segments");
+ // make the tests work on both Windows and Mac (wrt Silverlight)
+ Assert.AreEqual ("c:/", segments [0].Replace ("%5C", "/"), "s[0]");
+ Assert.AreEqual ("dir/", segments [1].Replace ("%5C", "/"), "s[1]");
+ Assert.AreEqual ("subdir/", segments [2].Replace ("%5C", "/"), "s[2]");
+ Assert.AreEqual ("file", segments [3], "s[3]");
+ }
+
+ [Test]
+ public void NewsScheme ()
+ {
+ Uri uri = new Uri ("news:novell.mono.moonlight/uri?query");
+
+ Assert.AreEqual ("novell.mono.moonlight/uri%3Fquery", uri.AbsolutePath, "AbsolutePath");
+ Assert.AreEqual ("news:novell.mono.moonlight/uri%3Fquery", uri.AbsoluteUri, "AbsoluteUri");
+ Assert.AreEqual (String.Empty, uri.Authority, "Authority");
+ Assert.AreEqual (String.Empty, uri.DnsSafeHost, "DnsSafeHost");
+ Assert.AreEqual (String.Empty, uri.Fragment, "Fragment");
+ Assert.AreEqual (String.Empty, uri.Host, "Host");
+ Assert.AreEqual (UriHostNameType.Unknown, uri.HostNameType, "HostNameType");
+ Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");
+ Assert.IsTrue (uri.IsDefaultPort, "IsDefaultPort");
+ Assert.IsFalse (uri.IsFile, "IsFile");
+ Assert.IsFalse (uri.IsLoopback, "IsLoopback");
+ Assert.IsFalse (uri.IsUnc, "IsUnc");
+ Assert.AreEqual ("novell.mono.moonlight/uri?query", uri.LocalPath, "LocalPath");
+ Assert.AreEqual ("news:novell.mono.moonlight/uri?query", uri.OriginalString, "OriginalString");
+ Assert.AreEqual ("novell.mono.moonlight/uri%3Fquery", uri.PathAndQuery, "PathAndQuery");
+ Assert.AreEqual (-1, uri.Port, "Port");
+ Assert.AreEqual (String.Empty, uri.Query, "Query");
+ Assert.AreEqual ("news", uri.Scheme, "Scheme");
+ Assert.AreEqual ("novell.mono.moonlight/", uri.Segments [0], "Segments [0]");
+ Assert.AreEqual ("uri%3Fquery", uri.Segments [1], "Segments [1]");
+ Assert.IsFalse (uri.UserEscaped, "UserEscaped");
+ Assert.AreEqual (String.Empty, uri.UserInfo, "UserInfo");
+
+ // special escaped characters - they differs a bit from other URI
+ uri = new Uri ("news:novell.mono.moonlight/<>%\"{}|\\^`;/?:@&=+$,[]#abc");
+ Assert.AreEqual ("novell.mono.moonlight/%3C%3E%25%22%7B%7D%7C%5C%5E%60;/%3F:@&=+$,%5B%5D", uri.AbsolutePath, "Special");
+ Assert.AreEqual ("#abc", uri.Fragment, "Special/Fragment");
+ }
+
+ [Test]
+ public void NntpScheme ()
+ {
+ Uri uri = new Uri ("nntp://news.mono-project.com/novell.mono.moonlight/uri?query");
+
+ Assert.AreEqual ("/novell.mono.moonlight/uri%3Fquery", uri.AbsolutePath, "AbsolutePath");
+ Assert.AreEqual ("nntp://news.mono-project.com/novell.mono.moonlight/uri%3Fquery", uri.AbsoluteUri, "AbsoluteUri");
+ Assert.AreEqual ("news.mono-project.com", uri.Authority, "Authority");
+ Assert.AreEqual ("news.mono-project.com", uri.DnsSafeHost, "DnsSafeHost");
+ Assert.AreEqual (String.Empty, uri.Fragment, "Fragment");
+ Assert.AreEqual ("news.mono-project.com", uri.Host, "Host");
+ Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "HostNameType");
+ Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");
+ Assert.IsTrue (uri.IsDefaultPort, "IsDefaultPort");
+ Assert.IsFalse (uri.IsFile, "IsFile");
+ Assert.IsFalse (uri.IsLoopback, "IsLoopback");
+ Assert.IsFalse (uri.IsUnc, "IsUnc");
+ Assert.AreEqual ("/novell.mono.moonlight/uri?query", uri.LocalPath, "LocalPath");
+ Assert.AreEqual ("nntp://news.mono-project.com/novell.mono.moonlight/uri?query", uri.OriginalString, "OriginalString");
+ Assert.AreEqual ("/novell.mono.moonlight/uri%3Fquery", uri.PathAndQuery, "PathAndQuery");
+ Assert.AreEqual (119, uri.Port, "Port");
+ Assert.AreEqual (String.Empty, uri.Query, "Query");
+ Assert.AreEqual ("nntp", uri.Scheme, "Scheme");
+ Assert.AreEqual ("/", uri.Segments [0], "Segments [0]");
+ Assert.AreEqual ("novell.mono.moonlight/", uri.Segments [1], "Segments [1]");
+ Assert.AreEqual ("uri%3Fquery", uri.Segments [2], "Segments [2]");
+ Assert.IsFalse (uri.UserEscaped, "UserEscaped");
+ Assert.AreEqual (String.Empty, uri.UserInfo, "UserInfo");
+
+ // special escaped characters - they differs a bit from other URI
+ uri = new Uri ("nntp://news.mono-project.com/novell.mono.moonlight/<>%\"{}|\\^`;/?:@&=+$,[]#abc");
+ Assert.AreEqual ("/novell.mono.moonlight/%3C%3E%25%22%7B%7D%7C%5C%5E%60;/%3F:@&=+$,%5B%5D", uri.AbsolutePath, "Special");
+ Assert.AreEqual ("#abc", uri.Fragment, "Special/Fragment");
+ }
+
+ [Test]
+ public void FtpScheme ()
+ {
+ // user, password, custom port and a "query"
+ Uri uri = new Uri ("ftp://user:password@ftp.mono-project.com:2121/mono.zip?latest-n-greatest");
+ Assert.AreEqual ("/mono.zip%3Flatest-n-greatest", uri.AbsolutePath, "AbsolutePath");
+ Assert.AreEqual ("ftp://user:password@ftp.mono-project.com:2121/mono.zip%3Flatest-n-greatest", uri.AbsoluteUri, "AbsoluteUri");
+ Assert.AreEqual ("ftp.mono-project.com:2121", uri.Authority, "Authority");
+ Assert.AreEqual ("ftp.mono-project.com", uri.DnsSafeHost, "DnsSafeHost");
+ Assert.AreEqual (String.Empty, uri.Fragment, "Fragment");
+ Assert.AreEqual ("ftp.mono-project.com", uri.Host, "Host");
+ Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "HostNameType");
+ Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");
+ Assert.IsFalse (uri.IsDefaultPort, "IsDefaultPort");
+ Assert.IsFalse (uri.IsFile, "IsFile");
+ Assert.IsFalse (uri.IsLoopback, "IsLoopback");
+ Assert.IsFalse (uri.IsUnc, "IsUnc");
+ Assert.AreEqual ("/mono.zip?latest-n-greatest", uri.LocalPath, "LocalPath");
+ Assert.AreEqual ("ftp://user:password@ftp.mono-project.com:2121/mono.zip?latest-n-greatest", uri.OriginalString, "OriginalString");
+ Assert.AreEqual ("/mono.zip%3Flatest-n-greatest", uri.PathAndQuery, "PathAndQuery");
+ Assert.AreEqual (2121, uri.Port, "Port");
+ Assert.AreEqual (String.Empty, uri.Query, "Query");
+ Assert.AreEqual ("ftp", uri.Scheme, "Scheme");
+ Assert.AreEqual ("/", uri.Segments [0], "Segments [0]");
+ Assert.AreEqual ("mono.zip%3Flatest-n-greatest", uri.Segments [1], "Segments [1]");
+ Assert.IsFalse (uri.UserEscaped, "UserEscaped");
+ Assert.AreEqual ("user:password", uri.UserInfo, "UserInfo");
+
+ // special characters and fragment
+ uri = new Uri ("ftp://ftp.mono-project.com/<>%\"{}|\\^`;/?:@&=+$,[]#abc");
+ Assert.AreEqual ("/%3C%3E%25%22%7B%7D%7C/%5E%60;/%3F:@&=+$,%5B%5D", uri.AbsolutePath, "Special");
+ Assert.AreEqual ("#abc", uri.Fragment, "Special/Fragment");
+ }
+
+ [Test]
+ public void FileScheme ()
+ {
+ Uri uri = new Uri ("file://host/dir/subdir/file?this-is-not-a-query#but-this-is-a-fragment");
+ Assert.AreEqual ("/dir/subdir/file%3Fthis-is-not-a-query", uri.AbsolutePath, "AbsolutePath");
+ Assert.AreEqual ("file://host/dir/subdir/file%3Fthis-is-not-a-query#but-this-is-a-fragment", uri.AbsoluteUri, "AbsoluteUri");
+ Assert.AreEqual ("host", uri.Authority, "Authority");
+ Assert.AreEqual ("host", uri.DnsSafeHost, "DnsSafeHost");
+ Assert.AreEqual ("#but-this-is-a-fragment", uri.Fragment, "Fragment");
+ Assert.AreEqual ("host", uri.Host, "Host");
+ Assert.AreEqual (UriHostNameType.Dns, uri.HostNameType, "HostNameType");
+ Assert.IsTrue (uri.IsAbsoluteUri, "IsAbsoluteUri");
+ Assert.IsTrue (uri.IsDefaultPort, "IsDefaultPort");
+ Assert.IsTrue (uri.IsFile, "IsFile");
+ Assert.IsFalse (uri.IsLoopback, "IsLoopback");
+ Assert.IsTrue (uri.IsUnc, "IsUnc");
+ Assert.AreEqual (isWin32 ? "\\\\host\\dir\\subdir\\file?this-is-not-a-query" : "/dir/subdir/file?this-is-not-a-query", uri.LocalPath, "LocalPath");
+ Assert.AreEqual ("file://host/dir/subdir/file?this-is-not-a-query#but-this-is-a-fragment", uri.OriginalString, "OriginalString");
+ Assert.AreEqual ("/dir/subdir/file%3Fthis-is-not-a-query", uri.PathAndQuery, "PathAndQuery");
+ Assert.AreEqual (-1, uri.Port, "Port");
+ Assert.AreEqual (String.Empty, uri.Query, "Query");
+ Assert.AreEqual ("file", uri.Scheme, "Scheme");
+ Assert.AreEqual ("/", uri.Segments [0], "Segments [0]");
+ Assert.AreEqual ("dir/", uri.Segments [1], "Segments [1]");
+ Assert.AreEqual ("subdir/", uri.Segments [2], "Segments [2]");
+ Assert.AreEqual ("file%3Fthis-is-not-a-query", uri.Segments [3], "Segments [3]");
+ Assert.IsFalse (uri.UserEscaped, "UserEscaped");
+ Assert.AreEqual (String.Empty, uri.UserInfo, "UserInfo");
+
+ // special characters
+ uri = new Uri ("file://host/<>%\"{}|\\^`;/?:@&=+$,[]#abc");
+ Assert.AreEqual ("/%3C%3E%25%22%7B%7D%7C/%5E%60;/%3F:@&=+$,%5B%5D", uri.AbsolutePath, "Special");
+ }
+
+ [Test]
+ public void PathReduction_2e ()
+ {
+ Uri uri = new Uri ("http://host/dir/%2e%2E/file");
+ Assert.AreEqual ("/file", uri.AbsolutePath, "AbsolutePath");
+ Assert.AreEqual ("http://host/file", uri.AbsoluteUri, "AbsoluteUri");
+ Assert.AreEqual ("/", uri.Segments [0], "Segments [0]");
+ Assert.AreEqual ("file", uri.Segments [1], "Segments [1]");
+ }
+
+ [Test]
+ public void ColonButNoPort ()
+ {
+ Uri uri = new Uri ("http://host:");
+ Assert.AreEqual ("http", uri.Scheme, "1.Scheme");
+ Assert.AreEqual ("host", uri.Host, "1.Host");
+ Assert.AreEqual (80, uri.Port, "1.Port");
+ Assert.IsTrue (uri.IsDefaultPort, "1.IsDefaultPort");
+
+ uri = new Uri ("ftp://host:/dir/file");
+ Assert.AreEqual ("ftp", uri.Scheme, "2.Scheme");
+ Assert.AreEqual ("host", uri.Host, "2.Host");
+ Assert.AreEqual (21, uri.Port, "2.Port");
+ Assert.IsTrue (uri.IsDefaultPort, "2.IsDefaultPort");
+ }
+
+ [Test]
+ public void IPv6SafeDnsName ()
+ {
+ Uri uri = new Uri ("http://[1:2:3:4:5:6:7:8]");
+ Assert.AreEqual (UriHostNameType.IPv6, uri.HostNameType, "1.HostNameType");
+ Assert.AreEqual ("[0001:0002:0003:0004:0005:0006:0007:0008]", uri.Authority, "1.Authority");
+ Assert.AreEqual ("0001:0002:0003:0004:0005:0006:0007:0008", uri.DnsSafeHost, "1.DnsSafeHost");
+ Assert.AreEqual ("[0001:0002:0003:0004:0005:0006:0007:0008]", uri.Host, "1.Host");
+
+ uri = new Uri ("http://[fe80::200:39ff:fe36:1a2d%4]/temp/example.htm");
+ Assert.AreEqual (UriHostNameType.IPv6, uri.HostNameType, "1.HostNameType");
+ Assert.AreEqual ("[FE80:0000:0000:0000:0200:39FF:FE36:1A2D]", uri.Authority, "2.Authority");
+ Assert.AreEqual ("FE80:0000:0000:0000:0200:39FF:FE36:1A2D%4", uri.DnsSafeHost, "2.DnsSafeHost");
+ Assert.AreEqual ("[FE80:0000:0000:0000:0200:39FF:FE36:1A2D]", uri.Host, "2.Host");
+ }
+
+ [Test]
+ public void RelativeEscapes ()
+ {
+ Uri uri = new Uri ("%2e%2e/dir/%2e%2e/subdir/file?query#fragment", UriKind.Relative);
+ Assert.AreEqual ("%2e%2e/dir/%2e%2e/subdir/file?query#fragment", uri.ToString (), "1.ToString");
+ }
}\r
}\r
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-#if NET_2_0
-
using NUnit.Framework;
using System;
}
[Test] // TryCreate (Uri, String, Uri)
- [Category ("NotWorking")]
public void TryCreate2 ()
{
Uri baseUri = new Uri (absolute);
}
[Test] // TryCreate (Uri, Uri, Uri)
- [Category ("NotWorking")]
public void TryCreate3 ()
{
Uri baseUri = new Uri (absolute);
Uri baseUri = new Uri (absolute);
try {
Uri.TryCreate (baseUri, (Uri) null, out uri);
- Assert.Fail ();
- } catch (NullReferenceException) {
+#if NET_4_0
+ Assert.IsNull (uri);
+#else
+ Assert.Fail ("throw NRE under FX 2.0");
+#endif
+ }
+ catch (NullReferenceException) {
+#if NET_4_0
+ Assert.Fail ("does not throw NRE under FX 4.0");
+#endif
}
}
try {
http.IsBaseOf (null);
Assert.Fail ();
- } catch (NullReferenceException) {
}
+#if NET_4_0
+ catch (ArgumentNullException) {
+ }
+#else
+ catch (NullReferenceException) {
+ }
+#endif
}
[Test]
}
[Test]
- [Category ("NotDotNet")] // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=299942
- public void MakeRelativeUri_Uri_Null_Mono ()
+ public void MakeRelativeUri_Uri_Null ()
{
Uri uri = new Uri ("http://test.com");
try {
uri.MakeRelativeUri ((Uri) null);
Assert.Fail ("#1");
- } catch (ArgumentNullException ex) {
+ }
+#if NET_4_0
+ catch (ArgumentNullException ex) {
Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
Assert.IsNull (ex.InnerException, "#3");
Assert.IsNotNull (ex.Message, "#4");
Assert.IsNotNull (ex.ParamName, "#5");
Assert.AreEqual ("uri", ex.ParamName, "#6");
}
- }
-
- [Test]
- [Category ("NotWorking")] // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=299942
- public void MakeRelativeUri_Uri_Null_MS ()
- {
- Uri uri = new Uri ("http://test.com");
- try {
- uri.MakeRelativeUri ((Uri) null);
- Assert.Fail ("#1");
- } catch (NullReferenceException) {
+#else
+ catch (NullReferenceException) {
+ // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=299942
}
+#endif
}
[Test] // LAMESPEC: see bug #321113
}
}
-#endif
--- /dev/null
+../../build/common/Consts.cs
+../../build/common/Locale.cs
+../../build/common/MonoTODOAttribute.cs
+../corlib/System.Collections.Generic/CollectionDebuggerView.cs
+../corlib/System.Collections/CollectionDebuggerView.cs
+Assembly/AssemblyInfo.cs
+Mono.Http/NtlmClient.cs
+System.CodeDom.Compiler/GeneratedCodeAttribute.cs
+System.Collections.Generic/ISet.cs
+System.Collections.Generic/LinkedList.cs
+System.Collections.Generic/LinkedListNode.cs
+System.Collections.Generic/Queue.cs
+System.Collections.Generic/RBTree.cs
+System.Collections.Generic/SortedDictionary.cs
+System.Collections.Generic/SortedList.cs
+System.Collections.Generic/Stack.cs
+System.Collections.Specialized/BitVector32.cs
+System.Collections.Specialized/CollectionsUtil.cs
+System.Collections.Specialized/HybridDictionary.cs
+System.Collections.Specialized/ListDictionary.cs
+System.Collections.Specialized/NameObjectCollectionBase.cs
+System.Collections.Specialized/NameValueCollection.cs
+System.Collections.Specialized/ProcessStringDictionary.cs
+System.Collections.Specialized/StringCollection.cs
+System.Collections.Specialized/StringDictionary.cs
+System.Collections.Specialized/StringEnumerator.cs
+System.ComponentModel.Design.Serialization/InstanceDescriptor.cs
+System.ComponentModel.Design/CommandID.cs
+System.ComponentModel.Design/ComponentChangedEventArgs.cs
+System.ComponentModel.Design/ComponentChangedEventHandler.cs
+System.ComponentModel.Design/ComponentChangingEventArgs.cs
+System.ComponentModel.Design/ComponentChangingEventHandler.cs
+System.ComponentModel.Design/ComponentEventArgs.cs
+System.ComponentModel.Design/ComponentEventHandler.cs
+System.ComponentModel.Design/ComponentRenameEventArgs.cs
+System.ComponentModel.Design/ComponentRenameEventHandler.cs
+System.ComponentModel.Design/DesignerTransaction.cs
+System.ComponentModel.Design/DesignerTransactionCloseEventArgs.cs
+System.ComponentModel.Design/DesignerTransactionCloseEventHandler.cs
+System.ComponentModel.Design/DesignerVerb.cs
+System.ComponentModel.Design/DesignerVerbCollection.cs
+System.ComponentModel.Design/IComponentChangeService.cs
+System.ComponentModel.Design/IDesigner.cs
+System.ComponentModel.Design/IDesignerHost.cs
+System.ComponentModel.Design/IReferenceService.cs
+System.ComponentModel.Design/IRootDesigner.cs
+System.ComponentModel.Design/IServiceContainer.cs
+System.ComponentModel.Design/ITypeDescriptorFilterService.cs
+System.ComponentModel.Design/ITypeResolutionService.cs
+System.ComponentModel.Design/MenuCommand.cs
+System.ComponentModel.Design/ServiceCreatorCallback.cs
+System.ComponentModel.Design/StandardCommands.cs
+System.ComponentModel.Design/ViewTechnology.cs
+System.ComponentModel/ArrayConverter.cs
+System.ComponentModel/AsyncCompletedEventArgs.cs
+System.ComponentModel/AsyncCompletedEventHandler.cs
+System.ComponentModel/AsyncOperation.cs
+System.ComponentModel/AsyncOperationManager.cs
+System.ComponentModel/AttributeCollection.cs
+System.ComponentModel/BackgroundWorker.cs
+System.ComponentModel/BaseNumberConverter.cs
+System.ComponentModel/BindableSupport.cs
+System.ComponentModel/BooleanConverter.cs
+System.ComponentModel/BrowsableAttribute.cs
+System.ComponentModel/ByteConverter.cs
+System.ComponentModel/CancelEventArgs.cs
+System.ComponentModel/CategoryAttribute.cs
+System.ComponentModel/CharConverter.cs
+System.ComponentModel/CollectionChangeAction.cs
+System.ComponentModel/CollectionChangeEventArgs.cs
+System.ComponentModel/CollectionChangeEventHandler.cs
+System.ComponentModel/CollectionConverter.cs
+System.ComponentModel/Component.cs
+System.ComponentModel/ComponentCollection.cs
+System.ComponentModel/ComponentConverter.cs
+System.ComponentModel/CultureInfoConverter.cs
+System.ComponentModel/CustomTypeDescriptor.cs
+System.ComponentModel/DateTimeConverter.cs
+System.ComponentModel/DecimalConverter.cs
+System.ComponentModel/DefaultEventAttribute.cs
+System.ComponentModel/DefaultPropertyAttribute.cs
+System.ComponentModel/DefaultValueAttribute.cs
+System.ComponentModel/DescriptionAttribute.cs
+System.ComponentModel/DesignOnlyAttribute.cs
+System.ComponentModel/DesignTimeVisibleAttribute.cs
+System.ComponentModel/DesignerAttribute.cs
+System.ComponentModel/DesignerCategoryAttribute.cs
+System.ComponentModel/DesignerSerializationVisibility.cs
+System.ComponentModel/DesignerSerializationVisibilityAttribute.cs
+System.ComponentModel/DisplayNameAttribute.cs
+System.ComponentModel/DoWorkEventArgs.cs
+System.ComponentModel/DoWorkEventHandler.cs
+System.ComponentModel/DoubleConverter.cs
+System.ComponentModel/EditorAttribute.cs
+System.ComponentModel/EditorBrowsableAttribute.cs
+System.ComponentModel/EditorBrowsableState.cs
+System.ComponentModel/EnumConverter.cs
+System.ComponentModel/EventDescriptor.cs
+System.ComponentModel/EventDescriptorCollection.cs
+System.ComponentModel/EventHandlerList.cs
+System.ComponentModel/ExpandableObjectConverter.cs
+System.ComponentModel/GuidConverter.cs
+System.ComponentModel/IBindingList.cs
+System.ComponentModel/IBindingListView.cs
+System.ComponentModel/IChangeTracking.cs
+System.ComponentModel/IComNativeDescriptorHandler.cs
+System.ComponentModel/IComponent.cs
+System.ComponentModel/IComponent.cs
+System.ComponentModel/IContainer.cs
+System.ComponentModel/ICustomTypeDescriptor.cs
+System.ComponentModel/IDataErrorInfo.cs
+System.ComponentModel/IDataErrorInfo.cs
+System.ComponentModel/IEditableObject.cs
+System.ComponentModel/IListSource.cs
+System.ComponentModel/INotifyPropertyChanged.cs
+System.ComponentModel/IRevertibleChangeTracking.cs
+System.ComponentModel/ISite.cs
+System.ComponentModel/ISupportInitialize.cs
+System.ComponentModel/ISupportInitializeNotification.cs
+System.ComponentModel/ISynchronizeInvoke.cs
+System.ComponentModel/ITypeDescriptorContext.cs
+System.ComponentModel/ITypedList.cs
+System.ComponentModel/Int16Converter.cs
+System.ComponentModel/Int32Converter.cs
+System.ComponentModel/Int64Converter.cs
+System.ComponentModel/InvalidEnumArgumentException.cs
+System.ComponentModel/InvalidEnumArgumentException.cs
+System.ComponentModel/ListBindableAttribute.cs
+System.ComponentModel/ListChangedEventArgs.cs
+System.ComponentModel/ListChangedEventHandler.cs
+System.ComponentModel/ListChangedType.cs
+System.ComponentModel/ListSortDescription.cs
+System.ComponentModel/ListSortDescriptionCollection.cs
+System.ComponentModel/ListSortDirection.cs
+System.ComponentModel/ListSortDirection.cs
+System.ComponentModel/LocalizableAttribute.cs
+System.ComponentModel/MarshalByValueComponent.cs
+System.ComponentModel/MemberDescriptor.cs
+System.ComponentModel/MergablePropertyAttribute.cs
+System.ComponentModel/MultilineStringConverter.cs
+System.ComponentModel/NotifyParentPropertyAttribute.cs
+System.ComponentModel/NullableConverter.cs
+System.ComponentModel/PasswordPropertyTextAttribute.cs
+System.ComponentModel/ProgressChangedEventArgs.cs
+System.ComponentModel/ProgressChangedEventHandler.cs
+System.ComponentModel/PropertyChangedEventArgs.cs
+System.ComponentModel/PropertyChangedEventHandler.cs
+System.ComponentModel/PropertyDescriptor.cs
+System.ComponentModel/PropertyDescriptor.cs
+System.ComponentModel/PropertyDescriptorCollection.cs
+System.ComponentModel/ReadOnlyAttribute.cs
+System.ComponentModel/ReadOnlyAttribute.cs
+System.ComponentModel/RecommendedAsConfigurableAttribute.cs
+System.ComponentModel/ReferenceConverter.cs
+System.ComponentModel/ReferenceConverter.cs
+System.ComponentModel/ReflectionEventDescriptor.cs
+System.ComponentModel/ReflectionPropertyDescriptor.cs
+System.ComponentModel/RefreshEventArgs.cs
+System.ComponentModel/RefreshEventHandler.cs
+System.ComponentModel/RefreshProperties.cs
+System.ComponentModel/RefreshPropertiesAttribute.cs
+System.ComponentModel/RunWorkerCompletedEventArgs.cs
+System.ComponentModel/RunWorkerCompletedEventHandler.cs
+System.ComponentModel/SByteConverter.cs
+System.ComponentModel/SingleConverter.cs
+System.ComponentModel/StringConverter.cs
+System.ComponentModel/TimeSpanConverter.cs
+System.ComponentModel/ToolboxItemAttribute.cs
+System.ComponentModel/ToolboxItemFilterAttribute.cs
+System.ComponentModel/ToolboxItemFilterType.cs
+System.ComponentModel/TypeConverter.cs
+System.ComponentModel/TypeConverterAttribute.cs
+System.ComponentModel/TypeConverter_2_1.cs
+System.ComponentModel/TypeDescriptionProvider.cs
+System.ComponentModel/TypeDescriptor.cs
+System.ComponentModel/TypeListConverter.cs
+System.ComponentModel/UInt16Converter.cs
+System.ComponentModel/UInt32Converter.cs
+System.ComponentModel/UInt64Converter.cs
+System.ComponentModel/WeakObjectWrapper.cs
+System.ComponentModel/WeakObjectWrapperComparer.cs
+System.ComponentModel/Win32Exception.cs
+System.Diagnostics/DataReceivedEventArgs.cs
+System.Diagnostics/DataReceivedEventHandler.cs
+System.Diagnostics/Debug_2_1.cs
+System.Diagnostics/FileVersionInfo.cs
+System.Diagnostics/MonitoringDescriptionAttribute.cs
+System.Diagnostics/Process.cs
+System.Diagnostics/ProcessModule.cs
+System.Diagnostics/ProcessModuleCollection.cs
+System.Diagnostics/ProcessPriorityClass.cs
+System.Diagnostics/ProcessStartInfo.cs
+System.Diagnostics/ProcessThread.cs
+System.Diagnostics/ProcessThreadCollection.cs
+System.Diagnostics/ProcessWindowStyle.cs
+System.Diagnostics/Stopwatch.cs
+System.Diagnostics/ThreadPriorityLevel.cs
+System.Diagnostics/ThreadState.cs
+System.Diagnostics/ThreadWaitReason.cs
+System.IO.Compression/CompressionMode.cs
+System.IO.Compression/DeflateStream.cs
+System.IO.Compression/GZipStream.cs
+System.IO/MonoIO.cs
+System.IO/MonoIOError.cs
+System.IO/MonoSyncFileStream.cs
+System.Net.Cache/HttpCacheAgeControl.cs
+System.Net.Cache/HttpRequestCacheLevel.cs
+System.Net.Cache/HttpRequestCachePolicy.cs
+System.Net.Cache/RequestCacheLevel.cs
+System.Net.Cache/RequestCachePolicy.cs
+System.Net.Mail/AlternateView.cs
+System.Net.Mail/AlternateViewCollection.cs
+System.Net.Mail/Attachment.cs
+System.Net.Mail/AttachmentBase.cs
+System.Net.Mail/AttachmentCollection.cs
+System.Net.Mail/DeliveryNotificationOptions.cs
+System.Net.Mail/LinkedResource.cs
+System.Net.Mail/LinkedResourceCollection.cs
+System.Net.Mail/MailAddress.cs
+System.Net.Mail/MailAddressCollection.cs
+System.Net.Mail/MailMessage.cs
+System.Net.Mail/MailPriority.cs
+System.Net.Mail/SendCompletedEventHandler.cs
+System.Net.Mail/SmtpAccess.cs
+System.Net.Mail/SmtpClient.cs
+System.Net.Mail/SmtpDeliveryMethod.cs
+System.Net.Mail/SmtpException.cs
+System.Net.Mail/SmtpFailedRecipientException.cs
+System.Net.Mail/SmtpFailedRecipientsException.cs
+System.Net.Mail/SmtpStatusCode.cs
+System.Net.Mime/ContentDisposition.cs
+System.Net.Mime/ContentType.cs
+System.Net.Mime/DispositionTypeNames.cs
+System.Net.Mime/MediaTypeNames.cs
+System.Net.Mime/TransferEncoding.cs
+System.Net.NetworkInformation/DuplicateAddressDetectionState.cs
+System.Net.NetworkInformation/GatewayIPAddressInformation.cs
+System.Net.NetworkInformation/GatewayIPAddressInformationCollection.cs
+System.Net.NetworkInformation/IPAddressCollection.cs
+System.Net.NetworkInformation/IPAddressInformation.cs
+System.Net.NetworkInformation/IPAddressInformationCollection.cs
+System.Net.NetworkInformation/IPGlobalProperties.cs
+System.Net.NetworkInformation/IPGlobalStatistics.cs
+System.Net.NetworkInformation/IPInterfaceProperties.cs
+System.Net.NetworkInformation/IPStatus.cs
+System.Net.NetworkInformation/IPv4InterfaceProperties.cs
+System.Net.NetworkInformation/IPv4InterfaceStatistics.cs
+System.Net.NetworkInformation/IPv6InterfaceProperties.cs
+System.Net.NetworkInformation/IcmpV4Statistics.cs
+System.Net.NetworkInformation/IcmpV6Statistics.cs
+System.Net.NetworkInformation/LinuxNetworkInterfaceMarshal.cs
+System.Net.NetworkInformation/MacOsNetworkInterfaceMarshal.cs
+System.Net.NetworkInformation/MulticastIPAddressInformation.cs
+System.Net.NetworkInformation/MulticastIPAddressInformationCollection.cs
+System.Net.NetworkInformation/NetBiosNodeType.cs
+System.Net.NetworkInformation/NetworkAddressChangedEventHandler.cs
+System.Net.NetworkInformation/NetworkAvailabilityChangedEventHandler.cs
+System.Net.NetworkInformation/NetworkAvailabilityEventArgs.cs
+System.Net.NetworkInformation/NetworkChange.cs
+System.Net.NetworkInformation/NetworkInformationAccess.cs
+System.Net.NetworkInformation/NetworkInformationException.cs
+System.Net.NetworkInformation/NetworkInterface.cs
+System.Net.NetworkInformation/NetworkInterfaceComponent.cs
+System.Net.NetworkInformation/NetworkInterfaceType.cs
+System.Net.NetworkInformation/OperationalStatus.cs
+System.Net.NetworkInformation/PhysicalAddress.cs
+System.Net.NetworkInformation/Ping.cs
+System.Net.NetworkInformation/PingCompletedEventArgs.cs
+System.Net.NetworkInformation/PingCompletedEventHandler.cs
+System.Net.NetworkInformation/PingException.cs
+System.Net.NetworkInformation/PingOptions.cs
+System.Net.NetworkInformation/PingReply.cs
+System.Net.NetworkInformation/PrefixOrigin.cs
+System.Net.NetworkInformation/SuffixOrigin.cs
+System.Net.NetworkInformation/TcpConnectionInformation.cs
+System.Net.NetworkInformation/TcpState.cs
+System.Net.NetworkInformation/TcpStatistics.cs
+System.Net.NetworkInformation/UdpStatistics.cs
+System.Net.NetworkInformation/UnicastIPAddressInformation.cs
+System.Net.NetworkInformation/UnicastIPAddressInformationCollection.cs
+System.Net.NetworkInformation/Win32NetworkInterfaceMarshal.cs
+System.Net.Security/AuthenticatedStream.cs
+System.Net.Security/AuthenticationLevel.cs
+System.Net.Security/LocalCertificateSelectionCallback.cs
+System.Net.Security/NegotiateStream.cs
+System.Net.Security/ProtectionLevel.cs
+System.Net.Security/RemoteCertificateValidationCallback.cs
+System.Net.Security/SslPolicyErrors.cs
+System.Net.Security/SslStream.cs
+System.Net.Sockets/AddressFamily.cs
+System.Net.Sockets/AddressFamily.cs
+System.Net.Sockets/IOControlCode.cs
+System.Net.Sockets/IPPacketInformation.cs
+System.Net.Sockets/IPv6MulticastOption.cs
+System.Net.Sockets/LingerOption.cs
+System.Net.Sockets/MulticastOption.cs
+System.Net.Sockets/NetworkStream.cs
+System.Net.Sockets/ProtocolFamily.cs
+System.Net.Sockets/ProtocolType.cs
+System.Net.Sockets/SelectMode.cs
+System.Net.Sockets/SendPacketsElement.cs
+System.Net.Sockets/Socket.cs
+System.Net.Sockets/SocketAsyncEventArgs.cs
+System.Net.Sockets/SocketAsyncOperation.cs
+System.Net.Sockets/SocketError.cs
+System.Net.Sockets/SocketException.cs
+System.Net.Sockets/SocketFlags.cs
+System.Net.Sockets/SocketInformation.cs
+System.Net.Sockets/SocketInformationOptions.cs
+System.Net.Sockets/SocketOptionLevel.cs
+System.Net.Sockets/SocketOptionName.cs
+System.Net.Sockets/SocketShutdown.cs
+System.Net.Sockets/SocketType.cs
+System.Net.Sockets/Socket_2_1.cs
+System.Net.Sockets/TcpClient.cs
+System.Net.Sockets/TcpListener.cs
+System.Net.Sockets/TransmitFileOptions.cs
+System.Net.Sockets/UdpClient.cs
+System.Net/AuthenticationManager.cs
+System.Net/AuthenticationSchemeSelector.cs
+System.Net/AuthenticationSchemes.cs
+System.Net/Authorization.cs
+System.Net/BasicClient.cs
+System.Net/BindIPEndPoint.cs
+System.Net/ChunkStream.cs
+System.Net/ChunkedInputStream.cs
+System.Net/ConnectionModes.cs
+System.Net/Cookie.cs
+System.Net/CookieCollection.cs
+System.Net/CookieContainer.cs
+System.Net/CookieException.cs
+System.Net/CredentialCache.cs
+System.Net/DecompressionMethods.cs
+System.Net/DefaultCertificatePolicy.cs
+System.Net/DigestClient.cs
+System.Net/Dns.cs
+System.Net/DownloadDataCompletedEventArgs.cs
+System.Net/DownloadDataCompletedEventHandler.cs
+System.Net/DownloadProgressChangedEventArgs.cs
+System.Net/DownloadProgressChangedEventHandler.cs
+System.Net/DownloadStringCompletedEventArgs.cs
+System.Net/DownloadStringCompletedEventHandler.cs
+System.Net/EndPoint.cs
+System.Net/EndPointListener.cs
+System.Net/EndPointManager.cs
+System.Net/FileWebRequest.cs
+System.Net/FileWebRequestCreator.cs
+System.Net/FileWebResponse.cs
+System.Net/FtpAsyncResult.cs
+System.Net/FtpDataStream.cs
+System.Net/FtpRequestCreator.cs
+System.Net/FtpStatus.cs
+System.Net/FtpStatusCode.cs
+System.Net/FtpWebRequest.cs
+System.Net/FtpWebResponse.cs
+System.Net/GlobalProxySelection.cs
+System.Net/HttpConnection.cs
+System.Net/HttpContinueDelegate.cs
+System.Net/HttpListener.cs
+System.Net/HttpListenerBasicIdentity.cs
+System.Net/HttpListenerContext.cs
+System.Net/HttpListenerException.cs
+System.Net/HttpListenerPrefixCollection.cs
+System.Net/HttpListenerRequest.cs
+System.Net/HttpListenerResponse.cs
+System.Net/HttpRequestCreator.cs
+System.Net/HttpRequestHeader.cs
+System.Net/HttpResponseHeader.cs
+System.Net/HttpStatusCode.cs
+System.Net/HttpStreamAsyncResult.cs
+System.Net/HttpUtility.cs
+System.Net/HttpVersion.cs
+System.Net/HttpWebRequest.cs
+System.Net/HttpWebResponse.cs
+System.Net/IAuthenticationModule.cs
+System.Net/ICertificatePolicy.cs
+System.Net/ICredentialLookup.cs
+System.Net/ICredentialPolicy.cs
+System.Net/ICredentialsByHost.cs
+System.Net/IPAddress.cs
+System.Net/IPAddress.cs
+System.Net/IPEndPoint.cs
+System.Net/IPHostEntry.cs
+System.Net/IPv6Address.cs
+System.Net/IPv6Address.cs
+System.Net/IWebProxy.cs
+System.Net/IWebProxyScript.cs
+System.Net/IWebRequestCreate.cs
+System.Net/ListenerAsyncResult.cs
+System.Net/ListenerPrefix.cs
+System.Net/MonoHttpDate.cs
+System.Net/NetConfig.cs
+System.Net/NetworkAccess.cs
+System.Net/NetworkCredential.cs
+System.Net/NtlmClient.cs
+System.Net/OpenReadCompletedEventArgs.cs
+System.Net/OpenReadCompletedEventHandler.cs
+System.Net/OpenWriteCompletedEventArgs.cs
+System.Net/OpenWriteCompletedEventHandler.cs
+System.Net/ProtocolViolationException.cs
+System.Net/RequestStream.cs
+System.Net/ResponseStream.cs
+System.Net/SecurityProtocolType.cs
+System.Net/ServicePoint.cs
+System.Net/ServicePointManager.cs
+System.Net/SocketAddress.cs
+System.Net/TransportType.cs
+System.Net/UploadDataCompletedEventArgs.cs
+System.Net/UploadDataCompletedEventHandler.cs
+System.Net/UploadFileCompletedEventArgs.cs
+System.Net/UploadFileCompletedEventHandler.cs
+System.Net/UploadProgressChangedEventArgs.cs
+System.Net/UploadProgressChangedEventHandler.cs
+System.Net/UploadStringCompletedEventArgs.cs
+System.Net/UploadStringCompletedEventHandler.cs
+System.Net/UploadValuesCompletedEventArgs.cs
+System.Net/UploadValuesCompletedEventHandler.cs
+System.Net/WebAsyncResult.cs
+System.Net/WebClient.cs
+System.Net/WebConnection.cs
+System.Net/WebConnectionData.cs
+System.Net/WebConnectionGroup.cs
+System.Net/WebConnectionStream.cs
+System.Net/WebException.cs
+System.Net/WebExceptionStatus.cs
+System.Net/WebHeaderCollection.cs
+System.Net/WebPermission.cs
+System.Net/WebPermissionAttribute.cs
+System.Net/WebProxy.cs
+System.Net/WebRequest.cs
+System.Net/WebRequestMethods.cs
+System.Net/WebResponse.cs
+System.Security.AccessControl/SemaphoreAccessRule.cs
+System.Security.AccessControl/SemaphoreAuditRule.cs
+System.Security.AccessControl/SemaphoreRights.cs
+System.Security.AccessControl/SemaphoreSecurity.cs
+System.Security.Authentication/AuthenticationException.cs
+System.Security.Authentication/CipherAlgorithmType.cs
+System.Security.Authentication/ExchangeAlgorithmType.cs
+System.Security.Authentication/HashAlgorithmType.cs
+System.Security.Authentication/InvalidCredentialException.cs
+System.Security.Authentication/SslProtocols.cs
+System.Security.Cryptography.X509Certificates/OSX509Certificates.cs
+System.Security.Cryptography.X509Certificates/OpenFlags.cs
+System.Security.Cryptography.X509Certificates/PublicKey.cs
+System.Security.Cryptography.X509Certificates/StoreLocation.cs
+System.Security.Cryptography.X509Certificates/StoreName.cs
+System.Security.Cryptography.X509Certificates/X500DistinguishedName.cs
+System.Security.Cryptography.X509Certificates/X500DistinguishedNameFlags.cs
+System.Security.Cryptography.X509Certificates/X509BasicConstraintsExtension.cs
+System.Security.Cryptography.X509Certificates/X509Certificate2.cs
+System.Security.Cryptography.X509Certificates/X509Certificate2Collection.cs
+System.Security.Cryptography.X509Certificates/X509Certificate2Enumerator.cs
+System.Security.Cryptography.X509Certificates/X509CertificateCollection.cs
+System.Security.Cryptography.X509Certificates/X509Chain.cs
+System.Security.Cryptography.X509Certificates/X509ChainElement.cs
+System.Security.Cryptography.X509Certificates/X509ChainElementCollection.cs
+System.Security.Cryptography.X509Certificates/X509ChainElementEnumerator.cs
+System.Security.Cryptography.X509Certificates/X509ChainPolicy.cs
+System.Security.Cryptography.X509Certificates/X509ChainStatus.cs
+System.Security.Cryptography.X509Certificates/X509ChainStatusFlags.cs
+System.Security.Cryptography.X509Certificates/X509EnhancedKeyUsageExtension.cs
+System.Security.Cryptography.X509Certificates/X509Extension.cs
+System.Security.Cryptography.X509Certificates/X509ExtensionCollection.cs
+System.Security.Cryptography.X509Certificates/X509ExtensionEnumerator.cs
+System.Security.Cryptography.X509Certificates/X509FindType.cs
+System.Security.Cryptography.X509Certificates/X509IncludeOption.cs
+System.Security.Cryptography.X509Certificates/X509KeyUsageExtension.cs
+System.Security.Cryptography.X509Certificates/X509KeyUsageFlags.cs
+System.Security.Cryptography.X509Certificates/X509NameType.cs
+System.Security.Cryptography.X509Certificates/X509RevocationFlag.cs
+System.Security.Cryptography.X509Certificates/X509RevocationMode.cs
+System.Security.Cryptography.X509Certificates/X509Store.cs
+System.Security.Cryptography.X509Certificates/X509SubjectKeyIdentifierExtension.cs
+System.Security.Cryptography.X509Certificates/X509SubjectKeyIdentifierHashAlgorithm.cs
+System.Security.Cryptography.X509Certificates/X509VerificationFlags.cs
+System.Security.Cryptography/AsnEncodedData.cs
+System.Security.Cryptography/AsnEncodedDataCollection.cs
+System.Security.Cryptography/AsnEncodedDataEnumerator.cs
+System.Security.Cryptography/Oid.cs
+System.Security.Cryptography/OidCollection.cs
+System.Security.Cryptography/OidEnumerator.cs
+System.Text.RegularExpressions/BaseMachine.cs
+System.Text.RegularExpressions/Capture.cs
+System.Text.RegularExpressions/CaptureCollection.cs
+System.Text.RegularExpressions/Group.cs
+System.Text.RegularExpressions/GroupCollection.cs
+System.Text.RegularExpressions/Match.cs
+System.Text.RegularExpressions/MatchCollection.cs
+System.Text.RegularExpressions/MatchEvaluator.cs
+System.Text.RegularExpressions/Regex.cs
+System.Text.RegularExpressions/RegexCompilationInfo.cs
+System.Text.RegularExpressions/RegexOptions.cs
+System.Text.RegularExpressions/RxInterpreter.cs
+System.Text.RegularExpressions/RxOp.cs
+System.Text.RegularExpressions/arch.cs
+System.Text.RegularExpressions/cache.cs
+System.Text.RegularExpressions/category.cs
+System.Text.RegularExpressions/compiler.cs
+System.Text.RegularExpressions/debug.cs
+System.Text.RegularExpressions/interpreter.cs
+System.Text.RegularExpressions/interval.cs
+System.Text.RegularExpressions/parser.cs
+System.Text.RegularExpressions/quicksearch.cs
+System.Text.RegularExpressions/replace.cs
+System.Text.RegularExpressions/syntax.cs
+System.Threading/Semaphore.cs
+System.Threading/SemaphoreFullException.cs
+System.Threading/ThreadExceptionEventArgs.cs
+System.Threading/ThreadExceptionEventHandler.cs
+System.Timers/ElapsedEventArgs.cs
+System.Timers/ElapsedEventHandler.cs
+System.Timers/Timer.cs
+System.Timers/TimersDescriptionAttribute.cs
+System/DefaultUriParser.cs
+System/FileStyleUriParser.cs
+System/FtpStyleUriParser.cs
+System/GenericUriParser.cs
+System/GenericUriParserOptions.cs
+System/HttpStyleUriParser.cs
+System/NetPipeStyleUriParser.cs
+System/NetTcpStyleUriParser.cs
+System/NewsStyleUriParser.cs
+System/SRDescriptionAttribute.cs
+System/Uri.cs
+System/UriBuilder.cs
+System/UriComponents.cs
+System/UriFormat.cs
+System/UriFormatException.cs
+System/UriHostNameType.cs
+System/UriIdnScope.cs
+System/UriKind.cs
+System/UriParser.cs
+System/UriPartial.cs
+System/UriTypeConverter.cs
--- /dev/null
+#include monodroid_bootstrap_System.dll.sources
--- /dev/null
+#include mobile_System.dll.sources
-../../build/common/Consts.cs
-../../build/common/Locale.cs
-../../build/common/MonoTODOAttribute.cs
-../corlib/System.Collections.Generic/CollectionDebuggerView.cs
-../corlib/System.Collections/CollectionDebuggerView.cs
-Assembly/AssemblyInfo.cs
-Mono.Http/NtlmClient.cs
-MonoTouch/MonoPInvokeCallbackAttribute.cs
-System.CodeDom.Compiler/GeneratedCodeAttribute.cs
-System.Collections.Generic/ISet.cs
-System.Collections.Generic/LinkedList.cs
-System.Collections.Generic/LinkedListNode.cs
-System.Collections.Generic/Queue.cs
-System.Collections.Generic/RBTree.cs
-System.Collections.Generic/SortedDictionary.cs
-System.Collections.Generic/SortedList.cs
-System.Collections.Generic/Stack.cs
-System.Collections.Specialized/BitVector32.cs
-System.Collections.Specialized/CollectionsUtil.cs
-System.Collections.Specialized/HybridDictionary.cs
-System.Collections.Specialized/ListDictionary.cs
-System.Collections.Specialized/NameObjectCollectionBase.cs
-System.Collections.Specialized/NameValueCollection.cs
-System.Collections.Specialized/ProcessStringDictionary.cs
-System.Collections.Specialized/StringCollection.cs
-System.Collections.Specialized/StringDictionary.cs
-System.Collections.Specialized/StringEnumerator.cs
-System.ComponentModel.Design.Serialization/InstanceDescriptor.cs
-System.ComponentModel.Design/CommandID.cs
-System.ComponentModel.Design/ComponentChangedEventArgs.cs
-System.ComponentModel.Design/ComponentChangedEventHandler.cs
-System.ComponentModel.Design/ComponentChangingEventArgs.cs
-System.ComponentModel.Design/ComponentChangingEventHandler.cs
-System.ComponentModel.Design/ComponentEventArgs.cs
-System.ComponentModel.Design/ComponentEventHandler.cs
-System.ComponentModel.Design/ComponentRenameEventArgs.cs
-System.ComponentModel.Design/ComponentRenameEventHandler.cs
-System.ComponentModel.Design/DesignerTransaction.cs
-System.ComponentModel.Design/DesignerTransactionCloseEventArgs.cs
-System.ComponentModel.Design/DesignerTransactionCloseEventHandler.cs
-System.ComponentModel.Design/DesignerVerb.cs
-System.ComponentModel.Design/DesignerVerbCollection.cs
-System.ComponentModel.Design/IComponentChangeService.cs
-System.ComponentModel.Design/IDesigner.cs
-System.ComponentModel.Design/IDesignerHost.cs
-System.ComponentModel.Design/IReferenceService.cs
-System.ComponentModel.Design/IRootDesigner.cs
-System.ComponentModel.Design/IServiceContainer.cs
-System.ComponentModel.Design/ITypeDescriptorFilterService.cs
-System.ComponentModel.Design/ITypeResolutionService.cs
-System.ComponentModel.Design/MenuCommand.cs
-System.ComponentModel.Design/ServiceCreatorCallback.cs
-System.ComponentModel.Design/StandardCommands.cs
-System.ComponentModel.Design/ViewTechnology.cs
-System.ComponentModel/ArrayConverter.cs
-System.ComponentModel/AsyncCompletedEventArgs.cs
-System.ComponentModel/AsyncCompletedEventHandler.cs
-System.ComponentModel/AsyncOperation.cs
-System.ComponentModel/AsyncOperationManager.cs
-System.ComponentModel/AttributeCollection.cs
-System.ComponentModel/BackgroundWorker.cs
-System.ComponentModel/BaseNumberConverter.cs
-System.ComponentModel/BindableSupport.cs
-System.ComponentModel/BooleanConverter.cs
-System.ComponentModel/BrowsableAttribute.cs
-System.ComponentModel/ByteConverter.cs
-System.ComponentModel/CancelEventArgs.cs
-System.ComponentModel/CategoryAttribute.cs
-System.ComponentModel/CharConverter.cs
-System.ComponentModel/CollectionChangeAction.cs
-System.ComponentModel/CollectionChangeEventArgs.cs
-System.ComponentModel/CollectionChangeEventHandler.cs
-System.ComponentModel/CollectionConverter.cs
-System.ComponentModel/Component.cs
-System.ComponentModel/ComponentCollection.cs
-System.ComponentModel/ComponentConverter.cs
-System.ComponentModel/CultureInfoConverter.cs
-System.ComponentModel/CustomTypeDescriptor.cs
-System.ComponentModel/DateTimeConverter.cs
-System.ComponentModel/DecimalConverter.cs
-System.ComponentModel/DefaultEventAttribute.cs
-System.ComponentModel/DefaultPropertyAttribute.cs
-System.ComponentModel/DefaultValueAttribute.cs
-System.ComponentModel/DescriptionAttribute.cs
-System.ComponentModel/DesignOnlyAttribute.cs
-System.ComponentModel/DesignTimeVisibleAttribute.cs
-System.ComponentModel/DesignerAttribute.cs
-System.ComponentModel/DesignerCategoryAttribute.cs
-System.ComponentModel/DesignerSerializationVisibility.cs
-System.ComponentModel/DesignerSerializationVisibilityAttribute.cs
-System.ComponentModel/DisplayNameAttribute.cs
-System.ComponentModel/DoWorkEventArgs.cs
-System.ComponentModel/DoWorkEventHandler.cs
-System.ComponentModel/DoubleConverter.cs
-System.ComponentModel/EditorAttribute.cs
-System.ComponentModel/EditorBrowsableAttribute.cs
-System.ComponentModel/EditorBrowsableState.cs
-System.ComponentModel/EnumConverter.cs
-System.ComponentModel/EventDescriptor.cs
-System.ComponentModel/EventDescriptorCollection.cs
-System.ComponentModel/EventHandlerList.cs
-System.ComponentModel/ExpandableObjectConverter.cs
-System.ComponentModel/GuidConverter.cs
-System.ComponentModel/IBindingList.cs
-System.ComponentModel/IBindingListView.cs
-System.ComponentModel/IChangeTracking.cs
-System.ComponentModel/IComNativeDescriptorHandler.cs
-System.ComponentModel/IComponent.cs
-System.ComponentModel/IComponent.cs
-System.ComponentModel/IContainer.cs
-System.ComponentModel/ICustomTypeDescriptor.cs
-System.ComponentModel/IDataErrorInfo.cs
-System.ComponentModel/IDataErrorInfo.cs
-System.ComponentModel/IEditableObject.cs
-System.ComponentModel/IListSource.cs
-System.ComponentModel/INotifyPropertyChanged.cs
-System.ComponentModel/IRevertibleChangeTracking.cs
-System.ComponentModel/ISite.cs
-System.ComponentModel/ISupportInitialize.cs
-System.ComponentModel/ISupportInitializeNotification.cs
-System.ComponentModel/ISynchronizeInvoke.cs
-System.ComponentModel/ITypeDescriptorContext.cs
-System.ComponentModel/ITypedList.cs
-System.ComponentModel/Int16Converter.cs
-System.ComponentModel/Int32Converter.cs
-System.ComponentModel/Int64Converter.cs
-System.ComponentModel/InvalidEnumArgumentException.cs
-System.ComponentModel/InvalidEnumArgumentException.cs
-System.ComponentModel/ListBindableAttribute.cs
-System.ComponentModel/ListChangedEventArgs.cs
-System.ComponentModel/ListChangedEventHandler.cs
-System.ComponentModel/ListChangedType.cs
-System.ComponentModel/ListSortDescription.cs
-System.ComponentModel/ListSortDescriptionCollection.cs
-System.ComponentModel/ListSortDirection.cs
-System.ComponentModel/ListSortDirection.cs
-System.ComponentModel/LocalizableAttribute.cs
-System.ComponentModel/MarshalByValueComponent.cs
-System.ComponentModel/MemberDescriptor.cs
-System.ComponentModel/MergablePropertyAttribute.cs
-System.ComponentModel/MultilineStringConverter.cs
-System.ComponentModel/NotifyParentPropertyAttribute.cs
-System.ComponentModel/NullableConverter.cs
-System.ComponentModel/PasswordPropertyTextAttribute.cs
-System.ComponentModel/ProgressChangedEventArgs.cs
-System.ComponentModel/ProgressChangedEventHandler.cs
-System.ComponentModel/PropertyChangedEventArgs.cs
-System.ComponentModel/PropertyChangedEventHandler.cs
-System.ComponentModel/PropertyDescriptor.cs
-System.ComponentModel/PropertyDescriptor.cs
-System.ComponentModel/PropertyDescriptorCollection.cs
-System.ComponentModel/ReadOnlyAttribute.cs
-System.ComponentModel/ReadOnlyAttribute.cs
-System.ComponentModel/RecommendedAsConfigurableAttribute.cs
-System.ComponentModel/ReferenceConverter.cs
-System.ComponentModel/ReferenceConverter.cs
-System.ComponentModel/ReflectionEventDescriptor.cs
-System.ComponentModel/ReflectionPropertyDescriptor.cs
-System.ComponentModel/RefreshEventArgs.cs
-System.ComponentModel/RefreshEventHandler.cs
-System.ComponentModel/RefreshProperties.cs
-System.ComponentModel/RefreshPropertiesAttribute.cs
-System.ComponentModel/RunWorkerCompletedEventArgs.cs
-System.ComponentModel/RunWorkerCompletedEventHandler.cs
-System.ComponentModel/SByteConverter.cs
-System.ComponentModel/SingleConverter.cs
-System.ComponentModel/StringConverter.cs
-System.ComponentModel/TimeSpanConverter.cs
-System.ComponentModel/ToolboxItemAttribute.cs
-System.ComponentModel/ToolboxItemFilterAttribute.cs
-System.ComponentModel/ToolboxItemFilterType.cs
-System.ComponentModel/TypeConverter.cs
-System.ComponentModel/TypeConverterAttribute.cs
-System.ComponentModel/TypeConverter_2_1.cs
-System.ComponentModel/TypeDescriptionProvider.cs
-System.ComponentModel/TypeDescriptor.cs
-System.ComponentModel/TypeListConverter.cs
-System.ComponentModel/UInt16Converter.cs
-System.ComponentModel/UInt32Converter.cs
-System.ComponentModel/UInt64Converter.cs
-System.ComponentModel/WeakObjectWrapper.cs
-System.ComponentModel/WeakObjectWrapperComparer.cs
-System.ComponentModel/Win32Exception.cs
-System.Diagnostics/DataReceivedEventArgs.cs
-System.Diagnostics/DataReceivedEventHandler.cs
-System.Diagnostics/Debug_2_1.cs
-System.Diagnostics/FileVersionInfo.cs
-System.Diagnostics/MonitoringDescriptionAttribute.cs
-System.Diagnostics/Process.cs
-System.Diagnostics/ProcessModule.cs
-System.Diagnostics/ProcessModuleCollection.cs
-System.Diagnostics/ProcessPriorityClass.cs
-System.Diagnostics/ProcessStartInfo.cs
-System.Diagnostics/ProcessThread.cs
-System.Diagnostics/ProcessThreadCollection.cs
-System.Diagnostics/ProcessWindowStyle.cs
-System.Diagnostics/Stopwatch.cs
-System.Diagnostics/ThreadPriorityLevel.cs
-System.Diagnostics/ThreadState.cs
-System.Diagnostics/ThreadWaitReason.cs
-System.IO.Compression/CompressionMode.cs
-System.IO.Compression/DeflateStream.cs
-System.IO.Compression/GZipStream.cs
-System.IO/MonoIO.cs
-System.IO/MonoIOError.cs
-System.IO/MonoSyncFileStream.cs
-System.Net.Cache/HttpCacheAgeControl.cs
-System.Net.Cache/HttpRequestCacheLevel.cs
-System.Net.Cache/HttpRequestCachePolicy.cs
-System.Net.Cache/RequestCacheLevel.cs
-System.Net.Cache/RequestCachePolicy.cs
-System.Net.Mail/AlternateView.cs
-System.Net.Mail/AlternateViewCollection.cs
-System.Net.Mail/Attachment.cs
-System.Net.Mail/AttachmentBase.cs
-System.Net.Mail/AttachmentCollection.cs
-System.Net.Mail/DeliveryNotificationOptions.cs
-System.Net.Mail/LinkedResource.cs
-System.Net.Mail/LinkedResourceCollection.cs
-System.Net.Mail/MailAddress.cs
-System.Net.Mail/MailAddressCollection.cs
-System.Net.Mail/MailMessage.cs
-System.Net.Mail/MailPriority.cs
-System.Net.Mail/SendCompletedEventHandler.cs
-System.Net.Mail/SmtpAccess.cs
-System.Net.Mail/SmtpClient.cs
-System.Net.Mail/SmtpDeliveryMethod.cs
-System.Net.Mail/SmtpException.cs
-System.Net.Mail/SmtpFailedRecipientException.cs
-System.Net.Mail/SmtpFailedRecipientsException.cs
-System.Net.Mail/SmtpStatusCode.cs
-System.Net.Mime/ContentDisposition.cs
-System.Net.Mime/ContentType.cs
-System.Net.Mime/DispositionTypeNames.cs
-System.Net.Mime/MediaTypeNames.cs
-System.Net.Mime/TransferEncoding.cs
-System.Net.NetworkInformation/DuplicateAddressDetectionState.cs
-System.Net.NetworkInformation/GatewayIPAddressInformation.cs
-System.Net.NetworkInformation/GatewayIPAddressInformationCollection.cs
-System.Net.NetworkInformation/IPAddressCollection.cs
-System.Net.NetworkInformation/IPAddressInformation.cs
-System.Net.NetworkInformation/IPAddressInformationCollection.cs
-System.Net.NetworkInformation/IPGlobalProperties.cs
-System.Net.NetworkInformation/IPGlobalStatistics.cs
-System.Net.NetworkInformation/IPInterfaceProperties.cs
-System.Net.NetworkInformation/IPStatus.cs
-System.Net.NetworkInformation/IPv4InterfaceProperties.cs
-System.Net.NetworkInformation/IPv4InterfaceStatistics.cs
-System.Net.NetworkInformation/IPv6InterfaceProperties.cs
-System.Net.NetworkInformation/IcmpV4Statistics.cs
-System.Net.NetworkInformation/IcmpV6Statistics.cs
-System.Net.NetworkInformation/LinuxNetworkInterfaceMarshal.cs
-System.Net.NetworkInformation/MacOsNetworkInterfaceMarshal.cs
-System.Net.NetworkInformation/MulticastIPAddressInformation.cs
-System.Net.NetworkInformation/MulticastIPAddressInformationCollection.cs
-System.Net.NetworkInformation/NetBiosNodeType.cs
-System.Net.NetworkInformation/NetworkAddressChangedEventHandler.cs
-System.Net.NetworkInformation/NetworkAvailabilityChangedEventHandler.cs
-System.Net.NetworkInformation/NetworkAvailabilityEventArgs.cs
-System.Net.NetworkInformation/NetworkChange.cs
-System.Net.NetworkInformation/NetworkInformationAccess.cs
-System.Net.NetworkInformation/NetworkInformationException.cs
-System.Net.NetworkInformation/NetworkInterface.cs
-System.Net.NetworkInformation/NetworkInterfaceComponent.cs
-System.Net.NetworkInformation/NetworkInterfaceType.cs
-System.Net.NetworkInformation/OperationalStatus.cs
-System.Net.NetworkInformation/PhysicalAddress.cs
-System.Net.NetworkInformation/Ping.cs
-System.Net.NetworkInformation/PingCompletedEventArgs.cs
-System.Net.NetworkInformation/PingCompletedEventHandler.cs
-System.Net.NetworkInformation/PingException.cs
-System.Net.NetworkInformation/PingOptions.cs
-System.Net.NetworkInformation/PingReply.cs
-System.Net.NetworkInformation/PrefixOrigin.cs
-System.Net.NetworkInformation/SuffixOrigin.cs
-System.Net.NetworkInformation/TcpConnectionInformation.cs
-System.Net.NetworkInformation/TcpState.cs
-System.Net.NetworkInformation/TcpStatistics.cs
-System.Net.NetworkInformation/UdpStatistics.cs
-System.Net.NetworkInformation/UnicastIPAddressInformation.cs
-System.Net.NetworkInformation/UnicastIPAddressInformationCollection.cs
-System.Net.NetworkInformation/Win32NetworkInterfaceMarshal.cs
-System.Net.Security/AuthenticatedStream.cs
-System.Net.Security/AuthenticationLevel.cs
-System.Net.Security/LocalCertificateSelectionCallback.cs
-System.Net.Security/NegotiateStream.cs
-System.Net.Security/ProtectionLevel.cs
-System.Net.Security/RemoteCertificateValidationCallback.cs
-System.Net.Security/SslPolicyErrors.cs
-System.Net.Security/SslStream.cs
-System.Net.Sockets/AddressFamily.cs
-System.Net.Sockets/AddressFamily.cs
-System.Net.Sockets/IOControlCode.cs
-System.Net.Sockets/IPPacketInformation.cs
-System.Net.Sockets/IPv6MulticastOption.cs
-System.Net.Sockets/LingerOption.cs
-System.Net.Sockets/MulticastOption.cs
-System.Net.Sockets/NetworkStream.cs
-System.Net.Sockets/ProtocolFamily.cs
-System.Net.Sockets/ProtocolType.cs
-System.Net.Sockets/SelectMode.cs
-System.Net.Sockets/SendPacketsElement.cs
-System.Net.Sockets/Socket.cs
-System.Net.Sockets/SocketAsyncEventArgs.cs
-System.Net.Sockets/SocketAsyncOperation.cs
-System.Net.Sockets/SocketError.cs
-System.Net.Sockets/SocketException.cs
-System.Net.Sockets/SocketFlags.cs
-System.Net.Sockets/SocketInformation.cs
-System.Net.Sockets/SocketInformationOptions.cs
-System.Net.Sockets/SocketOptionLevel.cs
-System.Net.Sockets/SocketOptionName.cs
-System.Net.Sockets/SocketShutdown.cs
-System.Net.Sockets/SocketType.cs
-System.Net.Sockets/Socket_2_1.cs
-System.Net.Sockets/TcpClient.cs
-System.Net.Sockets/TcpListener.cs
-System.Net.Sockets/TransmitFileOptions.cs
-System.Net.Sockets/UdpClient.cs
-System.Net/AuthenticationManager.cs
-System.Net/AuthenticationSchemeSelector.cs
-System.Net/AuthenticationSchemes.cs
-System.Net/Authorization.cs
-System.Net/BasicClient.cs
-System.Net/BindIPEndPoint.cs
-System.Net/ChunkStream.cs
-System.Net/ChunkedInputStream.cs
-System.Net/ConnectionModes.cs
-System.Net/Cookie.cs
-System.Net/CookieCollection.cs
-System.Net/CookieContainer.cs
-System.Net/CookieException.cs
-System.Net/CredentialCache.cs
-System.Net/DecompressionMethods.cs
-System.Net/DefaultCertificatePolicy.cs
-System.Net/DigestClient.cs
-System.Net/Dns.cs
-System.Net/DownloadDataCompletedEventArgs.cs
-System.Net/DownloadDataCompletedEventHandler.cs
-System.Net/DownloadProgressChangedEventArgs.cs
-System.Net/DownloadProgressChangedEventHandler.cs
-System.Net/DownloadStringCompletedEventArgs.cs
-System.Net/DownloadStringCompletedEventHandler.cs
-System.Net/EndPoint.cs
-System.Net/EndPointListener.cs
-System.Net/EndPointManager.cs
-System.Net/FileWebRequest.cs
-System.Net/FileWebRequestCreator.cs
-System.Net/FileWebResponse.cs
-System.Net/FtpAsyncResult.cs
-System.Net/FtpDataStream.cs
-System.Net/FtpRequestCreator.cs
-System.Net/FtpStatus.cs
-System.Net/FtpStatusCode.cs
-System.Net/FtpWebRequest.cs
-System.Net/FtpWebResponse.cs
-System.Net/GlobalProxySelection.cs
-System.Net/HttpConnection.cs
-System.Net/HttpContinueDelegate.cs
-System.Net/HttpListener.cs
-System.Net/HttpListenerBasicIdentity.cs
-System.Net/HttpListenerContext.cs
-System.Net/HttpListenerException.cs
-System.Net/HttpListenerPrefixCollection.cs
-System.Net/HttpListenerRequest.cs
-System.Net/HttpListenerResponse.cs
-System.Net/HttpRequestCreator.cs
-System.Net/HttpRequestHeader.cs
-System.Net/HttpResponseHeader.cs
-System.Net/HttpStatusCode.cs
-System.Net/HttpStreamAsyncResult.cs
-System.Net/HttpUtility.cs
-System.Net/HttpVersion.cs
-System.Net/HttpWebRequest.cs
-System.Net/HttpWebResponse.cs
-System.Net/IAuthenticationModule.cs
-System.Net/ICertificatePolicy.cs
-System.Net/ICredentialLookup.cs
-System.Net/ICredentialPolicy.cs
-System.Net/ICredentialsByHost.cs
-System.Net/IPAddress.cs
-System.Net/IPAddress.cs
-System.Net/IPEndPoint.cs
-System.Net/IPHostEntry.cs
-System.Net/IPv6Address.cs
-System.Net/IPv6Address.cs
-System.Net/IWebProxy.cs
-System.Net/IWebProxyScript.cs
-System.Net/IWebRequestCreate.cs
-System.Net/ListenerAsyncResult.cs
-System.Net/ListenerPrefix.cs
-System.Net/MonoHttpDate.cs
-System.Net/NetConfig.cs
-System.Net/NetworkAccess.cs
-System.Net/NetworkCredential.cs
-System.Net/NtlmClient.cs
-System.Net/OpenReadCompletedEventArgs.cs
-System.Net/OpenReadCompletedEventHandler.cs
-System.Net/OpenWriteCompletedEventArgs.cs
-System.Net/OpenWriteCompletedEventHandler.cs
-System.Net/ProtocolViolationException.cs
-System.Net/RequestStream.cs
-System.Net/ResponseStream.cs
-System.Net/SecurityProtocolType.cs
-System.Net/ServicePoint.cs
-System.Net/ServicePointManager.cs
-System.Net/SocketAddress.cs
-System.Net/TransportType.cs
-System.Net/UploadDataCompletedEventArgs.cs
-System.Net/UploadDataCompletedEventHandler.cs
-System.Net/UploadFileCompletedEventArgs.cs
-System.Net/UploadFileCompletedEventHandler.cs
-System.Net/UploadProgressChangedEventArgs.cs
-System.Net/UploadProgressChangedEventHandler.cs
-System.Net/UploadStringCompletedEventArgs.cs
-System.Net/UploadStringCompletedEventHandler.cs
-System.Net/UploadValuesCompletedEventArgs.cs
-System.Net/UploadValuesCompletedEventHandler.cs
-System.Net/WebAsyncResult.cs
-System.Net/WebClient.cs
-System.Net/WebConnection.cs
-System.Net/WebConnectionData.cs
-System.Net/WebConnectionGroup.cs
-System.Net/WebConnectionStream.cs
-System.Net/WebException.cs
-System.Net/WebExceptionStatus.cs
-System.Net/WebHeaderCollection.cs
-System.Net/WebPermission.cs
-System.Net/WebPermissionAttribute.cs
-System.Net/WebProxy.cs
-System.Net/WebRequest.cs
-System.Net/WebRequestMethods.cs
-System.Net/WebResponse.cs
-System.Security.AccessControl/SemaphoreAccessRule.cs
-System.Security.AccessControl/SemaphoreAuditRule.cs
-System.Security.AccessControl/SemaphoreRights.cs
-System.Security.AccessControl/SemaphoreSecurity.cs
-System.Security.Authentication/AuthenticationException.cs
-System.Security.Authentication/CipherAlgorithmType.cs
-System.Security.Authentication/ExchangeAlgorithmType.cs
-System.Security.Authentication/HashAlgorithmType.cs
-System.Security.Authentication/InvalidCredentialException.cs
-System.Security.Authentication/SslProtocols.cs
-System.Security.Cryptography.X509Certificates/OSX509Certificates.cs
-System.Security.Cryptography.X509Certificates/OpenFlags.cs
-System.Security.Cryptography.X509Certificates/PublicKey.cs
-System.Security.Cryptography.X509Certificates/StoreLocation.cs
-System.Security.Cryptography.X509Certificates/StoreName.cs
-System.Security.Cryptography.X509Certificates/X500DistinguishedName.cs
-System.Security.Cryptography.X509Certificates/X500DistinguishedNameFlags.cs
-System.Security.Cryptography.X509Certificates/X509BasicConstraintsExtension.cs
-System.Security.Cryptography.X509Certificates/X509Certificate2.cs
-System.Security.Cryptography.X509Certificates/X509Certificate2Collection.cs
-System.Security.Cryptography.X509Certificates/X509Certificate2Enumerator.cs
-System.Security.Cryptography.X509Certificates/X509CertificateCollection.cs
-System.Security.Cryptography.X509Certificates/X509Chain.cs
-System.Security.Cryptography.X509Certificates/X509ChainElement.cs
-System.Security.Cryptography.X509Certificates/X509ChainElementCollection.cs
-System.Security.Cryptography.X509Certificates/X509ChainElementEnumerator.cs
-System.Security.Cryptography.X509Certificates/X509ChainPolicy.cs
-System.Security.Cryptography.X509Certificates/X509ChainStatus.cs
-System.Security.Cryptography.X509Certificates/X509ChainStatusFlags.cs
-System.Security.Cryptography.X509Certificates/X509EnhancedKeyUsageExtension.cs
-System.Security.Cryptography.X509Certificates/X509Extension.cs
-System.Security.Cryptography.X509Certificates/X509ExtensionCollection.cs
-System.Security.Cryptography.X509Certificates/X509ExtensionEnumerator.cs
-System.Security.Cryptography.X509Certificates/X509FindType.cs
-System.Security.Cryptography.X509Certificates/X509IncludeOption.cs
-System.Security.Cryptography.X509Certificates/X509KeyUsageExtension.cs
-System.Security.Cryptography.X509Certificates/X509KeyUsageFlags.cs
-System.Security.Cryptography.X509Certificates/X509NameType.cs
-System.Security.Cryptography.X509Certificates/X509RevocationFlag.cs
-System.Security.Cryptography.X509Certificates/X509RevocationMode.cs
-System.Security.Cryptography.X509Certificates/X509Store.cs
-System.Security.Cryptography.X509Certificates/X509SubjectKeyIdentifierExtension.cs
-System.Security.Cryptography.X509Certificates/X509SubjectKeyIdentifierHashAlgorithm.cs
-System.Security.Cryptography.X509Certificates/X509VerificationFlags.cs
-System.Security.Cryptography/AsnEncodedData.cs
-System.Security.Cryptography/AsnEncodedDataCollection.cs
-System.Security.Cryptography/AsnEncodedDataEnumerator.cs
-System.Security.Cryptography/Oid.cs
-System.Security.Cryptography/OidCollection.cs
-System.Security.Cryptography/OidEnumerator.cs
-System.Text.RegularExpressions/BaseMachine.cs
-System.Text.RegularExpressions/Capture.cs
-System.Text.RegularExpressions/CaptureCollection.cs
-System.Text.RegularExpressions/Group.cs
-System.Text.RegularExpressions/GroupCollection.cs
-System.Text.RegularExpressions/Match.cs
-System.Text.RegularExpressions/MatchCollection.cs
-System.Text.RegularExpressions/MatchEvaluator.cs
-System.Text.RegularExpressions/Regex.cs
-System.Text.RegularExpressions/RegexCompilationInfo.cs
-System.Text.RegularExpressions/RegexOptions.cs
-System.Text.RegularExpressions/RxInterpreter.cs
-System.Text.RegularExpressions/RxOp.cs
-System.Text.RegularExpressions/arch.cs
-System.Text.RegularExpressions/cache.cs
-System.Text.RegularExpressions/category.cs
-System.Text.RegularExpressions/compiler.cs
-System.Text.RegularExpressions/debug.cs
-System.Text.RegularExpressions/interpreter.cs
-System.Text.RegularExpressions/interval.cs
-System.Text.RegularExpressions/parser.cs
-System.Text.RegularExpressions/quicksearch.cs
-System.Text.RegularExpressions/replace.cs
-System.Text.RegularExpressions/syntax.cs
-System.Threading/Semaphore.cs
-System.Threading/SemaphoreFullException.cs
-System.Threading/ThreadExceptionEventArgs.cs
-System.Threading/ThreadExceptionEventHandler.cs
-System.Timers/ElapsedEventArgs.cs
-System.Timers/ElapsedEventHandler.cs
-System.Timers/Timer.cs
-System.Timers/TimersDescriptionAttribute.cs
-System/DefaultUriParser.cs
-System/FileStyleUriParser.cs
-System/FtpStyleUriParser.cs
-System/GenericUriParser.cs
-System/GenericUriParserOptions.cs
-System/HttpStyleUriParser.cs
-System/NetPipeStyleUriParser.cs
-System/NetTcpStyleUriParser.cs
-System/NewsStyleUriParser.cs
-System/SRDescriptionAttribute.cs
-System/Uri.cs
-System/UriBuilder.cs
-System/UriComponents.cs
-System/UriFormat.cs
-System/UriFormatException.cs
-System/UriHostNameType.cs
-System/UriIdnScope.cs
-System/UriKind.cs
-System/UriParser.cs
-System/UriPartial.cs
-System/UriTypeConverter.cs
+#include monotouch_bootstrap_System.dll.sources
-#include monotouch_System.dll.sources
+#include mobile_System.dll.sources
+MonoTouch/MonoPInvokeCallbackAttribute.cs
}
[Serializable]
-#if MONOTOUCH
- internal
-#endif
sealed class GenericComparer <T> : Comparer <T> where T : IComparable<T> {
public override int Compare (T x, T y)
{
}
[Serializable]
-#if MONOTOUCH
- internal
-#endif
sealed class GenericEqualityComparer <T> : EqualityComparer <T> where T : IEquatable <T> {
public override int GetHashCode (T obj)
FlushBuffer ();
}
-#if NET_4_0
+#if NET_4_0 || MOONLIGHT
public virtual void Flush (bool flushToDisk)
{
FlushBuffer ();
public override Type[] GetGenericArguments ()
{
if (generic_params == null)
- return Type.EmptyTypes;
+ return null;
Type[] result = new Type [generic_params.Length];
for (int i = 0; i < generic_params.Length; i++)
return res;
}
+ internal TypeCode GetTypeCodeInternal () {
+ if (parent == pmodule.assemblyb.corlib_enum_type) {
+ for (int i = 0; i < num_fields; ++i) {
+ FieldBuilder f = fields [i];
+ if (!f.IsStatic)
+ return Type.GetTypeCode (f.FieldType);
+ }
+ throw new InvalidOperationException ("Enum basetype field not defined");
+ } else {
+ return Type.GetTypeCodeInternal (this);
+ }
+ }
+
+
void _TypeBuilder.GetIDsOfNames([In] ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId)
{
throw new NotImplementedException ();
[ComDefaultInterfaceAttribute (typeof (_Assembly))]
[Serializable]
[ClassInterface(ClassInterfaceType.None)]
-#if MONOTOUCH
+#if MOBILE
public partial class Assembly : ICustomAttributeProvider, _Assembly {
#elif MOONLIGHT
public abstract class Assembly : ICustomAttributeProvider, _Assembly {
Type type = this;
if (type is MonoType)
return GetTypeCodeInternal (type);
+ if (type is TypeBuilder)
+ return ((TypeBuilder)type).GetTypeCodeInternal ();
type = type.UnderlyingSystemType;
Assert.AreEqual (1, body.LocalVariables.Count);
Assert.AreEqual (typeof (object), body.LocalVariables [0].LocalType);
}
+
+
+ [Test] //#384127
+ public void GetGenericArgumentsReturnsNullForNonGenericMethod ()
+ {
+ var tb = module.DefineType ("Base");
+
+ var mb = tb.DefineMethod ("foo", MethodAttributes.Public, typeof (void), Type.EmptyTypes);
+
+ Assert.IsNull (mb.GetGenericArguments ());
+
+ }
}
}
AssertingBinder.Instance.SelectMethod (flags, new MethodBase [] {m0, m1}, new Type[] { typeof (int) }, null);
}
+
+ public static string Bug636939 (IFormatProvider provider, string pattern, params object [] args)
+ {
+ return string.Format (pattern, args);
+ }
+
+ [Test] // bug #636939
+ [Category ("NotWorking")]
+ public void SelectMethodWithParamArrayAndNonEqualTypeArguments ()
+ {
+ const BindingFlags flags =
+ BindingFlags.IgnoreCase | BindingFlags.Instance |
+ BindingFlags.Static | BindingFlags.Public |
+ BindingFlags.FlattenHierarchy | BindingFlags.InvokeMethod;
+
+ Assert.AreEqual ("foobarbaz", typeof (BinderTest).InvokeMember (
+ "bug636939",
+ flags,
+ null, // binder
+ null, // target
+ new object [] { CultureInfo.CurrentCulture, "foo{0}{1}", "bar", "baz" }));
+ }
}
}
--- /dev/null
+#include corlib.dll.sources
+
--- /dev/null
+#include monodroid_bootstrap_corlib.dll.sources
-#include monotouch_corlib.dll.sources
-
+#include corlib.dll.sources
-#include corlib.dll.sources
+#include monotouch_bootstrap_corlib.dll.sources
--- /dev/null
+// CS0103: The name `test' does not exist in the current context
+// Line: 11
+
+class ClassMain
+{
+ public static void Main ()
+ {
+ if (true) {
+ const bool test = false;
+ }
+ test = false;
+ }
+
+ static bool Test {
+ set {
+ }
+ }
+}
+
--- /dev/null
+// CS0135: `test' conflicts with a declaration in a child block
+// Line: 13
+
+class ClassMain
+{
+ static bool test = true;
+
+ public static void Main ()
+ {
+ if (true) {
+ const bool test = false;
+ }
+ test = false;
+ }
+}
+
+++ /dev/null
-// cs0136-6.cs: A local variable named `top' cannot be declared in this scope because it would give a different meaning to `top', which is already used in a `parent or current' scope to denote something else
-// Line: 19
-
-using System.Collections;
-
-class Symbol
-{
-}
-
-class X
-{
- Symbol top;
-
- internal int Enter (Symbol key, object value)
- {
- if (key != null) {
- top = key;
- }
- Hashtable top = new Hashtable ();
- return top.Count;
- }
-
- public static void Main () {}
-}
-// cs0136.cs: A local variable named `i' cannot be declared in this scope because it would give a different meaning to `i', which is already used in a `parent' scope to denote something else
-// Line: 8
+// CS0136: A local variable named `i' cannot be declared in this scope because it would give a different meaning to `i', which is already used in a `parent or current' scope to denote something else
+// Line: 9
+
class X {
void b ()
{
{\r
int i = new Test()[false];\r
}\r
-}
+}\r
--- /dev/null
+// CS0158: The label `a' shadows another label by the same name in a contained scope
+// Line: 11
+
+class Foo
+{
+ static void Main ()
+ {
+ int i = 1;
+ goto a;
+ if (i == 9) {
+ a:
+ return;
+ }
+a:
+ return;
+ }
+}
--- /dev/null
+// CS0159: The label `a:' could not be found within the scope of the goto statement
+// Line: 9
+
+public class A
+{
+ public static void Main ()
+ {
+ int i = 9;
+ goto a;
+ switch (i) {
+ case 9:
+ a:
+ break;
+ }
+ }
+}
+
--- /dev/null
+// CS0190: The __arglist construct is valid only within a variable argument method
+// Line: 11
+
+public class Test
+{
+ public static void Foo (__arglist)
+ {
+ System.RuntimeArgumentHandle o;
+ {
+ System.Action a = delegate () {
+ o = __arglist;
+ };
+
+ a ();
+ }
+ }
+
+ public static void Main ()
+ {
+ Foo (__arglist ());
+ }
+}
\ No newline at end of file
--- /dev/null
+// CS0219: The variable `e' is assigned but its value is never used
+// Line: 12
+// Compiler options: -warn:3 -warnaserror
+
+using System;
+public class ConsoleStub
+{
+ public static void Main()
+ {
+ try {
+ } catch (Exception e) {
+ e = null;
+ }
+ }
+}
+
--- /dev/null
+// CS0236: A field initializer cannot reference the nonstatic field, method, or property `C.stuff'
+// Line: 6
+
+class C
+{
+ object stuff = stuff;
+
+ public C (object stuff)
+ {
+ }
+}
-// cs0575.cs: Only class types can contain destructor
-// Line: 5
-struct X {
+// CS0575: Only class types can contain destructor
+// Line: 10
+struct X
+{
~X ()
{
}
{
}
}
-
-}
--- /dev/null
+// CS0642: Possible mistaken empty statement
+// Line: 9
+// Compiler options: -warnaserror -warn:3
+
+public class C
+{
+ public void Test ()
+ {
+ using (System.IDisposable arg = null);
+ { }
+ }
+}
--- /dev/null
+// CS738: `CB' does not implement interface member `IG<IA>.Method()' and the best implementing candidate `CA<IB>.Method()' return type `IB' does not match interface member return type `IA'
+// Line: 29
+
+public interface IA
+{
+}
+
+public interface IB : IA
+{
+}
+
+public interface IG<out U>
+{
+ U Method ();
+}
+
+public interface IDerived : IG<IA>
+{
+}
+
+public abstract class CA<T> : IG<T>
+{
+ public T Method ()
+ {
+ return default (T);
+ }
+}
+
+public class CB : CA<IB>, IG<IA>
+{
+}
-// CS0844: A local variable `y' cannot be used before it is declared. Consider renaming the local variable when it hides the field `X.y'
+// CS0844: A local variable `y' cannot be used before it is declared. Consider renaming the local variable when it hides the member `X.y'
// Line: 8
class X
--- /dev/null
+// CS0844: A local variable `top' cannot be used before it is declared. Consider renaming the local variable when it hides the member `X.top'
+// Line: 17
+
+class Symbol
+{
+}
+
+class X
+{
+ Symbol top;
+
+ internal int Enter (Symbol key, object value)
+ {
+ if (key != null) {
+ top = key;
+ }
+ object top = null;
+ return top.Count;
+ }
+}
--- /dev/null
+// CS0844: A local variable `s' cannot be used before it is declared. Consider renaming the local variable when it hides the member `C.s'
+// Line: 10
+
+class C
+{
+ const string s = "s";
+
+ public void Test ()
+ {
+ s = "x";
+ string s = "a";
+ }
+}
--- /dev/null
+// CS0844: A local variable `s' cannot be used before it is declared. Consider renaming the local variable when it hides the member `C.s'
+// Line: 10
+
+class C
+{
+ string s {
+ set {}
+ }
+
+ public void Test ()
+ {
+ s = "x";
+ string s = "a";
+ }
+}
-// CS0844: A local variable `s' cannot be used before it is declared. Consider renaming the local variable when it hides the field `C.s'
+// CS0844: A local variable `s' cannot be used before it is declared. Consider renaming the local variable when it hides the member `C.s'
// Line: 10
class C
--- /dev/null
+// CS1001: Unexpected symbol `)', expecting identifier
+// Line: 8
+
+class C
+{
+ public static void Main ()
+ {
+ object o = (int) => null;
+ }
+}
--- /dev/null
+// CS1001: Unexpected symbol `)', expecting identifier
+// Line: 6
+
+class B<T>
+{
+ T Foo (T)
+ {
+ }
+}
--- /dev/null
+// CS1001: Unexpected symbol `)', expecting identifier
+// Line: 6
+
+class T {
+ // Change (args) to (string args) to fix it
+ public static int Main (args)
+ {
+ }
+}
--- /dev/null
+// CS1010 : Newline in constant
+// Line: 8
+
+class C
+{
+ static void Main ()
+ {
+ var a = 1'
+ int i = 2;
+ }
+}
\ No newline at end of file
+++ /dev/null
-// cs1001: Identifier expected
-// Line: 6
-
-class T {
- // Change (args) to (string args) to fix it
- public static int Main (args)
- {
- }
-}
-// cs1041.cs: Identifier expected: `int' is a keyword
-// Line: 5
+// CS1041: Identifier expected, `foreach' is a keyword
+// Line: 11
-public class Test {
- void T (int int) {}
+public partial class Log
+{
+ void Update (object[] h)
+ {
+ if (h == null)
+ return;
+
+ logstore.
+ foreach (var rev in h) {
+ }
+ }
}
--- /dev/null
+// CS1056: Unexpected character `$'
+// Line: 8
+
+public class C
+{
+ void Update ()
+ {
+ int a = $7;
+ }
+}
--- /dev/null
+// CS1510: A ref or out argument must be an assignable variable
+// Line: 9
+
+class C
+{
+ public static void Main ()
+ {
+ const char c = 'a';
+ Foo (ref c);
+ }
+
+ static void Foo(ref char i)
+ {
+ }
+}
--- /dev/null
+// CS1525: Unexpected symbol `:', expecting `,', `;', or `='
+// Line: 7
+
+class X {
+ public static void Main ()
+ {
+ int myarray:;
+ }
+}
--- /dev/null
+// CS1518: Unexpected symbol `ew'
+// Line: 6
+
+class TestClass
+{
+ object changes = n ew object ();
+
+ public int IndentLevel {
+ get {
+ return 0;
+ }
+ set {
+ }
+ }
+}
--- /dev/null
+// CS1525: Unexpected symbol `int'
+// Line: 5
+
+public class Test {
+ void T (int int) {}
+}
--- /dev/null
+// CS1525: Unexpected symbol `default:'
+// Line: 12
+
+class Program
+{
+ static void Main ()
+ {
+ int x = 0;
+ switch (x) {
+ case 2:
+ int a = 1;
+ case default:
+ return;
+ case 1:
+ int b = 1;
+ }
+ }
+}
--- /dev/null
+// CS1525: Unexpected symbol `}'
+// Line: 10
+
+class MainClass
+{
+ public static void Main (string[] args)
+ {
+ foreach (int i in myints)
+
+ }
+}
-// CS1525: Unexpected symbol `(', expecting `)', `,', `;', `[', or `='
+// CS1525: Unexpected symbol `(', expecting `,', `;', or `='
// Line: 13
class X {
--- /dev/null
+// CS1620: Argument `#1' is missing `out' modifier
+// Line: 13
+
+public class Programa
+{
+ static void Jajaja (out int mengano)
+ {
+ mengano = 3;
+ }
+
+ static void Run (out int mengano)
+ {
+ Jajaja (mengano);
+ }
+}
--- /dev/null
+// CS1674: `int': type used in a using statement must be implicitly convertible to `System.IDisposable'
+// Line: 10
+
+using System;
+
+class C
+{
+ void Method (IDisposable i)
+ {
+ using (int o = 1, b = 2)
+ {
+ }
+ }
+}
--- /dev/null
+// CS0826: The type of an implicitly typed array cannot be inferred from the initializer. Try specifying array type explicitly
+// Line: 8
+
+class C
+{
+ static void Main()
+ {
+ object o = 1;
+ dynamic d = 1;
+
+ var a = new[] {
+ new { X = o },
+ new { X = d }
+ };
+ }
+}
--- /dev/null
+// CS0103: The name `a1' does not exist in the current context
+// Line: 11
+
+using System.Linq;
+
+class C
+{
+ public static void Main ()
+ {
+ var e =
+ from a1 in "abcd"
+ select a1;
+
+ a1 = null;
+ }
+}
-// CS0412: The type parameter name `T' is the same as `method parameter'
+// CS0412: The type parameter name `T' is the same as local variable or parameter name
// Line: 8
using System;
interface I
{
T Foo<T>(IComparable T);
-}
\ No newline at end of file
+}
-// CS0412: The type parameter name `T' is the same as `local variable'
+// CS0412: The type parameter name `T' is the same as local variable or parameter name
// Line: 8
class C
{
int T;
}
-}
\ No newline at end of file
+}
-// CS0412: The type parameter name `T' is the same as `method parameter'
+// CS0412: The type parameter name `T' is the same as local variable or parameter name
// Line: 6
class C
public void Foo<T> (string T)
{
}
-}
\ No newline at end of file
+}
--- /dev/null
+// CS0458: The result of the expression is always `null' of type `E?'
+// Line: 15
+// Compiler options: -warnaserror -warn:2
+
+enum E
+{
+ V
+}
+
+public class C
+{
+ public static void Main ()
+ {
+ E e = E.V;
+ object o = null + e;
+ }
+}
+++ /dev/null
-// CS1001: Identifier expected
-// Line: 6
-
-class B<T>
-{
- T Foo (T)
- {
- }
-}
\ No newline at end of file
+++ /dev/null
-// CS1525: Unexpected symbol `)', expecting `identifier'
-// Line: 8
-
-class C
-{
- public static void Main ()
- {
- object o = (int) => null;
- }
-}
# csXXXX.cs NO ERROR : error test case doesn't report any error. An exception is considered
# as NO ERROR and CS5001 is automatically ignored.
-cs0158-5.cs
cs0162-7.cs NO ERROR
-cs1041.cs # new in GMCS; grammar issue
# Operators
cs0457-2.cs
cs0122-19.cs
cs0122-28.cs
cs0122-8.cs
+cs0168-2.cs
cs0177-8.cs NO ERROR
cs0419.cs
cs0520.cs
-cs0844-2.cs
-cs0844.cs
cs1574-2.cs
cs1574-3.cs NO ERROR
cs1574-6.cs NO ERROR
# csXXXX.cs NO ERROR : error test case doesn't report any error. An exception is considered
# as NO ERROR and CS5001 is automatically ignored.
-cs0158-5.cs
cs0162-7.cs NO ERROR
-cs1041.cs # new in GMCS; grammar issue
# Operators
cs0457-2.cs
cs0122-19.cs
cs0122-28.cs
cs0122-8.cs
+cs0168-2.cs
cs0177-8.cs NO ERROR
cs0419.cs
cs0520.cs
-cs0844-2.cs
-cs0844.cs
cs1574-2.cs
cs1574-3.cs NO ERROR
cs1574-6.cs NO ERROR
}
//
- // Creates a link between block and the anonymous method storey
+ // Creates a link between hoisted variable block and the anonymous method storey
//
// An anonymous method can reference variables from any outer block, but they are
// hoisted in their own ExplicitBlock. When more than one block is referenced we
used_parent_storeys.Add (new StoreyFieldPair (storey, f));
}
- public void CaptureLocalVariable (ResolveContext ec, LocalInfo local_info)
+ public void CaptureLocalVariable (ResolveContext ec, LocalVariable local_info)
{
ec.CurrentBlock.Explicit.HasCapturedVariable = true;
if (ec.CurrentBlock.Explicit != local_info.Block.Explicit)
//
// Initializes all hoisted variables
//
- public void EmitStoreyInstantiation (EmitContext ec)
+ public void EmitStoreyInstantiation (EmitContext ec, ExplicitBlock block)
{
// There can be only one instance variable for each storey type
if (Instance != null)
var storey_type_expr = CreateStoreyTypeExpression (ec);
ResolveContext rc = new ResolveContext (ec.MemberContext);
+ rc.CurrentBlock = block;
Expression e = new New (storey_type_expr, null, Location).Resolve (rc);
e.Emit (ec);
Instance = new LocalTemporary (storey_type_expr.Type);
Instance.Store (ec);
- EmitHoistedFieldsInitialization (ec);
+ EmitHoistedFieldsInitialization (rc, ec);
SymbolWriter.DefineScopeVariable (ID, Instance.Builder);
SymbolWriter.CloseCompilerGeneratedBlock (ec);
}
- void EmitHoistedFieldsInitialization (EmitContext ec)
+ void EmitHoistedFieldsInitialization (ResolveContext rc, EmitContext ec)
{
//
// Initialize all storey reference fields by using local or hoisted variables
//
if (used_parent_storeys != null) {
- var rc = new ResolveContext (ec.MemberContext);
-
foreach (StoreyFieldPair sf in used_parent_storeys) {
//
// Get instance expression of storey field
//
if (OriginalSourceBlock.Explicit.HasCapturedThis && !(Parent is AnonymousMethodStorey)) {
AddCapturedThisField (ec);
- OriginalSourceBlock.AddScopeStatement (new ThisInitializer (hoisted_this));
+ rc.CurrentBlock.AddScopeStatement (new ThisInitializer (hoisted_this));
}
//
return f_ind;
}
- protected virtual string GetVariableMangledName (LocalInfo local_info)
+ protected virtual string GetVariableMangledName (LocalVariable local_info)
{
//
// No need to mangle anonymous method hoisted variables cause they
//
// Creates field access expression for hoisted variable
//
- protected FieldExpr GetFieldExpression (EmitContext ec)
+ protected virtual FieldExpr GetFieldExpression (EmitContext ec)
{
if (ec.CurrentAnonymousMethod == null || ec.CurrentAnonymousMethod.Storey == null) {
if (cached_outer_access != null)
{
readonly string name;
- public HoistedLocalVariable (AnonymousMethodStorey scope, LocalInfo local, string name)
- : base (scope, name, local.VariableType)
+ public HoistedLocalVariable (AnonymousMethodStorey scope, LocalVariable local, string name)
+ : base (scope, name, local.Type)
{
this.name = local.Name;
}
}
Dictionary<TypeSpec, Expression> compatibles;
- public ToplevelBlock Block;
+ public ParametersBlock Block;
public AnonymousMethodExpression (Location loc)
{
return null;
}
fixedpars[i] = new Parameter (
- null, null,
+ new TypeExpression (delegate_parameters.Types [i], loc), null,
delegate_parameters.FixedParameters [i].ModFlags, null, loc);
}
if (p == null)
return null;
- ToplevelBlock b = ec.IsInProbingMode ? (ToplevelBlock) Block.PerformClone () : Block;
+ ParametersBlock b = ec.IsInProbingMode ? (ParametersBlock) Block.PerformClone () : Block;
return CompatibleMethodFactory (return_type, delegate_type, p, b);
}
- protected virtual AnonymousMethodBody CompatibleMethodFactory (TypeSpec return_type, TypeSpec delegate_type, ParametersCompiled p, ToplevelBlock b)
+ protected virtual AnonymousMethodBody CompatibleMethodFactory (TypeSpec return_type, TypeSpec delegate_type, ParametersCompiled p, ParametersBlock b)
{
return new AnonymousMethodBody (p, b, return_type, delegate_type, loc);
}
{
AnonymousMethodExpression target = (AnonymousMethodExpression) t;
- target.Block = (ToplevelBlock) clonectx.LookupBlock (Block);
+ target.Block = (ParametersBlock) clonectx.LookupBlock (Block);
}
}
this.RealName = real_name;
Parent.PartialContainer.AddMethod (this);
- Block = am.Block;
+ Block = new ToplevelBlock (am.block, parameters);
}
public override EmitContext CreateEmitContext (ILGenerator ig)
}
}
- readonly ToplevelBlock block;
+ protected ParametersBlock block;
public TypeSpec ReturnType;
object return_label;
- protected AnonymousExpression (ToplevelBlock block, TypeSpec return_type, Location loc)
+ protected AnonymousExpression (ParametersBlock block, TypeSpec return_type, Location loc)
{
this.ReturnType = return_type;
this.block = block;
return this;
// TODO: Implement clone
- BlockContext aec = new BlockContext (ec.MemberContext, Block, ReturnType);
+ BlockContext aec = new BlockContext (ec, block, ReturnType);
aec.CurrentAnonymousMethod = ae;
ResolveContext.FlagsHandle? aec_dispose = null;
if (ec.HasSet (ResolveContext.Options.FieldInitializerScope))
flags |= ResolveContext.Options.FieldInitializerScope;
- if (ec.IsUnsafe)
- flags |= ResolveContext.Options.UnsafeScope;
-
- if (ec.HasSet (ResolveContext.Options.CheckedScope))
- flags |= ResolveContext.Options.CheckedScope;
-
if (ec.HasSet (ResolveContext.Options.ExpressionTreeConversion))
flags |= ResolveContext.Options.ExpressionTreeConversion;
var errors = ec.Report.Errors;
- bool res = Block.Resolve (ec.CurrentBranching, aec, Block.Parameters, null);
+ bool res = Block.Resolve (ec.CurrentBranching, aec, null);
if (aec.HasReturnLabel)
return_label = aec.ReturnLabel;
public void SetHasThisAccess ()
{
- Block.HasCapturedThis = true;
- ExplicitBlock b = Block.Parent.Explicit;
-
- while (b != null) {
+ ExplicitBlock b = block;
+ do {
if (b.HasCapturedThis)
return;
b.HasCapturedThis = true;
b = b.Parent == null ? null : b.Parent.Explicit;
- }
+ } while (b != null);
}
//
// The block that makes up the body for the anonymous method
//
- public ToplevelBlock Block {
+ public ParametersBlock Block {
get {
return block;
}
static int unique_id;
public AnonymousMethodBody (ParametersCompiled parameters,
- ToplevelBlock block, TypeSpec return_type, TypeSpec delegate_type,
+ ParametersBlock block, TypeSpec return_type, TypeSpec delegate_type,
Location loc)
: base (block, return_type, loc)
{
//
public class AnonymousTypeClass : CompilerGeneratedClass
{
- sealed class AnonymousParameters : ParametersCompiled
+ // TODO: Merge with AnonymousTypeParameter
+ public class GeneratedParameter : Parameter
{
- public AnonymousParameters (CompilerContext ctx, params Parameter[] parameters)
- : base (ctx, parameters)
- {
- }
-
- protected override void ErrorDuplicateName (Parameter p, Report Report)
+ public GeneratedParameter (FullNamedExpression type, AnonymousTypeParameter p)
+ : base (type, p.Name, Modifier.NONE, null, p.Location)
{
- Report.Error (833, p.Location, "`{0}': An anonymous type cannot have multiple properties with the same name",
- p.Name);
}
}
{
string name = ClassNamePrefix + types_counter++;
- SimpleName [] t_args = new SimpleName [parameters.Count];
- TypeParameterName [] t_params = new TypeParameterName [parameters.Count];
- Parameter [] ctor_params = new Parameter [parameters.Count];
- for (int i = 0; i < parameters.Count; ++i) {
- AnonymousTypeParameter p = (AnonymousTypeParameter) parameters [i];
+ ParametersCompiled all_parameters;
+ TypeParameterName[] t_params;
+ SimpleName[] t_args;
+
+ if (parameters.Count == 0) {
+ all_parameters = ParametersCompiled.EmptyReadOnlyParameters;
+ t_params = new TypeParameterName[0];
+ t_args = null;
+ } else {
+ t_args = new SimpleName[parameters.Count];
+ t_params = new TypeParameterName[parameters.Count];
+ Parameter[] ctor_params = new Parameter[parameters.Count];
+ for (int i = 0; i < parameters.Count; ++i) {
+ AnonymousTypeParameter p = parameters[i];
+
+ t_args[i] = new SimpleName ("<" + p.Name + ">__T", p.Location);
+ t_params[i] = new TypeParameterName (t_args[i].Name, null, p.Location);
+ ctor_params[i] = new GeneratedParameter (t_args[i], p);
+ }
- t_args [i] = new SimpleName ("<" + p.Name + ">__T", p.Location);
- t_params [i] = new TypeParameterName (t_args [i].Name, null, p.Location);
- ctor_params [i] = new Parameter (t_args [i], p.Name, 0, null, p.Location);
+ all_parameters = new ParametersCompiled (ctor_params);
}
//
a_type.SetParameterInfo (null);
Constructor c = new Constructor (a_type, name, Modifiers.PUBLIC | Modifiers.DEBUGGER_HIDDEN,
- null, new AnonymousParameters (ctx, ctor_params), null, loc);
+ null, all_parameters, null, loc);
c.Block = new ToplevelBlock (ctx, c.ParameterInfo, loc);
//
//
bool error = false;
for (int i = 0; i < parameters.Count; ++i) {
- AnonymousTypeParameter p = (AnonymousTypeParameter) parameters [i];
+ AnonymousTypeParameter p = parameters [i];
Field f = new Field (a_type, t_args [i], Modifiers.PRIVATE | Modifiers.READONLY,
new MemberName ("<" + p.Name + ">", p.Location), null);
c.Block.AddStatement (new StatementExpression (
new SimpleAssign (new MemberAccess (new This (p.Location), f.Name),
- c.Block.GetParameterReference (p.Name, p.Location))));
+ c.Block.GetParameterReference (i, p.Location))));
ToplevelBlock get_block = new ToplevelBlock (ctx, p.Location);
get_block.AddStatement (new Return (
Location loc = Location;
+ var equals_parameters = ParametersCompiled.CreateFullyResolved (
+ new Parameter (new TypeExpression (TypeManager.object_type, loc), "obj", 0, null, loc), TypeManager.object_type);
+
Method equals = new Method (this, null, new TypeExpression (TypeManager.bool_type, loc),
Modifiers.PUBLIC | Modifiers.OVERRIDE | Modifiers.DEBUGGER_HIDDEN, new MemberName ("Equals", loc),
- Mono.CSharp.ParametersCompiled.CreateFullyResolved (new Parameter (null, "obj", 0, null, loc), TypeManager.object_type), null);
+ equals_parameters, null);
+
+ equals_parameters[0].Resolve (equals, 0);
Method tostring = new Method (this, null, new TypeExpression (TypeManager.string_type, loc),
Modifiers.PUBLIC | Modifiers.OVERRIDE | Modifiers.DEBUGGER_HIDDEN, new MemberName ("ToString", loc),
Mono.CSharp.ParametersCompiled.EmptyReadOnlyParameters, null);
ToplevelBlock equals_block = new ToplevelBlock (Compiler, equals.ParameterInfo, loc);
+
TypeExpr current_type;
if (type_params != null) {
var targs = new TypeArguments ();
current_type = new TypeExpression (Definition, loc);
}
- equals_block.AddVariable (current_type, "other", loc);
- LocalVariableReference other_variable = new LocalVariableReference (equals_block, "other", loc);
+ var li_other = LocalVariable.CreateCompilerGenerated (CurrentType, equals_block, loc);
+ equals_block.AddStatement (new BlockVariableDeclaration (new TypeExpression (li_other.Type, loc), li_other));
+ var other_variable = new LocalVariableReference (li_other, loc);
MemberAccess system_collections_generic = new MemberAccess (new MemberAccess (
new QualifiedAliasMember ("global", "System", loc), "Collections", loc), "Generic", loc);
//
// Equals (object obj) override
//
- LocalVariableReference other_variable_assign = new LocalVariableReference (equals_block, "other", loc);
+ var other_variable_assign = new TemporaryVariableReference (li_other, loc);
equals_block.AddStatement (new StatementExpression (
new SimpleAssign (other_variable_assign,
- new As (equals_block.GetParameterReference ("obj", loc),
+ new As (equals_block.GetParameterReference (0, loc),
current_type, loc), loc)));
Expression equals_test = new Binary (Binary.Operator.Inequality, other_variable, new NullLiteral (loc), loc);
// hash += hash << 5;
ToplevelBlock hashcode_top = new ToplevelBlock (Compiler, loc);
- Block hashcode_block = new Block (hashcode_top);
+ Block hashcode_block = new Block (hashcode_top, loc, loc);
hashcode_top.AddStatement (new Unchecked (hashcode_block, loc));
- hashcode_block.AddVariable (new TypeExpression (TypeManager.int32_type, loc), "hash", loc);
- LocalVariableReference hash_variable = new LocalVariableReference (hashcode_block, "hash", loc);
- LocalVariableReference hash_variable_assign = new LocalVariableReference (hashcode_block, "hash", loc);
+ var li_hash = LocalVariable.CreateCompilerGenerated (TypeManager.int32_type, hashcode_top, loc);
+ hashcode_block.AddStatement (new BlockVariableDeclaration (new TypeExpression (li_hash.Type, loc), li_hash));
+ LocalVariableReference hash_variable_assign = new LocalVariableReference (li_hash, loc);
hashcode_block.AddStatement (new StatementExpression (
new SimpleAssign (hash_variable_assign, rs_hashcode)));
+ var hash_variable = new LocalVariableReference (li_hash, loc);
hashcode_block.AddStatement (new StatementExpression (
new CompoundAssign (Binary.Operator.Addition, hash_variable,
new Binary (Binary.Operator.LeftShift, hash_variable, new IntConstant (13, loc), loc), loc)));
const string info_flags_enum = "CSharpArgumentInfoFlags";
Expression info_flags = new IntLiteral (0, loc);
- var constant = a.Expr as Constant;
- if (constant != null && constant.IsLiteral) {
+ if (a.Expr is Constant) {
info_flags = new Binary (Binary.Operator.BitwiseOr, info_flags,
new MemberAccess (new MemberAccess (binder, info_flags_enum, loc), "Constant", loc), loc);
} else if (a.ArgType == Argument.AType.Ref) {
var arg_type = a.Expr.Type;
- if (arg_type != InternalType.Dynamic) {
+ if (arg_type != InternalType.Dynamic && arg_type != InternalType.Null) {
MethodGroupExpr mg = a.Expr as MethodGroupExpr;
if (mg != null) {
rc.Report.Error (1976, a.Expr.Location,
}
public Expression Source {
- get { return source; }
+ get {
+ return source;
+ }
}
protected override Expression DoResolve (ResolveContext ec)
}
}
+ //
+ // Compiler generated assign
+ //
+ class CompilerAssign : Assign
+ {
+ public CompilerAssign (Expression target, Expression source, Location loc)
+ : base (target, source, loc)
+ {
+ }
+
+ public void UpdateSource (Expression source)
+ {
+ base.source = source;
+ }
+ }
+
//
// Implements fields and events class initializers
//
public bool HasSecurityAttribute {
get {
- PredefinedAttribute pa = PredefinedAttributes.Get.Security;
+ PredefinedAttribute pa = context.Compiler.PredefinedAttributes.Security;
return pa.IsDefined && TypeSpec.IsBaseClass (type, pa.Type, false);
}
}
void ApplyModuleCharSet (ResolveContext rc)
{
- if (Type != PredefinedAttributes.Get.DllImport)
+ if (Type != context.Compiler.PredefinedAttributes.DllImport)
return;
if (!RootContext.ToplevelTypes.HasDefaultCharSet)
a.Resolve (ec);
- Expression member = Expression.MemberLookup (ec, ec.CurrentType, Type, name, 0, false, loc);
+ Expression member = Expression.MemberLookup (ec, ec.CurrentType, Type, name, 0, MemberLookupRestrictions.ExactArity, loc);
if (member == null) {
- member = Expression.MemberLookup (null, ec.CurrentType, Type, name, 0, false, loc);
+ member = Expression.MemberLookup (null, ec.CurrentType, Type, name, 0, MemberLookupRestrictions.ExactArity, loc);
if (member != null) {
// TODO: ec.Report.SymbolRelatedToPreviousError (member);
public string GetValidTargets ()
{
StringBuilder sb = new StringBuilder ();
- AttributeTargets targets = Type.GetAttributeUsage (PredefinedAttributes.Get.AttributeUsage).ValidOn;
+ AttributeTargets targets = Type.GetAttributeUsage (context.Compiler.PredefinedAttributes.AttributeUsage).ValidOn;
if ((targets & AttributeTargets.Assembly) != 0)
sb.Append ("assembly, ");
public bool IsInternalMethodImplAttribute {
get {
- if (Type != PredefinedAttributes.Get.MethodImpl)
+ if (Type != context.Compiler.PredefinedAttributes.MethodImpl)
return false;
MethodImplOptions options;
if (ctor == null)
return;
- AttributeUsageAttribute usage_attr = Type.GetAttributeUsage (PredefinedAttributes.Get.AttributeUsage);
+ var predefined = context.Compiler.PredefinedAttributes;
+
+ AttributeUsageAttribute usage_attr = Type.GetAttributeUsage (predefined.AttributeUsage);
if ((usage_attr.ValidOn & Target) == 0) {
Report.Error (592, Location, "The attribute `{0}' is not valid on this declaration type. " +
"It is valid on `{1}' declarations only",
return;
}
- var predefined = PredefinedAttributes.Get;
-
AttributeEncoder encoder = new AttributeEncoder (false);
if (PosArguments != null) {
public static void VerifyModulesClsCompliance (CompilerContext ctx)
{
- Module[] modules = GlobalRootNamespace.Instance.Modules;
+ Module[] modules = ctx.GlobalRootNamespace.Modules;
if (modules == null)
return;
public readonly PredefinedAttribute StructLayout;
public readonly PredefinedAttribute FieldOffset;
- public static PredefinedAttributes Get = new PredefinedAttributes ();
-
- private PredefinedAttributes ()
+ public PredefinedAttributes ()
{
ParamArray = new PredefinedAttribute ("System", "ParamArrayAttribute");
Out = new PredefinedAttribute ("System.Runtime.InteropServices", "OutAttribute");
((PredefinedAttribute) fi.GetValue (this)).Initialize (ctx, true);
}
}
-
- public static void Reset ()
- {
- Get = new PredefinedAttributes ();
- }
}
public class PredefinedAttribute
List<TypeContainer> partial_parts;
+ public int DynamicSitesCounter;
+
/// <remarks>
/// The pending methods that need to be implemented
// (interfaces or abstract methods)
if (OptAttributes == null)
return false;
- return OptAttributes.Contains (PredefinedAttributes.Get.ComImport);
+ return OptAttributes.Contains (Compiler.PredefinedAttributes.ComImport);
}
}
if (OptAttributes == null)
return null;
- Attribute a = OptAttributes.Search (PredefinedAttributes.Get.CoClass);
+ Attribute a = OptAttributes.Search (Compiler.PredefinedAttributes.CoClass);
if (a == null)
return null;
int type_size = Kind == MemberKind.Struct && first_nonstatic_field == null ? 1 : 0;
if (IsTopLevel) {
- if (GlobalRootNamespace.Instance.IsNamespace (Name)) {
+ if (Compiler.GlobalRootNamespace.IsNamespace (Name)) {
Report.Error (519, Location, "`{0}' clashes with a predefined namespace", Name);
return false;
}
var base_param = method.Parameters.FixedParameters[i];
base_parameters[i] = new Parameter (new TypeExpression (method.Parameters.Types[i], Location),
base_param.Name, base_param.ModFlags, null, Location);
+ base_parameters[i].Resolve (this, i);
}
}
if (!seen_normal_indexers)
return;
- PredefinedAttribute pa = PredefinedAttributes.Get.DefaultMember;
+ PredefinedAttribute pa = Compiler.PredefinedAttributes.DefaultMember;
if (pa.Constructor == null &&
!pa.ResolveConstructor (Location, TypeManager.string_type))
return;
}
if ((ModFlags & Modifiers.COMPILER_GENERATED) != 0 && !Parent.IsCompilerGenerated)
- PredefinedAttributes.Get.CompilerGenerated.EmitAttribute (TypeBuilder);
+ Compiler.PredefinedAttributes.CompilerGenerated.EmitAttribute (TypeBuilder);
base.Emit ();
}
base.Emit ();
if ((ModFlags & Modifiers.METHOD_EXTENSION) != 0)
- PredefinedAttributes.Get.Extension.EmitAttribute (TypeBuilder);
+ Compiler.PredefinedAttributes.Extension.EmitAttribute (TypeBuilder);
var trans_flags = TypeManager.HasDynamicTypeUsed (base_type);
if (trans_flags != null) {
- var pa = PredefinedAttributes.Get.DynamicTransform;
+ var pa = Compiler.PredefinedAttributes.DynamicTransform;
if (pa.Constructor != null || pa.ResolveConstructor (Location, ArrayContainer.MakeType (TypeManager.bool_type))) {
TypeBuilder.SetCustomAttribute (new CustomAttributeBuilder (pa.Constructor, new object[] { trans_flags }));
}
if (OptAttributes == null)
return null;
- Attribute[] attrs = OptAttributes.SearchMulti (PredefinedAttributes.Get.Conditional);
+ Attribute[] attrs = OptAttributes.SearchMulti (Compiler.PredefinedAttributes.Conditional);
if (attrs == null)
return null;
ObsoleteAttribute oa = base_member.GetAttributeObsolete ();
if (oa != null) {
- if (OptAttributes == null || !OptAttributes.Contains (PredefinedAttributes.Get.Obsolete)) {
+ if (OptAttributes == null || !OptAttributes.Contains (Compiler.PredefinedAttributes.Obsolete)) {
Report.SymbolRelatedToPreviousError (base_member);
Report.Warning (672, 1, Location, "Member `{0}' overrides obsolete member `{1}'. Add the Obsolete attribute to `{0}'",
GetSignatureForError (), TypeManager.GetFullNameSignature (base_member));
}
} else {
- if (OptAttributes != null && OptAttributes.Contains (PredefinedAttributes.Get.Obsolete)) {
+ if (OptAttributes != null && OptAttributes.Contains (Compiler.PredefinedAttributes.Obsolete)) {
Report.SymbolRelatedToPreviousError (base_member);
Report.Warning (809, 1, Location, "Obsolete member `{0}' overrides non-obsolete member `{1}'",
GetSignatureForError (), TypeManager.GetFullNameSignature (base_member));
public class CodeGen {
static AppDomain current_domain;
+ // Breaks dynamic and repl
public static AssemblyClass Assembly;
static CodeGen ()
if (an.KeyPair != null) {
// If we are going to strong name our assembly make
// sure all its refs are strong named
- foreach (Assembly a in GlobalRootNamespace.Instance.Assemblies) {
+ foreach (Assembly a in ctx.GlobalRootNamespace.Assemblies) {
AssemblyName ref_name = a.GetName ();
byte [] b = ref_name.GetPublicKeyToken ();
if (b == null || b.Length == 0) {
Arguments named = new Arguments (1);
named.Add (new NamedArgument ("SkipVerification", loc, new BoolLiteral (true, loc)));
- GlobalAttribute g = new GlobalAttribute (new NamespaceEntry (null, null, null), "assembly",
+ GlobalAttribute g = new GlobalAttribute (new NamespaceEntry (Compiler, null, null, null), "assembly",
new MemberAccess (system_security_permissions, "SecurityPermissionAttribute"),
new Arguments[] { pos, named }, loc, false);
g.AttachTo (this, this);
if (!OptAttributes.CheckTargets())
return;
- ClsCompliantAttribute = ResolveAttribute (PredefinedAttributes.Get.CLSCompliant);
+ ClsCompliantAttribute = ResolveAttribute (Compiler.PredefinedAttributes.CLSCompliant);
if (ClsCompliantAttribute != null) {
is_cls_compliant = ClsCompliantAttribute.GetClsCompliantAttributeValue ();
}
- Attribute a = ResolveAttribute (PredefinedAttributes.Get.RuntimeCompatibility);
+ Attribute a = ResolveAttribute (Compiler.PredefinedAttributes.RuntimeCompatibility);
if (a != null) {
var val = a.GetPropertyValue ("WrapNonExceptionThrows") as BoolConstant;
if (val != null)
try {
var fi = typeof (AssemblyBuilder).GetField ("culture", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.SetField);
- fi.SetValue (CodeGen.Assembly.Builder, value == "neutral" ? "" : value);
+ fi.SetValue (Builder, value == "neutral" ? "" : value);
} catch {
Report.RuntimeMissingSupport (a.Location, "AssemblyCultureAttribute setting");
}
try {
var fi = typeof (AssemblyBuilder).GetField ("version", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.SetField);
- fi.SetValue (CodeGen.Assembly.Builder, vinfo);
+ fi.SetValue (Builder, vinfo);
} catch {
Report.RuntimeMissingSupport (a.Location, "AssemblyVersionAttribute setting");
}
try {
var fi = typeof (AssemblyBuilder).GetField ("algid", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.SetField);
- fi.SetValue (CodeGen.Assembly.Builder, alg);
+ fi.SetValue (Builder, alg);
} catch {
Report.RuntimeMissingSupport (a.Location, "AssemblyAlgorithmIdAttribute setting");
}
flags |= ((uint) cdata[pos + 3]) << 24;
// Ignore set PublicKey flag if assembly is not strongnamed
- if ((flags & (uint) AssemblyNameFlags.PublicKey) != 0 && (CodeGen.Assembly.Builder.GetName ().KeyPair == null))
+ if ((flags & (uint) AssemblyNameFlags.PublicKey) != 0 && (Builder.GetName ().KeyPair == null))
flags &= ~(uint)AssemblyNameFlags.PublicKey;
try {
var fi = typeof (AssemblyBuilder).GetField ("flags", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.SetField);
- fi.SetValue (CodeGen.Assembly.Builder, flags);
+ fi.SetValue (Builder, flags);
} catch {
Report.RuntimeMissingSupport (a.Location, "AssemblyFlagsAttribute setting");
}
base.Emit (tc);
if (has_extension_method)
- PredefinedAttributes.Get.Extension.EmitAttribute (Builder);
+ Compiler.PredefinedAttributes.Extension.EmitAttribute (Builder);
- // FIXME: Does this belong inside SRE.AssemblyBuilder instead?
- PredefinedAttribute pa = PredefinedAttributes.Get.RuntimeCompatibility;
+ PredefinedAttribute pa = tc.Compiler.PredefinedAttributes.RuntimeCompatibility;
if (pa.IsDefined && (OptAttributes == null || !OptAttributes.Contains (pa))) {
var ci = TypeManager.GetPredefinedConstructor (pa.Type, Location.Null, TypeSpec.EmptyTypes);
PropertyInfo [] pis = new PropertyInfo [1];
+
pis [0] = TypeManager.GetPredefinedProperty (pa.Type,
"WrapNonExceptionThrows", Location.Null, TypeManager.bool_type).MetaInfo;
object [] pargs = new object [1];
{
var c = ((ConstSpec) spec).Value as Constant;
if (c.Type == TypeManager.decimal_type) {
- FieldBuilder.SetCustomAttribute (CreateDecimalConstantAttribute (c));
+ FieldBuilder.SetCustomAttribute (CreateDecimalConstantAttribute (c, Compiler.PredefinedAttributes));
} else {
FieldBuilder.SetConstant (c.GetTypedValue ());
}
base.Emit ();
}
- public static CustomAttributeBuilder CreateDecimalConstantAttribute (Constant c)
+ public static CustomAttributeBuilder CreateDecimalConstantAttribute (Constant c, PredefinedAttributes pa)
{
- PredefinedAttribute pa = PredefinedAttributes.Get.DecimalConstant;
- if (pa.Constructor == null &&
- !pa.ResolveConstructor (c.Location, TypeManager.byte_type, TypeManager.byte_type,
+ PredefinedAttribute attr = pa.DecimalConstant;
+ if (attr.Constructor == null &&
+ !attr.ResolveConstructor (c.Location, TypeManager.byte_type, TypeManager.byte_type,
TypeManager.uint32_type, TypeManager.uint32_type, TypeManager.uint32_type))
return null;
(uint) bits [2], (uint) bits [1], (uint) bits [0]
};
- return new CustomAttributeBuilder (pa.Constructor, args);
+ return new CustomAttributeBuilder (attr.Constructor, args);
}
public static void Error_InvalidConstantType (TypeSpec t, Location loc, Report Report)
/// </summary>
public bool HasReturnLabel;
+ public int FlowOffset;
+
public BlockContext (IMemberContext mc, ExplicitBlock block, TypeSpec returnType)
: base (mc)
{
CurrentBlock = block;
}
+ public BlockContext (ResolveContext rc, ExplicitBlock block, TypeSpec returnType)
+ : this (rc.MemberContext, block, returnType)
+ {
+ if (rc.IsUnsafe)
+ flags |= ResolveContext.Options.UnsafeScope;
+
+ if (rc.HasSet (ResolveContext.Options.CheckedScope))
+ flags |= ResolveContext.Options.CheckedScope;
+ }
+
public override FlowBranching CurrentBranching {
get { return current_flow_branching; }
}
return branching;
}
- public FlowBranchingIterator StartFlowBranching (Iterator iterator)
+ public FlowBranchingIterator StartFlowBranching (Iterator iterator, FlowBranching parent)
{
- FlowBranchingIterator branching = new FlowBranchingIterator (CurrentBranching, iterator);
+ FlowBranchingIterator branching = new FlowBranchingIterator (parent, iterator);
current_flow_branching = branching;
return branching;
}
- public FlowBranchingToplevel StartFlowBranching (ToplevelBlock stmt, FlowBranching parent)
+ public FlowBranchingToplevel StartFlowBranching (ParametersBlock stmt, FlowBranching parent)
{
FlowBranchingToplevel branching = new FlowBranchingToplevel (parent, stmt);
current_flow_branching = branching;
ConstructorScope = 1 << 11,
+ UsingInitializerScope = 1 << 12,
+
/// <summary>
/// Whether control flow analysis is enabled
/// </summary>
}
}
- Options flags;
+ protected Options flags;
//
// Whether we are inside an anonymous method.
return my_this;
}
- public bool MustCaptureVariable (LocalInfo local)
+ public bool MustCaptureVariable (INamedBlockVariable local)
{
if (CurrentAnonymousMethod == null)
return false;
if (CurrentAnonymousMethod.IsIterator)
return true;
- return local.Block.Toplevel != CurrentBlock.Toplevel;
+ return local.Block.ParametersBlock != CurrentBlock.ParametersBlock.Original;
}
public bool HasSet (Options options)
public class CloneContext
{
Dictionary<Block, Block> block_map = new Dictionary<Block, Block> ();
- Dictionary<LocalInfo, LocalInfo> variable_map;
public void AddBlockMap (Block from, Block to)
{
return mapped_to;
}
-
- public void AddVariableMap (LocalInfo from, LocalInfo to)
- {
- if (variable_map == null)
- variable_map = new Dictionary<LocalInfo, LocalInfo> ();
- else if (variable_map.ContainsKey (from))
- return;
-
- variable_map[from] = to;
- }
-
- public LocalInfo LookupVariable (LocalInfo from)
- {
- try {
- return variable_map[from];
- } catch (KeyNotFoundException) {
- throw new Exception ("LookupVariable: looking up a variable that has not been registered yet");
- }
- }
}
//
{
readonly Report report;
readonly ReflectionMetaImporter meta_importer;
+ readonly PredefinedAttributes attributes;
+ readonly GlobalRootNamespace root;
public CompilerContext (ReflectionMetaImporter metaImporter, Report report)
{
this.meta_importer = metaImporter;
this.report = report;
+
+ this.attributes = new PredefinedAttributes ();
+ this.root = new GlobalRootNamespace ();
+ }
+
+ public GlobalRootNamespace GlobalRootNamespace {
+ get {
+ return root;
+ }
}
public bool IsRuntimeBinder { get; set; }
}
}
+ public PredefinedAttributes PredefinedAttributes {
+ get {
+ return attributes;
+ }
+ }
+
public Report Report {
get {
return report;
}
}
-
- //public PredefinedAttributes PredefinedAttributes {
- // get { throw new NotImplementedException (); }
- //}
}
//
// From T to any interface implemented by C
//
var base_type = expr_type.GetEffectiveBase ();
- if (base_type == target_type || TypeSpec.IsBaseClass (base_type, target_type, false) || base_type.ImplementsInterface (target_type)) {
+ if (base_type == target_type || TypeSpec.IsBaseClass (base_type, target_type, false) || base_type.ImplementsInterface (target_type, true)) {
if (expr_type.IsReferenceType)
return new ClassCast (expr, target_type);
// from any class-type S to any interface-type T.
if (target_type.IsInterface) {
- if (expr_type.ImplementsInterface (target_type)){
+ if (expr_type.ImplementsInterface (target_type, true)){
return !TypeManager.IsValueType (expr_type);
}
}
return false;
}
+ if (TypeSpecComparer.IsEqual (expr_type, target_type))
+ return true;
+
if (TypeSpecComparer.Variant.IsEqual (expr_type, target_type))
return true;
// from any interface type S to interface-type T.
if (expr_type.IsInterface && target_type.IsInterface) {
- return expr_type.ImplementsInterface (target_type);
+ return expr_type.ImplementsInterface (target_type, true);
}
// from any delegate type to System.Delegate
// from any class-type S to any interface-type T.
if (target_type.IsInterface) {
- if (expr_type.ImplementsInterface (target_type) &&
+ if (expr_type.ImplementsInterface (target_type, true) &&
(TypeManager.IsGenericParameter (expr_type) || TypeManager.IsValueType (expr_type))) {
return expr == null ? EmptyExpression.Null : new BoxedCast (expr, target_type);
}
// conversion exists only mode
if (ec == null) {
- if (expr_type == t_el)
+ if (TypeSpecComparer.IsEqual (expr_type, t_el))
return EmptyExpression.Null;
if (expr is Constant)
unwrap = expr;
Expression conv = unwrap;
- if (expr_type != t_el) {
+ if (!TypeSpecComparer.IsEqual (expr_type, t_el)) {
if (conv is Constant)
conv = ((Constant)conv).ConvertImplicitly (ec, t_el);
else
// If `expr_type' implements `target_type' (which is an iface)
// see TryImplicitIntConversion
//
- if (target_type.IsInterface && expr_type.ImplementsInterface (target_type))
+ if (target_type.IsInterface && expr_type.ImplementsInterface (target_type, true))
return true;
if (target_type == TypeManager.void_ptr_type && expr_type.IsPointer)
if (expr_type == InternalType.Arglist)
return target_type == TypeManager.arg_iterator_type;
+ if (TypeSpecComparer.IsEqual (expr_type, target_type))
+ return true;
+
return false;
}
return best;
}
- /// <summary>
- /// Finds the most specific source Sx according to the rules of the spec (13.4.4)
- /// by making use of FindMostEncomp* methods. Applies the correct rules separately
- /// for explicit and implicit conversion operators.
- /// </summary>
- static TypeSpec FindMostSpecificSource (IList<MethodSpec> list,
- Expression source, bool apply_explicit_conv_rules)
+ //
+ // Finds the most specific source Sx according to the rules of the spec (13.4.4)
+ // by making use of FindMostEncomp* methods. Applies the correct rules separately
+ // for explicit and implicit conversion operators.
+ //
+ static TypeSpec FindMostSpecificSource (List<MethodSpec> list, TypeSpec sourceType, Expression source, bool apply_explicit_conv_rules)
{
- var src_types_set = new List<TypeSpec> ();
+ var src_types_set = new TypeSpec [list.Count];
//
- // If any operator converts from S then Sx = S
+ // Try exact match first, if any operator converts from S then Sx = S
//
- TypeSpec source_type = source.Type;
- foreach (var mb in list){
- TypeSpec param_type = mb.Parameters.Types [0];
+ for (int i = 0; i < src_types_set.Length; ++i) {
+ TypeSpec param_type = list [i].Parameters.Types [0];
- if (param_type == source_type)
+ if (param_type == sourceType)
return param_type;
- src_types_set.Add (param_type);
+ src_types_set [i] = param_type;
}
//
List<MethodSpec> candidates = null;
//
- // If S or T are nullable types, S0 and T0 are their underlying types
- // otherwise S0 and T0 are equal to S and T respectively.
+ // If S or T are nullable types, source_type and target_type are their underlying types
+ // otherwise source_type and target_type are equal to S and T respectively.
//
TypeSpec source_type = source.Type;
TypeSpec target_type = target;
- Expression unwrap;
+ Expression source_type_expr;
if (TypeManager.IsNullableType (source_type)) {
// No implicit conversion S? -> T for non-reference types
if (implicitOnly && !TypeManager.IsReferenceType (target_type) && !TypeManager.IsNullableType (target_type))
return null;
- unwrap = source = Nullable.Unwrap.Create (source);
- source_type = source.Type;
+ source_type_expr = Nullable.Unwrap.Create (source);
+ source_type = source_type_expr.Type;
} else {
- unwrap = null;
+ source_type_expr = source;
}
if (TypeManager.IsNullableType (target_type))
var operators = MemberCache.GetUserOperator (source_type, Operator.OpType.Implicit, declared_only);
if (operators != null) {
- FindApplicableUserDefinedConversionOperators (operators, source, target_type, implicitOnly, ref candidates);
+ FindApplicableUserDefinedConversionOperators (operators, source_type_expr, target_type, implicitOnly, ref candidates);
}
if (!implicitOnly) {
operators = MemberCache.GetUserOperator (source_type, Operator.OpType.Explicit, declared_only);
if (operators != null) {
- FindApplicableUserDefinedConversionOperators (operators, source, target_type, false, ref candidates);
+ FindApplicableUserDefinedConversionOperators (operators, source_type_expr, target_type, false, ref candidates);
}
}
}
var operators = MemberCache.GetUserOperator (target_type, Operator.OpType.Implicit, declared_only);
if (operators != null) {
- FindApplicableUserDefinedConversionOperators (operators, source, target_type, implicitOnly, ref candidates);
+ FindApplicableUserDefinedConversionOperators (operators, source_type_expr, target_type, implicitOnly, ref candidates);
}
if (!implicitOnly) {
operators = MemberCache.GetUserOperator (target_type, Operator.OpType.Explicit, declared_only);
if (operators != null) {
- FindApplicableUserDefinedConversionOperators (operators, source, target_type, false, ref candidates);
+ FindApplicableUserDefinedConversionOperators (operators, source_type_expr, target_type, false, ref candidates);
}
}
}
s_x = most_specific_operator.Parameters.Types[0];
t_x = most_specific_operator.ReturnType;
} else {
- s_x = FindMostSpecificSource (candidates, source, !implicitOnly);
+ //
+ // Pass original source type to find best match against input type and
+ // not the unwrapped expression
+ //
+ s_x = FindMostSpecificSource (candidates, source.Type, source_type_expr, !implicitOnly);
if (s_x == null)
return null;
//
// Convert input type when it's different to best operator argument
//
- if (s_x != source.Type)
+ if (s_x != source_type)
source = implicitOnly ?
- ImplicitConversionStandard (ec, source, s_x, loc) :
- ExplicitConversionStandard (ec, source, s_x, loc);
+ ImplicitConversionStandard (ec, source_type_expr, s_x, loc) :
+ ExplicitConversionStandard (ec, source_type_expr, s_x, loc);
+ else {
+ source = source_type_expr;
+ }
source = new UserCast (most_specific_operator, source, loc).Resolve (ec);
}
//
- // Source expression is of nullable type, lift the result in case of it's null
+ // Source expression is of nullable type, lift the result in the case it's null and
+ // not nullable/lifted user operator is used
//
- if (unwrap != null && (TypeManager.IsReferenceType (target) || target_type != target))
- source = new Nullable.Lifted (source, unwrap, target).Resolve (ec);
+ if (source_type_expr is Nullable.Unwrap && !TypeManager.IsNullableType (s_x) && (TypeManager.IsReferenceType (target) || target_type != target))
+ source = new Nullable.Lifted (source, source_type_expr, target).Resolve (ec);
else if (target_type != target)
source = Nullable.Wrap.Create (source, target);
if (expr_type == InternalType.Arglist && target_type == TypeManager.arg_iterator_type)
return expr;
+ if (TypeSpecComparer.IsEqual (expr_type, target_type))
+ return expr;
+
return null;
}
// sealed, or provided T implements S.
//
if (source_type.IsInterface) {
- if (!target_type.IsSealed || target_type.ImplementsInterface (source_type)) {
+ if (!target_type.IsSealed || target_type.ImplementsInterface (source_type, true)) {
if (target_type.IsClass)
return source == null ? EmptyExpression.Null : new ClassCast (source, target_type);
// From any class type S to any interface T, provides S is not sealed
// and provided S does not implement T.
//
- if (target_type.IsInterface && !source_type.IsSealed && !source_type.ImplementsInterface (target_type)) {
+ if (target_type.IsInterface && !source_type.IsSealed && !source_type.ImplementsInterface (target_type, true)) {
return source == null ? EmptyExpression.Null : new ClassCast (source, target_type);
}
/// them.
/// </summary>
Block current_block;
+
+ BlockVariableDeclaration current_variable;
Delegate current_delegate;
///
static Stack<object> oob_stack;
- ///
- /// Switch stack.
- ///
- Stack<Block> switch_stack;
-
///
/// Controls the verbosity of the errors produced by the parser
///
// be recursive
//
static List<Parameter> parameters_bucket = new List<Parameter> (6);
- static List<object> variables_bucket = new List<object> (6);
//
// Full AST support members
%token INTERR_NULLABLE
%token EXTERN_ALIAS
-/* Generics <,> tokens */
-%token OP_GENERICS_LT
-%token OP_GENERICS_LT_DECL
-%token OP_GENERICS_GT
-
/* C# keywords which are not really keywords */
%token GET
%token SET
%token OP_PTR
%token OP_COALESCING
+/* Generics <,> tokens */
+%token OP_GENERICS_LT
+%token OP_GENERICS_LT_DECL
+%token OP_GENERICS_GT
+
%token LITERAL
%token IDENTIFIER
var lt = (Tokenizer.LocatedToken) $2;
current_namespace.AddUsingAlias (lt.Value, (MemberName) $4, GetLocation ($1));
}
- | USING error {
- CheckIdentifierToken (yyToken, GetLocation ($2));
+ | USING error
+ {
+ Error_SyntaxError (yyToken);
$$ = null;
}
;
Report.Error(1671, name.Location, "A namespace declaration cannot have modifiers or attributes");
}
- current_namespace = new NamespaceEntry (
+ current_namespace = new NamespaceEntry (compiler,
current_namespace, file, name.GetName ());
current_class = current_namespace.SlaveDeclSpace;
current_container = current_class.PartialContainer;
{
Report.Error (1518, lexer.Location, "Expected `class', `delegate', `enum', `interface', or `struct'");
}
- CLOSE_BRACE
| opt_extern_alias_directives
opt_using_directives
opt_namespace_member_declarations
lbag.AppendToMember (current_class, GetLocation ($13));
$$ = pop_current_class ();
}
- | opt_attributes opt_modifiers opt_partial STRUCT error {
- CheckIdentifierToken (yyToken, GetLocation ($5));
+ | opt_attributes opt_modifiers opt_partial STRUCT error
+ {
+ Error_SyntaxError (yyToken);
}
;
| ASSIGN
{
++lexer.parsing_block;
+ current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters;
+ start_block (GetLocation ($1));
}
variable_initializer
{
--lexer.parsing_block;
current_field.Initializer = (Expression) $3;
+ end_block (lexer.Location);
+ current_local_parameters = null;
}
;
$$ = null;
}
;
-
-local_variable_declarators
- : local_variable_declarator
- {
- variables_bucket.Clear ();
- if ($1 != null)
- variables_bucket.Add ($1);
- $$ = variables_bucket;
- }
- | local_variable_declarators COMMA local_variable_declarator
- {
- var decls = (List<object>) $1;
- decls.Add ($3);
- lbag.AppendTo ($3, GetLocation ($2));
- $$ = $1;
- }
- ;
-
-local_variable_declarator
- : IDENTIFIER ASSIGN local_variable_initializer
- {
- $$ = new VariableDeclaration ((Tokenizer.LocatedToken) $1, (Expression) $3);
- lbag.AddLocation ($$, GetLocation ($2));
- }
- | IDENTIFIER
- {
- $$ = new VariableDeclaration ((Tokenizer.LocatedToken) $1, null);
- }
- | IDENTIFIER variable_bad_array
- {
- $$ = null;
- }
- ;
-local_variable_initializer
+variable_initializer
: expression
| array_initializer
- | STACKALLOC simple_type OPEN_BRACKET_EXPR expression CLOSE_BRACKET
- {
- $$ = new StackAlloc ((Expression) $2, (Expression) $4, GetLocation ($1));
- lbag.AddLocation ($$, GetLocation ($3), GetLocation ($5));
- }
- | ARGLIST
- {
- $$ = new ArglistAccess (GetLocation ($1));
- }
- | STACKALLOC simple_type
- {
- Report.Error (1575, GetLocation ($1), "A stackalloc expression requires [] after type");
- $$ = new StackAlloc ((Expression) $2, null, GetLocation ($1));
- }
- ;
-
-variable_bad_array
- : OPEN_BRACKET_EXPR opt_expression CLOSE_BRACKET
+ | error
{
- Report.Error (650, GetLocation ($1), "Syntax error, bad array declarator. To declare a managed array the rank specifier precedes the variable's identifier. " +
- "To declare a fixed size buffer field, use the fixed keyword before the field type");
+ // It has to be here for the parent to safely restore artificial block
+ Error_SyntaxError (yyToken);
+ $$ = null;
}
;
-variable_initializer
- : expression
- | array_initializer
- ;
-
method_declaration
: method_header {
if (RootContext.Documentation != null)
formal_parameter_list
: fixed_parameters
- {
+ {
var pars_list = (List<Parameter>) $1;
- $$ = new ParametersCompiled (compiler, pars_list.ToArray ());
+ $$ = new ParametersCompiled (pars_list.ToArray ());
}
| fixed_parameters COMMA parameter_array
{
var pars_list = (List<Parameter>) $1;
pars_list.Add ((Parameter) $3);
- $$ = new ParametersCompiled (compiler, pars_list.ToArray ());
+ $$ = new ParametersCompiled (pars_list.ToArray ());
}
| fixed_parameters COMMA arglist_modifier
{
var pars_list = (List<Parameter>) $1;
pars_list.Add (new ArglistParameter (GetLocation ($3)));
- $$ = new ParametersCompiled (compiler, pars_list.ToArray (), true);
+ $$ = new ParametersCompiled (pars_list.ToArray (), true);
}
| parameter_array COMMA error
{
if ($1 != null)
Report.Error (231, ((Parameter) $1).Location, "A params parameter must be the last parameter in a formal parameter list");
- $$ = new ParametersCompiled (compiler, new Parameter[] { (Parameter) $1 } );
+ $$ = new ParametersCompiled (new Parameter[] { (Parameter) $1 } );
}
| fixed_parameters COMMA parameter_array COMMA error
{
var pars_list = (List<Parameter>) $1;
pars_list.Add (new ArglistParameter (GetLocation ($3)));
- $$ = new ParametersCompiled (compiler, pars_list.ToArray (), true);
+ $$ = new ParametersCompiled (pars_list.ToArray (), true);
}
| arglist_modifier COMMA error
{
Report.Error (257, GetLocation ($1), "An __arglist parameter must be the last parameter in a formal parameter list");
- $$ = new ParametersCompiled (compiler, new Parameter [] { new ArglistParameter (GetLocation ($1)) }, true);
+ $$ = new ParametersCompiled (new Parameter [] { new ArglistParameter (GetLocation ($1)) }, true);
}
| fixed_parameters COMMA ARGLIST COMMA error
{
var pars_list = (List<Parameter>) $1;
pars_list.Add (new ArglistParameter (GetLocation ($3)));
- $$ = new ParametersCompiled (compiler, pars_list.ToArray (), true);
+ $$ = new ParametersCompiled (pars_list.ToArray (), true);
}
| parameter_array
{
- $$ = new ParametersCompiled (compiler, new Parameter[] { (Parameter) $1 } );
+ $$ = new ParametersCompiled (new Parameter[] { (Parameter) $1 } );
}
| arglist_modifier
{
- $$ = new ParametersCompiled (compiler, new Parameter [] { new ArglistParameter (GetLocation ($1)) }, true);
+ $$ = new ParametersCompiled (new Parameter [] { new ArglistParameter (GetLocation ($1)) }, true);
+ }
+ | error
+ {
+ Error_SyntaxError (yyToken);
+ $$ = ParametersCompiled.EmptyReadOnlyParameters;
}
;
parameter_type
error
{
+ Error_SyntaxError (yyToken);
Location l = GetLocation ($4);
- CheckIdentifierToken (yyToken, l);
$$ = new Parameter ((FullNamedExpression) $3, "NeedSomeGeneratorHere", (Parameter.Modifier) $2, (Attributes) $1, l);
}
| opt_attributes
}
| opt_attributes params_modifier type error
{
- CheckIdentifierToken (yyToken, GetLocation ($4));
+ Error_SyntaxError (yyToken);
$$ = null;
}
;
lbag.AppendToMember (current_class, GetLocation ($11), GetLocation ($13));
$$ = pop_current_class ();
}
- | opt_attributes opt_modifiers opt_partial INTERFACE error {
- CheckIdentifierToken (yyToken, GetLocation ($5));
+ | opt_attributes opt_modifiers opt_partial INTERFACE error
+ {
+ Error_SyntaxError (yyToken);
}
;
{
lexer.parsing_generic_declaration = false;
var lt = (Tokenizer.LocatedToken) $1;
- $$ = new MemberName (lt.Value, (TypeArguments)$3, lt.Location);
+ $$ = new MemberName (lt.Value, (TypeArguments)$3, lt.Location);
}
;
| VOID pointer_stars
{
$$ = new ComposedCast (new TypeExpression (TypeManager.void_type, GetLocation ($1)), (ComposedTypeSpecifier) $2);
- }
+ }
;
type_list
| checked_expression
| unchecked_expression
| pointer_member_access
- | anonymous_method_expression
+ | anonymous_method_expression
;
primary_expression_or_type
$$ = new Argument (new Arglist (GetLocation ($1)));
lbag.AddLocation ($$, GetLocation ($2), GetLocation ($3));
}
- | ARGLIST
- {
- $$ = new Argument (new ArglistAccess (GetLocation ($1)));
- }
;
variable_reference
array_initializer
: OPEN_BRACE CLOSE_BRACE
{
- $$ = new ArrayInitializer (0, GetLocation ($1));
- lbag.AddLocation ($$, GetLocation ($2));
+ var ai = new ArrayInitializer (0, GetLocation ($1));
+ ai.VariableDeclaration = current_variable;
+ lbag.AddLocation (ai, GetLocation ($2));
+ $$ = ai;
}
| OPEN_BRACE variable_initializer_list opt_comma CLOSE_BRACE
{
- $$ = new ArrayInitializer ((List<Expression>) $2, GetLocation ($1));
- lbag.AddLocation ($$, GetLocation ($3));
+ var ai = new ArrayInitializer ((List<Expression>) $2, GetLocation ($1));
+ ai.VariableDeclaration = current_variable;
+ lbag.AddLocation (ai, GetLocation ($3));
+ $$ = ai;
}
;
list.Add ((Expression) $3);
$$ = list;
}
- | error
- {
- Error_SyntaxError (yyToken);
- $$ = new List<Expression> ();
- }
;
typeof_expression
}
block
{
- $$ = end_anonymous ((ToplevelBlock) $4);
- }
+ $$ = end_anonymous ((ParametersBlock) $4);
+ }
;
opt_anonymous_method_signature
$$ = new Cast ((FullNamedExpression) $2, (Expression) $4, GetLocation ($1));
lbag.AddLocation ($$, GetLocation ($3));
}
- | OPEN_PARENS builtin_types CLOSE_PARENS prefixed_unary_expression
- {
- $$ = new Cast ((FullNamedExpression) $2, (Expression) $4, GetLocation ($1));
- lbag.AddLocation ($$, GetLocation ($3));
- }
;
//
: /* empty */ { $$ = ParametersCompiled.EmptyReadOnlyParameters; }
| lambda_parameter_list {
var pars_list = (List<Parameter>) $1;
- $$ = new ParametersCompiled (compiler, pars_list.ToArray ());
+ $$ = new ParametersCompiled (pars_list.ToArray ());
}
;
b.AddStatement (new ContextualReturn ((Expression) $2));
$$ = b;
}
- | block {
+ | block
+ {
$$ = $1;
}
;
{
var lt = (Tokenizer.LocatedToken) $1;
Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location);
- start_anonymous (true, new ParametersCompiled (compiler, p), GetLocation ($1));
+ start_anonymous (true, new ParametersCompiled (p), GetLocation ($1));
}
lambda_expression_body
{
- $$ = end_anonymous ((ToplevelBlock) $4);
+ $$ = end_anonymous ((ParametersBlock) $4);
lbag.AddLocation ($$, GetLocation ($2));
}
| OPEN_PARENS_LAMBDA
}
lambda_expression_body
{
- $$ = end_anonymous ((ToplevelBlock) $7);
+ $$ = end_anonymous ((ParametersBlock) $7);
lbag.AddLocation ($$, GetLocation ($3), GetLocation ($4));
}
;
expression
: assignment_expression
- | non_assignment_expression
+ | non_assignment_expression
;
non_assignment_expression
: conditional_expression
| lambda_expression
- | query_expression
+ | query_expression
+ | ARGLIST
+ {
+ $$ = new ArglistAccess (GetLocation ($1));
+ }
;
constant_expression
;
opt_type_parameter_constraints_clauses
- : /* empty */ { $$ = null; }
+ : /* empty */
| type_parameter_constraints_clauses
{
$$ = $1;
;
statement
- : declaration_statement
+ : block_variable_declaration
{
- if ($1 != null && (Block) $1 != current_block){
- current_block.AddStatement ((Statement) $1);
- current_block = (Block) $1;
- }
+ current_block.AddStatement ((Statement) $1);
}
| valid_declaration_statement
{
current_block.AddStatement ((Statement) $1);
}
| labeled_statement
+ | error
+ {
+ Error_SyntaxError (yyToken);
+ $$ = null;
+ }
;
//
;
interactive_statement
- : declaration_statement
+ : block_variable_declaration
{
- if ($1 != null && (Block) $1 != current_block){
- current_block.AddStatement ((Statement) $1);
- current_block = (Block) $1;
- }
+ current_block.AddStatement ((Statement) $1);
}
| interactive_valid_declaration_statement
{
embedded_statement
: valid_declaration_statement
- | declaration_statement
+ | block_variable_declaration
{
Report.Error (1023, GetLocation ($1), "An embedded statement may not be a declaration or labeled statement");
$$ = null;
Report.Error (1023, GetLocation ($1), "An embedded statement may not be a declaration or labeled statement");
$$ = null;
}
+ | error
+ {
+ Error_SyntaxError (yyToken);
+ $$ = new EmptyStatement (GetLocation ($1));
+ }
;
empty_statement
: IDENTIFIER COLON
{
var lt = (Tokenizer.LocatedToken) $1;
- LabeledStatement labeled = new LabeledStatement (lt.Value, lt.Location);
+ LabeledStatement labeled = new LabeledStatement (lt.Value, current_block, lt.Location);
- if (current_block.AddLabel (labeled))
- current_block.AddStatement (labeled);
+ current_block.AddLabel (labeled);
+ current_block.AddStatement (labeled);
}
statement
;
-declaration_statement
- : local_variable_declaration SEMICOLON
- {
- if ($1 != null){
- var de = (Tuple<FullNamedExpression, List<object>>) $1;
- $$ = declare_local_variables (de.Item1, de.Item2, de.Item1.Location);
- }
- }
-
- | local_constant_declaration SEMICOLON
- {
- if ($1 != null){
- var de = (Tuple<FullNamedExpression, List<object>>) $1;
-
- $$ = declare_local_constants (de.Item1, de.Item2);
- }
- }
- ;
-
variable_type
: variable_type_simple
| variable_type_simple rank_specifiers
}
;
-local_variable_declaration
- : variable_type local_variable_declarators
+block_variable_declaration
+ : variable_type IDENTIFIER
{
- if ($1 != null) {
- VarExpr ve = $1 as VarExpr;
- if (ve != null) {
- if (!((VariableDeclaration) ((List<object>)$2) [0]).HasInitializer)
- ve.VariableInitializersCount = 0;
- else
- ve.VariableInitializersCount = ((List<object>)$2).Count;
- }
-
- $$ = new Tuple<FullNamedExpression, List<object>> ((FullNamedExpression) $1, (List<object>) $2);
- } else
- $$ = null;
+ var lt = (Tokenizer.LocatedToken) $2;
+ var li = new LocalVariable (current_block, lt.Value, lt.Location);
+ current_block.AddLocalName (li);
+ current_variable = new BlockVariableDeclaration ((FullNamedExpression) $1, li);
}
- ;
-
-local_constant_declaration
- : CONST variable_type local_constant_declarators
+ opt_local_variable_initializer opt_variable_declarators SEMICOLON
{
- if ($2 != null)
- $$ = new Tuple<FullNamedExpression, List<object>> ((FullNamedExpression) $2, (List<object>) $3);
- else
- $$ = null;
+ $$ = current_variable;
+ current_variable = null;
+ lbag.AddLocation ($$, GetLocation ($6));
+ }
+ | CONST variable_type IDENTIFIER
+ {
+ var lt = (Tokenizer.LocatedToken) $3;
+ var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location);
+ current_block.AddLocalName (li);
+ current_variable = new BlockConstantDeclaration ((FullNamedExpression) $2, li);
+ }
+ const_variable_initializer opt_const_declarators SEMICOLON
+ {
+ $$ = current_variable;
+ current_variable = null;
+ lbag.AddLocation ($$, GetLocation ($1), GetLocation ($7));
}
;
-
-local_constant_declarators
- : local_constant_declarator
+
+opt_local_variable_initializer
+ : /* empty */
+ | ASSIGN block_variable_initializer
{
- variables_bucket.Clear ();
- if ($1 != null)
- variables_bucket.Add ($1);
- $$ = variables_bucket;
+ current_variable.Initializer = (Expression) $2;
+ // TODO: lbag
}
- | local_constant_declarators COMMA local_constant_declarator
+ | error
{
- if ($3 != null) {
- var constants = (List<object>) $1;
- constants.Add ($3);
+ if (yyToken == Token.OPEN_BRACKET_EXPR) {
+ Report.Error (650, lexer.Location,
+ "Syntax error, bad array declarator. To declare a managed array the rank specifier precedes the variable's identifier. To declare a fixed size buffer field, use the fixed keyword before the field type");
+ } else {
+ Error_SyntaxError (yyToken);
}
}
;
-local_constant_declarator
- : IDENTIFIER ASSIGN constant_initializer_expr
+opt_variable_declarators
+ : /* empty */
+ | variable_declarators
+ ;
+
+variable_declarators
+ : variable_declarator
+ | variable_declarators variable_declarator
+ ;
+
+variable_declarator
+ : COMMA IDENTIFIER
{
- $$ = new VariableDeclaration ((Tokenizer.LocatedToken) $1, (Expression) $3);
+ var lt = (Tokenizer.LocatedToken) $2;
+ var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location);
+ var d = new BlockVariableDeclaration.Declarator (li, null);
+ current_variable.AddDeclarator (d);
+ current_block.AddLocalName (li);
+ lbag.AddLocation (d, GetLocation ($1));
}
- | IDENTIFIER error
+ | COMMA IDENTIFIER ASSIGN block_variable_initializer
{
- Report.Error (145, GetLocation ($1), "A const field requires a value to be provided");
- $$ = null;
+ var lt = (Tokenizer.LocatedToken) $2;
+ var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location);
+ var d = new BlockVariableDeclaration.Declarator (li, (Expression) $4);
+ current_variable.AddDeclarator (d);
+ current_block.AddLocalName (li);
+ lbag.AddLocation (d, GetLocation ($1), GetLocation ($3));
+ }
+ ;
+
+const_variable_initializer
+ : /* empty */
+ {
+ Report.Error (145, lexer.Location, "A const field requires a value to be provided");
+ }
+ | ASSIGN constant_initializer_expr
+ {
+ current_variable.Initializer = (Expression) $2;
+ }
+ ;
+
+opt_const_declarators
+ : /* empty */
+ | const_declarators
+ ;
+
+const_declarators
+ : const_declarator
+ | const_declarators const_declarator
+ ;
+
+const_declarator
+ : COMMA IDENTIFIER ASSIGN constant_initializer_expr
+ {
+ var lt = (Tokenizer.LocatedToken) $2;
+ var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location);
+ var d = new BlockVariableDeclaration.Declarator (li, (Expression) $4);
+ current_variable.AddDeclarator (d);
+ current_block.AddLocalName (li);
+ lbag.AddLocation (d, GetLocation ($1), GetLocation ($3));
+ }
+ ;
+
+block_variable_initializer
+ : variable_initializer
+ | STACKALLOC simple_type OPEN_BRACKET_EXPR expression CLOSE_BRACKET
+ {
+ $$ = new StackAlloc ((Expression) $2, (Expression) $4, GetLocation ($1));
+ lbag.AddLocation ($$, GetLocation ($3), GetLocation ($5));
+ }
+ | STACKALLOC simple_type
+ {
+ Report.Error (1575, GetLocation ($1), "A stackalloc expression requires [] after type");
+ $$ = new StackAlloc ((Expression) $2, null, GetLocation ($1));
}
;
$$ = new StatementExpression (s);
}
- | error
- {
- Error_SyntaxError (yyToken);
- $$ = null;
- }
;
interactive_statement_expression
embedded_statement
{
if ($5 is EmptyStatement)
- Report.Warning (642, 3, GetLocation ($5), "Possible mistaken empty statement");
+ Warning_EmptyStatement (GetLocation ($5));
$$ = new If ((BooleanExpression) $3, (Statement) $5, GetLocation ($1));
lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4));
lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4), GetLocation ($6));
if ($5 is EmptyStatement)
- Report.Warning (642, 3, GetLocation ($5), "Possible mistaken empty statement");
+ Warning_EmptyStatement (GetLocation ($5));
if ($7 is EmptyStatement)
- Report.Warning (642, 3, GetLocation ($7), "Possible mistaken empty statement");
+ Warning_EmptyStatement (GetLocation ($7));
}
;
switch_statement
- : SWITCH open_parens_any
- {
- if (switch_stack == null)
- switch_stack = new Stack<Block> (2);
- switch_stack.Push (current_block);
+ : SWITCH open_parens_any expression CLOSE_PARENS OPEN_BRACE
+ {
+ start_block (GetLocation ($5));
}
- expression CLOSE_PARENS
- OPEN_BRACE opt_switch_sections CLOSE_BRACE
+ opt_switch_sections CLOSE_BRACE
{
- $$ = new Switch ((Expression) $4, (List<SwitchSection>) $7, GetLocation ($1));
- lbag.AddStatement ($$, GetLocation ($2), GetLocation ($5), GetLocation ($6), GetLocation ($8));
-
- current_block = (Block) switch_stack.Pop ();
+ $$ = new Switch ((Expression) $3, (ExplicitBlock) current_block.Explicit, (List<SwitchSection>) $7, GetLocation ($1));
+ end_block (GetLocation ($8));
+ lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4));
}
;
opt_switch_sections
: /* empty */
{
- Report.Warning (1522, 1, lexer.Location, "Empty switch block");
+ Report.Warning (1522, 1, current_block.StartLocation, "Empty switch block");
$$ = new List<SwitchSection> ();
}
| switch_sections
sections.Add ((SwitchSection) $2);
$$ = sections;
}
+ | error
+ {
+ Error_SyntaxError (yyToken);
+ $$ = new List<SwitchSection> ();
+ }
;
switch_section
}
statement_list
{
- $$ = new SwitchSection ((List<SwitchLabel>) $1, current_block.Explicit);
+ $$ = new SwitchSection ((List<SwitchLabel>) $1, current_block);
}
;
while_statement
: WHILE open_parens_any boolean_expression CLOSE_PARENS embedded_statement
{
+ if ($5 is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE)
+ Warning_EmptyStatement (GetLocation ($5));
+
$$ = new While ((BooleanExpression) $3, (Statement) $5, GetLocation ($1));
lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4));
}
;
for_statement
- : FOR open_parens_any opt_for_initializer SEMICOLON
+ : FOR open_parens_any
{
- Location l = lexer.Location;
- start_block (l);
- Block assign_block = current_block;
-
- if ($3 is Tuple<FullNamedExpression, List<object>>){
- var de = (Tuple<FullNamedExpression, List<object>>) $3;
-
- var type = de.Item1;
-
- foreach (VariableDeclaration decl in de.Item2){
-
- LocalInfo vi;
-
- vi = current_block.AddVariable (type, decl.identifier, decl.Location);
- if (vi == null)
- continue;
-
- Expression expr = decl.GetInitializer (type);
-
- LocalVariableReference var;
- var = new LocalVariableReference (assign_block, decl.identifier, l);
-
- if (expr != null) {
- Assign a = new SimpleAssign (var, expr, decl.Location);
-
- assign_block.AddStatement (new StatementExpression (a));
- }
- }
-
- // Note: the $$ below refers to the value of this code block, not of the LHS non-terminal.
- // This can be referred to as $5 below.
- $$ = null;
- } else {
- $$ = $3;
- }
- }
+ start_block (GetLocation ($2));
+ current_block.IsCompilerGenerated = true;
+ }
+ opt_for_initializer SEMICOLON
opt_for_condition SEMICOLON
opt_for_iterator CLOSE_PARENS
embedded_statement
{
- For f = new For ((Statement) $5, (BooleanExpression) $6, (Statement) $8, (Statement) $10, GetLocation ($1));
+ if ($10 is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE)
+ Warning_EmptyStatement (GetLocation ($10));
+
+ For f = new For ((Statement) $4, (BooleanExpression) $6, (Statement) $8, (Statement) $10, GetLocation ($1));
current_block.AddStatement (f);
- lbag.AddStatement (f, GetLocation ($2), GetLocation ($4), GetLocation ($7), GetLocation ($9));
+ lbag.AddStatement (f, GetLocation ($2), GetLocation ($5), GetLocation ($7), GetLocation ($9));
- $$ = end_block (lexer.Location);
+ $$ = end_block (GetLocation ($5));
}
;
;
for_initializer
- : local_variable_declaration
+ : variable_type IDENTIFIER
+ {
+ var lt = (Tokenizer.LocatedToken) $2;
+ var li = new LocalVariable (current_block, lt.Value, lt.Location);
+ current_block.AddLocalName (li);
+ current_variable = new BlockVariableDeclaration ((FullNamedExpression) $1, li);
+ }
+ opt_local_variable_initializer opt_variable_declarators
+ {
+ $$ = current_variable;
+ current_variable = null;
+ }
| statement_expression_list
;
| statement_expression_list COMMA statement_expression
{
var sl = $1 as StatementList;
- if (sl == null)
+ if (sl == null) {
sl = new StatementList ((Statement) $1, (Statement) $3);
- else
+ lbag.AddStatement (sl, GetLocation ($2));
+ } else {
sl.Add ((Statement) $3);
+ lbag.AppendTo (sl, GetLocation ($2));
+ }
- lbag.AddStatement (sl, GetLocation ($2));
$$ = sl;
}
;
Report.Error (230, GetLocation ($1), "Type and identifier are both required in a foreach statement");
$$ = null;
}
- | FOREACH open_parens_any type IDENTIFIER IN
- expression CLOSE_PARENS
+ | FOREACH open_parens_any type IDENTIFIER IN expression CLOSE_PARENS
{
- start_block (lexer.Location);
- Block foreach_block = current_block;
-
+ start_block (GetLocation ($2));
+ current_block.IsCompilerGenerated = true;
+
var lt = (Tokenizer.LocatedToken) $4;
- Location l = lt.Location;
- LocalInfo vi = foreach_block.AddVariable ((Expression) $3, lt.Value, l);
- if (vi != null) {
- vi.SetReadOnlyContext (LocalInfo.ReadOnlyContext.Foreach);
-
- // Get a writable reference to this read-only variable.
- //
- // Note that the $$ here refers to the value of _this_ code block,
- // not the value of the LHS non-terminal. This can be referred to as $8 below.
- $$ = new LocalVariableReference (foreach_block, lt.Value, l, vi, false);
- } else {
- $$ = null;
- }
+ var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.ForeachVariable | LocalVariable.Flags.Used, lt.Location);
+ current_block.AddLocalName (li);
+ $$ = li;
}
- embedded_statement
+ embedded_statement
{
- if ($8 != null) {
- Foreach f = new Foreach ((Expression) $3, (LocalVariableReference) $8, (Expression) $6, (Statement) $9, GetLocation ($1));
- lbag.AddStatement (f, GetLocation ($2), GetLocation ($5), GetLocation ($7));
-
- current_block.AddStatement (f);
- }
-
- $$ = end_block (lexer.Location);
+ if ($9 is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE)
+ Warning_EmptyStatement (GetLocation ($9));
+
+ Foreach f = new Foreach ((Expression) $3, (LocalVariable) $8, (Expression) $6, (Statement) $9, GetLocation ($1));
+ current_block.AddStatement (f);
+
+ lbag.AddStatement (f, GetLocation ($2), GetLocation ($5), GetLocation ($7));
+ $$ = end_block (GetLocation ($7));
}
;
Report.FeatureIsNotAvailable (lt.Location, "iterators");
}
- current_block.Toplevel.IsIterator = true;
+ current_block.ParametersBlock.TopBlock.IsIterator = true;
$$ = new Yield ((Expression) $3, lt.Location);
lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4));
}
Report.FeatureIsNotAvailable (lt.Location, "iterators");
}
- current_block.Toplevel.IsIterator = true;
+ current_block.ParametersBlock.TopBlock.IsIterator = true;
$$ = new YieldBreak (lt.Location);
lbag.AddStatement ($$, GetLocation ($2), GetLocation ($3));
}
;
opt_identifier
- : /* empty */ { $$ = null; }
+ : /* empty */
| IDENTIFIER
;
catch_clause
- : CATCH opt_catch_args
+ : CATCH block
{
- if ($2 != null) {
- var cc = (Tuple<FullNamedExpression, Tokenizer.LocatedToken>) $2;
- var lt = cc.Item2;
-
- if (lt != null){
- List<object> one = new List<object> (1);
-
- one.Add (new VariableDeclaration (lt, null));
+ $$ = new Catch ((Block) $2, GetLocation ($1));
+ }
+ | CATCH open_parens_any type opt_identifier CLOSE_PARENS
+ {
+ start_block (GetLocation ($2));
+ var c = new Catch (current_block, GetLocation ($1));
+ c.TypeExpression = (FullNamedExpression) $3;
- start_block (lexer.Location);
- current_block = declare_local_variables (cc.Item1, one, lt.Location);
- }
- }
- } block {
- Expression type = null;
- string id = null;
- Block var_block = null;
-
- if ($2 != null){
- var cc = (Tuple<FullNamedExpression, Tokenizer.LocatedToken>) $2;
- type = cc.Item1;
- var lt = cc.Item2;
-
- if (lt != null){
- id = lt.Value;
- var_block = end_block (lexer.Location);
- }
+ if ($4 != null) {
+ var lt = (Tokenizer.LocatedToken) $4;
+ c.Variable = new LocalVariable (current_block, lt.Value, lt.Location);
+ current_block.AddLocalName (c.Variable);
}
-
- $$ = new Catch (type, id, (Block) $4, var_block, ((Block) $4).loc);
- lbag.AddLocation ($$, GetLocation ($1));
- lbag.AppendTo ($$, lbag.GetLocations ($2));
+
+ lbag.AddLocation (c, GetLocation ($2), GetLocation ($5));
+ $$ = c;
}
- ;
-
-opt_catch_args
- : /* empty */ { $$ = null; }
- | catch_args
- ;
-
-catch_args
- : open_parens_any type opt_identifier CLOSE_PARENS
+ block_prepared
{
- $$ = new Tuple<FullNamedExpression, Tokenizer.LocatedToken> ((FullNamedExpression)$2, (Tokenizer.LocatedToken) $3);
- lbag.AddLocation ($$, GetLocation ($1), GetLocation ($4));
+ $$ = $6;
}
- | open_parens_any CLOSE_PARENS
+ | CATCH open_parens_any error
{
- Report.Error (1015, GetLocation ($1), "A type that derives from `System.Exception', `object', or `string' expected");
- $$ = null;
+ if (yyToken == Token.CLOSE_PARENS) {
+ Report.Error (1015, lexer.Location,
+ "A type that derives from `System.Exception', `object', or `string' expected");
+ } else {
+ Error_SyntaxError (yyToken);
+ }
+
+ $$ = new Catch (null, GetLocation ($1));
}
;
}
;
-fixed_statement
- : FIXED open_parens_any
- type_and_void fixed_pointer_declarators
- CLOSE_PARENS
- {
- start_block (lexer.Location);
- }
- embedded_statement
+lock_statement
+ : LOCK open_parens_any expression CLOSE_PARENS embedded_statement
{
- Expression type = (Expression) $3;
- var list = (List<KeyValuePair<Tokenizer.LocatedToken, Expression>>) $4;
- Fixed f = new Fixed (type,
- list.ConvertAll (i => {
- var v = new KeyValuePair<LocalInfo, Expression> (current_block.AddVariable (type, i.Key.Value, i.Key.Location), i.Value);
- if (v.Key != null) {
- v.Key.SetReadOnlyContext (LocalInfo.ReadOnlyContext.Fixed);
- v.Key.Pinned = true;
- }
- return v;
- }), (Statement) $7, GetLocation ($1));
-
- lbag.AddStatement (f, GetLocation ($2), GetLocation ($5));
-
- current_block.AddStatement (f);
-
- $$ = end_block (lexer.Location);
+ if ($5 is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE)
+ Warning_EmptyStatement (GetLocation ($5));
+
+ $$ = new Lock ((Expression) $3, (Statement) $5, GetLocation ($1));
+ lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4));
}
;
-fixed_pointer_declarators
- : fixed_pointer_declarator {
- var declarators = new List<KeyValuePair<Tokenizer.LocatedToken, Expression>> (2);
- if ($1 != null)
- declarators.Add ((KeyValuePair<Tokenizer.LocatedToken, Expression>)$1);
- $$ = declarators;
- }
- | fixed_pointer_declarators COMMA fixed_pointer_declarator
+fixed_statement
+ : FIXED open_parens_any variable_type IDENTIFIER
{
- var declarators = (List<KeyValuePair<Tokenizer.LocatedToken, Expression>>) $1;
- if ($3 != null)
- declarators.Add ((KeyValuePair<Tokenizer.LocatedToken, Expression>)$3);
- $$ = declarators;
+ start_block (GetLocation ($2));
+
+ var lt = (Tokenizer.LocatedToken) $4;
+ var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.FixedVariable | LocalVariable.Flags.Used, lt.Location);
+ current_block.AddLocalName (li);
+ current_variable = new Fixed.VariableDeclaration ((FullNamedExpression) $3, li);
}
- ;
-
-fixed_pointer_declarator
- : IDENTIFIER ASSIGN expression
+ using_or_fixed_variable_initializer opt_variable_declarators CLOSE_PARENS
{
- var lt = (Tokenizer.LocatedToken) $1;
- $$ = new KeyValuePair<Tokenizer.LocatedToken, Expression> (lt, (Expression) $3);
+ $$ = current_variable;
+ current_variable = null;
}
- | IDENTIFIER
+ embedded_statement
{
- Report.Error (210, ((Tokenizer.LocatedToken) $1).Location, "You must provide an initializer in a fixed or using statement declaration");
- $$ = null;
+ if ($10 is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE)
+ Warning_EmptyStatement (GetLocation ($10));
+
+ Fixed f = new Fixed ((Fixed.VariableDeclaration) $9, (Statement) $10, GetLocation ($1));
+ current_block.AddStatement (f);
+ $$ = end_block (GetLocation ($8));
}
;
-lock_statement
- : LOCK open_parens_any expression CLOSE_PARENS embedded_statement
+using_statement
+ : USING open_parens_any variable_type IDENTIFIER
{
- $$ = new Lock ((Expression) $3, (Statement) $5, GetLocation ($1));
- lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4));
+ start_block (GetLocation ($2));
+
+ var lt = (Tokenizer.LocatedToken) $4;
+ var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.UsingVariable | LocalVariable.Flags.Used, lt.Location);
+ current_block.AddLocalName (li);
+ current_variable = new Using.VariableDeclaration ((FullNamedExpression) $3, li);
}
- ;
-
-using_statement
- : USING open_parens_any local_variable_declaration CLOSE_PARENS
+ using_or_fixed_variable_initializer opt_variable_declarators CLOSE_PARENS
{
- start_block (lexer.Location);
- Block assign_block = current_block;
-
- var de = (Tuple<FullNamedExpression, List<object>>) $3;
- Location l = GetLocation ($1);
-
- var vars = new Stack<Tuple<LocalVariableReference, Expression>> ();
-
- lbag.AddStatement (assign_block, GetLocation ($1), GetLocation ($2), GetLocation ($4));
-
- foreach (VariableDeclaration decl in de.Item2) {
- LocalInfo vi = current_block.AddVariable (de.Item1, decl.identifier, decl.Location);
- if (vi == null)
- continue;
- vi.SetReadOnlyContext (LocalInfo.ReadOnlyContext.Using);
-
- Expression expr = decl.GetInitializer (de.Item1);
- if (expr == null) {
- Report.Error (210, l, "You must provide an initializer in a fixed or using statement declaration");
- continue;
- }
- LocalVariableReference var;
-
- // Get a writable reference to this read-only variable.
- var = new LocalVariableReference (assign_block, decl.identifier, l, vi, false);
-
- // This is so that it is not a warning on using variables
- vi.Used = true;
-
- vars.Push (new Tuple<LocalVariableReference, Expression> (var, expr));
-
- // Assign a = new SimpleAssign (var, expr, decl.Location);
- // assign_block.AddStatement (new StatementExpression (a));
- }
-
- // Note: the $$ here refers to the value of this code block and not of the LHS non-terminal.
- // It can be referred to as $5 below.
- $$ = vars;
+ $$ = current_variable;
+ current_variable = null;
}
embedded_statement
{
- Statement stmt = (Statement) $6;
- var vars = (Stack<Tuple<LocalVariableReference, Expression>>) $5;
- Location l = GetLocation ($1);
-
- while (vars.Count > 0) {
- var de = vars.Pop ();
- stmt = new Using (de.Item1, de.Item2, stmt, l);
- }
- current_block.AddStatement (stmt);
- $$ = end_block (lexer.Location);
+ if ($10 is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE)
+ Warning_EmptyStatement (GetLocation ($10));
+
+ Using u = new Using ((Using.VariableDeclaration) $9, (Statement) $10, GetLocation ($1));
+ current_block.AddStatement (u);
+ $$ = end_block (GetLocation ($8));
}
- | USING open_parens_any expression CLOSE_PARENS
+ | USING open_parens_any expression CLOSE_PARENS embedded_statement
{
- start_block (lexer.Location);
+ if ($5 is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE)
+ Warning_EmptyStatement (GetLocation ($5));
+
+ Using u = new Using ((Expression) $3, (Statement) $5, GetLocation ($1));
+ lbag.AddStatement (u, GetLocation ($2), GetLocation ($4));
+ $$ = u;
}
- embedded_statement
+ ;
+
+using_or_fixed_variable_initializer
+ : /* empty */
{
- UsingTemporary usingTemporary = new UsingTemporary ((Expression) $3, (Statement) $6, GetLocation ($1));
- lbag.AddStatement (usingTemporary, GetLocation ($2), GetLocation ($4));
- current_block.AddStatement (usingTemporary);
- $$ = end_block (lexer.Location);
+ Report.Error (210, lexer.Location, "You must provide an initializer in a fixed or using statement declaration");
}
- ;
+ | ASSIGN variable_initializer
+ {
+ current_variable.Initializer = (Expression) $2;
+ $$ = current_variable;
+ }
+ ;
// LINQ
{
current_block = new Linq.QueryBlock (compiler, current_block, lexer.Location);
- var lt = (Tokenizer.LocatedToken) $2;
- $$ = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$4, new SimpleMemberName (lt.Value, lt.Location), GetLocation ($1)));
+ var lt = (Tokenizer.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)));
}
| FROM_FIRST type IDENTIFIER IN expression
{
current_block = new Linq.QueryBlock (compiler, current_block, lexer.Location);
var lt = (Tokenizer.LocatedToken) $3;
+ var rv = new Linq.RangeVariable (lt.Value, lt.Location);
$$ = new Linq.QueryExpression (
- new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$5, new SimpleMemberName (lt.Value, lt.Location), GetLocation ($1)) {
+ new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$5, rv, GetLocation ($1)) {
IdentifierType = (FullNamedExpression)$2
}
);
{
current_block = new Linq.QueryBlock (compiler, current_block, lexer.Location);
- var lt = (Tokenizer.LocatedToken) $2;
- $$ = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$4, new SimpleMemberName (lt.Value, lt.Location), GetLocation ($1)));
+ var lt = (Tokenizer.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)));
}
| FROM type IDENTIFIER IN expression
{
current_block = new Linq.QueryBlock (compiler, current_block, lexer.Location);
var lt = (Tokenizer.LocatedToken) $3;
+ var rv = new Linq.RangeVariable (lt.Value, lt.Location);
$$ = new Linq.QueryExpression (
- new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$5, new SimpleMemberName (lt.Value, lt.Location), GetLocation ($1)) {
+ new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$5, rv, GetLocation ($1)) {
IdentifierType = (FullNamedExpression)$2
}
);
expression
{
var lt = (Tokenizer.LocatedToken) $2;
- var sn = new SimpleMemberName (lt.Value, lt.Location);
+ var sn = new Linq.RangeVariable (lt.Value, lt.Location);
$$ = new Linq.SelectMany ((Linq.QueryBlock)current_block, sn, (Expression)$5, GetLocation ($1));
current_block.SetEndLocation (lexer.Location);
expression
{
var lt = (Tokenizer.LocatedToken) $3;
- var sn = new SimpleMemberName (lt.Value, lt.Location);
+ var sn = new Linq.RangeVariable (lt.Value, lt.Location);
$$ = new Linq.SelectMany ((Linq.QueryBlock)current_block, sn, (Expression)$6, GetLocation ($1)) {
IdentifierType = (FullNamedExpression)$2
expression
{
var lt = (Tokenizer.LocatedToken) $2;
- var sn = new SimpleMemberName (lt.Value, lt.Location);
+ var sn = new Linq.RangeVariable (lt.Value, lt.Location);
$$ = new Linq.Let ((Linq.QueryBlock) current_block, sn, (Expression)$5, GetLocation ($1));
current_block.SetEndLocation (lexer.Location);
}
expression opt_join_into
{
- var lt = (Tokenizer.LocatedToken) $2;
- var sn = new SimpleMemberName (lt.Value, lt.Location);
- SimpleMemberName sn2 = null;
-
+ current_block.AddStatement (new ContextualReturn ((Expression) $11));
+ current_block.SetEndLocation (lexer.Location);
+
var outer_selector = linq_clause_blocks.Pop ();
var block = linq_clause_blocks.Pop ();
+ var lt = (Tokenizer.LocatedToken) $2;
+ var sn = new Linq.RangeVariable (lt.Value, lt.Location);
+ Linq.RangeVariable into;
+
if ($12 == null) {
+ into = sn;
$$ = new Linq.Join (block, sn, (Expression)$5, outer_selector, (Linq.QueryBlock) current_block, GetLocation ($1));
} else {
- var lt2 = (Tokenizer.LocatedToken) $12;
- sn2 = new SimpleMemberName (lt2.Value, lt2.Location);
- $$ = new Linq.GroupJoin (block, sn, (Expression)$5, outer_selector, (Linq.QueryBlock) current_block,
- sn2, GetLocation ($1));
+ //
+ // Set equals right side parent to beginning of linq query, it is not accessible therefore cannot cause name collisions
+ //
+ var parent = block.Parent;
+ while (parent is Linq.QueryBlock) {
+ parent = parent.Parent;
+ }
+ current_block.Parent = parent;
+
+ ((Linq.QueryBlock)current_block).AddRangeVariable (sn);
+
+ lt = (Tokenizer.LocatedToken) $12;
+ into = new Linq.RangeVariable (lt.Value, lt.Location);
+
+ $$ = new Linq.GroupJoin (block, sn, (Expression)$5, outer_selector, (Linq.QueryBlock) current_block, into, GetLocation ($1));
}
- current_block.AddStatement (new ContextualReturn ((Expression) $11));
- current_block.SetEndLocation (lexer.Location);
- current_block = current_block.Parent;
-
- ((Linq.QueryBlock)current_block).AddRangeVariable (sn2 ?? sn);
+ current_block = block.Parent;
+ ((Linq.QueryBlock)current_block).AddRangeVariable (into);
}
| JOIN type IDENTIFIER IN
{
}
expression opt_join_into
{
- var lt = (Tokenizer.LocatedToken) $3;
- var sn = new SimpleMemberName (lt.Value, lt.Location);
- SimpleMemberName sn2 = null;
+ current_block.AddStatement (new ContextualReturn ((Expression) $12));
+ current_block.SetEndLocation (lexer.Location);
+
var outer_selector = linq_clause_blocks.Pop ();
var block = linq_clause_blocks.Pop ();
+ var lt = (Tokenizer.LocatedToken) $3;
+ var sn = new Linq.RangeVariable (lt.Value, lt.Location);
+ Linq.RangeVariable into;
+
if ($13 == null) {
+ into = sn;
$$ = new Linq.Join (block, sn, (Expression)$6, outer_selector, (Linq.QueryBlock) current_block, GetLocation ($1)) {
IdentifierType = (FullNamedExpression)$2
};
} else {
- var lt2 = (Tokenizer.LocatedToken) $13;
- sn2 = new SimpleMemberName (lt2.Value, lt2.Location);
- $$ = new Linq.GroupJoin (block, sn, (Expression)$6, outer_selector, (Linq.QueryBlock) current_block, sn2, GetLocation ($1)) {
+ //
+ // Set equals right side parent to beginning of linq query, it is not accessible therefore cannot cause name collisions
+ //
+ var parent = block.Parent;
+ while (parent is Linq.QueryBlock) {
+ parent = parent.Parent;
+ }
+ current_block.Parent = parent;
+
+ ((Linq.QueryBlock)current_block).AddRangeVariable (sn);
+
+ lt = (Tokenizer.LocatedToken) $13;
+ into = new Linq.RangeVariable (lt.Value, lt.Location); // TODO:
+
+ $$ = new Linq.GroupJoin (block, sn, (Expression)$6, outer_selector, (Linq.QueryBlock) current_block, into, GetLocation ($1)) {
IdentifierType = (FullNamedExpression)$2
};
}
- current_block.AddStatement (new ContextualReturn ((Expression) $12));
- current_block.SetEndLocation (lexer.Location);
- current_block = current_block.Parent;
-
- ((Linq.QueryBlock)current_block).AddRangeVariable (sn2 ?? sn);
+ current_block = block.Parent;
+ ((Linq.QueryBlock)current_block).AddRangeVariable (into);
}
;
{
var current_block = linq_clause_blocks.Pop ();
var lt = (Tokenizer.LocatedToken) $2;
- $$ = new Linq.QueryStartClause ((Linq.QueryBlock)current_block, null, new SimpleMemberName (lt.Value, lt.Location), GetLocation ($1)) {
+ var rv = new Linq.RangeVariable (lt.Value, lt.Location);
+ $$ = new Linq.QueryStartClause ((Linq.QueryBlock)current_block, null, rv, GetLocation ($1)) {
next = (Linq.AQueryClause)$4
};
}
interactive_parsing
: EVAL_STATEMENT_PARSER EOF
- | EVAL_USING_DECLARATIONS_UNIT_PARSER using_directives
+ | EVAL_USING_DECLARATIONS_UNIT_PARSER using_directives opt_COMPLETE_COMPLETION
| EVAL_STATEMENT_PARSER {
Evaluator.LoadAliases (current_namespace);
Parameter [] mpar = new Parameter [1];
mpar [0] = new Parameter (new TypeExpression (TypeManager.object_type, Location.Null), "$retval", Parameter.Modifier.REF, null, Location.Null);
- ParametersCompiled pars = new ParametersCompiled (compiler, mpar);
+ ParametersCompiled pars = new ParametersCompiled (mpar);
current_local_parameters = pars;
Method method = new Method (
current_class,
;
%%
-// <summary>
-// A class used to pass around variable declarations and constants
-// </summary>
-class VariableDeclaration {
- public string identifier;
- Expression initializer;
- public Location Location;
-
- public VariableDeclaration (Tokenizer.LocatedToken lt, Expression initializer)
- {
- this.identifier = lt.Value;
- this.initializer = initializer;
- this.Location = lt.Location;
- }
-
- public Expression GetInitializer (FullNamedExpression type)
- {
- if (initializer is ArrayInitializer)
- return new ArrayCreation (type, (ArrayInitializer)initializer);
-
- return initializer;
- }
-
- public bool HasInitializer {
- get { return initializer != null; }
- }
-}
-
-
// <summary>
// A class used to hold info about an operator declarator
// </summary>
Report.Error (227, loc, "Unsafe code requires the `unsafe' command line option to be specified");
}
+void Warning_EmptyStatement (Location loc)
+{
+ Report.Warning (642, 3, loc, "Possible mistaken empty statement");
+}
+
void Error_NamedArgumentExpected (NamedArgument a)
{
Report.Error (1738, a.Location, "Named arguments must appear after the positional arguments");
mod_locations.Add (Tuple.Create ((Modifiers) token, loc));
}
-Block declare_local_variables (FullNamedExpression type, List<object> variable_declarators, Location loc)
-{
- Block implicit_block;
-
- //
- // If we are doing interactive editing, we want variable declarations
- // that are in the top block to be added instead to the class as
- // static variables
- //
- if (RootContext.StatementMode){
- bool hoist = true;
-
- for (Block b = current_block; b != null; b = b.Parent){
- if (b is ExplicitBlock && !(b is ToplevelBlock)){
- // There has been an explicit block, we cant add to the class
- hoist = false;
- break;
- }
- }
- if (hoist){
- //
- // We can use "current_block" since we know there are no explicit blocks
- //
- foreach (VariableDeclaration decl in variable_declarators){
- // We can not use the super-handy f.Initializer, because
- // multiple lines would force code to be executed out of sync
- var init = decl.GetInitializer (type);
- if (init != null){
- string id = "$" + decl.identifier;
- LocalInfo vi = current_block.AddVariable (type, id, decl.Location);
-
- // Avoid warning about this variable not being used.
- vi.Used = true;
-
- LocalVariableReference var;
- var = new LocalVariableReferenceWithClassSideEffect (current_container, decl.identifier, current_block, id, vi, decl.Location);
- Assign assign = new SimpleAssign (var, init, decl.Location);
- current_block.AddStatement (new StatementExpression (assign));
- assign = new SimpleAssign (new SimpleName (decl.identifier, decl.Location), var);
- current_block.AddStatement (new StatementExpression (assign));
- } else {
- Field f = new Field (current_container, (FullNamedExpression) type, Modifiers.PUBLIC | Modifiers.STATIC,
- new MemberName (decl.identifier, loc), null);
- current_container.AddField (f);
-
- // Register the field to be visible later as a global variable
- Evaluator.QueueField (f);
- }
- }
-
- return current_block;
- }
- }
-
- //
- // We use the `Used' property to check whether statements
- // have been added to the current block. If so, we need
- // to create another block to contain the new declaration
- // otherwise, as an optimization, we use the same block to
- // add the declaration.
- //
- // FIXME: A further optimization is to check if the statements
- // that were added were added as part of the initialization
- // below. In which case, no other statements have been executed
- // and we might be able to reduce the number of blocks for
- // situations like this:
- //
- // int j = 1; int k = j + 1;
- //
- if (current_block.Used)
- implicit_block = new Block (current_block, loc, lexer.Location);
- else
- implicit_block = current_block;
-
- foreach (VariableDeclaration decl in variable_declarators){
-
- if (implicit_block.AddVariable (type, decl.identifier, decl.Location) != null) {
- if (decl.HasInitializer){
- Assign assign;
-
- var lvr = new LocalVariableReference (implicit_block, decl.identifier, loc);
-
- assign = new SimpleAssign (lvr, decl.GetInitializer (type), decl.Location);
-
- implicit_block.AddStatement (new StatementExpression (assign));
- }
- }
- }
-
- return implicit_block;
-}
-
-Block declare_local_constants (FullNamedExpression type, List<object> declarators)
-{
- Block implicit_block;
-
- if (current_block.Used)
- implicit_block = new Block (current_block);
- else
- implicit_block = current_block;
-
- foreach (VariableDeclaration decl in declarators){
- implicit_block.AddConstant (type, decl.identifier, decl.GetInitializer (type), decl.Location);
- }
-
- return implicit_block;
-}
-
string CheckAttributeTarget (string a, Location l)
{
switch (a) {
this.file = file;
this.compiler = ctx;
- current_namespace = new NamespaceEntry (null, file, null);
+ current_namespace = new NamespaceEntry (ctx, null, file, null);
current_class = current_namespace.SlaveDeclSpace;
current_container = current_class.PartialContainer; // == RootContest.ToplevelTypes
oob_stack.Clear ();
Tokenizer tokenizer = lexer as Tokenizer;
tokenizer.cleanup ();
} catch (Exception e){
- if (e is yyParser.yyUnexpectedEof)
+ if (e is yyParser.yyUnexpectedEof) {
+ Error_SyntaxError (yyToken);
UnexpectedEOF = true;
-
- if (e is yyParser.yyException)
+ return;
+ }
+
+ if (e is yyParser.yyException) {
Report.Error (-25, lexer.Location, "Parsing error");
- else if (yacc_verbose_flag > 0)
- throw; // Used by compiler-tester to test internal errors
- else
+ } else {
+ // Used by compiler-tester to test internal errors
+ if (yacc_verbose_flag > 0)
+ throw;
+
Report.Error (589, lexer.Location, "Internal compiler error during parsing");
+ }
}
if (RootContext.ToplevelTypes.NamespaceEntry != null)
Report.Error (error, loc, msg);
}
-void CheckIdentifierToken (int yyToken, Location loc)
-{
- CheckToken (1041, yyToken, "Identifier expected", loc);
-}
-
string ConsumeStoredComment ()
{
string s = tmpComment;
Location GetLocation (object obj)
{
- if (obj is Tokenizer.LocatedToken)
- return ((Tokenizer.LocatedToken) obj).Location;
- if (obj is MemberName)
- return ((MemberName) obj).Location;
-
- if (obj is Expression)
- return ((Expression) obj).Location;
+ var lt = obj as Tokenizer.LocatedToken;
+ if (lt != null)
+ return lt.Location;
+
+ var mn = obj as MemberName;
+ if (mn != null)
+ return mn.Location;
+
+ var expr = obj as Expression;
+ if (expr != null)
+ return expr.Location;
return lexer.Location;
}
void start_block (Location loc)
{
- if (current_block == null || parsing_anonymous_method) {
- current_block = new ToplevelBlock (compiler, current_block, current_local_parameters, loc);
+ if (current_block == null) {
+ current_block = new ToplevelBlock (compiler, current_local_parameters, loc);
+ } else if (parsing_anonymous_method) {
+ current_block = new ParametersBlock (current_block, current_local_parameters, loc);
parsing_anonymous_method = false;
} else {
current_block = new ExplicitBlock (current_block, loc, Location.Null);
return retval;
}
-void
-start_anonymous (bool lambda, ParametersCompiled parameters, Location loc)
+void start_anonymous (bool lambda, ParametersCompiled parameters, Location loc)
{
if (RootContext.Version == LanguageVersion.ISO_1){
Report.FeatureIsNotAvailable (loc, "anonymous methods");
oob_stack.Push (current_anonymous_method);
oob_stack.Push (current_local_parameters);
+ oob_stack.Push (current_variable);
current_local_parameters = parameters;
* Completes the anonymous method processing, if lambda_expr is null, this
* means that we have a Statement instead of an Expression embedded
*/
-AnonymousMethodExpression end_anonymous (ToplevelBlock anon_block)
+AnonymousMethodExpression end_anonymous (ParametersBlock anon_block)
{
AnonymousMethodExpression retval;
current_anonymous_method.Block = anon_block;
retval = current_anonymous_method;
+ current_variable = (BlockVariableDeclaration) oob_stack.Pop ();
current_local_parameters = (ParametersCompiled) oob_stack.Pop ();
current_anonymous_method = (AnonymousMethodExpression) oob_stack.Pop ();
}
}
-
void Error_SyntaxError (int token)
{
Error_SyntaxError (0, token, "Unexpected symbol");
void Error_SyntaxError (int error_code, int token, string msg)
{
+ // An error message has been reported by tokenizer
+ if (token == Token.ERROR)
+ return;
+
string symbol = GetSymbolName (token);
string expecting = GetExpecting ();
+ var loc = lexer.Location - symbol.Length;
if (error_code == 0) {
- if (expecting == "`)'")
+ if (expecting == "`identifier'") {
+ if (token > Token.FIRST_KEYWORD && token < Token.LAST_KEYWORD) {
+ Report.Error (1041, loc, "Identifier expected, `{0}' is a keyword", symbol);
+ return;
+ }
+
+ error_code = 1001;
+ expecting = "identifier";
+ } else if (expecting == "`)'") {
error_code = 1026;
- else
+ } else {
error_code = 1525;
+ }
}
if (string.IsNullOrEmpty (expecting))
- Report.Error (error_code, lexer.Location, "{1} `{0}'", symbol, msg);
+ Report.Error (error_code, loc, "{1} `{0}'", symbol, msg);
else
- Report.Error (error_code, lexer.Location, "{2} `{0}', expecting {1}", symbol, expecting, msg);
+ Report.Error (error_code, loc, "{2} `{0}', expecting {1}", symbol, expecting, msg);
}
string GetExpecting ()
case Token.IDENTIFIER:
return "identifier";
+ case Token.EOF:
+ return "end-of-file";
+
// All of these are internal.
case Token.NONE:
case Token.ERROR:
case Token.FIRST_KEYWORD:
- case Token.EOF:
case Token.EVAL_COMPILATION_UNIT_PARSER:
case Token.EVAL_USING_DECLARATIONS_UNIT_PARSER:
case Token.EVAL_STATEMENT_PARSER:
static StringBuilder static_cmd_arg = new System.Text.StringBuilder ();
- //
- // Details about the error encoutered by the tokenizer
- //
- string error_details;
-
- public string error {
- get {
- return error_details;
- }
- }
-
public int Line {
get {
return ref_line;
case Token.IDENTIFIER:
switch (ptoken) {
case Token.DOT:
+ if (bracket_level == 0) {
+ is_type = false;
+ can_be_type = true;
+ }
+
+ continue;
case Token.OP_GENERICS_LT:
case Token.COMMA:
case Token.DOUBLE_COLON:
}
} catch (IndexOutOfRangeException) {
Report.Error (645, Location, "Identifier too long (limit is 512 chars)");
- col += pos - 1;
- return Token.ERROR;
+ --pos;
+ col += pos;
}
col += pos - 1;
return consume_identifier (c);
}
- error_details = ((char)c).ToString ();
- return Token.ERROR;
+ Report.Error (1056, Location, "Unexpected character `{0}'", ((char) c).ToString ());
}
if (CompleteOnEOF){
int c = get_char ();
tokens_seen = true;
if (c == '\'') {
- error_details = "Empty character literal";
- Report.Error (1011, Location, error_details);
- return Token.ERROR;
+ val = new CharLiteral ((char) c, Location);
+ Report.Error (1011, Location, "Empty character literal");
+ return Token.LITERAL;
}
+
if (c == '\r' || c == '\n') {
Report.Error (1010, Location, "Newline in constant");
return Token.ERROR;
if (c == '\n' || c == '\'')
break;
}
- return Token.ERROR;
}
return Token.LITERAL;
if (OptAttributes == null)
return null;
- Attribute obsolete_attr = OptAttributes.Search (PredefinedAttributes.Get.Obsolete);
+ Attribute obsolete_attr = OptAttributes.Search (Compiler.PredefinedAttributes.Obsolete);
if (obsolete_attr == null)
return null;
caching_flags &= ~Flags.HasCompliantAttribute_Undetected;
if (OptAttributes != null) {
- Attribute cls_attribute = OptAttributes.Search (PredefinedAttributes.Get.CLSCompliant);
+ Attribute cls_attribute = OptAttributes.Search (Compiler.PredefinedAttributes.CLSCompliant);
if (cls_attribute != null) {
caching_flags |= Flags.HasClsCompliantAttribute;
if (cls_attribute.GetClsCompliantAttributeValue ())
{
if (HasClsCompliantAttribute) {
if (CodeGen.Assembly.ClsCompliantAttribute == null) {
- Attribute a = OptAttributes.Search (PredefinedAttributes.Get.CLSCompliant);
+ Attribute a = OptAttributes.Search (Compiler.PredefinedAttributes.CLSCompliant);
if ((caching_flags & Flags.ClsCompliantAttributeFalse) != 0) {
Report.Warning (3021, 2, a.Location,
"`{0}' does not need a CLSCompliant attribute because the assembly is not marked as CLS-compliant",
}
if (!IsExposedFromAssembly ()) {
- Attribute a = OptAttributes.Search (PredefinedAttributes.Get.CLSCompliant);
+ Attribute a = OptAttributes.Search (Compiler.PredefinedAttributes.CLSCompliant);
Report.Warning (3019, 2, a.Location, "CLS compliance checking will not be performed on `{0}' because it is not visible from outside this assembly", GetSignatureForError ());
return false;
}
}
if (Parent.Parent != null && !Parent.IsClsComplianceRequired ()) {
- Attribute a = OptAttributes.Search (PredefinedAttributes.Get.CLSCompliant);
+ Attribute a = OptAttributes.Search (Compiler.PredefinedAttributes.CLSCompliant);
Report.Warning (3018, 1, a.Location, "`{0}' cannot be marked as CLS-compliant because it is a member of non CLS-compliant type `{1}'",
GetSignatureForError (), Parent.GetSignatureForError ());
return false;
//
// BeginInvoke
//
- Parameter[] compiled = new Parameter[Parameters.Count];
- for (int i = 0; i < compiled.Length; ++i)
- compiled[i] = new Parameter (new TypeExpression (Parameters.Types[i], Location),
- Parameters.FixedParameters[i].Name,
- Parameters.FixedParameters[i].ModFlags & (Parameter.Modifier.REF | Parameter.Modifier.OUT),
- null, Location);
-
- ParametersCompiled async_parameters = new ParametersCompiled (Compiler, compiled);
+ ParametersCompiled async_parameters;
+ if (Parameters.Count == 0) {
+ async_parameters = ParametersCompiled.EmptyReadOnlyParameters;
+ } else {
+ var compiled = new Parameter[Parameters.Count];
+ for (int i = 0; i < compiled.Length; ++i)
+ compiled[i] = new Parameter (new TypeExpression (Parameters.Types[i], Location),
+ Parameters.FixedParameters[i].Name,
+ Parameters.FixedParameters[i].ModFlags & (Parameter.Modifier.REF | Parameter.Modifier.OUT),
+ null, Location);
+
+ async_parameters = new ParametersCompiled (compiled);
+ }
async_parameters = ParametersCompiled.MergeGenerated (Compiler, async_parameters, false,
new Parameter[] {
{
if (ReturnType.Type == InternalType.Dynamic) {
return_attributes = new ReturnParameter (this, InvokeBuilder.MethodBuilder, Location);
- PredefinedAttributes.Get.Dynamic.EmitAttribute (return_attributes.Builder);
+ Compiler.PredefinedAttributes.Dynamic.EmitAttribute (return_attributes.Builder);
} else {
var trans_flags = TypeManager.HasDynamicTypeUsed (ReturnType.Type);
if (trans_flags != null) {
- var pa = PredefinedAttributes.Get.DynamicTransform;
+ var pa = Compiler.PredefinedAttributes.DynamicTransform;
if (pa.Constructor != null || pa.ResolveConstructor (Location, ArrayContainer.MakeType (TypeManager.bool_type))) {
return_attributes = new ReturnParameter (this, InvokeBuilder.MethodBuilder, Location);
return_attributes.Builder.SetCustomAttribute (
}
}
- Parameters.ApplyAttributes (InvokeBuilder.MethodBuilder);
+ Parameters.ApplyAttributes (this, InvokeBuilder.MethodBuilder);
Constructor.ConstructorBuilder.SetImplementationFlags (MethodImplAttributes.Runtime);
InvokeBuilder.MethodBuilder.SetImplementationFlags (MethodImplAttributes.Runtime);
if (BeginInvokeBuilder != null) {
- BeginInvokeBuilder.ParameterInfo.ApplyAttributes (BeginInvokeBuilder.MethodBuilder);
+ BeginInvokeBuilder.ParameterInfo.ApplyAttributes (this, BeginInvokeBuilder.MethodBuilder);
BeginInvokeBuilder.MethodBuilder.SetImplementationFlags (MethodImplAttributes.Runtime);
EndInvokeBuilder.MethodBuilder.SetImplementationFlags (MethodImplAttributes.Runtime);
xref.SetAttribute ("cref", "N:" + ns.GetSignatureForError ());
return; // a namespace
}
- if (GlobalRootNamespace.Instance.IsNamespace (name)) {
+ if (mc.Compiler.GlobalRootNamespace.IsNamespace (name)) {
xref.SetAttribute ("cref", "N:" + name);
return; // a namespace
}
// Extern aliased refs require special handling
if (alias == null)
- GlobalRootNamespace.Instance.AddAssemblyReference (a);
+ ctx.GlobalRootNamespace.AddAssemblyReference (a);
else
- GlobalRootNamespace.Instance.DefineRootNamespace (alias, a, ctx);
+ ctx.GlobalRootNamespace.DefineRootNamespace (alias, a, ctx);
} catch (BadImageFormatException f) {
// .NET 2.0 throws this if we try to load a module without an assembly manifest ...
}
}
- GlobalRootNamespace.Instance.AddModuleReference (m);
+ ctx.GlobalRootNamespace.AddModuleReference (m);
} catch (BadImageFormatException f) {
Error9 ("module", f.FileName, f.FusionLog);
foreach (var entry in external_aliases)
LoadAssembly (entry.Value, entry.Key, false);
- GlobalRootNamespace.Instance.ComputeNamespaces (ctx);
+ ctx.GlobalRootNamespace.ComputeNamespaces (ctx);
}
static string [] LoadArgs (string file)
set_method.Invoke (CodeGen.Assembly.Builder, BindingFlags.Default, null, new object[]{true}, null);
}
- GlobalRootNamespace.Instance.AddModuleReference (RootContext.ToplevelTypes.Builder);
+ ctx.GlobalRootNamespace.AddModuleReference (RootContext.ToplevelTypes.Builder);
//
// Load assemblies required
if (timestamps)
ShowTime ("Closing types");
- RootContext.CloseTypes ();
+ RootContext.CloseTypes (ctx);
PEFileKinds k = PEFileKinds.ConsoleApplication;
RootContext.Reset (full_flag);
TypeManager.Reset ();
- PredefinedAttributes.Reset ();
ArrayContainer.Reset ();
ReferenceContainer.Reset ();
PointerContainer.Reset ();
Parameter.Reset ();
- GlobalRootNamespace.Reset ();
Unary.Reset ();
Binary.Reset ();
ConstantFold.Reset ();
Delegate d = new Delegate (site.NamespaceEntry, site, new TypeExpression (rt, loc),
Modifiers.INTERNAL | Modifiers.COMPILER_GENERATED,
new MemberName ("Container" + index.ToString ("X")),
- new ParametersCompiled (null, p), null);
+ new ParametersCompiled (p), null);
d.CreateType ();
d.DefineType ();
TypeSpec instance_type;
public DynamicSiteClass (TypeContainer parent, MemberBase host, TypeParameter[] tparams)
- : base (parent, MakeMemberName (host, "DynamicSite", 0, tparams, Location.Null), tparams, Modifiers.STATIC)
+ : base (parent, MakeMemberName (host, "DynamicSite", parent.DynamicSitesCounter, tparams, Location.Null), tparams, Modifiers.STATIC)
{
if (tparams != null) {
mutator = new TypeParameterMutator (tparams, CurrentTypeParameters);
}
+
+ parent.DynamicSitesCounter++;
}
public FieldSpec CreateCallSiteField (FullNamedExpression type, Location loc)
return null;
}
- //
- // C# 3.0 introduced contextual keywords (var) which behaves like a type if type with
- // same name exists or as a keyword when no type was found
- //
- public virtual TypeExpr ResolveAsContextualType (IMemberContext rc, bool silent)
- {
- return ResolveAsTypeTerminal (rc, silent);
- }
-
//
// This is used to resolve the expression as a type, a null
// value will be returned if the expression is not a type
type.GetSignatureForError (), target.GetSignatureForError ());
}
- public virtual void Error_VariableIsUsedBeforeItIsDeclared (Report Report, string name)
- {
- Report.Error (841, loc, "A local variable `{0}' cannot be used before it is declared", name);
- }
-
public void Error_TypeArgumentsCannotBeUsed (Report report, Location loc, MemberSpec member, int arity)
{
// Better message for possible generic expressions
throw;
ec.Report.Error (584, loc, "Internal compiler error: {0}", ex.Message);
- return EmptyExpression.Null;
+ return EmptyExpression.Null; // TODO: Add location
}
}
return r.ResolveMember<MethodSpec> (rc, ref args);
}
+ [Flags]
+ public enum MemberLookupRestrictions
+ {
+ None = 0,
+ InvocableOnly = 1,
+ ExactArity = 1 << 2,
+ ReadAccess = 1 << 3
+ }
+
//
// Lookup type `queried_type' for code in class `container_type' with a qualifier of
// `qualifier_type' or null to lookup members in the current class.
//
- public static Expression MemberLookup (ResolveContext rc, TypeSpec currentType, TypeSpec queried_type, string name, int arity, bool invocableOnly, Location loc)
+ public static Expression MemberLookup (ResolveContext rc, TypeSpec currentType, TypeSpec queried_type, string name, int arity, MemberLookupRestrictions restrictions, Location loc)
{
var members = MemberCache.FindMembers (queried_type, name, false);
if (members == null)
if ((member.Modifiers & Modifiers.OVERRIDE) != 0 && member.Kind != MemberKind.Event)
continue;
- if (arity > 0 && member.Arity != arity)
+ if ((arity > 0 || (restrictions & MemberLookupRestrictions.ExactArity) != 0) && member.Arity != arity)
continue;
if (rc != null && !member.IsAccessible (currentType))
continue;
- if (invocableOnly) {
+ if ((restrictions & MemberLookupRestrictions.InvocableOnly) != 0) {
if (member is MethodSpec)
return new MethodGroupExpr (members, queried_type, loc);
Arguments arguments = new Arguments (1);
arguments.Add (new Argument (e));
- var res = new OverloadResolver (methods, OverloadResolver.Restrictions.NoBaseMembers, loc);
+ var res = new OverloadResolver (methods, OverloadResolver.Restrictions.BaseMembersIncluded | OverloadResolver.Restrictions.NoBaseMembers, loc);
var oper = res.ResolveOperator (ec, ref arguments);
if (oper == null)
return Name;
}
- public abstract Expression LookupNameExpression (ResolveContext rc, bool readMode, bool invocableOnly);
+ public abstract Expression LookupNameExpression (ResolveContext rc, MemberLookupRestrictions restriction);
}
/// <summary>
}
if (Arity == 0 && Name == "dynamic" && RootContext.Version > LanguageVersion.V_3) {
- if (!PredefinedAttributes.Get.Dynamic.IsDefined) {
+ if (!ec.Compiler.PredefinedAttributes.Dynamic.IsDefined) {
ec.Compiler.Report.Error (1980, Location,
"Dynamic keyword requires `{0}' to be defined. Are you missing System.Core.dll assembly reference?",
- PredefinedAttributes.Get.Dynamic.GetSignatureForError ());
+ ec.Compiler.PredefinedAttributes.Dynamic.GetSignatureForError ());
}
return new DynamicTypeExpr (loc);
return null;
}
- public override Expression LookupNameExpression (ResolveContext rc, bool readMode, bool invocableOnly)
+ public override Expression LookupNameExpression (ResolveContext rc, MemberLookupRestrictions restrictions)
{
int lookup_arity = Arity;
bool errorMode = false;
Expression e;
Block current_block = rc.CurrentBlock;
+ INamedBlockVariable variable = null;
+ bool variable_found = false;
while (true) {
//
// Stage 1: binding to local variables or parameters
//
+ // LAMESPEC: It should take invocableOnly into account but that would break csc compatibility
+ //
if (current_block != null && lookup_arity == 0) {
- LocalInfo vi = current_block.GetLocalInfo (Name);
- if (vi != null) {
- // TODO: pass vi in to speed things up
- e = new LocalVariableReference (rc.CurrentBlock, Name, loc);
- } else {
- e = current_block.Toplevel.GetParameterReference (Name, loc);
- }
-
- if (e != null) {
- if (Arity > 0)
- Error_TypeArgumentsCannotBeUsed (rc.Report, "variable", Name, loc);
-
- return e;
- }
-
- if (!errorMode)
- current_block.CheckInvariantMeaningInBlock (Name, this, loc);
+ if (current_block.ParametersBlock.TopBlock.GetLocalName (Name, current_block.Original, ref variable)) {
+ if (!variable.IsDeclared) {
+ // We found local name in accessible block but it's not
+ // initialized yet, maybe the user wanted to bind to something else
+ errorMode = true;
+ variable_found = true;
+ } else {
+ e = variable.CreateReferenceExpression (rc, loc);
+ if (e != null) {
+ if (Arity > 0)
+ Error_TypeArgumentsCannotBeUsed (rc.Report, "variable", Name, loc);
-/*
- //if (errorMode) {
- IKnownVariable ikv = current_block.Explicit.GetKnownVariable (Name);
- if (ikv != null) {
- LocalInfo li = ikv as LocalInfo;
- // Supress CS0219 warning
- if (li != null)
- li.Used = true;
-
- Error_VariableIsUsedBeforeItIsDeclared (rc.Report, Name);
- return null;
+ return e;
+ }
}
- //}
-*/
+ }
}
//
TypeSpec member_type = rc.CurrentType;
TypeSpec current_type = member_type;
for (; member_type != null; member_type = member_type.DeclaringType) {
- var me = MemberLookup (errorMode ? null : rc, current_type, member_type, Name, lookup_arity, invocableOnly, loc) as MemberExpr;
+ var me = MemberLookup (errorMode ? null : rc, current_type, member_type, Name, lookup_arity, restrictions, loc) as MemberExpr;
if (me == null)
continue;
if (errorMode) {
- if (me is MethodGroupExpr) {
+ if (variable != null) {
+ if (me is FieldExpr || me is ConstantExpr || me is EventExpr || me is PropertyExpr) {
+ rc.Report.Error (844, loc,
+ "A local variable `{0}' cannot be used before it is declared. Consider renaming the local variable when it hides the member `{1}'",
+ Name, me.GetSignatureForError ());
+ } else {
+ break;
+ }
+ } else if (me is MethodGroupExpr) {
// Leave it to overload resolution to report correct error
} else {
// TODO: rc.Report.SymbolRelatedToPreviousError ()
ErrorIsInaccesible (rc, me.GetSignatureForError (), loc);
}
} else {
+ if (variable != null && (restrictions & MemberLookupRestrictions.InvocableOnly) == 0) {
+ rc.Report.SymbolRelatedToPreviousError (variable.Location, Name);
+ rc.Report.Error (135, loc, "`{0}' conflicts with a declaration in a child block", Name);
+ }
+
//
// MemberLookup does not check accessors availability, this is actually needed for properties only
//
if (pe != null) {
// Break as there is no other overload available anyway
- if (readMode) {
+ if ((restrictions & MemberLookupRestrictions.ReadAccess) != 0) {
if (!pe.PropertyInfo.HasGet || !pe.PropertyInfo.Get.IsAccessible (current_type))
break;
//
// Stage 3: Lookup nested types, namespaces and type parameters in the context
//
- if (!invocableOnly) {
+ if ((restrictions & MemberLookupRestrictions.InvocableOnly) == 0 && !variable_found) {
e = ResolveAsTypeStep (rc, lookup_arity == 0 || !errorMode);
if (e != null)
return e;
}
if (errorMode) {
- rc.Report.Error (103, loc, "The name `{0}' does not exist in the current context", Name);
+ if (variable_found) {
+ rc.Report.Error (841, loc, "A local variable `{0}' cannot be used before it is declared", Name);
+ } else {
+ rc.Report.Error (103, loc, "The name `{0}' does not exist in the current context", Name);
+ }
+
return null;
}
}
lookup_arity = 0;
- invocableOnly = false;
+ restrictions &= ~MemberLookupRestrictions.InvocableOnly;
errorMode = true;
}
}
Expression SimpleNameResolve (ResolveContext ec, Expression right_side, bool intermediate)
{
- Expression e = LookupNameExpression (ec, right_side == null, false);
+ Expression e = LookupNameExpression (ec, right_side == null ? MemberLookupRestrictions.ReadAccess : MemberLookupRestrictions.None);
if (e == null)
return null;
DelegateInvoke = 1,
ProbingOnly = 1 << 1,
CovariantDelegate = 1 << 2,
- NoBaseMembers = 1 << 3
+ NoBaseMembers = 1 << 3,
+ BaseMembersIncluded = 1 << 4
}
public interface IBaseMembersProvider
//
var ms = candidate as MethodSpec;
if (ms != null && ms.IsGeneric) {
+ // Setup constraint checker for probing only
+ ConstraintChecker cc = new ConstraintChecker (null);
+
if (type_arguments != null) {
var g_args_count = ms.Arity;
if (g_args_count != type_arguments.Count)
prev_recorder = ec.Report.SetPrinter (lambda_conv_msgs);
}
- score = TypeManager.InferTypeArguments (ec, arguments, ref ms);
+ var ti = new TypeInference (arguments);
+ TypeSpec[] i_args = ti.InferMethodArguments (ec, ms);
lambda_conv_msgs.EndSession ();
- if (score != 0)
- return score - 20000;
+ if (i_args == null)
+ return ti.InferenceScore - 20000;
- candidate = ms;
- pd = ms.Parameters;
+ if (i_args.Length != 0) {
+ candidate = ms = ms.MakeGenericMethod (i_args);
+ pd = ms.Parameters;
+ }
+
+ cc.IgnoreInferredDynamic = true;
}
//
- // Type arguments constraints have to match
+ // Type arguments constraints have to match for the method to be applicable
//
- if (!ConstraintChecker.CheckAll (null, ms.GetGenericMethodDefinition (), ms.TypeArguments, ms.Constraints, loc))
+ if (!cc.CheckAll (ms.GetGenericMethodDefinition (), ms.TypeArguments, ms.Constraints, loc))
return int.MaxValue - 25000;
} else {
best_candidate_args = candidate_args;
best_candidate_params = params_expanded_form;
} else if (candidate_rate == 0) {
+ //
+ // The member look is done per type for most operations but sometimes
+ // it's not possible like for binary operators overload because they
+ // are unioned between 2 sides
+ //
+ if ((restrictions & Restrictions.BaseMembersIncluded) != 0) {
+ if (TypeSpec.IsBaseClass (best_candidate.DeclaringType, member.DeclaringType, true))
+ continue;
+ }
+
// Is new candidate better
if (BetterFunction (rc, candidate_args, member, params_expanded_form, best_candidate, best_candidate_params)) {
best_candidate = member;
if (ms != null && ms.IsGeneric) {
bool constr_ok = true;
if (ms.TypeArguments != null)
- constr_ok = ConstraintChecker.CheckAll (rc.MemberContext, ms.GetGenericMethodDefinition (), ms.TypeArguments, ms.Constraints, loc);
+ constr_ok = new ConstraintChecker (rc.MemberContext).CheckAll (ms.GetGenericMethodDefinition (), ms.TypeArguments, ms.Constraints, loc);
if (ta_count == 0) {
if (custom_errors != null && custom_errors.TypeInferenceFailed (rc, best_candidate))
base.EmitSideEffect (ec);
}
- public override void Error_VariableIsUsedBeforeItIsDeclared (Report r, string name)
- {
- r.Error (844, loc,
- "A local variable `{0}' cannot be used before it is declared. Consider renaming the local variable when it hides the field `{1}'",
- name, GetSignatureForError ());
- }
-
public void AddressOf (EmitContext ec, AddressOp mode)
{
if ((mode & AddressOp.Store) != 0)
{
if (right_side == EmptyExpression.OutAccess.Instance) {
// TODO: best_candidate can be null at this point
- if (best_candidate != null && ec.CurrentBlock.Toplevel.GetParameterReference (best_candidate.Name, loc) is MemberAccess) {
+ INamedBlockVariable variable = null;
+ if (best_candidate != null && ec.CurrentBlock.ParametersBlock.TopBlock.GetLocalName (best_candidate.Name, ec.CurrentBlock, ref variable) && variable is Linq.RangeVariable) {
ec.Report.Error (1939, loc, "A range variable `{0}' may not be passes as `ref' or `out' parameter",
best_candidate.Name);
} else {
bool ResolveSetter (ResolveContext rc)
{
if (!best_candidate.HasSet) {
- if (rc.CurrentBlock.Toplevel.GetParameterReference (best_candidate.Name, loc) is MemberAccess) {
- rc.Report.Error (1947, loc, "A range variable `{0}' cannot be assigned to. Consider using `let' clause to store the value",
- best_candidate.Name);
- } else {
- rc.Report.Error (200, loc, "Property or indexer `{0}' cannot be assigned to (it is read-only)",
- GetSignatureForError ());
- }
+ rc.Report.Error (200, loc, "Property or indexer `{0}' cannot be assigned to (it is read-only)",
+ GetSignatureForError ());
return false;
}
}
}
- public class TemporaryVariable : VariableReference
+ public class TemporaryVariableReference : VariableReference
{
- LocalInfo li;
+ public class Declarator : Statement
+ {
+ TemporaryVariableReference variable;
+
+ public Declarator (TemporaryVariableReference variable)
+ {
+ this.variable = variable;
+ loc = variable.loc;
+ }
+
+ protected override void DoEmit (EmitContext ec)
+ {
+ variable.li.CreateBuilder (ec);
+ }
- public TemporaryVariable (TypeSpec type, Location loc)
+ protected override void CloneTo (CloneContext clonectx, Statement target)
+ {
+ // Nothing
+ }
+ }
+
+ LocalVariable li;
+
+ public TemporaryVariableReference (LocalVariable li, Location loc)
{
- this.type = type;
+ this.li = li;
+ this.type = li.Type;
this.loc = loc;
}
+ public LocalVariable LocalInfo {
+ get {
+ return li;
+ }
+ }
+
+ public static TemporaryVariableReference Create (TypeSpec type, Block block, Location loc)
+ {
+ var li = LocalVariable.CreateCompilerGenerated (type, block, loc);
+ return new TemporaryVariableReference (li, loc);
+ }
+
public override Expression CreateExpressionTree (ResolveContext ec)
{
throw new NotSupportedException ("ET");
{
eclass = ExprClass.Variable;
- TypeExpr te = new TypeExpression (type, loc);
- li = ec.CurrentBlock.AddTemporaryVariable (te, loc);
- if (!li.Resolve (ec))
- return null;
-
//
// Don't capture temporary variables except when using
// iterator redirection
public override void Emit (EmitContext ec)
{
+ li.CreateBuilder (ec);
+
Emit (ec, false);
}
public void EmitAssign (EmitContext ec, Expression source)
{
+ li.CreateBuilder (ec);
+
EmitAssign (ec, source, false, false);
}
///
class VarExpr : SimpleName
{
- // Used for error reporting only
- int initializers_count;
-
public VarExpr (Location loc)
: base ("var", loc)
{
- initializers_count = 1;
- }
-
- public int VariableInitializersCount {
- set {
- this.initializers_count = value;
- }
}
public bool InferType (ResolveContext ec, Expression right_side)
else
ec.Compiler.Report.Error (825, loc, "The contextual keyword `var' may only appear within a local variable declaration");
}
-
- public override TypeExpr ResolveAsContextualType (IMemberContext rc, bool silent)
- {
- TypeExpr te = base.ResolveAsContextualType (rc, true);
- if (te != null)
- return te;
-
- if (RootContext.Version < LanguageVersion.V_3)
- rc.Compiler.Report.FeatureIsNotAvailable (loc, "implicitly typed local variable");
-
- if (initializers_count == 1)
- return null;
-
- if (initializers_count > 1) {
- rc.Compiler.Report.Error (819, loc, "An implicitly typed local variable declaration cannot include multiple declarators");
- initializers_count = 1;
- return null;
- }
-
- if (initializers_count == 0) {
- initializers_count = 1;
- rc.Compiler.Report.Error (818, loc, "An implicitly typed local variable declarator must include an initializer");
- return null;
- }
-
- return null;
- }
}
}
CompilerCallableEntryPoint.Reset ();
RootContext.ToplevelTypes = new ModuleCompiled (ctx, true);
- /*var ctypes = */TypeManager.InitCoreTypes ();
+ var ctypes = TypeManager.InitCoreTypes ();
ctx.MetaImporter.Initialize ();
driver.LoadReferences ();
+ TypeManager.InitCoreTypes (ctx, ctypes);
TypeManager.InitOptionalCoreTypes (ctx);
RootContext.EvalMode = true;
CompilerCallableEntryPoint.PartialReset ();
RootContext.PartialReset ();
- // Workaround for API limitation where full message printer cannot be passed
- ReportPrinter printer;
- if (MessageOutput == Console.Out || MessageOutput == Console.Error){
- var console_reporter = new ConsoleReportPrinter (MessageOutput);
- console_reporter.Fatal = driver.fatal_errors;
- printer = console_reporter;
- } else
- printer = new StreamReportPrinter (MessageOutput);
-
- ctx = new CompilerContext (new ReflectionMetaImporter (), new Report (printer));
RootContext.ToplevelTypes = new ModuleCompiled (ctx, true);
- ctx.MetaImporter.Initialize ();
-
- //
- // PartialReset should not reset the core types, this is very redundant.
- //
-// if (!TypeManager.InitCoreTypes (ctx, null))
-// throw new Exception ("Failed to InitCoreTypes");
-// TypeManager.InitOptionalCoreTypes (ctx);
-
Location.AddFile (null, "{interactive}");
Location.Initialize ();
BlockContext bc = new BlockContext (method, method.Block, method.ReturnType);
try {
- method.Block.Resolve (null, bc, method.ParameterInfo, method);
+ method.Block.Resolve (null, bc, method);
} catch (CompletionResult cr){
prefix = cr.BaseText;
return cr.Result;
return null;
}
- RootContext.CloseTypes ();
+ RootContext.CloseTypes (ctx);
if (Environment.GetEnvironmentVariable ("SAVE") != null)
CodeGen.Save (current_debug_name, false, Report);
{
lock (evaluator_lock){
driver.LoadAssembly (file, false);
- GlobalRootNamespace.Instance.ComputeNamespaces (ctx);
+ ctx.GlobalRootNamespace.ComputeNamespaces (ctx);
}
}
lock (evaluator_lock){
// GlobalRootNamespace.Instance.AddAssemblyReference (a);
// GlobalRootNamespace.Instance.ComputeNamespaces (ctx);
- ctx.MetaImporter.ImportAssembly (a, GlobalRootNamespace.Instance);
+ ctx.MetaImporter.ImportAssembly (a, ctx.GlobalRootNamespace);
}
}
#endif
}
- //
- // A local variable reference that will create a Field in a
- // Class with the resolved type. This is necessary so we can
- // support "var" as a field type in a class declaration.
- //
- // We allow LocalVariableReferece to do the heavy lifting, and
- // then we insert the field with the resolved type
- //
- public class LocalVariableReferenceWithClassSideEffect : LocalVariableReference {
- TypeContainer container;
- string name;
-
- public LocalVariableReferenceWithClassSideEffect (TypeContainer container, string name, Block current_block, string local_variable_id, LocalInfo li, Location loc)
- : base (current_block, local_variable_id, loc, li, false)
+ class HoistedEvaluatorVariable : HoistedVariable
+ {
+ public HoistedEvaluatorVariable (Field field)
+ : base (null, field)
{
- this.container = container;
- this.name = name;
}
- public override bool Equals (object obj)
+ public override void EmitSymbolInfo ()
{
- LocalVariableReferenceWithClassSideEffect lvr = obj as LocalVariableReferenceWithClassSideEffect;
- if (lvr == null)
- return false;
-
- if (lvr.name != name || lvr.container != container)
- return false;
-
- return base.Equals (obj);
}
- public override int GetHashCode ()
+ protected override FieldExpr GetFieldExpression (EmitContext ec)
{
- return name.GetHashCode ();
- }
-
- override public Expression DoResolveLValue (ResolveContext ec, Expression right_side)
- {
- Expression ret = base.DoResolveLValue (ec, right_side);
- if (ret == null)
- return null;
-
- Field f = new Field (container, new TypeExpression (ret.Type, Location),
- Modifiers.PUBLIC | Modifiers.STATIC,
- new MemberName (name, Location), null);
- container.AddField (f);
- if (f.Define ())
- Evaluator.QueueField (f);
-
- return ret;
+ return new FieldExpr (field, field.Location);
}
}
}
// This means its really a statement.
- if (clone.Type == TypeManager.void_type){
- source = source.Resolve (ec);
- target = null;
- type = TypeManager.void_type;
- eclass = ExprClass.Value;
- return this;
+ if (clone.Type == TypeManager.void_type || clone is DynamicInvocation || clone is Assign) {
+ return clone;
}
return base.DoResolve (ec);
}
-
- public override void Emit (EmitContext ec)
- {
- if (target == null)
- source.Emit (ec);
- else
- base.Emit (ec);
- }
-
- public override void EmitStatement (EmitContext ec)
- {
- if (target == null)
- source.Emit (ec);
- else
- base.EmitStatement (ec);
- }
}
public class Undo {
VariableInfo vi = vr.VariableInfo;
if (vi != null) {
if (vi.LocalInfo != null)
- vi.LocalInfo.Used = true;
+ vi.LocalInfo.SetIsUsed ();
//
// A variable is considered definitely assigned if you take its address.
Arguments args = new Arguments (1);
args.Add (new Argument (expr));
- var res = new OverloadResolver (methods, OverloadResolver.Restrictions.NoBaseMembers, loc);
+ var res = new OverloadResolver (methods, OverloadResolver.Restrictions.BaseMembersIncluded | OverloadResolver.Restrictions.NoBaseMembers, loc);
var oper = res.ResolveOperator (ec, ref args);
if (oper == null)
}
//
- // Step 2: Perform Operator Overload location
+ // Step 2: Perform Operator overload resolution
//
var user_op = IsDecrement ? Operator.OpType.Decrement : Operator.OpType.Increment;
var methods = MemberCache.GetUserOperator (type, user_op, false);
Arguments args = new Arguments (1);
args.Add (new Argument (expr));
- var res = new OverloadResolver (methods, OverloadResolver.Restrictions.NoBaseMembers, loc);
+ var res = new OverloadResolver (methods, OverloadResolver.Restrictions.BaseMembersIncluded | OverloadResolver.Restrictions.NoBaseMembers, loc);
var op = res.ResolveOperator (ec, ref args);
if (op == null)
return null;
RelationalMask = 1 << 13
}
+ protected enum State
+ {
+ None = 0,
+ Compound = 1 << 1,
+ LeftNullLifted = 1 << 2,
+ RightNullLifted = 1 << 3
+ }
+
readonly Operator oper;
protected Expression left, right;
- readonly bool is_compound;
+ protected State state;
Expression enum_conversion;
static PredefinedOperator[] standard_operators;
public Binary (Operator oper, Expression left, Expression right, bool isCompound, Location loc)
: this (oper, left, right, loc)
{
- this.is_compound = isCompound;
+ if (isCompound)
+ state |= State.Compound;
}
public Binary (Operator oper, Expression left, Expression right, Location loc)
this.loc = loc;
}
+ #region Properties
+
+ public bool IsCompound {
+ get {
+ return (state & State.Compound) != 0;
+ }
+ }
+
public Operator Oper {
get {
return oper;
}
}
-
+
+ #endregion
+
/// <summary>
/// Returns a stringified representation of the Operator
/// </summary>
break;
}
- if (is_compound)
+ if (IsCompound)
return s + "=";
return s;
{
switch (oper) {
case Operator.Addition:
- return is_compound ? "AddAssign" : "Add";
+ return IsCompound ? "AddAssign" : "Add";
case Operator.BitwiseAnd:
- return is_compound ? "AndAssign" : "And";
+ return IsCompound ? "AndAssign" : "And";
case Operator.BitwiseOr:
- return is_compound ? "OrAssign" : "Or";
+ return IsCompound ? "OrAssign" : "Or";
case Operator.Division:
- return is_compound ? "DivideAssign" : "Divide";
+ return IsCompound ? "DivideAssign" : "Divide";
case Operator.ExclusiveOr:
- return is_compound ? "ExclusiveOrAssign" : "ExclusiveOr";
+ return IsCompound ? "ExclusiveOrAssign" : "ExclusiveOr";
case Operator.Equality:
return "Equal";
case Operator.GreaterThan:
case Operator.Inequality:
return "NotEqual";
case Operator.LeftShift:
- return is_compound ? "LeftShiftAssign" : "LeftShift";
+ return IsCompound ? "LeftShiftAssign" : "LeftShift";
case Operator.LessThan:
return "LessThan";
case Operator.LessThanOrEqual:
case Operator.LogicalOr:
return "Or";
case Operator.Modulus:
- return is_compound ? "ModuloAssign" : "Modulo";
+ return IsCompound ? "ModuloAssign" : "Modulo";
case Operator.Multiply:
- return is_compound ? "MultiplyAssign" : "Multiply";
+ return IsCompound ? "MultiplyAssign" : "Multiply";
case Operator.RightShift:
- return is_compound ? "RightShiftAssign" : "RightShift";
+ return IsCompound ? "RightShiftAssign" : "RightShift";
case Operator.Subtraction:
- return is_compound ? "SubtractAssign" : "Subtract";
+ return IsCompound ? "SubtractAssign" : "Subtract";
default:
throw new NotImplementedException ("Unknown expression type operator " + oper.ToString ());
}
return ResolveOperatorPointer (ec, l, r);
// Enums
- bool lenum = TypeManager.IsEnumType (l);
- bool renum = TypeManager.IsEnumType (r);
+ bool lenum = l.IsEnum;
+ bool renum = r.IsEnum;
if (lenum || renum) {
expr = ResolveOperatorEnum (ec, lenum, renum, l, r);
- // TODO: Can this be ambiguous
if (expr != null)
return expr;
}
//
// 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 + (U x, E e)
// E operator + (E e, U x)
+ // E operator + (U x, E e)
//
- if (!((oper & (Operator.ComparisonMask | Operator.BitwiseMask)) != 0 ||
- (oper == Operator.Subtraction && lenum) ||
- (oper == Operator.Addition && (lenum != renum || type != null)))) // type != null for lifted null
- return null;
-
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) {
- left = expr;
- ltype = expr.Type;
- }
+ if (expr == null)
+ return null;
+
+ left = expr;
+ ltype = expr.Type;
} else if (lenum) {
+ underlying_type = EnumSpec.GetUnderlyingType (ltype);
expr = Convert.ImplicitConversion (ec, right, ltype, loc);
- if (expr != null) {
- right = expr;
- rtype = expr.Type;
- }
+ if (expr == null)
+ return null;
+
+ right = expr;
+ rtype = expr.Type;
+ } else {
+ return null;
}
- }
- if (ltype == rtype) {
- underlying_type = EnumSpec.GetUnderlyingType (ltype);
+ 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;
+ }
- if (left is Constant)
- left = ((Constant) left).ConvertExplicitly (false, underlying_type).Resolve (ec);
- else
- left = EmptyCast.Create (left, underlying_type);
+ left = expr;
+ } else {
+ res_type = underlying_type;
+ }
- if (right is Constant)
- right = ((Constant) right).ConvertExplicitly (false, underlying_type).Resolve (ec);
- else
- right = EmptyCast.Create (right, underlying_type);
- } else if (lenum) {
- underlying_type = EnumSpec.GetUnderlyingType (ltype);
+ 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 = Convert.ImplicitConversion (ec, right, underlying_type, right.Location);
+ if (expr == null)
+ return null;
- if (oper != Operator.Subtraction && oper != Operator.Addition) {
- Constant c = right as Constant;
- if (c == null || !c.IsDefaultValue)
- return null;
+ res_type = ltype;
+ } else {
+ res_type = underlying_type;
+ }
+
+ right = expr;
+ underlying_type_result = underlying_type;
} else {
- if (!Convert.ImplicitStandardConversionExists (right, underlying_type))
- return null;
+ return null;
+ }
+ } else if (oper == Operator.Addition) {
+ if (lenum) {
+ underlying_type = EnumSpec.GetUnderlyingType (ltype);
+ res_type = ltype;
+
+ if (rtype != underlying_type && (state & (State.RightNullLifted | State.LeftNullLifted)) == 0) {
+ expr = Convert.ImplicitConversion (ec, right, underlying_type, right.Location);
+ if (expr == null)
+ return null;
- right = Convert.ImplicitConversionStandard (ec, right, underlying_type, right.Location);
+ right = expr;
+ }
+ } else {
+ underlying_type = EnumSpec.GetUnderlyingType (rtype);
+ res_type = rtype;
+ if (ltype != underlying_type) {
+ expr = Convert.ImplicitConversion (ec, left, underlying_type, left.Location);
+ if (expr == null)
+ return null;
+
+ left = expr;
+ }
}
+ 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).Resolve (ec);
else
left = EmptyCast.Create (left, underlying_type);
+ }
- } else if (renum) {
- underlying_type = EnumSpec.GetUnderlyingType (rtype);
-
- if (oper != Operator.Addition) {
- Constant c = left as Constant;
- if (c == null || !c.IsDefaultValue)
- return null;
- } else {
- if (!Convert.ImplicitStandardConversionExists (left, underlying_type))
- return null;
-
- left = Convert.ImplicitConversionStandard (ec, left, underlying_type, left.Location);
- }
-
+ if (right.Type != underlying_type) {
if (right is Constant)
right = ((Constant) right).ConvertExplicitly (false, underlying_type).Resolve (ec);
else
right = EmptyCast.Create (right, underlying_type);
-
- } else {
- return null;
}
//
return null;
}
- TypeSpec res_type = null;
- if ((oper & Operator.BitwiseMask) != 0 || oper == Operator.Subtraction || oper == Operator.Addition) {
- TypeSpec promoted_type = lenum ? left.Type : right.Type;
- enum_conversion = Convert.ExplicitNumericConversion (
- new EmptyExpression (promoted_type), underlying_type);
-
- if (oper == Operator.Subtraction && renum && lenum)
- res_type = underlying_type;
- else if (oper == Operator.Addition && renum)
- res_type = rtype;
- else
- res_type = ltype;
+ if (underlying_type_result != null && left.Type != underlying_type_result) {
+ enum_conversion = Convert.ExplicitNumericConversion (new EmptyExpression (left.Type), underlying_type_result);
}
-
+
expr = ResolveOperatorPredefined (ec, standard_operators, true, res_type);
- if (!is_compound || expr == null)
+ if (expr == null)
+ return null;
+
+ if (!IsCompound)
return expr;
//
left_operators = right_operators;
}
- var res = new OverloadResolver (left_operators, OverloadResolver.Restrictions.ProbingOnly, loc);
+ var res = new OverloadResolver (left_operators, OverloadResolver.Restrictions.ProbingOnly |
+ OverloadResolver.Restrictions.NoBaseMembers | OverloadResolver.Restrictions.BaseMembersIncluded, loc);
var oper_method = res.ResolveOperator (ec, ref args);
if (oper_method == null)
}
}
- /// <summary>
- /// Local variables
- /// </summary>
- public class LocalVariableReference : VariableReference {
- readonly string name;
- public Block Block;
- public LocalInfo local_info;
- bool is_readonly;
+ //
+ // Resolved reference to a local variable
+ //
+ public class LocalVariableReference : VariableReference
+ {
+ public LocalVariable local_info;
- public LocalVariableReference (Block block, string name, Location l)
+ public LocalVariableReference (LocalVariable li, Location l)
{
- Block = block;
- this.name = name;
+ this.local_info = li;
loc = l;
}
- //
- // Setting `is_readonly' to false will allow you to create a writable
- // reference to a read-only variable. This is used by foreach and using.
- //
- public LocalVariableReference (Block block, string name, Location l,
- LocalInfo local_info, bool is_readonly)
- : this (block, name, l)
- {
- this.local_info = local_info;
- this.is_readonly = is_readonly;
- }
-
public override VariableInfo VariableInfo {
get { return local_info.VariableInfo; }
}
get { return false; }
}
- public bool IsReadOnly {
- get { return is_readonly; }
- }
-
public override string Name {
- get { return name; }
+ get { return local_info.Name; }
}
public bool VerifyAssigned (ResolveContext ec)
return variable_info == null || variable_info.IsAssigned (ec, loc);
}
- void ResolveLocalInfo ()
- {
- if (local_info == null) {
- local_info = Block.GetLocalInfo (Name);
- type = local_info.VariableType;
- is_readonly = local_info.ReadOnly;
- }
- }
-
public override void SetHasAddressTaken ()
{
local_info.AddressTaken = true;
Expression DoResolveBase (ResolveContext ec)
{
- Expression e = Block.GetConstantExpression (Name);
- if (e != null)
- return e.Resolve (ec);
-
VerifyAssigned (ec);
//
}
eclass = ExprClass.Variable;
- type = local_info.VariableType;
+ type = local_info.Type;
return this;
}
protected override Expression DoResolve (ResolveContext ec)
{
- ResolveLocalInfo ();
- local_info.Used = true;
+ local_info.SetIsUsed ();
- if (type == null && local_info.Type is VarExpr) {
- local_info.VariableType = TypeManager.object_type;
- Error_VariableIsUsedBeforeItIsDeclared (ec.Report, Name);
- return null;
- }
-
return DoResolveBase (ec);
}
public override Expression DoResolveLValue (ResolveContext ec, Expression right_side)
{
- ResolveLocalInfo ();
-
// is out param
if (right_side == EmptyExpression.OutAccess.Instance)
- local_info.Used = true;
+ local_info.SetIsUsed ();
- // Infer implicitly typed local variable
- if (type == null) {
- VarExpr ve = local_info.Type as VarExpr;
- if (ve != null) {
- if (!ve.InferType (ec, right_side))
- return null;
- type = local_info.VariableType = ve.Type;
- }
- }
-
- if (is_readonly) {
+ if (local_info.IsReadonly && !ec.HasAny (ResolveContext.Options.FieldInitializerScope | ResolveContext.Options.UsingInitializerScope)) {
int code;
string msg;
if (right_side == EmptyExpression.OutAccess.Instance) {
public override int GetHashCode ()
{
- return Name.GetHashCode ();
+ return local_info.GetHashCode ();
}
public override bool Equals (object obj)
if (lvr == null)
return false;
- return Name == lvr.Name && Block == lvr.Block;
+ return local_info == lvr.local_info;
}
protected override ILocalVariable Variable {
protected override void CloneTo (CloneContext clonectx, Expression t)
{
- LocalVariableReference target = (LocalVariableReference) t;
-
- target.Block = clonectx.LookupBlock (Block);
- if (local_info != null)
- target.local_info = clonectx.LookupVariable (local_info);
+ // Nothing
}
}
/// This represents a reference to a parameter in the intermediate
/// representation.
/// </summary>
- public class ParameterReference : VariableReference {
- readonly ToplevelParameterInfo pi;
+ public class ParameterReference : VariableReference
+ {
+ protected ParametersBlock.ParameterInfo pi;
- public ParameterReference (ToplevelParameterInfo pi, Location loc)
+ public ParameterReference (ParametersBlock.ParameterInfo pi, Location loc)
{
this.pi = pi;
this.loc = loc;
}
+ #region Properties
+
public override bool IsRef {
get { return (pi.Parameter.ModFlags & Parameter.Modifier.ISBYREF) != 0; }
}
get { return Parameter; }
}
+ #endregion
+
public bool IsAssigned (ResolveContext ec, Location loc)
{
// HACK: Variables are not captured in probing mode
type = pi.ParameterType;
eclass = ExprClass.Variable;
- AnonymousExpression am = ec.CurrentAnonymousMethod;
- if (am == null)
- return true;
-
- Block b = ec.CurrentBlock;
- while (b != null) {
- b = b.Toplevel;
- IParameterData[] p = b.Toplevel.Parameters.FixedParameters;
- for (int i = 0; i < p.Length; ++i) {
- if (p [i] != Parameter)
- continue;
-
- //
- // Don't capture local parameters
- //
- if (b == ec.CurrentBlock.Toplevel && !am.IsIterator)
- return true;
-
- if (IsRef) {
- ec.Report.Error (1628, loc,
- "Parameter `{0}' cannot be used inside `{1}' when using `ref' or `out' modifier",
- Name, am.ContainerType);
- }
-
- if (pi.Parameter.HasAddressTaken)
- AnonymousMethodExpression.Error_AddressOfCapturedVar (ec, this, loc);
-
- if (ec.IsVariableCapturingRequired && !b.Toplevel.IsExpressionTree) {
- AnonymousMethodStorey storey = pi.Block.CreateAnonymousMethodStorey (ec);
- storey.CaptureParameter (ec, this);
- }
+ //
+ // If we are referencing a parameter from the external block
+ // flag it for capturing
+ //
+ if (ec.MustCaptureVariable (pi)) {
+ if (Parameter.HasAddressTaken)
+ AnonymousMethodExpression.Error_AddressOfCapturedVar (ec, this, loc);
- return true;
+ if (IsRef) {
+ ec.Report.Error (1628, loc,
+ "Parameter `{0}' cannot be used inside `{1}' when using `ref' or `out' modifier",
+ Name, ec.CurrentAnonymousMethod.ContainerType);
}
- b = b.Parent;
+ if (ec.IsVariableCapturingRequired && !pi.Block.ParametersBlock.IsExpressionTree) {
+ AnonymousMethodStorey storey = pi.Block.Explicit.CreateAnonymousMethodStorey (ec);
+ storey.CaptureParameter (ec, this);
+ }
}
return true;
protected override void CloneTo (CloneContext clonectx, Expression target)
{
// Nothing to clone
+ return;
}
public override Expression CreateExpressionTree (ResolveContext ec)
Expression member_expr;
var atn = expr as ATypeNameExpression;
if (atn != null) {
- member_expr = atn.LookupNameExpression (ec, true, true);
+ member_expr = atn.LookupNameExpression (ec, MemberLookupRestrictions.InvocableOnly | MemberLookupRestrictions.ReadAccess);
if (member_expr != null)
member_expr = member_expr.Resolve (ec);
} else {
}
}
+ //
+ // Array initializer expression, the expression is allowed in
+ // variable or field initialization only which makes it tricky as
+ // the type has to be infered based on the context either from field
+ // type or variable type (think of multiple declarators)
+ //
public class ArrayInitializer : Expression
{
List<Expression> elements;
+ BlockVariableDeclaration variable;
public ArrayInitializer (List<Expression> init, Location loc)
{
}
public ArrayInitializer (int count, Location loc)
+ : this (new List<Expression> (count), loc)
{
- elements = new List<Expression> (count);
- this.loc = loc;
}
public ArrayInitializer (Location loc)
{
}
+ #region Properties
+
+ public int Count {
+ get { return elements.Count; }
+ }
+
+ public Expression this [int index] {
+ get {
+ return elements [index];
+ }
+ }
+
+ public BlockVariableDeclaration VariableDeclaration {
+ get {
+ return variable;
+ }
+ set {
+ variable = value;
+ }
+ }
+
+ #endregion
+
public void Add (Expression expr)
{
elements.Add (expr);
target.elements.Add (element.Clone (clonectx));
}
- public int Count {
- get { return elements.Count; }
- }
-
protected override Expression DoResolve (ResolveContext rc)
{
var current_field = rc.CurrentMemberDefinition as FieldBase;
- return new ArrayCreation (new TypeExpression (current_field.MemberType, current_field.Location), this).Resolve (rc);
+ TypeExpression type;
+ if (current_field != null) {
+ type = new TypeExpression (current_field.MemberType, current_field.Location);
+ } else if (variable != null) {
+ if (variable.TypeExpression is VarExpr) {
+ rc.Report.Error (820, loc, "An implicitly typed local variable declarator cannot use an array initializer");
+ return EmptyExpression.Null;
+ }
+
+ type = new TypeExpression (variable.Variable.Type, variable.Variable.Location);
+ } else {
+ throw new NotImplementedException ("Unexpected array initializer context");
+ }
+
+ return new ArrayCreation (type, this).Resolve (rc);
}
public override void Emit (EmitContext ec)
{
throw new InternalErrorException ("Missing Resolve call");
}
-
- public Expression this [int index] {
- get { return elements [index]; }
- }
}
/// <summary>
//
bool ResolveArrayType (ResolveContext ec)
{
- if (requested_base_type is VarExpr) {
- ec.Report.Error (820, loc, "An implicitly typed local variable declarator cannot use an array initializer");
- return false;
- }
-
//
// Lookup the type
//
var block = ec.CurrentBlock;
if (block != null) {
- if (block.Toplevel.ThisVariable != null)
- variable_info = block.Toplevel.ThisVariable.VariableInfo;
+ if (block.ParametersBlock.TopBlock.ThisVariable != null)
+ variable_info = block.ParametersBlock.TopBlock.ThisVariable.VariableInfo;
AnonymousExpression am = ec.CurrentAnonymousMethod;
if (am != null && ec.IsVariableCapturingRequired) {
eclass = ExprClass.Variable;
type = TypeManager.runtime_argument_handle_type;
- if (ec.HasSet (ResolveContext.Options.FieldInitializerScope) || !ec.CurrentBlock.Toplevel.Parameters.HasArglist) {
+ if (ec.HasSet (ResolveContext.Options.FieldInitializerScope) || !ec.CurrentBlock.ParametersBlock.Parameters.HasArglist) {
ec.Report.Error (190, loc,
"The __arglist construct is valid only within a variable argument method");
}
public override FullNamedExpression ResolveAsTypeStep (IMemberContext ec, bool silent)
{
if (alias == GlobalAlias) {
- expr = GlobalRootNamespace.Instance;
+ expr = ec.Compiler.GlobalRootNamespace;
return base.ResolveAsTypeStep (ec, silent);
}
return alias + "::" + name;
}
- public override Expression LookupNameExpression (ResolveContext rc, bool readMode, bool invocableOnly)
+ public override Expression LookupNameExpression (ResolveContext rc, MemberLookupRestrictions restrictions)
{
return DoResolve (rc);
}
Expression DoResolveName (ResolveContext rc, Expression right_side)
{
- Expression e = LookupNameExpression (rc, right_side == null, false);
+ Expression e = LookupNameExpression (rc, right_side == null ? MemberLookupRestrictions.ReadAccess : MemberLookupRestrictions.None);
if (e == null)
return null;
return e;
}
- public override Expression LookupNameExpression (ResolveContext rc, bool readMode, bool invocableOnly)
+ public override Expression LookupNameExpression (ResolveContext rc, MemberLookupRestrictions restrictions)
{
var sn = expr as SimpleName;
const ResolveFlags flags = ResolveFlags.VariableOrValue | ResolveFlags.Type;
//
using (rc.Set (ResolveContext.Options.OmitStructFlowAnalysis)) {
if (sn != null) {
- expr = sn.LookupNameExpression (rc, true, false);
+ expr = sn.LookupNameExpression (rc, MemberLookupRestrictions.ReadAccess | MemberLookupRestrictions.ExactArity);
// Call resolve on expression which does have type set as we need expression type
// TODO: I should probably ensure that the type is always set and leave resolve for the final
bool errorMode = false;
Expression member_lookup;
while (true) {
- member_lookup = MemberLookup (errorMode ? null : rc, current_type, expr_type, Name, lookup_arity, invocableOnly, loc);
+ member_lookup = MemberLookup (errorMode ? null : rc, current_type, expr_type, Name, lookup_arity, restrictions, loc);
if (member_lookup == null) {
//
// Try to look for extension method when member lookup failed
current_type = null;
lookup_arity = 0;
- invocableOnly = false;
+ restrictions &= ~MemberLookupRestrictions.InvocableOnly;
errorMode = true;
}
return;
}
- var any_other_member = MemberLookup (null, rc.CurrentType, expr_type, Name, 0, false, loc);
+ var any_other_member = MemberLookup (null, rc.CurrentType, expr_type, Name, 0, MemberLookupRestrictions.None, loc);
if (any_other_member != null) {
any_other_member.Error_UnexpectedKind (rc.Compiler.Report, null, "type", loc);
return;
target = new DynamicMemberBinder (Name, args, loc);
} else {
- var member = MemberLookup (ec, ec.CurrentType, t, Name, 0, false, loc);
+ var member = MemberLookup (ec, ec.CurrentType, t, Name, 0, MemberLookupRestrictions.ExactArity, loc);
if (member == null) {
- member = Expression.MemberLookup (null, ec.CurrentType, t, Name, 0, false, loc);
+ member = Expression.MemberLookup (null, ec.CurrentType, t, Name, 0, MemberLookupRestrictions.ExactArity, loc);
if (member != null) {
// TODO: ec.Report.SymbolRelatedToPreviousError (member);
initializer.Resolve (ec);
throw new InternalErrorException ("This line should never be reached");
} else {
- if (!ec.CurrentInitializerVariable.Type.ImplementsInterface (TypeManager.ienumerable_type)) {
+ var t = ec.CurrentInitializerVariable.Type;
+ // LAMESPEC: The collection must implement IEnumerable only, no dynamic support
+ if (!t.ImplementsInterface (TypeManager.ienumerable_type, false) && t != InternalType.Dynamic) {
ec.Report.Error (1922, loc, "A field or property `{0}' cannot be initialized with a collection " +
"object initializer because type `{1}' does not implement `{2}' interface",
ec.CurrentInitializerVariable.GetSignatureForError (),
public override void Emit ()
{
if (member_type == InternalType.Dynamic) {
- PredefinedAttributes.Get.Dynamic.EmitAttribute (FieldBuilder);
+ Compiler.PredefinedAttributes.Dynamic.EmitAttribute (FieldBuilder);
} else {
var trans_flags = TypeManager.HasDynamicTypeUsed (member_type);
if (trans_flags != null) {
- var pa = PredefinedAttributes.Get.DynamicTransform;
+ var pa = Compiler.PredefinedAttributes.DynamicTransform;
if (pa.Constructor != null || pa.ResolveConstructor (Location, ArrayContainer.MakeType (TypeManager.bool_type, 1))) {
FieldBuilder.SetCustomAttribute (new CustomAttributeBuilder (pa.Constructor, new object[] { trans_flags }));
}
}
if ((ModFlags & Modifiers.COMPILER_GENERATED) != 0 && !Parent.IsCompilerGenerated)
- PredefinedAttributes.Get.CompilerGenerated.EmitAttribute (FieldBuilder);
+ Compiler.PredefinedAttributes.CompilerGenerated.EmitAttribute (FieldBuilder);
if (OptAttributes != null) {
OptAttributes.Emit ();
buffer_size *= type_size;
EmitFieldSize (buffer_size);
- PredefinedAttributes.Get.UnsafeValueType.EmitAttribute (fixed_buffer_type);
+ Compiler.PredefinedAttributes.UnsafeValueType.EmitAttribute (fixed_buffer_type);
base.Emit ();
}
CustomAttributeBuilder cab;
PredefinedAttribute pa;
- pa = PredefinedAttributes.Get.StructLayout;
+ pa = Compiler.PredefinedAttributes.StructLayout;
if (pa.Constructor == null &&
!pa.ResolveConstructor (Location, TypeManager.short_type))
return;
if ((ModFlags & Modifiers.PRIVATE) != 0)
return;
- pa = PredefinedAttributes.Get.FixedBuffer;
+ pa = Compiler.PredefinedAttributes.FixedBuffer;
if (pa.Constructor == null &&
!pa.ResolveConstructor (Location, TypeManager.type_type, TypeManager.int32_type))
return;
if (!base.Define ())
return false;
- try {
- Type[] required_modifier = null;
- if ((ModFlags & Modifiers.VOLATILE) != 0) {
- if (TypeManager.isvolatile_type == null)
- TypeManager.isvolatile_type = TypeManager.CoreLookupType (Compiler,
- "System.Runtime.CompilerServices", "IsVolatile", MemberKind.Class, true);
+ Type[] required_modifier = null;
+ if ((ModFlags & Modifiers.VOLATILE) != 0) {
+ if (TypeManager.isvolatile_type == null)
+ TypeManager.isvolatile_type = TypeManager.CoreLookupType (Compiler,
+ "System.Runtime.CompilerServices", "IsVolatile", MemberKind.Class, true);
- if (TypeManager.isvolatile_type != null)
- required_modifier = new Type[] { TypeManager.isvolatile_type.GetMetaInfo () };
- }
+ if (TypeManager.isvolatile_type != null)
+ required_modifier = new Type[] { TypeManager.isvolatile_type.GetMetaInfo () };
+ }
- FieldBuilder = Parent.TypeBuilder.DefineField (
- Name, member_type.GetMetaInfo (), required_modifier, null, ModifiersExtensions.FieldAttr (ModFlags));
+ FieldBuilder = Parent.TypeBuilder.DefineField (
+ Name, member_type.GetMetaInfo (), required_modifier, null, ModifiersExtensions.FieldAttr (ModFlags));
- spec = new FieldSpec (Parent.Definition, this, MemberType, FieldBuilder, ModFlags);
+ spec = new FieldSpec (Parent.Definition, this, MemberType, FieldBuilder, ModFlags);
- // Don't cache inaccessible fields
- if ((ModFlags & Modifiers.BACKING_FIELD) == 0) {
- Parent.MemberCache.AddMember (spec);
- }
+ // Don't cache inaccessible fields
+ if ((ModFlags & Modifiers.BACKING_FIELD) == 0) {
+ Parent.MemberCache.AddMember (spec);
+ }
- if (initializer != null) {
- ((TypeContainer) Parent).RegisterFieldForInitialization (this,
- new FieldInitializer (spec, initializer, this));
- }
- } catch (ArgumentException) {
- Report.RuntimeMissingSupport (Location, "`void' or `void*' field type");
- return false;
+ if (initializer != null) {
+ ((TypeContainer) Parent).RegisterFieldForInitialization (this,
+ new FieldInitializer (spec, initializer, this));
}
if (declarators != null) {
CurrentUsageVector.SetFieldAssigned (vi, name);
}
+#if DEBUG
public override string ToString ()
{
StringBuilder sb = new StringBuilder ();
sb.Append (")");
return sb.ToString ();
}
+#endif
public string Name {
get { return String.Format ("{0} ({1}:{2}:{3})", GetType (), id, Type, Location); }
{
Iterator iterator;
public FlowBranchingIterator (FlowBranching parent, Iterator iterator)
- : base (parent, BranchingType.Iterator, SiblingType.Block, null, iterator.Location)
+ : base (parent, BranchingType.Iterator, SiblingType.Block, iterator.Block, iterator.Location)
{
this.iterator = iterator;
}
{
UsageVector return_origins;
- public FlowBranchingToplevel (FlowBranching parent, ToplevelBlock stmt)
+ public FlowBranchingToplevel (FlowBranching parent, ParametersBlock stmt)
: base (parent, BranchingType.Toplevel, SiblingType.Conditional, stmt, stmt.loc)
{
}
protected override UsageVector Merge ()
{
for (UsageVector origin = return_origins; origin != null; origin = origin.Next)
- Block.Toplevel.CheckOutParameters (origin, origin.Location);
+ Block.ParametersBlock.CheckOutParameters (origin, origin.Location);
UsageVector vector = base.Merge ();
- Block.Toplevel.CheckOutParameters (vector, Block.loc);
+ Block.ParametersBlock.CheckOutParameters (vector, Block.loc);
// Note: we _do_not_ merge in the return origins
return vector;
}
// </summary>
public readonly bool IsParameter;
- public readonly LocalInfo LocalInfo;
+ public readonly LocalVariable LocalInfo;
readonly VariableInfo Parent;
VariableInfo[] sub_info;
sub_info = new VariableInfo [0];
}
- public VariableInfo (LocalInfo local_info, int offset)
- : this (local_info.Name, local_info.VariableType, offset)
+ public VariableInfo (LocalVariable local_info, int offset)
+ : this (local_info.Name, local_info.Type, offset)
{
this.LocalInfo = local_info;
this.IsParameter = false;
public void SetRange (int offset, int length)
{
if (offset > Count || offset + length > Count)
- throw new ArgumentOutOfRangeException ();
+ throw new ArgumentOutOfRangeException ("flow-analysis");
if (shared == null && vector == null)
return;
if (constraints == null)
return true;
- return ConstraintChecker.CheckAll (ec, open_type, args.Arguments, constraints, loc);
+ return new ConstraintChecker(ec).CheckAll (open_type, args.Arguments, constraints, loc);
}
public override bool CheckAccessLevel (IMemberContext mc)
}
}
- static class ConstraintChecker
+ struct ConstraintChecker
{
+ IMemberContext mc;
+ bool ignore_inferred_dynamic;
+
+ public ConstraintChecker (IMemberContext ctx)
+ {
+ this.mc = ctx;
+ ignore_inferred_dynamic = false;
+ }
+
+ #region Properties
+
+ public bool IgnoreInferredDynamic {
+ get {
+ return ignore_inferred_dynamic;
+ }
+ set {
+ ignore_inferred_dynamic = value;
+ }
+ }
+
+ #endregion
+
//
// Checks all type arguments againts type parameters constraints
// NOTE: It can run in probing mode when `mc' is null
//
- public static bool CheckAll (IMemberContext mc, MemberSpec context, TypeSpec[] targs, TypeParameterSpec[] tparams, Location loc)
+ public bool CheckAll (MemberSpec context, TypeSpec[] targs, TypeParameterSpec[] tparams, Location loc)
{
for (int i = 0; i < tparams.Length; i++) {
- if (!CheckConstraint (mc, context, targs [i], tparams [i], loc))
+ if (ignore_inferred_dynamic && targs[i] == InternalType.Dynamic)
+ continue;
+
+ if (!CheckConstraint (context, targs [i], tparams [i], loc))
return false;
}
return true;
}
- static bool CheckConstraint (IMemberContext mc, MemberSpec context, TypeSpec atype, TypeParameterSpec tparam, Location loc)
+ bool CheckConstraint (MemberSpec context, TypeSpec atype, TypeParameterSpec tparam, Location loc)
{
//
// First, check the `class' and `struct' constraints.
return ok;
}
- static bool CheckConversion (IMemberContext mc, MemberSpec context, TypeSpec atype, TypeParameterSpec tparam, TypeSpec ttype, Location loc)
+ static bool HasDynamicTypeArgument (TypeSpec[] targs)
+ {
+ for (int i = 0; i < targs.Length; ++i) {
+ var targ = targs [i];
+ if (targ == InternalType.Dynamic)
+ return true;
+
+ if (HasDynamicTypeArgument (targ.TypeArguments))
+ return true;
+ }
+
+ return false;
+ }
+
+ bool CheckConversion (IMemberContext mc, MemberSpec context, TypeSpec atype, TypeParameterSpec tparam, TypeSpec ttype, Location loc)
{
var expr = new EmptyExpression (atype);
if (Convert.ImplicitStandardConversionExists (expr, ttype))
return true;
+ //
+ // When partial/full type inference finds a dynamic type argument delay
+ // the constraint check to runtime, it can succeed for real underlying
+ // dynamic type
+ //
+ if (ignore_inferred_dynamic && HasDynamicTypeArgument (ttype.TypeArguments))
+ return true;
+
if (mc != null) {
mc.Compiler.Report.SymbolRelatedToPreviousError (tparam);
if (TypeManager.IsValueType (atype)) {
- mc.Compiler.Report.Error (315, loc, "The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. There is no boxing conversion from `{0}' to `{3}'",
+ mc.Compiler.Report.Error (315, loc,
+ "The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. There is no boxing conversion from `{0}' to `{3}'",
atype.GetSignatureForError (), tparam.GetSignatureForError (), context.GetSignatureForError (), ttype.GetSignatureForError ());
} else if (atype.IsGenericParameter) {
- mc.Compiler.Report.Error (314, loc, "The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. There is no boxing or type parameter conversion from `{0}' to `{3}'",
+ mc.Compiler.Report.Error (314, loc,
+ "The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. There is no boxing or type parameter conversion from `{0}' to `{3}'",
atype.GetSignatureForError (), tparam.GetSignatureForError (), context.GetSignatureForError (), ttype.GetSignatureForError ());
} else {
- mc.Compiler.Report.Error (311, loc, "The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. There is no implicit reference conversion from `{0}' to `{3}'",
+ mc.Compiler.Report.Error (311, loc,
+ "The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. There is no implicit reference conversion from `{0}' to `{3}'",
atype.GetSignatureForError (), tparam.GetSignatureForError (), context.GetSignatureForError (), ttype.GetSignatureForError ());
}
}
return false;
}
- static bool HasDefaultConstructor (TypeSpec atype)
+ bool HasDefaultConstructor (TypeSpec atype)
{
var tp = atype as TypeParameterSpec;
if (tp != null) {
{
TypeParameterName[] names = MemberName.TypeArguments.GetDeclarations ();
string[] snames = new string [names.Length];
+ var block = m.Block;
for (int i = 0; i < names.Length; i++) {
string type_argument_name = names[i].Name;
- int idx = parameters.GetParameterIndexByName (type_argument_name);
- if (idx >= 0) {
- var b = m.Block;
- if (b == null)
- b = new ToplevelBlock (Compiler, Location);
+ if (block == null) {
+ int idx = parameters.GetParameterIndexByName (type_argument_name);
+ if (idx >= 0) {
+ var b = m.Block;
+ if (b == null)
+ b = new ToplevelBlock (Compiler, Location);
- b.Error_AlreadyDeclaredTypeParameter (parameters [i].Location,
- type_argument_name, "method parameter");
+ b.Error_AlreadyDeclaredTypeParameter (type_argument_name, parameters[i].Location);
+ }
+ } else {
+ INamedBlockVariable variable = null;
+ block.GetLocalName (type_argument_name, m.Block, ref variable);
+ if (variable != null)
+ variable.Block.Error_AlreadyDeclaredTypeParameter (type_argument_name, variable.Location);
}
- if (m.Block != null) {
- var ikv = m.Block.GetKnownVariable (type_argument_name);
- if (ikv != null)
- ikv.Block.Error_AlreadyDeclaredTypeParameter (ikv.Location, type_argument_name, "local variable");
- }
-
snames[i] = type_argument_name;
}
return Variance.None;
}
-
- /// <summary>
- /// Type inference. Try to infer the type arguments from `method',
- /// which is invoked with the arguments `arguments'. This is used
- /// when resolving an Invocation or a DelegateInvocation and the user
- /// did not explicitly specify type arguments.
- /// </summary>
- public static int InferTypeArguments (ResolveContext ec, Arguments arguments, ref MethodSpec method)
- {
- ATypeInference ti = ATypeInference.CreateInstance (arguments);
- TypeSpec[] i_args = ti.InferMethodArguments (ec, method);
- if (i_args == null)
- return ti.InferenceScore;
-
- if (i_args.Length == 0)
- return 0;
-
- method = method.MakeGenericMethod (i_args);
- return 0;
- }
- }
-
- abstract class ATypeInference
- {
- protected readonly Arguments arguments;
- protected readonly int arg_count;
-
- protected ATypeInference (Arguments arguments)
- {
- this.arguments = arguments;
- if (arguments != null)
- arg_count = arguments.Count;
- }
-
- public static ATypeInference CreateInstance (Arguments arguments)
- {
- return new TypeInference (arguments);
- }
-
- public virtual int InferenceScore {
- get {
- return int.MaxValue;
- }
- }
-
- public abstract TypeSpec[] InferMethodArguments (ResolveContext ec, MethodSpec method);
}
//
// Implements C# type inference
//
- class TypeInference : ATypeInference
+ class TypeInference
{
//
// Tracks successful rate of type inference
//
int score = int.MaxValue;
+ readonly Arguments arguments;
+ readonly int arg_count;
public TypeInference (Arguments arguments)
- : base (arguments)
{
+ this.arguments = arguments;
+ if (arguments != null)
+ arg_count = arguments.Count;
}
- public override int InferenceScore {
+ public int InferenceScore {
get {
return score;
}
}
- public override TypeSpec[] InferMethodArguments (ResolveContext ec, MethodSpec method)
+ public TypeSpec[] InferMethodArguments (ResolveContext ec, MethodSpec method)
{
var method_generic_args = method.GenericDefinition.TypeParameters;
TypeInferenceContext context = new TypeInferenceContext (method_generic_args);
} else {
kind = MemberKind.Class;
- if (type == typeof (object)) {
#if NET_4_0
- var pa = PredefinedAttributes.Get.Dynamic.Type;
- if (pa != null && type.IsDefined (typeof (DynamicAttribute), false))
- return InternalType.Dynamic;
-#endif
+ if (type == typeof (object) && type.IsDefined (typeof (DynamicAttribute), false)) {
+ return InternalType.Dynamic;
}
+#endif
if ((ma & TypeAttributes.Sealed) != 0) {
mod |= Modifiers.SEALED;
public static bool CheckContext (ResolveContext ec, Location loc)
{
- //
- // We can't use `ec.InUnsafe' here because it's allowed to have an iterator
- // inside an unsafe class. See test-martin-29.cs for an example.
- //
if (!ec.CurrentAnonymousMethod.IsIterator) {
ec.Report.Error (1621, loc,
"The yield statement cannot be used inside " +
}
}
- //
- // Wraps method block into iterator wrapper block
- //
- class IteratorStatement : Statement
- {
- Iterator iterator;
- Block original_block;
-
- public IteratorStatement (Iterator iterator, Block original_block)
- {
- this.iterator = iterator;
- this.original_block = original_block;
- this.loc = iterator.Location;
- }
-
- protected override void CloneTo (CloneContext clonectx, Statement target)
- {
- IteratorStatement t = (IteratorStatement) target;
- t.original_block = (ExplicitBlock) original_block.Clone (clonectx);
- t.iterator = (Iterator) iterator.Clone (clonectx);
- }
-
- public override bool Resolve (BlockContext ec)
- {
- ec.StartFlowBranching (iterator);
- bool ok = original_block.Resolve (ec);
- ec.EndFlowBranching ();
- return ok;
- }
-
- protected override void DoEmit (EmitContext ec)
- {
- iterator.EmitMoveNext (ec, original_block);
- }
- }
-
public class IteratorStorey : AnonymousMethodStorey
{
- class IteratorMethod : Method
- {
- readonly IteratorStorey host;
-
- public IteratorMethod (IteratorStorey host, FullNamedExpression returnType, Modifiers mod, MemberName name)
- : base (host, null, returnType, mod | Modifiers.DEBUGGER_HIDDEN | Modifiers.COMPILER_GENERATED,
- name, ParametersCompiled.EmptyReadOnlyParameters, null)
- {
- this.host = host;
-
- Block = new ToplevelBlock (Compiler, host.Iterator.Container.Toplevel, ParametersCompiled.EmptyReadOnlyParameters, Location);
- }
-
- public override EmitContext CreateEmitContext (ILGenerator ig)
- {
- EmitContext ec = new EmitContext (this, ig, MemberType);
-
- ec.CurrentAnonymousMethod = host.Iterator;
- return ec;
- }
- }
-
class GetEnumeratorMethod : IteratorMethod
{
sealed class GetEnumeratorStatement : Statement
}
public GetEnumeratorMethod (IteratorStorey host, FullNamedExpression returnType, MemberName name)
- : base (host, returnType, 0, name)
+ : base (host, returnType, Modifiers.DEBUGGER_HIDDEN, name)
{
Block.AddStatement (new GetEnumeratorStatement (host, this));
}
}
public DisposeMethod (IteratorStorey host)
- : base (host, new TypeExpression (TypeManager.void_type, host.Location), Modifiers.PUBLIC, new MemberName ("Dispose", host.Location))
+ : base (host, new TypeExpression (TypeManager.void_type, host.Location), Modifiers.PUBLIC | Modifiers.DEBUGGER_HIDDEN,
+ new MemberName ("Dispose", host.Location))
{
host.AddMethod (this);
- Block = new ToplevelBlock (Compiler, host.Iterator.Container, ParametersCompiled.EmptyReadOnlyParameters, Location);
Block.AddStatement (new DisposeMethodStatement (host.Iterator));
}
}
int local_name_idx;
public IteratorStorey (Iterator iterator)
- : base (iterator.Container.Toplevel, iterator.Host,
+ : base (iterator.Container.ParametersBlock, iterator.Host,
iterator.OriginalMethod as MemberBase, iterator.GenericMethod == null ? null : iterator.GenericMethod.CurrentTypeParameters, "Iterator")
{
this.Iterator = iterator;
return base.ResolveBaseTypes (out base_class);
}
- protected override string GetVariableMangledName (LocalInfo local_info)
+ protected override string GetVariableMangledName (LocalVariable local_info)
{
return "<" + local_info.Name + ">__" + local_name_idx++.ToString ();
}
}
}
+ class IteratorMethod : Method
+ {
+ readonly IteratorStorey host;
+
+ public IteratorMethod (IteratorStorey host, FullNamedExpression returnType, Modifiers mod, MemberName name)
+ : base (host, null, returnType, mod | Modifiers.COMPILER_GENERATED,
+ name, ParametersCompiled.EmptyReadOnlyParameters, null)
+ {
+ this.host = host;
+
+ Block = new ToplevelBlock (host.Compiler, ParametersCompiled.EmptyReadOnlyParameters, Location);
+ }
+
+ public override EmitContext CreateEmitContext (ILGenerator ig)
+ {
+ EmitContext ec = new EmitContext (this, ig, MemberType);
+
+ ec.CurrentAnonymousMethod = host.Iterator;
+ return ec;
+ }
+ }
+
//
// Iterators are implemented as hidden anonymous block
//
- public class Iterator : AnonymousExpression {
+ public class Iterator : AnonymousExpression
+ {
+ sealed class MoveNextMethodStatement : Statement
+ {
+ Iterator iterator;
+
+ public MoveNextMethodStatement (Iterator iterator)
+ {
+ this.iterator = iterator;
+ this.loc = iterator.Location;
+ }
+
+ protected override void CloneTo (CloneContext clonectx, Statement target)
+ {
+ throw new NotSupportedException ();
+ }
+
+ public override bool Resolve (BlockContext ec)
+ {
+ return true;
+ }
+
+ protected override void DoEmit (EmitContext ec)
+ {
+ iterator.EmitMoveNext (ec);
+ }
+ }
+
public readonly IMethodData OriginalMethod;
- AnonymousMethodMethod method;
public readonly TypeContainer Host;
public readonly bool IsEnumerable;
List<ResumableStatement> resume_points;
public readonly TypeSpec OriginalIteratorType;
- readonly IteratorStorey IteratorHost;
+ IteratorStorey IteratorHost;
public enum State {
Running = -3, // Used only in CurrentPC, never stored into $PC
ec.Emit (OpCodes.Ret);
}
- internal void EmitMoveNext (EmitContext ec, Block original_block)
+ void EmitMoveNext (EmitContext ec)
{
move_next_ok = ec.DefineLabel ();
move_next_error = ec.DefineLabel ();
if (resume_points == null) {
- EmitMoveNext_NoResumePoints (ec, original_block);
+ EmitMoveNext_NoResumePoints (ec, block);
return;
}
ec.MarkLabel (labels [0]);
SymbolWriter.StartIteratorBody (ec);
- original_block.Emit (ec);
+ block.Emit (ec);
SymbolWriter.EndIteratorBody (ec);
SymbolWriter.StartIteratorDispatcher (ec);
ec.MarkLabel (resume_point);
}
- public override string ContainerType {
- get { return "iterator"; }
- }
-
- public override bool IsIterator {
- get { return true; }
- }
-
- public override AnonymousMethodStorey Storey {
- get { return IteratorHost; }
- }
-
//
// Our constructor
//
- private Iterator (CompilerContext ctx, IMethodData method, TypeContainer host, TypeSpec iterator_type, bool is_enumerable)
- : base (
- new ToplevelBlock (ctx, method.Block, ParametersCompiled.EmptyReadOnlyParameters, method.Block.StartLocation),
- TypeManager.bool_type,
- method.Location)
+ public Iterator (ParametersBlock block, IMethodData method, TypeContainer host, TypeSpec iterator_type, bool is_enumerable)
+ : base (block, TypeManager.bool_type, block.StartLocation)
{
this.OriginalMethod = method;
this.OriginalIteratorType = iterator_type;
this.IsEnumerable = is_enumerable;
this.Host = host;
this.type = method.ReturnType;
+ }
+
+ public override string ContainerType {
+ get { return "iterator"; }
+ }
- IteratorHost = Block.ChangeToIterator (this, method.Block);
+ public override bool IsIterator {
+ get { return true; }
+ }
+
+ public override AnonymousMethodStorey Storey {
+ get { return IteratorHost; }
}
public override string GetSignatureForError ()
protected override Expression DoResolve (ResolveContext ec)
{
- method = new AnonymousMethodMethod (Storey,
- this, Storey, null, new TypeExpression (TypeManager.bool_type, loc),
- Modifiers.PUBLIC, OriginalMethod.GetSignatureForError (),
- new MemberName ("MoveNext", Location),
- ParametersCompiled.EmptyReadOnlyParameters);
+ IteratorHost = (IteratorStorey) block.TopBlock.AnonymousMethodStorey;
+
+ BlockContext ctx = new BlockContext (ec, block, ReturnType);
+ ctx.CurrentAnonymousMethod = this;
- if (Compatible (ec) == null)
- return null;
+ ctx.StartFlowBranching (this, ec.CurrentBranching);
+ Block.Resolve (ctx);
+ ctx.EndFlowBranching ();
+
+ var move_next = new IteratorMethod (IteratorHost, new TypeExpression (TypeManager.bool_type, loc),
+ Modifiers.PUBLIC, new MemberName ("MoveNext", Location));
+ move_next.Block.AddStatement (new MoveNextMethodStatement (this));
+ IteratorHost.AddMethod (move_next);
eclass = ExprClass.Value;
return this;
//
// Load Iterator storey instance
//
- method.Storey.Instance.Emit (ec);
+ IteratorHost.Instance.Emit (ec);
//
// Initialize iterator PC when it's unitialized
if ((modifiers & Modifiers.UNSAFE) != 0) {
ctx.Report.Error (1629, method.Location, "Unsafe code may not appear in iterators");
- return;
}
- // TODO: Ugly leftover
- new Iterator (ctx, method, parent, iterator_type, is_enumerable);
+ method.Block.WrapIntoIterator (method, parent, iterator_type, is_enumerable);
}
static bool CheckType (TypeSpec ret, out TypeSpec original_iterator_type, out bool is_enumerable)
ptypes [i] = d_param;
ImplicitLambdaParameter ilp = (ImplicitLambdaParameter) Parameters.FixedParameters [i];
- ilp.Type = d_param;
+ ilp.SetParameterType (d_param);
ilp.Resolve (null, i);
}
return Parameters;
}
- protected override AnonymousMethodBody CompatibleMethodFactory (TypeSpec returnType, TypeSpec delegateType, ParametersCompiled p, ToplevelBlock b)
+ protected override AnonymousMethodBody CompatibleMethodFactory (TypeSpec returnType, TypeSpec delegateType, ParametersCompiled p, ParametersBlock b)
{
return new LambdaMethod (p, b, returnType, delegateType, loc);
}
class LambdaMethod : AnonymousMethodBody
{
public LambdaMethod (ParametersCompiled parameters,
- ToplevelBlock block, TypeSpec return_type, TypeSpec delegate_type,
+ ParametersBlock block, TypeSpec return_type, TypeSpec delegate_type,
Location loc)
: base (parameters, block, return_type, delegate_type, loc)
{
protected virtual Parameter CreateChildrenParameters (Parameter parameter)
{
- return parameter;
+ // Have to clone the parameter for any children use, it carries block sensitive data
+ return parameter.Clone ();
}
protected virtual void CreateArguments (ResolveContext ec, Parameter parameter, ref Arguments args)
LambdaExpression selector = new LambdaExpression (loc);
- block.SetParameter (parameter.Clone ());
+ block.SetParameter (parameter);
selector.Block = block;
selector.Block.AddStatement (new ContextualReturn (expr));
{
sealed class RangeAnonymousTypeParameter : AnonymousTypeParameter
{
- public RangeAnonymousTypeParameter (Expression initializer, SimpleMemberName parameter)
- : base (initializer, parameter.Value, parameter.Location)
+ public RangeAnonymousTypeParameter (Expression initializer, RangeVariable parameter)
+ : base (initializer, parameter.Name, parameter.Location)
{
}
}
}
- protected SimpleMemberName range_variable;
+ class RangeParameterReference : ParameterReference
+ {
+ Parameter parameter;
+
+ public RangeParameterReference (Parameter p)
+ : base (null, p.Location)
+ {
+ this.parameter = p;
+ }
+
+ protected override Expression DoResolve (ResolveContext ec)
+ {
+ pi = ec.CurrentBlock.ParametersBlock.GetParameterInfo (parameter);
+ return base.DoResolve (ec);
+ }
+ }
+
+ protected RangeVariable identifier;
- protected ARangeVariableQueryClause (QueryBlock block, SimpleMemberName identifier, Expression expr, Location loc)
+ protected ARangeVariableQueryClause (QueryBlock block, RangeVariable identifier, Expression expr, Location loc)
: base (block, expr, loc)
{
- range_variable = identifier;
+ this.identifier = identifier;
}
public FullNamedExpression IdentifierType { get; set; }
protected override Parameter CreateChildrenParameters (Parameter parameter)
{
- return new QueryBlock.TransparentParameter (parameter, GetIntoVariable ());
+ return new QueryBlock.TransparentParameter (parameter.Clone (), GetIntoVariable ());
}
- protected static Expression CreateRangeVariableType (ResolveContext rc, Parameter parameter, SimpleMemberName name, Expression init)
+ protected static Expression CreateRangeVariableType (ResolveContext rc, Parameter parameter, RangeVariable name, Expression init)
{
var args = new List<AnonymousTypeParameter> (2);
- args.Add (new AnonymousTypeParameter (parameter));
+
+ //
+ // The first argument is the reference to the parameter
+ //
+ args.Add (new AnonymousTypeParameter (new RangeParameterReference (parameter), parameter.Name, parameter.Location));
+
+ //
+ // The second argument is the linq expression
+ //
args.Add (new RangeAnonymousTypeParameter (init, name));
+
+ //
+ // Create unique anonymous type
+ //
return new NewAnonymousType (args, rc.MemberContext.CurrentMemberDefinition.Parent, name.Location);
}
- protected virtual SimpleMemberName GetIntoVariable ()
+ protected virtual RangeVariable GetIntoVariable ()
{
- return range_variable;
+ return identifier;
+ }
+ }
+
+ public sealed class RangeVariable : INamedBlockVariable
+ {
+ Block block;
+
+ public RangeVariable (string name, Location loc)
+ {
+ Name = name;
+ Location = loc;
+ }
+
+ #region Properties
+
+ public Block Block {
+ get {
+ return block;
+ }
+ set {
+ block = value;
+ }
+ }
+
+ public bool IsDeclared {
+ get {
+ return true;
+ }
+ }
+
+ public Location Location { get; private set; }
+
+ public string Name { get; private set; }
+
+ #endregion
+
+ public Expression CreateReferenceExpression (ResolveContext rc, Location loc)
+ {
+ Expression expr = null;
+
+ //
+ // We know the variable name is somewhere in the scope. This generates
+ // an access expression from current block
+ //
+ var pb = rc.CurrentBlock.ParametersBlock;
+ while (true) {
+ if (pb is QueryBlock) {
+ for (int i = pb.Parameters.Count - 1; i >= 0; --i) {
+ var p = pb.Parameters[i];
+ if (p.Name == Name)
+ return pb.GetParameterReference (i, loc);
+
+ var tp = p as QueryBlock.TransparentParameter;
+ while (tp != null) {
+ if (expr == null)
+ expr = pb.GetParameterReference (i, loc);
+ else
+ expr = new TransparentMemberAccess (expr, tp.Name);
+
+ if (tp.Identifier == Name)
+ return new TransparentMemberAccess (expr, Name);
+
+ if (tp.Parent.Name == Name)
+ return new TransparentMemberAccess (expr, Name);
+
+ tp = tp.Parent as QueryBlock.TransparentParameter;
+ }
+ }
+
+ expr = null;
+ }
+
+ if (pb == block)
+ return null;
+
+ pb = pb.Parent.ParametersBlock;
+ }
}
}
class QueryStartClause : ARangeVariableQueryClause
{
- public QueryStartClause (QueryBlock block, Expression expr, SimpleMemberName identifier, Location loc)
+ public QueryStartClause (QueryBlock block, Expression expr, RangeVariable identifier, Location loc)
: base (block, identifier, expr, loc)
{
block.AddRangeVariable (identifier);
if (parameter == null)
lSide = expr;
- return next.BuildQueryClause (ec, lSide, new ImplicitLambdaParameter (range_variable.Value, range_variable.Location));
+ return next.BuildQueryClause (ec, lSide, new ImplicitLambdaParameter (identifier.Name, identifier.Location));
}
protected override Expression DoResolve (ResolveContext ec)
{
QueryBlock inner_selector, outer_selector;
- public Join (QueryBlock block, SimpleMemberName lt, Expression inner, QueryBlock outerSelector, QueryBlock innerSelector, Location loc)
+ public Join (QueryBlock block, RangeVariable lt, Expression inner, QueryBlock outerSelector, QueryBlock innerSelector, Location loc)
: base (block, lt, inner, loc)
{
this.outer_selector = outerSelector;
lambda.Block = outer_selector;
args.Add (new Argument (lambda));
- inner_selector.SetParameter (new ImplicitLambdaParameter (range_variable.Value, range_variable.Location));
+ inner_selector.SetParameter (new ImplicitLambdaParameter (identifier.Name, identifier.Location));
lambda = new LambdaExpression (inner_selector.StartLocation);
lambda.Block = inner_selector;
args.Add (new Argument (lambda));
public class GroupJoin : Join
{
- readonly SimpleMemberName into;
+ readonly RangeVariable into;
- public GroupJoin (QueryBlock block, SimpleMemberName lt, Expression inner,
- QueryBlock outerSelector, QueryBlock innerSelector, SimpleMemberName into, Location loc)
+ public GroupJoin (QueryBlock block, RangeVariable lt, Expression inner,
+ QueryBlock outerSelector, QueryBlock innerSelector, RangeVariable into, Location loc)
: base (block, lt, inner, outerSelector, innerSelector, loc)
{
this.into = into;
}
- protected override SimpleMemberName GetIntoVariable ()
+ protected override RangeVariable GetIntoVariable ()
{
return into;
}
public class Let : ARangeVariableQueryClause
{
- public Let (QueryBlock block, SimpleMemberName identifier, Expression expr, Location loc)
+ public Let (QueryBlock block, RangeVariable identifier, Expression expr, Location loc)
: base (block, identifier, expr, loc)
{
}
protected override void CreateArguments (ResolveContext ec, Parameter parameter, ref Arguments args)
{
- expr = CreateRangeVariableType (ec, parameter, range_variable, expr);
+ expr = CreateRangeVariableType (ec, parameter, identifier, expr);
base.CreateArguments (ec, parameter, ref args);
}
public class SelectMany : ARangeVariableQueryClause
{
- public SelectMany (QueryBlock block, SimpleMemberName identifier, Expression expr, Location loc)
+ public SelectMany (QueryBlock block, RangeVariable identifier, Expression expr, Location loc)
: base (block, identifier, expr, loc)
{
}
QueryBlock result_block;
var target = GetIntoVariable ();
- var target_param = new ImplicitLambdaParameter (target.Value, target.Location);
+ var target_param = new ImplicitLambdaParameter (target.Name, target.Location);
//
// When select follows use it as a result selector
next = next.next;
} else {
- result_selector_expr = CreateRangeVariableType (ec, parameter, target, new SimpleName (target.Value, target.Location));
+ result_selector_expr = CreateRangeVariableType (ec, parameter, target, new SimpleName (target.Name, target.Location));
result_block = new QueryBlock (ec.Compiler, block.Parent, block.StartLocation);
result_block.SetParameters (parameter, target_param);
protected override string MethodName {
get { return "Where"; }
}
-
- protected override void CreateArguments (ResolveContext ec, Parameter parameter, ref Arguments args)
- {
- base.CreateArguments (ec, parameter, ref args);
- }
}
public class OrderByAscending : AQueryClause
//
// Implicit query block
//
- public class QueryBlock : ToplevelBlock
+ public class QueryBlock : ParametersBlock
{
//
// Transparent parameters are used to package up the intermediate results
public readonly Parameter Parent;
public readonly string Identifier;
- public TransparentParameter (Parameter parent, SimpleMemberName identifier)
+ public TransparentParameter (Parameter parent, RangeVariable identifier)
: base (ParameterNamePrefix + Counter++, identifier.Location)
{
Parent = parent;
- Identifier = identifier.Value;
+ Identifier = identifier.Name;
}
public new static void Reset ()
}
}
- sealed class RangeVariable : IKnownVariable
- {
- public RangeVariable (QueryBlock block, Location loc)
- {
- Block = block;
- Location = loc;
- }
-
- public Block Block { get; private set; }
-
- public Location Location { get; private set; }
- }
-
- List<SimpleMemberName> range_variables;
-
public QueryBlock (CompilerContext ctx, Block parent, Location start)
- : base (ctx, parent, ParametersCompiled.EmptyReadOnlyParameters, start)
+ : base (parent, ParametersCompiled.EmptyReadOnlyParameters, start)
{
+ flags |= Flags.CompilerGenerated;
}
- public void AddRangeVariable (SimpleMemberName name)
+ public void AddRangeVariable (RangeVariable variable)
{
- if (!CheckParentConflictName (this, name.Value, name.Location))
- return;
-
- if (range_variables == null)
- range_variables = new List<SimpleMemberName> ();
-
- range_variables.Add (name);
- AddKnownVariable (name.Value, new RangeVariable (this, name.Location));
+ variable.Block = this;
+ AddLocalName (variable.Name, variable);
}
- //
- // Query parameter reference can include transparent parameters
- //
- protected override Expression GetParameterReferenceExpression (string name, Location loc)
+ public override void Error_AlreadyDeclared (string name, INamedBlockVariable variable, string reason)
{
- Expression expr = base.GetParameterReferenceExpression (name, loc);
- if (expr != null)
- return expr;
-
- TransparentParameter tp = parameters [0] as TransparentParameter;
- while (tp != null) {
- if (tp.Identifier == name)
- break;
-
- TransparentParameter tp_next = tp.Parent as TransparentParameter;
- if (tp_next == null && tp.Parent.Name == name)
- break;
-
- tp = tp_next;
- }
-
- if (tp != null) {
- expr = new SimpleName (parameters[0].Name, loc);
- TransparentParameter tp_cursor = (TransparentParameter) parameters[0];
- while (tp_cursor != tp) {
- tp_cursor = (TransparentParameter) tp_cursor.Parent;
- expr = new TransparentMemberAccess (expr, tp_cursor.Name);
- }
-
- return new TransparentMemberAccess (expr, name);
- }
-
- return null;
+ TopBlock.Report.Error (1931, variable.Location,
+ "A range variable `{0}' conflicts with a previous declaration of `{0}'",
+ name);
}
- protected override bool HasParameterWithName (string name)
+ public override void Error_AlreadyDeclared (string name, INamedBlockVariable variable)
{
- return range_variables != null && range_variables.Exists (l => l.Value == name);
+ TopBlock.Report.Error (1930, variable.Location,
+ "A range variable `{0}' has already been declared in this scope",
+ name);
}
- protected override void Error_AlreadyDeclared (Location loc, string var, string reason)
+ public override void Error_AlreadyDeclaredTypeParameter (string name, Location loc)
{
- Report.Error (1931, loc, "A range variable `{0}' conflicts with a previous declaration of `{0}'",
- var);
- }
-
- protected override void Error_AlreadyDeclared (Location loc, string var)
- {
- Report.Error (1930, loc, "A range variable `{0}' has already been declared in this scope",
- var);
- }
-
- public override void Error_AlreadyDeclaredTypeParameter (Location loc, string name, string conflict)
- {
- Report.Error (1948, loc, "A range variable `{0}' conflicts with a method type parameter",
+ TopBlock.Report.Error (1948, loc,
+ "A range variable `{0}' conflicts with a method type parameter",
name);
}
public void SetParameter (Parameter parameter)
{
- base.parameters = new ParametersCompiled (null, parameter);
- base.parameter_info = new ToplevelParameterInfo [] {
- new ToplevelParameterInfo (this, 0)
+ base.parameters = new ParametersCompiled (parameter);
+ base.parameter_info = new ParameterInfo[] {
+ new ParameterInfo (this, 0)
};
}
public void SetParameters (Parameter first, Parameter second)
{
- base.parameters = new ParametersCompiled (null, first, second);
- base.parameter_info = new ToplevelParameterInfo[] {
- new ToplevelParameterInfo (this, 0),
- new ToplevelParameterInfo (this, 1)
+ base.parameters = new ParametersCompiled (first, second);
+ base.parameter_info = new ParameterInfo[] {
+ new ParameterInfo (this, 0),
+ new ParameterInfo (this, 1)
};
}
}
: base (expr, name)
{
}
+
+ public override Expression DoResolveLValue (ResolveContext rc, Expression right_side)
+ {
+ rc.Report.Error (1947, loc,
+ "A range variable `{0}' cannot be assigned to. Consider using `let' clause to store the value",
+ Name);
+
+ return null;
+ }
}
}
continue;
}
- if (member.DeclaringType.ImplementsInterface (entry.DeclaringType)) {
+ if (member.DeclaringType.ImplementsInterface (entry.DeclaringType, false)) {
if (existing is MemberSpec[]) {
existing = new MemberSpec[] { member };
return true;
}
if ((entry.DeclaringType == member.DeclaringType && entry.IsAccessor == member.IsAccessor) ||
- entry.DeclaringType.ImplementsInterface (member.DeclaringType))
+ entry.DeclaringType.ImplementsInterface (member.DeclaringType, false))
return false;
}
public override void Emit ()
{
if ((ModFlags & Modifiers.COMPILER_GENERATED) != 0 && !Parent.IsCompilerGenerated)
- PredefinedAttributes.Get.CompilerGenerated.EmitAttribute (MethodBuilder);
+ Compiler.PredefinedAttributes.CompilerGenerated.EmitAttribute (MethodBuilder);
if ((ModFlags & Modifiers.DEBUGGER_HIDDEN) != 0)
- PredefinedAttributes.Get.DebuggerHidden.EmitAttribute (MethodBuilder);
+ Compiler.PredefinedAttributes.DebuggerHidden.EmitAttribute (MethodBuilder);
if (ReturnType == InternalType.Dynamic) {
return_attributes = new ReturnParameter (this, MethodBuilder, Location);
- PredefinedAttributes.Get.Dynamic.EmitAttribute (return_attributes.Builder);
+ Compiler.PredefinedAttributes.Dynamic.EmitAttribute (return_attributes.Builder);
} else {
var trans_flags = TypeManager.HasDynamicTypeUsed (ReturnType);
if (trans_flags != null) {
- var pa = PredefinedAttributes.Get.DynamicTransform;
+ var pa = Compiler.PredefinedAttributes.DynamicTransform;
if (pa.Constructor != null || pa.ResolveConstructor (Location, ArrayContainer.MakeType (TypeManager.bool_type))) {
return_attributes = new ReturnParameter (this, MethodBuilder, Location);
return_attributes.Builder.SetCustomAttribute (
if (OptAttributes == null)
return null;
- Attribute[] attrs = OptAttributes.SearchMulti (PredefinedAttributes.Get.Conditional);
+ Attribute[] attrs = OptAttributes.SearchMulti (Compiler.PredefinedAttributes.Conditional);
if (attrs == null)
return null;
DefineTypeParameters ();
}
- if (block != null && block.IsIterator && !(Parent is IteratorStorey)) {
+ if (block != null && block.IsIterator) {
//
// Current method is turned into automatically generated
// wrapper which creates an instance of iterator
Report.Error (1109, Location, "`{0}': Extension methods cannot be defined in a nested class",
GetSignatureForError ());
- PredefinedAttribute pa = PredefinedAttributes.Get.Extension;
+ PredefinedAttribute pa = Compiler.PredefinedAttributes.Extension;
if (!pa.IsDefined) {
Report.Error (1110, Location,
"`{0}': Extension methods cannot be declared without a reference to System.Core.dll assembly. Add the assembly reference or remove `this' modifer from the first parameter",
base.Emit ();
if ((ModFlags & Modifiers.METHOD_EXTENSION) != 0)
- PredefinedAttributes.Get.Extension.EmitAttribute (MethodBuilder);
+ Compiler.PredefinedAttributes.Extension.EmitAttribute (MethodBuilder);
} catch {
Console.WriteLine ("Internal compiler error at {0}: exception caught while emitting {1}",
Location, MethodBuilder);
}
if ((ModFlags & Modifiers.DEBUGGER_HIDDEN) != 0)
- PredefinedAttributes.Get.DebuggerHidden.EmitAttribute (ConstructorBuilder);
+ Compiler.PredefinedAttributes.DebuggerHidden.EmitAttribute (ConstructorBuilder);
if (OptAttributes != null)
OptAttributes.Emit ();
// initializer, it must initialize all of the struct's fields.
if ((Parent.PartialContainer.Kind == MemberKind.Struct) &&
((ModFlags & Modifiers.STATIC) == 0) && (Initializer == null))
- block.AddThisVariable (Parent, Location);
+ block.AddThisVariable (bc, Parent, Location);
if (block != null && (ModFlags & Modifiers.STATIC) == 0){
if (Parent.PartialContainer.Kind == MemberKind.Class && Initializer == null)
}
}
- parameters.ApplyAttributes (ConstructorBuilder);
+ parameters.ApplyAttributes (this, ConstructorBuilder);
SourceMethod source = SourceMethod.Create (Parent, ConstructorBuilder, block);
if (block != null) {
- if (block.Resolve (null, bc, parameters, this)) {
+ if (block.Resolve (null, bc, this)) {
EmitContext ec = new EmitContext (this, ConstructorBuilder.GetILGenerator (), bc.ReturnType);
ec.With (EmitContext.Options.ConstructorScope, true);
if (GenericMethod != null)
GenericMethod.EmitAttributes ();
- method.ParameterInfo.ApplyAttributes (MethodBuilder);
+ var mc = (IMemberContext) method;
+
+ method.ParameterInfo.ApplyAttributes (mc, MethodBuilder);
SourceMethod source = SourceMethod.Create (parent, MethodBuilder, method.Block);
ToplevelBlock block = method.Block;
if (block != null) {
- BlockContext bc = new BlockContext ((IMemberContext) method, block, method.ReturnType);
- if (block.Resolve (null, bc, method.ParameterInfo, method)) {
+ BlockContext bc = new BlockContext (mc, block, method.ReturnType);
+ if (block.Resolve (null, bc, method)) {
EmitContext ec = method.CreateEmitContext (MethodBuilder.GetILGenerator ());
if (!ec.HasReturnLabel && bc.HasReturnLabel) {
ec.ReturnLabel = bc.ReturnLabel;
MethodGroupExpr method_expr = MethodGroupExpr.CreatePredefined (base_dtor, base_type, Location);
method_expr.InstanceExpression = new BaseThis (base_type, Location);
- ToplevelBlock new_block = new ToplevelBlock (Compiler, Block.StartLocation);
- new_block.EndLocation = Block.EndLocation;
-
- Block finaly_block = new ExplicitBlock (new_block, Location, Location);
- Block try_block = new Block (new_block, block);
+ var try_block = new ExplicitBlock (block, block.StartLocation, block.EndLocation);
+ var finaly_block = new ExplicitBlock (block, Location, Location);
//
// 0-size arguments to avoid CS0250 error
// debugger scope
//
finaly_block.AddStatement (new StatementExpression (new Invocation (method_expr, new Arguments (0))));
- new_block.AddStatement (new TryFinally (try_block, finaly_block, Location));
- block = new_block;
+ var tf = new TryFinally (try_block, finaly_block, Location);
+ block.WrapIntoDestructor (tf, try_block);
}
base.Emit ();
method_data.Emit (parent);
if ((ModFlags & Modifiers.COMPILER_GENERATED) != 0 && !Parent.IsCompilerGenerated)
- PredefinedAttributes.Get.CompilerGenerated.EmitAttribute (method_data.MethodBuilder);
+ Compiler.PredefinedAttributes.CompilerGenerated.EmitAttribute (method_data.MethodBuilder);
if (((ModFlags & Modifiers.DEBUGGER_HIDDEN) != 0))
- PredefinedAttributes.Get.DebuggerHidden.EmitAttribute (method_data.MethodBuilder);
+ Compiler.PredefinedAttributes.DebuggerHidden.EmitAttribute (method_data.MethodBuilder);
if (ReturnType == InternalType.Dynamic) {
return_attributes = new ReturnParameter (this, method_data.MethodBuilder, Location);
- PredefinedAttributes.Get.Dynamic.EmitAttribute (return_attributes.Builder);
+ Compiler.PredefinedAttributes.Dynamic.EmitAttribute (return_attributes.Builder);
} else {
var trans_flags = TypeManager.HasDynamicTypeUsed (ReturnType);
if (trans_flags != null) {
- var pa = PredefinedAttributes.Get.DynamicTransform;
+ var pa = Compiler.PredefinedAttributes.DynamicTransform;
if (pa.Constructor != null || pa.ResolveConstructor (Location, ArrayContainer.MakeType (TypeManager.bool_type))) {
return_attributes = new ReturnParameter (this, method_data.MethodBuilder, Location);
return_attributes.Builder.SetCustomAttribute (
if (!base.Define ())
return false;
- if (block != null && block.IsIterator && !(Parent is IteratorStorey)) {
+ if (block != null && block.IsIterator) {
//
// Current method is turned into automatically generated
// wrapper which creates an instance of iterator
}
}
+ // TODO: It should go to AssemblyClass or AssemblySpec
public class GlobalRootNamespace : RootNamespace {
Module [] modules;
Dictionary<string, RootNamespace> root_namespaces;
- public static GlobalRootNamespace Instance = new GlobalRootNamespace ();
-
- GlobalRootNamespace ()
+ public GlobalRootNamespace ()
: base ("global")
{
root_namespaces = new Dictionary<string, RootNamespace> ();
root_namespaces.Add (alias_name, this);
}
- public static void Reset ()
- {
- Instance = new GlobalRootNamespace ();
- }
-
public Assembly [] Assemblies {
get { return referenced_assemblies; }
}
this.Location = loc;
}
- public virtual FullNamedExpression Resolve (IMemberContext rc)
+ public virtual FullNamedExpression Resolve (IMemberContext rc, bool local)
{
- FullNamedExpression fne = GlobalRootNamespace.Instance.GetRootNamespace (Alias);
+ FullNamedExpression fne = rc.Compiler.GlobalRootNamespace.GetRootNamespace (Alias);
if (fne == null) {
rc.Compiler.Report.Error (430, Location,
"The extern alias `{0}' was not specified in -reference option",
this.value = name;
}
- public override FullNamedExpression Resolve (IMemberContext rc)
+ public override FullNamedExpression Resolve (IMemberContext rc, bool local)
{
if (resolved != null || value == null)
return resolved;
- if (rc == null)
+ if (local)
return null;
resolved = value.GetTypeExpression ().ResolveAsTypeStep (rc, false);
public readonly DeclSpace SlaveDeclSpace;
static readonly Namespace [] empty_namespaces = new Namespace [0];
Namespace [] namespace_using_table;
+ CompilerContext ctx;
static List<NamespaceEntry> entries = new List<NamespaceEntry> ();
entries = new List<NamespaceEntry> ();
}
- public NamespaceEntry (NamespaceEntry parent, CompilationUnit file, string name)
+ // TODO: ctx should be a module
+ public NamespaceEntry (CompilerContext ctx, NamespaceEntry parent, CompilationUnit file, string name)
{
+ this.ctx = ctx;
this.parent = parent;
this.file = file;
entries.Add (this);
if (parent != null)
ns = parent.NS.GetNamespace (name, true);
else if (name != null)
- ns = GlobalRootNamespace.Instance.GetNamespace (name, true);
+ ns = Compiler.GlobalRootNamespace.GetNamespace (name, true);
else
- ns = GlobalRootNamespace.Instance;
+ ns = Compiler.GlobalRootNamespace;
SlaveDeclSpace = new RootDeclSpace (this);
}
- private NamespaceEntry (NamespaceEntry parent, CompilationUnit file, Namespace ns, bool slave)
+ private NamespaceEntry (CompilerContext ctx, NamespaceEntry parent, CompilationUnit file, Namespace ns, bool slave)
{
+ this.ctx = ctx;
this.parent = parent;
this.file = file;
this.IsImplicit = true;
NamespaceEntry Doppelganger {
get {
if (!IsImplicit && doppelganger == null) {
- doppelganger = new NamespaceEntry (ImplicitParent, file, ns, true);
+ doppelganger = new NamespaceEntry (ctx, ImplicitParent, file, ns, true);
doppelganger.using_aliases = using_aliases;
}
return doppelganger;
if (implicit_parent == null) {
implicit_parent = (parent.NS == ns.Parent)
? parent
- : new NamespaceEntry (parent, file, ns.Parent, false);
+ : new NamespaceEntry (ctx, parent, file, ns.Parent, false);
}
return implicit_parent;
}
foreach (UsingAliasEntry ue in n.using_aliases) {
if (ue.Alias == name)
- return ue.Resolve (Doppelganger);
+ return ue.Resolve (Doppelganger ?? this, Doppelganger == null);
}
}
}
}
- return ue.Resolve (Doppelganger);
+ return ue.Resolve (Doppelganger ?? this, Doppelganger == null);
}
}
}
{
if (using_aliases != null) {
foreach (UsingAliasEntry ue in using_aliases)
- ue.Resolve (Doppelganger);
+ ue.Resolve (Doppelganger, Doppelganger == null);
}
if (using_clauses != null) {
#region IMemberContext Members
public CompilerContext Compiler {
- get { return RootContext.ToplevelTypes.Compiler; }
+ get { return ctx; }
}
public TypeSpec CurrentType {
public void AddressOf (EmitContext ec, AddressOp mode)
{
IMemoryLocation ml = expr as VariableReference;
- if (ml != null)
+ if (ml != null)
ml.AddressOf (ec, mode);
else
LocalVariable.AddressOf (ec, mode);
}
}
+ //
+ // Calls get_Value method on nullable expression
+ //
+ public class UnwrapCall : CompositeExpression
+ {
+ public UnwrapCall (Expression expr)
+ : base (expr)
+ {
+ }
+
+ protected override Expression DoResolve (ResolveContext rc)
+ {
+ base.DoResolve (rc);
+
+ if (type != null)
+ type = NullableInfo.GetUnderlyingType (type);
+
+ return this;
+ }
+
+ public override void Emit (EmitContext ec)
+ {
+ Invocation.EmitCall (ec, Child, NullableInfo.GetValue (Child.Type), null, loc);
+ }
+ }
+
public class Wrap : TypeCast
{
private Wrap (Expression expr, TypeSpec type)
public class LiftedBinaryOperator : Binary
{
Unwrap left_unwrap, right_unwrap;
- bool left_null_lifted, right_null_lifted;
Expression left_orig, right_orig;
Expression user_operator;
MethodSpec wrap_ctor;
{
}
+ bool IsBitwiseBoolean {
+ get {
+ return (Oper & Operator.BitwiseMask) != 0 && left_unwrap != null && right_unwrap != null &&
+ left_unwrap.Type == TypeManager.bool_type && right_unwrap.Type == TypeManager.bool_type;
+ }
+ }
+
+ bool IsLeftNullLifted {
+ get {
+ return (state & State.LeftNullLifted) != 0;
+ }
+ }
+
+ bool IsRightNullLifted {
+ get {
+ return (state & State.RightNullLifted) != 0;
+ }
+ }
+
public override Expression CreateExpressionTree (ResolveContext ec)
{
if (user_operator != null)
//
if (left_orig.IsNull) {
left = right;
- left_null_lifted = true;
+ state |= State.LeftNullLifted;
type = TypeManager.bool_type;
}
if (right_orig.IsNull) {
right = left;
- right_null_lifted = true;
+ state |= State.RightNullLifted;
type = TypeManager.bool_type;
}
//
// Either left or right is null
//
- if (left_unwrap != null && (right_null_lifted || right.IsNull)) {
+ if (left_unwrap != null && (IsRightNullLifted || right.IsNull)) {
left_unwrap.EmitCheck (ec);
if (Oper == Binary.Operator.Equality) {
ec.Emit (OpCodes.Ldc_I4_0);
return;
}
- if (right_unwrap != null && (left_null_lifted || left.IsNull)) {
+ if (right_unwrap != null && (IsLeftNullLifted || left.IsNull)) {
right_unwrap.EmitCheck (ec);
if (Oper == Binary.Operator.Equality) {
ec.Emit (OpCodes.Ldc_I4_0);
base.EmitOperator (ec, l);
}
- bool IsBitwiseBoolean {
- get {
- return (Oper & Operator.BitwiseMask) != 0 && left_unwrap != null && right_unwrap != null &&
- left_unwrap.Type == TypeManager.bool_type && right_unwrap.Type == TypeManager.bool_type;
- }
- }
-
Expression LiftResult (ResolveContext ec, Expression res_expr)
{
TypeExpr lifted_type;
//
// Avoid double conversion
//
- if (left_unwrap == null || left_null_lifted || left_unwrap.Type != left.Type || (left_unwrap != null && right_null_lifted)) {
+ if (left_unwrap == null || IsLeftNullLifted || left_unwrap.Type != left.Type || (left_unwrap != null && IsRightNullLifted)) {
lifted_type = new NullableType (left.Type, loc);
lifted_type = lifted_type.ResolveAsTypeTerminal (ec, false);
if (lifted_type == null)
left = EmptyCast.Create (left, lifted_type.Type);
}
- if (left != right && (right_unwrap == null || right_null_lifted || right_unwrap.Type != right.Type || (right_unwrap != null && left_null_lifted))) {
+ if (left != right && (right_unwrap == null || IsRightNullLifted || right_unwrap.Type != right.Type || (right_unwrap != null && IsLeftNullLifted))) {
lifted_type = new NullableType (right.Type, loc);
lifted_type = lifted_type.ResolveAsTypeTerminal (ec, false);
if (lifted_type == null)
type = res_expr.Type = lifted_type.Type;
}
- if (left_null_lifted) {
+ if (IsLeftNullLifted) {
left = LiftedNull.Create (right.Type, left.Location);
if ((Oper & (Operator.ArithmeticMask | Operator.ShiftMask | Operator.BitwiseMask)) != 0)
return CreateNullConstant (ec, right_orig).Resolve (ec);
}
- if (right_null_lifted) {
+ if (IsRightNullLifted) {
right = LiftedNull.Create (left.Type, right.Location);
if ((Oper & (Operator.ArithmeticMask | Operator.ShiftMask | Operator.BitwiseMask)) != 0)
// (in unlifted or lifted form) exists for the operation.
//
if (e == null && (Oper & Operator.EqualityMask) != 0) {
- if ((left_null_lifted && right_unwrap != null) || (right_null_lifted && left_unwrap != null))
+ if ((IsLeftNullLifted && right_unwrap != null) || (IsRightNullLifted && left_unwrap != null))
return LiftResult (ec, this);
}
return parameter_type;
}
- public TypeSpec Type {
- set { parameter_type = value; }
+ public void SetParameterType (TypeSpec type)
+ {
+ parameter_type = type;
}
}
return parameter_type;
}
- public override void ApplyAttributes (MethodBuilder mb, ConstructorBuilder cb, int index)
+ public override void ApplyAttributes (MethodBuilder mb, ConstructorBuilder cb, int index, PredefinedAttributes pa)
{
- base.ApplyAttributes (mb, cb, index);
- PredefinedAttributes.Get.ParamArray.EmitAttribute (builder);
+ base.ApplyAttributes (mb, cb, index, pa);
+ pa.ParamArray.EmitAttribute (builder);
}
}
parameter_type = InternalType.Arglist;
}
- public override void ApplyAttributes (MethodBuilder mb, ConstructorBuilder cb, int index)
+ public override void ApplyAttributes (MethodBuilder mb, ConstructorBuilder cb, int index, PredefinedAttributes pa)
{
// Nothing to do
}
//
// Parameter information created by parser
//
- public class Parameter : ParameterBase, IParameterData, ILocalVariable {
+ public class Parameter : ParameterBase, IParameterData, ILocalVariable // TODO: INamedBlockVariable
+ {
[Flags]
public enum Modifier : byte {
NONE = 0,
string name;
Expression default_expr;
protected TypeSpec parameter_type;
- public readonly Location Location;
+ readonly Location loc;
protected int idx;
public bool HasAddressTaken;
- Expression expr_tree_variable;
+ TemporaryVariableReference expr_tree_variable;
static TypeExpr parameter_expr_tree_type;
HoistedVariable hoisted_variant;
{
this.name = name;
modFlags = mod;
- Location = loc;
+ this.loc = loc;
texpr = type;
// Only assign, attributes will be attached during resolve
base.attributes = attrs;
}
-#region Properties
+ #region Properties
+
public Expression DefaultValue {
get {
return default_expr;
}
}
+ public Location Location {
+ get {
+ return loc;
+ }
+ }
+
+ public TypeSpec Type {
+ get {
+ return parameter_type;
+ }
+ }
+
public FullNamedExpression TypeExpression {
get {
return texpr;
}
}
-#endregion
+
+ public override string[] ValidAttributeTargets {
+ get {
+ return attribute_targets;
+ }
+ }
+
+ #endregion
public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
{
return;
}
- if (a.Type == PredefinedAttributes.Get.Out && (ModFlags & Modifier.REF) == Modifier.REF &&
+ if (a.Type == pa.Out && (ModFlags & Modifier.REF) == Modifier.REF &&
!OptAttributes.Contains (pa.In)) {
a.Report.Error (662, a.Location,
"Cannot specify only `Out' attribute on a ref parameter. Use both `In' and `Out' attributes or neither");
if (attributes == null)
return;
- var pa = attributes.Search (PredefinedAttributes.Get.OptionalParameter);
+ var pa = attributes.Search (rc.Compiler.PredefinedAttributes.OptionalParameter);
if (pa == null)
return;
attributes.Attrs.Remove (pa);
TypeSpec expr_type = null;
- pa = attributes.Search (PredefinedAttributes.Get.DefaultParameterValue);
+ pa = attributes.Search (rc.Compiler.PredefinedAttributes.DefaultParameterValue);
if (pa != null) {
attributes.Attrs.Remove (pa);
default_expr = pa.GetParameterDefaultValue (out expr_type);
"Argument type `{0}' is not CLS-compliant", GetSignatureForError ());
}
- public virtual void ApplyAttributes (MethodBuilder mb, ConstructorBuilder cb, int index)
+ public virtual void ApplyAttributes (MethodBuilder mb, ConstructorBuilder cb, int index, PredefinedAttributes pa)
{
if (mb == null)
builder = cb.DefineParameter (index, Attributes, Name);
Constant c = default_expr as Constant;
if (c != null) {
if (default_expr.Type == TypeManager.decimal_type) {
- builder.SetCustomAttribute (Const.CreateDecimalConstantAttribute (c));
+ builder.SetCustomAttribute (Const.CreateDecimalConstantAttribute (c, pa));
} else {
builder.SetConstant (c.GetTypedValue ());
}
}
if (parameter_type == InternalType.Dynamic) {
- PredefinedAttributes.Get.Dynamic.EmitAttribute (builder);
+ pa.Dynamic.EmitAttribute (builder);
} else {
var trans_flags = TypeManager.HasDynamicTypeUsed (parameter_type);
if (trans_flags != null) {
- var pa = PredefinedAttributes.Get.DynamicTransform;
- if (pa.Constructor != null || pa.ResolveConstructor (Location, ArrayContainer.MakeType (TypeManager.bool_type))) {
+ var dt = pa.DynamicTransform;
+ if (dt.Constructor != null || dt.ResolveConstructor (Location, ArrayContainer.MakeType (TypeManager.bool_type))) {
builder.SetCustomAttribute (
- new CustomAttributeBuilder (pa.Constructor, new object [] { trans_flags }));
+ new CustomAttributeBuilder (dt.Constructor, new object [] { trans_flags }));
}
}
}
}
- public override string[] ValidAttributeTargets {
- get {
- return attribute_targets;
- }
- }
-
public Parameter Clone ()
{
Parameter p = (Parameter) MemberwiseClone ();
if ((modFlags & Modifier.ISBYREF) != 0)
ec.Report.Error (1951, Location, "An expression tree parameter cannot use `ref' or `out' modifier");
- expr_tree_variable = new TemporaryVariable (ResolveParameterExpressionType (ec, Location).Type, Location);
- expr_tree_variable = expr_tree_variable.Resolve (ec);
+ expr_tree_variable = TemporaryVariableReference.Create (ResolveParameterExpressionType (ec, Location).Type, ec.CurrentBlock.ParametersBlock, Location);
+ expr_tree_variable = (TemporaryVariableReference) expr_tree_variable.Resolve (ec);
Arguments arguments = new Arguments (2);
arguments.Add (new Argument (new TypeOf (
}
}
- public Expression ExpressionTreeVariableReference ()
+ public TemporaryVariableReference ExpressionTreeVariableReference ()
{
return expr_tree_variable;
}
this.types = types;
}
- public ParametersCompiled (CompilerContext ctx, params Parameter[] parameters)
+ public ParametersCompiled (params Parameter[] parameters)
{
- if (parameters == null)
+ if (parameters == null || parameters.Length == 0)
throw new ArgumentException ("Use EmptyReadOnlyParameters");
this.parameters = parameters;
int count = parameters.Length;
- if (count == 0)
- return;
-
- if (count == 1) {
- has_params = (parameters [0].ModFlags & Parameter.Modifier.PARAMS) != 0;
- return;
- }
-
for (int i = 0; i < count; i++){
has_params |= (parameters [i].ModFlags & Parameter.Modifier.PARAMS) != 0;
- if (ctx != null) {
- string base_name = parameters[i].Name;
-
- for (int j = i + 1; j < count; j++) {
- if (base_name != parameters[j].Name)
- continue;
-
- ErrorDuplicateName (parameters[i], ctx.Report);
- i = j;
- }
- }
}
}
- public ParametersCompiled (CompilerContext ctx, Parameter [] parameters, bool has_arglist) :
- this (ctx, parameters)
+ public ParametersCompiled (Parameter [] parameters, bool has_arglist) :
+ this (parameters)
{
this.has_arglist = has_arglist;
}
return parameters;
}
- protected virtual void ErrorDuplicateName (Parameter p, Report Report)
- {
- Report.Error (100, p.Location, "The parameter name `{0}' is a duplicate", p.Name);
- }
-
public bool Resolve (IMemberContext ec)
{
if (types != null)
// Define each type attribute (in/out/ref) and
// the argument names.
- public void ApplyAttributes (MethodBase builder)
+ public void ApplyAttributes (IMemberContext mc, MethodBase builder)
{
if (Count == 0)
return;
MethodBuilder mb = builder as MethodBuilder;
ConstructorBuilder cb = builder as ConstructorBuilder;
+ var pa = mc.Compiler.PredefinedAttributes;
for (int i = 0; i < Count; i++) {
- this [i].ApplyAttributes (mb, cb, i + 1);
+ this [i].ApplyAttributes (mb, cb, i + 1, pa);
}
}
// to save some memory when referenced later.
//
StatementExpression se = new StatementExpression (p.CreateExpressionTreeVariable (ec));
- if (se.Resolve (ec))
+ if (se.Resolve (ec)) {
+ ec.CurrentBlock.AddScopeStatement (new TemporaryVariableReference.Declarator (p.ExpressionTreeVariableReference ()));
ec.CurrentBlock.AddScopeStatement (se);
+ }
initializers.Add (p.ExpressionTreeVariableReference ());
}
bool BaseImplements (TypeSpec iface_type, MethodSpec mi, out MethodSpec base_method)
{
var base_type = container.BaseType;
- base_method = (MethodSpec) MemberCache.FindMember (base_type, new MemberFilter (mi), BindingRestriction.None);
+
+ //
+ // Setup filter with no return type to give better error message
+ // about mismatch at return type when the check bellow rejects them
+ //
+ var filter = new MemberFilter (mi.Name, mi.Arity, MemberKind.Method, mi.Parameters, null);
+
+ base_method = (MethodSpec) MemberCache.FindMember (base_type, filter, BindingRestriction.None);
if (base_method == null || (base_method.Modifiers & Modifiers.PUBLIC) == 0)
return false;
if (base_method.DeclaringType.IsInterface)
return false;
- // Why was it here ????
- //if (TypeManager.ImplementsInterface (base_type, iface_type)) {
- // return true;
- //}
+ if (!TypeSpecComparer.Override.IsEqual (mi.ReturnType, base_method.ReturnType))
+ return false;
if (!base_method.IsAbstract && !base_method.IsVirtual)
// FIXME: We can avoid creating a proxy if base_method can be marked 'final virtual' instead.
bool base_implements_type = type.IsInterface &&
container.BaseType != null &&
- container.BaseType.ImplementsInterface (type);
+ container.BaseType.ImplementsInterface (type, false);
for (int j = 0; j < pending_implementations [i].methods.Count; ++j) {
var mi = pending_implementations[i].methods[j];
OptAttributes.Emit ();
if (member_type == InternalType.Dynamic) {
- PredefinedAttributes.Get.Dynamic.EmitAttribute (PropertyBuilder);
+ Compiler.PredefinedAttributes.Dynamic.EmitAttribute (PropertyBuilder);
} else {
var trans_flags = TypeManager.HasDynamicTypeUsed (member_type);
if (trans_flags != null) {
- var pa = PredefinedAttributes.Get.DynamicTransform;
+ var pa = Compiler.PredefinedAttributes.DynamicTransform;
if (pa.Constructor != null || pa.ResolveConstructor (Location, ArrayContainer.MakeType (TypeManager.bool_type))) {
PropertyBuilder.SetCustomAttribute (
new CustomAttributeBuilder (pa.Constructor, new object[] { trans_flags }));
block.AddStatement (new StatementExpression (
new CompoundAssign (Operation,
f_expr,
- block.GetParameterReference (ParameterInfo[0].Name, Location),
+ block.GetParameterReference (0, Location),
Location)));
}
return null;
MethodBuilder mb = method_data.MethodBuilder;
- ParameterInfo.ApplyAttributes (mb);
+ ParameterInfo.ApplyAttributes (this, mb);
Spec = new MethodSpec (MemberKind.Method, parent.PartialContainer.Definition, this, ReturnType, mb, ParameterInfo, method.ModFlags);
Spec.IsAccessor = true;
return false;
if (OptAttributes != null) {
- Attribute indexer_attr = OptAttributes.Search (PredefinedAttributes.Get.IndexerName);
+ Attribute indexer_attr = OptAttributes.Search (Compiler.PredefinedAttributes.IndexerName);
if (indexer_attr != null) {
var compiling = indexer_attr.Type.MemberDefinition as TypeContainer;
if (compiling != null)
// methods, fields, etc) we need to "Define" them before we
// can save the Assembly
// </remarks>
- static public void CloseTypes ()
+ static public void CloseTypes (CompilerContext ctx)
{
HackCorlibEnums ();
// If we have a <PrivateImplementationDetails> class, close it
//
if (helper_classes != null){
+ var cg = ctx.PredefinedAttributes.CompilerGenerated;
foreach (TypeBuilder type_builder in helper_classes) {
- PredefinedAttributes.Get.CompilerGenerated.EmitAttribute (type_builder);
+ cg.EmitAttribute (type_builder);
type_builder.CreateType ();
}
}
if (!OptAttributes.CheckTargets ())
return;
- Attribute a = ResolveAttribute (PredefinedAttributes.Get.DefaultCharset);
+ Attribute a = ResolveAttribute (Compiler.PredefinedAttributes.DefaultCharset);
if (a != null) {
has_default_charset = true;
DefaultCharSet = a.GetCharSetValue ();
bool defined;
bool referenced;
Label label;
+ Block block;
FlowBranching.UsageVector vectors;
- public LabeledStatement (string name, Location l)
+ public LabeledStatement (string name, Block block, Location l)
{
this.name = name;
+ this.block = block;
this.loc = l;
}
return label;
}
+ public Block Block {
+ get {
+ return block;
+ }
+ }
+
public string Name {
get { return name; }
}
protected override void DoEmit (EmitContext ec)
{
+ if (!HasBeenReferenced)
+ ec.Report.Warning (164, 2, loc, "This label has not been referenced");
+
LabelTarget (ec);
ec.MarkLabel (label);
}
void EmitAddressOf (EmitContext ec);
}
- public interface IKnownVariable {
+ public interface INamedBlockVariable
+ {
Block Block { get; }
+ Expression CreateReferenceExpression (ResolveContext rc, Location loc);
+ bool IsDeclared { get; }
Location Location { get; }
}
- //
- // The information about a user-perceived local variable
- //
- public class LocalInfo : IKnownVariable, ILocalVariable
+ public class BlockVariableDeclaration : Statement
{
- public readonly FullNamedExpression Type;
+ public class Declarator
+ {
+ LocalVariable li;
+ Expression initializer;
- public TypeSpec VariableType;
- public readonly string Name;
- public readonly Location Location;
- public readonly Block Block;
+ public Declarator (LocalVariable li, Expression initializer)
+ {
+ if (li.Type != null)
+ throw new ArgumentException ("Expected null variable type");
- public VariableInfo VariableInfo;
- HoistedVariable hoisted_variant;
+ this.li = li;
+ this.initializer = initializer;
+ }
- [Flags]
- enum Flags : byte {
- Used = 1,
- ReadOnly = 2,
- Pinned = 4,
- IsThis = 8,
- AddressTaken = 32,
- CompilerGenerated = 64,
- IsConstant = 128
- }
+ public Declarator (Declarator clone, Expression initializer)
+ {
+ this.li = clone.li;
+ this.initializer = initializer;
+ }
+
+ #region Properties
+
+ public LocalVariable Variable {
+ get {
+ return li;
+ }
+ }
- public enum ReadOnlyContext: byte {
- Using,
- Foreach,
- Fixed
+ public Expression Initializer {
+ get {
+ return initializer;
+ }
+ set {
+ initializer = value;
+ }
+ }
+
+ #endregion
}
- Flags flags;
- ReadOnlyContext ro_context;
- LocalBuilder builder;
+ Expression initializer;
+ protected FullNamedExpression type_expr;
+ protected LocalVariable li;
+ protected List<Declarator> declarators;
- public LocalInfo (FullNamedExpression type, string name, Block block, Location l)
+ public BlockVariableDeclaration (FullNamedExpression type, LocalVariable li)
{
- Type = type;
- Name = name;
- Block = block;
- Location = l;
+ this.type_expr = type;
+ this.li = li;
+ this.loc = type_expr.Location;
}
- public LocalInfo (TypeContainer ds, Block block, Location l)
+ protected BlockVariableDeclaration (LocalVariable li)
{
- VariableType = ds.IsGeneric ? ds.CurrentType : ds.Definition;
- Block = block;
- Location = l;
+ this.li = li;
}
- public void ResolveVariable (EmitContext ec)
- {
- if (HoistedVariant != null)
- return;
+ #region Properties
- if (builder == null) {
- builder = ec.DeclareLocal (VariableType, Pinned);
+ public List<Declarator> Declarators {
+ get {
+ return declarators;
}
}
- public void Emit (EmitContext ec)
- {
- ec.Emit (OpCodes.Ldloc, builder);
+ public Expression Initializer {
+ get {
+ return initializer;
+ }
+ set {
+ initializer = value;
+ }
}
- public void EmitAssign (EmitContext ec)
- {
- ec.Emit (OpCodes.Stloc, builder);
+ public FullNamedExpression TypeExpression {
+ get {
+ return type_expr;
+ }
}
- public void EmitAddressOf (EmitContext ec)
- {
- ec.Emit (OpCodes.Ldloca, builder);
+ public LocalVariable Variable {
+ get {
+ return li;
+ }
}
- public void EmitSymbolInfo (EmitContext ec)
+ #endregion
+
+ public void AddDeclarator (Declarator decl)
{
- if (builder != null)
- ec.DefineLocalVariable (Name, builder);
- }
+ if (declarators == null)
+ declarators = new List<Declarator> ();
- //
- // Hoisted local variable variant
- //
- public HoistedVariable HoistedVariant {
- get {
- return hoisted_variant;
- }
- set {
- hoisted_variant = value;
- }
+ declarators.Add (decl);
}
- public bool IsThisAssigned (BlockContext ec, Block block)
+ void CreateEvaluatorVariable (BlockContext bc, LocalVariable li)
{
- if (VariableInfo == null)
- throw new Exception ();
+ var container = bc.CurrentMemberDefinition.Parent;
- if (!ec.DoFlowAnalysis || ec.CurrentBranching.IsAssigned (VariableInfo))
- return true;
+ Field f = new Field (container, new TypeExpression (li.Type, li.Location), Modifiers.PUBLIC | Modifiers.STATIC,
+ new MemberName (li.Name, li.Location), null);
- return VariableInfo.TypeInfo.IsFullyInitialized (ec, VariableInfo, block.StartLocation);
+ container.AddField (f);
+ f.Define ();
+ Evaluator.QueueField (f);
+
+ li.HoistedVariant = new HoistedEvaluatorVariable (f);
+ li.SetIsUsed ();
}
- public bool IsAssigned (BlockContext ec)
+ public override bool Resolve (BlockContext bc)
{
- if (VariableInfo == null)
- throw new Exception ();
+ if (li.Type == null) {
+ TypeSpec type = null;
+ if (type_expr is VarExpr) {
+ //
+ // C# 3.0 introduced contextual keywords (var) which behaves like a type if type with
+ // same name exists or as a keyword when no type was found
+ //
+ var texpr = type_expr.ResolveAsTypeTerminal (bc, true);
+ if (texpr == null) {
+ if (RootContext.Version < LanguageVersion.V_3)
+ bc.Report.FeatureIsNotAvailable (loc, "implicitly typed local variable");
+
+ if (li.IsFixed) {
+ bc.Report.Error (821, loc, "A fixed statement cannot use an implicitly typed local variable");
+ return false;
+ }
- return !ec.DoFlowAnalysis || ec.CurrentBranching.IsAssigned (VariableInfo);
- }
+ if (li.IsConstant) {
+ bc.Report.Error (822, loc, "An implicitly typed local variable cannot be a constant");
+ return false;
+ }
- public bool Resolve (ResolveContext ec)
- {
- if (VariableType != null)
- return true;
+ if (Initializer == null) {
+ bc.Report.Error (818, loc, "An implicitly typed local variable declarator must include an initializer");
+ return false;
+ }
- TypeExpr texpr = Type.ResolveAsContextualType (ec, false);
- if (texpr == null)
- return false;
-
- VariableType = texpr.Type;
+ if (declarators != null) {
+ bc.Report.Error (819, loc, "An implicitly typed local variable declaration cannot include multiple declarators");
+ declarators = null;
+ }
- if (VariableType.IsStatic) {
- FieldBase.Error_VariableOfStaticClass (Location, Name, VariableType, ec.Report);
- return false;
- }
+ Initializer = Initializer.Resolve (bc);
+ if (Initializer != null) {
+ ((VarExpr) type_expr).InferType (bc, Initializer);
+ type = type_expr.Type;
+ }
+ }
+ }
- if (VariableType.IsPointer && !ec.IsUnsafe)
- Expression.UnsafeError (ec, Location);
+ if (type == null) {
+ var texpr = type_expr.ResolveAsTypeTerminal (bc, false);
+ if (texpr == null)
+ return false;
- return true;
- }
+ type = texpr.Type;
- public bool IsConstant {
- get { return (flags & Flags.IsConstant) != 0; }
- set { flags |= Flags.IsConstant; }
- }
+ if (li.IsConstant && !type.IsConstantCompatible) {
+ Const.Error_InvalidConstantType (type, loc, bc.Report);
+ }
+ }
- public bool AddressTaken {
- get { return (flags & Flags.AddressTaken) != 0; }
- set { flags |= Flags.AddressTaken; }
- }
+ if (type.IsStatic)
+ FieldBase.Error_VariableOfStaticClass (loc, li.Name, type, bc.Report);
- public bool CompilerGenerated {
- get { return (flags & Flags.CompilerGenerated) != 0; }
- set { flags |= Flags.CompilerGenerated; }
- }
+ if (type.IsPointer && !bc.IsUnsafe)
+ Expression.UnsafeError (bc, loc);
- public override string ToString ()
- {
- return String.Format ("LocalInfo ({0},{1},{2},{3})",
- Name, Type, VariableInfo, Location);
- }
+ li.Type = type;
+ }
- public bool Used {
- get { return (flags & Flags.Used) != 0; }
- set { flags = value ? (flags | Flags.Used) : (unchecked (flags & ~Flags.Used)); }
- }
+ bool eval_global = RootContext.StatementMode && bc.CurrentBlock is ToplevelBlock;
+ if (eval_global) {
+ CreateEvaluatorVariable (bc, li);
+ } else {
+ li.PrepareForFlowAnalysis (bc);
+ }
+
+ if (initializer != null) {
+ initializer = ResolveInitializer (bc, li, initializer);
+ // li.Variable.DefinitelyAssigned
+ }
+
+ if (declarators != null) {
+ foreach (var d in declarators) {
+ d.Variable.Type = li.Type;
+ if (eval_global) {
+ CreateEvaluatorVariable (bc, d.Variable);
+ } else {
+ d.Variable.PrepareForFlowAnalysis (bc);
+ }
+
+ if (d.Initializer != null) {
+ d.Initializer = ResolveInitializer (bc, d.Variable, d.Initializer);
+ // d.Variable.DefinitelyAssigned
+ }
+ }
+ }
- public bool ReadOnly {
- get { return (flags & Flags.ReadOnly) != 0; }
+ return true;
}
- public void SetReadOnlyContext (ReadOnlyContext context)
+ protected virtual Expression ResolveInitializer (BlockContext bc, LocalVariable li, Expression initializer)
{
- flags |= Flags.ReadOnly;
- ro_context = context;
+ var a = new SimpleAssign (li.CreateReferenceExpression (bc, li.Location), initializer, li.Location);
+ return a.ResolveStatement (bc);
}
- public string GetReadOnlyContext ()
+ protected override void DoEmit (EmitContext ec)
{
- if (!ReadOnly)
- throw new InternalErrorException ("Variable is not readonly");
+ if (li.IsConstant)
+ return;
- switch (ro_context) {
- case ReadOnlyContext.Fixed:
- return "fixed variable";
- case ReadOnlyContext.Foreach:
- return "foreach iteration variable";
- case ReadOnlyContext.Using:
- return "using variable";
+ li.CreateBuilder (ec);
+
+ if (Initializer != null)
+ ((ExpressionStatement) Initializer).EmitStatement (ec);
+
+ if (declarators != null) {
+ foreach (var d in declarators) {
+ d.Variable.CreateBuilder (ec);
+ if (d.Initializer != null)
+ ((ExpressionStatement) d.Initializer).EmitStatement (ec);
+ }
}
- throw new NotImplementedException ();
}
- //
- // Whether the variable is pinned, if Pinned the variable has been
- // allocated in a pinned slot with DeclareLocal.
- //
- public bool Pinned {
- get { return (flags & Flags.Pinned) != 0; }
- set { flags = value ? (flags | Flags.Pinned) : (flags & ~Flags.Pinned); }
- }
+ protected override void CloneTo (CloneContext clonectx, Statement target)
+ {
+ BlockVariableDeclaration t = (BlockVariableDeclaration) target;
- public bool IsThis {
- get { return (flags & Flags.IsThis) != 0; }
- set { flags = value ? (flags | Flags.IsThis) : (flags & ~Flags.IsThis); }
- }
+ if (type_expr != null)
+ t.type_expr = (FullNamedExpression) type_expr.Clone (clonectx);
- Block IKnownVariable.Block {
- get { return Block; }
+ if (initializer != null)
+ t.initializer = initializer.Clone (clonectx);
+
+ if (declarators != null) {
+ t.declarators = null;
+ foreach (var d in declarators)
+ t.AddDeclarator (new Declarator (d, d.Initializer == null ? null : d.Initializer.Clone (clonectx)));
+ }
}
+ }
- Location IKnownVariable.Location {
- get { return Location; }
+ class BlockConstantDeclaration : BlockVariableDeclaration
+ {
+ public BlockConstantDeclaration (FullNamedExpression type, LocalVariable li)
+ : base (type, li)
+ {
}
- public LocalInfo Clone (CloneContext clonectx)
+ protected override Expression ResolveInitializer (BlockContext bc, LocalVariable li, Expression initializer)
{
- //
- // Variables in anonymous block are not resolved yet
- //
- if (VariableType == null)
- return new LocalInfo ((FullNamedExpression) Type.Clone (clonectx), Name, clonectx.LookupBlock (Block), Location);
+ initializer = initializer.Resolve (bc);
+ if (initializer == null)
+ return null;
- //
- // Variables in method block are resolved
- //
- LocalInfo li = new LocalInfo (null, Name, clonectx.LookupBlock (Block), Location);
- li.VariableType = VariableType;
- return li;
- }
- }
+ var c = initializer as Constant;
+ if (c == null) {
+ initializer.Error_ExpressionMustBeConstant (bc, initializer.Location, li.Name);
+ return null;
+ }
- /// <summary>
- /// Block represents a C# block.
- /// </summary>
- ///
- /// <remarks>
- /// This class is used in a number of places: either to represent
- /// explicit blocks that the programmer places or implicit blocks.
- ///
- /// Implicit blocks are used as labels or to introduce variable
- /// declarations.
- ///
- /// Top-level blocks derive from Block, and they are called ToplevelBlock
- /// they contain extra information that is not necessary on normal blocks.
- /// </remarks>
- public class Block : Statement {
- public Block Parent;
- public Location StartLocation;
- public Location EndLocation = Location.Null;
+ c = c.ConvertImplicitly (bc, li.Type);
+ if (c == null) {
+ if (TypeManager.IsReferenceType (li.Type))
+ initializer.Error_ConstantCanBeInitializedWithNullOnly (bc, li.Type, initializer.Location, li.Name);
+ else
+ initializer.Error_ValueCannotBeConverted (bc, initializer.Location, li.Type, false);
- public ExplicitBlock Explicit;
- public ToplevelBlock Toplevel; // TODO: Use Explicit
+ return null;
+ }
+ li.ConstantValue = c;
+ return initializer;
+ }
+ }
+
+ //
+ // The information about a user-perceived local variable
+ //
+ public class LocalVariable : INamedBlockVariable, ILocalVariable
+ {
[Flags]
public enum Flags
{
- Unchecked = 1,
- BlockUsed = 2,
- VariablesInitialized = 4,
- HasRet = 8,
- Unsafe = 16,
- IsIterator = 32,
- HasCapturedVariable = 64,
- HasCapturedThis = 1 << 7,
- IsExpressionTree = 1 << 8
+ Used = 1,
+ IsThis = 1 << 1,
+ AddressTaken = 1 << 2,
+ CompilerGenerated = 1 << 3,
+ Constant = 1 << 4,
+ ForeachVariable = 1 << 5,
+ FixedVariable = 1 << 6,
+ UsingVariable = 1 << 7,
+// DefinitelyAssigned = 1 << 8,
+
+ ReadonlyMask = ForeachVariable | FixedVariable | UsingVariable
}
- protected Flags flags;
+ TypeSpec type;
+ readonly string name;
+ readonly Location loc;
+ readonly Block block;
+ Flags flags;
+ Constant const_value;
- public bool Unchecked {
- get { return (flags & Flags.Unchecked) != 0; }
- set { flags = value ? flags | Flags.Unchecked : flags & ~Flags.Unchecked; }
- }
+ public VariableInfo VariableInfo;
+ HoistedVariable hoisted_variant;
- public bool Unsafe {
- get { return (flags & Flags.Unsafe) != 0; }
- set { flags |= Flags.Unsafe; }
+ LocalBuilder builder;
+
+ public LocalVariable (Block block, string name, Location loc)
+ {
+ this.block = block;
+ this.name = name;
+ this.loc = loc;
}
- //
- // The statements in this block
- //
- protected List<Statement> statements;
+ public LocalVariable (Block block, string name, Flags flags, Location loc)
+ : this (block, name, loc)
+ {
+ this.flags = flags;
+ }
//
- // An array of Blocks. We keep track of children just
- // to generate the local variable declarations.
- //
- // Statements and child statements are handled through the
- // statements.
+ // Used by variable declarators
//
- List<Block> children;
+ public LocalVariable (LocalVariable li, string name, Location loc)
+ : this (li.block, name, li.flags, loc)
+ {
+ }
- //
- // Labels. (label, block) pairs.
- //
- protected Dictionary<string, LabeledStatement> labels;
+ #region Properties
- //
- // Keeps track of (name, type) pairs
- //
- Dictionary<string, LocalInfo> variables;
+ public Block Block {
+ get {
+ return block;
+ }
+ }
- //
- // Keeps track of constants
- Dictionary<string, Expression> constants;
+ public Constant ConstantValue {
+ get {
+ return const_value;
+ }
+ set {
+ const_value = value;
+ }
+ }
//
- // Temporary variables.
- //
- List<LocalInfo> temporary_variables;
-
- //
- // If this is a switch section, the enclosing switch block.
+ // Hoisted local variable variant
//
- protected ExplicitBlock switch_block;
+ public HoistedVariable HoistedVariant {
+ get {
+ return hoisted_variant;
+ }
+ set {
+ hoisted_variant = value;
+ }
+ }
- protected List<Statement> scope_initializers;
+ public bool IsDeclared {
+ get {
+ return type != null;
+ }
+ }
- List<ToplevelBlock> anonymous_children;
+ public bool IsConstant {
+ get {
+ return (flags & Flags.Constant) != 0;
+ }
+ }
- int? resolving_init_idx;
-
- protected static int id;
-
- int this_id;
-
- int assignable_slots;
- bool unreachable_shown;
- bool unreachable;
-
- public Block (Block parent)
- : this (parent, (Flags) 0, Location.Null, Location.Null)
- { }
-
- public Block (Block parent, Flags flags)
- : this (parent, flags, Location.Null, Location.Null)
- { }
-
- public Block (Block parent, Location start, Location end)
- : this (parent, (Flags) 0, start, end)
- { }
-
- //
- // Useful when TopLevel block is downgraded to normal block
- //
- public Block (ToplevelBlock parent, ToplevelBlock source)
- : this (parent, source.flags, source.StartLocation, source.EndLocation)
- {
- statements = source.statements;
- children = source.children;
- labels = source.labels;
- variables = source.variables;
- constants = source.constants;
- switch_block = source.switch_block;
+ public bool IsThis {
+ get {
+ return (flags & Flags.IsThis) != 0;
+ }
}
- public Block (Block parent, Flags flags, Location start, Location end)
- {
- if (parent != null) {
- parent.AddChild (this);
-
- // the appropriate constructors will fixup these fields
- Toplevel = parent.Toplevel;
- Explicit = parent.Explicit;
+ public bool IsFixed {
+ get {
+ return (flags & Flags.FixedVariable) != 0;
}
-
- this.Parent = parent;
- this.flags = flags;
- this.StartLocation = start;
- this.EndLocation = end;
- this.loc = start;
- this_id = id++;
- statements = new List<Statement> (4);
}
- #region Properties
-
- public int ID {
- get { return this_id; }
+ public bool IsReadonly {
+ get {
+ return (flags & Flags.ReadonlyMask) != 0;
+ }
}
- public IDictionary<string, LocalInfo> Variables {
+ public Location Location {
get {
- if (variables == null)
- variables = new Dictionary<string, LocalInfo> ();
- return variables;
+ return loc;
}
}
- #endregion
-
- public ExplicitBlock CreateSwitchBlock (Location start)
- {
- // FIXME: Only explicit block should be created
- var new_block = new ExplicitBlock (this, start, start);
- new_block.switch_block = Explicit;
- return new_block;
+ public string Name {
+ get {
+ return name;
+ }
}
- void AddChild (Block b)
- {
- if (children == null)
- children = new List<Block> (1);
-
- children.Add (b);
+ public TypeSpec Type {
+ get {
+ return type;
+ }
+ set {
+ type = value;
+ }
}
- public void SetEndLocation (Location loc)
- {
- EndLocation = loc;
- }
+ #endregion
- protected void Error_158 (string name, Location loc)
+ public void CreateBuilder (EmitContext ec)
{
- Toplevel.Report.Error (158, loc, "The label `{0}' shadows another label " +
- "by the same name in a contained scope", name);
- }
-
- /// <summary>
- /// Adds a label to the current block.
- /// </summary>
- ///
- /// <returns>
- /// false if the name already exists in this block. true
- /// otherwise.
- /// </returns>
- ///
- public bool AddLabel (LabeledStatement target)
- {
- if (switch_block != null)
- return switch_block.AddLabel (target);
-
- string name = target.Name;
-
- Block cur = this;
- while (cur != null) {
- LabeledStatement s = cur.DoLookupLabel (name);
- if (s != null) {
- Toplevel.Report.SymbolRelatedToPreviousError (s.loc, s.Name);
- Toplevel.Report.Error (140, target.loc, "The label `{0}' is a duplicate", name);
- return false;
+ if ((flags & Flags.Used) == 0) {
+ if (VariableInfo == null) {
+ // Missing flow analysis or wrong variable flags
+ throw new InternalErrorException ("VariableInfo is null and the variable `{0}' is not used", name);
}
- if (this == Explicit)
- break;
-
- cur = cur.Parent;
+ if (VariableInfo.IsEverAssigned)
+ ec.Report.Warning (219, 3, Location, "The variable `{0}' is assigned but its value is never used", Name);
+ else
+ ec.Report.Warning (168, 3, Location, "The variable `{0}' is declared but never used", Name);
}
- while (cur != null) {
- if (cur.DoLookupLabel (name) != null) {
- Error_158 (name, target.loc);
- return false;
- }
-
- if (children != null) {
- foreach (Block b in children) {
- LabeledStatement s = b.DoLookupLabel (name);
- if (s == null)
- continue;
+ if (HoistedVariant != null)
+ return;
- Toplevel.Report.SymbolRelatedToPreviousError (s.loc, s.Name);
- Error_158 (name, target.loc);
- return false;
- }
- }
+ if (builder != null) {
+ if ((flags & Flags.CompilerGenerated) != 0)
+ return;
- cur = cur.Parent;
+ // To avoid Used warning duplicates
+ throw new InternalErrorException ("Already created variable `{0}'", name);
}
- Toplevel.CheckError158 (name, target.loc);
-
- if (labels == null)
- labels = new Dictionary<string, LabeledStatement> ();
-
- labels.Add (name, target);
- return true;
+ //
+ // All fixed variabled are pinned, a slot has to be alocated
+ //
+ builder = ec.DeclareLocal (Type, IsFixed);
+ if (SymbolWriter.HasSymbolWriter)
+ ec.DefineLocalVariable (name, builder);
}
- public LabeledStatement LookupLabel (string name)
+ public static LocalVariable CreateCompilerGenerated (TypeSpec type, Block block, Location loc)
{
- LabeledStatement s = DoLookupLabel (name);
- if (s != null)
- return s;
+ LocalVariable li = new LocalVariable (block, "<$$>", Flags.CompilerGenerated | Flags.Used, loc);
+ li.Type = type;
+ return li;
+ }
- if (children == null)
- return null;
+ public Expression CreateReferenceExpression (ResolveContext rc, Location loc)
+ {
+ if (IsConstant && const_value != null)
+ return Constant.CreateConstantFromValue (Type, const_value.GetValue (), loc).Resolve (rc);
- foreach (Block child in children) {
- if (Explicit != child.Explicit)
- continue;
+ return new LocalVariableReference (this, loc);
+ }
- s = child.LookupLabel (name);
- if (s != null)
- return s;
- }
+ public void Emit (EmitContext ec)
+ {
+ // TODO: Need something better for temporary variables
+ if ((flags & Flags.CompilerGenerated) != 0)
+ CreateBuilder (ec);
- return null;
+ ec.Emit (OpCodes.Ldloc, builder);
}
- LabeledStatement DoLookupLabel (string name)
+ public void EmitAssign (EmitContext ec)
{
- if (switch_block != null)
- return switch_block.LookupLabel (name);
+ // TODO: Need something better for temporary variables
+ if ((flags & Flags.CompilerGenerated) != 0)
+ CreateBuilder (ec);
- if (labels != null)
- if (labels.ContainsKey (name))
- return labels [name];
+ ec.Emit (OpCodes.Stloc, builder);
+ }
- return null;
+ public void EmitAddressOf (EmitContext ec)
+ {
+ ec.Emit (OpCodes.Ldloca, builder);
}
- public bool CheckInvariantMeaningInBlock (string name, Expression e, Location loc)
+ public bool IsThisAssigned (BlockContext ec, Block block)
{
- Block b = this;
- IKnownVariable kvi = b.Explicit.GetKnownVariable (name);
- while (kvi == null) {
- b = b.Explicit.Parent;
- if (b == null)
- return true;
- kvi = b.Explicit.GetKnownVariable (name);
- }
+ if (VariableInfo == null)
+ throw new Exception ();
- if (kvi.Block == b)
+ if (!ec.DoFlowAnalysis || ec.CurrentBranching.IsAssigned (VariableInfo))
return true;
- // Is kvi.Block nested inside 'b'
- if (b.Explicit != kvi.Block.Explicit) {
- //
- // If a variable by the same name it defined in a nested block of this
- // block, we violate the invariant meaning in a block.
- //
- if (b == this) {
- Toplevel.Report.SymbolRelatedToPreviousError (kvi.Location, name);
- Toplevel.Report.Error (135, loc, "`{0}' conflicts with a declaration in a child block", name);
- return false;
- }
-
- //
- // It's ok if the definition is in a nested subblock of b, but not
- // nested inside this block -- a definition in a sibling block
- // should not affect us.
- //
- return true;
- }
+ return VariableInfo.TypeInfo.IsFullyInitialized (ec, VariableInfo, block.StartLocation);
+ }
- //
- // Block 'b' and kvi.Block are the same textual block.
- // However, different variables are extant.
- //
- // Check if the variable is in scope in both blocks. We use
- // an indirect check that depends on AddVariable doing its
- // part in maintaining the invariant-meaning-in-block property.
- //
- if (e is VariableReference || (e is Constant && b.GetLocalInfo (name) != null))
- return true;
+ public bool IsAssigned (BlockContext ec)
+ {
+ if (VariableInfo == null)
+ throw new Exception ();
- if (this is ToplevelBlock) {
- Toplevel.Report.SymbolRelatedToPreviousError (kvi.Location, name);
- e.Error_VariableIsUsedBeforeItIsDeclared (Toplevel.Report, name);
- return false;
- }
+ return !ec.DoFlowAnalysis || ec.CurrentBranching.IsAssigned (VariableInfo);
+ }
+ public void PrepareForFlowAnalysis (BlockContext bc)
+ {
//
- // Even though we detected the error when the name is used, we
- // treat it as if the variable declaration was in error.
+ // No need for definitely assigned check for these guys
//
- Toplevel.Report.SymbolRelatedToPreviousError (loc, name);
- Error_AlreadyDeclared (kvi.Location, name, "parent or current");
- return false;
+ if ((flags & (Flags.Constant | Flags.ReadonlyMask | Flags.CompilerGenerated)) != 0)
+ return;
+
+ VariableInfo = new VariableInfo (this, bc.FlowOffset);
+ bc.FlowOffset += VariableInfo.Length;
}
- protected bool CheckParentConflictName (ToplevelBlock block, string name, Location l)
+ //
+ // Mark the variables as referenced in the user code
+ //
+ public void SetIsUsed ()
{
- LocalInfo vi = GetLocalInfo (name);
- if (vi != null) {
- block.Report.SymbolRelatedToPreviousError (vi.Location, name);
- if (Explicit == vi.Block.Explicit) {
- Error_AlreadyDeclared (l, name, null);
- } else {
- Error_AlreadyDeclared (l, name, this is ToplevelBlock ?
- "parent or current" : "parent");
- }
- return false;
- }
+ flags |= Flags.Used;
+ }
- if (block != null) {
- var tblock = block.CheckParameterNameConflict (name);
- if (tblock != null) {
- if (block == tblock && block is Linq.QueryBlock)
- Error_AlreadyDeclared (loc, name);
- else
- Error_AlreadyDeclared (loc, name, "parent or current");
+ public bool AddressTaken {
+ get { return (flags & Flags.AddressTaken) != 0; }
+ set { flags |= Flags.AddressTaken; }
+ }
- return false;
- }
+ public override string ToString ()
+ {
+ return string.Format ("LocalInfo ({0},{1},{2},{3})", name, type, VariableInfo, Location);
+ }
+
+ public string GetReadOnlyContext ()
+ {
+ switch (flags & Flags.ReadonlyMask) {
+ case Flags.FixedVariable:
+ return "fixed variable";
+ case Flags.ForeachVariable:
+ return "foreach iteration variable";
+ case Flags.UsingVariable:
+ return "using variable";
}
- return true;
+ throw new InternalErrorException ("Variable is not readonly");
}
+ }
- public LocalInfo AddVariable (Expression type, string name, Location l)
+ /// <summary>
+ /// Block represents a C# block.
+ /// </summary>
+ ///
+ /// <remarks>
+ /// This class is used in a number of places: either to represent
+ /// explicit blocks that the programmer places or implicit blocks.
+ ///
+ /// Implicit blocks are used as labels or to introduce variable
+ /// declarations.
+ ///
+ /// Top-level blocks derive from Block, and they are called ToplevelBlock
+ /// they contain extra information that is not necessary on normal blocks.
+ /// </remarks>
+ public class Block : Statement {
+ [Flags]
+ public enum Flags
{
- if (!CheckParentConflictName (Toplevel, name, l))
- return null;
+ Unchecked = 1,
+ HasRet = 8,
+ Unsafe = 16,
+ IsIterator = 32,
+ HasCapturedVariable = 64,
+ HasCapturedThis = 1 << 7,
+ IsExpressionTree = 1 << 8,
+ CompilerGenerated = 1 << 9
+ }
- IKnownVariable kvi = Explicit.GetKnownVariable (name);
- if (kvi != null) {
- Toplevel.Report.SymbolRelatedToPreviousError (kvi.Location, name);
- Error_AlreadyDeclared (l, name, "child");
- return null;
- }
+ public Block Parent;
+ public Location StartLocation;
+ public Location EndLocation;
- LocalInfo vi = new LocalInfo ((FullNamedExpression) type, name, this, l);
- AddVariable (vi);
+ public ExplicitBlock Explicit;
+ public ParametersBlock ParametersBlock;
- if ((flags & Flags.VariablesInitialized) != 0)
- throw new InternalErrorException ("block has already been resolved");
+ protected Flags flags;
- return vi;
- }
+ //
+ // The statements in this block
+ //
+ protected List<Statement> statements;
+
+ protected List<Statement> scope_initializers;
+
+ int? resolving_init_idx;
+
+ Block original;
+
+#if DEBUG
+ static int id;
+ public int ID = id++;
+
+ static int clone_id_counter;
+ int clone_id;
+#endif
+
+// int assignable_slots;
+ bool unreachable_shown;
+ bool unreachable;
- protected virtual void AddVariable (LocalInfo li)
+ public Block (Block parent, Location start, Location end)
+ : this (parent, 0, start, end)
{
- Variables.Add (li.Name, li);
- Explicit.AddKnownVariable (li.Name, li);
}
- protected virtual void Error_AlreadyDeclared (Location loc, string var, string reason)
+ public Block (Block parent, Flags flags, Location start, Location end)
{
- if (reason == null) {
- Error_AlreadyDeclared (loc, var);
- return;
+ if (parent != null) {
+ // the appropriate constructors will fixup these fields
+ ParametersBlock = parent.ParametersBlock;
+ Explicit = parent.Explicit;
}
- Toplevel.Report.Error (136, loc, "A local variable named `{0}' cannot be declared " +
- "in this scope because it would give a different meaning " +
- "to `{0}', which is already used in a `{1}' scope " +
- "to denote something else", var, reason);
+ this.Parent = parent;
+ this.flags = flags;
+ this.StartLocation = start;
+ this.EndLocation = end;
+ this.loc = start;
+ statements = new List<Statement> (4);
+
+ this.original = this;
}
- protected virtual void Error_AlreadyDeclared (Location loc, string name)
- {
- Toplevel.Report.Error (128, loc,
- "A local variable named `{0}' is already defined in this scope", name);
+ #region Properties
+
+ public bool HasRet {
+ get { return (flags & Flags.HasRet) != 0; }
}
-
- public virtual void Error_AlreadyDeclaredTypeParameter (Location loc, string name, string conflict)
- {
- Toplevel.Report.Error (412, loc, "The type parameter name `{0}' is the same as `{1}'",
- name, conflict);
+
+ public Block Original {
+ get {
+ return original;
+ }
}
- public bool AddConstant (Expression type, string name, Expression value, Location l)
- {
- if (AddVariable (type, name, l) == null)
- return false;
-
- if (constants == null)
- constants = new Dictionary<string, Expression> ();
+ public bool IsCompilerGenerated {
+ get { return (flags & Flags.CompilerGenerated) != 0; }
+ set { flags = value ? flags | Flags.CompilerGenerated : flags & ~Flags.CompilerGenerated; }
+ }
- constants.Add (name, value);
+ public bool Unchecked {
+ get { return (flags & Flags.Unchecked) != 0; }
+ set { flags = value ? flags | Flags.Unchecked : flags & ~Flags.Unchecked; }
+ }
- // A block is considered used if we perform an initialization in a local declaration, even if it is constant.
- Use ();
- return true;
+ public bool Unsafe {
+ get { return (flags & Flags.Unsafe) != 0; }
+ set { flags |= Flags.Unsafe; }
}
- static int next_temp_id = 0;
+ #endregion
- public LocalInfo AddTemporaryVariable (TypeExpr te, Location loc)
+ public Block CreateSwitchBlock (Location start)
{
- Report.Debug (64, "ADD TEMPORARY", this, Toplevel, loc);
-
- if (temporary_variables == null)
- temporary_variables = new List<LocalInfo> ();
+ // FIXME: Only explicit block should be created
+ var new_block = new Block (this, start, start);
+ new_block.IsCompilerGenerated = true;
+ return new_block;
+ }
- int id = ++next_temp_id;
- string name = "$s_" + id.ToString ();
+ public void SetEndLocation (Location loc)
+ {
+ EndLocation = loc;
+ }
- LocalInfo li = new LocalInfo (te, name, this, loc);
- li.CompilerGenerated = true;
- temporary_variables.Add (li);
- return li;
+ public void AddLabel (LabeledStatement target)
+ {
+ ParametersBlock.TopBlock.AddLabel (target.Name, target);
}
- public LocalInfo GetLocalInfo (string name)
+ public void AddLocalName (LocalVariable li)
{
- LocalInfo ret;
- for (Block b = this; b != null; b = b.Parent) {
- if (b.variables != null && b.variables.TryGetValue (name, out ret)) {
- return ret;
- }
- }
+ AddLocalName (li.Name, li);
+ }
- return null;
+ public virtual void AddLocalName (string name, INamedBlockVariable li)
+ {
+ ParametersBlock.TopBlock.AddLocalName (name, li);
}
- public Expression GetVariableType (string name)
+ public virtual void Error_AlreadyDeclared (string name, INamedBlockVariable variable, string reason)
{
- LocalInfo vi = GetLocalInfo (name);
- return vi == null ? null : vi.Type;
+ if (reason == null) {
+ Error_AlreadyDeclared (name, variable);
+ return;
+ }
+
+ ParametersBlock.TopBlock.Report.Error (136, variable.Location,
+ "A local variable named `{0}' cannot be declared in this scope because it would give a different meaning " +
+ "to `{0}', which is already used in a `{1}' scope to denote something else",
+ name, reason);
}
- public Expression GetConstantExpression (string name)
+ public virtual void Error_AlreadyDeclared (string name, INamedBlockVariable variable)
{
- Expression ret;
- for (Block b = this; b != null; b = b.Parent) {
- if (b.constants != null) {
- if (b.constants.TryGetValue (name, out ret))
- return ret;
+ var pi = variable as ParametersBlock.ParameterInfo;
+ if (pi != null) {
+ var p = pi.Parameter;
+ if (p is AnonymousTypeClass.GeneratedParameter) {
+ ParametersBlock.TopBlock.Report.Error (833, p.Location, "`{0}': An anonymous type cannot have multiple properties with the same name",
+ p.Name);
+ } else {
+ ParametersBlock.TopBlock.Report.Error (100, p.Location, "The parameter name `{0}' is a duplicate", p.Name);
}
+
+ return;
}
- return null;
+
+ ParametersBlock.TopBlock.Report.Error (128, variable.Location,
+ "A local variable named `{0}' is already defined in this scope", name);
+ }
+
+ public virtual void Error_AlreadyDeclaredTypeParameter (string name, Location loc)
+ {
+ ParametersBlock.TopBlock.Report.Error (412, loc,
+ "The type parameter name `{0}' is the same as local variable or parameter name",
+ name);
}
//
public void AddStatement (Statement s)
{
statements.Add (s);
- flags |= Flags.BlockUsed;
- }
-
- public bool Used {
- get { return (flags & Flags.BlockUsed) != 0; }
- }
-
- public void Use ()
- {
- flags |= Flags.BlockUsed;
- }
-
- public bool HasRet {
- get { return (flags & Flags.HasRet) != 0; }
}
public int AssignableSlots {
get {
-// TODO: Re-enable
-// if ((flags & Flags.VariablesInitialized) == 0)
-// throw new Exception ("Variables have not been initialized yet");
- return assignable_slots;
- }
- }
-
- public IList<ToplevelBlock> AnonymousChildren {
- get { return anonymous_children; }
- }
-
- public void AddAnonymousChild (ToplevelBlock b)
- {
- if (anonymous_children == null)
- anonymous_children = new List<ToplevelBlock> ();
-
- anonymous_children.Add (b);
- }
-
- void DoResolveConstants (BlockContext ec)
- {
- if (constants == null)
- return;
-
- if (variables == null)
- throw new InternalErrorException ("cannot happen");
-
- foreach (var de in variables) {
- string name = de.Key;
- LocalInfo vi = de.Value;
- TypeSpec variable_type = vi.VariableType;
-
- if (variable_type == null) {
- if (vi.Type is VarExpr)
- ec.Report.Error (822, vi.Type.Location, "An implicitly typed local variable cannot be a constant");
-
- continue;
- }
-
- Expression cv;
- if (!constants.TryGetValue (name, out cv))
- continue;
-
- // Don't let 'const int Foo = Foo;' succeed.
- // Removing the name from 'constants' ensures that we get a LocalVariableReference below,
- // which in turn causes the 'must be constant' error to be triggered.
- constants.Remove (name);
-
- if (!variable_type.IsConstantCompatible) {
- Const.Error_InvalidConstantType (variable_type, vi.Location, ec.Report);
- continue;
- }
-
- ec.CurrentBlock = this;
- Expression e;
- using (ec.With (ResolveContext.Options.ConstantCheckState, (flags & Flags.Unchecked) == 0)) {
- using (ec.With (ResolveContext.Options.DoFlowAnalysis, false)) {
- e = cv.Resolve (ec);
- }
- }
- if (e == null)
- continue;
-
- Constant ce = e as Constant;
- if (ce == null) {
- e.Error_ExpressionMustBeConstant (ec, vi.Location, name);
- continue;
- }
-
- e = ce.ConvertImplicitly (ec, variable_type);
- if (e == null) {
- if (TypeManager.IsReferenceType (variable_type))
- ce.Error_ConstantCanBeInitializedWithNullOnly (ec, variable_type, vi.Location, vi.Name);
- else
- ce.Error_ValueCannotBeConverted (ec, vi.Location, variable_type, false);
- continue;
- }
-
- constants.Add (name, e);
- vi.IsConstant = true;
+ // FIXME: HACK, we don't know the block available variables count now, so set this high enough
+ return 4096;
+// return assignable_slots;
}
}
- protected void ResolveMeta (BlockContext ec, int offset)
- {
- Report.Debug (64, "BLOCK RESOLVE META", this, Parent);
-
- // If some parent block was unsafe, we remain unsafe even if this block
- // isn't explicitly marked as such.
- using (ec.With (ResolveContext.Options.UnsafeScope, ec.IsUnsafe | Unsafe)) {
- flags |= Flags.VariablesInitialized;
-
- if (variables != null) {
- foreach (LocalInfo li in variables.Values) {
- if (!li.Resolve (ec))
- continue;
- li.VariableInfo = new VariableInfo (li, offset);
- offset += li.VariableInfo.Length;
- }
- }
- assignable_slots = offset;
-
- DoResolveConstants (ec);
-
- if (children == null)
- return;
- foreach (Block b in children)
- b.ResolveMeta (ec, offset);
- }
- }
-
- //
- // Emits the local variable declarations for a block
- //
- public virtual void EmitMeta (EmitContext ec)
+ public LabeledStatement LookupLabel (string name)
{
- if (variables != null){
- foreach (LocalInfo vi in variables.Values)
- vi.ResolveVariable (ec);
- }
-
- if (temporary_variables != null) {
- for (int i = 0; i < temporary_variables.Count; i++)
- ((LocalInfo)temporary_variables[i]).ResolveVariable(ec);
- }
-
- if (children != null) {
- for (int i = 0; i < children.Count; i++)
- ((Block)children[i]).EmitMeta(ec);
- }
- }
-
- void UsageWarning (BlockContext ec)
- {
- if (variables == null || ec.Report.WarningLevel < 3)
- return;
-
- foreach (var de in variables) {
- LocalInfo vi = de.Value;
-
- if (!vi.Used) {
- string name = de.Key;
-
- // vi.VariableInfo can be null for 'catch' variables
- if (vi.VariableInfo != null && vi.VariableInfo.IsEverAssigned)
- ec.Report.Warning (219, 3, vi.Location, "The variable `{0}' is assigned but its value is never used", name);
- else
- ec.Report.Warning (168, 3, vi.Location, "The variable `{0}' is declared but never used", name);
- }
- }
- }
-
- static void CheckPossibleMistakenEmptyStatement (BlockContext ec, Statement s)
- {
- Statement body;
-
- // Some statements are wrapped by a Block. Since
- // others' internal could be changed, here I treat
- // them as possibly wrapped by Block equally.
- Block b = s as Block;
- if (b != null && b.statements.Count == 1)
- s = (Statement) b.statements [0];
-
- if (s is Lock)
- body = ((Lock) s).Statement;
- else if (s is For)
- body = ((For) s).Statement;
- else if (s is Foreach)
- body = ((Foreach) s).Statement;
- else if (s is While)
- body = ((While) s).Statement;
- else if (s is Fixed)
- body = ((Fixed) s).Statement;
- else if (s is Using)
- body = ((Using) s).EmbeddedStatement;
- else if (s is UsingTemporary)
- body = ((UsingTemporary) s).Statement;
- else
- return;
-
- if (body == null || body is EmptyStatement)
- ec.Report.Warning (642, 3, s.loc, "Possible mistaken empty statement");
+ return ParametersBlock.TopBlock.GetLabel (name, this);
}
public override bool Resolve (BlockContext ec)
Block prev_block = ec.CurrentBlock;
bool ok = true;
- int errors = ec.Report.Errors;
-
ec.CurrentBlock = this;
ec.StartFlowBranching (this);
int statement_count = statements.Count;
for (int ix = 0; ix < statement_count; ix++){
Statement s = statements [ix];
- // Check possible empty statement (CS0642)
- if (ix + 1 < statement_count && ec.Report.WarningLevel >= 3 &&
- statements [ix + 1] is ExplicitBlock)
- CheckPossibleMistakenEmptyStatement (ec, s);
//
// Warn if we detect unreachable code.
// If we're a non-static `struct' constructor which doesn't have an
// initializer, then we must initialize all of the struct's fields.
- if (this == Toplevel && !Toplevel.IsThisAssigned (ec) && !flow_unreachable)
+ if (this == ParametersBlock.TopBlock && !ParametersBlock.TopBlock.IsThisAssigned (ec) && !flow_unreachable)
ok = false;
- if ((labels != null) && (ec.Report.WarningLevel >= 2)) {
- foreach (LabeledStatement label in labels.Values)
- if (!label.HasBeenReferenced)
- ec.Report.Warning (164, 2, label.loc, "This label has not been referenced");
- }
-
- if (ok && errors == ec.Report.Errors)
- UsageWarning (ec);
-
return ok;
}
protected virtual void EmitSymbolInfo (EmitContext ec)
{
- if (variables != null) {
- foreach (LocalInfo vi in variables.Values) {
- vi.EmitSymbolInfo (ec);
- }
- }
}
+#if DEBUG
public override string ToString ()
{
- return String.Format ("{0} ({1}:{2})", GetType (), this_id, StartLocation);
+ return String.Format ("{0} ({1}:{2})", GetType (), ID, StartLocation);
}
+#endif
protected override void CloneTo (CloneContext clonectx, Statement t)
{
Block target = (Block) t;
+#if DEBUG
+ target.clone_id = clone_id_counter++;
+#endif
clonectx.AddBlockMap (this, target);
- target.Toplevel = (ToplevelBlock) (Toplevel == this ? target : clonectx.LookupBlock (Toplevel));
+ target.ParametersBlock = (ParametersBlock) (ParametersBlock == this ? target : clonectx.RemapBlockCopy (ParametersBlock));
target.Explicit = (ExplicitBlock) (Explicit == this ? target : clonectx.LookupBlock (Explicit));
- if (Parent != null)
- target.Parent = clonectx.RemapBlockCopy (Parent);
-
- if (variables != null){
- target.variables = new Dictionary<string, LocalInfo> ();
-
- foreach (var de in variables){
- LocalInfo newlocal = de.Value.Clone (clonectx);
- target.variables [de.Key] = newlocal;
- clonectx.AddVariableMap (de.Value, newlocal);
- }
- }
-
+ if (Parent != null)
+ target.Parent = clonectx.RemapBlockCopy (Parent);
+
target.statements = new List<Statement> (statements.Count);
foreach (Statement s in statements)
target.statements.Add (s.Clone (clonectx));
-
- if (target.children != null){
- target.children = new List<Block> (children.Count);
- foreach (Block b in children){
- target.children.Add (clonectx.LookupBlock (b));
- }
- }
-
- //
- // TODO: labels, switch_block, constants (?), anonymous_children
- //
}
}
public class ExplicitBlock : Block
{
- Dictionary<string, IKnownVariable> known_variables;
protected AnonymousMethodStorey am_storey;
public ExplicitBlock (Block parent, Location start, Location end)
this.Explicit = this;
}
- // <summary>
- // Marks a variable with name @name as being used in this or a child block.
- // If a variable name has been used in a child block, it's illegal to
- // declare a variable with the same name in the current block.
- // </summary>
- internal void AddKnownVariable (string name, IKnownVariable info)
- {
- if (known_variables == null)
- known_variables = new Dictionary<string, IKnownVariable> ();
+ #region Properties
- known_variables [name] = info;
+ public AnonymousMethodStorey AnonymousMethodStorey {
+ get {
+ return am_storey;
+ }
+ }
- if (Parent != null)
- Parent.Explicit.AddKnownVariable (name, info);
+ public bool HasCapturedThis {
+ set { flags = value ? flags | Flags.HasCapturedThis : flags & ~Flags.HasCapturedThis; }
+ get {
+ return (flags & Flags.HasCapturedThis) != 0;
+ }
}
- public AnonymousMethodStorey AnonymousMethodStorey {
- get { return am_storey; }
+ public bool HasCapturedVariable {
+ set { flags = value ? flags | Flags.HasCapturedVariable : flags & ~Flags.HasCapturedVariable; }
+ get {
+ return (flags & Flags.HasCapturedVariable) != 0;
+ }
}
+ #endregion
+
//
// Creates anonymous method storey in current block
//
public AnonymousMethodStorey CreateAnonymousMethodStorey (ResolveContext ec)
{
- //
- // When referencing a variable in iterator storey from children anonymous method
- //
- if (Toplevel.am_storey is IteratorStorey) {
- return Toplevel.am_storey;
- }
-
//
// An iterator has only 1 storey block
//
return ec.CurrentIterator.Storey;
//
- // Switch block does not follow sequential flow and we cannot emit
- // storey initialization inside the block because it can be jumped over
- // for all non-first cases. Instead we push it to the parent block to be
- // always initialized
+ // When referencing a variable in iterator storey from children anonymous method
//
- if (switch_block != null)
- return switch_block.CreateAnonymousMethodStorey (ec);
+ if (ParametersBlock.am_storey is IteratorStorey) {
+ return ParametersBlock.am_storey;
+ }
if (am_storey == null) {
MemberBase mc = ec.MemberContext as MemberBase;
public override void Emit (EmitContext ec)
{
- if (am_storey != null)
- am_storey.EmitStoreyInstantiation (ec);
+ if (am_storey != null) {
+ DefineAnonymousStorey (ec);
+ am_storey.EmitStoreyInstantiation (ec, this);
+ }
bool emit_debug_info = SymbolWriter.HasSymbolWriter && Parent != null && !(am_storey is IteratorStorey);
if (emit_debug_info)
ec.EndScope ();
}
- public override void EmitMeta (EmitContext ec)
+ void DefineAnonymousStorey (EmitContext ec)
{
//
// Creates anonymous method storey
//
- if (am_storey != null) {
- if (ec.CurrentAnonymousMethod != null && ec.CurrentAnonymousMethod.Storey != null) {
+ if (ec.CurrentAnonymousMethod != null && ec.CurrentAnonymousMethod.Storey != null) {
+ //
+ // Creates parent storey reference when hoisted this is accessible
+ //
+ if (am_storey.OriginalSourceBlock.Explicit.HasCapturedThis) {
+ ExplicitBlock parent = am_storey.OriginalSourceBlock.Explicit.Parent.Explicit;
+
//
- // Creates parent storey reference when hoisted this is accessible
+ // Hoisted this exists in top-level parent storey only
//
- if (am_storey.OriginalSourceBlock.Explicit.HasCapturedThis) {
- ExplicitBlock parent = Toplevel.Parent.Explicit;
+ while (parent.am_storey == null || parent.am_storey.Parent is AnonymousMethodStorey)
+ parent = parent.Parent.Explicit;
- //
- // Hoisted this exists in top-level parent storey only
- //
- while (parent.am_storey == null || parent.am_storey.Parent is AnonymousMethodStorey)
- parent = parent.Parent.Explicit;
+ am_storey.AddParentStoreyReference (ec, parent.am_storey);
+ }
- am_storey.AddParentStoreyReference (ec, parent.am_storey);
- }
+ am_storey.SetNestedStoryParent (ec.CurrentAnonymousMethod.Storey);
- am_storey.SetNestedStoryParent (ec.CurrentAnonymousMethod.Storey);
+ // TODO MemberCache: Review
+ am_storey.Mutator = ec.CurrentAnonymousMethod.Storey.Mutator;
+ }
- // TODO MemberCache: Review
- am_storey.Mutator = ec.CurrentAnonymousMethod.Storey.Mutator;
- }
+ am_storey.CreateType ();
+ if (am_storey.Mutator == null && ec.CurrentTypeParameters != null)
+ am_storey.Mutator = new TypeParameterMutator (ec.CurrentTypeParameters, am_storey.CurrentTypeParameters);
+
+ am_storey.DefineType ();
+ am_storey.ResolveTypeParameters ();
+
+ var ref_blocks = am_storey.ReferencesFromChildrenBlock;
+ if (ref_blocks != null) {
+ foreach (ExplicitBlock ref_block in ref_blocks) {
+ for (ExplicitBlock b = ref_block.Explicit; b.am_storey != am_storey; b = b.Parent.Explicit) {
+ if (b.am_storey != null) {
+ b.am_storey.AddParentStoreyReference (ec, am_storey);
- am_storey.CreateType ();
- if (am_storey.Mutator == null && ec.CurrentTypeParameters != null)
- am_storey.Mutator = new TypeParameterMutator (ec.CurrentTypeParameters, am_storey.CurrentTypeParameters);
-
- am_storey.DefineType ();
- am_storey.ResolveTypeParameters ();
- am_storey.Define ();
- am_storey.Parent.PartialContainer.AddCompilerGeneratedClass (am_storey);
-
- var ref_blocks = am_storey.ReferencesFromChildrenBlock;
- if (ref_blocks != null) {
- foreach (ExplicitBlock ref_block in ref_blocks) {
- for (ExplicitBlock b = ref_block.Explicit; b != this; b = b.Parent.Explicit) {
- if (b.am_storey != null) {
- b.am_storey.AddParentStoreyReference (ec, am_storey);
-
- // Stop propagation inside same top block
- if (b.Toplevel == Toplevel)
- break;
-
- b = b.Toplevel;
- }
- b.HasCapturedVariable = true;
+ // Stop propagation inside same top block
+ if (b.ParametersBlock.am_storey == ParametersBlock.am_storey)
+ break;
+
+ b = b.ParametersBlock;
}
+
+ b.HasCapturedVariable = true;
}
}
}
- base.EmitMeta (ec);
+ am_storey.Define ();
+ am_storey.Parent.PartialContainer.AddCompilerGeneratedClass (am_storey);
}
- public IKnownVariable GetKnownVariable (string name)
+ public void WrapIntoDestructor (TryFinally tf, ExplicitBlock tryBlock)
{
- if (known_variables == null)
- return null;
-
- IKnownVariable kw;
- known_variables.TryGetValue (name, out kw);
- return kw;
+ tryBlock.statements = statements;
+ statements = new List<Statement> (1);
+ statements.Add (tf);
}
+ }
- public bool HasCapturedThis
+ //
+ // ParametersBlock was introduced to support anonymous methods
+ // and lambda expressions
+ //
+ public class ParametersBlock : ExplicitBlock
+ {
+ public class ParameterInfo : INamedBlockVariable
{
- set { flags = value ? flags | Flags.HasCapturedThis : flags & ~Flags.HasCapturedThis; }
- get { return (flags & Flags.HasCapturedThis) != 0; }
- }
+ readonly ParametersBlock block;
+ readonly int index;
+ public VariableInfo VariableInfo;
- public bool HasCapturedVariable
- {
- set { flags = value ? flags | Flags.HasCapturedVariable : flags & ~Flags.HasCapturedVariable; }
- get { return (flags & Flags.HasCapturedVariable) != 0; }
- }
+ public ParameterInfo (ParametersBlock block, int index)
+ {
+ this.block = block;
+ this.index = index;
+ }
- protected override void CloneTo (CloneContext clonectx, Statement t)
- {
- ExplicitBlock target = (ExplicitBlock) t;
- target.known_variables = null;
- base.CloneTo (clonectx, t);
- }
- }
+ #region Properties
- public class ToplevelParameterInfo : IKnownVariable {
- public readonly ToplevelBlock Block;
- public readonly int Index;
- public VariableInfo VariableInfo;
+ public Block Block {
+ get {
+ return block;
+ }
+ }
- Block IKnownVariable.Block {
- get { return Block; }
- }
- public Parameter Parameter {
- get { return Block.Parameters [Index]; }
- }
+ public bool IsDeclared {
+ get {
+ return true;
+ }
+ }
- public TypeSpec ParameterType {
- get { return Block.Parameters.Types [Index]; }
- }
+ public Location Location {
+ get {
+ return Parameter.Location;
+ }
+ }
- public Location Location {
- get { return Parameter.Location; }
- }
+ public Parameter Parameter {
+ get {
+ return block.Parameters [index];
+ }
+ }
- public ToplevelParameterInfo (ToplevelBlock block, int idx)
- {
- this.Block = block;
- this.Index = idx;
+ public TypeSpec ParameterType {
+ get {
+ return Parameter.Type;
+ }
+ }
+
+ #endregion
+
+ public Expression CreateReferenceExpression (ResolveContext rc, Location loc)
+ {
+ return new ParameterReference (this, loc);
+ }
}
- }
- //
- // A toplevel block contains extra information, the split is done
- // only to separate information that would otherwise bloat the more
- // lightweight Block.
- //
- // In particular, this was introduced when the support for Anonymous
- // Methods was implemented.
- //
- public class ToplevelBlock : ExplicitBlock
- {
//
// Block is converted to an expression
//
sealed class BlockScopeExpression : Expression
{
Expression child;
- readonly ToplevelBlock block;
+ readonly ParametersBlock block;
- public BlockScopeExpression (Expression child, ToplevelBlock block)
+ public BlockScopeExpression (Expression child, ParametersBlock block)
{
this.child = child;
this.block = block;
{
if (child == null)
return null;
-
+
child = child.Resolve (ec);
if (child == null)
return null;
public override void Emit (EmitContext ec)
{
- block.EmitMeta (ec);
block.EmitScopeInitializers (ec);
child.Emit (ec);
}
}
protected ParametersCompiled parameters;
- protected ToplevelParameterInfo[] parameter_info;
- LocalInfo this_variable;
+ protected ParameterInfo[] parameter_info;
bool resolved;
- bool unreachable;
- CompilerContext compiler;
+ protected bool unreachable;
+ protected ToplevelBlock top_block;
- public HoistedVariable HoistedThisVariable;
+ public ParametersBlock (Block parent, ParametersCompiled parameters, Location start)
+ : base (parent, 0, start, start)
+ {
+ if (parameters == null)
+ throw new ArgumentNullException ("parameters");
- public bool Resolved {
+ this.parameters = parameters;
+ ParametersBlock = this;
+
+ this.top_block = parent.ParametersBlock.top_block;
+ ProcessParameters ();
+ }
+
+ protected ParametersBlock (ParametersCompiled parameters, Location start)
+ : base (null, 0, start, start)
+ {
+ if (parameters == null)
+ throw new ArgumentNullException ("parameters");
+
+ this.parameters = parameters;
+ ParametersBlock = this;
+ }
+
+ protected ParametersBlock (ParametersBlock source, ParametersCompiled parameters)
+ : base (null, 0, source.StartLocation, source.EndLocation)
+ {
+ this.parameters = parameters;
+ this.statements = source.statements;
+ this.scope_initializers = source.scope_initializers;
+
+ this.resolved = true;
+ this.unreachable = source.unreachable;
+ this.am_storey = source.am_storey;
+
+ ParametersBlock = this;
+ }
+
+ #region Properties
+
+ //
+ // Block has been converted to expression tree
+ //
+ public bool IsExpressionTree {
get {
- return resolved;
+ return (flags & Flags.IsExpressionTree) != 0;
}
}
// The parameters for the block.
//
public ParametersCompiled Parameters {
- get { return parameters; }
+ get {
+ return parameters;
+ }
}
- public Report Report {
- get { return compiler.Report; }
+ public ToplevelBlock TopBlock {
+ get {
+ return top_block;
+ }
}
- public ToplevelBlock Container {
- get { return Parent == null ? null : Parent.Toplevel; }
+ public bool Resolved {
+ get {
+ return resolved;
+ }
}
- public ToplevelBlock (CompilerContext ctx, Block parent, ParametersCompiled parameters, Location start) :
- this (ctx, parent, (Flags) 0, parameters, start)
- {
- }
+ #endregion
- public ToplevelBlock (CompilerContext ctx, ParametersCompiled parameters, Location start) :
- this (ctx, null, (Flags) 0, parameters, start)
+ // <summary>
+ // Check whether all `out' parameters have been assigned.
+ // </summary>
+ public void CheckOutParameters (FlowBranching.UsageVector vector, Location loc)
{
+ if (vector.IsUnreachable)
+ return;
+
+ int n = parameter_info == null ? 0 : parameter_info.Length;
+
+ for (int i = 0; i < n; i++) {
+ VariableInfo var = parameter_info[i].VariableInfo;
+
+ if (var == null)
+ continue;
+
+ if (vector.IsAssigned (var, false))
+ continue;
+
+ TopBlock.Report.Error (177, loc, "The out parameter `{0}' must be assigned to before control leaves the current method",
+ var.Name);
+ }
}
- ToplevelBlock (CompilerContext ctx, Flags flags, ParametersCompiled parameters, Location start) :
- this (ctx, null, flags, parameters, start)
+ public override Expression CreateExpressionTree (ResolveContext ec)
{
+ if (statements.Count == 1) {
+ Expression expr = ((Statement) statements[0]).CreateExpressionTree (ec);
+ if (scope_initializers != null)
+ expr = new BlockScopeExpression (expr, this);
+
+ return expr;
+ }
+
+ return base.CreateExpressionTree (ec);
}
- // We use 'Parent' to hook up to the containing block, but don't want to register the current block as a child.
- // So, we use a two-stage setup -- first pass a null parent to the base constructor, and then override 'Parent'.
- public ToplevelBlock (CompilerContext ctx, Block parent, Flags flags, ParametersCompiled parameters, Location start) :
- base (null, flags, start, Location.Null)
+ public ParameterInfo GetParameterInfo (Parameter p)
{
- this.compiler = ctx;
- this.Toplevel = this;
-
- this.parameters = parameters;
- this.Parent = parent;
- if (parent != null)
- parent.AddAnonymousChild (this);
+ for (int i = 0; i < parameters.Count; ++i) {
+ if (parameters[i] == p)
+ return parameter_info[i];
+ }
- if (!this.parameters.IsEmpty)
- ProcessParameters ();
+ throw new ArgumentException ("Invalid parameter");
}
- public ToplevelBlock (CompilerContext ctx, Location loc)
- : this (ctx, null, (Flags) 0, ParametersCompiled.EmptyReadOnlyParameters, loc)
+ public Expression GetParameterReference (int index, Location loc)
{
+ return new ParameterReference (parameter_info[index], loc);
}
- protected override void CloneTo (CloneContext clonectx, Statement t)
+ protected void ProcessParameters ()
{
- base.CloneTo (clonectx, t);
+ if (parameters.Count == 0)
+ return;
- if (parameters.Count != 0) {
- ToplevelBlock target = (ToplevelBlock) t;
+ parameter_info = new ParameterInfo[parameters.Count];
+ for (int i = 0; i < parameter_info.Length; ++i) {
+ var p = parameters.FixedParameters[i];
+ if (p == null)
+ continue;
- target.parameter_info = new ToplevelParameterInfo[parameters.Count];
- for (int i = 0; i < parameters.Count; ++i)
- target.parameter_info[i] = new ToplevelParameterInfo (target, i);
+ // TODO: Should use Parameter only and more block there
+ parameter_info[i] = new ParameterInfo (this, i);
+ AddLocalName (p.Name, parameter_info[i]);
}
}
- public bool CheckError158 (string name, Location loc)
+ public bool Resolve (FlowBranching parent, BlockContext rc, IMethodData md)
{
- if (AnonymousChildren != null) {
- foreach (ToplevelBlock child in AnonymousChildren) {
- if (!child.CheckError158 (name, loc))
+ if (resolved)
+ return true;
+
+ resolved = true;
+
+ if (rc.HasSet (ResolveContext.Options.ExpressionTreeConversion))
+ flags |= Flags.IsExpressionTree;
+
+ try {
+ ResolveMeta (rc);
+
+ using (rc.With (ResolveContext.Options.DoFlowAnalysis, true)) {
+ FlowBranchingToplevel top_level = rc.StartFlowBranching (this, parent);
+
+ if (!Resolve (rc))
return false;
+
+ unreachable = top_level.End ();
+ }
+ } catch (Exception e) {
+ if (e is CompletionResult || rc.Report.IsDisabled)
+ throw;
+
+ if (rc.CurrentBlock != null) {
+ rc.Report.Error (584, rc.CurrentBlock.StartLocation, "Internal compiler error: {0}", e.Message);
+ } else {
+ rc.Report.Error (587, "Internal compiler error: {0}", e.Message);
+ }
+
+ if (Report.DebugFlags > 0)
+ throw;
+ }
+
+ if (rc.ReturnType != TypeManager.void_type && !unreachable) {
+ if (rc.CurrentAnonymousMethod == null) {
+ // FIXME: Missing FlowAnalysis for generated iterator MoveNext method
+ if (md is IteratorMethod) {
+ unreachable = true;
+ } else {
+ rc.Report.Error (161, md.Location, "`{0}': not all code paths return a value", md.GetSignatureForError ());
+ return false;
+ }
+ } else {
+ rc.Report.Error (1643, rc.CurrentAnonymousMethod.Location, "Not all code paths return a value in anonymous method of type `{0}'",
+ rc.CurrentAnonymousMethod.GetSignatureForError ());
+ return false;
}
}
- for (ToplevelBlock c = Container; c != null; c = c.Container) {
- if (!c.DoCheckError158 (name, loc))
- return false;
- }
+ return true;
+ }
+
+ void ResolveMeta (BlockContext ec)
+ {
+ int orig_count = parameters.Count;
+
+ for (int i = 0; i < orig_count; ++i) {
+ Parameter.Modifier mod = parameters.FixedParameters[i].ModFlags;
+
+ if ((mod & Parameter.Modifier.OUT) != Parameter.Modifier.OUT)
+ continue;
+
+ VariableInfo vi = new VariableInfo (parameters, i, ec.FlowOffset);
+ parameter_info[i].VariableInfo = vi;
+ ec.FlowOffset += vi.Length;
+ }
+ }
+
+ public void WrapIntoIterator (IMethodData method, TypeContainer host, TypeSpec iterator_type, bool is_enumerable)
+ {
+ ParametersBlock pb = new ParametersBlock (this, ParametersCompiled.EmptyReadOnlyParameters, StartLocation);
+ pb.EndLocation = EndLocation;
+ pb.statements = statements;
+
+ var iterator = new Iterator (pb, method, host, iterator_type, is_enumerable);
+ am_storey = new IteratorStorey (iterator);
+
+ statements = new List<Statement> (1);
+ AddStatement (new Return (iterator, iterator.Location));
+ }
+ }
+
+ //
+ //
+ //
+ public class ToplevelBlock : ParametersBlock
+ {
+ LocalVariable this_variable;
+ CompilerContext compiler;
+ Dictionary<string, object> names;
+ Dictionary<string, object> labels;
+
+ public HoistedVariable HoistedThisVariable;
+
+ public Report Report {
+ get { return compiler.Report; }
+ }
+
+ public ToplevelBlock (CompilerContext ctx, Location loc)
+ : this (ctx, ParametersCompiled.EmptyReadOnlyParameters, loc)
+ {
+ }
+
+ public ToplevelBlock (CompilerContext ctx, ParametersCompiled parameters, Location start)
+ : base (parameters, start)
+ {
+ this.compiler = ctx;
+ top_block = this;
+
+ ProcessParameters ();
+ }
- return true;
+ //
+ // Recreates a top level block from parameters block. Used for
+ // compiler generated methods where the original block comes from
+ // explicit child block. This works for already resolved blocks
+ // only to ensure we resolve them in the correct flow order
+ //
+ public ToplevelBlock (ParametersBlock source, ParametersCompiled parameters)
+ : base (source, parameters)
+ {
+ this.compiler = source.TopBlock.compiler;
+ top_block = this;
}
- void ProcessParameters ()
+ public override void AddLocalName (string name, INamedBlockVariable li)
{
- int n = parameters.Count;
- parameter_info = new ToplevelParameterInfo [n];
- ToplevelBlock top_parent = Parent == null ? null : Parent.Toplevel;
- for (int i = 0; i < n; ++i) {
- parameter_info [i] = new ToplevelParameterInfo (this, i);
+ if (names == null)
+ names = new Dictionary<string, object> ();
- var p = parameters.FixedParameters [i];
- if (p == null)
- continue;
+ object value;
+ if (!names.TryGetValue (name, out value)) {
+ names.Add (name, li);
+ return;
+ }
- string name = p.Name;
- if (CheckParentConflictName (top_parent, name, loc))
- AddKnownVariable (name, parameter_info [i]);
+ INamedBlockVariable existing = value as INamedBlockVariable;
+ List<INamedBlockVariable> existing_list;
+ if (existing != null) {
+ existing_list = new List<INamedBlockVariable> ();
+ existing_list.Add (existing);
+ names[name] = existing_list;
+ } else {
+ existing_list = (List<INamedBlockVariable>) value;
}
- // mark this block as "used" so that we create local declarations in a sub-block
- // FIXME: This appears to uncover a lot of bugs
- //this.Use ();
- }
+ //
+ // A collision checking between local names
+ //
+ for (int i = 0; i < existing_list.Count; ++i) {
+ existing = existing_list[i];
+ Block b = existing.Block;
- bool DoCheckError158 (string name, Location loc)
- {
- LabeledStatement s = LookupLabel (name);
- if (s != null) {
- Report.SymbolRelatedToPreviousError (s.loc, s.Name);
- Error_158 (name, loc);
- return false;
+ // Collision at same level
+ if (li.Block == b) {
+ li.Block.Error_AlreadyDeclared (name, li);
+ break;
+ }
+
+ // Collision with parent
+ b = li.Block;
+ while ((b = b.Parent) != null) {
+ if (existing.Block == b) {
+ li.Block.Error_AlreadyDeclared (name, li, "parent or current");
+ i = existing_list.Count;
+ break;
+ }
+ }
+
+ // Collision with with children
+ b = existing.Block;
+ while ((b = b.Parent) != null) {
+ if (li.Block == b) {
+ li.Block.Error_AlreadyDeclared (name, li, "child");
+ i = existing_list.Count;
+ break;
+ }
+ }
}
- return true;
+ existing_list.Add (li);
}
- public override Expression CreateExpressionTree (ResolveContext ec)
+ public void AddLabel (string name, LabeledStatement label)
{
- if (statements.Count == 1) {
- Expression expr = ((Statement) statements[0]).CreateExpressionTree (ec);
- if (scope_initializers != null)
- expr = new BlockScopeExpression (expr, this);
+ if (labels == null)
+ labels = new Dictionary<string, object> ();
- return expr;
+ object value;
+ if (!labels.TryGetValue (name, out value)) {
+ labels.Add (name, label);
+ return;
}
- return base.CreateExpressionTree (ec);
- }
+ LabeledStatement existing = value as LabeledStatement;
+ List<LabeledStatement> existing_list;
+ if (existing != null) {
+ existing_list = new List<LabeledStatement> ();
+ existing_list.Add (existing);
+ labels[name] = existing_list;
+ } else {
+ existing_list = (List<LabeledStatement>) value;
+ }
- //
- // Reformats this block to be top-level iterator block
- //
- public IteratorStorey ChangeToIterator (Iterator iterator, ToplevelBlock source)
- {
- IsIterator = true;
+ //
+ // A collision checking between labels
+ //
+ for (int i = 0; i < existing_list.Count; ++i) {
+ existing = existing_list[i];
+ Block b = existing.Block;
+
+ // Collision at same level
+ if (label.Block == b) {
+ Report.SymbolRelatedToPreviousError (existing.loc, name);
+ Report.Error (140, label.loc, "The label `{0}' is a duplicate", name);
+ break;
+ }
- // Creates block with original statements
- AddStatement (new IteratorStatement (iterator, new Block (this, source)));
+ // Collision with parent
+ b = label.Block;
+ while ((b = b.Parent) != null) {
+ if (existing.Block == b) {
+ Report.Error (158, label.loc,
+ "The label `{0}' shadows another label by the same name in a contained scope", name);
+ i = existing_list.Count;
+ break;
+ }
+ }
- source.statements = new List<Statement> (1);
- source.AddStatement (new Return (iterator, iterator.Location));
- source.IsIterator = false;
+ // Collision with with children
+ b = existing.Block;
+ while ((b = b.Parent) != null) {
+ if (label.Block == b) {
+ Report.Error (158, label.loc,
+ "The label `{0}' shadows another label by the same name in a contained scope", name);
+ i = existing_list.Count;
+ break;
+ }
+ }
+ }
- IteratorStorey iterator_storey = new IteratorStorey (iterator);
- source.am_storey = iterator_storey;
- return iterator_storey;
+ existing_list.Add (label);
}
//
int count = parameters.Count;
Arguments args = new Arguments (count);
for (int i = 0; i < count; ++i) {
- var arg_expr = new ParameterReference (parameter_info[i], parameter_info[i].Location);
+ var arg_expr = GetParameterReference (i, parameter_info[i].Location);
args.Add (new Argument (arg_expr));
}
}
//
- // Returns a parameter reference expression for the given name,
- // or null if there is no such parameter
+ // Lookup inside a block, the returned value can represent 3 states
+ //
+ // true+variable: A local name was found and it's valid
+ // false+variable: A local name was found in a child block only
+ // false+null: No local name was found
//
- public Expression GetParameterReference (string name, Location loc)
+ public bool GetLocalName (string name, Block block, ref INamedBlockVariable variable)
{
- for (ToplevelBlock t = this; t != null; t = t.Container) {
- if (t.parameters.IsEmpty)
- continue;
+ if (names == null)
+ return false;
+
+ object value;
+ if (!names.TryGetValue (name, out value))
+ return false;
+
+ variable = value as INamedBlockVariable;
+ Block b = block;
+ if (variable != null) {
+ do {
+ if (variable.Block == b.Original)
+ return true;
+
+ b = b.Parent;
+ } while (b != null);
+
+ b = variable.Block;
+ do {
+ if (block == b)
+ return false;
+
+ b = b.Parent;
+ } while (b != null);
+ } else {
+ List<INamedBlockVariable> list = (List<INamedBlockVariable>) value;
+ for (int i = 0; i < list.Count; ++i) {
+ variable = list[i];
+ do {
+ if (variable.Block == b.Original)
+ return true;
+
+ b = b.Parent;
+ } while (b != null);
+
+ b = variable.Block;
+ do {
+ if (block == b)
+ return false;
- Expression expr = t.GetParameterReferenceExpression (name, loc);
- if (expr != null)
- return expr;
+ b = b.Parent;
+ } while (b != null);
+
+ b = block;
+ }
}
- return null;
+ variable = null;
+ return false;
}
- protected virtual Expression GetParameterReferenceExpression (string name, Location loc)
+ public LabeledStatement GetLabel (string name, Block block)
{
- int idx = parameters.GetParameterIndexByName (name);
- return idx < 0 ?
- null : new ParameterReference (parameter_info [idx], loc);
- }
+ if (labels == null)
+ return null;
- public ToplevelBlock CheckParameterNameConflict (string name)
- {
- for (ToplevelBlock t = this; t != null; t = t.Container) {
- if (t.HasParameterWithName (name))
- return t;
+ object value;
+ if (!labels.TryGetValue (name, out value)) {
+ return null;
}
- return null;
- }
+ var label = value as LabeledStatement;
+ Block b = block;
+ if (label != null) {
+ if (label.Block == b)
+ return label;
- protected virtual bool HasParameterWithName (string name)
- {
- return parameters.GetParameterIndexByName (name) >= 0;
+ // TODO: Temporary workaround for the switch block implicit label block
+ if (label.Block.IsCompilerGenerated && label.Block.Parent == b)
+ return label;
+ } else {
+ List<LabeledStatement> list = (List<LabeledStatement>) value;
+ for (int i = 0; i < list.Count; ++i) {
+ label = list[i];
+ if (label.Block == b)
+ return label;
+
+ // TODO: Temporary workaround for the switch block implicit label block
+ if (label.Block.IsCompilerGenerated && label.Block.Parent == b)
+ return label;
+ }
+ }
+
+ return null;
}
// <summary>
// Returns the "this" instance variable of this block.
// See AddThisVariable() for more information.
// </summary>
- public LocalInfo ThisVariable {
+ public LocalVariable ThisVariable {
get { return this_variable; }
}
// analysis code to ensure that it's been fully initialized before control
// leaves the constructor.
// </summary>
- public LocalInfo AddThisVariable (TypeContainer ds, Location l)
+ public LocalVariable AddThisVariable (BlockContext bc, TypeContainer ds, Location l)
{
if (this_variable == null) {
- this_variable = new LocalInfo (ds, this, l);
- this_variable.Used = true;
- this_variable.IsThis = true;
-
- Variables.Add ("this", this_variable);
+ this_variable = new LocalVariable (this, "this", LocalVariable.Flags.IsThis | LocalVariable.Flags.Used, l);
+ this_variable.Type = ds.CurrentType;
+ this_variable.PrepareForFlowAnalysis (bc);
}
return this_variable;
set { flags = value ? flags | Flags.IsIterator : flags & ~Flags.IsIterator; }
}
- //
- // Block has been converted to expression tree
- //
- public bool IsExpressionTree {
- get { return (flags & Flags.IsExpressionTree) != 0; }
- }
-
public bool IsThisAssigned (BlockContext ec)
{
return this_variable == null || this_variable.IsThisAssigned (ec, this);
}
- public bool Resolve (FlowBranching parent, BlockContext rc, ParametersCompiled ip, IMethodData md)
- {
- if (resolved)
- return true;
-
- resolved = true;
-
- if (rc.HasSet (ResolveContext.Options.ExpressionTreeConversion))
- flags |= Flags.IsExpressionTree;
-
- try {
- if (!ResolveMeta (rc, ip))
- return false;
-
- using (rc.With (ResolveContext.Options.DoFlowAnalysis, true)) {
- FlowBranchingToplevel top_level = rc.StartFlowBranching (this, parent);
-
- if (!Resolve (rc))
- return false;
-
- unreachable = top_level.End ();
- }
- } catch (Exception e) {
- if (e is CompletionResult || rc.Report.IsDisabled)
- throw;
-
- if (rc.CurrentBlock != null) {
- rc.Report.Error (584, rc.CurrentBlock.StartLocation, "Internal compiler error: {0}", e.Message);
- } else {
- rc.Report.Error (587, "Internal compiler error: {0}", e.Message);
- }
-
- if (Report.DebugFlags > 0)
- throw;
- }
-
- if (rc.ReturnType != TypeManager.void_type && !unreachable) {
- if (rc.CurrentAnonymousMethod == null) {
- rc.Report.Error (161, md.Location, "`{0}': not all code paths return a value", md.GetSignatureForError ());
- return false;
- } else if (!rc.CurrentAnonymousMethod.IsIterator) {
- rc.Report.Error (1643, rc.CurrentAnonymousMethod.Location, "Not all code paths return a value in anonymous method of type `{0}'",
- rc.CurrentAnonymousMethod.GetSignatureForError ());
- return false;
- }
- }
-
- return true;
- }
-
- bool ResolveMeta (BlockContext ec, ParametersCompiled ip)
- {
- int errors = ec.Report.Errors;
- int orig_count = parameters.Count;
-
- if (ip != null)
- parameters = ip;
-
- // Assert: orig_count != parameter.Count => orig_count == 0
- if (orig_count != 0 && orig_count != parameters.Count)
- throw new InternalErrorException ("parameter information mismatch");
-
- int offset = Parent == null ? 0 : Parent.AssignableSlots;
-
- for (int i = 0; i < orig_count; ++i) {
- Parameter.Modifier mod = parameters.FixedParameters [i].ModFlags;
-
- if ((mod & Parameter.Modifier.OUT) != Parameter.Modifier.OUT)
- continue;
-
- VariableInfo vi = new VariableInfo (ip, i, offset);
- parameter_info [i].VariableInfo = vi;
- offset += vi.Length;
- }
-
- ResolveMeta (ec, offset);
-
- return ec.Report.Errors == errors;
- }
-
- // <summary>
- // Check whether all `out' parameters have been assigned.
- // </summary>
- public void CheckOutParameters (FlowBranching.UsageVector vector, Location loc)
- {
- if (vector.IsUnreachable)
- return;
-
- int n = parameter_info == null ? 0 : parameter_info.Length;
-
- for (int i = 0; i < n; i++) {
- VariableInfo var = parameter_info [i].VariableInfo;
-
- if (var == null)
- continue;
-
- if (vector.IsAssigned (var, false))
- continue;
-
- Report.Error (177, loc, "The out parameter `{0}' must be assigned to before control leaves the current method",
- var.Name);
- }
- }
-
public override void Emit (EmitContext ec)
{
if (Report.Errors > 0)
#if PRODUCTION
try {
#endif
- EmitMeta (ec);
-
if (ec.HasReturnLabel)
ec.ReturnLabel = ec.DefineLabel ();
#endif
}
- public override void EmitMeta (EmitContext ec)
- {
- // Avoid declaring an IL variable for this_variable since it is not accessed
- // from the generated IL
- if (this_variable != null)
- Variables.Remove ("this");
- base.EmitMeta (ec);
- }
-
protected override void EmitSymbolInfo (EmitContext ec)
{
AnonymousExpression ae = ec.CurrentAnonymousMethod;
}
public class SwitchSection {
- // An array of SwitchLabels.
public readonly List<SwitchLabel> Labels;
public readonly Block Block;
ExpressionStatement string_dictionary;
FieldExpr switch_cache_field;
static int unique_counter;
+ ExplicitBlock block;
//
// Nullable Types support
//
static TypeSpec [] allowed_types;
- public Switch (Expression e, List<SwitchSection> sects, Location l)
+ public Switch (Expression e, ExplicitBlock block, List<SwitchSection> sects, Location l)
{
Expr = e;
+ this.block = block;
Sections = sects;
loc = l;
}
+ public ExplicitBlock Block {
+ get {
+ return block;
+ }
+ }
+
public bool GotDefault {
get {
return default_section != null;
protected override void DoEmit (EmitContext ec)
{
+ //
+ // Needed to emit anonymous storey initialization
+ // Otherwise it does not contain any statements for now
+ //
+ block.Emit (ec);
+
default_target = ec.DefineLabel ();
null_target = ec.DefineLabel ();
Iterator iter;
List<ResumableStatement> resume_points;
int first_resume_pc;
+ protected Statement stmt;
+ Label dispose_try_block;
+ bool prepared_for_dispose, emitted_dispose;
+
+ protected ExceptionStatement (Statement stmt, Location loc)
+ {
+ this.stmt = stmt;
+ this.loc = loc;
+ }
+
+ #region Properties
+
+ public Statement Statement {
+ get {
+ return stmt;
+ }
+ }
+
+ #endregion
protected abstract void EmitPreTryBody (EmitContext ec);
protected abstract void EmitTryBody (EmitContext ec);
Label [] labels = new Label [resume_points.Count];
for (int i = 0; i < resume_points.Count; ++i)
- labels [i] = ((ResumableStatement) resume_points [i]).PrepareForEmit (ec);
+ labels [i] = resume_points [i].PrepareForEmit (ec);
ec.Emit (OpCodes.Switch, labels);
}
resume_points.Add (stmt);
}
- Label dispose_try_block;
- bool prepared_for_dispose, emitted_dispose;
public override Label PrepareForDispose (EmitContext ec, Label end)
{
if (!prepared_for_dispose) {
public class Lock : ExceptionStatement {
Expression expr;
- public Statement Statement;
- TemporaryVariable temp;
+ TemporaryVariableReference temp;
- public Lock (Expression expr, Statement stmt, Location l)
+ public Lock (Expression expr, Statement stmt, Location loc)
+ : base (stmt, loc)
{
this.expr = expr;
- Statement = stmt;
- loc = l;
}
public override bool Resolve (BlockContext ec)
ok &= base.Resolve (ec);
- temp = new TemporaryVariable (expr.Type, loc);
+ temp = TemporaryVariableReference.Create (expr.Type, ec.CurrentBlock.Parent, loc);
temp.Resolve (ec);
if (TypeManager.void_monitor_enter_object == null || TypeManager.void_monitor_exit_object == null) {
Lock target = (Lock) t;
target.expr = expr.Clone (clonectx);
- target.Statement = Statement.Clone (clonectx);
+ target.stmt = Statement.Clone (clonectx);
}
}
//
// Fixed statement
//
- public class Fixed : Statement {
- Expression type;
- List<KeyValuePair<LocalInfo, Expression>> declarators;
- Statement statement;
- TypeSpec expr_type;
- Emitter[] data;
- bool has_ret;
-
- abstract class Emitter
+ public class Fixed : Statement
+ {
+ abstract class Emitter : ShimExpression
{
- protected LocalInfo vi;
- protected Expression converted;
+ protected LocalVariable vi;
- protected Emitter (Expression expr, LocalInfo li)
+ protected Emitter (Expression expr, LocalVariable li)
+ : base (expr)
{
- converted = expr;
vi = li;
}
- public abstract void Emit (EmitContext ec);
public abstract void EmitExit (EmitContext ec);
}
class ExpressionEmitter : Emitter {
- public ExpressionEmitter (Expression converted, LocalInfo li) :
+ public ExpressionEmitter (Expression converted, LocalVariable li) :
base (converted, li)
{
}
+ protected override Expression DoResolve (ResolveContext rc)
+ {
+ throw new NotImplementedException ();
+ }
+
public override void Emit (EmitContext ec) {
//
// Store pointer in pinned location
//
- converted.Emit (ec);
+ expr.Emit (ec);
vi.EmitAssign (ec);
}
class StringEmitter : Emitter
{
- LocalInfo pinned_string;
+ LocalVariable pinned_string;
- public StringEmitter (Expression expr, LocalInfo li, Location loc):
- base (expr, li)
+ public StringEmitter (Expression expr, LocalVariable li, Location loc)
+ : base (expr, li)
{
- pinned_string = new LocalInfo (new TypeExpression (TypeManager.string_type, loc), null, null, loc);
- pinned_string.Pinned = true;
}
- public StringEmitter Resolve (ResolveContext rc)
+ protected override Expression DoResolve (ResolveContext rc)
{
- pinned_string.Resolve (rc);
+ pinned_string = new LocalVariable (vi.Block, "$pinned",
+ LocalVariable.Flags.FixedVariable | LocalVariable.Flags.CompilerGenerated | LocalVariable.Flags.Used,
+ vi.Location);
+
+ pinned_string.Type = TypeManager.string_type;
if (TypeManager.int_get_offset_to_string_data == null) {
TypeManager.int_get_offset_to_string_data = TypeManager.GetPredefinedProperty (
TypeManager.runtime_helpers_type, "OffsetToStringData", pinned_string.Location, TypeManager.int32_type);
}
+ eclass = ExprClass.Variable;
+ type = TypeManager.int32_type;
return this;
}
public override void Emit (EmitContext ec)
{
- pinned_string.ResolveVariable (ec);
+ pinned_string.CreateBuilder (ec);
- converted.Emit (ec);
+ expr.Emit (ec);
pinned_string.EmitAssign (ec);
// TODO: Should use Binary::Add
}
}
- public Fixed (Expression type, List<KeyValuePair<LocalInfo, Expression>> decls, Statement stmt, Location l)
- {
- this.type = type;
- declarators = decls;
- statement = stmt;
- loc = l;
- }
-
- public Statement Statement {
- get { return statement; }
- }
-
- public override bool Resolve (BlockContext ec)
+ public class VariableDeclaration : BlockVariableDeclaration
{
- if (!ec.IsUnsafe){
- Expression.UnsafeError (ec, loc);
- return false;
- }
-
- TypeExpr texpr = type.ResolveAsContextualType (ec, false);
- if (texpr == null) {
- if (type is VarExpr)
- ec.Report.Error (821, type.Location, "A fixed statement cannot use an implicitly typed local variable");
-
- return false;
+ public VariableDeclaration (FullNamedExpression type, LocalVariable li)
+ : base (type, li)
+ {
}
- expr_type = texpr.Type;
-
- data = new Emitter [declarators.Count];
-
- if (!expr_type.IsPointer){
- ec.Report.Error (209, loc, "The type of locals declared in a fixed statement must be a pointer type");
- return false;
- }
-
- int i = 0;
- foreach (var p in declarators){
- LocalInfo vi = p.Key;
- Expression e = p.Value;
-
- vi.VariableInfo.SetAssigned (ec);
- vi.SetReadOnlyContext (LocalInfo.ReadOnlyContext.Fixed);
+ protected override Expression ResolveInitializer (BlockContext bc, LocalVariable li, Expression initializer)
+ {
+ if (!Variable.Type.IsPointer && li == Variable) {
+ bc.Report.Error (209, TypeExpression.Location,
+ "The type of locals declared in a fixed statement must be a pointer type");
+ return null;
+ }
//
// The rules for the possible declarators are pretty wise,
// is present, so we need to test for this particular case.
//
- if (e is Cast){
- ec.Report.Error (254, loc, "The right hand side of a fixed statement assignment may not be a cast expression");
- return false;
+ if (initializer is Cast) {
+ bc.Report.Error (254, initializer.Location, "The right hand side of a fixed statement assignment may not be a cast expression");
+ return null;
}
- using (ec.Set (ResolveContext.Options.FixedInitializerScope)) {
- e = e.Resolve (ec);
- }
+ initializer = initializer.Resolve (bc);
- if (e == null)
- return false;
+ if (initializer == null)
+ return null;
//
- // Case 2: Array
+ // Case 1: Array
//
- if (e.Type.IsArray){
- TypeSpec array_type = TypeManager.GetElementType (e.Type);
-
+ if (initializer.Type.IsArray) {
+ TypeSpec array_type = TypeManager.GetElementType (initializer.Type);
+
//
// Provided that array_type is unmanaged,
//
- if (!TypeManager.VerifyUnmanaged (ec.Compiler, array_type, loc))
- return false;
+ if (!TypeManager.VerifyUnmanaged (bc.Compiler, array_type, loc))
+ return null;
//
// and T* is implicitly convertible to the
// pointer type given in the fixed statement.
//
- ArrayPtr array_ptr = new ArrayPtr (e, array_type, loc);
-
+ ArrayPtr array_ptr = new ArrayPtr (initializer, array_type, loc);
+
Expression converted = Convert.ImplicitConversionRequired (
- ec, array_ptr, vi.VariableType, loc);
+ bc, array_ptr, li.Type, loc);
if (converted == null)
- return false;
-
+ return null;
+
//
// fixed (T* e_ptr = (e == null || e.Length == 0) ? null : converted [0])
//
converted = new Conditional (new BooleanExpression (new Binary (Binary.Operator.LogicalOr,
- new Binary (Binary.Operator.Equality, e, new NullLiteral (loc), loc),
- new Binary (Binary.Operator.Equality, new MemberAccess (e, "Length"), new IntConstant (0, loc), loc), loc)),
+ new Binary (Binary.Operator.Equality, initializer, new NullLiteral (loc), loc),
+ new Binary (Binary.Operator.Equality, new MemberAccess (initializer, "Length"), new IntConstant (0, loc), loc), loc)),
new NullPointer (loc),
converted, loc);
- converted = converted.Resolve (ec);
+ converted = converted.Resolve (bc);
- data [i] = new ExpressionEmitter (converted, vi);
- i++;
-
- continue;
+ return new ExpressionEmitter (converted, li);
}
//
- // Case 3: string
+ // Case 2: string
//
- if (e.Type == TypeManager.string_type){
- data [i] = new StringEmitter (e, vi, loc).Resolve (ec);
- i++;
- continue;
+ if (initializer.Type == TypeManager.string_type) {
+ return new StringEmitter (initializer, li, loc).Resolve (bc);
}
- // Case 4: fixed buffer
- if (e is FixedBufferPtr) {
- data [i++] = new ExpressionEmitter (e, vi);
- continue;
+ // Case 3: fixed buffer
+ if (initializer is FixedBufferPtr) {
+ return new ExpressionEmitter (initializer, li);
}
//
- // Case 1: & object.
+ // Case 4: & object.
//
- Unary u = e as Unary;
+ bool already_fixed = true;
+ Unary u = initializer as Unary;
if (u != null && u.Oper == Unary.Operator.AddressOf) {
IVariableReference vr = u.Expr as IVariableReference;
if (vr == null || !vr.IsFixed) {
- data [i] = new ExpressionEmitter (e, vi);
+ already_fixed = false;
}
}
- if (data [i++] == null)
- ec.Report.Error (213, vi.Location, "You cannot use the fixed statement to take the address of an already fixed expression");
+ if (already_fixed) {
+ bc.Report.Error (213, loc, "You cannot use the fixed statement to take the address of an already fixed expression");
+ }
+
+ initializer = Convert.ImplicitConversionRequired (bc, initializer, li.Type, loc);
+ return new ExpressionEmitter (initializer, li);
+ }
+ }
+
+
+ VariableDeclaration decl;
+ Statement statement;
+ bool has_ret;
+
+ public Fixed (VariableDeclaration decl, Statement stmt, Location l)
+ {
+ this.decl = decl;
+ statement = stmt;
+ loc = l;
+ }
+
+ #region Properties
+
+ public Statement Statement {
+ get {
+ return statement;
+ }
+ }
+
+ public BlockVariableDeclaration Variables {
+ get {
+ return decl;
+ }
+ }
+
+ #endregion
- e = Convert.ImplicitConversionRequired (ec, e, expr_type, loc);
+ public override bool Resolve (BlockContext ec)
+ {
+ using (ec.Set (ResolveContext.Options.FixedInitializerScope)) {
+ if (!decl.Resolve (ec))
+ return false;
}
ec.StartFlowBranching (FlowBranching.BranchingType.Conditional, loc);
protected override void DoEmit (EmitContext ec)
{
- for (int i = 0; i < data.Length; i++) {
- data [i].Emit (ec);
+ decl.Variable.CreateBuilder (ec);
+ decl.Initializer.Emit (ec);
+ if (decl.Declarators != null) {
+ foreach (var d in decl.Declarators) {
+ d.Variable.CreateBuilder (ec);
+ d.Initializer.Emit (ec);
+ }
}
statement.Emit (ec);
//
// Clear the pinned variable
//
- for (int i = 0; i < data.Length; i++) {
- data [i].EmitExit (ec);
+ ((Emitter) decl.Initializer).EmitExit (ec);
+ if (decl.Declarators != null) {
+ foreach (var d in decl.Declarators) {
+ ((Emitter)d.Initializer).EmitExit (ec);
+ }
}
}
{
Fixed target = (Fixed) t;
- target.type = type.Clone (clonectx);
- target.declarators = new List<KeyValuePair<LocalInfo, Expression>> (declarators.Count);
- foreach (var p in declarators) {
- target.declarators.Add (new KeyValuePair<LocalInfo, Expression> (
- clonectx.LookupVariable (p.Key), p.Value.Clone (clonectx)));
- }
-
+ target.decl = (VariableDeclaration) decl.Clone (clonectx);
target.statement = statement.Clone (clonectx);
}
}
-
- public class Catch : Statement {
- public readonly string Name;
- public Block Block;
- public Block VarBlock;
- Expression type_expr;
+ public class Catch : Statement
+ {
+ Block block;
+ LocalVariable li;
+ FullNamedExpression type_expr;
+ CompilerAssign assign;
TypeSpec type;
- public Catch (Expression type, string name, Block block, Block var_block, Location l)
+ public Catch (Block block, Location loc)
{
- type_expr = type;
- Name = name;
- Block = block;
- VarBlock = var_block;
- loc = l;
+ this.block = block;
+ this.loc = loc;
+ }
+
+ #region Properties
+
+ public Block Block {
+ get {
+ return block;
+ }
}
public TypeSpec CatchType {
}
}
+ public FullNamedExpression TypeExpression {
+ get {
+ return type_expr;
+ }
+ set {
+ type_expr = value;
+ }
+ }
+
+ public LocalVariable Variable {
+ get {
+ return li;
+ }
+ set {
+ li = value;
+ }
+ }
+
+ #endregion
+
protected override void DoEmit (EmitContext ec)
{
- if (CatchType != null)
- ec.BeginCatchBlock (CatchType);
- else
+ if (IsGeneral)
ec.BeginCatchBlock (TypeManager.object_type);
+ else
+ ec.BeginCatchBlock (CatchType);
- if (VarBlock != null)
- VarBlock.Emit (ec);
-
- if (Name != null) {
- // TODO: Move to resolve
- LocalVariableReference lvr = new LocalVariableReference (Block, Name, loc);
- lvr.Resolve (new ResolveContext (ec.MemberContext));
-
- // Only to make verifier happy
- if (TypeManager.IsGenericParameter (lvr.Type))
- ec.Emit (OpCodes.Unbox_Any, lvr.Type);
+ if (li != null) {
+ li.CreateBuilder (ec);
- Expression source;
- if (lvr.IsHoisted) {
- LocalTemporary lt = new LocalTemporary (lvr.Type);
+ //
+ // Special case hoisted catch variable, we have to use a temporary variable
+ // to pass via anonymous storey initialization with the value still on top
+ // of the stack
+ //
+ if (li.HoistedVariant != null) {
+ LocalTemporary lt = new LocalTemporary (li.Type);
+ SymbolWriter.OpenCompilerGeneratedBlock (ec);
lt.Store (ec);
- source = lt;
- } else {
- // Variable is at the top of the stack
- source = EmptyExpression.Null;
- }
+ SymbolWriter.CloseCompilerGeneratedBlock (ec);
- lvr.EmitAssign (ec, source, false, false);
- } else
+ // switch to assigning from the temporary variable and not from top of the stack
+ assign.UpdateSource (lt);
+ }
+ } else {
+ SymbolWriter.OpenCompilerGeneratedBlock (ec);
ec.Emit (OpCodes.Pop);
+ SymbolWriter.CloseCompilerGeneratedBlock (ec);
+ }
Block.Emit (ec);
}
return false;
type = te.Type;
-
- if (type != TypeManager.exception_type && !TypeSpec.IsBaseClass (type, TypeManager.exception_type, false)){
+ if (type != TypeManager.exception_type && !TypeSpec.IsBaseClass (type, TypeManager.exception_type, false)) {
ec.Report.Error (155, loc, "The type caught or thrown must be derived from System.Exception");
- return false;
- }
- } else
- type = null;
+ } else if (li != null) {
+ li.Type = type;
+ li.PrepareForFlowAnalysis (ec);
- if (!Block.Resolve (ec))
- return false;
+ // source variable is at the top of the stack
+ Expression source = new EmptyExpression (li.Type);
+ if (li.Type.IsGenericParameter)
+ source = new UnboxCast (source, li.Type);
- // Even though VarBlock surrounds 'Block' we resolve it later, so that we can correctly
- // emit the "unused variable" warnings.
- if (VarBlock != null)
- return VarBlock.Resolve (ec);
+ assign = new CompilerAssign (new LocalVariableReference (li, loc), source, loc);
+ Block.AddScopeStatement (new StatementExpression (assign));
+ }
+ }
- return true;
+ return Block.Resolve (ec);
}
}
Catch target = (Catch) t;
if (type_expr != null)
- target.type_expr = type_expr.Clone (clonectx);
- if (VarBlock != null)
- target.VarBlock = clonectx.LookupBlock (VarBlock);
- target.Block = clonectx.LookupBlock (Block);
+ target.type_expr = (FullNamedExpression) type_expr.Clone (clonectx);
+
+ target.block = clonectx.LookupBlock (block);
}
}
public class TryFinally : ExceptionStatement {
- Statement stmt;
Block fini;
- public TryFinally (Statement stmt, Block fini, Location l)
+ public TryFinally (Statement stmt, Block fini, Location loc)
+ : base (stmt, loc)
{
- this.stmt = stmt;
this.fini = fini;
- loc = l;
}
public override bool Resolve (BlockContext ec)
foreach (Catch c in Specific){
ec.CurrentBranching.CreateSibling (c.Block, FlowBranching.SiblingType.Catch);
- if (c.Name != null) {
- LocalInfo vi = c.Block.GetLocalInfo (c.Name);
- if (vi == null)
- throw new Exception ();
-
- vi.VariableInfo = null;
- }
-
if (!c.Resolve (ec)) {
ok = false;
continue;
if (General != null) {
if (CodeGen.Assembly.WrapNonExceptionThrows) {
foreach (Catch c in Specific){
- if (c.CatchType == TypeManager.exception_type && PredefinedAttributes.Get.RuntimeCompatibility.IsDefined) {
- ec.Report.Warning (1058, 1, c.loc, "A previous catch clause already catches all exceptions. All non-exceptions thrown will be wrapped in a `System.Runtime.CompilerServices.RuntimeWrappedException'");
+ if (c.CatchType == TypeManager.exception_type && ec.Compiler.PredefinedAttributes.RuntimeCompatibility.IsDefined) {
+ ec.Report.Warning (1058, 1, c.loc,
+ "A previous catch clause already catches all exceptions. All non-exceptions thrown will be wrapped in a `System.Runtime.CompilerServices.RuntimeWrappedException'");
}
}
}
}
}
- // FIXME: Why is it almost exact copy of Using ??
- public class UsingTemporary : ExceptionStatement
+ public class Using : ExceptionStatement
{
- protected TemporaryVariable local_copy;
- Statement statement;
- Expression expr;
- protected Statement dispose_call;
-
- public UsingTemporary (Expression expr, Statement stmt, Location l)
+ public class VariableDeclaration : BlockVariableDeclaration
{
- this.expr = expr;
- statement = stmt;
- loc = l;
- }
+ Statement dispose_call;
- #region Properties
- public Expression Expression {
- get {
- return expr;
+ public VariableDeclaration (FullNamedExpression type, LocalVariable li)
+ : base (type, li)
+ {
}
- }
- public Statement Statement {
- get {
- return statement;
+ public VariableDeclaration (LocalVariable li, Location loc)
+ : base (li)
+ {
+ this.loc = loc;
}
- }
- #endregion
+ public VariableDeclaration (Expression expr)
+ : base (null)
+ {
+ loc = expr.Location;
+ Initializer = expr;
+ }
- protected virtual bool DoResolve (BlockContext ec)
- {
- expr = expr.Resolve (ec);
- if (expr == null)
- return false;
+ #region Properties
- if (expr.Type != TypeManager.idisposable_type && !expr.Type.ImplementsInterface (TypeManager.idisposable_type)) {
- if (TypeManager.IsNullableType (expr.Type)) {
- // Will handle it a custom code
- } else if (expr.Type == InternalType.Dynamic) {
- expr = Convert.ImplicitConversionStandard (ec, expr, TypeManager.idisposable_type, loc);
- } else {
- Using.Error_IsNotConvertibleToIDisposable (ec, expr);
- return false;
- }
+ public bool IsNested { get; private set; }
+
+ #endregion
+
+ public void EmitDispose (EmitContext ec)
+ {
+ dispose_call.Emit (ec);
}
- var expr_type = expr.Type;
+ public override bool Resolve (BlockContext bc)
+ {
+ if (IsNested)
+ return true;
+
+ return base.Resolve (bc);
+ }
- local_copy = new TemporaryVariable (expr_type, loc);
- local_copy.Resolve (ec);
+ public void ResolveExpression (BlockContext bc)
+ {
+ var e = Initializer.Resolve (bc);
+ if (e == null)
+ return;
- if (TypeManager.void_dispose_void == null) {
- TypeManager.void_dispose_void = TypeManager.GetPredefinedMethod (
- TypeManager.idisposable_type, "Dispose", loc, TypeSpec.EmptyTypes);
+ li = LocalVariable.CreateCompilerGenerated (e.Type, bc.CurrentBlock, loc);
+ Initializer = ResolveInitializer (bc, Variable, e);
}
- var dispose_mg = MethodGroupExpr.CreatePredefined (TypeManager.void_dispose_void, TypeManager.idisposable_type, loc);
- dispose_mg.InstanceExpression = TypeManager.IsNullableType (expr_type) ?
- new Cast (new TypeExpression (TypeManager.idisposable_type, loc), local_copy, loc).Resolve (ec) :
- local_copy;
+ protected override Expression ResolveInitializer (BlockContext bc, LocalVariable li, Expression initializer)
+ {
+ Assign assign;
+ if (li.Type == InternalType.Dynamic) {
+ initializer = initializer.Resolve (bc);
+ if (initializer == null)
+ return null;
- dispose_call = new StatementExpression (new Invocation (dispose_mg, null));
+ initializer = Convert.ImplicitConversionRequired (bc, initializer, TypeManager.idisposable_type, loc);
+ if (initializer == null)
+ return null;
- // Add conditional call when disposing possible null variable
- if (!expr_type.IsStruct || TypeManager.IsNullableType (expr_type))
- dispose_call = new If (new Binary (Binary.Operator.Inequality, local_copy, new NullLiteral (loc), loc), dispose_call, loc);
+ var var = LocalVariable.CreateCompilerGenerated (TypeManager.idisposable_type, bc.CurrentBlock, loc);
+ assign = new SimpleAssign (var.CreateReferenceExpression (bc, loc), initializer, loc);
+ assign.ResolveStatement (bc);
- return dispose_call.Resolve (ec);
- }
+ dispose_call = CreateDisposeCall (bc, var);
+ dispose_call.Resolve (bc);
- public override bool Resolve (BlockContext ec)
- {
- bool ok = DoResolve (ec);
+ return assign;
+ }
- ec.StartFlowBranching (this);
+ if (li == Variable) {
+ CheckIDiposableConversion (bc, li, initializer);
+ dispose_call = CreateDisposeCall (bc, li);
+ dispose_call.Resolve (bc);
+ }
- ok &= statement.Resolve (ec);
+ return base.ResolveInitializer (bc, li, initializer);
+ }
- ec.EndFlowBranching ();
+ protected virtual void CheckIDiposableConversion (BlockContext bc, LocalVariable li, Expression initializer)
+ {
+ var type = li.Type;
- ok &= base.Resolve (ec);
+ if (type != TypeManager.idisposable_type && !type.ImplementsInterface (TypeManager.idisposable_type, false)) {
+ if (TypeManager.IsNullableType (type)) {
+ // it's handled in CreateDisposeCall
+ return;
+ }
- return ok;
- }
+ bc.Report.SymbolRelatedToPreviousError (type);
+ var loc = type_expr == null ? initializer.Location : type_expr.Location;
+ bc.Report.Error (1674, loc, "`{0}': type used in a using statement must be implicitly convertible to `System.IDisposable'",
+ type.GetSignatureForError ());
- protected override void EmitPreTryBody (EmitContext ec)
- {
- local_copy.EmitAssign (ec, expr);
- }
+ return;
+ }
+ }
- protected override void EmitTryBody (EmitContext ec)
- {
- statement.Emit (ec);
- }
+ protected virtual Statement CreateDisposeCall (BlockContext bc, LocalVariable lv)
+ {
+ var lvr = lv.CreateReferenceExpression (bc, lv.Location);
+ var type = lv.Type;
+ var loc = lv.Location;
- protected override void EmitFinallyBody (EmitContext ec)
- {
- dispose_call.Emit (ec);
- }
+ if (TypeManager.void_dispose_void == null) {
+ TypeManager.void_dispose_void = TypeManager.GetPredefinedMethod (
+ TypeManager.idisposable_type, "Dispose", loc, TypeSpec.EmptyTypes);
+ }
- protected override void CloneTo (CloneContext clonectx, Statement t)
- {
- UsingTemporary target = (UsingTemporary) t;
+ var dispose_mg = MethodGroupExpr.CreatePredefined (TypeManager.void_dispose_void, TypeManager.idisposable_type, loc);
+ dispose_mg.InstanceExpression = TypeManager.IsNullableType (type) ?
+ new Cast (new TypeExpression (TypeManager.idisposable_type, loc), lvr, loc).Resolve (bc) :
+ lvr;
- target.expr = expr.Clone (clonectx);
- target.statement = statement.Clone (clonectx);
- }
- }
+ Statement dispose = new StatementExpression (new Invocation (dispose_mg, null));
- public class Using : ExceptionStatement {
- Statement stmt;
- public Statement EmbeddedStatement {
- get { return stmt is Using ? ((Using) stmt).EmbeddedStatement : stmt; }
- }
+ // Add conditional call when disposing possible null variable
+ if (!type.IsStruct || TypeManager.IsNullableType (type))
+ dispose = new If (new Binary (Binary.Operator.Inequality, lvr, new NullLiteral (loc), loc), dispose, loc);
+
+ return dispose;
+ }
- Expression var;
- Expression init;
+ public Statement RewriteForDeclarators (BlockContext bc, Statement stmt)
+ {
+ for (int i = declarators.Count - 1; i >= 0; --i) {
+ var d = declarators [i];
+ var vd = new VariableDeclaration (d.Variable, type_expr.Location);
+ vd.Initializer = d.Initializer;
+ vd.IsNested = true;
+ vd.dispose_call = CreateDisposeCall (bc, d.Variable);
+ vd.dispose_call.Resolve (bc);
+
+ stmt = new Using (vd, stmt, d.Variable.Location);
+ }
+
+ declarators = null;
+ return stmt;
+ }
+ }
- ExpressionStatement assign;
+ VariableDeclaration decl;
- public Using (Expression var, Expression init, Statement stmt, Location l)
+ public Using (VariableDeclaration decl, Statement stmt, Location loc)
+ : base (stmt, loc)
{
- this.var = var;
- this.init = init;
- this.stmt = stmt;
- loc = l;
+ this.decl = decl;
}
- static public void Error_IsNotConvertibleToIDisposable (BlockContext ec, Expression expr)
+ public Using (Expression expr, Statement stmt, Location loc)
+ : base (stmt, loc)
{
- ec.Report.SymbolRelatedToPreviousError (expr.Type);
- ec.Report.Error (1674, expr.Location, "`{0}': type used in a using statement must be implicitly convertible to `System.IDisposable'",
- TypeManager.CSharpName (expr.Type));
+ this.decl = new VariableDeclaration (expr);
+ }
+
+ #region Properties
+
+ public Expression Expression {
+ get {
+ return decl.Variable == null ? decl.Initializer : null;
+ }
+ }
+
+ public BlockVariableDeclaration Variables {
+ get {
+ return decl;
+ }
}
+ #endregion
+
protected override void EmitPreTryBody (EmitContext ec)
{
- assign.EmitStatement (ec);
+ decl.Emit (ec);
}
protected override void EmitTryBody (EmitContext ec)
protected override void EmitFinallyBody (EmitContext ec)
{
- Label skip = ec.DefineLabel ();
-
- bool emit_null_check = !TypeManager.IsValueType (var.Type);
- if (emit_null_check) {
- var.Emit (ec);
- ec.Emit (OpCodes.Brfalse, skip);
- }
-
- Invocation.EmitCall (ec, var, TypeManager.void_dispose_void, null, loc);
-
- if (emit_null_check)
- ec.MarkLabel (skip);
+ decl.EmitDispose (ec);
}
public override bool Resolve (BlockContext ec)
{
- if (!ResolveVariable (ec))
- return false;
+ using (ec.Set (ResolveContext.Options.UsingInitializerScope)) {
+ if (decl.Variable == null) {
+ decl.ResolveExpression (ec);
+ } else {
+ if (!decl.Resolve (ec))
+ return false;
+
+ if (decl.Declarators != null) {
+ stmt = decl.RewriteForDeclarators (ec, stmt);
+ }
+ }
+ }
ec.StartFlowBranching (this);
ok &= base.Resolve (ec);
- if (TypeManager.void_dispose_void == null) {
- TypeManager.void_dispose_void = TypeManager.GetPredefinedMethod (
- TypeManager.idisposable_type, "Dispose", loc, TypeSpec.EmptyTypes);
- }
-
return ok;
}
- bool ResolveVariable (BlockContext ec)
- {
- assign = new SimpleAssign (var, init, loc);
- assign = assign.ResolveStatement (ec);
- if (assign == null)
- return false;
-
- if (assign.Type == TypeManager.idisposable_type || assign.Type.ImplementsInterface (TypeManager.idisposable_type)) {
- return true;
- }
-
- Expression e;
- if (assign.Type == InternalType.Dynamic) {
- e = Convert.ImplicitConversionStandard (ec, assign, TypeManager.idisposable_type, loc);
- var = new TemporaryVariable (e.Type, loc);
- assign = new SimpleAssign (var, e, loc).ResolveStatement (ec);
- return true;
- }
-
- Error_IsNotConvertibleToIDisposable (ec, var);
- return false;
- }
-
protected override void CloneTo (CloneContext clonectx, Statement t)
{
Using target = (Using) t;
- target.var = var.Clone (clonectx);
- target.init = init.Clone (clonectx);
+ target.decl = (VariableDeclaration) decl.Clone (clonectx);
target.stmt = stmt.Clone (clonectx);
}
}
sealed class ArrayForeach : Statement
{
- class ArrayCounter : TemporaryVariable
- {
- StatementExpression increment;
-
- public ArrayCounter (Location loc)
- : base (TypeManager.int32_type, loc)
- {
- }
-
- public void ResolveIncrement (BlockContext ec)
- {
- increment = new StatementExpression (new UnaryMutator (UnaryMutator.Mode.PostIncrement, this, loc));
- increment.Resolve (ec);
- }
-
- public void EmitIncrement (EmitContext ec)
- {
- increment.Emit (ec);
- }
- }
-
readonly Foreach for_each;
readonly Statement statement;
Expression conv;
- TemporaryVariable[] lengths;
+ TemporaryVariableReference[] lengths;
Expression [] length_exprs;
- ArrayCounter[] counter;
+ StatementExpression[] counter;
+ TemporaryVariableReference[] variables;
- TemporaryVariable copy;
+ TemporaryVariableReference copy;
Expression access;
+ LocalVariableReference variable;
public ArrayForeach (Foreach @foreach, int rank)
{
for_each = @foreach;
statement = for_each.statement;
loc = @foreach.loc;
+ variable = new LocalVariableReference (for_each.variable, loc);
- counter = new ArrayCounter [rank];
+ counter = new StatementExpression[rank];
+ variables = new TemporaryVariableReference[rank];
length_exprs = new Expression [rank];
//
// multi-dimensional arrays
//
if (rank > 1)
- lengths = new TemporaryVariable [rank];
+ lengths = new TemporaryVariableReference [rank];
}
protected override void CloneTo (CloneContext clonectx, Statement target)
public override bool Resolve (BlockContext ec)
{
- copy = new TemporaryVariable (for_each.expr.Type, loc);
+ Block variables_block = variable.local_info.Block;
+ copy = TemporaryVariableReference.Create (for_each.expr.Type, variables_block, loc);
copy.Resolve (ec);
int rank = length_exprs.Length;
Arguments list = new Arguments (rank);
for (int i = 0; i < rank; i++) {
- counter [i] = new ArrayCounter (loc);
- counter [i].ResolveIncrement (ec);
+ var v = TemporaryVariableReference.Create (TypeManager.int32_type, variables_block, loc);
+ variables[i] = v;
+ counter[i] = new StatementExpression (new UnaryMutator (UnaryMutator.Mode.PostIncrement, v, loc));
+ counter[i].Resolve (ec);
if (rank == 1) {
length_exprs [i] = new MemberAccess (copy, "Length").Resolve (ec);
} else {
- lengths [i] = new TemporaryVariable (TypeManager.int32_type, loc);
- lengths [i].Resolve (ec);
+ lengths[i] = TemporaryVariableReference.Create (TypeManager.int32_type, variables_block, loc);
+ lengths[i].Resolve (ec);
Arguments args = new Arguments (1);
args.Add (new Argument (new IntConstant (i, loc)));
length_exprs [i] = new Invocation (new MemberAccess (copy, "GetLength"), args).Resolve (ec);
}
- list.Add (new Argument (counter [i]));
+ list.Add (new Argument (v));
}
access = new ElementAccess (copy, list, loc).Resolve (ec);
ec.StartFlowBranching (FlowBranching.BranchingType.Loop, loc);
ec.CurrentBranching.CreateSibling ();
- for_each.variable = for_each.variable.ResolveLValue (ec, conv);
- if (for_each.variable == null)
- ok = false;
+ variable.local_info.Type = conv.Type;
+ variable.Resolve (ec);
ec.StartFlowBranching (FlowBranching.BranchingType.Embedded, loc);
if (!statement.Resolve (ec))
IntConstant zero = new IntConstant (0, loc);
for (int i = 0; i < rank; i++) {
- counter [i].EmitAssign (ec, zero);
+ variables [i].EmitAssign (ec, zero);
ec.Emit (OpCodes.Br, test [i]);
ec.MarkLabel (loop [i]);
}
- ((IAssignMethod) for_each.variable).EmitAssign (ec, conv, false, false);
+ variable.local_info.CreateBuilder (ec);
+ variable.EmitAssign (ec, conv, false, false);
statement.Emit (ec);
ec.MarkLabel (ec.LoopBegin);
for (int i = rank - 1; i >= 0; i--){
- counter [i].EmitIncrement (ec);
+ counter [i].Emit (ec);
ec.MarkLabel (test [i]);
- counter [i].Emit (ec);
+ variables [i].Emit (ec);
if (lengths != null)
lengths [i].Emit (ec);
class Body : Statement
{
TypeSpec type;
- Expression variable, current, conv;
+ LocalVariableReference variable;
+ Expression current, conv;
Statement statement;
- Assign assign;
- public Body (TypeSpec type, Expression variable,
+ public Body (TypeSpec type, LocalVariable variable,
Expression current, Statement statement,
Location loc)
{
this.type = type;
- this.variable = variable;
+ this.variable = new LocalVariableReference (variable, loc);
this.current = current;
this.statement = statement;
this.loc = loc;
if (conv == null)
return false;
- assign = new SimpleAssign (variable, conv, loc);
- if (assign.Resolve (ec) == null)
- return false;
+ variable.local_info.Type = conv.Type;
+ variable.Resolve (ec);
if (!statement.Resolve (ec))
return false;
protected override void DoEmit (EmitContext ec)
{
- assign.EmitStatement (ec);
+ variable.local_info.CreateBuilder (ec);
+ variable.EmitAssign (ec, conv, false, false);
+
statement.Emit (ec);
}
}
- class Dispose : UsingTemporary
+ class RuntimeDispose : Using.VariableDeclaration
{
- LocalTemporary dispose;
+ public RuntimeDispose (LocalVariable lv, Location loc)
+ : base (lv, loc)
+ {
+ }
- public Dispose (TemporaryVariable variable, LocalTemporary dispose, Expression expr, Statement statement, Location loc)
- : base (expr, statement, loc)
+ protected override void CheckIDiposableConversion (BlockContext bc, LocalVariable li, Expression initializer)
{
- base.local_copy = variable;
- this.dispose = dispose;
+ // Defered to runtime check
}
- protected override bool DoResolve (BlockContext ec)
+ protected override Statement CreateDisposeCall (BlockContext bc, LocalVariable lv)
{
if (TypeManager.void_dispose_void == null) {
TypeManager.void_dispose_void = TypeManager.GetPredefinedMethod (
TypeManager.idisposable_type, "Dispose", loc, TypeSpec.EmptyTypes);
}
- Expression dispose_var = (Expression) dispose ?? local_copy;
-
- var dispose_mg = MethodGroupExpr.CreatePredefined (TypeManager.void_dispose_void, TypeManager.idisposable_type, loc);
- dispose_mg.InstanceExpression = dispose_var;
-
- dispose_call = new StatementExpression (new Invocation (dispose_mg, null));
-
- if (!dispose_var.Type.IsStruct)
- dispose_call = new If (new Binary (Binary.Operator.Inequality, dispose_var, new NullLiteral (loc), loc), dispose_call, loc);
+ //
+ // Fabricates code like
+ //
+ // if ((temp = vr as IDisposable) != null) temp.Dispose ();
+ //
- return dispose_call.Resolve (ec);
- }
+ var dispose_variable = LocalVariable.CreateCompilerGenerated (TypeManager.idisposable_type, bc.CurrentBlock, loc);
- protected override void EmitFinallyBody (EmitContext ec)
- {
- Label call_dispose = ec.DefineLabel ();
- if (dispose != null) {
- local_copy.Emit (ec, false);
- ec.Emit (OpCodes.Isinst, dispose.Type);
- dispose.Store (ec);
- }
+ var idisaposable_test = new Binary (Binary.Operator.Inequality, new CompilerAssign (
+ dispose_variable.CreateReferenceExpression (bc, loc),
+ new As (lv.CreateReferenceExpression (bc, loc), new TypeExpression (dispose_variable.Type, loc), loc),
+ loc), new NullLiteral (loc), loc);
- base.EmitFinallyBody (ec);
+ var dispose_mg = MethodGroupExpr.CreatePredefined (TypeManager.void_dispose_void, TypeManager.idisposable_type, loc);
+ dispose_mg.InstanceExpression = dispose_variable.CreateReferenceExpression (bc, loc);
- if (dispose != null) {
- ec.MarkLabel (call_dispose);
- dispose.Release (ec);
- }
+ Statement dispose = new StatementExpression (new Invocation (dispose_mg, null));
+ return new If (idisaposable_test, dispose, loc);
}
}
- Expression variable, expr;
+ LocalVariable variable;
+ Expression expr;
Statement statement;
Expression var_type;
ExpressionStatement init;
+ TemporaryVariableReference enumerator_variable;
bool ambiguous_getenumerator_name;
- public CollectionForeach (Expression var_type, Expression var,
- Expression expr, Statement stmt, Location l)
+ public CollectionForeach (Expression var_type, LocalVariable var, Expression expr, Statement stmt, Location l)
{
this.var_type = var_type;
this.variable = var;
//
// Option 1: Try to match by name GetEnumerator first
//
- var mexpr = Expression.MemberLookup (rc, rc.CurrentType, expr.Type, "GetEnumerator", 0, true, loc); // TODO: What if CS0229 ?
+ var mexpr = Expression.MemberLookup (rc, rc.CurrentType, expr.Type,
+ "GetEnumerator", 0, Expression.MemberLookupRestrictions.ExactArity, loc); // TODO: What if CS0229 ?
var mg = mexpr as MethodGroupExpr;
if (mg != null) {
public override bool Resolve (BlockContext ec)
{
bool is_dynamic = expr.Type == InternalType.Dynamic;
- if (is_dynamic)
+
+ if (is_dynamic) {
expr = Convert.ImplicitConversionRequired (ec, expr, TypeManager.ienumerable_type, loc);
+ } else if (TypeManager.IsNullableType (expr.Type)) {
+ expr = new Nullable.UnwrapCall (expr).Resolve (ec);
+ }
var get_enumerator_mg = ResolveGetEnumerator (ec);
if (get_enumerator_mg == null) {
}
var get_enumerator = get_enumerator_mg.BestCandidate;
- var enumerator = new TemporaryVariable (get_enumerator.ReturnType, loc);
- enumerator.Resolve (ec);
+ enumerator_variable = TemporaryVariableReference.Create (get_enumerator.ReturnType, variable.Block, loc);
+ enumerator_variable.Resolve (ec);
// Prepare bool MoveNext ()
var move_next_mg = ResolveMoveNext (ec, get_enumerator);
return false;
}
- move_next_mg.InstanceExpression = enumerator;
+ move_next_mg.InstanceExpression = enumerator_variable;
// Prepare ~T~ Current { get; }
var current_prop = ResolveCurrent (ec, get_enumerator);
return false;
}
- var current_pe = new PropertyExpr (current_prop, loc) { InstanceExpression = enumerator }.Resolve (ec);
+ var current_pe = new PropertyExpr (current_prop, loc) { InstanceExpression = enumerator_variable }.Resolve (ec);
if (current_pe == null)
return false;
if (var_type == null)
return false;
+ variable.Type = var_type.Type;
+
var init = new Invocation (get_enumerator_mg, null);
- init.Resolve (ec);
statement = new While (new BooleanExpression (new Invocation (move_next_mg, null)),
new Body (var_type.Type, variable, current_pe, statement, loc), loc);
- var enum_type = enumerator.Type;
+ var enum_type = enumerator_variable.Type;
//
// Add Dispose method call when enumerator can be IDisposable
//
- if (!enumerator.Type.ImplementsInterface (TypeManager.idisposable_type)) {
+ if (!enum_type.ImplementsInterface (TypeManager.idisposable_type, false)) {
if (!enum_type.IsSealed && !TypeManager.IsValueType (enum_type)) {
//
// Runtime Dispose check
//
- var tv = new LocalTemporary (TypeManager.idisposable_type);
- statement = new Dispose (enumerator, tv, init, statement, loc);
+ var vd = new RuntimeDispose (enumerator_variable.LocalInfo, loc);
+ vd.Initializer = init;
+ statement = new Using (vd, statement, loc);
} else {
//
// No Dispose call needed
//
- this.init = new SimpleAssign (enumerator, init);
+ this.init = new SimpleAssign (enumerator_variable, init);
this.init.Resolve (ec);
}
} else {
//
// Static Dispose check
//
- statement = new Dispose (enumerator, null, init, statement, loc);
+ var vd = new Using.VariableDeclaration (enumerator_variable.LocalInfo, loc);
+ vd.Initializer = init;
+ statement = new Using (vd, statement, loc);
}
return statement.Resolve (ec);
protected override void DoEmit (EmitContext ec)
{
+ enumerator_variable.LocalInfo.CreateBuilder (ec);
+
if (init != null)
init.EmitStatement (ec);
}
Expression type;
- Expression variable;
+ LocalVariable variable;
Expression expr;
Statement statement;
- public Foreach (Expression type, LocalVariableReference var, Expression expr,
- Statement stmt, Location l)
+ public Foreach (Expression type, LocalVariable var, Expression expr, Statement stmt, Location l)
{
this.type = type;
this.variable = var;
Foreach target = (Foreach) t;
target.type = type.Clone (clonectx);
- target.variable = variable.Clone (clonectx);
target.expr = expr.Clone (clonectx);
target.statement = statement.Clone (clonectx);
}
public static TypeSpec CoreLookupType (CompilerContext ctx, string ns_name, string name, int arity, MemberKind kind, bool required)
{
- Namespace ns = GlobalRootNamespace.Instance.GetNamespace (ns_name, true);
+ Namespace ns = ctx.GlobalRootNamespace.GetNamespace (ns_name, true);
var te = ns.LookupType (ctx, name, arity, !required, Location.Null);
var ts = te == null ? null : te.Type;
continue;
if (!RootContext.StdLib) {
- var ns = GlobalRootNamespace.Instance.GetNamespace (p.Namespace, false);
+ var ns = ctx.GlobalRootNamespace.GetNamespace (p.Namespace, false);
ns.ReplaceTypeWithPredefined (found, p);
var tc = found.MemberDefinition as TypeContainer;
}
}
- PredefinedAttributes.Get.ParamArray.Initialize (ctx, false);
- PredefinedAttributes.Get.Out.Initialize (ctx, false);
+ ctx.PredefinedAttributes.ParamArray.Initialize (ctx, false);
+ ctx.PredefinedAttributes.Out.Initialize (ctx, false);
if (InternalType.Dynamic.GetMetaInfo () == null) {
InternalType.Dynamic.SetMetaInfo (object_type.GetMetaInfo ());
// Initialize InternalsVisibleTo as the very first optional type. Otherwise we would populate
// types cache with incorrect accessiblity when any of optional types is internal.
//
- PredefinedAttributes.Get.Initialize (ctx);
+ ctx.PredefinedAttributes.Initialize (ctx);
runtime_argument_handle_type = CoreLookupType (ctx, "System", "RuntimeArgumentHandle", MemberKind.Struct, false);
asynccallback_type = CoreLookupType (ctx, "System", "AsyncCallback", MemberKind.Delegate, false);
return "<" + TypeManager.CSharpName (MemberDefinition.TypeParameters) + ">";
}
- public bool ImplementsInterface (TypeSpec iface)
+ public bool ImplementsInterface (TypeSpec iface, bool variantly)
{
var t = this;
do {
if (t.Interfaces != null) { // TODO: Try t.iface
foreach (TypeSpec i in t.Interfaces) {
- if (i == iface || TypeSpecComparer.Variant.IsEqual (i, iface) || TypeSpecComparer.IsEqual (i, iface))
+ if (i == iface || TypeSpecComparer.IsEqual (i, iface))
+ return true;
+
+ if (variantly && TypeSpecComparer.Variant.IsEqual (i, iface))
return true;
}
}
var targs_definition = target_type_def.TypeParameters;
if (!type1.IsInterface && !type1.IsDelegate) {
- return TypeSpecComparer.Equals (t1_targs, t2_targs);
+ return false;
}
for (int i = 0; i < targs_definition.Length; ++i) {
if (a == InternalType.Dynamic || b == InternalType.Dynamic)
return b == TypeManager.object_type || a == TypeManager.object_type;
- if (a == null || !a.IsGeneric || b == null || !b.IsGeneric)
+ if (a == null)
+ return false;
+
+ if (a.IsArray) {
+ var a_a = (ArrayContainer) a;
+ var b_a = b as ArrayContainer;
+ if (b_a == null)
+ return false;
+
+ return IsEqual (a_a.Element, b_a.Element) && a_a.Rank == b_a.Rank;
+ }
+
+ if (!a.IsGeneric || b == null || !b.IsGeneric)
return false;
if (a.MemberDefinition != b.MemberDefinition)
return null;
}
- public virtual object Visit (UsingTemporary usingTemporaryStatement)
- {
- return null;
- }
-
public virtual object Visit (Foreach foreachStatement)
{
return null;
Assert (binder.Operation, ExpressionType.Add, "Operation");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
- CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null)
+ CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.Constant, null)
}, "ArgumentInfo");
Assert (arg, Enum.A, "arg");
{
mock.ConvertOperation = (binder) => {
Assert (binder.Explicit, true, "Explicit");
-// Assert (binder.IsChecked, true, "IsChecked");
+ // Assert (binder.IsChecked, true, "IsChecked");
Assert (binder.Type, typeof (byte), "Type");
return (byte) 2;
};
};
foreach (int v in d) {
-// Console.WriteLine (v);
+ // Console.WriteLine (v);
}
}
{
mock.GetIndexOperation = (binder, args) => {
Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null) },
{
mock.GetIndexOperation = (binder, args) => {
Assert (binder.CallInfo, new CallInfo (2, new string[0]), "CallInfo");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null),
{
mock.GetIndexOperation = (binder, args) => {
Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null),
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null) },
mock.GetMemberOperation = (binder) => {
Assert (binder.Name, "Foo", "Name");
Assert (binder.IgnoreCase, false, "IgnoreCase");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null) },
"ArgumentInfo");
{
mock.InvokeOperation = (binder, args) => {
Assert (binder.CallInfo, new CallInfo (2, new string[0]), "CallInfo");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null),
- CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null)
+ CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant, null)
}, "ArgumentInfo");
Assert ((IList<object>) args, new object[] { "foo", null }, "args");
{
mock.InvokeOperation = (binder, args) => {
Assert (binder.CallInfo, new CallInfo (0, new string[0]), "CallInfo");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null) },
"ArgumentInfo");
d ();
}
-
+
void Invoke_3 (dynamic d, DynamicObjectMock mock)
{
try {
{
mock.InvokeOperation = (binder, args) => {
Assert (binder.CallInfo, new CallInfo (2, new string[] { "name" }), "CallInfo");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null),
- CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.NamedArgument | CSharpArgumentInfoFlags.UseCompileTimeType, "name")
+ CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.NamedArgument | CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, "name")
}, "ArgumentInfo");
Assert ((IList<object>) args, new object[] { typeof (bool), -1 }, "args");
void Invoke_5 (dynamic d, DynamicObjectMock mock)
{
mock.InvokeOperation = (binder, args) => {
- Assert (binder.CallInfo, new CallInfo (2, new string[] { "name" }), "CallInfo");
+ Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
- CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null),
- CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.NamedArgument | CSharpArgumentInfoFlags.UseCompileTimeType, "name")
+ CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.Constant, null)
}, "ArgumentInfo");
- Assert ((IList<object>) args, new object[] { typeof (bool), -1 }, "args");
+ Assert ((IList<object>) args, new object[] { "a" }, "args");
};
- Action<object> a = (i) => { };
+ Action<dynamic> a = (i) => { i ("a"); };
a (d);
}
+ void Invoke_6 (dynamic d, DynamicObjectMock mock)
+ {
+ mock.InvokeOperation = (binder, args) => {
+ Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
+ AssertArgument (binder, new[] {
+ CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
+ CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.Constant, null)
+ }, "ArgumentInfo");
+
+ Assert ((IList<object>) args, new object[] { 3 }, "args");
+ };
+
+ d (1 + 2);
+ }
+
void InvokeMember_1 (dynamic d, DynamicObjectMock mock)
{
mock.InvokeMemberOperation = (binder, args) => {
Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null)},
{
mock.InvokeMemberOperation = (binder, args) => {
Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null),
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null)},
{
mock.InvokeMemberOperation = (binder, args) => {
Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.IsRef | CSharpArgumentInfoFlags.UseCompileTimeType, null) },
"ArgumentInfo");
-// Assert (binder.Flags, CSharpCallFlags.None, "Flags");
+ // Assert (binder.Flags, CSharpCallFlags.None, "Flags");
Assert (binder.IgnoreCase, false, "IgnoreCase");
-// Assert (binder.TypeArguments, new Type[0], "TypeArguments");
+ // Assert (binder.TypeArguments, new Type[0], "TypeArguments");
Assert ((IList<object>) args, new object[] { 9 }, "args");
};
{
mock.InvokeMemberOperation = (binder, args) => {
Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.IsOut | CSharpArgumentInfoFlags.UseCompileTimeType, null) },
{
InvokeMemberOperation = (binder, args) => {
Assert (binder.CallInfo, new CallInfo (2, new string[0]), "CallInfo");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null),
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
- CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.Constant, null),
+ CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant, null),
}, "ArgumentInfo");
-// Assert (binder.Flags, CSharpCallFlags.SimpleNameCall, "Flags");
+ // Assert (binder.Flags, CSharpCallFlags.SimpleNameCall, "Flags");
Assert (binder.IgnoreCase, false, "IgnoreCase");
-// Assert (binder.TypeArguments, Type.EmptyTypes, "TypeArguments");
+ // Assert (binder.TypeArguments, Type.EmptyTypes, "TypeArguments");
Assert ((IList<object>) args, new object[] { d, null }, "args");
};
{
mock.InvokeMemberOperation = (binder, args) => {
Assert (binder.CallInfo, new CallInfo (0, new string[0]), "CallInfo");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null)
}, "ArgumentInfo");
{
mock.SetIndexOperation = (binder, args, value) => {
Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null),
{
mock.SetIndexOperation = (binder, args, value) => {
Assert (binder.CallInfo, new CallInfo (2, new string[0]), "CallInfo");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null),
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null),
- CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null)
+ CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null)
}, "ArgumentInfo");
Assert ((IList<object>) args, new object[] { 2, 3 }, "args");
{
mock.SetIndexOperation = (binder, args, value) => {
Assert (binder.CallInfo, new CallInfo (1, new string[0]), "CallInfo");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType, null),
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
mock.SetMemberOperation = (binder, value) => {
Assert (binder.Name, "Foo", "Name");
Assert (binder.IgnoreCase, false, "IgnoreCase");
-// Assert (binder.CallingContext, typeof (Tester), "CallingContext");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
- CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.Constant, null) // CSC bug?
+ CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.Constant, null)
}, "ArgumentInfo");
Assert (value, d_const, "value");
Assert (binder.Operation, ExpressionType.Equal, "Operation");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
- CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null) },
+ CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant, null) },
"ArgumentInfo");
Assert (arg, null, "arg");
Assert (binder.Operation, ExpressionType.NotEqual, "Operation");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
- CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null) },
+ CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant, null) },
"ArgumentInfo");
Assert (arg, null, "arg");
Assert (binder.Operation, ExpressionType.And, "Operation");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
- CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null) },
+ CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant, null) },
"ArgumentInfo");
Assert (arg, null, "arg");
Assert (binder.Operation, ExpressionType.Or, "Operation");
AssertArgument (binder, new[] {
CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.None, null),
- CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null) },
+ CSharpArgumentInfo.Create (CSharpArgumentInfoFlags.Constant, null) },
"ArgumentInfo");
Assert (arg, null, "arg");
class Disposable : IDisposable
{
- public int Counter;
+ public static int Counter;
public void Dispose ()
{
res += v;
}
- Console.WriteLine (res);
return res == 31;
}
bool ForEachTest_2()
{
- dynamic c = new int [2] { 5, 7 };
+ dynamic c = new int [] { 5, 7 };
int total = 0;
foreach (var v in c)
{
return total == 12;
}
+
+ bool ForEachTest_3()
+ {
+ dynamic[] c = new dynamic [] { (byte) 1, 7 };
+ int total = 0;
+ foreach (var v in c)
+ {
+ total += v;
+ }
+
+ Console.WriteLine (total);
+ return total == 8;
+ }
bool UsingTest ()
{
}
} catch { }
- if (d.Counter != 1)
+ if (Disposable.Counter != 1)
return false;
try {
}
} catch { }
- if (d.Counter != 1)
+ if (Disposable.Counter != 2)
return false;
return true;
if (!t.ForEachTest_2 ())
return 2;
- if (!t.UsingTest ())
+ if (!t.ForEachTest_3 ())
return 3;
+
+ if (!t.UsingTest ())
+ return 10;
Console.WriteLine ("ok");
return 0;
{
}
+struct S<T>
+{
+}
+
delegate dynamic D (dynamic d);
class DynamicAssignments
I<object> io = null;
IA<dynamic> id = io;
+ IA<object> ia_o = null;
+ IA<dynamic> ia_d = ia_o;
+
+ S<dynamic> s_d = new S<dynamic> ();
+ S<object> s_o = s_d;
+ S<object>? s_o_n = s_d;
+
D del = delegate (object del_arg) {
return (object) null;
};
{
return 3;
}
+
+ public int M2 (object d)
+ {
+ return 1;
+ }
+
+ public int M2 (byte s)
+ {
+ return 2;
+ }
}
public class Test
if (v != 2)
return 1;
+
+ v = d.M2 (1 + 3);
+ if (v != 2)
+ return 2;
return 0;
}
public class Test
{
+ static void M (ref dynamic[] d, ref object[] o)
+ {
+ }
+
public static int Main ()
{
dynamic d = new C ();
if (u != 40)
return 2;
+ object[] o = null;
+ M (ref o, ref o);
+
return 0;
}
}
--- /dev/null
+using System;
+
+class A<T>
+{
+}
+
+class B
+{
+ static void M1<T> (T t) where T : struct
+ {
+ }
+
+ static void M2<T, U> (T t, U u) where U : IEquatable<T>
+ {
+ }
+
+ static void M3<T, U> (T t, A<U> u) where U : IEquatable<T>
+ {
+ }
+
+ static void M4<T, U> (T t, IEquatable<U> u) where T : IEquatable<U>
+ {
+ }
+
+ public static void Main ()
+ {
+ dynamic d = 2;
+ M1 (d);
+
+ M2 (d, 6);
+ M2 (4, d);
+
+ M3 (d, new A<int> ());
+
+ M4 (d, 6);
+ // TODO: type inference
+ //M4 (4, d);
+ }
+}
+
--- /dev/null
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+public class Test
+{
+ class Wrap
+ {
+ List<short> numbers = new List<short> ();
+
+ public dynamic Numbers {
+ get {
+ return numbers;
+ }
+ }
+ }
+
+ static int Main ()
+ {
+ var a = new Wrap () {
+ Numbers = { 3, 9 }
+ };
+
+ if (a.Numbers [1] != 9)
+ return 1;
+
+ Console.WriteLine ("OK");
+ return 0;
+ }
+}
+
--- /dev/null
+using System;
+using System.Linq.Expressions;
+
+public class C
+{
+ static void Conv1(Expression<Func<object, object>> l)
+ {
+ }
+
+ static void Conv2(Expression<Func<dynamic, dynamic>> l)
+ {
+ }
+
+ public static void Main ()
+ {
+ Expression<Func<object>> e1 = () => (dynamic) 1;
+ Expression<Func<dynamic>> e2 = () => (object) 1;
+
+ Conv1 ((d) => (dynamic) 1);
+ Conv1 ((dynamic d) => d);
+
+ Conv2 ((o) => (object) 1);
+ Conv2 ((object o) => o);
+ }
+}
\ No newline at end of file
using System;
-using System.Collections;
-public class Test
+struct S : IDisposable
{
- public static void Main ()
- {
- foreach (object o in new Test ())
- Console.WriteLine (o);
- }
-
- public IEnumerator GetEnumerator ()
- {
- foreach (int i in new ArrayList ())
- yield return i;
- }
+ public static int hit;
+
+ void IDisposable.Dispose ()
+ {
+ hit++;
+ }
+
+ public void Dispose ()
+ {
+ throw new ApplicationException ();
+ }
+}
+
+class C : IDisposable
+{
+
+ void IDisposable.Dispose ()
+ {
+ }
+
+ public void Dispose ()
+ {
+ throw new ApplicationException ();
+ }
+}
+
+class Test
+{
+ public static int Main ()
+ {
+ S? nullable = null;
+ using (var a = nullable) {
+ }
+
+ if (S.hit != 0)
+ return 1;
+
+ using (var s = new S ()) {
+ }
+
+ if (S.hit != 1)
+ return 2;
+
+ C c = null;
+ GenMethod (c);
+
+ using (S? a = nullable, b = nullable) {
+ }
+
+ if (S.hit != 1)
+ return 3;
+
+ Console.WriteLine ("ok");
+ return 0;
+ }
+
+ static void GenMethod<T> (T t) where T : IDisposable
+ {
+ using (T t2 = t) {
+ }
+ }
}
+++ /dev/null
-using System;
-using System.Collections;
-
-class X {
- delegate void A ();
-
- static IEnumerable GetIt (int [] args)
- {
- foreach (int arg in args) {
- Console.WriteLine ("OUT: {0}", arg);
- A a = delegate {
- Console.WriteLine ("arg: {0}", arg);
- return;
- };
- a ();
- yield return arg;
- }
- }
-
- static int Main ()
- {
- int total = 0;
- foreach (int i in GetIt (new int [] { 1, 2, 3})){
- Console.WriteLine ("Got: " + i);
- total += i;
- }
-
- if (total != 6)
- return 1;
-
- return 0;
- }
-}
using System;
//
-// Parser conditional expression tests
+// Parser conditional and cast expression tests
//
+class A<T>
+{
+ public static int Value;
+}
+
public class ConditionalParsing
{
class T
{
int i = new int [] { 1, 2, 3 } [1];
}
+
+ void Test_11 ()
+ {
+ int a = (int)(A<int>.Value);
+ }
public static void Main ()
{
--- /dev/null
+using System;
+
+public class Test
+{
+
+ public sealed class Expression<TDelegate>
+ {
+ }
+
+ public class Expression
+ {
+ public static void Test ()
+ {
+ }
+ }
+
+ static void Main ()
+ {
+ Expression.Test ();
+ }
+}
--- /dev/null
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+public struct S : IEnumerable<int>
+{
+ public S (int i)
+ {
+ }
+
+ public IEnumerator<int> GetEnumerator ()
+ {
+ return new Enumerator<int> ();
+ }
+
+ IEnumerator IEnumerable.GetEnumerator ()
+ {
+ throw new ApplicationException ();
+ }
+}
+
+public struct S2
+{
+ public IEnumerator<int> GetEnumerator ()
+ {
+ return new Enumerator<int> ();
+ }
+}
+
+public struct Enumerator<T> : IEnumerator<T>
+{
+ public T Current {
+ get {
+ throw new NotImplementedException ();
+ }
+ }
+
+ object IEnumerator.Current {
+ get {
+ throw new NotImplementedException ();
+ }
+ }
+
+ public bool MoveNext ()
+ {
+ return false;
+ }
+
+ public void Reset ()
+ {
+ throw new NotImplementedException ();
+ }
+
+ public void Dispose ()
+ {
+ MySystem.DisposeCounter++;
+ }
+}
+
+public class MySystem
+{
+ public static int DisposeCounter;
+
+ public static int Main ()
+ {
+ S? s = new S ();
+ foreach (var a in s) {
+ }
+
+ if (DisposeCounter != 1)
+ return 1;
+
+ S2? s2 = new S2 ();
+ foreach (var a in s2) {
+ }
+
+ if (DisposeCounter != 2)
+ return 2;
+
+ return 0;
+ }
+}
--- /dev/null
+using System;
+
+struct S
+{
+ public int ID { get; set; }
+}
+
+class C
+{
+ public readonly int ID;
+
+ private C (int id)
+ {
+ ID = id;
+ }
+
+ public static explicit operator C (S x)
+ {
+ throw new ApplicationException ("wrong conversion");
+ }
+
+ public static explicit operator C (S? x)
+ {
+ return new C (x.HasValue ? x.Value.ID : 5);
+ }
+}
+
+public class Test
+{
+ public static int Main ()
+ {
+ S? s = null;
+ C c = (C) s;
+
+ if (c.ID != 5)
+ return 1;
+
+ s = new S () { ID = 10 };
+ c = (C) s;
+
+ if (c.ID != 10)
+ return 2;
+
+ return 0;
+ }
+}
void Invoke (SomeHandlerType h)
{
+ h ();
}
public void FailsToCompile ()
--- /dev/null
+using System;
+
+class C
+{
+ static void Main ()
+ {
+ Execute (() => {
+ int a, b;
+ });
+ }
+
+ public static void Execute (Action action) { }
+}
\ No newline at end of file
--- /dev/null
+using System;
+using System.Linq;
+
+class A
+{
+ public string Header { get { return null; } }
+}
+
+class B
+{
+ public string Name { get { return null; } }
+}
+
+class C
+{
+ public static int Main ()
+ {
+ Test (delegate () {
+ var a = new A[0];
+ var b = new B[0];
+
+ if (a != null) {
+ var r = from c in new A[0]
+ from p in new B[0]
+ where c.Header == p.Name && p.Name == typeof (string).ToString ()
+ select new { C = c, P = p };
+ }
+ });
+
+ return 0;
+ }
+
+ static void Test (Action a)
+ {
+ a ();
+ }
+}
--- /dev/null
+using System;
+
+class A
+{
+ public static int operator + (short x, A b)
+ {
+ return -1;
+ }
+
+ public static int operator - (A a)
+ {
+ return -1;
+ }
+}
+
+class B : A
+{
+ public static int operator + (int x, B d)
+ {
+ return 1;
+ }
+
+ public static int operator - (B b)
+ {
+ return 1;
+ }
+}
+
+class C : B
+{
+}
+
+public class Test
+{
+ public static int Main ()
+ {
+ var b = new B ();
+ short s = 3;
+ var res = s + b;
+
+ if (res != 1)
+ return 1;
+
+ var c = new C ();
+ if (-c != 1)
+ return 2;
+
+ return 0;
+ }
+}
\ No newline at end of file
-//
-// Sample for bug 75674
-//
using System;
-using System.Collections;
-class XX {
- static void Metodo (Exception e)
+class C
+{
+ public static int Main ()
{
- if (e is NotImplementedException){
- Console.WriteLine ("OK");
- } else {
- Console.WriteLine ("Fail");
- }
- }
-
- static IEnumerable X ()
- {
- try {
- throw new NotImplementedException ();
- } catch (Exception e){
- Metodo (e);
- }
- yield return 0;
- }
-
- static void Main ()
- {
- foreach (int a in X ()){
+ const string s = "oups";
+ if (s.Length != 4) {
+ Console.WriteLine (s.Length);
+ return 2;
}
+
+ return 0;
}
}
+++ /dev/null
-using System;
-
-public class ExceptionWithAnonMethod
-{
- public delegate void EmptyCallback();
- static string res;
-
- public static int Main()
- {
- try {
- throw new Exception("e is afraid to enter anonymous land");
- } catch(Exception e) {
- AnonHandler(delegate {
- Console.WriteLine(e.Message);
- res = e.Message;
- });
- }
- if (res == "e is afraid to enter anonymous land"){
- Console.WriteLine ("Test passed");
- return 0;
- }
- Console.WriteLine ("Test failed");
- return 1;
- }
-
- public static void AnonHandler(EmptyCallback handler)
- {
- if(handler != null) {
- handler();
- }
- }
-}
-//
-// This is a build test: checks that the compiler does not loop
-// forever endlessly with anonymous methods
-//
using System;
-using System.Collections;
-using System.Text;
- class Space
- { public int Value = -1;
+class A : IDisposable
+{
+ public A (int v)
+ {
+ }
+
+ public void Dispose ()
+ {
+ }
+}
- public delegate void DoCopy();
+class C
+{
+ int b;
+
+ delegate void D (int i);
+
+ static void Test (object arg)
+ {
+ const int a2= 9, a3 = a2, a4 = a3, a5 = a4;
+ Console.WriteLine (a5);
+
+ if (a2 > 0) {
+ bool a = false;
+ } else {
+ const bool a = false;
+ }
- public DoCopy CopyIt;
+ for (int i = 0; i < 10; ++i) {
+ Console.WriteLine (i);
+ }
+
+ for (int i = 0; i < 10; ++i) {
+ Console.WriteLine (i);
+ }
+
+ foreach (var i in new int[] { 9, 8 }) {
+ Console.WriteLine (i);
+ }
- public void Leak(bool useArray, int max)
- { DoCopy one;
+ using (A i = new A (1), i2 = new A (2), i3 = new A (3)) {
+ }
+
+ using (A i = new A (3)) {
+ }
- { int answer = 0;
- int[] work;
-
- CopyIt = delegate { Value = answer; };
- one = delegate
- { work = new int[max];
- foreach(int x in work) answer += x;
- };
- }
+ try {
+ }
+ catch (Exception o) {
+ o = null;
+ }
- one();
- }
- }
+ D action = delegate (int i) {
+ };
+ }
- class Program
- {
- static void Main(string[] args)
- {
- }
- }
+ public static int Main ()
+ {
+ Test (1);
+ return 0;
+ }
+}
\ No newline at end of file
+++ /dev/null
-using System;
-using System.Collections;
-
-public class Test
-{
- public IEnumerator GetEnumerator ()
- {
- yield return "TEST";
- try {
- int.Parse (arg);
- } catch {
- yield break;
- }
- yield return "TEST2";
- }
-
- static void Main ()
- {
- new Test ().Run ();
- }
-
- string arg;
-
- void Run ()
- {
- int i = 0;
- foreach (string s in this)
- i++;
- if (i != 1)
- throw new Exception ();
-
- arg = "1";
- i = 0;
- foreach (string s in this)
- i++;
- if (i != 2)
- throw new Exception ();
- }
-}
-
-
class X {
~X ()
{
- Console.WriteLine ("DESTRUCTOR!");
+ int id = 1;
+ Console.WriteLine ("DESTRUCTOR!" + id);
}
public static int Test1()
-delegate void TestFunc (int val);
+using System;
-class A
+class ClassMain
{
- public A(TestFunc func)
+ delegate void D (int i);
+
+ public static void Main ()
{
- func (0);
+ if (true) {
+ const bool test = false;
+ } else {
+ test = false;
+ }
+
+ D d = delegate (int test) { };
}
-}
-
-class TestClass
-{
- static int i = 1;
- static readonly A a = new A(delegate(int a) { i = a; });
-
- static int Main ()
- {
- return i;
+
+ static bool test {
+ set {
+ }
}
}
+
-using System;
-using System.Reflection;
+// Compiler options: -warnaserror
-class X {
- delegate object test (MethodInfo x);
-
- static void Main ()
- {
- DoCall (delegate(MethodInfo from) {
- return from.Invoke (null, new object[] { from });
- });
- }
-
- static void DoCall (test t)
+public class TestCase
+{
+ static int Main ()
{
+ int i = 0;
+ {
+ goto A;
+ A:
+ i += 3;
+ }
+ {
+ goto A;
+ A:
+ i *= 4;
+ }
+
+ if (i != 12)
+ return 1;
+
+ return 0;
}
}
+++ /dev/null
-using System.Collections;
-class Foo {
- static public IEnumerable foo ()
- {
- try { yield break; } catch { } finally { }
- }
- static int Main ()
- {
- int i = 0;
- foreach (object o in foo ())
- ++i;
- return i;
- }
-}
+++ /dev/null
-using System;
-using System.Collections;
-
-class Program
-{
- static public IEnumerable Empty {
- get {
- object [] os = new object [] { };
- foreach (object o in os) {
- yield return o;
- }
- }
- }
-
- static void Main()
- {
- IEnumerator enumerator = Empty.GetEnumerator();
- if (enumerator.Current == null)
- Console.WriteLine("Successful");
- enumerator.MoveNext();
- if (enumerator.Current == null)
- Console.WriteLine("Successful");
- }
-}
--- /dev/null
+using System;
+
+class C
+{
+ public enum E
+ {
+ V_0 = 10,
+ V_1 = 50,
+ V_2 = 80
+ }
+
+ public static implicit operator E (C x)
+ {
+ return E.V_2;
+ }
+
+ public static implicit operator int (C x)
+ {
+ return 1;
+ }
+
+ public static int Main ()
+ {
+ var v = new C ();
+ int i = E.V_1 - v;
+ if (i != -30)
+ return 1;
+
+ i = v - E.V_1;
+ if (i != 30)
+ return 10;
+
+ E e = E.V_1 + v;
+ if (e != (E) 51)
+ return 2;
+
+ e = v + E.V_0;
+ if (e != (E) 11)
+ return 3;
+
+ bool b = E.V_2 > v;
+ if (b)
+ return 4;
+
+ int iv = 900;
+ e = iv - E.V_1;
+ if (e != (E)850)
+ return 5;
+
+ i = v - E.V_1;
+ if (i != (int) 30)
+ return 6;
+
+ return 0;
+ }
+}
-// Test case for Bug #75934
-// Checks for duplicate field names
-
using System;
-using System.Collections;
using System.Reflection;
-class test
-{
- public IEnumerable testen (int x)
- {
- for (int i = 0;i < x; i++)
- if (i % 2 == 0) {
- int o = i;
- yield return o;
- } else {
- int o = i*2;
- yield return o;
- }
- }
-}
+class X {
+ delegate object test (MethodInfo x);
+
+ static void Main ()
+ {
+ DoCall (delegate(MethodInfo from) {
+ return from.Invoke (null, new object[] { from });
+ });
+ }
-class reflect
-{
- public static void Main (string [] args)
+ static void DoCall (test t)
{
- Hashtable ht = new Hashtable ();
- Assembly asm = Assembly.GetAssembly (typeof (test));
- foreach (Type t in asm.GetTypes ()) {
- ht.Clear ();
- foreach (FieldInfo fi in t.GetFields (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance))
- ht.Add (fi.Name, fi);
- }
}
}
-//
-// This was a bug which was triggered because I removed a routine
-// inadvertently. The routine was restored, and now the scopes
-// are initialized
-//
using System;
-using System.Collections;
-using System.Reflection;
-public class CustomDict {
- ArrayList data;
-
- public CustomDict() {
- foreach (object o in this)
- Console.WriteLine (o);
- }
-
- public IEnumerator GetEnumerator() {
- if (data != null)
- yield return 1;
- }
-}
-
-public class Tests
+public class ExceptionWithAnonMethod
{
+ public delegate void EmptyCallback();
+ static string res;
+
+ public static int Main()
+ {
+ try {
+ throw new Exception("e is afraid to enter anonymous land");
+ } catch(Exception e) {
+ AnonHandler(delegate {
+ Console.WriteLine(e.Message);
+ res = e.Message;
+ });
+ }
+ if (res == "e is afraid to enter anonymous land"){
+ Console.WriteLine ("Test passed");
+ return 0;
+ }
+ Console.WriteLine ("Test failed");
+ return 1;
+ }
- public static void Main () {
- new CustomDict ();
+ public static void AnonHandler(EmptyCallback handler)
+ {
+ if(handler != null) {
+ handler();
+ }
}
}
-using System;
-using System.Collections;
+delegate void TestFunc (int val);
-public class Test
+class A
{
- public static void Main ()
- {
- foreach (object o in new Test ())
- Console.WriteLine (o);
- }
+ public A(TestFunc func)
+ {
+ func (0);
+ }
+}
+
+class TestClass
+{
+ static int i = 1;
+ static readonly A a = new A(delegate(int a) { i = a; });
- public IEnumerator GetEnumerator ()
- {
- int i = 2;
- yield return 3;
- }
+ static int Main ()
+ {
+ return i;
+ }
}
--- /dev/null
+//
+// This is a build test: checks that the compiler does not loop
+// forever endlessly with anonymous methods
+//
+using System;
+using System.Collections;
+using System.Text;
+
+ class Space
+ { public int Value = -1;
+
+ public delegate void DoCopy();
+
+ public DoCopy CopyIt;
+
+ public void Leak(bool useArray, int max)
+ { DoCopy one;
+
+ { int answer = 0;
+ int[] work;
+
+ CopyIt = delegate { Value = answer; };
+ one = delegate
+ { work = new int[max];
+ foreach(int x in work) answer += x;
+ };
+ }
+
+ one();
+ }
+ }
+
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ }
+ }
--- /dev/null
+//
+// Sample for bug 75674
+//
+using System;
+using System.Collections;
+
+class XX {
+ static void Metodo (Exception e)
+ {
+ if (e is NotImplementedException){
+ Console.WriteLine ("OK");
+ } else {
+ Console.WriteLine ("Fail");
+ }
+ }
+
+ static IEnumerable X ()
+ {
+ try {
+ throw new NotImplementedException ();
+ } catch (Exception e){
+ Metodo (e);
+ }
+ yield return 0;
+ }
+
+ static void Main ()
+ {
+ foreach (int a in X ()){
+ }
+ }
+}
--- /dev/null
+using System;
+using System.Collections;
+
+public class Test
+{
+ public IEnumerator GetEnumerator ()
+ {
+ yield return "TEST";
+ try {
+ int.Parse (arg);
+ } catch {
+ yield break;
+ }
+ yield return "TEST2";
+ }
+
+ static void Main ()
+ {
+ new Test ().Run ();
+ }
+
+ string arg;
+
+ void Run ()
+ {
+ int i = 0;
+ foreach (string s in this)
+ i++;
+ if (i != 1)
+ throw new Exception ();
+
+ arg = "1";
+ i = 0;
+ foreach (string s in this)
+ i++;
+ if (i != 2)
+ throw new Exception ();
+ }
+}
+
+
--- /dev/null
+using System.Collections;
+class Foo {
+ static public IEnumerable foo ()
+ {
+ try { yield break; } catch { } finally { }
+ }
+ static int Main ()
+ {
+ int i = 0;
+ foreach (object o in foo ())
+ ++i;
+ return i;
+ }
+}
--- /dev/null
+using System;
+using System.Collections;
+
+class Program
+{
+ static public IEnumerable Empty {
+ get {
+ object [] os = new object [] { };
+ foreach (object o in os) {
+ yield return o;
+ }
+ }
+ }
+
+ static void Main()
+ {
+ IEnumerator enumerator = Empty.GetEnumerator();
+ if (enumerator.Current == null)
+ Console.WriteLine("Successful");
+ enumerator.MoveNext();
+ if (enumerator.Current == null)
+ Console.WriteLine("Successful");
+ }
+}
--- /dev/null
+// Test case for Bug #75934
+// Checks for duplicate field names
+
+using System;
+using System.Collections;
+using System.Reflection;
+
+class test
+{
+ public IEnumerable testen (int x)
+ {
+ for (int i = 0;i < x; i++)
+ if (i % 2 == 0) {
+ int o = i;
+ yield return o;
+ } else {
+ int o = i*2;
+ yield return o;
+ }
+ }
+}
+
+class reflect
+{
+ public static void Main (string [] args)
+ {
+ Hashtable ht = new Hashtable ();
+ Assembly asm = Assembly.GetAssembly (typeof (test));
+ foreach (Type t in asm.GetTypes ()) {
+ ht.Clear ();
+ foreach (FieldInfo fi in t.GetFields (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance))
+ ht.Add (fi.Name, fi);
+ }
+ }
+}
--- /dev/null
+using System;
+using System.Collections;
+
+public class Test
+{
+ public static void Main ()
+ {
+ foreach (object o in new Test ())
+ Console.WriteLine (o);
+ }
+
+ public IEnumerator GetEnumerator ()
+ {
+ int i = 2;
+ yield return 3;
+ }
+}
--- /dev/null
+//
+// This was a bug which was triggered because I removed a routine
+// inadvertently. The routine was restored, and now the scopes
+// are initialized
+//
+using System;
+using System.Collections;
+using System.Reflection;
+
+public class CustomDict {
+ ArrayList data;
+
+ public CustomDict() {
+ foreach (object o in this)
+ Console.WriteLine (o);
+ }
+
+ public IEnumerator GetEnumerator() {
+ if (data != null)
+ yield return 1;
+ }
+}
+
+public class Tests
+{
+
+ public static void Main () {
+ new CustomDict ();
+ }
+}
--- /dev/null
+using System;
+using System.Collections;
+
+class X {
+ delegate void A ();
+
+ static IEnumerable GetIt (int [] args)
+ {
+ foreach (int arg in args) {
+ Console.WriteLine ("OUT: {0}", arg);
+ A a = delegate {
+ Console.WriteLine ("arg: {0}", arg);
+ return;
+ };
+ a ();
+ yield return arg;
+ }
+ }
+
+ static int Main ()
+ {
+ int total = 0;
+ foreach (int i in GetIt (new int [] { 1, 2, 3})){
+ Console.WriteLine ("Got: " + i);
+ total += i;
+ }
+
+ if (total != 6)
+ return 1;
+
+ return 0;
+ }
+}
--- /dev/null
+using System;
+using System.Collections;
+
+public class Test
+{
+ public static void Main ()
+ {
+ foreach (object o in new Test ())
+ Console.WriteLine (o);
+ }
+
+ public IEnumerator GetEnumerator ()
+ {
+ foreach (int i in new ArrayList ())
+ yield return i;
+ }
+}
<size>127</size>
</method>
<method name="Void <Invoke_5>m__31(System.Dynamic.InvokeBinder, System.Object[])">
- <size>127</size>
+ <size>91</size>
</method>
<method name="Void <Invoke_5>m__32(System.Object)">
- <size>1</size>
+ <size>93</size>
+ </method>
+ </type>
+ <type name="AssertDynamicObject+<GetFakeMetaObject>c__AnonStorey0">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Tester+<BinaryAddChecked_2>c__AnonStorey1">
+ <method name="System.Object <>m__A()">
+ <size>91</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Tester+<GetIndex_3>c__AnonStorey2">
+ <method name="Void <>m__2C(System.Dynamic.GetIndexBinder, System.Object[])">
+ <size>92</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Tester+<InvokeMember_2>c__AnonStorey3">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Tester+<InvokeMember_6>c__AnonStorey4">
+ <method name="Void .ctor()">
+ <size>7</size>
</method>
- <method name="Void <InvokeMember_1>m__33(System.Dynamic.InvokeMemberBinder, System.Object[])">
+ </type>
+ <type name="Tester+<SetIndex_3>c__AnonStorey5">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Tester">
+ <method name="Void Invoke_6(System.Object, DynamicObjectMock)">
+ <size>124</size>
+ </method>
+ <method name="Void <Invoke_6>m__33(System.Dynamic.InvokeBinder, System.Object[])">
+ <size>92</size>
+ </method>
+ <method name="Void <InvokeMember_1>m__34(System.Dynamic.InvokeMemberBinder, System.Object[])">
<size>110</size>
</method>
- <method name="Void <InvokeMember_3>m__35(System.Dynamic.InvokeMemberBinder, System.Object[])">
+ <method name="Void <InvokeMember_3>m__36(System.Dynamic.InvokeMemberBinder, System.Object[])">
<size>111</size>
</method>
- <method name="Void <InvokeMember_4>m__36(System.Dynamic.InvokeMemberBinder, System.Object[])">
+ <method name="Void <InvokeMember_4>m__37(System.Dynamic.InvokeMemberBinder, System.Object[])">
<size>110</size>
</method>
- <method name="Void <InvokeMember_7>m__38(System.Dynamic.InvokeMemberBinder, System.Object[])">
+ <method name="Void <InvokeMember_7>m__39(System.Dynamic.InvokeMemberBinder, System.Object[])">
<size>90</size>
</method>
- <method name="Void <SetIndex_1>m__39(System.Dynamic.SetIndexBinder, System.Object[], System.Object)">
+ <method name="Void <SetIndex_1>m__3A(System.Dynamic.SetIndexBinder, System.Object[], System.Object)">
<size>124</size>
</method>
- <method name="Void <SetIndex_2>m__3A(System.Dynamic.SetIndexBinder, System.Object[], System.Object)">
+ <method name="Void <SetIndex_2>m__3B(System.Dynamic.SetIndexBinder, System.Object[], System.Object)">
<size>139</size>
</method>
- <method name="Void <SetMember_1>m__3C(System.Dynamic.SetMemberBinder, System.Object)">
+ <method name="Void <SetMember_1>m__3D(System.Dynamic.SetMemberBinder, System.Object)">
<size>101</size>
</method>
- <method name="System.Object <UnaryPlus_1>m__3D(System.Dynamic.UnaryOperationBinder)">
+ <method name="System.Object <UnaryPlus_1>m__3E(System.Dynamic.UnaryOperationBinder)">
<size>47</size>
</method>
- <method name="System.Object <UnaryMinus_1>m__3E(System.Dynamic.UnaryOperationBinder)">
+ <method name="System.Object <UnaryMinus_1>m__3F(System.Dynamic.UnaryOperationBinder)">
<size>47</size>
</method>
- <method name="System.Object <UnaryNot_1>m__3F(System.Dynamic.UnaryOperationBinder)">
+ <method name="System.Object <UnaryNot_1>m__40(System.Dynamic.UnaryOperationBinder)">
<size>47</size>
</method>
- <method name="System.Object <UnaryOnesComplement_1>m__40(System.Dynamic.UnaryOperationBinder)">
+ <method name="System.Object <UnaryOnesComplement_1>m__41(System.Dynamic.UnaryOperationBinder)">
<size>47</size>
</method>
- <method name="System.Object <UnaryDecrement_1>m__41(System.Dynamic.UnaryOperationBinder)">
+ <method name="System.Object <UnaryDecrement_1>m__42(System.Dynamic.UnaryOperationBinder)">
<size>47</size>
</method>
- <method name="System.Object <UnaryDecrement_2>m__42(System.Dynamic.UnaryOperationBinder)">
+ <method name="System.Object <UnaryDecrement_2>m__43(System.Dynamic.UnaryOperationBinder)">
<size>51</size>
</method>
- <method name="System.Object <UnaryIncrement_1>m__43(System.Dynamic.UnaryOperationBinder)">
+ <method name="System.Object <UnaryIncrement_1>m__44(System.Dynamic.UnaryOperationBinder)">
<size>47</size>
</method>
- <method name="System.Object <UnaryIncrement_2>m__44(System.Dynamic.UnaryOperationBinder)">
+ <method name="System.Object <UnaryIncrement_2>m__45(System.Dynamic.UnaryOperationBinder)">
<size>51</size>
</method>
- <method name="System.Object <UnaryIsFalse_1>m__45(System.Dynamic.UnaryOperationBinder)">
+ <method name="System.Object <UnaryIsFalse_1>m__46(System.Dynamic.UnaryOperationBinder)">
<size>52</size>
</method>
- <method name="Void <UnaryIsFalse_1>m__46(System.Dynamic.BinaryOperationBinder, System.Object)">
+ <method name="Void <UnaryIsFalse_1>m__47(System.Dynamic.BinaryOperationBinder, System.Object)">
<size>68</size>
</method>
- <method name="System.Object <UnaryIsFalse_2>m__47(System.Dynamic.UnaryOperationBinder)">
+ <method name="System.Object <UnaryIsFalse_2>m__48(System.Dynamic.UnaryOperationBinder)">
<size>52</size>
</method>
- <method name="Void <UnaryIsFalse_2>m__48(System.Dynamic.BinaryOperationBinder, System.Object)">
+ <method name="Void <UnaryIsFalse_2>m__49(System.Dynamic.BinaryOperationBinder, System.Object)">
<size>68</size>
</method>
- <method name="System.Object <UnaryIsFalse_3>m__49(System.Dynamic.UnaryOperationBinder)">
+ <method name="System.Object <UnaryIsFalse_3>m__4A(System.Dynamic.UnaryOperationBinder)">
<size>52</size>
</method>
- <method name="Void <UnaryIsFalse_3>m__4A(System.Dynamic.BinaryOperationBinder, System.Object)">
+ <method name="Void <UnaryIsFalse_3>m__4B(System.Dynamic.BinaryOperationBinder, System.Object)">
<size>67</size>
</method>
- <method name="System.Object <UnaryIsTrue_1>m__4B(System.Dynamic.UnaryOperationBinder)">
+ <method name="System.Object <UnaryIsTrue_1>m__4C(System.Dynamic.UnaryOperationBinder)">
<size>52</size>
</method>
- <method name="System.Object <UnaryIsTrue_2>m__4C(System.Dynamic.UnaryOperationBinder)">
+ <method name="System.Object <UnaryIsTrue_2>m__4D(System.Dynamic.UnaryOperationBinder)">
<size>52</size>
</method>
- <method name="Void <UnaryIsTrue_2>m__4D(System.Dynamic.BinaryOperationBinder, System.Object)">
+ <method name="Void <UnaryIsTrue_2>m__4E(System.Dynamic.BinaryOperationBinder, System.Object)">
<size>68</size>
</method>
- <method name="Boolean <Main>m__4E(System.Reflection.MethodInfo)">
+ <method name="Boolean <Main>m__4F(System.Reflection.MethodInfo)">
<size>12</size>
</method>
- <method name="System.String <Main>m__4F(System.Reflection.MethodInfo)">
+ <method name="System.String <Main>m__50(System.Reflection.MethodInfo)">
<size>7</size>
</method>
- <method name="Boolean <Main>m__50(System.Reflection.MethodInfo)">
+ <method name="Boolean <Main>m__51(System.Reflection.MethodInfo)">
<size>7</size>
</method>
- <method name="Boolean <Main>m__51(Boolean)">
+ <method name="Boolean <Main>m__52(Boolean)">
<size>5</size>
</method>
</type>
- <type name="AssertDynamicObject+<GetFakeMetaObject>c__AnonStorey0">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- </type>
- <type name="Tester+<BinaryAddChecked_2>c__AnonStorey1">
- <method name="System.Object <>m__A()">
- <size>91</size>
- </method>
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- </type>
- <type name="Tester+<GetIndex_3>c__AnonStorey2">
- <method name="Void <>m__2C(System.Dynamic.GetIndexBinder, System.Object[])">
- <size>92</size>
- </method>
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- </type>
<type name="Tester+<InvokeMember_2>c__AnonStorey3">
- <method name="Void <>m__34(System.Dynamic.InvokeMemberBinder, System.Object[])">
+ <method name="Void <>m__35(System.Dynamic.InvokeMemberBinder, System.Object[])">
<size>109</size>
</method>
- <method name="Void .ctor()">
- <size>7</size>
- </method>
</type>
<type name="Tester+<InvokeMember_6>c__AnonStorey4">
- <method name="Void <>m__37(System.Dynamic.InvokeMemberBinder, System.Object[])">
+ <method name="Void <>m__38(System.Dynamic.InvokeMemberBinder, System.Object[])">
<size>119</size>
</method>
- <method name="Void .ctor()">
- <size>7</size>
- </method>
</type>
<type name="Tester+<SetIndex_3>c__AnonStorey5">
- <method name="Void <>m__3B(System.Dynamic.SetIndexBinder, System.Object[], System.Object)">
+ <method name="Void <>m__3C(System.Dynamic.SetIndexBinder, System.Object[], System.Object)">
<size>119</size>
</method>
- <method name="Void .ctor()">
- <size>7</size>
- </method>
</type>
- <type name="Tester+<InvokeMember_3>c__DynamicSite0+Container0">
+ <type name="Tester+<InvokeMember_3>c__DynamicSite30+Container0">
<method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, Int32 ByRef)">
<size>0</size>
</method>
<size>0</size>
</method>
</type>
- <type name="Tester+<InvokeMember_4>c__DynamicSite0+Container0">
+ <type name="Tester+<InvokeMember_4>c__DynamicSite31+Container0">
<method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, Int32 ByRef)">
<size>0</size>
</method>
<size>1370</size>
</method>
<method name="Void AddNullableTest()">
- <size>2277</size>
+ <size>2278</size>
</method>
<method name="Void AddEnumTest()">
<size>874</size>
<size>670</size>
</method>
<method name="Void AndTestNullable()">
- <size>1807</size>
+ <size>1808</size>
</method>
<method name="Void AndAssignedTest()">
<size>911</size>
<size>927</size>
</method>
<method name="Void DivideNullableTest()">
- <size>2305</size>
+ <size>2306</size>
</method>
<method name="Void DivideCheckedTest()">
<size>1</size>
<size>1941</size>
</method>
<method name="Void EqualNullableTest()">
- <size>3032</size>
+ <size>3033</size>
</method>
<method name="Void EqualEnumTest()">
<size>1047</size>
<size>1546</size>
</method>
<method name="Void ExclusiveOrNullableTest()">
- <size>1815</size>
+ <size>1816</size>
</method>
<method name="Void ExclusiveOrTestEnum()">
<size>692</size>
<size>1983</size>
</method>
<method name="Void GreaterThanNullableTest()">
- <size>2405</size>
+ <size>2406</size>
</method>
<method name="Void GreaterThanEnumTest()">
<size>1047</size>
<size>1983</size>
</method>
<method name="Void GreaterThanEqualNullableTest()">
- <size>2405</size>
+ <size>2406</size>
</method>
<method name="Void GreaterThanEqualEnumTest()">
<size>1047</size>
<size>1983</size>
</method>
<method name="Void LessThanNullableTest()">
- <size>2419</size>
+ <size>2420</size>
</method>
<method name="Void LessThanEnumTest()">
<size>1047</size>
<size>1983</size>
</method>
<method name="Void LessThanOrEqualNullableTest()">
- <size>2405</size>
+ <size>2406</size>
</method>
<method name="Void LessThanOrEqualEnumTest()">
<size>1047</size>
<size>923</size>
</method>
<method name="Void ModuloNullableTest()">
- <size>2293</size>
+ <size>2294</size>
</method>
<method name="Void ModuloAssignTest()">
<size>1137</size>
<size>1167</size>
</method>
<method name="Void MultiplyNullableTest()">
- <size>2293</size>
+ <size>2294</size>
</method>
<method name="Void MultiplyCheckedTest()">
<size>343</size>
<size>1945</size>
</method>
<method name="Void NotEqualNullableTest()">
- <size>3032</size>
+ <size>3033</size>
</method>
<method name="Void NotEqualEnumTest()">
<size>1047</size>
<size>674</size>
</method>
<method name="Void OrTestNullable()">
- <size>1591</size>
+ <size>1592</size>
</method>
<method name="Void OrAssignedTest()">
<size>911</size>
<size>1132</size>
</method>
<method name="Void SubtractNullableTest()">
- <size>2288</size>
+ <size>2289</size>
</method>
<method name="Void SubtractEnumTest()">
<size>896</size>
<size>26</size>
</method>
<method name="Boolean MoveNext()">
- <size>147</size>
+ <size>145</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>101</size>
</method>
</type>
- <type name="Tester+<InvokeMember>c__DynamicSite0+Container0">
+ <type name="Tester+<InvokeMember>c__DynamicSite2+Container0">
<method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, Int32 ByRef, System.String ByRef)">
<size>0</size>
</method>
<test name="dtest-008.cs">
<type name="Disposable">
<method name="Void Dispose()">
- <size>15</size>
+ <size>13</size>
</method>
<method name="Void Test()">
<size>1</size>
</type>
<type name="Test">
<method name="Boolean ForEachTest()">
- <size>512</size>
+ <size>404</size>
</method>
<method name="Boolean UsingTest()">
- <size>862</size>
+ <size>335</size>
</method>
<method name="Int32 Main()">
- <size>57</size>
+ <size>71</size>
</method>
<method name="Void .ctor()">
<size>7</size>
</method>
<method name="Boolean ForEachTest_2()">
- <size>300</size>
+ <size>299</size>
+ </method>
+ <method name="Boolean ForEachTest_3()">
+ <size>219</size>
</method>
</type>
</test>
</type>
<type name="DynamicAssignments">
<method name="Int32 Main()">
- <size>102</size>
+ <size>130</size>
</method>
<method name="System.Object <Main>m__0(System.Object)">
<size>2</size>
</type>
<type name="Test">
<method name="Int32 Main()">
- <size>194</size>
+ <size>360</size>
</method>
<method name="Void .ctor()">
<size>7</size>
</method>
</type>
+ <type name="C">
+ <method name="Int32 M2(System.Object)">
+ <size>2</size>
+ </method>
+ <method name="Int32 M2(Byte)">
+ <size>2</size>
+ </method>
+ </type>
</test>
<test name="dtest-028.cs">
<type name="C">
</type>
<type name="Test">
<method name="Int32 Main()">
- <size>225</size>
+ <size>236</size>
</method>
<method name="Void .ctor()">
<size>7</size>
<size>0</size>
</method>
</type>
+ <type name="Test">
+ <method name="Void M(System.Object[] ByRef, System.Object[] ByRef)">
+ <size>1</size>
+ </method>
+ </type>
</test>
<test name="dtest-029.cs">
<type name="C">
</method>
</type>
</test>
+ <test name="dtest-030.cs">
+ <type name="A`1[T]">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="B">
+ <method name="Void M1[T](T)">
+ <size>1</size>
+ </method>
+ <method name="Void M2[T,U](T, U)">
+ <size>1</size>
+ </method>
+ <method name="Void M3[T,U](T, A`1[U])">
+ <size>1</size>
+ </method>
+ <method name="Void M4[T,U](T, IEquatable`1)">
+ <size>1</size>
+ </method>
+ <method name="Void Main()">
+ <size>576</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="dtest-collectioninit-01.cs">
+ <type name="Test">
+ <method name="Int32 Main()">
+ <size>475</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Test+Wrap">
+ <method name="System.Object get_Numbers()">
+ <size>7</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>18</size>
+ </method>
+ </type>
+ </test>
<test name="dtest-error-01.cs">
<type name="Helper">
<method name="Int32* Foo(Int32)">
</method>
</type>
</test>
+ <test name="dtest-etree-01.cs">
+ <type name="C">
+ <method name="Void Conv1(System.Linq.Expressions.Expression`1[System.Func`2[System.Object,System.Object]])">
+ <size>1</size>
+ </method>
+ <method name="Void Conv2(System.Linq.Expressions.Expression`1[System.Func`2[System.Object,System.Object]])">
+ <size>1</size>
+ </method>
+ <method name="Void Main()">
+ <size>382</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
<test name="dtest-implicitarray-01.cs">
<type name="C">
<method name="Void Method()">
<size>7</size>
</method>
<method name="Void Main(System.String[])">
- <size>203</size>
+ <size>204</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>107</size>
+ <size>105</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Void Main(System.String[])">
- <size>208</size>
+ <size>209</size>
</method>
<method name="Void TestPairLog()">
- <size>182</size>
+ <size>184</size>
</method>
</type>
<type name="Pair`2[T,U]">
<method name="Void .ctor()">
<size>7</size>
</method>
- <method name="Void Main()">
- <size>66</size>
- </method>
- <method name="IEnumerator GetEnumerator()">
- <size>8</size>
- </method>
</type>
- <type name="Test+<GetEnumerator>c__Iterator0">
- <method name="Void .ctor()">
- <size>7</size>
+ <type name="S">
+ <method name="Void System.IDisposable.Dispose()">
+ <size>13</size>
</method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
+ <method name="Void Dispose()">
+ <size>6</size>
</method>
- <method name="Boolean MoveNext()">
- <size>187</size>
+ </type>
+ <type name="C">
+ <method name="Void System.IDisposable.Dispose()">
+ <size>1</size>
</method>
<method name="Void Dispose()">
- <size>64</size>
- </method>
- <method name="Void Reset()">
<size>6</size>
</method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <method name="Void .ctor()">
<size>7</size>
</method>
</type>
+ <type name="Test">
+ <method name="Int32 Main()">
+ <size>209</size>
+ </method>
+ <method name="Void GenMethod[T](T)">
+ <size>33</size>
+ </method>
+ </type>
</test>
<test name="gtest-079.cs">
<type name="A.ArrayList`1[T]">
<size>12</size>
</method>
<method name="Boolean MoveNext()">
- <size>75</size>
+ <size>73</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>14</size>
</method>
<method name="Void Insert(Int32, T)">
- <size>256</size>
+ <size>255</size>
</method>
<method name="Void RemoveAt(Int32)">
<size>113</size>
<size>7</size>
</method>
<method name="LinkedList`1[T] op_Addition(LinkedList`1[T], LinkedList`1[T])">
- <size>123</size>
+ <size>120</size>
</method>
</type>
<type name="LinkedList`1+Node[T]">
<size>7</size>
</method>
<method name="Void Main(System.String[])">
- <size>201</size>
+ <size>197</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Void Main(System.String[])">
- <size>120</size>
+ <size>119</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Void Main(System.String[])">
- <size>846</size>
+ <size>847</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Void Main(System.String[])">
- <size>1330</size>
+ <size>1332</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Void Main(System.String[])">
- <size>112</size>
+ <size>113</size>
</method>
</type>
<type name="Foo`1[T]">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>134</size>
+ <size>136</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>1599</size>
+ <size>1605</size>
</method>
</type>
</test>
<size>12</size>
</method>
<method name="Boolean MoveNext()">
- <size>91</size>
+ <size>89</size>
</method>
<method name="Void Dispose()">
<size>8</size>
</method>
</type>
</test>
- <test name="gtest-165.cs">
- <type name="X">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="IEnumerable GetIt(System.Int32[])">
- <size>30</size>
- </method>
- <method name="Int32 Main()">
- <size>119</size>
- </method>
- </type>
- <type name="X+A">
- <method name="Void .ctor(Object, IntPtr)">
- <size>0</size>
- </method>
- <method name="Void Invoke()">
- <size>0</size>
- </method>
- <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
- <size>0</size>
- </method>
- <method name="Void EndInvoke(IAsyncResult)">
- <size>0</size>
- </method>
- </type>
- <type name="X+<GetIt>c__Iterator0">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
- <size>7</size>
- </method>
- <method name="Boolean MoveNext()">
- <size>201</size>
- </method>
- <method name="Void <>m__0()">
- <size>22</size>
- </method>
- <method name="Void Dispose()">
- <size>8</size>
- </method>
- <method name="Void Reset()">
- <size>6</size>
- </method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
- <size>40</size>
- </method>
- </type>
- <type name="<PrivateImplementationDetails>">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- </type>
- </test>
<test name="gtest-166.cs">
<type name="C">
<method name="Void .ctor()">
<size>7</size>
</method>
<method name="Int32 Test()">
- <size>324</size>
+ <size>323</size>
</method>
<method name="Int32 Main()">
<size>6</size>
<size>1</size>
</method>
<method name="Int32 Main()">
- <size>186</size>
+ <size>184</size>
</method>
</type>
<type name="X+<>c__Iterator0">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>126</size>
+ <size>124</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>145</size>
+ <size>143</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>84</size>
+ <size>82</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>70</size>
+ <size>68</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>82</size>
+ <size>80</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>82</size>
+ <size>80</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>12</size>
</method>
<method name="Boolean MoveNext()">
- <size>75</size>
+ <size>73</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>207</size>
+ <size>205</size>
</method>
<method name="Void Dispose()">
<size>62</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>118</size>
+ <size>116</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>11</size>
</method>
<method name="Void Run()">
- <size>151</size>
+ <size>147</size>
</method>
</type>
<type name="Test+<GetEnumerator>c__Iterator0">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>129</size>
+ <size>127</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>1</size>
</method>
<method name="Void Main()">
- <size>163</size>
+ <size>162</size>
</method>
<method name="Void f6(ParamEnum)">
<size>1</size>
<size>12</size>
</method>
<method name="Boolean MoveNext()">
- <size>80</size>
+ <size>78</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>136</size>
</method>
<method name="Int32 Test(System.Type, System.Type[])">
- <size>434</size>
+ <size>425</size>
</method>
<method name="Int32 Test()">
<size>532</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>69</size>
+ <size>67</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>106</size>
+ <size>104</size>
</method>
<method name="Void Dispose()">
<size>46</size>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>220</size>
+ <size>222</size>
</method>
</type>
<type name="MyType">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>168</size>
+ <size>169</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>234</size>
+ <size>235</size>
</method>
</type>
</test>
<size>21</size>
</method>
</type>
+ <type name="A`1[T]">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="ConditionalParsing">
+ <method name="Void Test_11()">
+ <size>7</size>
+ </method>
+ </type>
</test>
<test name="gtest-410.cs">
<type name="Program">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>173</size>
+ <size>174</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>258</size>
+ <size>261</size>
</method>
</type>
</test>
<test name="gtest-514.cs">
<type name="test2.Test`3[T,U,V]">
<method name="Void Method()">
- <size>128</size>
+ <size>127</size>
</method>
<method name="Void .ctor()">
<size>7</size>
</method>
</type>
</test>
+ <test name="gtest-536.cs">
+ <type name="Test">
+ <method name="Void Main()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Test+Expression`1[TDelegate]">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Test+Expression">
+ <method name="Void Test()">
+ <size>1</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="gtest-538.cs">
+ <type name="S">
+ <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+ <size>6</size>
+ </method>
+ <method name="IEnumerator`1 GetEnumerator()">
+ <size>15</size>
+ </method>
+ <method name="Void .ctor(Int32)">
+ <size>1</size>
+ </method>
+ </type>
+ <type name="S2">
+ <method name="IEnumerator`1 GetEnumerator()">
+ <size>15</size>
+ </method>
+ </type>
+ <type name="Enumerator`1[T]">
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>6</size>
+ </method>
+ <method name="T get_Current()">
+ <size>6</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>2</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>13</size>
+ </method>
+ </type>
+ <type name="MySystem">
+ <method name="Int32 Main()">
+ <size>182</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="gtest-539.cs">
+ <type name="S">
+ <method name="Int32 get_ID()">
+ <size>7</size>
+ </method>
+ <method name="Void set_ID(Int32)">
+ <size>8</size>
+ </method>
+ </type>
+ <type name="C">
+ <method name="C op_Explicit(S)">
+ <size>11</size>
+ </method>
+ <method name="C op_Explicit(Nullable`1)">
+ <size>39</size>
+ </method>
+ <method name="Void .ctor(Int32)">
+ <size>14</size>
+ </method>
+ </type>
+ <type name="Test">
+ <method name="Int32 Main()">
+ <size>79</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
<test name="gtest-anon-1.cs">
<type name="X">
<method name="Void .ctor()">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>110</size>
+ <size>108</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>26</size>
</method>
<method name="Int32 Main()">
- <size>577</size>
+ <size>575</size>
</method>
</type>
<type name="Test+<For>c__AnonStorey0`1[T]">
<size>33</size>
</method>
<method name="System.String Implode[TSource](IEnumerable`1, System.String, System.Action`2[System.Text.StringBuilder,TSource])">
- <size>128</size>
+ <size>125</size>
</method>
</type>
<type name="Test">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>69</size>
+ <size>67</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>98</size>
+ <size>96</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Void Invoke(SomeGenericClass`1+SomeHandlerType[SomeType])">
- <size>1</size>
+ <size>7</size>
</method>
<method name="Void FailsToCompile()">
<size>19</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>180</size>
+ <size>178</size>
</method>
<method name="Void Dispose()">
<size>66</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>65</size>
+ <size>63</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>98</size>
+ <size>96</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>83</size>
</method>
<method name="Int32 Main()">
- <size>534</size>
+ <size>528</size>
</method>
</type>
<type name="Test+Wrap">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>276</size>
+ <size>274</size>
</method>
<method name="System.Int64[] GetValues()">
<size>18</size>
<size>40</size>
</method>
<method name="Boolean MoveNext()">
- <size>108</size>
+ <size>106</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>52</size>
</method>
<method name="Boolean MoveNext()">
- <size>295</size>
+ <size>293</size>
</method>
<method name="Void Dispose()">
<size>62</size>
<test name="gtest-etree-20.cs">
<type name="S">
<method name="Int32 Main()">
- <size>215</size>
+ <size>216</size>
</method>
</type>
<type name="A">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>1243</size>
+ <size>1234</size>
</method>
</type>
<type name="Test+Point">
<size>12</size>
</method>
<method name="Boolean MoveNext()">
- <size>136</size>
+ <size>134</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>196</size>
+ <size>194</size>
</method>
<method name="Void Dispose()">
<size>62</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>224</size>
+ <size>222</size>
</method>
<method name="Void Dispose()">
<size>57</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>187</size>
+ <size>185</size>
</method>
<method name="Void Dispose()">
<size>62</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>184</size>
+ <size>181</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>187</size>
+ <size>185</size>
</method>
<method name="Void Dispose()">
<size>57</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>84</size>
+ <size>82</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>130</size>
+ <size>128</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>52</size>
</method>
<method name="Boolean MoveNext()">
- <size>103</size>
+ <size>101</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>150</size>
+ <size>143</size>
</method>
</type>
<type name="Collection`1+<GetEnumerator>c__Iterator0[T]">
<size>12</size>
</method>
<method name="Boolean MoveNext()">
- <size>176</size>
+ <size>174</size>
</method>
<method name="Void Dispose()">
<size>57</size>
<size>40</size>
</method>
<method name="Boolean MoveNext()">
- <size>117</size>
+ <size>115</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>52</size>
</method>
<method name="Boolean MoveNext()">
- <size>205</size>
+ <size>215</size>
</method>
<method name="Void Dispose()">
- <size>64</size>
+ <size>76</size>
</method>
<method name="Void Reset()">
<size>6</size>
<size>23</size>
</method>
<method name="Int32 Main()">
- <size>133</size>
+ <size>135</size>
</method>
<method name="Int32 <get_BaseM>__BaseCallProxy0()">
<size>7</size>
<size>40</size>
</method>
<method name="Boolean MoveNext()">
- <size>75</size>
+ <size>73</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>40</size>
</method>
<method name="Boolean MoveNext()">
- <size>86</size>
+ <size>84</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>40</size>
</method>
<method name="Boolean MoveNext()">
- <size>181</size>
+ <size>179</size>
</method>
<method name="Void Dispose()">
<size>62</size>
<size>32</size>
</method>
<method name="TR Sum[TA,TR](IEnumerable`1, System.Func`3[TR,TA,TR])">
- <size>122</size>
+ <size>123</size>
</method>
</type>
<type name="Repro">
</method>
</type>
</test>
+ <test name="gtest-lambda-26.cs">
+ <type name="C">
+ <method name="Void Main()">
+ <size>35</size>
+ </method>
+ <method name="Void Execute(System.Action)">
+ <size>1</size>
+ </method>
+ <method name="Void <Main>m__0()">
+ <size>1</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
<test name="gtest-linq-01.cs">
<type name="from.C">
<method name="Void .ctor()">
<size>7</size>
</method>
<method name="Void Main()">
- <size>2205</size>
+ <size>2180</size>
</method>
<method name="Void Foo(Int32, Boolean)">
<size>11</size>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>509</size>
+ <size>507</size>
</method>
<method name="Int32 <Main>m__0(Int32)">
<size>2</size>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>561</size>
+ <size>559</size>
</method>
</type>
<type name="<PrivateImplementationDetails>">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>410</size>
+ <size>408</size>
</method>
</type>
<type name="<>__AnonType0`2[<i>__T,<u>__T]">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>754</size>
+ <size>748</size>
</method>
</type>
<type name="<>__AnonType0`2[<i1>__T,<i2>__T]">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>912</size>
+ <size>911</size>
</method>
</type>
<type name="<>__AnonType0`1[<Result>__T]">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>729</size>
+ <size>734</size>
</method>
</type>
<type name="<>__AnonType0`2[<a>__T,<ab>__T]">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>86</size>
+ <size>84</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>159</size>
+ <size>157</size>
</method>
<method name="Int32 <Main>m__0(Int32)">
<size>2</size>
</type>
<type name="OrderByBugExample.Program">
<method name="Int32 Main()">
- <size>351</size>
+ <size>345</size>
</method>
<method name="System.String <Main>m__0(OrderByBugExample.Foo)">
<size>7</size>
</method>
</type>
</test>
+ <test name="gtest-linq-25.cs">
+ <type name="A">
+ <method name="System.String get_Header()">
+ <size>2</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="B">
+ <method name="System.String get_Name()">
+ <size>2</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="C">
+ <method name="Int32 Main()">
+ <size>36</size>
+ </method>
+ <method name="Void Test(System.Action)">
+ <size>7</size>
+ </method>
+ <method name="Void <Main>m__0()">
+ <size>159</size>
+ </method>
+ <method name="IEnumerable`1 <Main>m__1(A)">
+ <size>7</size>
+ </method>
+ <method name="<>__AnonType0`2[A,B] <Main>m__2(A, B)">
+ <size>8</size>
+ </method>
+ <method name="Boolean <Main>m__3(<>__AnonType0`2[A,B])">
+ <size>67</size>
+ </method>
+ <method name="<>__AnonType1`2[A,B] <Main>m__4(<>__AnonType0`2[A,B])">
+ <size>18</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="<>__AnonType0`2[<c>__T,<p>__T]">
+ <method name="<c>__T get_c()">
+ <size>7</size>
+ </method>
+ <method name="<p>__T get_p()">
+ <size>7</size>
+ </method>
+ <method name="Boolean Equals(System.Object)">
+ <size>69</size>
+ </method>
+ <method name="Int32 GetHashCode()">
+ <size>86</size>
+ </method>
+ <method name="System.String ToString()">
+ <size>142</size>
+ </method>
+ <method name="Void .ctor(<c>__T, <p>__T)">
+ <size>21</size>
+ </method>
+ </type>
+ <type name="<>__AnonType1`2[<C>__T,<P>__T]">
+ <method name="<C>__T get_C()">
+ <size>7</size>
+ </method>
+ <method name="<P>__T get_P()">
+ <size>7</size>
+ </method>
+ <method name="Boolean Equals(System.Object)">
+ <size>69</size>
+ </method>
+ <method name="Int32 GetHashCode()">
+ <size>86</size>
+ </method>
+ <method name="System.String ToString()">
+ <size>142</size>
+ </method>
+ <method name="Void .ctor(<C>__T, <P>__T)">
+ <size>21</size>
+ </method>
+ </type>
+ </test>
<test name="gtest-named-01.cs">
<type name="C">
<method name="Int32 Test(Int32, Int32, System.String)">
<size>80</size>
</method>
<method name="Void Main()">
- <size>540</size>
+ <size>561</size>
</method>
<method name="Void .ctor()">
<size>7</size>
<size>7</size>
</method>
<method name="Void ExtraTst()">
- <size>12</size>
+ <size>10</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>99</size>
+ <size>101</size>
</method>
</type>
</test>
<size>33</size>
</method>
<method name="Int32 test5(Single ByRef, Int64)">
- <size>75</size>
+ <size>73</size>
</method>
<method name="Int32 test6(Single ByRef)">
<size>10</size>
<size>15</size>
</method>
<method name="Void Bug2()">
- <size>16</size>
+ <size>15</size>
</method>
<method name="Int32 Main()">
<size>2</size>
<size>7</size>
</method>
<method name="Int32 Main(System.String[])">
- <size>140</size>
+ <size>136</size>
</method>
</type>
<type name="MonoBUG.Foo">
</method>
</type>
</test>
+ <test name="test-298.cs">
+ <type name="A">
+ <method name="Int32 op_Addition(Int16, A)">
+ <size>2</size>
+ </method>
+ <method name="Int32 op_UnaryNegation(A)">
+ <size>2</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="B">
+ <method name="Int32 op_Addition(Int32, B)">
+ <size>2</size>
+ </method>
+ <method name="Int32 op_UnaryNegation(B)">
+ <size>2</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="C">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Test">
+ <method name="Int32 Main()">
+ <size>47</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
<test name="test-299.cs">
<type name="SampleClass">
<method name="Void .ctor()">
</type>
<type name="A+B">
<method name="Void .ctor()">
- <size>500</size>
+ <size>499</size>
</method>
</type>
<type name="A+B+C">
</type>
<type name="A+B">
<method name="Void .ctor()">
- <size>500</size>
+ <size>499</size>
</method>
</type>
<type name="A+B+C">
<size>1</size>
</method>
<method name="Int32 Main()">
- <size>140</size>
+ <size>138</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>278</size>
+ <size>276</size>
</method>
</type>
<type name="X">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>288</size>
+ <size>268</size>
</method>
</type>
</test>
</type>
</test>
<test name="test-424.cs">
- <type name="XX">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="Void Metodo(System.Exception)">
- <size>37</size>
- </method>
- <method name="IEnumerable X()">
- <size>16</size>
- </method>
- <method name="Void Main()">
- <size>65</size>
+ <type name="C">
+ <method name="Int32 Main()">
+ <size>35</size>
</method>
- </type>
- <type name="XX+<X>c__Iterator0">
<method name="Void .ctor()">
<size>7</size>
</method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
- <size>7</size>
- </method>
- <method name="Boolean MoveNext()">
- <size>105</size>
- </method>
- <method name="Void Dispose()">
- <size>8</size>
- </method>
- <method name="Void Reset()">
- <size>6</size>
- </method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
- <size>26</size>
- </method>
</type>
</test>
<test name="test-425.cs">
<size>34</size>
</method>
<method name="Int32 test_continue(System.Int32[])">
- <size>57</size>
+ <size>54</size>
</method>
<method name="Boolean test_double(System.Double[])">
- <size>61</size>
+ <size>58</size>
</method>
<method name="Int32 test_break(System.Int32[])">
- <size>57</size>
+ <size>54</size>
</method>
<method name="Boolean test_multi(System.Int32[,])">
- <size>84</size>
+ <size>87</size>
</method>
<method name="Int32 Main()">
<size>284</size>
<size>7</size>
</method>
<method name="Int32 dob(System.Int32[,])">
- <size>80</size>
+ <size>83</size>
</method>
<method name="Int32 count(System.Object)">
<size>39</size>
</method>
</type>
</test>
- <test name="test-467.cs">
- <type name="ExceptionWithAnonMethod">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="Int32 Main()">
- <size>96</size>
- </method>
- <method name="Void AnonHandler(ExceptionWithAnonMethod+EmptyCallback)">
- <size>13</size>
- </method>
- </type>
- <type name="ExceptionWithAnonMethod+EmptyCallback">
- <method name="Void .ctor(Object, IntPtr)">
- <size>0</size>
- </method>
- <method name="Void Invoke()">
- <size>0</size>
- </method>
- <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
- <size>0</size>
- </method>
- <method name="Void EndInvoke(IAsyncResult)">
- <size>0</size>
- </method>
- </type>
- <type name="ExceptionWithAnonMethod+<Main>c__AnonStorey0">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="Void <>m__0()">
- <size>33</size>
- </method>
- </type>
- </test>
<test name="test-468.cs">
<type name="CorMetaDataDispenserExClass">
<method name="Void .ctor()">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>59</size>
+ <size>55</size>
</method>
<method name="Void Test_1()">
<size>1</size>
</type>
</test>
<test name="test-480.cs">
- <type name="Space">
- <method name="Void .ctor()">
- <size>14</size>
+ <type name="A">
+ <method name="Void Dispose()">
+ <size>1</size>
</method>
- <method name="Void Leak(Boolean, Int32)">
- <size>85</size>
+ <method name="Void .ctor(Int32)">
+ <size>7</size>
</method>
</type>
- <type name="Program">
- <method name="Void .ctor()">
- <size>7</size>
+ <type name="C">
+ <method name="Void Test(System.Object)">
+ <size>271</size>
</method>
- <method name="Void Main(System.String[])">
+ <method name="Int32 Main()">
+ <size>13</size>
+ </method>
+ <method name="Void <Test>m__0(Int32)">
<size>1</size>
</method>
- </type>
- <type name="Space+DoCopy">
- <method name="Void .ctor(Object, IntPtr)">
- <size>0</size>
+ <method name="Void .ctor()">
+ <size>7</size>
</method>
- <method name="Void Invoke()">
+ </type>
+ <type name="C+D">
+ <method name="Void Invoke(Int32)">
<size>0</size>
</method>
- <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+ <method name="IAsyncResult BeginInvoke(Int32, System.AsyncCallback, System.Object)">
<size>0</size>
</method>
<method name="Void EndInvoke(IAsyncResult)">
<size>0</size>
</method>
- </type>
- <type name="Space+<Leak>c__AnonStorey0">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="Void <>m__0()">
- <size>18</size>
- </method>
- <method name="Void <>m__1()">
- <size>68</size>
- </method>
- </type>
- <type name="Space+<Leak>c__AnonStorey1">
- <method name="Void .ctor()">
- <size>7</size>
+ <method name="Void .ctor(Object, IntPtr)">
+ <size>0</size>
</method>
</type>
</test>
<size>2</size>
</method>
<method name="Void Main()">
- <size>169</size>
+ <size>166</size>
</method>
</type>
<type name="Q">
</method>
</type>
</test>
- <test name="test-496.cs">
- <type name="Test">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="IEnumerator GetEnumerator()">
- <size>15</size>
- </method>
- <method name="Void Main()">
- <size>11</size>
- </method>
- <method name="Void Run()">
- <size>180</size>
- </method>
- </type>
- <type name="Test+<GetEnumerator>c__Iterator0">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
- </method>
- <method name="Boolean MoveNext()">
- <size>129</size>
- </method>
- <method name="Void Dispose()">
- <size>8</size>
- </method>
- <method name="Void Reset()">
- <size>6</size>
- </method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
- <size>7</size>
- </method>
- </type>
- </test>
<test name="test-497.cs">
<type name="PlotMenuItem">
<method name="Void .ctor()">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>117</size>
+ <size>115</size>
</method>
</type>
</test>
<size>6</size>
</method>
<method name="Int32 Main()">
- <size>504</size>
+ <size>501</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Void Finalize()">
- <size>23</size>
+ <size>36</size>
</method>
<method name="Int32 Test1()">
<size>33</size>
<size>1</size>
</method>
<method name="Int32 Main()">
- <size>93</size>
+ <size>89</size>
</method>
<method name="Constraint op_LogicalNot(Constraint)">
<size>2</size>
</type>
</test>
<test name="test-541.cs">
- <type name="A">
- <method name="Void .ctor(TestFunc)">
- <size>14</size>
+ <type name="ClassMain">
+ <method name="Void Main()">
+ <size>31</size>
</method>
- </type>
- <type name="TestClass">
- <method name="Void .ctor()">
- <size>7</size>
+ <method name="Void set_test(Boolean)">
+ <size>1</size>
</method>
- <method name="Void .cctor()">
- <size>46</size>
+ <method name="Void <Main>m__0(Int32)">
+ <size>1</size>
</method>
- <method name="Int32 Main()">
- <size>6</size>
+ <method name="Void .ctor()">
+ <size>7</size>
</method>
</type>
- <type name="TestFunc">
- <method name="Void .ctor(Object, IntPtr)">
- <size>0</size>
- </method>
+ <type name="ClassMain+D">
<method name="Void Invoke(Int32)">
<size>0</size>
</method>
<method name="Void EndInvoke(IAsyncResult)">
<size>0</size>
</method>
- </type>
- <type name="TestClass">
- <method name="Void <a>m__0(Int32)">
- <size>7</size>
+ <method name="Void .ctor(Object, IntPtr)">
+ <size>0</size>
</method>
</type>
</test>
</type>
</test>
<test name="test-579.cs">
- <type name="X">
+ <type name="TestCase">
+ <method name="Int32 Main()">
+ <size>32</size>
+ </method>
<method name="Void .ctor()">
<size>7</size>
</method>
- <method name="Void Main()">
- <size>35</size>
- </method>
- <method name="Void DoCall(X+test)">
- <size>1</size>
- </method>
- </type>
- <type name="X+test">
- <method name="Void .ctor(Object, IntPtr)">
- <size>0</size>
- </method>
- <method name="System.Object Invoke(System.Reflection.MethodInfo)">
- <size>0</size>
- </method>
- <method name="IAsyncResult BeginInvoke(System.Reflection.MethodInfo, System.AsyncCallback, System.Object)">
- <size>0</size>
- </method>
- <method name="System.Object EndInvoke(IAsyncResult)">
- <size>0</size>
- </method>
- </type>
- <type name="X">
- <method name="System.Object <Main>m__0(System.Reflection.MethodInfo)">
- <size>18</size>
- </method>
</type>
</test>
<test name="test-58.cs">
<size>76</size>
</method>
<method name="System.String BuildNode_D()">
- <size>157</size>
+ <size>156</size>
</method>
<method name="Void BuildNode_E(System.String[,] ByRef)">
<size>68</size>
</method>
</type>
</test>
- <test name="test-629.cs">
- <type name="Foo">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="IEnumerable foo()">
- <size>16</size>
- </method>
- <method name="Int32 Main()">
- <size>67</size>
- </method>
- </type>
- <type name="Foo+<foo>c__Iterator0">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
- <size>7</size>
- </method>
- <method name="Boolean MoveNext()">
- <size>39</size>
- </method>
- <method name="Void Dispose()">
- <size>8</size>
- </method>
- <method name="Void Reset()">
- <size>6</size>
- </method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
- <size>26</size>
- </method>
- </type>
- </test>
<test name="test-63.cs">
<type name="X">
<method name="Void .ctor()">
</method>
</type>
</test>
- <test name="test-645.cs">
- <type name="Program">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="IEnumerable get_Empty()">
- <size>16</size>
- </method>
- <method name="Void Main()">
- <size>61</size>
- </method>
- </type>
- <type name="Program+<>c__Iterator0">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
- <size>7</size>
- </method>
- <method name="Boolean MoveNext()">
- <size>158</size>
- </method>
- <method name="Void Dispose()">
- <size>8</size>
- </method>
- <method name="Void Reset()">
- <size>6</size>
- </method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
- <size>26</size>
- </method>
- </type>
- </test>
<test name="test-646.cs">
<type name="Program">
<method name="Void .ctor()">
<size>51</size>
</method>
<method name="Void Foo()">
- <size>145</size>
+ <size>148</size>
</method>
</type>
</test>
<size>23</size>
</method>
<method name="Void Main()">
- <size>127</size>
+ <size>128</size>
</method>
</type>
</test>
<test name="test-729.cs">
<type name="Primes.MainClass">
<method name="Int32 Main()">
- <size>141</size>
+ <size>136</size>
</method>
<method name="Void .ctor()">
<size>7</size>
</method>
</type>
</test>
+ <test name="test-799.cs">
+ <type name="Test2">
+ <method name="Int32 Main()">
+ <size>13</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Test2+Foo">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Test2+Bar">
+ <method name="Void .ctor(Foo)">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
<test name="test-8.cs">
<type name="X">
<method name="Void .ctor()">
</method>
</type>
</test>
+ <test name="test-800.cs">
+ <type name="C">
+ <method name="Void Main()">
+ <size>5</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-801.cs">
+ <type name="C">
+ <method name="Int32 Main()">
+ <size>154</size>
+ </method>
+ <method name="E op_Implicit(C)">
+ <size>3</size>
+ </method>
+ <method name="Int32 op_Implicit(C)">
+ <size>2</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
<test name="test-81.cs">
<type name="N1.A">
<method name="Void .ctor()">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>259</size>
+ <size>256</size>
</method>
<method name="System.Collections.ArrayList Find(predicate, System.Collections.ArrayList)">
<size>83</size>
</type>
</test>
<test name="test-anon-31.cs">
- <type name="test">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="IEnumerable testen(Int32)">
- <size>30</size>
+ <type name="X">
+ <method name="Void Main()">
+ <size>35</size>
</method>
- </type>
- <type name="reflect">
- <method name="Void .ctor()">
- <size>7</size>
+ <method name="Void DoCall(X+test)">
+ <size>1</size>
</method>
- <method name="Void Main(System.String[])">
- <size>122</size>
+ <method name="System.Object <Main>m__0(System.Reflection.MethodInfo)">
+ <size>18</size>
</method>
- </type>
- <type name="test+<testen>c__Iterator0">
<method name="Void .ctor()">
<size>7</size>
</method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
- <size>7</size>
- </method>
- <method name="Boolean MoveNext()">
- <size>195</size>
- </method>
- <method name="Void Dispose()">
- <size>8</size>
+ </type>
+ <type name="X+test">
+ <method name="System.Object Invoke(System.Reflection.MethodInfo)">
+ <size>0</size>
</method>
- <method name="Void Reset()">
- <size>6</size>
+ <method name="IAsyncResult BeginInvoke(System.Reflection.MethodInfo, System.AsyncCallback, System.Object)">
+ <size>0</size>
</method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
- <size>7</size>
+ <method name="System.Object EndInvoke(IAsyncResult)">
+ <size>0</size>
</method>
- <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
- <size>40</size>
+ <method name="Void .ctor(Object, IntPtr)">
+ <size>0</size>
</method>
</type>
</test>
</type>
</test>
<test name="test-anon-35.cs">
- <type name="CustomDict">
- <method name="Void .ctor()">
- <size>68</size>
+ <type name="ExceptionWithAnonMethod">
+ <method name="Int32 Main()">
+ <size>96</size>
</method>
- <method name="IEnumerator GetEnumerator()">
- <size>15</size>
+ <method name="Void AnonHandler(ExceptionWithAnonMethod+EmptyCallback)">
+ <size>13</size>
</method>
- </type>
- <type name="Tests">
<method name="Void .ctor()">
<size>7</size>
</method>
- <method name="Void Main()">
- <size>7</size>
- </method>
</type>
- <type name="CustomDict+<GetEnumerator>c__Iterator0">
- <method name="Void .ctor()">
- <size>7</size>
+ <type name="ExceptionWithAnonMethod+EmptyCallback">
+ <method name="Void Invoke()">
+ <size>0</size>
</method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
+ <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+ <size>0</size>
</method>
- <method name="Boolean MoveNext()">
- <size>86</size>
+ <method name="Void EndInvoke(IAsyncResult)">
+ <size>0</size>
</method>
- <method name="Void Dispose()">
- <size>8</size>
+ <method name="Void .ctor(Object, IntPtr)">
+ <size>0</size>
</method>
- <method name="Void Reset()">
- <size>6</size>
+ </type>
+ <type name="ExceptionWithAnonMethod+<Main>c__AnonStorey0">
+ <method name="Void <>m__0()">
+ <size>33</size>
</method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <method name="Void .ctor()">
<size>7</size>
</method>
</type>
</type>
</test>
<test name="test-anon-45.cs">
- <type name="Test">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="Void Main()">
- <size>66</size>
- </method>
- <method name="IEnumerator GetEnumerator()">
- <size>8</size>
+ <type name="TestFunc">
+ <method name="Void Invoke(Int32)">
+ <size>0</size>
</method>
- </type>
- <type name="Test+<GetEnumerator>c__Iterator0">
- <method name="Void .ctor()">
- <size>7</size>
+ <method name="IAsyncResult BeginInvoke(Int32, System.AsyncCallback, System.Object)">
+ <size>0</size>
</method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
+ <method name="Void EndInvoke(IAsyncResult)">
+ <size>0</size>
</method>
- <method name="Boolean MoveNext()">
- <size>77</size>
+ <method name="Void .ctor(Object, IntPtr)">
+ <size>0</size>
</method>
- <method name="Void Dispose()">
- <size>8</size>
+ </type>
+ <type name="A">
+ <method name="Void .ctor(TestFunc)">
+ <size>14</size>
</method>
- <method name="Void Reset()">
+ </type>
+ <type name="TestClass">
+ <method name="Int32 Main()">
<size>6</size>
</method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <method name="Void <a>m__0(Int32)">
<size>7</size>
</method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ <method name="Void .cctor()">
+ <size>46</size>
+ </method>
</type>
</test>
<test name="test-anon-46.cs">
<size>1</size>
</method>
<method name="Void Test(Int32)">
- <size>158</size>
+ <size>153</size>
</method>
</type>
<type name="X">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>187</size>
+ <size>197</size>
</method>
<method name="Void Dispose()">
- <size>64</size>
+ <size>76</size>
</method>
<method name="Void Reset()">
<size>6</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>201</size>
+ <size>199</size>
</method>
<method name="Void <>m__0()">
<size>22</size>
<size>7</size>
</method>
<method name="Int32 Test(Int32)">
- <size>344</size>
+ <size>342</size>
</method>
<method name="Int32 Main()">
<size>46</size>
<size>7</size>
</method>
<method name="Int32 Test(Int32)">
- <size>515</size>
+ <size>512</size>
</method>
<method name="Int32 Main()">
<size>46</size>
<size>7</size>
</method>
<method name="Int32 Test(Int32)">
- <size>567</size>
+ <size>564</size>
</method>
<method name="Int32 Main()">
<size>46</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>195</size>
+ <size>193</size>
</method>
<method name="Int32 <>m__0()">
<size>44</size>
<size>12</size>
</method>
<method name="Void Test()">
- <size>102</size>
+ <size>97</size>
</method>
</type>
<type name="C+D">
<size>7</size>
</method>
<method name="Void <>m__0()">
- <size>109</size>
+ <size>108</size>
</method>
</type>
<type name="C+<Test>c__AnonStorey0+<Test>c__AnonStorey1">
<size>3</size>
</method>
<method name="Program+D Get(Int32)">
- <size>115</size>
+ <size>128</size>
</method>
<method name="Int32 Run(Int32)">
<size>12</size>
</method>
</type>
<type name="Program+<Get>c__AnonStorey0">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Program+<Get>c__AnonStorey1">
<method name="Int32 <>m__0()">
- <size>19</size>
+ <size>24</size>
</method>
<method name="Int32 <>m__1()">
- <size>19</size>
+ <size>24</size>
</method>
<method name="Int32 <>m__2()">
+ <size>19</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-anon-97.cs">
+ <type name="Space">
+ <method name="Void Leak(Boolean, Int32)">
+ <size>85</size>
+ </method>
+ <method name="Void .ctor()">
<size>14</size>
</method>
+ </type>
+ <type name="Space+DoCopy">
+ <method name="Void Invoke()">
+ <size>0</size>
+ </method>
+ <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+ <size>0</size>
+ </method>
+ <method name="Void EndInvoke(IAsyncResult)">
+ <size>0</size>
+ </method>
+ <method name="Void .ctor(Object, IntPtr)">
+ <size>0</size>
+ </method>
+ </type>
+ <type name="Program">
+ <method name="Void Main(System.String[])">
+ <size>1</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Space+<Leak>c__AnonStorey1">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Space+<Leak>c__AnonStorey0">
+ <method name="Void <>m__0()">
+ <size>18</size>
+ </method>
+ <method name="Void <>m__1()">
+ <size>68</size>
+ </method>
<method name="Void .ctor()">
<size>7</size>
</method>
<size>16</size>
</method>
<method name="Int32 Main()">
- <size>173</size>
+ <size>172</size>
</method>
</type>
<type name="X+<GetIt>c__Iterator0">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>126</size>
+ <size>124</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>126</size>
+ <size>124</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>173</size>
+ <size>171</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>30</size>
</method>
<method name="Int32 Main()">
- <size>248</size>
+ <size>247</size>
</method>
</type>
<type name="<PrivateImplementationDetails>">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>151</size>
+ <size>149</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>238</size>
+ <size>236</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>123</size>
+ <size>121</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>183</size>
+ <size>181</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>30</size>
</method>
<method name="Int32 Main()">
- <size>407</size>
+ <size>403</size>
</method>
</type>
<type name="S+<Get>c__Iterator0">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>183</size>
+ <size>181</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>136</size>
+ <size>134</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>131</size>
+ <size>129</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>136</size>
+ <size>134</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>374</size>
+ <size>373</size>
</method>
</type>
<type name="Test+<Foo>c__Iterator0">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>360</size>
+ <size>358</size>
</method>
<method name="Void Dispose()">
<size>102</size>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>270</size>
+ <size>268</size>
</method>
</type>
<type name="Tester+<GetEnumerator>c__Iterator0">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>625</size>
+ <size>635</size>
</method>
<method name="Void Dispose()">
- <size>84</size>
+ <size>96</size>
</method>
<method name="Void Reset()">
<size>6</size>
<size>1</size>
</method>
<method name="Int32 Main()">
- <size>186</size>
+ <size>184</size>
</method>
</type>
<type name="X+<>c__Iterator0">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>126</size>
+ <size>124</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>145</size>
+ <size>143</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>124</size>
+ <size>122</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>165</size>
+ <size>163</size>
</method>
<method name="Void Dispose()">
<size>55</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>27</size>
+ <size>25</size>
</method>
<method name="Void Dispose()">
<size>8</size>
</method>
</type>
</test>
+ <test name="test-iter-14.cs">
+ <type name="XX">
+ <method name="Void Metodo(System.Exception)">
+ <size>37</size>
+ </method>
+ <method name="IEnumerable X()">
+ <size>16</size>
+ </method>
+ <method name="Void Main()">
+ <size>65</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="XX+<X>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+ <size>26</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>103</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>8</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-iter-15.cs">
+ <type name="Test">
+ <method name="IEnumerator GetEnumerator()">
+ <size>15</size>
+ </method>
+ <method name="Void Main()">
+ <size>11</size>
+ </method>
+ <method name="Void Run()">
+ <size>177</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Test+<GetEnumerator>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>127</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>8</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-iter-16.cs">
+ <type name="Foo">
+ <method name="IEnumerable foo()">
+ <size>16</size>
+ </method>
+ <method name="Int32 Main()">
+ <size>67</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Foo+<foo>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+ <size>26</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>37</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>8</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-iter-17.cs">
+ <type name="Program">
+ <method name="IEnumerable get_Empty()">
+ <size>16</size>
+ </method>
+ <method name="Void Main()">
+ <size>61</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Program+<>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+ <size>26</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>156</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>8</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-iter-18.cs">
+ <type name="test">
+ <method name="IEnumerable testen(Int32)">
+ <size>30</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="reflect">
+ <method name="Void Main(System.String[])">
+ <size>119</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="test+<testen>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+ <size>40</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>193</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>8</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-iter-19.cs">
+ <type name="Test">
+ <method name="Void Main()">
+ <size>66</size>
+ </method>
+ <method name="IEnumerator GetEnumerator()">
+ <size>8</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Test+<GetEnumerator>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>75</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>8</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-iter-20.cs">
+ <type name="CustomDict">
+ <method name="IEnumerator GetEnumerator()">
+ <size>15</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>68</size>
+ </method>
+ </type>
+ <type name="Tests">
+ <method name="Void Main()">
+ <size>7</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="CustomDict+<GetEnumerator>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>84</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>8</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-iter-21.cs">
+ <type name="X">
+ <method name="IEnumerable GetIt(System.Int32[])">
+ <size>30</size>
+ </method>
+ <method name="Int32 Main()">
+ <size>119</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="X+A">
+ <method name="Void Invoke()">
+ <size>0</size>
+ </method>
+ <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+ <size>0</size>
+ </method>
+ <method name="Void EndInvoke(IAsyncResult)">
+ <size>0</size>
+ </method>
+ <method name="Void .ctor(Object, IntPtr)">
+ <size>0</size>
+ </method>
+ </type>
+ <type name="X+<GetIt>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+ <size>40</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>199</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>8</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void <>m__0()">
+ <size>22</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="<PrivateImplementationDetails>">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-iter-22.cs">
+ <type name="Test">
+ <method name="Void Main()">
+ <size>66</size>
+ </method>
+ <method name="IEnumerator GetEnumerator()">
+ <size>8</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Test+<GetEnumerator>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>197</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>76</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
<test name="test-named-01.cs">
<type name="A">
<method name="Void .ctor()">
<size>30</size>
</method>
<method name="Int32 Main()">
- <size>279</size>
+ <size>274</size>
</method>
</type>
</test>
<size>40</size>
</method>
<method name="Int32 Main()">
- <size>239</size>
+ <size>242</size>
</method>
<method name="Void .ctor()">
<size>7</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>69</size>
+ <size>67</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Void Main(System.String[])">
- <size>203</size>
+ <size>204</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>107</size>
+ <size>105</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Void Main(System.String[])">
- <size>208</size>
+ <size>209</size>
</method>
<method name="Void TestPairLog()">
- <size>182</size>
+ <size>184</size>
</method>
</type>
<type name="Pair`2[T,U]">
<method name="Void .ctor()">
<size>7</size>
</method>
- <method name="Void Main()">
- <size>66</size>
- </method>
- <method name="IEnumerator GetEnumerator()">
- <size>8</size>
- </method>
</type>
- <type name="Test+<GetEnumerator>c__Iterator0">
- <method name="Void .ctor()">
- <size>7</size>
+ <type name="S">
+ <method name="Void System.IDisposable.Dispose()">
+ <size>13</size>
</method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
+ <method name="Void Dispose()">
+ <size>6</size>
</method>
- <method name="Boolean MoveNext()">
- <size>187</size>
+ </type>
+ <type name="C">
+ <method name="Void System.IDisposable.Dispose()">
+ <size>1</size>
</method>
<method name="Void Dispose()">
- <size>64</size>
- </method>
- <method name="Void Reset()">
<size>6</size>
</method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <method name="Void .ctor()">
<size>7</size>
</method>
</type>
+ <type name="Test">
+ <method name="Int32 Main()">
+ <size>209</size>
+ </method>
+ <method name="Void GenMethod[T](T)">
+ <size>33</size>
+ </method>
+ </type>
</test>
<test name="gtest-079.cs">
<type name="A.ArrayList`1[T]">
<size>12</size>
</method>
<method name="Boolean MoveNext()">
- <size>75</size>
+ <size>73</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>14</size>
</method>
<method name="Void Insert(Int32, T)">
- <size>256</size>
+ <size>255</size>
</method>
<method name="Void RemoveAt(Int32)">
<size>113</size>
<size>7</size>
</method>
<method name="LinkedList`1[T] op_Addition(LinkedList`1[T], LinkedList`1[T])">
- <size>123</size>
+ <size>120</size>
</method>
</type>
<type name="LinkedList`1+Node[T]">
<size>7</size>
</method>
<method name="Void Main(System.String[])">
- <size>201</size>
+ <size>197</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Void Main(System.String[])">
- <size>120</size>
+ <size>119</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Void Main(System.String[])">
- <size>846</size>
+ <size>847</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Void Main(System.String[])">
- <size>1330</size>
+ <size>1332</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Void Main(System.String[])">
- <size>112</size>
+ <size>113</size>
</method>
</type>
<type name="Foo`1[T]">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>134</size>
+ <size>136</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>1599</size>
+ <size>1605</size>
</method>
</type>
</test>
<size>12</size>
</method>
<method name="Boolean MoveNext()">
- <size>91</size>
+ <size>89</size>
</method>
<method name="Void Dispose()">
<size>8</size>
</method>
</type>
</test>
- <test name="gtest-165.cs">
- <type name="X">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="IEnumerable GetIt(System.Int32[])">
- <size>30</size>
- </method>
- <method name="Int32 Main()">
- <size>119</size>
- </method>
- </type>
- <type name="X+A">
- <method name="Void .ctor(Object, IntPtr)">
- <size>0</size>
- </method>
- <method name="Void Invoke()">
- <size>0</size>
- </method>
- <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
- <size>0</size>
- </method>
- <method name="Void EndInvoke(IAsyncResult)">
- <size>0</size>
- </method>
- </type>
- <type name="X+<GetIt>c__Iterator0">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
- <size>7</size>
- </method>
- <method name="Boolean MoveNext()">
- <size>201</size>
- </method>
- <method name="Void <>m__0()">
- <size>22</size>
- </method>
- <method name="Void Dispose()">
- <size>8</size>
- </method>
- <method name="Void Reset()">
- <size>6</size>
- </method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
- <size>40</size>
- </method>
- </type>
- <type name="<PrivateImplementationDetails>">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- </type>
- </test>
<test name="gtest-166.cs">
<type name="C">
<method name="Void .ctor()">
<size>7</size>
</method>
<method name="Int32 Test()">
- <size>324</size>
+ <size>323</size>
</method>
<method name="Int32 Main()">
<size>6</size>
<size>1</size>
</method>
<method name="Int32 Main()">
- <size>186</size>
+ <size>184</size>
</method>
</type>
<type name="X+<>c__Iterator0">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>126</size>
+ <size>124</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>145</size>
+ <size>143</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>84</size>
+ <size>82</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>70</size>
+ <size>68</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>82</size>
+ <size>80</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>82</size>
+ <size>80</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>12</size>
</method>
<method name="Boolean MoveNext()">
- <size>75</size>
+ <size>73</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>207</size>
+ <size>205</size>
</method>
<method name="Void Dispose()">
<size>62</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>118</size>
+ <size>116</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>11</size>
</method>
<method name="Void Run()">
- <size>151</size>
+ <size>147</size>
</method>
</type>
<type name="Test+<GetEnumerator>c__Iterator0">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>129</size>
+ <size>127</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>1</size>
</method>
<method name="Void Main()">
- <size>163</size>
+ <size>162</size>
</method>
<method name="Void f6(ParamEnum)">
<size>1</size>
<size>12</size>
</method>
<method name="Boolean MoveNext()">
- <size>80</size>
+ <size>78</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>106</size>
</method>
<method name="Int32 Test(System.Type, System.Type[])">
- <size>400</size>
+ <size>391</size>
</method>
<method name="Int32 Test()">
<size>532</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>69</size>
+ <size>67</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>106</size>
+ <size>104</size>
</method>
<method name="Void Dispose()">
<size>46</size>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>220</size>
+ <size>222</size>
</method>
</type>
<type name="MyType">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>168</size>
+ <size>169</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>234</size>
+ <size>235</size>
</method>
</type>
</test>
<size>21</size>
</method>
</type>
+ <type name="A`1[T]">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="ConditionalParsing">
+ <method name="Void Test_11()">
+ <size>7</size>
+ </method>
+ </type>
</test>
<test name="gtest-410.cs">
<type name="Program">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>173</size>
+ <size>174</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>258</size>
+ <size>261</size>
</method>
</type>
</test>
<test name="gtest-514.cs">
<type name="test2.Test`3[T,U,V]">
<method name="Void Method()">
- <size>128</size>
+ <size>127</size>
</method>
<method name="Void .ctor()">
<size>7</size>
</method>
</type>
</test>
+ <test name="gtest-536.cs">
+ <type name="Test">
+ <method name="Void Main()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Test+Expression`1[TDelegate]">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Test+Expression">
+ <method name="Void Test()">
+ <size>1</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="gtest-538.cs">
+ <type name="S">
+ <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+ <size>6</size>
+ </method>
+ <method name="IEnumerator`1 GetEnumerator()">
+ <size>15</size>
+ </method>
+ <method name="Void .ctor(Int32)">
+ <size>1</size>
+ </method>
+ </type>
+ <type name="S2">
+ <method name="IEnumerator`1 GetEnumerator()">
+ <size>15</size>
+ </method>
+ </type>
+ <type name="Enumerator`1[T]">
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>6</size>
+ </method>
+ <method name="T get_Current()">
+ <size>6</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>2</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>13</size>
+ </method>
+ </type>
+ <type name="MySystem">
+ <method name="Int32 Main()">
+ <size>182</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="gtest-539.cs">
+ <type name="S">
+ <method name="Int32 get_ID()">
+ <size>7</size>
+ </method>
+ <method name="Void set_ID(Int32)">
+ <size>8</size>
+ </method>
+ </type>
+ <type name="C">
+ <method name="C op_Explicit(S)">
+ <size>11</size>
+ </method>
+ <method name="C op_Explicit(Nullable`1)">
+ <size>39</size>
+ </method>
+ <method name="Void .ctor(Int32)">
+ <size>14</size>
+ </method>
+ </type>
+ <type name="Test">
+ <method name="Int32 Main()">
+ <size>79</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
<test name="gtest-anon-1.cs">
<type name="X">
<method name="Void .ctor()">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>110</size>
+ <size>108</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>26</size>
</method>
<method name="Int32 Main()">
- <size>572</size>
+ <size>570</size>
</method>
</type>
<type name="Test+<For>c__AnonStorey0`1[T]">
<size>33</size>
</method>
<method name="System.String Implode[TSource](IEnumerable`1, System.String, System.Action`2[System.Text.StringBuilder,TSource])">
- <size>128</size>
+ <size>125</size>
</method>
</type>
<type name="Test">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>69</size>
+ <size>67</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>98</size>
+ <size>96</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Void Invoke(SomeGenericClass`1+SomeHandlerType[SomeType])">
- <size>1</size>
+ <size>7</size>
</method>
<method name="Void FailsToCompile()">
<size>19</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>180</size>
+ <size>178</size>
</method>
<method name="Void Dispose()">
<size>66</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>65</size>
+ <size>63</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>98</size>
+ <size>96</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>83</size>
</method>
<method name="Int32 Main()">
- <size>534</size>
+ <size>528</size>
</method>
</type>
<type name="Test+Wrap">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>300</size>
+ <size>298</size>
</method>
<method name="System.Int64[] GetValues()">
<size>18</size>
<size>40</size>
</method>
<method name="Boolean MoveNext()">
- <size>108</size>
+ <size>106</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>52</size>
</method>
<method name="Boolean MoveNext()">
- <size>295</size>
+ <size>293</size>
</method>
<method name="Void Dispose()">
<size>62</size>
<test name="gtest-etree-20.cs">
<type name="S">
<method name="Int32 Main()">
- <size>215</size>
+ <size>216</size>
</method>
</type>
<type name="A">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>1243</size>
+ <size>1234</size>
</method>
</type>
<type name="Test+Point">
<size>12</size>
</method>
<method name="Boolean MoveNext()">
- <size>136</size>
+ <size>134</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>196</size>
+ <size>194</size>
</method>
<method name="Void Dispose()">
<size>62</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>219</size>
+ <size>217</size>
</method>
<method name="Void Dispose()">
<size>57</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>187</size>
+ <size>185</size>
</method>
<method name="Void Dispose()">
<size>62</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>184</size>
+ <size>181</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>187</size>
+ <size>185</size>
</method>
<method name="Void Dispose()">
<size>57</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>84</size>
+ <size>82</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>130</size>
+ <size>128</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>52</size>
</method>
<method name="Boolean MoveNext()">
- <size>103</size>
+ <size>101</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>150</size>
+ <size>143</size>
</method>
</type>
<type name="Collection`1+<GetEnumerator>c__Iterator0[T]">
<size>12</size>
</method>
<method name="Boolean MoveNext()">
- <size>176</size>
+ <size>174</size>
</method>
<method name="Void Dispose()">
<size>57</size>
<size>40</size>
</method>
<method name="Boolean MoveNext()">
- <size>117</size>
+ <size>115</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>52</size>
</method>
<method name="Boolean MoveNext()">
- <size>205</size>
+ <size>215</size>
</method>
<method name="Void Dispose()">
- <size>64</size>
+ <size>76</size>
</method>
<method name="Void Reset()">
<size>6</size>
<size>23</size>
</method>
<method name="Int32 Main()">
- <size>133</size>
+ <size>135</size>
</method>
<method name="Int32 <get_BaseM>__BaseCallProxy0()">
<size>7</size>
<size>40</size>
</method>
<method name="Boolean MoveNext()">
- <size>75</size>
+ <size>73</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>40</size>
</method>
<method name="Boolean MoveNext()">
- <size>86</size>
+ <size>84</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>40</size>
</method>
<method name="Boolean MoveNext()">
- <size>181</size>
+ <size>179</size>
</method>
<method name="Void Dispose()">
<size>62</size>
<size>32</size>
</method>
<method name="TR Sum[TA,TR](IEnumerable`1, System.Func`3[TR,TA,TR])">
- <size>122</size>
+ <size>123</size>
</method>
</type>
<type name="Repro">
</method>
</type>
</test>
+ <test name="gtest-lambda-26.cs">
+ <type name="C">
+ <method name="Void Main()">
+ <size>35</size>
+ </method>
+ <method name="Void Execute(System.Action)">
+ <size>1</size>
+ </method>
+ <method name="Void <Main>m__0()">
+ <size>1</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
<test name="gtest-linq-01.cs">
<type name="from.C">
<method name="Void .ctor()">
<size>7</size>
</method>
<method name="Void Main()">
- <size>2205</size>
+ <size>2180</size>
</method>
<method name="Void Foo(Int32, Boolean)">
<size>11</size>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>509</size>
+ <size>507</size>
</method>
<method name="Int32 <Main>m__0(Int32)">
<size>2</size>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>561</size>
+ <size>559</size>
</method>
</type>
<type name="<PrivateImplementationDetails>">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>410</size>
+ <size>408</size>
</method>
</type>
<type name="<>__AnonType0`2[<i>__T,<u>__T]">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>754</size>
+ <size>748</size>
</method>
</type>
<type name="<>__AnonType0`2[<i1>__T,<i2>__T]">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>912</size>
+ <size>911</size>
</method>
</type>
<type name="<>__AnonType0`1[<Result>__T]">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>729</size>
+ <size>734</size>
</method>
</type>
<type name="<>__AnonType0`2[<a>__T,<ab>__T]">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>86</size>
+ <size>84</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>159</size>
+ <size>157</size>
</method>
<method name="Int32 <Main>m__0(Int32)">
<size>2</size>
</type>
<type name="OrderByBugExample.Program">
<method name="Int32 Main()">
- <size>351</size>
+ <size>345</size>
</method>
<method name="System.String <Main>m__0(OrderByBugExample.Foo)">
<size>7</size>
</method>
</type>
</test>
+ <test name="gtest-linq-25.cs">
+ <type name="A">
+ <method name="System.String get_Header()">
+ <size>2</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="B">
+ <method name="System.String get_Name()">
+ <size>2</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="C">
+ <method name="Int32 Main()">
+ <size>36</size>
+ </method>
+ <method name="Void Test(System.Action)">
+ <size>7</size>
+ </method>
+ <method name="Void <Main>m__0()">
+ <size>159</size>
+ </method>
+ <method name="IEnumerable`1 <Main>m__1(A)">
+ <size>7</size>
+ </method>
+ <method name="<>__AnonType0`2[A,B] <Main>m__2(A, B)">
+ <size>8</size>
+ </method>
+ <method name="Boolean <Main>m__3(<>__AnonType0`2[A,B])">
+ <size>67</size>
+ </method>
+ <method name="<>__AnonType1`2[A,B] <Main>m__4(<>__AnonType0`2[A,B])">
+ <size>18</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="<>__AnonType0`2[<c>__T,<p>__T]">
+ <method name="<c>__T get_c()">
+ <size>7</size>
+ </method>
+ <method name="<p>__T get_p()">
+ <size>7</size>
+ </method>
+ <method name="Boolean Equals(System.Object)">
+ <size>69</size>
+ </method>
+ <method name="Int32 GetHashCode()">
+ <size>86</size>
+ </method>
+ <method name="System.String ToString()">
+ <size>142</size>
+ </method>
+ <method name="Void .ctor(<c>__T, <p>__T)">
+ <size>21</size>
+ </method>
+ </type>
+ <type name="<>__AnonType1`2[<C>__T,<P>__T]">
+ <method name="<C>__T get_C()">
+ <size>7</size>
+ </method>
+ <method name="<P>__T get_P()">
+ <size>7</size>
+ </method>
+ <method name="Boolean Equals(System.Object)">
+ <size>69</size>
+ </method>
+ <method name="Int32 GetHashCode()">
+ <size>86</size>
+ </method>
+ <method name="System.String ToString()">
+ <size>142</size>
+ </method>
+ <method name="Void .ctor(<C>__T, <P>__T)">
+ <size>21</size>
+ </method>
+ </type>
+ </test>
<test name="gtest-named-01.cs">
<type name="C">
<method name="Int32 Test(Int32, Int32, System.String)">
<size>7</size>
</method>
<method name="Void ExtraTst()">
- <size>12</size>
+ <size>10</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>99</size>
+ <size>101</size>
</method>
</type>
</test>
<size>33</size>
</method>
<method name="Int32 test5(Single ByRef, Int64)">
- <size>75</size>
+ <size>73</size>
</method>
<method name="Int32 test6(Single ByRef)">
<size>10</size>
<size>15</size>
</method>
<method name="Void Bug2()">
- <size>16</size>
+ <size>15</size>
</method>
<method name="Int32 Main()">
<size>2</size>
<size>7</size>
</method>
<method name="Int32 Main(System.String[])">
- <size>140</size>
+ <size>136</size>
</method>
</type>
<type name="MonoBUG.Foo">
</method>
</type>
</test>
+ <test name="test-298.cs">
+ <type name="A">
+ <method name="Int32 op_Addition(Int16, A)">
+ <size>2</size>
+ </method>
+ <method name="Int32 op_UnaryNegation(A)">
+ <size>2</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="B">
+ <method name="Int32 op_Addition(Int32, B)">
+ <size>2</size>
+ </method>
+ <method name="Int32 op_UnaryNegation(B)">
+ <size>2</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="C">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Test">
+ <method name="Int32 Main()">
+ <size>47</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
<test name="test-299.cs">
<type name="SampleClass">
<method name="Void .ctor()">
</type>
<type name="A+B">
<method name="Void .ctor()">
- <size>475</size>
+ <size>474</size>
</method>
</type>
<type name="A+B+C">
</type>
<type name="A+B">
<method name="Void .ctor()">
- <size>475</size>
+ <size>474</size>
</method>
</type>
<type name="A+B+C">
<size>1</size>
</method>
<method name="Int32 Main()">
- <size>134</size>
+ <size>132</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>278</size>
+ <size>276</size>
</method>
</type>
<type name="X">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>288</size>
+ <size>268</size>
</method>
</type>
</test>
</type>
</test>
<test name="test-424.cs">
- <type name="XX">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="Void Metodo(System.Exception)">
- <size>37</size>
- </method>
- <method name="IEnumerable X()">
- <size>16</size>
- </method>
- <method name="Void Main()">
- <size>65</size>
+ <type name="C">
+ <method name="Int32 Main()">
+ <size>35</size>
</method>
- </type>
- <type name="XX+<X>c__Iterator0">
<method name="Void .ctor()">
<size>7</size>
</method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
- <size>7</size>
- </method>
- <method name="Boolean MoveNext()">
- <size>105</size>
- </method>
- <method name="Void Dispose()">
- <size>8</size>
- </method>
- <method name="Void Reset()">
- <size>6</size>
- </method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
- <size>26</size>
- </method>
</type>
</test>
<test name="test-425.cs">
<size>34</size>
</method>
<method name="Int32 test_continue(System.Int32[])">
- <size>57</size>
+ <size>54</size>
</method>
<method name="Boolean test_double(System.Double[])">
- <size>61</size>
+ <size>58</size>
</method>
<method name="Int32 test_break(System.Int32[])">
- <size>57</size>
+ <size>54</size>
</method>
<method name="Boolean test_multi(System.Int32[,])">
- <size>84</size>
+ <size>87</size>
</method>
<method name="Int32 Main()">
<size>284</size>
<size>7</size>
</method>
<method name="Int32 dob(System.Int32[,])">
- <size>80</size>
+ <size>83</size>
</method>
<method name="Int32 count(System.Object)">
<size>39</size>
</method>
</type>
</test>
- <test name="test-467.cs">
- <type name="ExceptionWithAnonMethod">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="Int32 Main()">
- <size>96</size>
- </method>
- <method name="Void AnonHandler(ExceptionWithAnonMethod+EmptyCallback)">
- <size>13</size>
- </method>
- </type>
- <type name="ExceptionWithAnonMethod+EmptyCallback">
- <method name="Void .ctor(Object, IntPtr)">
- <size>0</size>
- </method>
- <method name="Void Invoke()">
- <size>0</size>
- </method>
- <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
- <size>0</size>
- </method>
- <method name="Void EndInvoke(IAsyncResult)">
- <size>0</size>
- </method>
- </type>
- <type name="ExceptionWithAnonMethod+<Main>c__AnonStorey0">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="Void <>m__0()">
- <size>33</size>
- </method>
- </type>
- </test>
<test name="test-468.cs">
<type name="CorMetaDataDispenserExClass">
<method name="Void .ctor()">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>59</size>
+ <size>55</size>
</method>
<method name="Void Test_1()">
<size>1</size>
</type>
</test>
<test name="test-480.cs">
- <type name="Space">
- <method name="Void .ctor()">
- <size>14</size>
+ <type name="A">
+ <method name="Void Dispose()">
+ <size>1</size>
</method>
- <method name="Void Leak(Boolean, Int32)">
- <size>85</size>
+ <method name="Void .ctor(Int32)">
+ <size>7</size>
</method>
</type>
- <type name="Program">
- <method name="Void .ctor()">
- <size>7</size>
+ <type name="C">
+ <method name="Void Test(System.Object)">
+ <size>271</size>
</method>
- <method name="Void Main(System.String[])">
+ <method name="Int32 Main()">
+ <size>13</size>
+ </method>
+ <method name="Void <Test>m__0(Int32)">
<size>1</size>
</method>
- </type>
- <type name="Space+DoCopy">
- <method name="Void .ctor(Object, IntPtr)">
- <size>0</size>
+ <method name="Void .ctor()">
+ <size>7</size>
</method>
- <method name="Void Invoke()">
+ </type>
+ <type name="C+D">
+ <method name="Void Invoke(Int32)">
<size>0</size>
</method>
- <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+ <method name="IAsyncResult BeginInvoke(Int32, System.AsyncCallback, System.Object)">
<size>0</size>
</method>
<method name="Void EndInvoke(IAsyncResult)">
<size>0</size>
</method>
- </type>
- <type name="Space+<Leak>c__AnonStorey0">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="Void <>m__0()">
- <size>18</size>
- </method>
- <method name="Void <>m__1()">
- <size>68</size>
- </method>
- </type>
- <type name="Space+<Leak>c__AnonStorey1">
- <method name="Void .ctor()">
- <size>7</size>
+ <method name="Void .ctor(Object, IntPtr)">
+ <size>0</size>
</method>
</type>
</test>
<size>2</size>
</method>
<method name="Void Main()">
- <size>169</size>
+ <size>166</size>
</method>
</type>
<type name="Q">
</method>
</type>
</test>
- <test name="test-496.cs">
- <type name="Test">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="IEnumerator GetEnumerator()">
- <size>15</size>
- </method>
- <method name="Void Main()">
- <size>11</size>
- </method>
- <method name="Void Run()">
- <size>180</size>
- </method>
- </type>
- <type name="Test+<GetEnumerator>c__Iterator0">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
- </method>
- <method name="Boolean MoveNext()">
- <size>129</size>
- </method>
- <method name="Void Dispose()">
- <size>8</size>
- </method>
- <method name="Void Reset()">
- <size>6</size>
- </method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
- <size>7</size>
- </method>
- </type>
- </test>
<test name="test-497.cs">
<type name="PlotMenuItem">
<method name="Void .ctor()">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>117</size>
+ <size>115</size>
</method>
</type>
</test>
<size>6</size>
</method>
<method name="Int32 Main()">
- <size>504</size>
+ <size>501</size>
</method>
</type>
</test>
<size>7</size>
</method>
<method name="Void Finalize()">
- <size>23</size>
+ <size>36</size>
</method>
<method name="Int32 Test1()">
<size>33</size>
</test>
<test name="test-53.cs">
<type name="MyDispose">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
<method name="Void Dispose()">
<size>8</size>
</method>
- </type>
- <type name="X">
<method name="Void .ctor()">
<size>7</size>
</method>
+ </type>
+ <type name="X">
<method name="Int32 Main()">
<size>257</size>
</method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
</type>
</test>
<test name="test-530.cs">
<size>1</size>
</method>
<method name="Int32 Main()">
- <size>93</size>
+ <size>89</size>
</method>
<method name="Constraint op_LogicalNot(Constraint)">
<size>2</size>
</type>
</test>
<test name="test-541.cs">
- <type name="A">
- <method name="Void .ctor(TestFunc)">
- <size>14</size>
+ <type name="ClassMain">
+ <method name="Void Main()">
+ <size>31</size>
</method>
- </type>
- <type name="TestClass">
- <method name="Void .ctor()">
- <size>7</size>
+ <method name="Void set_test(Boolean)">
+ <size>1</size>
</method>
- <method name="Void .cctor()">
- <size>46</size>
+ <method name="Void <Main>m__0(Int32)">
+ <size>1</size>
</method>
- <method name="Int32 Main()">
- <size>6</size>
+ <method name="Void .ctor()">
+ <size>7</size>
</method>
</type>
- <type name="TestFunc">
- <method name="Void .ctor(Object, IntPtr)">
- <size>0</size>
- </method>
+ <type name="ClassMain+D">
<method name="Void Invoke(Int32)">
<size>0</size>
</method>
<method name="Void EndInvoke(IAsyncResult)">
<size>0</size>
</method>
- </type>
- <type name="TestClass">
- <method name="Void <a>m__0(Int32)">
- <size>7</size>
+ <method name="Void .ctor(Object, IntPtr)">
+ <size>0</size>
</method>
</type>
</test>
</type>
</test>
<test name="test-579.cs">
- <type name="X">
+ <type name="TestCase">
+ <method name="Int32 Main()">
+ <size>32</size>
+ </method>
<method name="Void .ctor()">
<size>7</size>
</method>
- <method name="Void Main()">
- <size>35</size>
- </method>
- <method name="Void DoCall(X+test)">
- <size>1</size>
- </method>
- </type>
- <type name="X+test">
- <method name="Void .ctor(Object, IntPtr)">
- <size>0</size>
- </method>
- <method name="System.Object Invoke(System.Reflection.MethodInfo)">
- <size>0</size>
- </method>
- <method name="IAsyncResult BeginInvoke(System.Reflection.MethodInfo, System.AsyncCallback, System.Object)">
- <size>0</size>
- </method>
- <method name="System.Object EndInvoke(IAsyncResult)">
- <size>0</size>
- </method>
- </type>
- <type name="X">
- <method name="System.Object <Main>m__0(System.Reflection.MethodInfo)">
- <size>18</size>
- </method>
</type>
</test>
<test name="test-58.cs">
<size>76</size>
</method>
<method name="System.String BuildNode_D()">
- <size>157</size>
+ <size>156</size>
</method>
<method name="Void BuildNode_E(System.String[,] ByRef)">
<size>68</size>
</method>
</type>
</test>
- <test name="test-629.cs">
- <type name="Foo">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="IEnumerable foo()">
- <size>16</size>
- </method>
- <method name="Int32 Main()">
- <size>67</size>
- </method>
- </type>
- <type name="Foo+<foo>c__Iterator0">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
- <size>7</size>
- </method>
- <method name="Boolean MoveNext()">
- <size>39</size>
- </method>
- <method name="Void Dispose()">
- <size>8</size>
- </method>
- <method name="Void Reset()">
- <size>6</size>
- </method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
- <size>26</size>
- </method>
- </type>
- </test>
<test name="test-63.cs">
<type name="X">
<method name="Void .ctor()">
</method>
</type>
</test>
- <test name="test-645.cs">
- <type name="Program">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="IEnumerable get_Empty()">
- <size>16</size>
- </method>
- <method name="Void Main()">
- <size>61</size>
- </method>
- </type>
- <type name="Program+<>c__Iterator0">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
- <size>7</size>
- </method>
- <method name="Boolean MoveNext()">
- <size>158</size>
- </method>
- <method name="Void Dispose()">
- <size>8</size>
- </method>
- <method name="Void Reset()">
- <size>6</size>
- </method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
- <size>26</size>
- </method>
- </type>
- </test>
<test name="test-646.cs">
<type name="Program">
<method name="Void .ctor()">
<size>51</size>
</method>
<method name="Void Foo()">
- <size>145</size>
+ <size>148</size>
</method>
</type>
</test>
<size>23</size>
</method>
<method name="Void Main()">
- <size>127</size>
+ <size>128</size>
</method>
</type>
</test>
<test name="test-729.cs">
<type name="Primes.MainClass">
<method name="Int32 Main()">
- <size>141</size>
+ <size>136</size>
</method>
<method name="Void .ctor()">
<size>7</size>
<test name="test-800.cs">
<type name="C">
<method name="Void Main()">
+ <size>5</size>
+ </method>
+ <method name="Void .ctor()">
<size>7</size>
</method>
+ </type>
+ </test>
+ <test name="test-801.cs">
+ <type name="C">
+ <method name="Int32 Main()">
+ <size>154</size>
+ </method>
+ <method name="E op_Implicit(C)">
+ <size>3</size>
+ </method>
+ <method name="Int32 op_Implicit(C)">
+ <size>2</size>
+ </method>
<method name="Void .ctor()">
<size>7</size>
</method>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>259</size>
+ <size>256</size>
</method>
<method name="System.Collections.ArrayList Find(predicate, System.Collections.ArrayList)">
<size>83</size>
</type>
</test>
<test name="test-anon-31.cs">
- <type name="test">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="IEnumerable testen(Int32)">
- <size>30</size>
+ <type name="X">
+ <method name="Void Main()">
+ <size>35</size>
</method>
- </type>
- <type name="reflect">
- <method name="Void .ctor()">
- <size>7</size>
+ <method name="Void DoCall(X+test)">
+ <size>1</size>
</method>
- <method name="Void Main(System.String[])">
- <size>122</size>
+ <method name="System.Object <Main>m__0(System.Reflection.MethodInfo)">
+ <size>18</size>
</method>
- </type>
- <type name="test+<testen>c__Iterator0">
<method name="Void .ctor()">
<size>7</size>
</method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
- </method>
- <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
- <size>7</size>
- </method>
- <method name="Boolean MoveNext()">
- <size>195</size>
- </method>
- <method name="Void Dispose()">
- <size>8</size>
+ </type>
+ <type name="X+test">
+ <method name="System.Object Invoke(System.Reflection.MethodInfo)">
+ <size>0</size>
</method>
- <method name="Void Reset()">
- <size>6</size>
+ <method name="IAsyncResult BeginInvoke(System.Reflection.MethodInfo, System.AsyncCallback, System.Object)">
+ <size>0</size>
</method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
- <size>7</size>
+ <method name="System.Object EndInvoke(IAsyncResult)">
+ <size>0</size>
</method>
- <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
- <size>40</size>
+ <method name="Void .ctor(Object, IntPtr)">
+ <size>0</size>
</method>
</type>
</test>
</type>
</test>
<test name="test-anon-35.cs">
- <type name="CustomDict">
- <method name="Void .ctor()">
- <size>68</size>
+ <type name="ExceptionWithAnonMethod">
+ <method name="Int32 Main()">
+ <size>96</size>
</method>
- <method name="IEnumerator GetEnumerator()">
- <size>15</size>
+ <method name="Void AnonHandler(ExceptionWithAnonMethod+EmptyCallback)">
+ <size>13</size>
</method>
- </type>
- <type name="Tests">
<method name="Void .ctor()">
<size>7</size>
</method>
- <method name="Void Main()">
- <size>7</size>
- </method>
</type>
- <type name="CustomDict+<GetEnumerator>c__Iterator0">
- <method name="Void .ctor()">
- <size>7</size>
+ <type name="ExceptionWithAnonMethod+EmptyCallback">
+ <method name="Void Invoke()">
+ <size>0</size>
</method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
+ <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+ <size>0</size>
</method>
- <method name="Boolean MoveNext()">
- <size>86</size>
+ <method name="Void EndInvoke(IAsyncResult)">
+ <size>0</size>
</method>
- <method name="Void Dispose()">
- <size>8</size>
+ <method name="Void .ctor(Object, IntPtr)">
+ <size>0</size>
</method>
- <method name="Void Reset()">
- <size>6</size>
+ </type>
+ <type name="ExceptionWithAnonMethod+<Main>c__AnonStorey0">
+ <method name="Void <>m__0()">
+ <size>33</size>
</method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <method name="Void .ctor()">
<size>7</size>
</method>
</type>
</type>
</test>
<test name="test-anon-45.cs">
- <type name="Test">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
- <method name="Void Main()">
- <size>66</size>
- </method>
- <method name="IEnumerator GetEnumerator()">
- <size>8</size>
+ <type name="TestFunc">
+ <method name="Void Invoke(Int32)">
+ <size>0</size>
</method>
- </type>
- <type name="Test+<GetEnumerator>c__Iterator0">
- <method name="Void .ctor()">
- <size>7</size>
+ <method name="IAsyncResult BeginInvoke(Int32, System.AsyncCallback, System.Object)">
+ <size>0</size>
</method>
- <method name="System.Object System.Collections.IEnumerator.get_Current()">
- <size>7</size>
+ <method name="Void EndInvoke(IAsyncResult)">
+ <size>0</size>
</method>
- <method name="Boolean MoveNext()">
- <size>77</size>
+ <method name="Void .ctor(Object, IntPtr)">
+ <size>0</size>
</method>
- <method name="Void Dispose()">
- <size>8</size>
+ </type>
+ <type name="A">
+ <method name="Void .ctor(TestFunc)">
+ <size>14</size>
</method>
- <method name="Void Reset()">
+ </type>
+ <type name="TestClass">
+ <method name="Int32 Main()">
<size>6</size>
</method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <method name="Void <a>m__0(Int32)">
+ <size>7</size>
+ </method>
+ <method name="Void .ctor()">
<size>7</size>
</method>
+ <method name="Void .cctor()">
+ <size>46</size>
+ </method>
</type>
</test>
<test name="test-anon-46.cs">
<size>1</size>
</method>
<method name="Void Test(Int32)">
- <size>158</size>
+ <size>153</size>
</method>
</type>
<type name="X">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>187</size>
+ <size>197</size>
</method>
<method name="Void Dispose()">
- <size>64</size>
+ <size>76</size>
</method>
<method name="Void Reset()">
<size>6</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>201</size>
+ <size>199</size>
</method>
<method name="Void <>m__0()">
<size>22</size>
<size>7</size>
</method>
<method name="Int32 Test(Int32)">
- <size>344</size>
+ <size>342</size>
</method>
<method name="Int32 Main()">
<size>46</size>
<size>7</size>
</method>
<method name="Int32 Test(Int32)">
- <size>515</size>
+ <size>512</size>
</method>
<method name="Int32 Main()">
<size>46</size>
<size>7</size>
</method>
<method name="Int32 Test(Int32)">
- <size>567</size>
+ <size>564</size>
</method>
<method name="Int32 Main()">
<size>46</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>195</size>
+ <size>193</size>
</method>
<method name="Int32 <>m__0()">
<size>44</size>
<size>12</size>
</method>
<method name="Void Test()">
- <size>102</size>
+ <size>97</size>
</method>
</type>
<type name="C+D">
<size>7</size>
</method>
<method name="Void <>m__0()">
- <size>109</size>
+ <size>108</size>
</method>
</type>
<type name="C+<Test>c__AnonStorey0+<Test>c__AnonStorey1">
<size>3</size>
</method>
<method name="Program+D Get(Int32)">
- <size>115</size>
+ <size>128</size>
</method>
<method name="Int32 Run(Int32)">
<size>12</size>
</method>
</type>
<type name="Program+<Get>c__AnonStorey0">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Program+<Get>c__AnonStorey1">
<method name="Int32 <>m__0()">
- <size>19</size>
+ <size>24</size>
</method>
<method name="Int32 <>m__1()">
- <size>19</size>
+ <size>24</size>
</method>
<method name="Int32 <>m__2()">
+ <size>19</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-anon-97.cs">
+ <type name="Space">
+ <method name="Void Leak(Boolean, Int32)">
+ <size>85</size>
+ </method>
+ <method name="Void .ctor()">
<size>14</size>
</method>
+ </type>
+ <type name="Space+DoCopy">
+ <method name="Void Invoke()">
+ <size>0</size>
+ </method>
+ <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+ <size>0</size>
+ </method>
+ <method name="Void EndInvoke(IAsyncResult)">
+ <size>0</size>
+ </method>
+ <method name="Void .ctor(Object, IntPtr)">
+ <size>0</size>
+ </method>
+ </type>
+ <type name="Program">
+ <method name="Void Main(System.String[])">
+ <size>1</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Space+<Leak>c__AnonStorey1">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Space+<Leak>c__AnonStorey0">
+ <method name="Void <>m__0()">
+ <size>18</size>
+ </method>
+ <method name="Void <>m__1()">
+ <size>68</size>
+ </method>
<method name="Void .ctor()">
<size>7</size>
</method>
<size>16</size>
</method>
<method name="Int32 Main()">
- <size>173</size>
+ <size>172</size>
</method>
</type>
<type name="X+<GetIt>c__Iterator0">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>126</size>
+ <size>124</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>126</size>
+ <size>124</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>173</size>
+ <size>171</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>30</size>
</method>
<method name="Int32 Main()">
- <size>248</size>
+ <size>247</size>
</method>
</type>
<type name="<PrivateImplementationDetails>">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>151</size>
+ <size>149</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>238</size>
+ <size>236</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>123</size>
+ <size>121</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>183</size>
+ <size>181</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>30</size>
</method>
<method name="Int32 Main()">
- <size>407</size>
+ <size>403</size>
</method>
</type>
<type name="S+<Get>c__Iterator0">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>183</size>
+ <size>181</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>136</size>
+ <size>134</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>131</size>
+ <size>129</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>136</size>
+ <size>134</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>374</size>
+ <size>373</size>
</method>
</type>
<type name="Test+<Foo>c__Iterator0">
</test>
<test name="test-iter-08.cs">
<type name="Foo">
- <method name="Void .ctor(Int32)">
- <size>14</size>
- </method>
<method name="Void Dispose()">
<size>8</size>
</method>
+ <method name="Void .ctor(Int32)">
+ <size>14</size>
+ </method>
</type>
<type name="X">
- <method name="Void .ctor()">
- <size>7</size>
- </method>
<method name="IEnumerable Test(Int32, Int32)">
<size>44</size>
</method>
<method name="Int32 Main()">
<size>169</size>
</method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
</type>
<type name="X+<Test>c__Iterator0">
- <method name="Void .ctor()">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
<size>7</size>
</method>
<method name="System.Object System.Collections.IEnumerator.get_Current()">
<method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
<size>7</size>
</method>
+ <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+ <size>52</size>
+ </method>
<method name="Boolean MoveNext()">
- <size>360</size>
+ <size>358</size>
</method>
<method name="Void Dispose()">
<size>102</size>
<method name="Void Reset()">
<size>6</size>
</method>
- <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <method name="Void .ctor()">
<size>7</size>
</method>
- <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
- <size>52</size>
- </method>
</type>
</test>
<test name="test-iter-09.cs">
<size>7</size>
</method>
<method name="Int32 Main()">
- <size>270</size>
+ <size>268</size>
</method>
</type>
<type name="Tester+<GetEnumerator>c__Iterator0">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>625</size>
+ <size>635</size>
</method>
<method name="Void Dispose()">
- <size>84</size>
+ <size>96</size>
</method>
<method name="Void Reset()">
<size>6</size>
<size>1</size>
</method>
<method name="Int32 Main()">
- <size>186</size>
+ <size>184</size>
</method>
</type>
<type name="X+<>c__Iterator0">
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>126</size>
+ <size>124</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>145</size>
+ <size>143</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>124</size>
+ <size>122</size>
</method>
<method name="Void Dispose()">
<size>8</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>165</size>
+ <size>163</size>
</method>
<method name="Void Dispose()">
<size>55</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>27</size>
+ <size>25</size>
</method>
<method name="Void Dispose()">
<size>8</size>
</method>
</type>
</test>
+ <test name="test-iter-14.cs">
+ <type name="XX">
+ <method name="Void Metodo(System.Exception)">
+ <size>37</size>
+ </method>
+ <method name="IEnumerable X()">
+ <size>16</size>
+ </method>
+ <method name="Void Main()">
+ <size>65</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="XX+<X>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+ <size>26</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>103</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>8</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-iter-15.cs">
+ <type name="Test">
+ <method name="IEnumerator GetEnumerator()">
+ <size>15</size>
+ </method>
+ <method name="Void Main()">
+ <size>11</size>
+ </method>
+ <method name="Void Run()">
+ <size>177</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Test+<GetEnumerator>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>127</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>8</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-iter-16.cs">
+ <type name="Foo">
+ <method name="IEnumerable foo()">
+ <size>16</size>
+ </method>
+ <method name="Int32 Main()">
+ <size>67</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Foo+<foo>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+ <size>26</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>37</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>8</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-iter-17.cs">
+ <type name="Program">
+ <method name="IEnumerable get_Empty()">
+ <size>16</size>
+ </method>
+ <method name="Void Main()">
+ <size>61</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Program+<>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+ <size>26</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>156</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>8</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-iter-18.cs">
+ <type name="test">
+ <method name="IEnumerable testen(Int32)">
+ <size>30</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="reflect">
+ <method name="Void Main(System.String[])">
+ <size>119</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="test+<testen>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+ <size>40</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>193</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>8</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-iter-19.cs">
+ <type name="Test">
+ <method name="Void Main()">
+ <size>66</size>
+ </method>
+ <method name="IEnumerator GetEnumerator()">
+ <size>8</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Test+<GetEnumerator>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>75</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>8</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-iter-20.cs">
+ <type name="CustomDict">
+ <method name="IEnumerator GetEnumerator()">
+ <size>15</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>68</size>
+ </method>
+ </type>
+ <type name="Tests">
+ <method name="Void Main()">
+ <size>7</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="CustomDict+<GetEnumerator>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>84</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>8</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-iter-21.cs">
+ <type name="X">
+ <method name="IEnumerable GetIt(System.Int32[])">
+ <size>30</size>
+ </method>
+ <method name="Int32 Main()">
+ <size>119</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="X+A">
+ <method name="Void Invoke()">
+ <size>0</size>
+ </method>
+ <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)">
+ <size>0</size>
+ </method>
+ <method name="Void EndInvoke(IAsyncResult)">
+ <size>0</size>
+ </method>
+ <method name="Void .ctor(Object, IntPtr)">
+ <size>0</size>
+ </method>
+ </type>
+ <type name="X+<GetIt>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+ <size>7</size>
+ </method>
+ <method name="IEnumerator`1 System.Collections.Generic.IEnumerable<object>.GetEnumerator()">
+ <size>40</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>199</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>8</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void <>m__0()">
+ <size>22</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="<PrivateImplementationDetails>">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="test-iter-22.cs">
+ <type name="Test">
+ <method name="Void Main()">
+ <size>66</size>
+ </method>
+ <method name="IEnumerator GetEnumerator()">
+ <size>8</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Test+<GetEnumerator>c__Iterator0">
+ <method name="System.Object System.Collections.Generic.IEnumerator<object>.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>7</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>197</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>76</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
<test name="test-named-01.cs">
<type name="A">
<method name="Void .ctor()">
<size>30</size>
</method>
<method name="Int32 Main()">
- <size>279</size>
+ <size>274</size>
</method>
</type>
</test>
<size>40</size>
</method>
<method name="Int32 Main()">
- <size>239</size>
+ <size>242</size>
</method>
<method name="Void .ctor()">
<size>7</size>
<size>7</size>
</method>
<method name="Boolean MoveNext()">
- <size>69</size>
+ <size>67</size>
</method>
<method name="Void Dispose()">
<size>8</size>
$(per_profile_dirs) \
corcompare \
mono-xmltool \
- mdoc \
mono-shlib-cop \
sgen \
mconfig \
net_2_0_dirs := \
$(per_profile_dirs) \
monodoc \
+ mdoc \
compiler-tester
moonlight_dirs := \
/r:System.Web.dll \
/r:System.Xml.Linq.dll \
/r:ICSharpCode.SharpZipLib.dll \
- /r:$(topdir)/class/lib/net_4_0/Mono.Cecil.dll
+ /r:Mono.Cecil.dll
LOCAL_MCS_FLAGS = $(MDOC_COMMON_FLAGS) \
/r:$(topdir)/class/lib/net_2_0/monodoc.dll
string retnodename = null;
if (returntype != null && returntype.FullName != "System.Void") { // FIXME
- info.ReturnNodeName = retnodename = returnisreturn ? "returns" : "value";
+ retnodename = returnisreturn ? "returns" : "value";
string retnodename_other = !returnisreturn ? "returns" : "value";
// If it has a returns node instead of a value node, change its name.
if (DocUtils.IsDelegate (type)) {
Parameters = type.GetMethod("Invoke").Parameters;
ReturnType = type.GetMethod("Invoke").ReturnType.ReturnType;
+ ReturnIsReturn = true;
}
}
public bool AddRemarks = true;
public IMemberReference Member;
public TypeDefinition Type;
- public string ReturnNodeName;
}
class DocumentationEnumerator {
// properties, so let's try to normalize things.
case "value":
case "returns": {
- XmlElement v = e.OwnerDocument.CreateElement (info.ReturnNodeName ?? child.Name);
+ XmlElement v = e.OwnerDocument.CreateElement (info.ReturnIsReturn ? "returns" : "value");
v.InnerXml = child.InnerXml;
e.AppendChild (v);
break;
<typeparam name="TRet">return type, with attributes!</typeparam>
<param name="a">To be added.</param>
<summary>To be added.</summary>
- <value>To be added.</value>
+ <returns>To be added.</returns>
<remarks>
<c>T:Mono.DocTest.Generic.Func`2</c>.</remarks>
</Docs>
<typeparam name="TRet">To be added.</typeparam>
<param name="a">To be added.</param>
<summary>To be added.</summary>
- <value>To be added.</value>
+ <returns>To be added.</returns>
<remarks>To be added.</remarks>
</Docs>
</Type>
<typeparam name="TRet">To be added.</typeparam>
<param name="a">To be added.</param>
<summary>To be added.</summary>
- <value>To be added.</value>
+ <returns>To be added.</returns>
<remarks>To be added.</remarks>
</Docs>
</Type>
</dl>
</blockquote>
<h4 class="Subsection">
- <a href="javascript:toggle_display('T:Mono.DocTest.Generic.Func`2:Docs:Value')">
- <span id="T:Mono.DocTest.Generic.Func`2:Docs:Value:toggle">⊟</span> Value</a>
+ <a href="javascript:toggle_display('T:Mono.DocTest.Generic.Func`2:Docs:Returns')">
+ <span id="T:Mono.DocTest.Generic.Func`2:Docs:Returns:toggle">⊟</span> Returns</a>
</h4>
- <blockquote class="SubsectionBox" id="T:Mono.DocTest.Generic.Func`2:Docs:Value">
+ <blockquote class="SubsectionBox" id="T:Mono.DocTest.Generic.Func`2:Docs:Returns">
<span class="NotEntered">Documentation for this section has not yet been entered.</span>
</blockquote>
<h4 class="Subsection">
<typeparam name="TRet">return type, with attributes!</typeparam>
<param name="a">To be added.</param>
<summary>To be added.</summary>
- <value>To be added.</value>
+ <returns>To be added.</returns>
<remarks>
<c>T:Mono.DocTest.Generic.Func`2</c>.</remarks>
</member>
include ../../build/rules.make
HAS_NUNIT_TEST = yes
+BUILD_FRAMEWORK = Microsoft.Build.Framework.dll
+BUILD_ENGINE = Microsoft.Build.Engine.dll
+
ifeq (3.5, $(FRAMEWORK_VERSION))
NAME_SUFFIX = .v3.5
ASSEMBLY_VERSION = 3.5.0.0
+BUILD_FRAMEWORK := $(topdir)/class/lib/$(PROFILE)/$(BUILD_FRAMEWORK)
+BUILD_ENGINE := $(topdir)/class/lib/$(PROFILE)/$(BUILD_ENGINE)
else
ifeq (4.0, $(FRAMEWORK_VERSION))
NAME_SUFFIX = .v4.0
endif
endif
-LOCAL_MCS_FLAGS = -r:Microsoft.Build.Framework.dll -r:Microsoft.Build.Utilities$(NAME_SUFFIX).dll -r:Microsoft.Build.Engine.dll
+LOCAL_MCS_FLAGS = -r:$(BUILD_FRAMEWORK) -r:Microsoft.Build.Utilities$(NAME_SUFFIX).dll -r:$(BUILD_ENGINE)
PROGRAM = $(topdir)/class/lib/$(PROFILE)/xbuild.exe
include ../../build/executable.make
%define sgen no
%endif
-%if %llvm == yes
-%define enable_llvm --enable-loadedllvm
-%endif
-
Name: mono-core
License: LGPL v2.1 only
Group: Development/Languages/Mono
Summary: A .NET Runtime Environment
Url: http://www.mono-project.com
Version: @VERSION@
-Release: 30
+Release: 0
Source0: mono-%{version}.tar.bz2
BuildRequires: bison
BuildRequires: gcc-c++
+BuildRequires: fdupes
BuildRequires: pkgconfig
BuildRequires: zlib-devel
%ifnarch ia64
Conflicts: helix-banshee < 1.0
Conflicts: mono-addins < 0.3.1
Recommends: libgdiplus0 >= 2.6
+%if %llvm == yes
+Recommends: libmono-llvm0 = %{version}-%{release}
+%endif
Provides: mono(Commons.Xml.Relaxng) = 1.0.5000.0
Provides: mono(CustomMarshalers) = 1.0.5000.0
Provides: mono(I18N) = 1.0.5000.0
Provides: mono(System.Xml) = 1.0.5000.0
Provides: mono(mscorlib) = 1.0.5000.0
+%define _use_internal_dependency_generator 0
%define __find_provides env sh -c 'filelist=($(cat)) && { printf "%s\\n" "${filelist[@]}" | /usr/lib/rpm/find-provides && printf "%s\\n" "${filelist[@]}" | prefix=%{buildroot}%{_prefix} %{buildroot}%{_bindir}/mono-find-provides ; } | sort | uniq'
%define __find_requires env sh -c 'filelist=($(cat)) && { printf "%s\\n" "${filelist[@]}" | /usr/lib/rpm/find-requires && printf "%s\\n" "${filelist[@]}" | prefix=%{buildroot}%{_prefix} %{buildroot}%{_bindir}/mono-find-requires ; } | sort | uniq'
export PATH=/opt/novell/llvm-mono/bin:$PATH
%endif
%configure \
- --with-ikvm=yes \
--with-sgen=%{sgen} \
- %{?enable_llvm} \
+%if %llvm == yes
+ --enable-loadedllvm \
+ --disable-system-aot \
+%endif
+ --with-ikvm=yes \
--with-moonlight=no
make # We are not -jN safe! %{?jobs:-j%jobs}
rm -f %buildroot%_prefix/lib/mono/2.0/cilc.exe*
# brp-compress doesn't search _mandir
# so we cheat it
-ln -s . %buildroot%_prefix/usr
+ln -s . %buildroot%_prefix%_prefix
RPM_BUILD_ROOT=%buildroot%_prefix /usr/lib/rpm/brp-compress
-rm %buildroot%_prefix/usr
+rm %buildroot%_prefix%_prefix
+%fdupes %buildroot%_prefix
%find_lang mcs
%clean
%dir %_sysconfdir/mono
%dir %_sysconfdir/mono/2.0
%dir %_sysconfdir/mono/4.0
+%_bindir/al
+%_bindir/al2
%_bindir/certmgr
%_bindir/chktrust
%_bindir/csharp
%_prefix/lib/mono/2.0/System.Configuration.dll
%_prefix/lib/mono/2.0/System.Core.dll
%_prefix/lib/mono/2.0/System.Drawing.dll
+%_prefix/lib/mono/2.0/System.Net.dll
%_prefix/lib/mono/2.0/System.Security.dll
%_prefix/lib/mono/2.0/System.Xml.Linq.dll
%_prefix/lib/mono/2.0/System.Xml.dll
%_prefix/lib/mono/2.0/System.dll
+%_prefix/lib/mono/2.0/al.exe*
%_prefix/lib/mono/2.0/cscompmgd.dll
%_prefix/lib/mono/2.0/csharp.exe*
%_prefix/lib/mono/2.0/gacutil.exe*
%_prefix/lib/mono/4.0/System.Core.dll
%_prefix/lib/mono/4.0/System.Drawing.dll
%_prefix/lib/mono/4.0/System.Dynamic.dll
+%_prefix/lib/mono/4.0/System.Net.dll
%_prefix/lib/mono/4.0/System.Numerics.dll
%_prefix/lib/mono/4.0/System.Security.dll
%_prefix/lib/mono/4.0/System.Xml.Linq.dll
%_prefix/lib/mono/4.0/System.Xml.dll
%_prefix/lib/mono/4.0/System.dll
+%_prefix/lib/mono/4.0/al.exe*
%_prefix/lib/mono/4.0/certmgr.exe*
%_prefix/lib/mono/4.0/chktrust.exe*
%_prefix/lib/mono/4.0/cscompmgd.dll
%_prefix/lib/mono/gac/System.Core
%_prefix/lib/mono/gac/System.Drawing
%_prefix/lib/mono/gac/System.Dynamic
+%_prefix/lib/mono/gac/System.Net
%_prefix/lib/mono/gac/System.Numerics
%_prefix/lib/mono/gac/System.Security
%_prefix/lib/mono/gac/System.Xml
License: LGPL v2.1 only
Summary: Development files for libmono
Group: Development/Languages/Mono
+Requires: mono-core == %version-%release
%description -n libmono-2_0-devel
The Mono Project is an open development initiative that is working to
License: LGPL v2.1 only
Summary: Development files for libmonosgen
Group: Development/Languages/Mono
+Requires: mono-core == %version-%release
%description -n libmonosgen-2_0-devel
The Mono Project is an open development initiative that is working to
Provides: mono-directory
Provides: mono-ms-enterprise
Provides: mono-novell-directory
-Provides: mono(Mono.Data) = 1.0.5000.0
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
%_prefix/lib/mono/2.0/Novell.Directory.Ldap.dll
%_prefix/lib/mono/2.0/System.Data.DataSetExtensions.dll
%_prefix/lib/mono/2.0/System.Data.Linq.dll
-%_prefix/lib/mono/2.0/System.Data.Services.dll
%_prefix/lib/mono/2.0/System.Data.dll
%_prefix/lib/mono/2.0/System.DirectoryServices.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
%_prefix/lib/mono/4.0/Mono.Data.Tds.dll
%_prefix/lib/mono/4.0/Novell.Directory.Ldap.dll
%_prefix/lib/mono/4.0/System.Data.DataSetExtensions.dll
%_prefix/lib/mono/4.0/System.Data.Linq.dll
-%_prefix/lib/mono/4.0/System.Data.Services.dll
%_prefix/lib/mono/4.0/System.Data.dll
%_prefix/lib/mono/4.0/System.DirectoryServices.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
%_prefix/lib/mono/4.0/sqlmetal.exe*
%_prefix/lib/mono/4.0/sqlsharp.exe*
%_prefix/lib/mono/gac/System.Data
%_prefix/lib/mono/gac/System.Data.DataSetExtensions
%_prefix/lib/mono/gac/System.Data.Linq
-%_prefix/lib/mono/gac/System.Data.Services
%_prefix/lib/mono/gac/System.DirectoryServices
%_prefix/lib/mono/gac/System.EnterpriseServices
+%_prefix/lib/mono/gac/System.Runtime.Serialization
%_prefix/lib/mono/gac/System.Transactions
%package -n mono-winforms
%defattr(-, root, root)
%_bindir/svcutil
%_libdir/pkgconfig/wcf.pc
+%_prefix/lib/mono/2.0/System.Data.Services.dll
%_prefix/lib/mono/2.0/System.IdentityModel.Selectors.dll
%_prefix/lib/mono/2.0/System.IdentityModel.dll
-%_prefix/lib/mono/2.0/System.Runtime.Serialization.dll
%_prefix/lib/mono/2.0/System.ServiceModel.Web.dll
%_prefix/lib/mono/2.0/System.ServiceModel.dll
+%_prefix/lib/mono/4.0/System.Data.Services.dll
%_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.Runtime.Serialization.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
%_prefix/lib/mono/4.0/System.ServiceModel.dll
-%_prefix/lib/mono/4.0/System.Web.ApplicationServices.dll
%_prefix/lib/mono/4.0/svcutil.exe*
-%_prefix/lib/mono/gac/System.Data.Services.Client
+%_prefix/lib/mono/gac/System.Data.Services
%_prefix/lib/mono/gac/System.IdentityModel
%_prefix/lib/mono/gac/System.IdentityModel.Selectors
%_prefix/lib/mono/gac/System.Runtime.DurableInstancing
-%_prefix/lib/mono/gac/System.Runtime.Serialization
%_prefix/lib/mono/gac/System.ServiceModel
%_prefix/lib/mono/gac/System.ServiceModel.Discovery
%_prefix/lib/mono/gac/System.ServiceModel.Routing
%_prefix/lib/mono/gac/System.ServiceModel.Web
-%_prefix/lib/mono/gac/System.Web.ApplicationServices
%package -n mono-winfxcore
License: MIT License (or similar) ; Ms-Pl
%defattr(-, root, root)
%_prefix/lib/mono/2.0/WindowsBase.dll*
%_prefix/lib/mono/4.0/WindowsBase.dll*
+%_prefix/lib/mono/gac/System.Data.Services.Client
%_prefix/lib/mono/gac/WindowsBase
%package -n mono-web
%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/DefaultWsdlHelpGenerator.aspx
%config %_sysconfdir/mono/4.0/web.config
%config %_sysconfdir/mono/browscap.ini
%config %_sysconfdir/mono/mconfig/config.xml
%_bindir/wsdl2
%_bindir/xsd
%_libdir/pkgconfig/mono.web.pc
-%_libdir/pkgconfig/system.web.extensions.design_1.0.pc
-%_libdir/pkgconfig/system.web.extensions_1.0.pc
-%_libdir/pkgconfig/system.web.mvc.pc
-%_libdir/pkgconfig/system.web.mvc2.pc
%_mandir/man1/disco.1%ext_man
%_mandir/man1/mconfig.1%ext_man
%_mandir/man1/soapsuds.1%ext_man
%_prefix/lib/mono/2.0/System.Runtime.Serialization.Formatters.Soap.dll
%_prefix/lib/mono/2.0/System.Web.Abstractions.dll
%_prefix/lib/mono/2.0/System.Web.DynamicData.dll
-%_prefix/lib/mono/2.0/System.Web.Extensions.Design.dll
-%_prefix/lib/mono/2.0/System.Web.Extensions.dll
-%_prefix/lib/mono/2.0/System.Web.Mvc.dll
%_prefix/lib/mono/2.0/System.Web.Routing.dll
%_prefix/lib/mono/2.0/System.Web.Services.dll
%_prefix/lib/mono/2.0/System.Web.dll
%_prefix/lib/mono/2.0/wsdl.exe*
%_prefix/lib/mono/2.0/xsd.exe*
-%_prefix/lib/mono/3.5/System.Web.Extensions.Design.dll
%_prefix/lib/mono/4.0/Mono.Http.dll
%_prefix/lib/mono/4.0/Mono.Web.dll
%_prefix/lib/mono/4.0/System.ComponentModel.Composition.dll
%_prefix/lib/mono/4.0/System.Runtime.Remoting.dll
%_prefix/lib/mono/4.0/System.Runtime.Serialization.Formatters.Soap.dll
%_prefix/lib/mono/4.0/System.Web.Abstractions.dll
+%_prefix/lib/mono/4.0/System.Web.ApplicationServices.dll
%_prefix/lib/mono/4.0/System.Web.DynamicData.dll
-%_prefix/lib/mono/4.0/System.Web.Extensions.Design.dll
-%_prefix/lib/mono/4.0/System.Web.Extensions.dll
%_prefix/lib/mono/4.0/System.Web.Routing.dll
%_prefix/lib/mono/4.0/System.Web.Services.dll
%_prefix/lib/mono/4.0/System.Web.dll
%_prefix/lib/mono/4.0/soapsuds.exe*
%_prefix/lib/mono/4.0/wsdl.exe*
%_prefix/lib/mono/4.0/xsd.exe*
-%_prefix/lib/mono/compat-2.0/System.Web.Extensions.Design.dll
-%_prefix/lib/mono/compat-2.0/System.Web.Extensions.dll
-%_prefix/lib/mono/compat-2.0/System.Web.Mvc.dll
%_prefix/lib/mono/gac/Mono.Http
%_prefix/lib/mono/gac/Mono.Web
%_prefix/lib/mono/gac/System.ComponentModel.Composition
%_prefix/lib/mono/gac/System.Runtime.Serialization.Formatters.Soap
%_prefix/lib/mono/gac/System.Web
%_prefix/lib/mono/gac/System.Web.Abstractions
+%_prefix/lib/mono/gac/System.Web.ApplicationServices
%_prefix/lib/mono/gac/System.Web.DynamicData
+%_prefix/lib/mono/gac/System.Web.Routing
+%_prefix/lib/mono/gac/System.Web.Services
+
+%package -n mono-mvc
+License: MIT License (or similar) ; Ms-Pl
+Summary: Mono implementation of ASP.NET MVC
+Group: Development/Languages/Mono
+Requires: mono-core == %version-%release
+
+%description -n mono-mvc
+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.
+
+Mono implementation of ASP.NET MVC.
+
+%files -n mono-mvc
+%defattr(-, root, root)
+%_libdir/pkgconfig/system.web.extensions.design_1.0.pc
+%_libdir/pkgconfig/system.web.extensions_1.0.pc
+%_libdir/pkgconfig/system.web.mvc.pc
+%_libdir/pkgconfig/system.web.mvc2.pc
+%_prefix/lib/mono/2.0/System.Web.Extensions.Design.dll
+%_prefix/lib/mono/2.0/System.Web.Extensions.dll
+%_prefix/lib/mono/2.0/System.Web.Mvc.dll
+%_prefix/lib/mono/4.0/System.Web.Extensions.Design.dll
+%_prefix/lib/mono/4.0/System.Web.Extensions.dll
+%_prefix/lib/mono/compat-2.0/System.Web.Extensions.Design.dll
+%_prefix/lib/mono/compat-2.0/System.Web.Extensions.dll
+%_prefix/lib/mono/compat-2.0/System.Web.Mvc.dll
%_prefix/lib/mono/gac/System.Web.Extensions
%_prefix/lib/mono/gac/System.Web.Extensions.Design
%_prefix/lib/mono/gac/System.Web.Mvc
-%_prefix/lib/mono/gac/System.Web.Routing
-%_prefix/lib/mono/gac/System.Web.Services
%package -n mono-data-oracle
License: LGPL v2.1 only
%files -n mono-devel
%defattr(-, root, root)
-%_bindir/al
-%_bindir/al2
%_bindir/caspol
%_bindir/ccrewrite
%_bindir/cert2spc
%_prefix/lib/mono/2.0/Microsoft.VisualBasic.targets
%_prefix/lib/mono/2.0/Mono.Debugger.Soft.dll
%_prefix/lib/mono/2.0/PEAPI.dll
-%_prefix/lib/mono/2.0/al.exe*
%_prefix/lib/mono/2.0/genxs.exe*
%_prefix/lib/mono/2.0/ilasm.exe*
%_prefix/lib/mono/2.0/mkbundle.exe*
%_prefix/lib/mono/4.0/Microsoft.VisualBasic.targets
%_prefix/lib/mono/4.0/Mono.CodeContracts.dll
%_prefix/lib/mono/4.0/PEAPI.dll
-%_prefix/lib/mono/4.0/al.exe*
%_prefix/lib/mono/4.0/caspol.exe*
%_prefix/lib/mono/4.0/ccrewrite.exe*
%_prefix/lib/mono/4.0/cert2spc.exe*
License: LGPL v2.1 only
Summary: Monodoc - Documentation tools for C# code
Group: Development/Tools/Other
+Requires: mono-core == %version-%release
Obsoletes: monodoc
+Provides: monodoc
# Added to uncompress and compare documentation used by build-compare
Requires: unzip
%_mandir/man1/monodocer.1%ext_man
%_mandir/man1/monodocs2html.1%ext_man
%_mandir/man5/mdoc.5%ext_man
-%_prefix/lib/mono/4.0/mdoc.exe*
+%_prefix/lib/mono/2.0/mdoc.exe*
%_prefix/lib/mono/4.0/mod.exe*
%_prefix/lib/mono/gac/monodoc
%_prefix/lib/mono/monodoc
License: LGPL v2.1 only
Summary: Install everything built from the mono source tree
Group: Development/Languages/Mono
-Requires: bytefx-data-mysql = %version-%release
-Requires: ibm-data-db2 = %version-%release
Requires: mono-core = %version-%release
+Requires: ibm-data-db2 = %version-%release
+Requires: libmono-2_0-1 = %version-%release
+Requires: libmono-2_0-devel = %version-%release
+%if %llvm == yes
+Requires: libmono-llvm0 = %version-%release
+%endif
+%if %sgen == yes
+Requires: libmonosgen-2_0-0 = %version-%release
+Requires: libmonosgen-2_0-devel = %version-%release
+%endif
Requires: mono-data = %version-%release
-Requires: mono-data-firebird = %version-%release
Requires: mono-data-oracle = %version-%release
Requires: mono-data-postgresql = %version-%release
Requires: mono-data-sqlite = %version-%release
-Requires: mono-data-sybase = %version-%release
Requires: mono-devel = %version-%release
Requires: mono-extras = %version-%release
Requires: mono-locale-extras = %version-%release
Requires: mono-wcf = %version-%release
Requires: mono-web = %version-%release
Requires: mono-winforms = %version-%release
+Requires: mono-winfxcore = %version-%release
+Requires: monodoc-core = %version-%release
%description -n mono-complete
The Mono Project is an open development initiative that is working to
if (ms != NULL){
sig_str = dis_stringify_method_signature (m, ms, i + 1, container, FALSE);
method_name = mono_metadata_string_heap (m, cols [MONO_METHOD_NAME]);
- } else
+ } else {
+ sig_str = NULL;
method_name = g_strdup ("<NULL METHOD SIGNATURE>");
+ }
fprintf (output, " // method line %d\n", i + 1);
fprintf (output, " .method %s", flags);
gpointer OpenProcess (guint32 req_access G_GNUC_UNUSED, gboolean inherit G_GNUC_UNUSED, guint32 pid)
{
/* Find the process handle that corresponds to pid */
- gpointer handle;
+ gpointer handle = NULL;
mono_once (&process_current_once, process_set_current);
g_message ("%s: looking for process %d", __func__, pid);
#endif
- handle = _wapi_search_handle (WAPI_HANDLE_PROCESS,
- process_open_compare,
- GUINT_TO_POINTER (pid), NULL, TRUE);
+ if (_wapi_shm_enabled ())
+ handle = _wapi_search_handle (WAPI_HANDLE_PROCESS,
+ process_open_compare,
+ GUINT_TO_POINTER (pid), NULL, TRUE);
if (handle == 0) {
-#if defined(__OpenBSD__)
+#if defined(PLATFORM_MACOSX) || defined(__OpenBSD__)
if ((kill(pid, 0) == 0) || (errno == EPERM)) {
#elif defined(__HAIKU__)
team_info teamInfo;
g_free (wapi_storage [type]);
}
+gboolean
+_wapi_shm_enabled (void)
+{
+ return FALSE;
+}
+
#else
/*
* Use POSIX shared memory if possible, it is simpler, and it has the advantage that
platform_sources = $(unix_sources)
endif
+if SHARED_MONO
bin_PROGRAMS = pedump
+endif
#
# libtool is not capable of creating static/shared versions of the same
# convenience lib, so we have to do it ourselves
#
if SUPPORT_SGEN
-sgen_libraries = libmonoruntimesgen.la libmonoruntimesgen-static.la
+if SHARED_MONO
+shared_sgen_libraries = libmonoruntimesgen.la
+endif
+sgen_libraries = $(shared_sgen_libraries) libmonoruntimesgen-static.la
endif
-noinst_LTLIBRARIES = libmonoruntime.la libmonoruntime-static.la $(sgen_libraries)
+if MOONLIGHT
+moonlight_libraries = libmonoruntimemoon.la
+endif
+
+if SHARED_MONO
+shared_libraries = libmonoruntime.la
+endif
+noinst_LTLIBRARIES = $(shared_libraries) libmonoruntime-static.la $(sgen_libraries) $(moonlight_libraries)
INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/mono $(LIBGC_CFLAGS) $(GLIB_CFLAGS) -DMONO_BINDIR=\"$(bindir)/\" -DMONO_ASSEMBLIES=\"$(assembliesdir)\" -DMONO_CFG_DIR=\"$(confdir)\"
sgen-major-copying.c \
sgen-gc.h \
sgen-archdep.h \
+ sgen-cardtable.h \
sgen-major-copy-object.h \
sgen-major-scan-object.h \
sgen-protocol.h \
libmonoruntime_la_CFLAGS = $(BOEHM_DEFINES)
+libmonoruntimemoon_la_SOURCES = $(libmonoruntime_la_SOURCES)
+libmonoruntimemoon_la_CFLAGS = $(MOONLIGHT_DEFINES) $(BOEHM_DEFINES)
+
libmonoruntimesgen_la_SOURCES = $(libmonoruntime_la_SOURCES)
libmonoruntimesgen_la_CFLAGS = $(SGEN_DEFINES)
PEDUMP_DTRACE_OBJECT =
endif
+if SHARED_MONO
pedump_SOURCES = \
pedump.c
if PLATFORM_DARWIN
pedump_LDFLAGS=-framework CoreFoundation
endif
+endif
EXTRA_DIST = make-bundle.pl sample-bundle $(win32_sources) $(unix_sources) $(null_sources) $(sgen_sources) runtime.h
mono_assembly_addref (ass);
g_hash_table_insert (ht, ass, ass);
domain->domain_assemblies = g_slist_prepend (domain->domain_assemblies, ass);
- mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Assembly %s %p added to domain %s, ref_count=%d\n", ass->aname.name, ass, domain->friendly_name, ass->ref_count);
+ mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Assembly %s %p added to domain %s, ref_count=%d", ass->aname.name, ass, domain->friendly_name, ass->ref_count);
}
if (ass->image->references) {
#include <mono/metadata/mono-config.h>
#include <mono/utils/mono-digest.h>
#include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-path.h>
#include <mono/metadata/reflection.h>
#include <mono/metadata/coree.h>
/* Contains the list of directories that point to auxiliary GACs */
static char **extra_gac_paths = NULL;
+#ifndef DISABLE_ASSEMBLY_REMAPPING
/* The list of system assemblies what will be remapped to the running
* runtime version. WARNING: this list must be sorted.
*/
{"System.Xml", 0},
{"mscorlib", 0}
};
+#endif
/*
* keeps track of loaded assemblies
mono_set_rootdir (void)
{
#if defined(HOST_WIN32) || (defined(PLATFORM_MACOSX) && !defined(TARGET_ARM))
- gchar *bindir, *installdir, *root, *name, *config;
+ gchar *bindir, *installdir, *root, *name, *resolvedname, *config;
#ifdef HOST_WIN32
name = mono_get_module_file_name ((HMODULE) &__ImageBase);
fallback ();
return;
}
+
+ name = mono_path_resolve_symlinks (name);
}
#endif
- bindir = g_path_get_dirname (name);
+ resolvedname = mono_path_resolve_symlinks (name);
+
+ bindir = g_path_get_dirname (resolvedname);
installdir = g_path_get_dirname (bindir);
root = g_build_path (G_DIR_SEPARATOR_S, installdir, "lib", NULL);
g_free (installdir);
g_free (bindir);
g_free (name);
+ g_free (resolvedname);
#elif defined(DISABLE_MONO_AUTODETECTION)
fallback ();
#else
InterlockedIncrement (&assembly->ref_count);
}
+#ifndef DISABLE_ASSEMBLY_REMAPPING
static MonoAssemblyName *
mono_assembly_remap_version (MonoAssemblyName *aname, MonoAssemblyName *dest_aname)
{
}
return aname;
}
+#endif
/*
* mono_assembly_get_assemblyref:
if (reference != REFERENCE_MISSING){
mono_assembly_addref (reference);
if (image->assembly)
- mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Assembly Ref addref %s %p -> %s %p: %d\n",
+ mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Assembly Ref addref %s %p -> %s %p: %d",
image->assembly->aname.name, image->assembly, reference->aname.name, reference, reference->ref_count);
} else {
if (image->assembly)
/* Add a non-temporary reference because of ass->image */
mono_image_addref (image);
- mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Image addref %s %p -> %s %p: %d\n", ass->aname.name, ass, image->name, image, image->ref_count);
+ mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Image addref %s %p -> %s %p: %d", ass->aname.name, ass, image->name, image, image->ref_count);
/*
* The load hooks might take locks so we can't call them while holding the
mono_assembly_load_with_partial_name (const char *name, MonoImageOpenStatus *status)
{
MonoAssembly *res;
- MonoAssemblyName *aname, base_name, maped_aname;
+ MonoAssemblyName *aname, base_name;
+#ifndef DISABLE_ASSEMBLY_REMAPPING
+ MonoAssemblyName maped_aname;
+#endif
gchar *fullname, *gacpath;
gchar **paths;
if (!mono_assembly_name_parse (name, aname))
return NULL;
+#ifndef DISABLE_ASSEMBLY_REMAPPING
/*
* If no specific version has been requested, make sure we load the
* correct version for system assemblies.
*/
if ((aname->major | aname->minor | aname->build | aname->revision) == 0)
aname = mono_assembly_remap_version (aname, &maped_aname);
+#endif
res = mono_assembly_loaded (aname);
if (res) {
{
MonoAssembly *result;
char *fullpath, *filename;
- MonoAssemblyName maped_aname, maped_name_pp;
+#ifndef DISABLE_ASSEMBLY_REMAPPING
+ MonoAssemblyName maped_aname;
+#endif
+ MonoAssemblyName maped_name_pp;
int ext_index;
const char *ext;
int len;
+#ifndef DISABLE_ASSEMBLY_REMAPPING
aname = mono_assembly_remap_version (aname, &maped_aname);
+#endif
/* Reflection only assemblies don't get assembly binding */
if (!refonly)
mono_assembly_loaded_full (MonoAssemblyName *aname, gboolean refonly)
{
MonoAssembly *res;
+#ifndef DISABLE_ASSEMBLY_REMAPPING
MonoAssemblyName maped_aname;
aname = mono_assembly_remap_version (aname, &maped_aname);
+#endif
res = mono_assembly_invoke_search_hook_internal (aname, refonly, FALSE);
gc_initialized = TRUE;
}
+/**
+ * mono_gc_collect:
+ * @generation: GC generation identifier
+ *
+ * Perform a garbage collection for the given generation, higher numbers
+ * mean usually older objects. Collecting a high-numbered generation
+ * implies collecting also the lower-numbered generations.
+ * The maximum value for @generation can be retrieved with a call to
+ * mono_gc_max_generation(), so this function is usually called as:
+ *
+ * mono_gc_collect (mono_gc_max_generation ());
+ */
void
mono_gc_collect (int generation)
{
#endif
}
+/**
+ * mono_gc_max_generation:
+ *
+ * Get the maximum generation number used by the current garbage
+ * collector. The value will be 0 for the Boehm collector, 1 or more
+ * for the generational collectors.
+ *
+ * Returns: the maximum generation number.
+ */
int
mono_gc_max_generation (void)
{
return 0;
}
+/**
+ * mono_gc_get_generation:
+ * @object: a managed object
+ *
+ * Get the garbage collector's generation that @object belongs to.
+ * Use this has a hint only.
+ *
+ * Returns: a garbage collector generation number
+ */
int
mono_gc_get_generation (MonoObject *object)
{
return 0;
}
+/**
+ * mono_gc_collection_count:
+ * @generation: a GC generation number
+ *
+ * Get how many times a garbage collection has been performed
+ * for the given @generation number.
+ *
+ * Returns: the number of garbage collections
+ */
int
mono_gc_collection_count (int generation)
{
return GC_gc_no;
}
+/**
+ * mono_gc_add_memory_pressure:
+ * @value: amount of bytes
+ *
+ * Adjust the garbage collector's view of how many bytes of memory
+ * are indirectly referenced by managed objects (for example unmanaged
+ * memory holding image or other binary data).
+ * This is a hint only to the garbage collector algorithm.
+ * Note that negative amounts of @value will decrease the memory
+ * pressure.
+ */
void
mono_gc_add_memory_pressure (gint64 value)
{
}
+/**
+ * mono_gc_get_used_size:
+ *
+ * Get the approximate amount of memory used by managed objects.
+ *
+ * Returns: the amount of memory used in bytes
+ */
int64_t
mono_gc_get_used_size (void)
{
return GC_get_heap_size () - GC_get_free_bytes ();
}
+/**
+ * mono_gc_get_heap_size:
+ *
+ * Get the amount of memory used by the garbage collector.
+ *
+ * Returns: the size of the heap in bytes
+ */
int64_t
mono_gc_get_heap_size (void)
{
static const MonoRuntimeInfo supported_runtimes[] = {
{"v2.0.50215","2.0", { {2,0,0,0}, {8,0,0,0}, { 3, 5, 0, 0 } } },
{"v2.0.50727","2.0", { {2,0,0,0}, {8,0,0,0}, { 3, 5, 0, 0 } } },
+ {"v4.0.20506","4.0", { {4,0,0,0}, {10,0,0,0}, { 4, 0, 0, 0 } } },
{"v4.0.30128","4.0", { {4,0,0,0}, {10,0,0,0}, { 4, 0, 0, 0 } } },
{"v4.0.30319","4.0", { {4,0,0,0}, {10,0,0,0}, { 4, 0, 0, 0 } } },
{"moonlight", "2.1", { {2,0,5,0}, {9,0,0,0}, { 3, 5, 0, 0 } } },
void
mono_monitor_cleanup (void)
{
+ MonoThreadsSync *mon;
MonitorArray *marray, *next = NULL;
/*DeleteCriticalSection (&monitor_mutex);*/
+ /* The monitors on the freelist don't have weak links - mark them */
+ for (mon = monitor_freelist; mon; mon = mon->data)
+ mon->wait_list = (gpointer)-1;
+
for (marray = monitor_allocated; marray; marray = next) {
+ int i;
+
+ for (i = 0; i < marray->num_monitors; ++i) {
+ mon = &marray->monitors [i];
+ if (mon->wait_list != (gpointer)-1)
+ mono_gc_weak_link_remove (&mon->data);
+ }
+
next = marray->next;
g_free (marray);
}
new->wait_list = g_slist_remove (new->wait_list, new->wait_list->data);
}
}
+ mono_gc_weak_link_remove (&new->data);
new->data = monitor_freelist;
monitor_freelist = new;
}
#include <mono/metadata/mono-debug.h>
#include <mono/metadata/mono-debug-debugger.h>
#include <mono/metadata/mono-endian.h>
+#include <mono/metadata/gc-internal.h>
#include <string.h>
#define DATA_TABLE_CHUNK_SIZE 16384
mono_debug_initialized = TRUE;
mono_debug_format = format;
+ /*
+ * This must be called before mono_debugger_initialize(), because the
+ * latter registers GC roots.
+ */
+ mono_gc_base_init ();
+
mono_debugger_initialize (_mono_debug_using_mono_debugger);
mono_debugger_lock ();
mono_image_load_names (image);
- if (!verify_partial_md && !mono_verifier_verify_full_table_data (image, &errors))
- goto invalid_image;
-
/*fake an assembly for class loading to work*/
assembly = g_new0 (MonoAssembly, 1);
assembly->in_gac = FALSE;
assembly->image = image;
image->assembly = assembly;
+ if (!verify_partial_md && !mono_verifier_verify_full_table_data (image, &errors))
+ goto invalid_image;
+
+
table = &image->tables [MONO_TABLE_TYPEDEF];
for (i = 1; i <= table->rows; ++i) {
guint32 token = i | MONO_TOKEN_TYPE_DEF;
typedef void (*MonoProfileMethodInline) (MonoProfiler *prof, MonoMethod *parent, MonoMethod *child, int *ok);
-typedef void (*MonoProfileThreadFunc) (MonoProfiler *prof, intptr_t tid);
+typedef void (*MonoProfileThreadFunc) (MonoProfiler *prof, uintptr_t tid);
typedef void (*MonoProfileAllocFunc) (MonoProfiler *prof, MonoObject *obj, MonoClass *klass);
typedef void (*MonoProfileStatFunc) (MonoProfiler *prof, mono_byte *ip, void *context);
typedef void (*MonoProfileStatCallChainFunc) (MonoProfiler *prof, int call_chain_depth, mono_byte **ip, void *context);
guint8 *sgen_cardtable;
+/*WARNING: This function returns the number of cards regardless of overflow in case of overlapping cards.*/
static mword
cards_in_range (mword address, mword size)
{
guint8 *sgen_shadow_cardtable;
+#define SGEN_SHADOW_CARDTABLE_END (sgen_shadow_cardtable + CARD_COUNT_IN_BYTES)
+#define SGEN_CARDTABLE_END (sgen_cardtable + CARD_COUNT_IN_BYTES)
+
static gboolean
sgen_card_table_region_begin_scanning (mword start, mword end)
{
+ /*XXX this can be improved to work on words and have a single loop induction var */
while (start <= end) {
if (sgen_card_table_card_begin_scanning (start))
return TRUE;
return FALSE;
}
-void
-sgen_card_table_get_card_data (guint8 *dest, mword address, mword cards)
-{
- memcpy (dest, sgen_card_table_get_shadow_card_address (address), cards);
-}
-
#else
static gboolean
guint8 *card = sgen_card_table_get_card_address (start);
guint8 *end = card + cards_in_range (start, size);
+ /*XXX this can be improved to work on words and have a branchless body */
while (card != end) {
if (*card++) {
res = TRUE;
return res;
}
-void
-sgen_card_table_get_card_data (guint8 *dest, mword address, mword cards)
-{
- guint8 *src = sgen_card_table_get_card_address (address);
- memcpy (dest, src, cards);
- memset (src, 0, cards);
-}
+#endif
+/*FIXME this assumes that major blocks are multiple of 4K which is pretty reasonable */
+gboolean
+sgen_card_table_get_card_data (guint8 *data_dest, mword address, mword cards)
+{
+ mword *start = (mword*)sgen_card_table_get_card_scan_address (address);
+ mword *dest = (mword*)data_dest;
+ mword *end = (mword*)(data_dest + cards);
+ mword mask = 0;
+
+ for (; dest < end; ++dest, ++start) {
+ mword v = *start;
+ *dest = v;
+ mask |= v;
+
+#ifndef SGEN_HAVE_OVERLAPPING_CARDS
+ *start = 0;
#endif
+ }
+
+ return mask;
+}
static gboolean
sgen_card_table_address_is_marked (mword address)
void los_iterate_live_block_ranges (sgen_cardtable_block_callback callback);
-static void
-clear_cards (mword start, mword size)
-{
- memset (sgen_card_table_get_card_address (start), 0, size >> CARD_BITS);
-}
#ifdef SGEN_HAVE_OVERLAPPING_CARDS
guint8 *from = sgen_card_table_get_card_address (start);
guint8 *to = sgen_card_table_get_shadow_card_address (start);
size_t bytes = cards_in_range (start, size);
- memcpy (to, from, bytes);
+
+ if (to + bytes > SGEN_SHADOW_CARDTABLE_END) {
+ size_t first_chunk = SGEN_SHADOW_CARDTABLE_END - to;
+
+ memcpy (to, from, first_chunk);
+ memcpy (sgen_shadow_cardtable, from + first_chunk, bytes - first_chunk);
+ } else {
+ memcpy (to, from, bytes);
+ }
+}
+
+static void
+clear_cards (mword start, mword size)
+{
+ guint8 *addr = sgen_card_table_get_card_address (start);
+ size_t bytes = cards_in_range (start, size);
+
+ if (addr + bytes > SGEN_CARDTABLE_END) {
+ size_t first_chunk = SGEN_CARDTABLE_END - addr;
+
+ memset (addr, 0, first_chunk);
+ memset (sgen_cardtable, 0, bytes - first_chunk);
+ } else {
+ memset (addr, 0, bytes);
+ }
}
+
+#else
+
+static void
+clear_cards (mword start, mword size)
+{
+ memset (sgen_card_table_get_card_address (start), 0, cards_in_range (start, size));
+}
+
+
#endif
static void
{
/*XXX we could do this in 2 ways. using mincore or iterating over all sections/los objects */
if (use_cardtable) {
- major.iterate_live_block_ranges (clear_cards);
+ major_collector.iterate_live_block_ranges (clear_cards);
los_iterate_live_block_ranges (clear_cards);
}
}
{
if (use_cardtable) {
#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+ /*FIXME we should have a bit on each block/los object telling if the object have marked cards.*/
/*First we copy*/
- major.iterate_live_block_ranges (move_cards_to_shadow_table);
+ major_collector.iterate_live_block_ranges (move_cards_to_shadow_table);
los_iterate_live_block_ranges (move_cards_to_shadow_table);
/*Then we clear*/
card_table_clear ();
#endif
- major.scan_card_table (queue);
+ major_collector.scan_card_table (queue);
los_scan_card_table (queue);
}
}
return;
if (vt->rank) {
+ guint8 *card_data, *card_base;
+ guint8 *card_data_end;
+ char *obj_start = sgen_card_table_align_pointer (obj);
+ char *obj_end = obj + obj_size;
+ size_t card_count;
+
MonoArray *arr = (MonoArray*)obj;
mword desc = (mword)klass->element_class->gc_descr;
- char *start = sgen_card_table_align_pointer (obj);
- char *end = obj + obj_size;
- int size = mono_array_element_size (klass);
+ int elem_size = mono_array_element_size (klass);
- g_assert (desc);
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+ guint8 *overflow_scan_end = NULL;
+#endif
- for (; start <= end; start += CARD_SIZE_IN_BYTES) {
- char *elem, *card_end;
- uintptr_t index;
+ if (cards)
+ card_data = cards;
+ else
+ card_data = sgen_card_table_get_card_scan_address ((mword)obj);
- if (cards) {
- if (!*cards++)
- continue;
- } else if (!sgen_card_table_card_begin_scanning ((mword)start)) {
+ card_base = card_data;
+ card_count = cards_in_range ((mword)obj, obj_size);
+ card_data_end = card_data + card_count;
+
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+ /*Check for overflow and if so, setup to scan in two steps*/
+ if (!cards && card_data_end >= SGEN_SHADOW_CARDTABLE_END) {
+ overflow_scan_end = sgen_shadow_cardtable + (card_data_end - SGEN_SHADOW_CARDTABLE_END);
+ card_data_end = SGEN_SHADOW_CARDTABLE_END;
+ }
+
+LOOP_HEAD:
+#endif
+ /*FIXME use card skipping code*/
+ for (; card_data < card_data_end; ++card_data) {
+ int index;
+ int idx = card_data - card_base;
+ char *start = (char*)(obj_start + idx * CARD_SIZE_IN_BYTES);
+ char *card_end = start + CARD_SIZE_IN_BYTES;
+ char *elem;
+
+ if (!*card_data)
continue;
- }
- card_end = start + CARD_SIZE_IN_BYTES;
- if (end < card_end)
- card_end = end;
+ if (!cards)
+ sgen_card_table_prepare_card_for_scanning (card_data);
+
+ card_end = MIN (card_end, obj_end);
if (start <= (char*)arr->vector)
index = 0;
else
- index = ARRAY_OBJ_INDEX (start, obj, size);
+ index = ARRAY_OBJ_INDEX (start, obj, elem_size);
- elem = (char*)mono_array_addr_with_size ((MonoArray*)obj, size, index);
+ elem = (char*)mono_array_addr_with_size ((MonoArray*)obj, elem_size, index);
if (klass->element_class->valuetype) {
- while (elem < card_end) {
- major.minor_scan_vtype (elem, desc, nursery_start, nursery_next, queue);
- elem += size;
- }
+ for (; elem < card_end; elem += elem_size)
+ major_collector.minor_scan_vtype (elem, desc, nursery_start, nursery_next, queue);
} else {
- while (elem < card_end) {
+ for (; elem < card_end; elem += SIZEOF_VOID_P) {
gpointer new, old = *(gpointer*)elem;
+ /*XXX it might be faster to do a nursery check here instead as it avoid a call*/
if (old) {
- major.copy_object ((void**)elem, queue);
+ major_collector.copy_object ((void**)elem, queue);
new = *(gpointer*)elem;
if (G_UNLIKELY (ptr_in_nursery (new)))
mono_sgen_add_to_global_remset (elem);
}
- elem += size;
}
}
}
+
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+ if (overflow_scan_end) {
+ card_data = sgen_shadow_cardtable;
+ card_data_end = overflow_scan_end;
+ overflow_scan_end = NULL;
+ goto LOOP_HEAD;
+ }
+#endif
+
} else {
if (cards) {
if (sgen_card_table_is_range_marked (cards, obj_size))
- major.minor_scan_object (obj, queue);
+ major_collector.minor_scan_object (obj, queue);
} else if (sgen_card_table_region_begin_scanning ((mword)obj, obj_size)) {
- major.minor_scan_object (obj, queue);
+ major_collector.minor_scan_object (obj, queue);
}
}
}
#ifdef CARDTABLE_STATS
if (begin) {
total_cards = marked_cards = remarked_cards = 0;
- major.iterate_live_block_ranges (count_marked_cards);
+ major_collector.iterate_live_block_ranges (count_marked_cards);
los_iterate_live_block_ranges (count_marked_cards);
} else {
- major.iterate_live_block_ranges (count_marked_cards);
+ major_collector.iterate_live_block_ranges (count_marked_cards);
los_iterate_live_block_ranges (count_remarked_cards);
printf ("cards total %d marked %d remarked %d\n", total_cards, marked_cards, remarked_cards);
}
#define SGEN_HAVE_CARDTABLE 1
-#if SIZEOF_VOID_P == 8
-#define SGEN_HAVE_OVERLAPPING_CARDS 1
-#endif
-
#ifdef SGEN_HAVE_CARDTABLE
void sgen_card_table_reset_region (mword start, mword end) MONO_INTERNAL;
void sgen_card_table_mark_address (mword address) MONO_INTERNAL;
void sgen_card_table_mark_range (mword address, mword size) MONO_INTERNAL;
void sgen_cardtable_scan_object (char *obj, mword obj_size, guint8 *cards, SgenGrayQueue *queue) MONO_INTERNAL;
-void sgen_card_table_get_card_data (guint8 *dest, mword address, mword cards) MONO_INTERNAL;
+gboolean sgen_card_table_get_card_data (guint8 *dest, mword address, mword cards) MONO_INTERNAL;
typedef void (*sgen_cardtable_block_callback) (mword start, mword size);
+/*How many bytes a single card covers*/
#define CARD_BITS 9
+
+/* How many bits of the address space is covered by the card table.
+ * If this value is smaller than the number of address bits, card aliasing is required.
+ */
+#define CARD_TABLE_BITS 32
+
#define CARD_SIZE_IN_BYTES (1 << CARD_BITS)
-#define CARD_COUNT_BITS (32 - 9)
+#define CARD_COUNT_BITS (CARD_TABLE_BITS - CARD_BITS)
#define CARD_COUNT_IN_BYTES (1 << CARD_COUNT_BITS)
#define CARD_MASK ((1 << CARD_COUNT_BITS) - 1)
+#if SIZEOF_VOID_P * 8 > CARD_TABLE_BITS
+#define SGEN_HAVE_OVERLAPPING_CARDS 1
+#endif
+
extern guint8 *sgen_cardtable MONO_INTERNAL;
return *sgen_card_table_get_shadow_card_address (address) != 0;
}
+static inline void
+sgen_card_table_prepare_card_for_scanning (guint8 *card)
+{
+}
+
+#define sgen_card_table_get_card_scan_address sgen_card_table_get_shadow_card_address
+
#else
static inline guint8*
*card = 0;
return res;
}
+
+static inline void
+sgen_card_table_prepare_card_for_scanning (guint8 *card)
+{
+ *card = 0;
+}
+
+#define sgen_card_table_get_card_scan_address sgen_card_table_get_card_address
+
#endif
#endif
static void clear_unreachable_ephemerons (CopyOrMarkObjectFunc copy_func, char *start, char *end, GrayQueue *queue);
static void null_ephemerons_for_domain (MonoDomain *domain);
-SgenMajorCollector major;
+SgenMajorCollector major_collector;
#include "sgen-protocol.c"
#include "sgen-pinning.c"
mono_sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
(IterateObjectCallbackFunc)scan_object_for_specific_ref_callback, key);
- major.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)scan_object_for_specific_ref_callback, key);
+ major_collector.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)scan_object_for_specific_ref_callback, key);
for (bigobj = los_object_list; bigobj; bigobj = bigobj->next)
scan_object_for_specific_ref (bigobj->data, key);
Fragment *frag;
if (nursery_clear_policy == CLEAR_AT_TLAB_CREATION) {
g_assert (next <= nursery_frag_real_end);
+ DEBUG (4, fprintf (gc_debug_file, "Clear nursery frag %p-%p\n", next, nursery_frag_real_end));
memset (next, 0, nursery_frag_real_end - next);
for (frag = nursery_fragments; frag; frag = frag->next) {
+ DEBUG (4, fprintf (gc_debug_file, "Clear nursery frag %p-%p\n", frag->fragment_start, frag->fragment_end));
memset (frag->fragment_start, 0, frag->fragment_end - frag->fragment_start);
}
}
mono_sgen_scan_area_with_callback (nursery_section->data, nursery_section->end_data,
(IterateObjectCallbackFunc)scan_object_for_xdomain_refs, NULL);
- major.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)scan_object_for_xdomain_refs, NULL);
+ major_collector.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)scan_object_for_xdomain_refs, NULL);
for (bigobj = los_object_list; bigobj; bigobj = bigobj->next)
scan_object_for_xdomain_refs (bigobj->data, bigobj->size, NULL);
clear_domain_free_major_non_pinned_object_callback (char *obj, size_t size, MonoDomain *domain)
{
if (need_remove_object_for_domain (obj, domain))
- major.free_non_pinned_object (obj, size);
+ major_collector.free_non_pinned_object (obj, size);
}
static void
clear_domain_free_major_pinned_object_callback (char *obj, size_t size, MonoDomain *domain)
{
if (need_remove_object_for_domain (obj, domain))
- major.free_pinned_object (obj, size);
+ major_collector.free_pinned_object (obj, size);
}
/*
objects with major-mark&sweep), but we might need to
dereference a pointer from an object to another object if
the first object is a proxy. */
- major.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)clear_domain_process_major_object_callback, domain);
+ major_collector.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)clear_domain_process_major_object_callback, domain);
for (bigobj = los_object_list; bigobj; bigobj = bigobj->next)
clear_domain_process_object (bigobj->data, domain);
prev = bigobj;
bigobj = bigobj->next;
}
- major.iterate_objects (TRUE, FALSE, (IterateObjectCallbackFunc)clear_domain_free_major_non_pinned_object_callback, domain);
- major.iterate_objects (FALSE, TRUE, (IterateObjectCallbackFunc)clear_domain_free_major_pinned_object_callback, domain);
+ major_collector.iterate_objects (TRUE, FALSE, (IterateObjectCallbackFunc)clear_domain_free_major_non_pinned_object_callback, domain);
+ major_collector.iterate_objects (FALSE, TRUE, (IterateObjectCallbackFunc)clear_domain_free_major_pinned_object_callback, domain);
UNLOCK_GC;
}
g_assert (!ptr_in_nursery (ptr) && ptr_in_nursery (*(gpointer*)ptr));
- lock = (current_collection_generation == GENERATION_OLD && major.is_parallel);
+ lock = (current_collection_generation == GENERATION_OLD && major_collector.is_parallel);
if (lock)
LOCK_GLOBAL_REMSET;
if (!obj)
break;
DEBUG (9, fprintf (gc_debug_file, "Precise gray object scan %p (%s)\n", obj, safe_name (obj)));
- major.minor_scan_object (obj, queue);
+ major_collector.minor_scan_object (obj, queue);
}
} else {
- if (major.is_parallel && queue == &workers_distribute_gray_queue)
+ if (major_collector.is_parallel && queue == &workers_distribute_gray_queue)
return;
for (;;) {
if (!obj)
break;
DEBUG (9, fprintf (gc_debug_file, "Precise gray object scan %p (%s)\n", obj, safe_name (obj)));
- major.major_scan_object (obj, queue);
+ major_collector.major_scan_object (obj, queue);
}
}
}
g_assert (nursery_size == DEFAULT_NURSERY_SIZE);
alloc_size = nursery_size;
#ifdef SGEN_ALIGN_NURSERY
- data = major.alloc_heap (alloc_size, alloc_size, DEFAULT_NURSERY_BITS);
+ data = major_collector.alloc_heap (alloc_size, alloc_size, DEFAULT_NURSERY_BITS);
#else
- data = major.alloc_heap (alloc_size, 0, DEFAULT_NURSERY_BITS);
+ data = major_collector.alloc_heap (alloc_size, 0, DEFAULT_NURSERY_BITS);
#endif
nursery_start = data;
nursery_real_end = nursery_start + nursery_size;
Fragment *fragment;
DEBUG (4, fprintf (gc_debug_file, "Found empty fragment: %p-%p, size: %zd\n", frag_start, frag_end, frag_size));
binary_protocol_empty (frag_start, frag_size);
- /* memsetting just the first chunk start is bound to provide better cache locality */
- if (nursery_clear_policy == CLEAR_AT_GC)
- memset (frag_start, 0, frag_size);
/* Not worth dealing with smaller fragments: need to tune */
if (frag_size >= FRAGMENT_MIN_SIZE) {
+ /* memsetting just the first chunk start is bound to provide better cache locality */
+ if (nursery_clear_policy == CLEAR_AT_GC)
+ memset (frag_start, 0, frag_size);
+
fragment = alloc_fragment ();
fragment->fragment_start = frag_start;
fragment->fragment_limit = frag_start;
TV_DECLARE (btv);
int fin_ready;
int ephemeron_rounds = 0;
- CopyOrMarkObjectFunc copy_func = current_collection_generation == GENERATION_NURSERY ? major.copy_object : major.copy_or_mark_object;
+ CopyOrMarkObjectFunc copy_func = current_collection_generation == GENERATION_NURSERY ? major_collector.copy_object : major_collector.copy_or_mark_object;
/*
* We copied all the reachable objects. Now it's the time to copy
if (!do_scan_starts_check)
return;
mono_sgen_check_section_scan_starts (nursery_section);
- major.check_scan_starts ();
+ major_collector.check_scan_starts ();
}
static int last_num_pinned = 0;
mono_sgen_dump_section (nursery_section, "nursery");
- major.dump_heap (heap_dump_file);
+ major_collector.dump_heap (heap_dump_file);
fprintf (heap_dump_file, "<los>\n");
for (bigobj = los_object_list; bigobj; bigobj = bigobj->next)
g_assert (mono_profiler_events & MONO_PROFILE_GC_MOVES);
/* FIXME: handle this for parallel collector */
- g_assert (!major.is_parallel);
+ g_assert (!major_collector.is_parallel);
if (moved_objects_idx == MOVED_OBJECTS_NUM) {
mono_profiler_gc_moves (moved_objects, moved_objects_idx);
need_major_collection (void)
{
mword los_alloced = los_memory_usage - MIN (last_los_memory_usage, los_memory_usage);
- return minor_collection_sections_alloced * major.section_size + los_alloced > minor_collection_allowance;
+ return minor_collection_sections_alloced * major_collector.section_size + los_alloced > minor_collection_allowance;
}
/*
/* world must be stopped already */
TV_GETTIME (all_atv);
- TV_GETTIME (atv);
+ atv = all_atv;
/* Pinning depends on this */
clear_nursery_fragments (orig_nursery_next);
nursery_section->next_data = nursery_next;
- major.start_nursery_collection ();
+ major_collector.start_nursery_collection ();
gray_object_queue_init (&gray_queue, mono_sgen_get_unmanaged_allocator ());
DEBUG (2, fprintf (gc_debug_file, "Old generation scan: %d usecs\n", TV_ELAPSED (atv, btv)));
if (use_cardtable) {
+ atv = btv;
card_tables_collect_starts (TRUE);
- TV_GETTIME (atv);
scan_from_card_tables (nursery_start, nursery_next, &gray_queue);
TV_GETTIME (btv);
time_minor_scan_card_table += TV_ELAPSED_MS (atv, btv);
TV_GETTIME (atv);
time_minor_scan_pinned += TV_ELAPSED_MS (btv, atv);
/* registered roots, this includes static fields */
- scan_from_registered_roots (major.copy_object, nursery_start, nursery_next, ROOT_TYPE_NORMAL, &gray_queue);
- scan_from_registered_roots (major.copy_object, nursery_start, nursery_next, ROOT_TYPE_WBARRIER, &gray_queue);
+ scan_from_registered_roots (major_collector.copy_object, nursery_start, nursery_next, ROOT_TYPE_NORMAL, &gray_queue);
+ scan_from_registered_roots (major_collector.copy_object, nursery_start, nursery_next, ROOT_TYPE_WBARRIER, &gray_queue);
TV_GETTIME (btv);
time_minor_scan_registered_roots += TV_ELAPSED_MS (atv, btv);
/* thread data */
if (consistency_check_at_minor_collection)
check_major_refs ();
- major.finish_nursery_collection ();
+ major_collector.finish_nursery_collection ();
TV_GETTIME (all_btv);
mono_stats.minor_gc_time_usecs += TV_ELAPSED (all_atv, all_btv);
*/
char *heap_start = NULL;
char *heap_end = (char*)-1;
- int old_num_major_sections = major.get_num_major_sections ();
+ int old_num_major_sections = major_collector.get_num_major_sections ();
int num_major_sections, num_major_sections_saved, save_target, allowance_target;
mword los_memory_saved, los_memory_alloced, old_los_memory_usage;
binary_protocol_collection (GENERATION_OLD);
check_scan_starts ();
gray_object_queue_init (&gray_queue, mono_sgen_get_unmanaged_allocator ());
- if (major.is_parallel)
+ if (major_collector.is_parallel)
gray_object_queue_init (&workers_distribute_gray_queue, mono_sgen_get_unmanaged_allocator ());
degraded_mode = 0;
/* world must be stopped already */
TV_GETTIME (all_atv);
- TV_GETTIME (atv);
+ atv = all_atv;
/* Pinning depends on this */
clear_nursery_fragments (nursery_next);
DEBUG (6, fprintf (gc_debug_file, "Pinning from sections\n"));
/* first pass for the sections */
mono_sgen_find_section_pin_queue_start_end (nursery_section);
- major.find_pin_queue_start_ends (WORKERS_DISTRIBUTE_GRAY_QUEUE);
+ major_collector.find_pin_queue_start_ends (WORKERS_DISTRIBUTE_GRAY_QUEUE);
/* identify possible pointers to the insize of large objects */
DEBUG (6, fprintf (gc_debug_file, "Pinning from large objects\n"));
for (bigobj = los_object_list; bigobj; bigobj = bigobj->next) {
}
/* second pass for the sections */
mono_sgen_pin_objects_in_section (nursery_section, WORKERS_DISTRIBUTE_GRAY_QUEUE);
- major.pin_objects (WORKERS_DISTRIBUTE_GRAY_QUEUE);
+ major_collector.pin_objects (WORKERS_DISTRIBUTE_GRAY_QUEUE);
TV_GETTIME (btv);
time_major_pinning += TV_ELAPSED_MS (atv, btv);
DEBUG (2, fprintf (gc_debug_file, "Finding pinned pointers: %d in %d usecs\n", next_pin_slot, TV_ELAPSED (atv, btv)));
DEBUG (4, fprintf (gc_debug_file, "Start scan with %d pinned objects\n", next_pin_slot));
- major.init_to_space ();
+ major_collector.init_to_space ();
workers_start_all_workers (1);
time_major_scan_pinned += TV_ELAPSED_MS (btv, atv);
/* registered roots, this includes static fields */
- scan_from_registered_roots (major.copy_or_mark_object, heap_start, heap_end, ROOT_TYPE_NORMAL, WORKERS_DISTRIBUTE_GRAY_QUEUE);
- scan_from_registered_roots (major.copy_or_mark_object, heap_start, heap_end, ROOT_TYPE_WBARRIER, WORKERS_DISTRIBUTE_GRAY_QUEUE);
+ scan_from_registered_roots (major_collector.copy_or_mark_object, heap_start, heap_end, ROOT_TYPE_NORMAL, WORKERS_DISTRIBUTE_GRAY_QUEUE);
+ scan_from_registered_roots (major_collector.copy_or_mark_object, heap_start, heap_end, ROOT_TYPE_WBARRIER, WORKERS_DISTRIBUTE_GRAY_QUEUE);
TV_GETTIME (btv);
time_major_scan_registered_roots += TV_ELAPSED_MS (atv, btv);
time_major_scan_alloc_pinned += TV_ELAPSED_MS (atv, btv);
/* scan the list of objects ready for finalization */
- scan_finalizer_entries (major.copy_or_mark_object, fin_ready_list, WORKERS_DISTRIBUTE_GRAY_QUEUE);
- scan_finalizer_entries (major.copy_or_mark_object, critical_fin_list, WORKERS_DISTRIBUTE_GRAY_QUEUE);
+ scan_finalizer_entries (major_collector.copy_or_mark_object, fin_ready_list, WORKERS_DISTRIBUTE_GRAY_QUEUE);
+ scan_finalizer_entries (major_collector.copy_or_mark_object, critical_fin_list, WORKERS_DISTRIBUTE_GRAY_QUEUE);
TV_GETTIME (atv);
time_major_scan_finalized += TV_ELAPSED_MS (btv, atv);
DEBUG (2, fprintf (gc_debug_file, "Root scan: %d usecs\n", TV_ELAPSED (btv, atv)));
TV_GETTIME (btv);
time_major_scan_big_objects += TV_ELAPSED_MS (atv, btv);
- if (major.is_parallel) {
+ if (major_collector.is_parallel) {
while (!gray_object_queue_is_empty (WORKERS_DISTRIBUTE_GRAY_QUEUE)) {
workers_distribute_gray_queue_sections ();
usleep (2000);
workers_change_num_working (-1);
workers_join ();
- if (major.is_parallel)
+ if (major_collector.is_parallel)
g_assert (gray_object_queue_is_empty (&gray_queue));
/* all the objects in the heap */
TV_GETTIME (atv);
time_major_los_sweep += TV_ELAPSED_MS (btv, atv);
- major.sweep ();
+ major_collector.sweep ();
TV_GETTIME (btv);
time_major_sweep += TV_ELAPSED_MS (atv, btv);
g_assert (gray_object_queue_is_empty (&gray_queue));
- num_major_sections = major.get_num_major_sections ();
+ num_major_sections = major_collector.get_num_major_sections ();
num_major_sections_saved = MAX (old_num_major_sections - num_major_sections, 0);
los_memory_saved = MAX (old_los_memory_usage - los_memory_usage, 1);
- save_target = ((num_major_sections * major.section_size) + los_memory_saved) / 2;
+ save_target = ((num_major_sections * major_collector.section_size) + los_memory_saved) / 2;
/*
* We aim to allow the allocation of as many sections as is
* necessary to reclaim save_target sections in the next
*
* hence:
*/
- allowance_target = (mword)((double)save_target * (double)(minor_collection_sections_alloced * major.section_size + los_memory_alloced) / (double)(num_major_sections_saved * major.section_size + los_memory_saved));
+ allowance_target = (mword)((double)save_target * (double)(minor_collection_sections_alloced * major_collector.section_size + los_memory_alloced) / (double)(num_major_sections_saved * major_collector.section_size + los_memory_saved));
- minor_collection_allowance = MAX (MIN (allowance_target, num_major_sections * major.section_size + los_memory_usage), MIN_MINOR_COLLECTION_ALLOWANCE);
+ minor_collection_allowance = MAX (MIN (allowance_target, num_major_sections * major_collector.section_size + los_memory_usage), MIN_MINOR_COLLECTION_ALLOWANCE);
minor_collection_sections_alloced = 0;
last_los_memory_usage = los_memory_usage;
- major.finish_major_collection ();
+ major_collector.finish_major_collection ();
check_scan_starts ();
printf ("Internal memory usage:\n");
mono_sgen_report_internal_mem_usage ();
printf ("Pinned memory usage:\n");
- major.report_pinned_memory_usage ();
+ major_collector.report_pinned_memory_usage ();
}
/*
}
degraded_mode += size;
- return major.alloc_degraded (vtable, size);
+ return major_collector.alloc_degraded (vtable, size);
}
/*
p = alloc_large_inner (vtable, size);
} else {
DEBUG (9, g_assert (vtable->klass->inited));
- p = major.alloc_small_pinned_obj (size, vtable->klass->has_references);
+ p = major_collector.alloc_small_pinned_obj (size, vtable->klass->has_references);
}
DEBUG (6, fprintf (gc_debug_file, "Allocated pinned object %p, vtable: %p (%s), size: %zd\n", p, vtable, vtable->klass->name, size));
binary_protocol_alloc_pinned (p, vtable, size);
for (i = 0; i < finalizable_hash_size; ++i) {
prev = NULL;
for (entry = finalizable_hash [i]; entry;) {
- if ((char*)entry->object >= start && (char*)entry->object < end && !major.is_object_live (entry->object)) {
+ if ((char*)entry->object >= start && (char*)entry->object < end && !major_collector.is_object_live (entry->object)) {
gboolean is_fin_ready = object_is_fin_ready (entry->object);
char *copy = entry->object;
copy_func ((void**)©, queue);
/*This happens for non nursery objects during minor collections. We just treat all objects as alive.*/
if (object < start || object >= end)
return TRUE;
- return !object_is_fin_ready (object) || major.is_object_live (object);
+ return !object_is_fin_ready (object) || major_collector.is_object_live (object);
}
/* LOCKING: requires that the GC lock is held */
prev = NULL;
for (entry = disappearing_link_hash [i]; entry;) {
char *object = DISLINK_OBJECT (entry);
- if (object >= start && object < end && !major.is_object_live (object)) {
+ if (object >= start && object < end && !major_collector.is_object_live (object)) {
gboolean track = DISLINK_TRACK (entry);
if (!track && object_is_fin_ready (object)) {
void **p = entry->link;
int old_errno = errno;
gpointer regs [ARCH_NUM_REGS];
gpointer stack_start;
- ucontext_t *ctx = (ucontext_t*)context;
id = pthread_self ();
info = mono_sgen_thread_info_lookup (id);
info->stopped_domain = mono_domain_get ();
- info->stopped_ip = (gpointer) ARCH_SIGCTX_IP (ctx);
+ info->stopped_ip = (gpointer) ARCH_SIGCTX_IP (context);
stop_count = global_stop_count;
/* duplicate signal */
if (0 && info->stop_count == stop_count) {
/* update the remset info in the thread data structure */
info->remset = remembered_set;
#endif
- stack_start = (char*) ARCH_SIGCTX_SP (ctx) - REDZONE_SIZE;
+ stack_start = (char*) ARCH_SIGCTX_SP (context) - REDZONE_SIZE;
/* If stack_start is not within the limits, then don't set it
in info and we will be restarted. */
if (stack_start >= info->stack_start_limit && info->stack_start <= info->stack_end) {
info->stack_start = stack_start;
- ARCH_COPY_SIGCTX_REGS (regs, ctx);
+ ARCH_COPY_SIGCTX_REGS (regs, context);
info->stopped_regs = regs;
} else {
g_assert (!info->stack_start);
/* Notify the JIT */
if (gc_callbacks.thread_suspend_func)
- gc_callbacks.thread_suspend_func (info->runtime_data, ctx);
+ gc_callbacks.thread_suspend_func (info->runtime_data, context);
DEBUG (4, fprintf (gc_debug_file, "Posting suspend_ack_semaphore for suspend from %p %p\n", info, (gpointer)ARCH_GET_THREAD ()));
/* notify the waiting thread */
{
g_assert_not_reached ();
if (current_collection_generation == GENERATION_NURSERY)
- major.copy_object (&obj, &gray_queue);
+ major_collector.copy_object (&obj, &gray_queue);
else
- major.copy_or_mark_object (&obj, &gray_queue);
+ major_collector.copy_or_mark_object (&obj, &gray_queue);
return obj;
}
//__builtin_prefetch (ptr);
if (((void*)ptr < start_nursery || (void*)ptr >= end_nursery)) {
gpointer old = *ptr;
- major.copy_object (ptr, queue);
+ major_collector.copy_object (ptr, queue);
DEBUG (9, fprintf (gc_debug_file, "Overwrote remset at %p with %p\n", ptr, *ptr));
if (old)
binary_protocol_ptr_update (ptr, old, *ptr, (gpointer)LOAD_VTABLE (*ptr), safe_object_get_size (*ptr));
return p + 2;
count = p [1];
while (count-- > 0) {
- major.copy_object (ptr, queue);
+ major_collector.copy_object (ptr, queue);
DEBUG (9, fprintf (gc_debug_file, "Overwrote remset at %p with %p (count: %d)\n", ptr, *ptr, (int)count));
if (!global && *ptr >= start_nursery && *ptr < end_nursery)
mono_sgen_add_to_global_remset (ptr);
ptr = (void**)(*p & ~REMSET_TYPE_MASK);
if (((void*)ptr >= start_nursery && (void*)ptr < end_nursery))
return p + 1;
- major.minor_scan_object ((char*)ptr, queue);
+ major_collector.minor_scan_object ((char*)ptr, queue);
return p + 1;
case REMSET_VTYPE: {
ptr = (void**)(*p & ~REMSET_TYPE_MASK);
desc = p [1];
count = p [2];
while (count-- > 0)
- ptr = (void**) major.minor_scan_vtype ((char*)ptr, desc, start_nursery, end_nursery, queue);
+ ptr = (void**) major_collector.minor_scan_vtype ((char*)ptr, desc, start_nursery, end_nursery, queue);
return p + 3;
}
default:
* be called from gdb, so we don't care.
*/
found_obj = NULL;
- major.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)find_object_for_ptr_callback, ptr);
+ major_collector.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)find_object_for_ptr_callback, ptr);
return found_obj;
}
if (ptr_in_nursery (ptr)) {
printf ("Pointer inside nursery.\n");
} else {
- if (major.ptr_is_in_non_pinned_space (ptr)) {
+ if (major_collector.ptr_is_in_non_pinned_space (ptr)) {
printf ("Pointer inside oldspace.\n");
- } else if (major.obj_is_from_pinned_alloc (ptr)) {
+ } else if (major_collector.obj_is_from_pinned_alloc (ptr)) {
printf ("Pointer is inside a pinned chunk.\n");
} else {
printf ("Pointer unknown.\n");
DEBUG (1, fprintf (gc_debug_file, "Begin heap consistency check...\n"));
// Check that oldspace->newspace pointers are registered with the collector
- major.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)check_consistency_callback, NULL);
+ major_collector.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)check_consistency_callback, NULL);
for (bigobj = los_object_list; bigobj; bigobj = bigobj->next)
check_consistency_callback (bigobj->data, bigobj->size, NULL);
{
LOSObject *bigobj;
- major.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)check_major_refs_callback, NULL);
+ major_collector.iterate_objects (TRUE, TRUE, (IterateObjectCallbackFunc)check_major_refs_callback, NULL);
for (bigobj = los_object_list; bigobj; bigobj = bigobj->next)
check_major_refs_callback (bigobj->data, bigobj->size, NULL);
LOCK_GC;
tot = los_memory_usage;
tot += nursery_section->next_data - nursery_section->data;
- tot += major.get_used_size ();
+ tot += major_collector.get_used_size ();
/* FIXME: account for pinned objects */
UNLOCK_GC;
return tot;
{
char *env;
char **opts, **ptr;
- char *major_collector = NULL;
+ char *major_collector_opt = NULL;
struct sigaction sinfo;
+ /* the gc_initialized guard seems to imply this method is
+ idempotent, but LOCK_INIT(gc_mutex) might not be. It's
+ defined in sgen-gc.h as nothing, so there's no danger at
+ present. */
LOCK_INIT (gc_mutex);
LOCK_GC;
if (gc_initialized) {
char *opt = *ptr;
if (g_str_has_prefix (opt, "major=")) {
opt = strchr (opt, '=') + 1;
- major_collector = g_strdup (opt);
+ major_collector_opt = g_strdup (opt);
}
}
} else {
mono_sgen_register_fixed_internal_mem_type (INTERNAL_MEM_STORE_REMSET, sizeof (GenericStoreRememberedSet));
mono_sgen_register_fixed_internal_mem_type (INTERNAL_MEM_EPHEMERON_LINK, sizeof (EphemeronLinkNode));
- if (!major_collector || !strcmp (major_collector, "marksweep")) {
- mono_sgen_marksweep_init (&major);
- } else if (!major_collector || !strcmp (major_collector, "marksweep-fixed")) {
- mono_sgen_marksweep_fixed_init (&major);
- } else if (!major_collector || !strcmp (major_collector, "marksweep-par")) {
- mono_sgen_marksweep_par_init (&major);
+ if (!major_collector_opt || !strcmp (major_collector_opt, "marksweep")) {
+ mono_sgen_marksweep_init (&major_collector);
+ } else if (!major_collector_opt || !strcmp (major_collector_opt, "marksweep-fixed")) {
+ mono_sgen_marksweep_fixed_init (&major_collector);
+ } else if (!major_collector_opt || !strcmp (major_collector_opt, "marksweep-par")) {
+ mono_sgen_marksweep_par_init (&major_collector);
workers_init (mono_cpu_count ());
- } else if (!major_collector || !strcmp (major_collector, "marksweep-fixed-par")) {
- mono_sgen_marksweep_fixed_par_init (&major);
+ } else if (!major_collector_opt || !strcmp (major_collector_opt, "marksweep-fixed-par")) {
+ mono_sgen_marksweep_fixed_par_init (&major_collector);
workers_init (mono_cpu_count ());
- } else if (!strcmp (major_collector, "copying")) {
- mono_sgen_copying_init (&major);
+ } else if (!strcmp (major_collector_opt, "copying")) {
+ mono_sgen_copying_init (&major_collector);
} else {
- fprintf (stderr, "Unknown major collector `%s'.\n", major_collector);
+ fprintf (stderr, "Unknown major collector `%s'.\n", major_collector_opt);
exit (1);
}
#ifdef SGEN_HAVE_CARDTABLE
- use_cardtable = major.supports_cardtable;
+ use_cardtable = major_collector.supports_cardtable;
#else
use_cardtable = FALSE;
#endif
use_cardtable = FALSE;
} else if (strcmp (opt, "cardtable") == 0) {
if (!use_cardtable) {
- if (major.supports_cardtable)
+ if (major_collector.supports_cardtable)
fprintf (stderr, "The cardtable write barrier is not supported on this platform.\n");
else
fprintf (stderr, "The major collector does not support the cardtable write barrier.\n");
continue;
}
#endif
- if (!(major.handle_gc_param && major.handle_gc_param (opt))) {
+ if (!(major_collector.handle_gc_param && major_collector.handle_gc_param (opt))) {
fprintf (stderr, "MONO_GC_PARAMS must be a comma-delimited list of one or more of the following:\n");
fprintf (stderr, " nursery-size=N (where N is an integer, possibly with a k, m or a g suffix)\n");
fprintf (stderr, " major=COLLECTOR (where COLLECTOR is `marksweep', `marksweep-par' or `copying')\n");
fprintf (stderr, " wbarrier=WBARRIER (where WBARRIER is `remset' or `cardtable')\n");
- if (major.print_gc_param_usage)
- major.print_gc_param_usage ();
+ if (major_collector.print_gc_param_usage)
+ major_collector.print_gc_param_usage ();
exit (1);
}
}
g_strfreev (opts);
}
- if (major_collector)
- g_free (major_collector);
+ if (major_collector_opt)
+ g_free (major_collector_opt);
nursery_size = DEFAULT_NURSERY_SIZE;
minor_collection_allowance = MIN_MINOR_COLLECTION_ALLOWANCE;
* Recursion is not allowed for the thread lock.
*/
#define LOCK_DECLARE(name) pthread_mutex_t name = PTHREAD_MUTEX_INITIALIZER
+/* if changing LOCK_INIT to something that isn't idempotent, look at
+ its use in mono_gc_base_init in sgen-gc.c */
#define LOCK_INIT(name)
#define LOCK_GC pthread_mutex_lock (&gc_mutex)
#define UNLOCK_GC pthread_mutex_unlock (&gc_mutex)
} END_FOREACH_BLOCK;
}
+#define CARD_WORDS_PER_BLOCK (CARDS_PER_BLOCK / SIZEOF_VOID_P)
+/*
+ * MS blocks are 16K aligned.
+ * Cardtables are 4K aligned, at least.
+ * This means that the cardtable of a given block is 32 bytes aligned.
+ */
+static guint8*
+initial_skip_card (guint8 *card_data)
+{
+ mword *cards = (mword*)card_data;
+ mword card;
+ int i;
+ for (i = 0; i < CARD_WORDS_PER_BLOCK; ++i) {
+ card = cards [i];
+ if (card)
+ break;
+ }
+
+ if (i == CARD_WORDS_PER_BLOCK)
+ return card_data + CARDS_PER_BLOCK;
+
+#if defined(__i386__) && defined(__GNUC__)
+ return card_data + i * 4 + (__builtin_ffs (card) - 1) / 8;
+#elif defined(__x86_64__) && defined(__GNUC__)
+ return card_data + i * 8 + (__builtin_ffsll (card) - 1) / 8;
+#else
+ for (i = i * SIZEOF_VOID_P; i < CARDS_PER_BLOCK; ++i) {
+ if (card_data [i])
+ return &card_data [i];
+ }
+ return card_data;
+#endif
+}
+
+
+static guint8*
+skip_card (guint8 *card_data, guint8 *card_data_end)
+{
+ while (card_data < card_data_end && !*card_data)
+ ++card_data;
+ return card_data;
+}
+
#define MS_BLOCK_OBJ_INDEX_FAST(o,b,os) (((char*)(o) - ((b) + MS_BLOCK_SKIP)) / (os))
#define MS_BLOCK_OBJ_FAST(b,os,i) ((b) + MS_BLOCK_SKIP + (os) * (i))
#define MS_OBJ_ALLOCED_FAST(o,b) (*(void**)(o) && (*(char**)(o) < (b) || *(char**)(o) >= (b) + MS_BLOCK_SIZE))
MSBlockInfo *block;
FOREACH_BLOCK (block) {
- int i;
int block_obj_size;
- char *start, *block_start;
+ char *block_start;
if (!block->has_references)
continue;
block_obj_size = block->obj_size;
- start = block_start = block->block;
+ block_start = block->block;
if (block_obj_size >= CARD_SIZE_IN_BYTES) {
- guint8 cards [CARDS_PER_BLOCK];
- char *obj = (char*)MS_BLOCK_OBJ_FAST (block_start, block_obj_size, 0);
- char *end = start + MS_BLOCK_SIZE;
- char *base = sgen_card_table_align_pointer (obj);
+ guint8 *cards;
+#ifndef SGEN_HAVE_OVERLAPPING_CARDS
+ guint8 cards_data [CARDS_PER_BLOCK];
+#endif
+ char *obj, *end, *base;
+
+ /*We can avoid the extra copy since the remark cardtable was cleaned before */
+#ifdef SGEN_HAVE_OVERLAPPING_CARDS
+ cards = sgen_card_table_get_card_scan_address ((mword)block_start);
+#else
+ cards = cards_data;
+ if (!sgen_card_table_get_card_data (cards_data, (mword)block_start, CARDS_PER_BLOCK))
+ continue;
+#endif
- sgen_card_table_get_card_data (cards, (mword)start, CARDS_PER_BLOCK);
+ obj = (char*)MS_BLOCK_OBJ_FAST (block_start, block_obj_size, 0);
+ end = block_start + MS_BLOCK_SIZE;
+ base = sgen_card_table_align_pointer (obj);
while (obj < end) {
if (MS_OBJ_ALLOCED_FAST (obj, block_start)) {
obj += block_obj_size;
}
} else {
- for (i = 0; i < CARDS_PER_BLOCK; ++i, start += CARD_SIZE_IN_BYTES) {
+ guint8 *card_data, *card_base;
+ guint8 *card_data_end;
+
+ /*
+ * This is safe in face of card aliasing for the following reason:
+ *
+ * Major blocks are 16k aligned, or 32 cards aligned.
+ * Cards aliasing happens in powers of two, so as long as major blocks are aligned to their
+ * sizes, they won't overflow the cardtable overlap modulus.
+ */
+ card_data = card_base = sgen_card_table_get_card_scan_address ((mword)block_start);
+ card_data_end = card_data + CARDS_PER_BLOCK;
+
+ for (card_data = initial_skip_card (card_data); card_data < card_data_end; ++card_data) { //card_data = skip_card (card_data + 1, card_data_end)) {
int index;
- char *obj, *end;
+ int idx = card_data - card_base;
+ char *start = (char*)(block_start + idx * CARD_SIZE_IN_BYTES);
+ char *end = start + CARD_SIZE_IN_BYTES;
+ char *obj;
- if (!sgen_card_table_card_begin_scanning ((mword)start))
+ if (!*card_data)
continue;
+ sgen_card_table_prepare_card_for_scanning (card_data);
- end = start + CARD_SIZE_IN_BYTES;
- if (i == 0)
+ if (idx == 0)
index = 0;
else
index = MS_BLOCK_OBJ_INDEX_FAST (start, block_start, block_obj_size);
FILL_COLLECTOR_COPY_OBJECT (collector);
FILL_COLLECTOR_SCAN_OBJECT (collector);
+
+
+ /*cardtable requires major pages to be 8 cards aligned*/
+ g_assert ((MS_BLOCK_SIZE % (8 * CARD_SIZE_IN_BYTES)) == 0);
+
}
#endif
static GrayQueue workers_distribute_gray_queue;
-#define WORKERS_DISTRIBUTE_GRAY_QUEUE (major.is_parallel ? &workers_distribute_gray_queue : &gray_queue)
+#define WORKERS_DISTRIBUTE_GRAY_QUEUE (major_collector.is_parallel ? &workers_distribute_gray_queue : &gray_queue)
/*
* Must be a power of 2. It seems that larger values don't help much.
{
int old, new;
- if (!major.is_parallel)
+ if (!major_collector.is_parallel)
return -1;
do {
static void
workers_distribute_gray_queue_sections (void)
{
- if (!major.is_parallel)
+ if (!major_collector.is_parallel)
return;
workers_gray_queue_share_redirect (&workers_distribute_gray_queue);
{
int i;
- if (!major.is_parallel)
+ if (!major_collector.is_parallel)
return;
//g_print ("initing %d workers\n", num_workers);
{
int i;
- if (!major.is_parallel)
+ if (!major_collector.is_parallel)
return;
g_assert (workers_num_working == 0);
{
int i;
- if (!major.is_parallel)
+ if (!major_collector.is_parallel)
return;
//g_print ("joining\n");
{
int i;
- if (!major.is_parallel)
+ if (!major_collector.is_parallel)
return FALSE;
for (i = 0; i < workers_num; ++i) {
typedef struct _MonoInternalThread MonoInternalThread;
+typedef void (*MonoThreadCleanupFunc) (MonoInternalThread* thread);
+
gpointer mono_create_thread (WapiSecurityAttributes *security,
guint32 stacksize, WapiThreadStart start,
gpointer param, guint32 create, gsize *tid) MONO_INTERNAL;
MonoInternalThread* mono_thread_create_internal (MonoDomain *domain, gpointer func, gpointer arg, gboolean threadpool_thread) MONO_INTERNAL;
+void mono_threads_install_cleanup (MonoThreadCleanupFunc func) MONO_INTERNAL;
+
void ves_icall_System_Threading_Thread_ConstructInternalThread (MonoThread *this) MONO_INTERNAL;
HANDLE ves_icall_System_Threading_Thread_Thread_internal(MonoThread *this_obj, MonoObject *start) MONO_INTERNAL;
void ves_icall_System_Threading_InternalThread_Thread_free_internal(MonoInternalThread *this_obj, HANDLE thread) MONO_INTERNAL;
mono_array_set (thread->cached_culture_info, MonoObject*, i, NULL);
}
+ if (mono_thread_cleanup_fn)
+ mono_thread_cleanup_fn (thread);
+
/* if the thread is not in the hash it has been removed already */
if (!handle_remove (thread))
return;
mono_free_static_data (thread->static_data, TRUE);
thread->static_data = NULL;
- /*
- * FIXME: The check for shutting_down here is a kludge and
- * should be removed. The reason we need it here is because
- * mono_thread_manage() does not wait for finalizer threads,
- * so we might still be at this point in a finalizer thread
- * after the main thread has cleared the root domain, so
- * thread could have been zeroed out.
- */
- if (mono_thread_cleanup_fn && !shutting_down)
- mono_thread_cleanup_fn (thread->root_domain_thread);
-
small_id_free (thread->small_id);
thread->small_id = -2;
}
void mono_thread_manage (void)
{
- struct wait_data *wait=g_new0 (struct wait_data, 1);
+ struct wait_data wait_data;
+ struct wait_data *wait = &wait_data;
+ memset (wait, 0, sizeof (struct wait_data));
/* join each thread that's still running */
THREAD_DEBUG (g_message ("%s: Joining each running thread...", __func__));
if(threads==NULL) {
THREAD_DEBUG (g_message("%s: No threads", __func__));
mono_threads_unlock ();
- g_free (wait);
return;
}
mono_threads_unlock ();
ResetEvent (background_change_event);
wait->num=0;
+ /*We must zero all InternalThread pointers to avoid making the GC unhappy.*/
+ memset (wait->threads, 0, MAXIMUM_WAIT_OBJECTS * SIZEOF_VOID_P);
mono_g_hash_table_foreach (threads, build_wait_tids, wait);
mono_threads_unlock ();
if(wait->num>0) {
mono_threads_lock ();
wait->num = 0;
+ /*We must zero all InternalThread pointers to avoid making the GC unhappy.*/
+ memset (wait->threads, 0, MAXIMUM_WAIT_OBJECTS * SIZEOF_VOID_P);
mono_g_hash_table_foreach_remove (threads, remove_and_abort_threads, wait);
mono_threads_unlock ();
#ifndef HOST_WIN32
sched_yield ();
#endif
-
- g_free (wait);
}
static void terminate_thread (gpointer key, gpointer value, gpointer user)
*/
void mono_thread_suspend_all_other_threads (void)
{
- struct wait_data *wait = g_new0 (struct wait_data, 1);
+ struct wait_data wait_data;
+ struct wait_data *wait = &wait_data;
int i;
gsize self = GetCurrentThreadId ();
gpointer *events;
guint32 eventidx = 0;
gboolean starting, finished;
+ memset (wait, 0, sizeof (struct wait_data));
/*
* The other threads could be in an arbitrary state at this point, i.e.
* they could be starting up, shutting down etc. This means that there could be
* threads while threads_mutex is held.
*/
wait->num = 0;
+ /*We must zero all InternalThread pointers to avoid making the GC unhappy.*/
+ memset (wait->threads, 0, MAXIMUM_WAIT_OBJECTS * SIZEOF_VOID_P);
mono_threads_lock ();
mono_g_hash_table_foreach (threads, collect_threads_for_suspend, wait);
mono_threads_unlock ();
g_free (events);
}
-
- g_free (wait);
}
static void
void
mono_threads_request_thread_dump (void)
{
- struct wait_data *wait = g_new0 (struct wait_data, 1);
+ struct wait_data wait_data;
+ struct wait_data *wait = &wait_data;
int i;
+ memset (wait, 0, sizeof (struct wait_data));
+
/*
* Make a copy of the hashtable since we can't do anything with
* threads while threads_mutex is held.
MONO_BEGIN_DECLS
-typedef void (*MonoThreadCleanupFunc) (MonoThread* thread);
-
/* 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_detach (MonoThread *thread);
extern void mono_thread_exit (void);
-void mono_threads_install_cleanup (MonoThreadCleanupFunc func);
void mono_thread_set_manage_callback (MonoThread *thread, MonoThreadManageCallback func);
extern void mono_threads_set_default_stacksize (uint32_t stacksize);
g_assert (bb);
while (ip < end && ctx.valid) {
+ int op_size;
ip_offset = ip - code_start;
{
const unsigned char *ip_copy = ip;
- int size, op;
+ int op;
if (ip_offset > bb->end) {
ADD_VERIFY_ERROR (&ctx, g_strdup_printf ("Branch or EH block at [0x%04x] targets middle instruction at 0x%04x", bb->end, ip_offset));
if (ip_offset == bb->end)
bb = bb->next;
- size = mono_opcode_value_and_size (&ip_copy, end, &op);
- if (size == -1) {
+ op_size = mono_opcode_value_and_size (&ip_copy, end, &op);
+ if (op_size == -1) {
ADD_VERIFY_ERROR (&ctx, g_strdup_printf ("Invalid instruction %x at 0x%04x", *ip, ip_offset));
goto cleanup;
}
- if (ADD_IS_GREATER_OR_OVF (ip_offset, size, bb->end)) {
+ if (ADD_IS_GREATER_OR_OVF (ip_offset, op_size, bb->end)) {
ADD_VERIFY_ERROR (&ctx, g_strdup_printf ("Branch or EH block targets middle of instruction at 0x%04x", ip_offset));
goto cleanup;
}
/*Last Instruction*/
- if (ip_offset + size == bb->end && mono_opcode_is_prefix (op)) {
+ if (ip_offset + op_size == bb->end && mono_opcode_is_prefix (op)) {
ADD_VERIFY_ERROR (&ctx, g_strdup_printf ("Branch or EH block targets between prefix '%s' and instruction at 0x%04x", mono_opcode_name (op), ip_offset));
goto cleanup;
}
-
- if (bb->dead) {
- /*FIXME remove this once we move all bad branch checking code to use BB only*/
- ctx.code [ip_offset].flags |= IL_CODE_FLAG_SEEN;
- ip += size;
- continue;
- }
}
ctx.ip_offset = ip_offset = ip - code_start;
}
}
+ /*This must be done after fallthru detection otherwise it won't happen.*/
+ if (bb->dead) {
+ /*FIXME remove this once we move all bad branch checking code to use BB only*/
+ ctx.code [ip_offset].flags |= IL_CODE_FLAG_SEEN;
+ ip += op_size;
+ continue;
+ }
+
if (!ctx.valid)
break;
* tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
by merging the LLVM and !MAP_32BIT cases.
+2009-12-14 Geoff Norton <gnorton@novell.com>
+
+ * debugger-agent.c: The end_runtime_invoke guard isn't working on
+ AMD64 as __builtin_frame_address (1) returns NULL. Disable the
+ behaviour by default, and make it runtime configurable.
+
2009-12-13 Jonathan Chambers <joncham@gmail.com>
* debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
$(monodir)/mono/utils/libmonoutils.la \
$(GLIB_LIBS)
+moon_libs = \
+ $(monodir)/mono/metadata/libmonoruntimemoon.la \
+ $(monodir)/mono/io-layer/libwapi.la \
+ $(monodir)/mono/utils/libmonoutils.la \
+ $(GLIB_LIBS) \
+ $(libgc_libs)
+
static_libs= \
$(monodir)/mono/metadata/libmonoruntime-static.la \
$(monodir)/mono/io-layer/libwapi.la \
noinst_PROGRAMS = genmdesc
-lib_LTLIBRARIES = libmono-2.0.la $(sgen_libraries)
+if SHARED_MONO
+shared_libraries = libmono-2.0.la
+endif
+
+lib_LTLIBRARIES = $(shared_libraries) $(sgen_libraries)
noinst_LTLIBRARIES = libmono-static.la $(sgen_static_libraries)
if MOONLIGHT
if MOONLIGHT
libmono_moon_la_SOURCES = $(libmono_2_0_la_SOURCES)
-libmono_moon_la_CFLAGS = $(AM_CFLAGS) $(BOEHM_DEFINES) $(LIBGC_CFLAGS)
+libmono_moon_la_CFLAGS = $(AM_CFLAGS) $(MOONLIGHT_DEFINES)
+libmono_moon_la_LIBADD = $(moon_libs) $(LIBMONO_DTRACE_OBJECT)
endif
libmono_static_la_SOURCES = $(libmono_2_0_la_SOURCES)
libmonosgen_2_0_la_LIBADD = \
$(sgen_libs) $(LIBMONO_DTRACE_OBJECT)
-if MOONLIGHT
-libmono_moon_la_LIBADD = $(libmono_2_0_la_LIBADD)
-endif
-
basic-simd.exe: basic-simd.cs
$(MCS) -out:$@ $< -r:TestDriver.dll -r:Mono.Simd.dll
storei8_membase_reg: dest:b src1:i
storer4_membase_reg: dest:b src1:f len:7
storer8_membase_reg: dest:b src1:f len:7
+store_mem_imm: len:12
load_membase: dest:i src1:b len:7
loadi1_membase: dest:y src1:b len:7
loadu1_membase: dest:y src1:b len:7
atomic_cas_i4: src1:b src2:i src3:a dest:a len:24
memory_barrier: len:16
-card_table_wbarrier: src1:a src2:i clob:d len:28
+card_table_wbarrier: src1:a src2:i clob:d len:34
relaxed_nop: len:2
hard_nop: len:1
GSList *onthrow;
int timeout;
char *launch;
+ gboolean embedding;
} AgentConfig;
typedef struct
#define HEADER_LENGTH 11
#define MAJOR_VERSION 2
-#define MINOR_VERSION 1
+#define MINOR_VERSION 2
typedef enum {
CMD_SET_VM = 1,
static int log_level;
+static gboolean embedding;
+
static FILE *log_file;
/* Classes whose class load event has been sent */
static void runtime_shutdown (MonoProfiler *prof);
-static void thread_startup (MonoProfiler *prof, intptr_t tid);
+static void thread_startup (MonoProfiler *prof, uintptr_t tid);
-static void thread_end (MonoProfiler *prof, intptr_t tid);
+static void thread_end (MonoProfiler *prof, uintptr_t tid);
static void appdomain_load (MonoProfiler *prof, MonoDomain *domain, int result);
agent_config.timeout = atoi (arg + 8);
} else if (strncmp (arg, "launch=", 7) == 0) {
agent_config.launch = g_strdup (arg + 7);
+ } else if (strncmp (arg, "embedding=", 10) == 0) {
+ agent_config.embedding = atoi (arg + 10) == 1;
} else {
print_usage ();
exit (1);
log_level = agent_config.log_level;
+ embedding = agent_config.embedding;
+
if (agent_config.log_file) {
log_file = fopen (agent_config.log_file, "w+");
if (!log_file) {
}
static void
-thread_startup (MonoProfiler *prof, intptr_t tid)
+thread_startup (MonoProfiler *prof, uintptr_t tid)
{
MonoInternalThread *thread = mono_thread_internal_current ();
MonoInternalThread *old_thread;
}
static void
-thread_end (MonoProfiler *prof, intptr_t tid)
+thread_end (MonoProfiler *prof, uintptr_t tid)
{
MonoInternalThread *thread;
DebuggerTlsData *tls = NULL;
gpointer stackptr = __builtin_frame_address (1);
#endif
- if (ss_req == NULL || stackptr != ss_invoke_addr || ss_req->thread != mono_thread_internal_current ())
+ if (!embedding || ss_req == NULL || stackptr != ss_invoke_addr || ss_req->thread != mono_thread_internal_current ())
return;
/*
}
#endif
- /*
- * This must be called before mono_debug_init(), because the
- * latter registers GC roots.
- */
- mono_gc_base_init ();
-
if (action == DO_DEBUGGER) {
enable_debugging = TRUE;
arg_info [0].offset = offset;
+ if (cinfo->vtype_retaddr && cinfo->vret_arg_index == 0) {
+ args_size += sizeof (gpointer);
+ offset += 4;
+ }
+
if (csig->hasthis) {
args_size += sizeof (gpointer);
offset += 4;
}
- if (MONO_TYPE_ISSTRUCT (csig->ret) && (cinfo->ret.storage == ArgOnStack)) {
+ if (cinfo->vtype_retaddr && cinfo->vret_arg_index == 1 && csig->hasthis) {
+ /* Emitted after this */
args_size += sizeof (gpointer);
offset += 4;
}
offset += pad;
arg_info [k + 1].offset = offset;
offset += size;
+
+ if (k == 0 && cinfo->vtype_retaddr && cinfo->vret_arg_index == 1 && !csig->hasthis) {
+ /* Emitted after the first arg */
+ args_size += sizeof (gpointer);
+ offset += 4;
+ }
}
if (mono_do_x86_stack_align && !CALLCONV_IS_STDCALL (csig))
br = code; x86_branch8 (code, X86_CC_NE, -1, FALSE);
x86_mov_reg_reg (code, X86_EDX, ptr, 4);
x86_shift_reg_imm (code, X86_SHR, X86_EDX, card_table_shift);
+ if (card_table_mask)
+ x86_alu_reg_imm (code, X86_AND, X86_EDX, (int)card_table_mask);
x86_mov_membase_imm (code, X86_EDX, card_table, 1, 1);
x86_patch (br, code);
break;
(*mono_get_lmf_addr ()) = lmf;
}
+static void
+mono_set_jit_tls (MonoJitTlsData *jit_tls)
+{
+ TlsSetValue (mono_jit_tls_id, jit_tls);
+
+#ifdef HAVE_KW_THREAD
+ mono_jit_tls = jit_tls;
+#endif
+}
+
+static void
+mono_set_lmf_addr (gpointer lmf_addr)
+{
+#ifdef HAVE_KW_THREAD
+ mono_lmf_addr = lmf_addr;
+#endif
+}
+
/* Called by native->managed wrappers */
void
mono_jit_thread_attach (MonoDomain *domain)
jit_tls = g_new0 (MonoJitTlsData, 1);
- TlsSetValue (mono_jit_tls_id, jit_tls);
-
-#ifdef HAVE_KW_THREAD
- mono_jit_tls = jit_tls;
-#endif
-
jit_tls->abort_func = abort_func;
jit_tls->end_of_stack = stack_start;
+ mono_set_jit_tls (jit_tls);
+
lmf = g_new0 (MonoLMF, 1);
#ifdef MONO_ARCH_INIT_TOP_LMF_ENTRY
MONO_ARCH_INIT_TOP_LMF_ENTRY (lmf);
#if defined(HAVE_KW_THREAD) && defined(MONO_ARCH_ENABLE_MONO_LMF_VAR)
/* jit_tls->lmf is unused */
mono_lmf = lmf;
- mono_lmf_addr = &mono_lmf;
+ mono_set_lmf_addr (&mono_lmf);
#else
-#if defined(HAVE_KW_THREAD)
- mono_lmf_addr = &jit_tls->lmf;
-#endif
+ mono_set_lmf_addr (&jit_tls->lmf);
jit_tls->lmf = lmf;
#endif
}
static void
-mini_thread_cleanup (MonoThread *thread)
+mini_thread_cleanup (MonoInternalThread *thread)
{
- MonoInternalThread *internal = thread->internal_thread;
- MonoJitTlsData *jit_tls = internal->jit_data;
+ MonoJitTlsData *jit_tls = thread->jit_data;
if (jit_tls) {
mono_debugger_thread_cleanup (jit_tls);
mono_free_altstack (jit_tls);
g_free (jit_tls->first_lmf);
g_free (jit_tls);
- internal->jit_data = NULL;
+ thread->jit_data = NULL;
/* We can't clean up tls information if we are on another thread, it will clean up the wrong stuff
* It would be nice to issue a warning when this happens outside of the shutdown sequence. but it's
*
* The current offender is mono_thread_manage which cleanup threads from the outside.
*/
- if (internal == mono_thread_internal_current ()) {
- TlsSetValue (mono_jit_tls_id, NULL);
-
-#ifdef HAVE_KW_THREAD
- mono_jit_tls = NULL;
- mono_lmf_addr = NULL;
-#if defined(MONO_ARCH_ENABLE_MONO_LMF_VAR)
- mono_lmf = NULL;
-#endif
-#endif
+ if (thread == mono_thread_internal_current ()) {
+ mono_set_lmf (NULL);
+ mono_set_jit_tls (NULL);
+ mono_set_lmf_addr (NULL);
}
}
}
}
static void
-thread_start (MonoProfiler *profiler, intptr_t tid) {
+thread_start (MonoProfiler *profiler, uintptr_t tid) {
ProfilerPerThreadData *data;
ProfilerEventData *event;
GET_PROFILER_THREAD_DATA (data);
COMMIT_RESERVED_EVENTS (data);
}
static void
-thread_end (MonoProfiler *profiler, intptr_t tid) {
+thread_end (MonoProfiler *profiler, uintptr_t tid) {
ProfilerPerThreadData *data;
ProfilerEventData *event;
GET_PROFILER_THREAD_DATA (data);
/load-missing.il -crlf
/mutexes.cs -crlf
/thread4.cs -crlf
+/qt-instance.il -crlf
/make_type_visibility_test.sh -crlf
/unverifiable_ldobj_with_generic_type_definition.il -crlf
/unverifiable_throw_with_unboxed_generic_argument.il -crlf
+/invalid_argument_type.il -crlf
+/invalid_ldtoken_field.il -crlf
+/invalid_ldtoken_method.il -crlf
+/invalid_ldtoken_type.il -crlf
+/invalid_ldtoken_type_2.il -crlf
+/invalid_ldtoken_type_3.il -crlf
+/invalid_local_variable.il -crlf
-.assembly 'invalid_fallout_of_finally_block'
+.assembly extern mscorlib
{
+ .ver 2:0:0:0
+ .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+}
+.assembly 'bug'
+{
+ .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 bug.exe // GUID = {7CDDF4B6-7581-4902-9709-6155199DC325}
-.method public static int32 Main() cil managed
+
+.class private auto ansi beforefieldinit Program extends [mscorlib]System.Object
{
- .entrypoint
- .maxstack 8
- .locals init (int32 V0)
+ .method public static hidebysig default void __Main () cil managed
+ {
+ //.entrypoint
+ .maxstack 2
+ ret
+ }
-BB_00:
- newobj instance void class [mscorlib]System.Exception::.ctor()
- throw
- leave END
-BB_01:
-BB_02:
+ .method public static default void Main () cil managed
+ {
+ .entrypoint
+ .maxstack 2
+ .locals init (int32 loc0)
+
nop
nop
-BB_03:
-
+ ldc.i4.0
+ stloc.0
+
+ .try {
+ nop
+ ldc.i4.0
+ brfalse ELSE
+ leave END
+ELSE:
+ nop
+ leave END
+ } finally {
+ nop
+ //endfinally
+ }
+END0:
+ endfinally
+ nop
END:
- ldc.i4.0
- ret
-
-.try BB_00 to BB_01 finally handler BB_02 to BB_03
-
+ ret
+ }
}
+
mono-codeman.h \
mono-counters.h \
mono-digest.h \
- mono-embed.h \
mono-error.h \
mono-math.h \
mono-membar.h \
libmonoutils_la_SOURCES = $(monoutils_sources) $(arch_sources)
libmonoutilsincludedir = $(includedir)/mono-$(API_VER)/mono/utils
-libmonoutilsinclude_HEADERS = \
- mono-logger.h \
- mono-error.h \
- mono-publib.h
+libmonoutilsinclude_HEADERS = \
+ mono-logger.h \
+ mono-error.h \
+ mono-publib.h \
+ mono-dl-fallback.h
-EXTRA_DIST = ChangeLog
+EXTRA_DIST = ChangeLog mono-embed.h mono-embed.c
--- /dev/null
+#ifndef __MONO_UTILS_DL_FALLBACK_H__
+#define __MONO_UTILS_DL_FALLBACK_H__
+
+#include <mono/utils/mono-publib.h>
+
+MONO_BEGIN_DECLS
+
+enum {
+ MONO_DL_LAZY = 1,
+ MONO_DL_LOCAL = 2,
+ MONO_DL_MASK = 3
+};
+
+/*
+ * This is the dynamic loader fallback API
+ */
+typedef struct MonoDlFallbackHandler MonoDlFallbackHandler;
+
+/*
+ * The "err" variable contents must be allocated using g_malloc or g_strdup
+ */
+typedef void* (*MonoDlFallbackLoad) (const char *name, int flags, char **err, void *user_data);
+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,
+ MonoDlFallbackClose close_func, void *user_data);
+
+void mono_dl_fallback_unregister (MonoDlFallbackHandler *handler);
+
+MONO_END_DECLS
+
+#endif /* __MONO_UTILS_DL_FALLBACK_H__ */
+
".so",
".bundle"
};
-#elif EMBEDDED_PINVOKE
-#define SOPREFIX ""
-static const char suffixes [][1] = {
- ""
-};
#else
#define SOPREFIX "lib"
static const char suffixes [][4] = {
return lflags;
}
-#elif EMBEDDED_PINVOKE
-#define SO_HANDLE_TYPE void*
-void *LL_SO_OPEN (const char *file, int flags);
-int LL_SO_CLOSE (void *handle);
-#define LL_SO_SYMBOL(module,symbol) _LL_SO_SYMBOL((module)->handle, (symbol))
-void *_LL_SO_SYMBOL (void *handle, const char *symbol);
-char *LL_SO_ERROR();
-#define LL_SO_TRFLAGS(flags) 0
-
#else
/* no dynamic loader supported */
#define SO_HANDLE_TYPE void*
#endif
+static GSList *fallback_handlers;
+
+struct MonoDlFallbackHandler {
+ MonoDlFallbackLoad load_func;
+ MonoDlFallbackSymbol symbol_func;
+ MonoDlFallbackClose close_func;
+ void *user_data;
+};
+
struct _MonoDl {
SO_HANDLE_TYPE handle;
int main_module;
+
+ /* If not NULL, use the methods in MonoDlFallbackHandler instead of the LL_* methods */
+ MonoDlFallbackHandler *dl_fallback;
};
#ifdef TARGET_WIN32
{
MonoDl *module;
void *lib;
+ MonoDlFallbackHandler *dl_fallback = NULL;
int lflags = LL_SO_TRFLAGS (flags);
if (error_msg)
module->main_module = name == NULL? TRUE: FALSE;
lib = LL_SO_OPEN (name, lflags);
if (!lib) {
+ GSList *node;
+ for (node = fallback_handlers; node != NULL; node = node->next){
+ MonoDlFallbackHandler *handler = (MonoDlFallbackHandler *) node->data;
+ *error_msg = NULL;
+
+ lib = handler->load_func (name, lflags, error_msg, handler->user_data);
+ if (*error_msg != NULL)
+ g_free (*error_msg);
+
+ if (lib != NULL){
+ dl_fallback = handler;
+ break;
+ }
+ }
+ }
+ if (!lib && !dl_fallback) {
char *lname;
char *llname;
const char *suff;
}
}
module->handle = lib;
+ module->dl_fallback = dl_fallback;
return module;
}
mono_dl_symbol (MonoDl *module, const char *name, void **symbol)
{
void *sym;
+ char *err = NULL;
+ if (module->dl_fallback) {
+ sym = module->dl_fallback->symbol_func (module->handle, name, &err, module->dl_fallback->user_data);
+ } else {
#if MONO_DL_NEED_USCORE
- {
- char *usname = malloc (strlen (name) + 2);
- *usname = '_';
- strcpy (usname + 1, name);
- sym = LL_SO_SYMBOL (module, usname);
- free (usname);
- }
+ {
+ char *usname = malloc (strlen (name) + 2);
+ *usname = '_';
+ strcpy (usname + 1, name);
+ sym = LL_SO_SYMBOL (module, usname);
+ free (usname);
+ }
#else
- sym = LL_SO_SYMBOL (module, name);
+ sym = LL_SO_SYMBOL (module, name);
#endif
+ }
+
if (sym) {
if (symbol)
*symbol = sym;
}
if (symbol)
*symbol = NULL;
- return LL_SO_ERROR ();
+ return (module->dl_fallback != NULL) ? err : LL_SO_ERROR ();
}
/**
void
mono_dl_close (MonoDl *module)
{
- LL_SO_CLOSE (module);
+ MonoDlFallbackHandler *dl_fallback = module->dl_fallback;
+
+ if (dl_fallback){
+ if (dl_fallback->close_func != NULL)
+ dl_fallback->close_func (module->handle, dl_fallback->user_data);
+ } else
+ LL_SO_CLOSE (module);
+
free (module);
}
return res;
}
-#if EMBEDDED_PINVOKE
-static GHashTable *mono_dls;
-static char *ll_last_error = "";
-
-/**
- * mono_dl_register_library:
- * @name: Library name, this is the name used by the DllImport as the external library name
- * @mappings: the mappings to register for P/Invoke.
- *
- * This function is only available on builds that define
- * EMBEDDED_PINVOKE, this is available for systems that do not provide
- * a dynamic linker but still want to use DllImport to easily invoke
- * code from the managed side into the unmanaged world.
- *
- * Mappings is a pointer to the first element of an array of
- * MonoDlMapping values. The list must be terminated with both
- * the name and addr fields set to NULL.
- *
- * This is typically used like this:
- * MonoDlMapping sample_library_mappings [] = {
- * { "CallMe", CallMe },
- * { NULL, NULL }
- * };
- *
- * ...
- * main ()
- * {
- * ...
- * mono_dl_register_library ("sample", sample_library_mappings);
- * ...
- * }
- *
- * Then the C# code can use this P/Invoke signature:
- *
- * [DllImport ("sample")]
- * extern static int CallMe (int f);
- */
-void
-mono_dl_register_library (const char *name, MonoDlMapping *mappings)
+MonoDlFallbackHandler *
+mono_dl_fallback_register (MonoDlFallbackLoad load_func, MonoDlFallbackSymbol symbol_func, MonoDlFallbackClose close_func, void *user_data)
{
- if (mono_dls == NULL)
- mono_dls = g_hash_table_new (g_str_hash, g_str_equal);
+ MonoDlFallbackHandler *handler;
- printf ("Inserting: 0x%p\n", mappings);
- g_hash_table_insert (mono_dls, g_strdup (name), mappings);
-}
+ g_return_val_if_fail (load_func != NULL, NULL);
+ g_return_val_if_fail (symbol_func != NULL, NULL);
-void *
-LL_SO_OPEN (const char *file, int flag)
-{
- void *mappings;
+ handler = g_new (MonoDlFallbackHandler, 1);
+ handler->load_func = load_func;
+ handler->symbol_func = symbol_func;
+ handler->close_func = close_func;
+ handler->user_data = user_data;
+
+ fallback_handlers = g_slist_prepend (fallback_handlers, handler);
- if (mono_dls == NULL){
- ll_last_error = "Library not registered";
- return NULL;
- }
-
- mappings = g_hash_table_lookup (mono_dls, file);
- ll_last_error = mappings == NULL ? "File not registered" : "";
- return mappings;
+ return handler;
}
-int LL_SO_CLOSE (void *handle)
+void
+mono_dl_fallback_unregister (MonoDlFallbackHandler *handler)
{
- // No-op
- return 0;
-}
+ GSList *found;
-void *
-_LL_SO_SYMBOL (void *handle, const char *symbol)
-{
- MonoDlMapping *mappings = (MonoDlMapping *) handle;
-
- for (;mappings->name; mappings++){
- if (strcmp (symbol, mappings->name) == 0){
- ll_last_error = "";
- return mappings->addr;
- }
- }
- ll_last_error = "Symbol not found";
- return NULL;
-}
+ found = g_slist_find (fallback_handlers, handler);
+ if (found == NULL)
+ return;
-char *
-LL_SO_ERROR (void)
-{
- return g_strdup (ll_last_error);
+ g_slist_remove (fallback_handlers, handler);
+ g_free (handler);
}
-#endif
#define __MONO_UTILS_DL_H__
#include "mono/utils/mono-compiler.h"
-
-enum {
- MONO_DL_LAZY = 1,
- MONO_DL_LOCAL = 2,
- MONO_DL_MASK = 3
-};
+#include "mono/utils/mono-dl-fallback.h"
typedef struct _MonoDl MonoDl;
char* mono_dl_build_path (const char *directory, const char *name, void **iter) MONO_INTERNAL;
-
#endif /* __MONO_UTILS_DL_H__ */
--- /dev/null
+/*
+ * mono-embed.c: Example code APIs to register a libraries using
+ * mono_dl_fallback_register. Real implementations should instead
+ * use a binary search for implementing the dl_mapping_open and
+ * dl_mapping_symbol methods here.
+ *
+ * Author:
+ * Mono Team (http://www.mono-project.com)
+ *
+ * Copyright 2001-2004 Ximian, Inc.
+ * Copyright 2004-2010 Novell, Inc.
+ *
+ */
+#include "config.h"
+#include "mono/utils/mono-dl.h"
+#include "mono/utils/mono-embed.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <glib.h>
+
+static GHashTable *mono_dls;
+
+static void *
+dl_mapping_open (const char *file, int flags, char **err, void *user_data)
+{
+ MonoDlMapping *mappings;
+
+ if (mono_dls == NULL){
+ *err = g_strdup ("Library not registered");
+ return NULL;
+ }
+
+ mappings = (MonoDlMapping *) g_hash_table_lookup (mono_dls, file);
+ *err = g_strdup (mappings == NULL ? "File not registered" : "");
+ return mappings;
+}
+
+static void *
+dl_mapping_symbol (void *handle, const char *symbol, char **err, void *user_data)
+{
+ MonoDlMapping *mappings = (MonoDlMapping *) handle;
+
+ for (;mappings->name; mappings++){
+ if (strcmp (symbol, mappings->name) == 0){
+ *err = g_strdup ("");
+ return mappings->addr;
+ }
+ }
+ *err = g_strdup ("Symbol not found");
+ return NULL;
+}
+
+/**
+ * mono_dl_register_library:
+u * @name: Library name, this is the name used by the DllImport as the external library name
+ * @mappings: the mappings to register for P/Invoke.
+ *
+ * The mappings registered using this function are used as fallbacks if the dynamic linker
+ * fails, or if the platform doesn't have a dynamic linker.
+ *
+ * Mappings is a pointer to the first element of an array of
+ * MonoDlMapping values. The list must be terminated with both
+ * the name and addr fields set to NULL.
+ *
+ * This is typically used like this:
+ * MonoDlMapping sample_library_mappings [] = {
+ * { "CallMe", CallMe },
+ * { NULL, NULL }
+ * };
+ *
+ * ...
+ * main ()
+ * {
+ * ...
+ * mono_dl_register_library ("sample", sample_library_mappings);
+ * ...
+ * }
+ *
+ * Then the C# code can use this P/Invoke signature:
+ *
+ * [DllImport ("sample")]
+ * extern static int CallMe (int f);
+ */
+void
+mono_dl_register_library (const char *name, MonoDlMapping *mappings)
+{
+ if (mono_dls == NULL){
+ mono_dls = g_hash_table_new (g_str_hash, g_str_equal);
+ mono_dl_fallback_register (dl_mapping_open, dl_mapping_symbol, NULL, NULL);
+ }
+
+ g_hash_table_insert (mono_dls, g_strdup (name), mappings);
+}
+
#ifndef __MONO_EMBED_H__
#define __MONO_EMBED_H__
+#include <mono/utils/mono-publib.h>
+
+MONO_BEGIN_DECLS
+
/*
- * These are only used and available on embedded systems, the
- * EMBEDDED_PINVOKE configuration option must be set, and it
- * overrides any platform symbol loading functionality
+ * This is a fallback for platform symbol loading functionality.
*/
typedef struct {
const char *name;
void mono_dl_register_library (const char *name, MonoDlMapping *mappings);
+MONO_END_DECLS
+
#endif /* __MONO_EMBED_H__ */
#define UCONTEXT_REG_EDI(ctx) (((ucontext_t*)(ctx))->uc_mcontext.__gregs [_REG_EDI])
#define UCONTEXT_REG_EIP(ctx) (((ucontext_t*)(ctx))->uc_mcontext.__gregs [_REG_EIP])
#elif defined(__OpenBSD__)
- #define UCONTEXT_REG_EAX(ctx) ((ctx)->sc_eax)
- #define UCONTEXT_REG_EBX(ctx) ((ctx)->sc_ebx)
- #define UCONTEXT_REG_ECX(ctx) ((ctx)->sc_ecx)
- #define UCONTEXT_REG_EDX(ctx) ((ctx)->sc_edx)
- #define UCONTEXT_REG_EBP(ctx) ((ctx)->sc_ebp)
- #define UCONTEXT_REG_ESP(ctx) ((ctx)->sc_esp)
- #define UCONTEXT_REG_ESI(ctx) ((ctx)->sc_esi)
- #define UCONTEXT_REG_EDI(ctx) ((ctx)->sc_edi)
- #define UCONTEXT_REG_EIP(ctx) ((ctx)->sc_eip)
+ #define UCONTEXT_REG_EAX(ctx) (((ucontext_t*)(ctx))->sc_eax)
+ #define UCONTEXT_REG_EBX(ctx) (((ucontext_t*)(ctx))->sc_ebx)
+ #define UCONTEXT_REG_ECX(ctx) (((ucontext_t*)(ctx))->sc_ecx)
+ #define UCONTEXT_REG_EDX(ctx) (((ucontext_t*)(ctx))->sc_edx)
+ #define UCONTEXT_REG_EBP(ctx) (((ucontext_t*)(ctx))->sc_ebp)
+ #define UCONTEXT_REG_ESP(ctx) (((ucontext_t*)(ctx))->sc_esp)
+ #define UCONTEXT_REG_ESI(ctx) (((ucontext_t*)(ctx))->sc_esi)
+ #define UCONTEXT_REG_EDI(ctx) (((ucontext_t*)(ctx))->sc_edi)
+ #define UCONTEXT_REG_EIP(ctx) (((ucontext_t*)(ctx))->sc_eip)
#else
#define UCONTEXT_REG_EAX(ctx) (((ucontext_t*)(ctx))->uc_mcontext.gregs [REG_EAX])
#define UCONTEXT_REG_EBX(ctx) (((ucontext_t*)(ctx))->uc_mcontext.gregs [REG_EBX])
#define UCONTEXT_GREGS(ctx) ((guint64*)&(((ucontext_t*)(ctx))->uc_mcontext))
#elif defined(__OpenBSD__)
/* OpenBSD/amd64 has no gregs array, ucontext_t == sigcontext */
- #define UCONTEXT_REG_RAX(ctx) ((ctx)->sc_rax)
- #define UCONTEXT_REG_RBX(ctx) ((ctx)->sc_rbx)
- #define UCONTEXT_REG_RCX(ctx) ((ctx)->sc_rcx)
- #define UCONTEXT_REG_RDX(ctx) ((ctx)->sc_rdx)
- #define UCONTEXT_REG_RBP(ctx) ((ctx)->sc_rbp)
- #define UCONTEXT_REG_RSP(ctx) ((ctx)->sc_rsp)
- #define UCONTEXT_REG_RSI(ctx) ((ctx)->sc_rsi)
- #define UCONTEXT_REG_RDI(ctx) ((ctx)->sc_rdi)
- #define UCONTEXT_REG_RIP(ctx) ((ctx)->sc_rip)
- #define UCONTEXT_REG_R8(ctx) ((ctx)->sc_r8)
- #define UCONTEXT_REG_R9(ctx) ((ctx)->sc_r9)
- #define UCONTEXT_REG_R10(ctx) ((ctx)->sc_r10)
- #define UCONTEXT_REG_R11(ctx) ((ctx)->sc_r11)
- #define UCONTEXT_REG_R12(ctx) ((ctx)->sc_r12)
- #define UCONTEXT_REG_R13(ctx) ((ctx)->sc_r13)
- #define UCONTEXT_REG_R14(ctx) ((ctx)->sc_r14)
- #define UCONTEXT_REG_R15(ctx) ((ctx)->sc_r15)
+ #define UCONTEXT_REG_RAX(ctx) (((ucontext_t*)(ctx))->sc_rax)
+ #define UCONTEXT_REG_RBX(ctx) (((ucontext_t*)(ctx))->sc_rbx)
+ #define UCONTEXT_REG_RCX(ctx) (((ucontext_t*)(ctx))->sc_rcx)
+ #define UCONTEXT_REG_RDX(ctx) (((ucontext_t*)(ctx))->sc_rdx)
+ #define UCONTEXT_REG_RBP(ctx) (((ucontext_t*)(ctx))->sc_rbp)
+ #define UCONTEXT_REG_RSP(ctx) (((ucontext_t*)(ctx))->sc_rsp)
+ #define UCONTEXT_REG_RSI(ctx) (((ucontext_t*)(ctx))->sc_rsi)
+ #define UCONTEXT_REG_RDI(ctx) (((ucontext_t*)(ctx))->sc_rdi)
+ #define UCONTEXT_REG_RIP(ctx) (((ucontext_t*)(ctx))->sc_rip)
+ #define UCONTEXT_REG_R8(ctx) (((ucontext_t*)(ctx))->sc_r8)
+ #define UCONTEXT_REG_R9(ctx) (((ucontext_t*)(ctx))->sc_r9)
+ #define UCONTEXT_REG_R10(ctx) (((ucontext_t*)(ctx))->sc_r10)
+ #define UCONTEXT_REG_R11(ctx) (((ucontext_t*)(ctx))->sc_r11)
+ #define UCONTEXT_REG_R12(ctx) (((ucontext_t*)(ctx))->sc_r12)
+ #define UCONTEXT_REG_R13(ctx) (((ucontext_t*)(ctx))->sc_r13)
+ #define UCONTEXT_REG_R14(ctx) (((ucontext_t*)(ctx))->sc_r14)
+ #define UCONTEXT_REG_R15(ctx) (((ucontext_t*)(ctx))->sc_r15)
#else
#define UCONTEXT_GREGS(ctx) ((guint64*)&(((ucontext_t*)(ctx))->uc_mcontext.gregs))
#endif
--- /dev/null
+<?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|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|x64">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|x64">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{158073ED-99AE-4196-9EDC-DDB2344F8466}</ProjectGuid>\r
+ <RootNamespace>eglib</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>StaticLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ <WholeProgramOptimization>true</WholeProgramOptimization>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>StaticLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+ <ConfigurationType>StaticLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ <WholeProgramOptimization>true</WholeProgramOptimization>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+ <ConfigurationType>StaticLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/lib\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/lib\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/lib\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/lib\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <PreBuildEvent>\r
+ <Command>copy ..\eglib\winconfig.h ..\eglib\config.h</Command>\r
+ </PreBuildEvent>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_LIB;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level4</WarningLevel>\r
+ <TreatWarningAsError>true</TreatWarningAsError>\r
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+ </ClCompile>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <PreBuildEvent>\r
+ <Command>copy ..\eglib\winconfig.h ..\eglib\config.h</Command>\r
+ </PreBuildEvent>\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_LIB;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level4</WarningLevel>\r
+ <TreatWarningAsError>true</TreatWarningAsError>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ <PreBuildEvent>\r
+ <Command>copy ..\eglib\winconfig.h ..\eglib\config.h</Command>\r
+ </PreBuildEvent>\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>_DEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_LIB;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level4</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ <PreBuildEvent>\r
+ <Command>copy ..\eglib\winconfig.h ..\eglib\config.h</Command>\r
+ </PreBuildEvent>\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <AdditionalIncludeDirectories>../eglib/src;../eglib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_LIB;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level4</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">\r
+ <ClCompile />\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_eglib|Win32'">\r
+ <ClCompile />\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\eglib\src\garray.c" />\r
+ <ClCompile Include="..\eglib\src\gdate-win32.c" />\r
+ <ClCompile Include="..\eglib\src\gdir-win32.c" />\r
+ <ClCompile Include="..\eglib\src\gerror.c" />\r
+ <ClCompile Include="..\eglib\src\gfile-posix.c" />\r
+ <ClCompile Include="..\eglib\src\gfile-win32.c" />\r
+ <ClCompile Include="..\eglib\src\gfile.c" />\r
+ <ClCompile Include="..\eglib\src\ghashtable.c" />\r
+ <ClCompile Include="..\eglib\src\glist.c" />\r
+ <ClCompile Include="..\eglib\src\gmarkup.c" />\r
+ <ClCompile Include="..\eglib\src\gmem.c" />\r
+ <ClCompile Include="..\eglib\src\gmisc-win32.c" />\r
+ <ClCompile Include="..\eglib\src\gmodule-win32.c" />\r
+ <ClCompile Include="..\eglib\src\goutput.c" />\r
+ <ClCompile Include="..\eglib\src\gpath.c" />\r
+ <ClCompile Include="..\eglib\src\gpattern.c" />\r
+ <ClCompile Include="..\eglib\src\gptrarray.c" />\r
+ <ClCompile Include="..\eglib\src\gqueue.c" />\r
+ <ClCompile Include="..\eglib\src\gshell.c" />\r
+ <ClCompile Include="..\eglib\src\gslist.c" />\r
+ <ClCompile Include="..\eglib\src\gspawn.c" />\r
+ <ClCompile Include="..\eglib\src\gstr.c" />\r
+ <ClCompile Include="..\eglib\src\gstring.c" />\r
+ <ClCompile Include="..\eglib\src\gtimer-win32.c" />\r
+ <ClCompile Include="..\eglib\src\gunicode.c" />\r
+ <ClCompile Include="..\eglib\src\gutf8.c" />\r
+ <ClCompile Include="..\eglib\src\vasprintf.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClInclude Include="..\eglib\src\glib.h" />\r
+ <ClInclude Include="..\eglib\src\gmodule.h" />\r
+ <ClInclude Include="..\eglib\src\sort.frag.h" />\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?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|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|x64">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|x64">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{B7098DFA-31E6-4006-8A15-1C9A4E925149}</ProjectGuid>\r
+ <RootNamespace>genmdesc</RootNamespace>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <UseOfMfc>false</UseOfMfc>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <UseOfMfc>false</UseOfMfc>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <UseOfMfc>false</UseOfMfc>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <UseOfMfc>false</UseOfMfc>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <PreBuildEvent>\r
+ <Command>winsetup.bat</Command>\r
+ </PreBuildEvent>\r
+ <Midl>\r
+ <TypeLibraryName>.\./VSDependancies/genmdesc___Win32_Debug/genmdesc.tlb</TypeLibraryName>\r
+ <HeaderFileName>\r
+ </HeaderFileName>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>TARGET_X86;_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <ResourceCompile>\r
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <Culture>0x0409</Culture>\r
+ </ResourceCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>eglib.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <OutputFile>$(OutDir)genmdesc.exe</OutputFile>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ <PostBuildEvent>\r
+ <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>\r
+ </PostBuildEvent>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ <PreBuildEvent>\r
+ <Command>winsetup.bat</Command>\r
+ </PreBuildEvent>\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ <TypeLibraryName>.\./VSDependancies/genmdesc___Win32_Debug/genmdesc.tlb</TypeLibraryName>\r
+ <HeaderFileName>\r
+ </HeaderFileName>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>_DEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <ResourceCompile>\r
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <Culture>0x0409</Culture>\r
+ </ResourceCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>eglib.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <OutputFile>$(OutDir)genmdesc.exe</OutputFile>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ <PostBuildEvent>\r
+ <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>\r
+ </PostBuildEvent>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <PreBuildEvent>\r
+ <Command>winsetup.bat</Command>\r
+ </PreBuildEvent>\r
+ <Midl>\r
+ <TypeLibraryName>.\Release/genmdesc.tlb</TypeLibraryName>\r
+ <HeaderFileName>\r
+ </HeaderFileName>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+ <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <StringPooling>true</StringPooling>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <FunctionLevelLinking>true</FunctionLevelLinking>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <ResourceCompile>\r
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <Culture>0x0409</Culture>\r
+ </ResourceCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>eglib.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <OutputFile>$(OutDir)genmdesc.exe</OutputFile>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <ProgramDatabaseFile>.\Release/genmdesc.pdb</ProgramDatabaseFile>\r
+ <SubSystem>Console</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ <PostBuildEvent>\r
+ <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>\r
+ </PostBuildEvent>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ <PreBuildEvent>\r
+ <Command>winsetup.bat</Command>\r
+ </PreBuildEvent>\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ <TypeLibraryName>.\Release/genmdesc.tlb</TypeLibraryName>\r
+ <HeaderFileName>\r
+ </HeaderFileName>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+ <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <StringPooling>true</StringPooling>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <FunctionLevelLinking>true</FunctionLevelLinking>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <ResourceCompile>\r
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <Culture>0x0409</Culture>\r
+ </ResourceCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>eglib.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <OutputFile>$(OutDir)genmdesc.exe</OutputFile>\r
+ <SuppressStartupBanner>true</SuppressStartupBanner>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <ProgramDatabaseFile>.\Release/genmdesc.pdb</ProgramDatabaseFile>\r
+ <SubSystem>Console</SubSystem>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ <PostBuildEvent>\r
+ <Command>runmdesc.bat "$(TargetPath)" $(Platform)</Command>\r
+ </PostBuildEvent>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\mono\mini\genmdesc.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\helpers.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\utils\monobitset.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\opcodes.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="eglib.vcxproj">\r
+ <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?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|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|x64">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|x64">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{EB56000B-C80B-4E8B-908D-D84D31B517D3}</ProjectGuid>\r
+ <RootNamespace>libgc</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>StaticLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>StaticLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+ <ConfigurationType>StaticLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+ <ConfigurationType>StaticLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/lib\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/lib\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/lib\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/lib\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ <DisableSpecificWarnings>4311;4312;4996;4005;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+ </ClCompile>\r
+ <Lib>\r
+ <OutputFile>$(OutDir)libgc.lib</OutputFile>\r
+ </Lib>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <Lib>\r
+ <OutputFile>$(OutDir)libgc.lib</OutputFile>\r
+ </Lib>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>_DEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ <DisableSpecificWarnings>4311;4312;4996;4005;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+ </ClCompile>\r
+ <Lib>\r
+ <OutputFile>$(OutDir)libgc.lib</OutputFile>\r
+ </Lib>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <AdditionalIncludeDirectories>..\libgc\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;__STDC__;PACKAGE_NAME="libgc-mono";PACKAGE_TARNAME="libgc-mono";PACKAGE_VERSION="6.6";PACKAGE_STRING="libgc-mono 6.6";PACKAGE_BUGREPORT="Hans_Boehm%40hp.com";GC_WIN32_THREADS=1;NO_GETENV=1;GC_INSIDE_DLL=1;GC_NOT_DLL=1;STDC_HEADERS=1;HAVE_SYS_TYPES_H=1;HAVE_SYS_STAT_H=1;HAVE_STDLIB_H=1;HAVE_STRING_H=1;HAVE_MEMORY_H=1;HAVE_STRINGS_H=1;HAVE_INTTYPES_H=1;HAVE_STDINT_H=1;HAVE_UNISTD_H=1;SILENT=1;NO_SIGNALS=1;NO_EXECUTE_PERMISSION=1;JAVA_FINALIZATION=1;GC_GCJ_SUPPORT=1;ATOMIC_UNCOLLECTABLE=1;_IN_LIBGC=1;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <ProgramDataBaseFileName>$(OutDir)vc80.pdb</ProgramDataBaseFileName>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <Lib>\r
+ <OutputFile>$(OutDir)libgc.lib</OutputFile>\r
+ </Lib>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\libgc\allchblk.c" />\r
+ <ClCompile Include="..\libgc\alloc.c" />\r
+ <ClCompile Include="..\libgc\blacklst.c" />\r
+ <ClCompile Include="..\libgc\dbg_mlc.c" />\r
+ <ClCompile Include="..\libgc\dyn_load.c" />\r
+ <ClCompile Include="..\libgc\finalize.c" />\r
+ <ClCompile Include="..\libgc\gcj_mlc.c" />\r
+ <ClCompile Include="..\libgc\headers.c" />\r
+ <ClCompile Include="..\libgc\mach_dep.c" />\r
+ <ClCompile Include="..\libgc\malloc.c" />\r
+ <ClCompile Include="..\libgc\mallocx.c" />\r
+ <ClCompile Include="..\libgc\mark.c" />\r
+ <ClCompile Include="..\libgc\mark_rts.c" />\r
+ <ClCompile Include="..\libgc\misc.c" />\r
+ <ClCompile Include="..\libgc\new_hblk.c" />\r
+ <ClCompile Include="..\libgc\obj_map.c" />\r
+ <ClCompile Include="..\libgc\os_dep.c" />\r
+ <ClCompile Include="..\libgc\ptr_chck.c" />\r
+ <ClCompile Include="..\libgc\reclaim.c" />\r
+ <ClCompile Include="..\libgc\stubborn.c" />\r
+ <ClCompile Include="..\libgc\typd_mlc.c" />\r
+ <ClCompile Include="..\libgc\win32_threads.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClInclude Include="..\libgc\include\gc.h" />\r
+ <ClInclude Include="..\libgc\include\private\gc_hdrs.h" />\r
+ <ClInclude Include="..\libgc\include\private\gc_locks.h" />\r
+ <ClInclude Include="..\libgc\include\gc_mark.h" />\r
+ <ClInclude Include="..\libgc\include\private\gc_pmark.h" />\r
+ <ClInclude Include="..\libgc\include\private\gc_priv.h" />\r
+ <ClInclude Include="..\libgc\include\private\gcconfig.h" />\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?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|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|x64">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|x64">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}</ProjectGuid>\r
+ <RootNamespace>libmono</RootNamespace>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <UseOfMfc>false</UseOfMfc>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <UseOfMfc>false</UseOfMfc>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <UseOfMfc>false</UseOfMfc>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <UseOfMfc>false</UseOfMfc>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <PreBuildEvent>\r
+ <Command>echo #define FULL_VERSION "Visual Studio built mono" > ..\mono\mini\version.h</Command>\r
+ </PreBuildEvent>\r
+ <ClCompile>\r
+ <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>\r
+ <Optimization>Disabled</Optimization>\r
+ <InlineFunctionExpansion>Default</InlineFunctionExpansion>\r
+ <IntrinsicFunctions>true</IntrinsicFunctions>\r
+ <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>TARGET_X86;_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;GC_NOT_DLL;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <PrecompiledHeaderOutputFile>\r
+ </PrecompiledHeaderOutputFile>\r
+ <BrowseInformation>true</BrowseInformation>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+ </ClCompile>\r
+ <ResourceCompile>\r
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <Culture>0x0409</Culture>\r
+ </ResourceCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;mswsock.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <OutputFile>$(OutDir)mono.dll</OutputFile>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <ModuleDefinitionFile>mono.def</ModuleDefinitionFile>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <ImportLibrary>$(Platform)_$(Configuration)/lib/$(TargetName).lib</ImportLibrary>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ <PreBuildEvent>\r
+ <Command>echo #define FULL_VERSION "Visual Studio built mono" > ..\mono\mini\version.h</Command>\r
+ </PreBuildEvent>\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>\r
+ <Optimization>Disabled</Optimization>\r
+ <InlineFunctionExpansion>Default</InlineFunctionExpansion>\r
+ <IntrinsicFunctions>true</IntrinsicFunctions>\r
+ <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>_DEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;GC_NOT_DLL;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <PrecompiledHeaderOutputFile>\r
+ </PrecompiledHeaderOutputFile>\r
+ <BrowseInformation>true</BrowseInformation>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+ </ClCompile>\r
+ <ResourceCompile>\r
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <Culture>0x0409</Culture>\r
+ </ResourceCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;mswsock.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <ModuleDefinitionFile>mono.def</ModuleDefinitionFile>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <ProgramDatabaseFile>$(TargetDir)libmono.pdb</ProgramDatabaseFile>\r
+ <ImportLibrary>$(Platform)_$(Configuration)/lib/$(TargetName).lib</ImportLibrary>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <PreBuildEvent>\r
+ <Command>echo #define FULL_VERSION "Visual Studio built mono" > ..\mono\mini\version.h</Command>\r
+ </PreBuildEvent>\r
+ <ClCompile>\r
+ <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>\r
+ <Optimization>MinSpace</Optimization>\r
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+ <IntrinsicFunctions>true</IntrinsicFunctions>\r
+ <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;GC_NOT_DLL;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <StringPooling>true</StringPooling>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <FunctionLevelLinking>true</FunctionLevelLinking>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <PrecompiledHeaderOutputFile>.\Release/libmono.pch</PrecompiledHeaderOutputFile>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <ResourceCompile>\r
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <Culture>0x0409</Culture>\r
+ </ResourceCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;mswsock.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <OutputFile>$(OutDir)mono.dll</OutputFile>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <ModuleDefinitionFile>mono.def</ModuleDefinitionFile>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <ImportLibrary>$(Platform)_$(Configuration)/lib/$(TargetName).lib</ImportLibrary>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ <PreBuildEvent>\r
+ <Command>echo #define FULL_VERSION "Visual Studio built mono" > ..\mono\mini\version.h</Command>\r
+ </PreBuildEvent>\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <AdditionalOptions>/D /NODEFAULTLIB:LIBCD" " %(AdditionalOptions)</AdditionalOptions>\r
+ <Optimization>MinSpace</Optimization>\r
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+ <IntrinsicFunctions>true</IntrinsicFunctions>\r
+ <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;GC_NOT_DLL;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <StringPooling>true</StringPooling>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <FunctionLevelLinking>true</FunctionLevelLinking>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <PrecompiledHeaderOutputFile>.\Release/libmono.pch</PrecompiledHeaderOutputFile>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <ResourceCompile>\r
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <Culture>0x0409</Culture>\r
+ </ResourceCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <OutputFile>$(OutDir)mono.dll</OutputFile>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <ModuleDefinitionFile>mono.def</ModuleDefinitionFile>\r
+ <ImportLibrary>$(Platform)_$(Configuration)/lib/$(TargetName).lib</ImportLibrary>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClInclude Include="..\config.h" />\r
+ <ClInclude Include="..\mono\io-layer\io-layer.h" />\r
+ <ClInclude Include="..\mono\utils\dlmalloc.h" />\r
+ <ClInclude Include="..\mono\utils\mono-codeman.h" />\r
+ <ClInclude Include="..\mono\utils\mono-compiler.h" />\r
+ <ClInclude Include="..\mono\utils\mono-counters.h" />\r
+ <ClInclude Include="..\mono\utils\mono-digest.h" />\r
+ <ClInclude Include="..\mono\utils\mono-dl.h" />\r
+ <ClInclude Include="..\mono\utils\mono-error-internals.h" />\r
+ <ClInclude Include="..\mono\utils\mono-error.h" />\r
+ <ClInclude Include="..\mono\metadata\mono-hash.h" />\r
+ <ClInclude Include="..\mono\utils\mono-internal-hash.h" />\r
+ <ClInclude Include="..\mono\utils\mono-io-portability.h" />\r
+ <ClInclude Include="..\mono\utils\mono-logger.h" />\r
+ <ClInclude Include="..\mono\utils\mono-math.h" />\r
+ <ClInclude Include="..\mono\utils\mono-membar.h" />\r
+ <ClInclude Include="..\mono\utils\mono-mmap.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\mono-proclib.h" />\r
+ <ClInclude Include="..\mono\utils\mono-property-hash.h" />\r
+ <ClInclude Include="..\mono\utils\mono-semaphore.h" />\r
+ <ClInclude Include="..\mono\utils\mono-stdlib.h" />\r
+ <ClInclude Include="..\mono\utils\mono-time.h" />\r
+ <ClInclude Include="..\mono\utils\mono-uri.h" />\r
+ <ClInclude Include="..\mono\utils\mono-value-hash.h" />\r
+ <ClInclude Include="..\mono\metadata\mono-wsq.h" />\r
+ <ClInclude Include="..\mono\utils\monobitset.h" />\r
+ <ClInclude Include="..\mono\metadata\runtime.h" />\r
+ <ClInclude Include="..\mono\utils\strenc.h" />\r
+ <ClInclude Include="..\mono\utils\strtod.h" />\r
+ <ClInclude Include="..\mono\metadata\appdomain.h" />\r
+ <ClInclude Include="..\mono\metadata\attach.h" />\r
+ <ClInclude Include="..\mono\metadata\char-conversions.h" />\r
+ <ClInclude Include="..\mono\metadata\cil-coff.h" />\r
+ <ClInclude Include="..\mono\metadata\class-internals.h" />\r
+ <ClInclude Include="..\mono\metadata\cominterop.h" />\r
+ <ClInclude Include="..\mono\metadata\console-io.h" />\r
+ <ClInclude Include="..\mono\metadata\coree.h" />\r
+ <ClInclude Include="..\mono\metadata\culture-info-tables.h" />\r
+ <ClInclude Include="..\mono\metadata\culture-info.h" />\r
+ <ClInclude Include="..\mono\metadata\debug-mono-symfile.h" />\r
+ <ClInclude Include="..\mono\metadata\decimal.h" />\r
+ <ClInclude Include="..\mono\metadata\domain-internals.h" />\r
+ <ClInclude Include="..\mono\metadata\environment.h" />\r
+ <ClInclude Include="..\mono\metadata\exception.h" />\r
+ <ClInclude Include="..\mono\metadata\file-io.h" />\r
+ <ClInclude Include="..\mono\metadata\filewatcher.h" />\r
+ <ClInclude Include="..\mono\metadata\gc-internal.h" />\r
+ <ClInclude Include="..\mono\metadata\locales.h" />\r
+ <ClInclude Include="..\mono\metadata\marshal.h" />\r
+ <ClInclude Include="..\mono\metadata\metadata-internals.h" />\r
+ <ClInclude Include="..\mono\metadata\method-builder.h" />\r
+ <ClInclude Include="..\mono\metadata\monitor.h" />\r
+ <ClInclude Include="..\mono\metadata\mono-basic-block.h" />\r
+ <ClInclude Include="..\mono\metadata\mono-debug-debugger.h" />\r
+ <ClInclude Include="..\mono\metadata\mono-debug.h" />\r
+ <ClInclude Include="..\mono\metadata\mono-mlist.h" />\r
+ <ClInclude Include="..\mono\metadata\mono-perfcounters.h" />\r
+ <ClInclude Include="..\mono\metadata\object-internals.h" />\r
+ <ClInclude Include="..\mono\metadata\process.h" />\r
+ <ClInclude Include="..\mono\metadata\profiler-private.h" />\r
+ <ClInclude Include="..\mono\metadata\rand.h" />\r
+ <ClInclude Include="..\mono\metadata\security-core-clr.h" />\r
+ <ClInclude Include="..\mono\metadata\security-manager.h" />\r
+ <ClInclude Include="..\mono\metadata\security.h" />\r
+ <ClInclude Include="..\mono\metadata\socket-io.h" />\r
+ <ClInclude Include="..\mono\metadata\string-icalls.h" />\r
+ <ClInclude Include="..\mono\metadata\sysmath.h" />\r
+ <ClInclude Include="..\mono\metadata\tabledefs.h" />\r
+ <ClInclude Include="..\mono\metadata\threadpool.h" />\r
+ <ClInclude Include="..\mono\metadata\threads-types.h" />\r
+ <ClInclude Include="..\mono\os\gc_wrapper.h" />\r
+ <ClInclude Include="..\mono\mini\abcremoval.h" />\r
+ <ClInclude Include="..\mono\mini\cpu-pentium.h" />\r
+ <ClInclude Include="..\mono\mini\debugger-agent.h" />\r
+ <ClInclude Include="..\mono\mini\declsec.h" />\r
+ <ClInclude Include="..\mono\mini\dwarfwriter.h" />\r
+ <ClInclude Include="..\mono\mini\image-writer.h" />\r
+ <ClInclude Include="..\mono\mini\ir-emit.h" />\r
+ <ClInclude Include="..\mono\mini\jit-icalls.h" />\r
+ <ClInclude Include="..\mono\mini\mini-arch.h" />\r
+ <ClInclude Include="..\mono\mini\mini-gc.h" />\r
+ <ClInclude Include="..\mono\mini\mini-ops.h" />\r
+ <ClInclude Include="..\mono\mini\mini.h" />\r
+ <ClInclude Include="..\mono\mini\regalloc.h" />\r
+ <ClInclude Include="..\mono\mini\ssapre.h" />\r
+ <ClInclude Include="..\mono\mini\trace.h" />\r
+ <CustomBuildStep Include="..\mono\mini\mini-x86.h">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+ </CustomBuildStep>\r
+ <CustomBuildStep Include="..\mono\mini\mini-amd64.h">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+ </CustomBuildStep>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\mono\utils\dlmalloc.c" />\r
+ <ClCompile Include="..\mono\utils\mono-codeman.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\utils\mono-counters.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\utils\mono-dl.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\utils\mono-error.c" />\r
+ <ClCompile Include="..\mono\utils\mono-filemap.c" />\r
+ <ClCompile Include="..\mono\metadata\mono-hash.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\utils\mono-internal-hash.c" />\r
+ <ClCompile Include="..\mono\utils\mono-io-portability.c" />\r
+ <ClCompile Include="..\mono\utils\mono-logger.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\utils\mono-math.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\utils\mono-md5.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\utils\mono-mmap.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\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\mono-proclib.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\utils\mono-property-hash.c" />\r
+ <ClCompile Include="..\mono\utils\mono-publib.c" />\r
+ <ClCompile Include="..\mono\utils\mono-semaphore.c" />\r
+ <ClCompile Include="..\mono\utils\mono-sha1.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\utils\mono-stdlib.c" />\r
+ <ClCompile Include="..\mono\utils\mono-time.c" />\r
+ <ClCompile Include="..\mono\utils\mono-uri.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\utils\mono-value-hash.c" />\r
+ <ClCompile Include="..\mono\metadata\mono-wsq.c" />\r
+ <ClCompile Include="..\mono\utils\monobitset.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\runtime.c" />\r
+ <ClCompile Include="..\mono\utils\strenc.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\utils\strtod.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\appdomain.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\assembly.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\attach.c" />\r
+ <ClCompile Include="..\mono\metadata\boehm-gc.c" />\r
+ <ClCompile Include="..\mono\metadata\class.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\cominterop.c" />\r
+ <ClCompile Include="..\mono\metadata\console-win32.c" />\r
+ <ClCompile Include="..\mono\metadata\coree.c" />\r
+ <ClCompile Include="..\mono\metadata\debug-helpers.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\debug-mono-symfile.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\decimal.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\domain.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\environment.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\exception.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\file-io.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\filewatcher.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\gc.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\icall.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\image.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\loader.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\locales.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\marshal.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\mempool.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\metadata-verify.c" />\r
+ <ClCompile Include="..\mono\metadata\metadata.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\method-builder.c" />\r
+ <ClCompile Include="..\mono\metadata\monitor.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\mono-basic-block.c" />\r
+ <ClCompile Include="..\mono\metadata\mono-config.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\mono-debug-debugger.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\mono-debug.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\mono-endian.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\mono-mlist.c" />\r
+ <ClCompile Include="..\mono\metadata\mono-perfcounters.c" />\r
+ <ClCompile Include="..\mono\metadata\object.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\opcodes.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\process.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\profiler.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\rand.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\reflection.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\security-core-clr.c" />\r
+ <ClCompile Include="..\mono\metadata\security-manager.c" />\r
+ <ClCompile Include="..\mono\metadata\security.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\socket-io.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\string-icalls.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\sysmath.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\threadpool.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\threads.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\metadata\verify.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\abcremoval.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\aot-compiler.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\aot-runtime.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\branch-opts.c" />\r
+ <ClCompile Include="..\mono\mini\cfold.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\debug-mini.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\debugger-agent.c" />\r
+ <ClCompile Include="..\mono\mini\declsec.c" />\r
+ <ClCompile Include="..\mono\mini\decompose.c" />\r
+ <ClCompile Include="..\mono\mini\dominators.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\driver.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\dwarfwriter.c" />\r
+ <ClCompile Include="..\mono\mini\graph.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\helpers.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\image-writer.c" />\r
+ <ClCompile Include="..\mono\mini\jit-icalls.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\linear-scan.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\liveness.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\local-propagation.c" />\r
+ <ClCompile Include="..\mono\mini\method-to-ir.c" />\r
+ <ClCompile Include="..\mono\mini\mini-codegen.c" />\r
+ <ClCompile Include="..\mono\mini\mini-exceptions.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\mini-gc.c" />\r
+ <ClCompile Include="..\mono\mini\mini-generic-sharing.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\mini-trampolines.c" />\r
+ <ClCompile Include="..\mono\mini\mini-windows.c" />\r
+ <ClCompile Include="..\mono\mini\mini.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\regalloc.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\regalloc2.c" />\r
+ <ClCompile Include="..\mono\mini\simd-intrinsics.c" />\r
+ <ClCompile Include="..\mono\mini\ssa.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\ssapre.c" />\r
+ <ClCompile Include="..\mono\mini\trace.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\unwind.c" />\r
+ <ClCompile Include="..\mono\mini\wapihandles.c" />\r
+ <ClCompile Include="..\mono\mini\xdebug.c" />\r
+ <ClCompile Include="..\mono\mini\exceptions-x86.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\mini-x86.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\tramp-x86.c">\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ </PrecompiledHeader>\r
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ </PrecompiledHeader>\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ </PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\exceptions-amd64.c">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\mini-amd64.c">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mono\mini\tramp-amd64.c">\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="eglib.vcxproj">\r
+ <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ <ProjectReference Include="genmdesc.vcxproj">\r
+ <Project>{b7098dfa-31e6-4006-8a15-1c9a4e925149}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ <ProjectReference Include="libgc.vcxproj">\r
+ <Project>{eb56000b-c80b-4e8b-908d-d84d31b517d3}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?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|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|x64">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|x64">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}</ProjectGuid>\r
+ <RootNamespace>libtest</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ <WholeProgramOptimization>true</WholeProgramOptimization>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ <WholeProgramOptimization>true</WholeProgramOptimization>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>eglib.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Windows</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <ImportLibrary>$(Platform)_$(Configuration)/lib/$(TargetName).lib</ImportLibrary>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>eglib.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Windows</SubSystem>\r
+ <ImportLibrary>$(Platform)_$(Configuration)/lib/$(TargetName).lib</ImportLibrary>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>eglib.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Windows</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <ImportLibrary>$(Platform)_$(Configuration)/lib/$(TargetName).lib</ImportLibrary>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <AdditionalIncludeDirectories>..\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>eglib.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Windows</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <ImportLibrary>$(Platform)_$(Configuration)/lib/$(TargetName).lib</ImportLibrary>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\mono\tests\libtest.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="eglib.vcxproj">\r
+ <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
; file generated by create-windef.pl
-LIBRARY mono.dll
+LIBRARY libmono.dll
EXPORTS
MonoFixupCorEE
mono_add_internal_call
mono_declsec_get_inheritdemands_method
mono_declsec_get_linkdemands
mono_declsec_get_method_action
+mono_dl_fallback_register
+mono_dl_fallback_unregister
mono_digest_get_public_token
mono_disasm_code
mono_disasm_code_one
\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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Embedded Samples", "Embedded Samples", "{5FE09AA5-C3C9-45EA-A323-36A11B653CEC}"\r
EndProject\r
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{EE2CC761-9652-44AC-9204-7EB31194CAA6}"\r
EndProject\r
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{ECA11C76-E192-4F67-A8FA-28B637D9716F}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genmdesc", "genmdesc.vcproj", "{B7098DFA-31E6-4006-8A15-1C9A4E925149}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
- EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genmdesc", "genmdesc.vcxproj", "{B7098DFA-31E6-4006-8A15-1C9A4E925149}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmono", "libmono.vcproj", "{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- {B7098DFA-31E6-4006-8A15-1C9A4E925149} = {B7098DFA-31E6-4006-8A15-1C9A4E925149}\r
- {EB56000B-C80B-4E8B-908D-D84D31B517D3} = {EB56000B-C80B-4E8B-908D-D84D31B517D3}\r
- {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
- EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmono", "libmono.vcxproj", "{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-invoke", "test-invoke.vcproj", "{C5639B3F-288A-4A4B-A4A5-C0D85834221D}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
- EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-invoke", "test-invoke.vcxproj", "{C5639B3F-288A-4A4B-A4A5-C0D85834221D}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "teste", "teste.vcproj", "{6FDE4E5E-57D0-432F-A987-6C226A7827E4}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
- EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "teste", "teste.vcxproj", "{6FDE4E5E-57D0-432F-A987-6C226A7827E4}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mono", "mono.vcproj", "{A0EDDCD9-940F-432C-A28F-7EF322437D79}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
- EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mono", "mono.vcxproj", "{A0EDDCD9-940F-432C-A28F-7EF322437D79}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgc", "libgc.vcproj", "{EB56000B-C80B-4E8B-908D-D84D31B517D3}"\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgc", "libgc.vcxproj", "{EB56000B-C80B-4E8B-908D-D84D31B517D3}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monodis", "monodis.vcproj", "{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
- EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monodis", "monodis.vcxproj", "{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pedump", "pedump.vcproj", "{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
- EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pedump", "pedump.vcxproj", "{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monodiet", "monodiet.vcproj", "{8F90007F-8019-4191-8808-891E4762D958}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
- EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monodiet", "monodiet.vcxproj", "{8F90007F-8019-4191-8808-891E4762D958}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monograph", "monograph.vcproj", "{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
- EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monograph", "monograph.vcxproj", "{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-metadata", "test-metadata.vcproj", "{C2EB666E-9146-4B7A-85F6-25F9EA313770}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771} = {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}\r
- EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-metadata", "test-metadata.vcxproj", "{C2EB666E-9146-4B7A-85F6-25F9EA313770}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "eglib", "eglib.vcproj", "{158073ED-99AE-4196-9EDC-DDB2344F8466}"\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "eglib", "eglib.vcxproj", "{158073ED-99AE-4196-9EDC-DDB2344F8466}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_eglib", "test_eglib.vcproj", "{80A0620A-3478-4E1A-AA7C-0D2387B892AB}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
- EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_eglib", "test_eglib.vcxproj", "{80A0620A-3478-4E1A-AA7C-0D2387B892AB}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtest", "libtest.vcproj", "{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- {158073ED-99AE-4196-9EDC-DDB2344F8466} = {158073ED-99AE-4196-9EDC-DDB2344F8466}\r
- EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtest", "libtest.vcxproj", "{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monoposixhelper", "monoposixhelper.vcproj", "{33014734-0F46-4099-9A21-0C989E428681}"\r
- ProjectSection(ProjectDependencies) = postProject\r
- {B7098DFA-31E6-4006-8A15-1C9A4E925149} = {B7098DFA-31E6-4006-8A15-1C9A4E925149}\r
- EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "monoposixhelper", "monoposixhelper.vcxproj", "{33014734-0F46-4099-9A21-0C989E428681}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jay2008", "..\..\mcs\jay\jay2008.vcproj", "{5D485D32-3B9F-4287-AB24-C8DA5B89F537}"\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "profiler-logging", "profiler-logging.vcxproj", "{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "profiler-logging", "profiler-logging.vcproj", "{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}"\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "profiler-cov", "profiler-cov.vcxproj", "{83D4D926-2983-4770-BA92-EB9CB8828C95}"\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "profiler-cov", "profiler-cov.vcproj", "{83D4D926-2983-4770-BA92-EB9CB8828C95}"\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jay", "..\mcs\jay\jay.vcxproj", "{5D485D32-3B9F-4287-AB24-C8DA5B89F537}"\r
EndProject\r
Global\r
GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
- Debug_eglib|Win32 = Debug_eglib|Win32\r
- Debug_eglib|x64 = Debug_eglib|x64\r
Debug|Win32 = Debug|Win32\r
Debug|x64 = Debug|x64\r
- Release_eglib|Win32 = Release_eglib|Win32\r
- Release_eglib|x64 = Release_eglib|x64\r
Release|Win32 = Release|Win32\r
Release|x64 = Release|x64\r
EndGlobalSection\r
GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
- {B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug_eglib|Win32.Build.0 = Debug_eglib|Win32\r
- {B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug_eglib|x64.ActiveCfg = Debug_eglib|x64\r
- {B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug_eglib|x64.Build.0 = Debug_eglib|x64\r
{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|Win32.ActiveCfg = Debug|Win32\r
{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|Win32.Build.0 = Debug|Win32\r
- {B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|x64.ActiveCfg = Debug|Win32\r
- {B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32\r
- {B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release_eglib|Win32.Build.0 = Release_eglib|Win32\r
- {B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32\r
+ {B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|x64.ActiveCfg = Debug|x64\r
+ {B7098DFA-31E6-4006-8A15-1C9A4E925149}.Debug|x64.Build.0 = Debug|x64\r
{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|Win32.ActiveCfg = Release|Win32\r
{B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|Win32.Build.0 = Release|Win32\r
- {B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|x64.ActiveCfg = Release|Win32\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug_eglib|Win32.Build.0 = Debug_eglib|Win32\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug_eglib|x64.ActiveCfg = Debug_eglib|x64\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug_eglib|x64.Build.0 = Debug_eglib|x64\r
+ {B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|x64.ActiveCfg = Release|x64\r
+ {B7098DFA-31E6-4006-8A15-1C9A4E925149}.Release|x64.Build.0 = Release|x64\r
{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|Win32.ActiveCfg = Debug|Win32\r
{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|Win32.Build.0 = Debug|Win32\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|x64.ActiveCfg = Debug|Win32\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release_eglib|Win32.Build.0 = Release_eglib|Win32\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32\r
+ {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|x64.ActiveCfg = Debug|x64\r
+ {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Debug|x64.Build.0 = Debug|x64\r
{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|Win32.ActiveCfg = Release|Win32\r
{CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|Win32.Build.0 = Release|Win32\r
- {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|x64.ActiveCfg = Release|Win32\r
- {C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug_eglib|x64.ActiveCfg = Debug_eglib|Win32\r
+ {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|x64.ActiveCfg = Release|x64\r
+ {CB0D9E92-293C-439C-9AC7-C5F59B6E0771}.Release|x64.Build.0 = Release|x64\r
{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug|Win32.ActiveCfg = Debug|Win32\r
- {C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug|x64.ActiveCfg = Debug|Win32\r
- {C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32\r
- {C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32\r
+ {C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug|x64.ActiveCfg = Debug|x64\r
+ {C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Debug|x64.Build.0 = Debug|x64\r
{C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release|Win32.ActiveCfg = Release|Win32\r
- {C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release|x64.ActiveCfg = Release|Win32\r
- {6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug_eglib|x64.ActiveCfg = Debug_eglib|Win32\r
+ {C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release|x64.ActiveCfg = Release|x64\r
+ {C5639B3F-288A-4A4B-A4A5-C0D85834221D}.Release|x64.Build.0 = Release|x64\r
{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug|Win32.ActiveCfg = Debug|Win32\r
- {6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug|x64.ActiveCfg = Debug|Win32\r
- {6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32\r
- {6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32\r
+ {6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug|x64.ActiveCfg = Debug|x64\r
+ {6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Debug|x64.Build.0 = Debug|x64\r
{6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release|Win32.ActiveCfg = Release|Win32\r
- {6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release|x64.ActiveCfg = Release|Win32\r
- {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_eglib|Win32.Build.0 = Debug_eglib|Win32\r
- {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_eglib|x64.ActiveCfg = Debug_eglib|x64\r
- {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug_eglib|x64.Build.0 = Debug_eglib|x64\r
+ {6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release|x64.ActiveCfg = Release|x64\r
+ {6FDE4E5E-57D0-432F-A987-6C226A7827E4}.Release|x64.Build.0 = Release|x64\r
{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|Win32.ActiveCfg = Debug|Win32\r
{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|Win32.Build.0 = Debug|Win32\r
- {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|x64.ActiveCfg = Debug|Win32\r
- {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32\r
- {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release_eglib|Win32.Build.0 = Release_eglib|Win32\r
- {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32\r
+ {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|x64.ActiveCfg = Debug|x64\r
+ {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Debug|x64.Build.0 = Debug|x64\r
{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|Win32.ActiveCfg = Release|Win32\r
{A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|Win32.Build.0 = Release|Win32\r
- {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|x64.ActiveCfg = Release|Win32\r
- {EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug_eglib|Win32.Build.0 = Debug_eglib|Win32\r
- {EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug_eglib|x64.ActiveCfg = Debug_eglib|x64\r
- {EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug_eglib|x64.Build.0 = Debug_eglib|x64\r
+ {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|x64.ActiveCfg = Release|x64\r
+ {A0EDDCD9-940F-432C-A28F-7EF322437D79}.Release|x64.Build.0 = Release|x64\r
{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|Win32.ActiveCfg = Debug|Win32\r
{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|Win32.Build.0 = Debug|Win32\r
- {EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|x64.ActiveCfg = Debug|Win32\r
- {EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32\r
- {EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release_eglib|Win32.Build.0 = Release_eglib|Win32\r
- {EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32\r
+ {EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|x64.ActiveCfg = Debug|x64\r
+ {EB56000B-C80B-4E8B-908D-D84D31B517D3}.Debug|x64.Build.0 = Debug|x64\r
{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|Win32.ActiveCfg = Release|Win32\r
{EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|Win32.Build.0 = Release|Win32\r
- {EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|x64.ActiveCfg = Release|Win32\r
- {37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug_eglib|x64.ActiveCfg = Debug_eglib|Win32\r
+ {EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|x64.ActiveCfg = Release|x64\r
+ {EB56000B-C80B-4E8B-908D-D84D31B517D3}.Release|x64.Build.0 = Release|x64\r
{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug|Win32.ActiveCfg = Debug|Win32\r
- {37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug|x64.ActiveCfg = Debug|Win32\r
- {37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32\r
- {37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32\r
+ {37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug|x64.ActiveCfg = Debug|x64\r
+ {37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Debug|x64.Build.0 = Debug|x64\r
{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release|Win32.ActiveCfg = Release|Win32\r
- {37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release|x64.ActiveCfg = Release|Win32\r
- {84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug_eglib|x64.ActiveCfg = Debug_eglib|Win32\r
+ {37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release|x64.ActiveCfg = Release|x64\r
+ {37F50E5A-4818-46CF-81FE-4BB06DE5D42E}.Release|x64.Build.0 = Release|x64\r
{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug|Win32.ActiveCfg = Debug|Win32\r
- {84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug|x64.ActiveCfg = Debug|Win32\r
- {84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32\r
- {84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32\r
+ {84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug|x64.ActiveCfg = Debug|x64\r
+ {84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Debug|x64.Build.0 = Debug|x64\r
{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release|Win32.ActiveCfg = Release|Win32\r
- {84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release|x64.ActiveCfg = Release|Win32\r
- {8F90007F-8019-4191-8808-891E4762D958}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {8F90007F-8019-4191-8808-891E4762D958}.Debug_eglib|x64.ActiveCfg = Debug_eglib|Win32\r
+ {84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release|x64.ActiveCfg = Release|x64\r
+ {84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}.Release|x64.Build.0 = Release|x64\r
{8F90007F-8019-4191-8808-891E4762D958}.Debug|Win32.ActiveCfg = Debug|Win32\r
- {8F90007F-8019-4191-8808-891E4762D958}.Debug|x64.ActiveCfg = Debug|Win32\r
- {8F90007F-8019-4191-8808-891E4762D958}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32\r
- {8F90007F-8019-4191-8808-891E4762D958}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32\r
+ {8F90007F-8019-4191-8808-891E4762D958}.Debug|x64.ActiveCfg = Debug|x64\r
+ {8F90007F-8019-4191-8808-891E4762D958}.Debug|x64.Build.0 = Debug|x64\r
{8F90007F-8019-4191-8808-891E4762D958}.Release|Win32.ActiveCfg = Release|Win32\r
- {8F90007F-8019-4191-8808-891E4762D958}.Release|x64.ActiveCfg = Release|Win32\r
- {CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug_eglib|x64.ActiveCfg = Debug_eglib|Win32\r
+ {8F90007F-8019-4191-8808-891E4762D958}.Release|x64.ActiveCfg = Release|x64\r
+ {8F90007F-8019-4191-8808-891E4762D958}.Release|x64.Build.0 = Release|x64\r
{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug|Win32.ActiveCfg = Debug|Win32\r
- {CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug|x64.ActiveCfg = Debug|Win32\r
- {CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32\r
- {CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32\r
+ {CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug|x64.ActiveCfg = Debug|x64\r
+ {CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Debug|x64.Build.0 = Debug|x64\r
{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release|Win32.ActiveCfg = Release|Win32\r
- {CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release|x64.ActiveCfg = Release|Win32\r
- {C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug_eglib|x64.ActiveCfg = Debug_eglib|Win32\r
+ {CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release|x64.ActiveCfg = Release|x64\r
+ {CA2A69D6-3B9D-45A5-8BF7-4E242E683122}.Release|x64.Build.0 = Release|x64\r
{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug|Win32.ActiveCfg = Debug|Win32\r
- {C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug|x64.ActiveCfg = Debug|Win32\r
- {C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32\r
- {C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32\r
+ {C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug|x64.ActiveCfg = Debug|x64\r
+ {C2EB666E-9146-4B7A-85F6-25F9EA313770}.Debug|x64.Build.0 = Debug|x64\r
{C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release|Win32.ActiveCfg = Release|Win32\r
- {C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release|x64.ActiveCfg = Release|Win32\r
- {158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug_eglib|Win32.Build.0 = Debug_eglib|Win32\r
- {158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug_eglib|x64.ActiveCfg = Debug_eglib|x64\r
- {158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug_eglib|x64.Build.0 = Debug_eglib|x64\r
+ {C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release|x64.ActiveCfg = Release|x64\r
+ {C2EB666E-9146-4B7A-85F6-25F9EA313770}.Release|x64.Build.0 = Release|x64\r
{158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|Win32.ActiveCfg = Debug|Win32\r
- {158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|x64.ActiveCfg = Debug|Win32\r
- {158073ED-99AE-4196-9EDC-DDB2344F8466}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32\r
- {158073ED-99AE-4196-9EDC-DDB2344F8466}.Release_eglib|Win32.Build.0 = Release_eglib|Win32\r
- {158073ED-99AE-4196-9EDC-DDB2344F8466}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32\r
+ {158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|x64.ActiveCfg = Debug|x64\r
+ {158073ED-99AE-4196-9EDC-DDB2344F8466}.Debug|x64.Build.0 = Debug|x64\r
{158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|Win32.ActiveCfg = Release|Win32\r
- {158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|x64.ActiveCfg = Release|Win32\r
- {80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug_eglib|Win32.Build.0 = Debug_eglib|Win32\r
- {80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug_eglib|x64.ActiveCfg = Debug_eglib|x64\r
- {80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug_eglib|x64.Build.0 = Debug_eglib|x64\r
+ {158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|x64.ActiveCfg = Release|x64\r
+ {158073ED-99AE-4196-9EDC-DDB2344F8466}.Release|x64.Build.0 = Release|x64\r
{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug|Win32.ActiveCfg = Debug|Win32\r
- {80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug|x64.ActiveCfg = Debug|Win32\r
- {80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32\r
- {80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release_eglib|Win32.Build.0 = Release_eglib|Win32\r
- {80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32\r
+ {80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug|x64.ActiveCfg = Debug|x64\r
+ {80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Debug|x64.Build.0 = Debug|x64\r
{80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release|Win32.ActiveCfg = Release|Win32\r
- {80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release|x64.ActiveCfg = Release|Win32\r
- {5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug_eglib|Win32.Build.0 = Debug_eglib|Win32\r
- {5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug_eglib|x64.ActiveCfg = Debug_eglib|x64\r
- {5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug_eglib|x64.Build.0 = Debug_eglib|x64\r
+ {80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release|x64.ActiveCfg = Release|x64\r
+ {80A0620A-3478-4E1A-AA7C-0D2387B892AB}.Release|x64.Build.0 = Release|x64\r
{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|Win32.ActiveCfg = Debug|Win32\r
{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|Win32.Build.0 = Debug|Win32\r
- {5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|x64.ActiveCfg = Debug|Win32\r
- {5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32\r
- {5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release_eglib|Win32.Build.0 = Release_eglib|Win32\r
- {5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32\r
+ {5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|x64.ActiveCfg = Debug|x64\r
+ {5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Debug|x64.Build.0 = Debug|x64\r
{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|Win32.ActiveCfg = Release|Win32\r
{5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|Win32.Build.0 = Release|Win32\r
- {5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|x64.ActiveCfg = Release|Win32\r
- {33014734-0F46-4099-9A21-0C989E428681}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {33014734-0F46-4099-9A21-0C989E428681}.Debug_eglib|Win32.Build.0 = Debug_eglib|Win32\r
- {33014734-0F46-4099-9A21-0C989E428681}.Debug_eglib|x64.ActiveCfg = Debug_eglib|x64\r
- {33014734-0F46-4099-9A21-0C989E428681}.Debug_eglib|x64.Build.0 = Debug_eglib|x64\r
+ {5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|x64.ActiveCfg = Release|x64\r
+ {5A435710-E6D2-4DD4-9B3F-A7239A32C6F4}.Release|x64.Build.0 = Release|x64\r
{33014734-0F46-4099-9A21-0C989E428681}.Debug|Win32.ActiveCfg = Debug|Win32\r
{33014734-0F46-4099-9A21-0C989E428681}.Debug|Win32.Build.0 = Debug|Win32\r
- {33014734-0F46-4099-9A21-0C989E428681}.Debug|x64.ActiveCfg = Debug|Win32\r
- {33014734-0F46-4099-9A21-0C989E428681}.Release_eglib|Win32.ActiveCfg = Release_eglib|Win32\r
- {33014734-0F46-4099-9A21-0C989E428681}.Release_eglib|Win32.Build.0 = Release_eglib|Win32\r
- {33014734-0F46-4099-9A21-0C989E428681}.Release_eglib|x64.ActiveCfg = Release_eglib|Win32\r
+ {33014734-0F46-4099-9A21-0C989E428681}.Debug|x64.ActiveCfg = Debug|x64\r
+ {33014734-0F46-4099-9A21-0C989E428681}.Debug|x64.Build.0 = Debug|x64\r
{33014734-0F46-4099-9A21-0C989E428681}.Release|Win32.ActiveCfg = Release|Win32\r
{33014734-0F46-4099-9A21-0C989E428681}.Release|Win32.Build.0 = Release|Win32\r
- {33014734-0F46-4099-9A21-0C989E428681}.Release|x64.ActiveCfg = Release|Win32\r
- {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_eglib|Win32.ActiveCfg = Debug|Win32\r
- {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_eglib|Win32.Build.0 = Debug|Win32\r
- {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_eglib|x64.ActiveCfg = Debug|Win32\r
- {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug_eglib|x64.Build.0 = Debug|Win32\r
- {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|Win32.ActiveCfg = Debug|Win32\r
- {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|Win32.Build.0 = Debug|Win32\r
- {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|x64.ActiveCfg = Debug|Win32\r
- {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release_eglib|Win32.ActiveCfg = Release|Win32\r
- {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release_eglib|Win32.Build.0 = Release|Win32\r
- {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release_eglib|x64.ActiveCfg = Release|Win32\r
- {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|Win32.ActiveCfg = Release|Win32\r
- {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|Win32.Build.0 = Release|Win32\r
- {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|x64.ActiveCfg = Release|Win32\r
- {86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Debug_eglib|x64.ActiveCfg = Debug|Win32\r
+ {33014734-0F46-4099-9A21-0C989E428681}.Release|x64.ActiveCfg = Release|x64\r
+ {33014734-0F46-4099-9A21-0C989E428681}.Release|x64.Build.0 = Release|x64\r
{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Debug|Win32.ActiveCfg = Debug|Win32\r
{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Debug|x64.ActiveCfg = Debug|Win32\r
- {86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Release_eglib|Win32.ActiveCfg = Release|Win32\r
- {86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Release_eglib|x64.ActiveCfg = Release|Win32\r
+ {86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Debug|x64.Build.0 = Debug|Win32\r
{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Release|Win32.ActiveCfg = Release|Win32\r
{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Release|x64.ActiveCfg = Release|Win32\r
- {83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug_eglib|Win32.ActiveCfg = Debug_eglib|Win32\r
- {83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug_eglib|x64.ActiveCfg = Debug|Win32\r
+ {86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}.Release|x64.Build.0 = Release|Win32\r
{83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug|Win32.ActiveCfg = Debug|Win32\r
{83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug|x64.ActiveCfg = Debug|Win32\r
- {83D4D926-2983-4770-BA92-EB9CB8828C95}.Release_eglib|Win32.ActiveCfg = Release|Win32\r
- {83D4D926-2983-4770-BA92-EB9CB8828C95}.Release_eglib|x64.ActiveCfg = Release|Win32\r
+ {83D4D926-2983-4770-BA92-EB9CB8828C95}.Debug|x64.Build.0 = Debug|Win32\r
{83D4D926-2983-4770-BA92-EB9CB8828C95}.Release|Win32.ActiveCfg = Release|Win32\r
{83D4D926-2983-4770-BA92-EB9CB8828C95}.Release|x64.ActiveCfg = Release|Win32\r
+ {83D4D926-2983-4770-BA92-EB9CB8828C95}.Release|x64.Build.0 = Release|Win32\r
+ {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|Win32.Build.0 = Debug|Win32\r
+ {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Debug|x64.ActiveCfg = Debug|Win32\r
+ {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|Win32.ActiveCfg = Release|Win32\r
+ {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|Win32.Build.0 = Release|Win32\r
+ {5D485D32-3B9F-4287-AB24-C8DA5B89F537}.Release|x64.ActiveCfg = Release|Win32\r
EndGlobalSection\r
GlobalSection(SolutionProperties) = preSolution\r
HideSolutionNode = FALSE\r
--- /dev/null
+<?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|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|x64">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|x64">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{A0EDDCD9-940F-432C-A28F-7EF322437D79}</ProjectGuid>\r
+ <RootNamespace>mono</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>libmono.lib;version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <ProgramDatabaseFile>$(TargetDir)$(TargetName).exe.pdb</ProgramDatabaseFile>\r
+ <SubSystem>Console</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>_DEBUG;__x86_64__;TARGET_AMD64;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>libmono.lib;version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>libmono.lib;version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;_CONSOLE;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>libmono.lib;version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\mono\mini\main.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="eglib.vcxproj">\r
+ <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ <ProjectReference Include="libmono.vcxproj">\r
+ <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?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|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|x64">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|x64">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{8F90007F-8019-4191-8808-891E4762D958}</ProjectGuid>\r
+ <RootNamespace>monodiet</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\;..\libgc\include;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;__WIN32__;HAVE_CONFIG_H;__i386__;TARGET_X86;HOST_WIN32;TARGET_WIN32;GC_NOT_DLL;GC_GCJ_SUPPORT;GC_WIN32_THREADS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <ObjectFileName>$(IntDir)monodiet/</ObjectFileName>\r
+ <ProgramDataBaseFileName>$(IntDir)monodiet/vc80.pdb</ProgramDataBaseFileName>\r
+ <XMLDocumentationFileName>$(IntDir)monodiet/</XMLDocumentationFileName>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;mono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\;..\libgc\include;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <ObjectFileName>$(IntDir)monodiet/</ObjectFileName>\r
+ <ProgramDataBaseFileName>$(IntDir)monodiet/vc80.pdb</ProgramDataBaseFileName>\r
+ <XMLDocumentationFileName>$(IntDir)monodiet/</XMLDocumentationFileName>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\mono\metadata\monodiet.c" />\r
+ <ClCompile Include="..\mono\metadata\opcodes.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="libmono.vcxproj">\r
+ <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?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|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|x64">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|x64">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{37F50E5A-4818-46CF-81FE-4BB06DE5D42E}</ProjectGuid>\r
+ <RootNamespace>dis</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\;..\VSDependancies\include\glib-2.0;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\VSDependancies\lib\glib-2.0\include;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;mono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <AdditionalIncludeDirectories>..\;..\VSDependancies\include\glib-2.0;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\VSDependancies\lib\glib-2.0\include;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\;..\VSDependancies\include\glib-2.0;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\VSDependancies\lib\glib-2.0\include;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ <DisableSpecificWarnings>4996;4018;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <AdditionalIncludeDirectories>..\;..\VSDependancies\include\glib-2.0;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\VSDependancies\lib\glib-2.0\include;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\mono\dis\declsec.c" />\r
+ <ClCompile Include="..\mono\dis\dis-cil.c" />\r
+ <ClCompile Include="..\mono\dis\dump.c" />\r
+ <ClCompile Include="..\mono\dis\get.c" />\r
+ <ClCompile Include="..\mono\dis\main.c" />\r
+ <ClCompile Include="..\mono\metadata\opcodes.c" />\r
+ <ClCompile Include="..\mono\dis\util.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClInclude Include="..\mono\dis\declsec.h" />\r
+ <ClInclude Include="..\mono\dis\dis-cil.h" />\r
+ <ClInclude Include="..\mono\dis\dump.h" />\r
+ <ClInclude Include="..\mono\dis\get.h" />\r
+ <ClInclude Include="..\mono\dis\meta.h" />\r
+ <ClInclude Include="..\mono\dis\push-pop.h" />\r
+ <ClInclude Include="..\mono\dis\util.h" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="libmono.vcxproj">\r
+ <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?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|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|x64">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|x64">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{CA2A69D6-3B9D-45A5-8BF7-4E242E683122}</ProjectGuid>\r
+ <RootNamespace>monograph</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\;..\VSDependancies\include\glib-2.0;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\VSDependancies\lib\glib-2.0\include;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;mono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <AdditionalIncludeDirectories>..\;..\VSDependancies\include\glib-2.0;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\VSDependancies\lib\glib-2.0\include;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\;..\VSDependancies\include\glib-2.0;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\VSDependancies\lib\glib-2.0\include;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <AdditionalIncludeDirectories>..\;..\VSDependancies\include\glib-2.0;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\VSDependancies\lib\glib-2.0\include;..\mono\;..\mono\jit;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\mono\monograph\monograph.c" />\r
+ <ClCompile Include="..\mono\metadata\opcodes.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="libmono.vcxproj">\r
+ <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?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|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|x64">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|x64">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{33014734-0F46-4099-9A21-0C989E428681}</ProjectGuid>\r
+ <RootNamespace>monoposixhelper</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ <WholeProgramOptimization>true</WholeProgramOptimization>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ <WholeProgramOptimization>true</WholeProgramOptimization>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\..\mono\eglib\src;..\..\mono;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>_DEBUG;__i386__;TARGET_X86;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <Link>\r
+ <AdditionalDependencies>$(TargetDir)..\lib\eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <OutputFile>$(OutDir)MonoPosixHelper.dll</OutputFile>\r
+ <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Windows</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <ImportLibrary>$(Platform)_$(Configuration)/lib/MonoPosixHelper.lib</ImportLibrary>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\..\mono\eglib\src;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>_DEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <Link>\r
+ <OutputFile>$(OutDir)MonoPosixHelper.dll</OutputFile>\r
+ <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Windows</SubSystem>\r
+ <ImportLibrary>$(Platform)_$(Configuration)/lib/MonoPosixHelper.lib</ImportLibrary>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <AdditionalIncludeDirectories>..\..\mono\eglib\src;..\..\mono;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>NDEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <Link>\r
+ <AdditionalDependencies>$(TargetDir)..\lib\eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <OutputFile>$(OutDir)MonoPosixHelper.dll</OutputFile>\r
+ <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Windows</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <ImportLibrary>$(Platform)_$(Configuration)/lib/MonoPosixHelper.lib</ImportLibrary>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <AdditionalIncludeDirectories>..\..\mono\eglib\src;..\..\mono;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>NDEBUG;__x86_64__;WIN64;_WIN64;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <Link>\r
+ <OutputFile>$(OutDir)MonoPosixHelper.dll</OutputFile>\r
+ <ModuleDefinitionFile>monoposixhelper.def</ModuleDefinitionFile>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Windows</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <ImportLibrary>$(Platform)_$(Configuration)/lib/MonoPosixHelper.lib</ImportLibrary>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\support\adler32.c" />\r
+ <ClCompile Include="..\support\compress.c" />\r
+ <ClCompile Include="..\support\crc32.c" />\r
+ <ClCompile Include="..\support\deflate.c" />\r
+ <ClCompile Include="..\support\errno.c" />\r
+ <ClCompile Include="..\support\gzio.c" />\r
+ <ClCompile Include="..\support\infback.c" />\r
+ <ClCompile Include="..\support\inffast.c" />\r
+ <ClCompile Include="..\support\inflate.c" />\r
+ <ClCompile Include="..\support\inftrees.c" />\r
+ <ClCompile Include="..\support\map.c" />\r
+ <ClCompile Include="..\support\signal.c" />\r
+ <ClCompile Include="..\support\stdio.c" />\r
+ <ClCompile Include="..\support\stdlib.c" />\r
+ <ClCompile Include="..\support\string.c" />\r
+ <ClCompile Include="..\support\trees.c" />\r
+ <ClCompile Include="..\support\uncompr.c" />\r
+ <ClCompile Include="..\support\zlib-helper.c" />\r
+ <ClCompile Include="..\support\zutil.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClInclude Include="..\support\inffast.h" />\r
+ <ClInclude Include="..\support\crc32.h" />\r
+ <ClInclude Include="..\support\deflate.h" />\r
+ <ClInclude Include="..\support\inffixed.h" />\r
+ <ClInclude Include="..\support\inflate.h" />\r
+ <ClInclude Include="..\support\inftrees.h" />\r
+ <ClInclude Include="..\support\map.h" />\r
+ <ClInclude Include="..\support\mph.h" />\r
+ <ClInclude Include="..\support\trees.h" />\r
+ <ClInclude Include="..\support\zconf.h" />\r
+ <ClInclude Include="..\support\zutil.h" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <None Include="monoposixhelper.def" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="genmdesc.vcxproj">\r
+ <Project>{b7098dfa-31e6-4006-8a15-1c9a4e925149}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?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|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|x64">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|x64">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{84C7DB50-D6F8-4C47-B22C-6BB203AEB4D3}</ProjectGuid>\r
+ <RootNamespace>pedump</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\;..\libgc\include;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;GC_NOT_DLL;GC_GCJ_SUPPORT;GC_WIN32_THREADS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <ObjectFileName>$(IntDir)pedump/</ObjectFileName>\r
+ <ProgramDataBaseFileName>$(IntDir)pedump/vc80.pdb</ProgramDataBaseFileName>\r
+ <XMLDocumentationFileName>$(IntDir)pedump/</XMLDocumentationFileName>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ <DisableSpecificWarnings>4018;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>glib-2.0.lib;ws2_32.lib;gthread-2.0.lib;libgc.lib;mono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>glib-2.0.lib;ws2_32.lib;gthread-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\;..\libgc\include;..\VSDependancies\include\glib-2.0\glib;..\VSDependancies\include;..\mono\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WINDOWS;__WIN32__;HOST_WIN32;TARGET_WIN32;__i386__;TARGET_X86;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <ObjectFileName>$(IntDir)pedump/</ObjectFileName>\r
+ <ProgramDataBaseFileName>$(IntDir)pedump/vc80.pdb</ProgramDataBaseFileName>\r
+ <XMLDocumentationFileName>$(IntDir)pedump/</XMLDocumentationFileName>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ <DisableSpecificWarnings>4018;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>glib-2.0.lib;ws2_32.lib;gthread-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>glib-2.0.lib;ws2_32.lib;gthread-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\mono\utils\strtod.c" />\r
+ <ClCompile Include="..\mono\metadata\appdomain.c" />\r
+ <ClCompile Include="..\mono\metadata\assembly.c" />\r
+ <ClCompile Include="..\mono\metadata\boehm-gc.c" />\r
+ <ClCompile Include="..\mono\metadata\class.c" />\r
+ <ClCompile Include="..\mono\metadata\console-win32.c" />\r
+ <ClCompile Include="..\mono\metadata\decimal.c" />\r
+ <ClCompile Include="..\mono\metadata\domain.c" />\r
+ <ClCompile Include="..\mono\metadata\environment.c" />\r
+ <ClCompile Include="..\mono\metadata\file-io.c" />\r
+ <ClCompile Include="..\mono\metadata\filewatcher.c" />\r
+ <ClCompile Include="..\mono\metadata\gc.c" />\r
+ <ClCompile Include="..\mono\metadata\icall.c" />\r
+ <ClCompile Include="..\mono\metadata\image.c" />\r
+ <ClCompile Include="..\mono\metadata\loader.c" />\r
+ <ClCompile Include="..\mono\metadata\locales.c" />\r
+ <ClCompile Include="..\mono\metadata\marshal.c" />\r
+ <ClCompile Include="..\mono\metadata\metadata.c" />\r
+ <ClCompile Include="..\mono\metadata\monitor.c" />\r
+ <ClCompile Include="..\mono\metadata\mono-config.c" />\r
+ <ClCompile Include="..\mono\utils\mono-dl.c" />\r
+ <ClCompile Include="..\mono\metadata\object.c" />\r
+ <ClCompile Include="..\mono\metadata\pedump.c" />\r
+ <ClCompile Include="..\mono\metadata\process.c" />\r
+ <ClCompile Include="..\mono\metadata\profiler.c" />\r
+ <ClCompile Include="..\mono\metadata\rand.c" />\r
+ <ClCompile Include="..\mono\metadata\rawbuffer.c" />\r
+ <ClCompile Include="..\mono\metadata\reflection.c" />\r
+ <ClCompile Include="..\mono\metadata\security-manager.c" />\r
+ <ClCompile Include="..\mono\metadata\security.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
+ <ClCompile Include="..\mono\metadata\threadpool.c" />\r
+ <ClCompile Include="..\mono\metadata\threads.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="libmono.vcxproj">\r
+ <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?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_eglib|Win32">\r
+ <Configuration>Debug_eglib</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{83D4D926-2983-4770-BA92-EB9CB8828C95}</ProjectGuid>\r
+ <RootNamespace>profilercov</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ <WholeProgramOptimization>true</WholeProgramOptimization>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">$(Configuration)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">true</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PROFILERCOV_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+ </ClCompile>\r
+ <Link>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Windows</SubSystem>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <Optimization>MaxSpeed</Optimization>\r
+ <IntrinsicFunctions>true</IntrinsicFunctions>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PROFILERCOV_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <FunctionLevelLinking>true</FunctionLevelLinking>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <Link>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Windows</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PROFILERCOV_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+ </ClCompile>\r
+ <Link>\r
+ <AdditionalDependencies>mono.lib;version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Windows</SubSystem>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\mono\profiler\mono-cov.c" />\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?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_eglib|Win32">\r
+ <Configuration>Debug_eglib</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{86663B87-4CD2-42B6-8D8E-C79DA1CCDEE6}</ProjectGuid>\r
+ <RootNamespace>profilerlogging</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ <WholeProgramOptimization>true</WholeProgramOptimization>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">$(SolutionDir)$(Configuration)\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">$(Configuration)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">true</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PROFILERLOGGING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+ </ClCompile>\r
+ <Link>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Windows</SubSystem>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <Optimization>MaxSpeed</Optimization>\r
+ <IntrinsicFunctions>true</IntrinsicFunctions>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PROFILERLOGGING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <FunctionLevelLinking>true</FunctionLevelLinking>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <Link>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Windows</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_eglib|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\libgc\include;..\;..\mono\;..\mono\jit;..\mono\eglib\src;..\..\mono\eglib\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>TARGET_X86;_DEBUG;__i386__;TARGET_X86;i386;WIN32;_WIN32;__WIN32__;_WINDOWS;WINDOWS;HOST_WIN32;TARGET_WIN32;_CRT_SECURE_NO_DEPRECATE;GC_NOT_DLL;HAVE_CONFIG_H;WINVER=0x0500;_WIN32_WINNT=0x0500;_WIN32_IE=0x0501;WIN32_THREADS;FD_SETSIZE=1024;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+ <ShowIncludes>true</ShowIncludes>\r
+ </ClCompile>\r
+ <Link>\r
+ <AdditionalDependencies>mono.lib;version.lib;libgc.lib;eglib.lib;ws2_32.lib;Psapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Windows</SubSystem>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\mono\profiler\mono-profiler-logging.c" />\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?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|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|x64">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|x64">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{C5639B3F-288A-4A4B-A4A5-C0D85834221D}</ProjectGuid>\r
+ <RootNamespace>testinvoke</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\..\..\libgc\include;..\..\VSDependancies\include\glib-2.0;..\..\VSDependancies\include\glib-2.0\glib;..\..\VSDependancies\lib\glib-2.0\include;..\..\VSDependancies\include;..\..\;C:\cygwin\opt\mono\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <ObjectFileName>$(IntDir)invoke/</ObjectFileName>\r
+ <ProgramDataBaseFileName>$(IntDir)invoke/vc80.pdb</ProgramDataBaseFileName>\r
+ <XMLDocumentationFileName>$(IntDir)invoke/</XMLDocumentationFileName>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\..\..\libgc\include;..\..\VSDependancies\include\glib-2.0;..\..\VSDependancies\include\glib-2.0\glib;..\..\VSDependancies\lib\glib-2.0\include;..\..\VSDependancies\include;..\..\;C:\cygwin\opt\mono\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <ObjectFileName>$(IntDir)invoke/</ObjectFileName>\r
+ <ProgramDataBaseFileName>$(IntDir)invoke/vc80.pdb</ProgramDataBaseFileName>\r
+ <XMLDocumentationFileName>$(IntDir)invoke/</XMLDocumentationFileName>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\samples\embed\test-invoke.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="libmono.vcxproj">\r
+ <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?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|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|x64">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|x64">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{C2EB666E-9146-4B7A-85F6-25F9EA313770}</ProjectGuid>\r
+ <RootNamespace>testmetadata</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\..;..\..\VSDependancies\include\glib-2.0\glib;..\..\VSDependancies\include;C:\cygwin\opt\mono\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <ObjectFileName>$(IntDir)metadata/</ObjectFileName>\r
+ <ProgramDataBaseFileName>$(IntDir)metadata/vc80.pdb</ProgramDataBaseFileName>\r
+ <XMLDocumentationFileName>$(IntDir)metadata/</XMLDocumentationFileName>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\..;..\..\VSDependancies\include\glib-2.0\glib;..\..\VSDependancies\include;C:\cygwin\opt\mono\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <ObjectFileName>$(IntDir)metadata/</ObjectFileName>\r
+ <ProgramDataBaseFileName>$(IntDir)metadata/vc80.pdb</ProgramDataBaseFileName>\r
+ <XMLDocumentationFileName>$(IntDir)metadata/</XMLDocumentationFileName>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\samples\embed\test-metadata.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="libmono.vcxproj">\r
+ <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?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|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|x64">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|x64">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{80A0620A-3478-4E1A-AA7C-0D2387B892AB}</ProjectGuid>\r
+ <RootNamespace>test_eglib</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ <WholeProgramOptimization>true</WholeProgramOptimization>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ <WholeProgramOptimization>true</WholeProgramOptimization>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>../eglib/src;../eglib/test;../eglib;../msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_FORTIFY_SOURCE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level4</WarningLevel>\r
+ <TreatWarningAsError>false</TreatWarningAsError>\r
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>Ws2_32.lib;Psapi.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <OptimizeReferences>false</OptimizeReferences>\r
+ <EnableCOMDATFolding>false</EnableCOMDATFolding>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <AdditionalIncludeDirectories>../eglib/src;../eglib/test;../eglib;../msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_FORTIFY_SOURCE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level4</WarningLevel>\r
+ <TreatWarningAsError>false</TreatWarningAsError>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>Ws2_32.lib;Psapi.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>../eglib/src;../eglib/test;../eglib;../msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_FORTIFY_SOURCE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level4</WarningLevel>\r
+ <TreatWarningAsError>false</TreatWarningAsError>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>Ws2_32.lib;Psapi.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <OptimizeReferences>false</OptimizeReferences>\r
+ <EnableCOMDATFolding>false</EnableCOMDATFolding>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <AdditionalIncludeDirectories>../eglib/src;../eglib/test;../eglib;../msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_FORTIFY_SOURCE=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level4</WarningLevel>\r
+ <TreatWarningAsError>false</TreatWarningAsError>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>Ws2_32.lib;Psapi.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\eglib\test\array.c" />\r
+ <ClCompile Include="..\eglib\test\dir.c" />\r
+ <ClCompile Include="..\eglib\test\driver.c" />\r
+ <ClCompile Include="..\eglib\test\endian.c" />\r
+ <ClCompile Include="..\eglib\test\fake.c" />\r
+ <ClCompile Include="..\eglib\test\file.c" />\r
+ <ClCompile Include="getopt.c" />\r
+ <ClCompile Include="getopt_long.c" />\r
+ <ClCompile Include="..\eglib\test\hashtable.c" />\r
+ <ClCompile Include="..\eglib\test\list.c" />\r
+ <ClCompile Include="..\eglib\test\markup.c" />\r
+ <ClCompile Include="..\eglib\test\memory.c" />\r
+ <ClCompile Include="..\eglib\test\module.c" />\r
+ <ClCompile Include="..\eglib\test\path.c" />\r
+ <ClCompile Include="..\eglib\test\pattern.c" />\r
+ <ClCompile Include="..\eglib\test\ptrarray.c" />\r
+ <ClCompile Include="..\eglib\test\queue.c" />\r
+ <ClCompile Include="..\eglib\test\shell.c" />\r
+ <ClCompile Include="..\eglib\test\sizes.c" />\r
+ <ClCompile Include="..\eglib\test\slist.c" />\r
+ <ClCompile Include="..\eglib\test\spawn.c" />\r
+ <ClCompile Include="..\eglib\test\string-util.c" />\r
+ <ClCompile Include="..\eglib\test\string.c" />\r
+ <ClCompile Include="..\eglib\test\test.c" />\r
+ <ClCompile Include="..\eglib\test\timer.c" />\r
+ <ClCompile Include="..\eglib\test\unicode.c" />\r
+ <ClCompile Include="..\eglib\test\utf8.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClInclude Include="getopt.h" />\r
+ <ClInclude Include="getopt_long.h" />\r
+ <ClInclude Include="..\eglib\src\glib.h" />\r
+ <ClInclude Include="..\eglib\test\test.h" />\r
+ <ClInclude Include="..\eglib\test\tests.h" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="eglib.vcxproj">\r
+ <Project>{158073ed-99ae-4196-9edc-ddb2344f8466}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?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|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Debug|x64">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|x64">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>x64</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{6FDE4E5E-57D0-432F-A987-6C226A7827E4}</ProjectGuid>\r
+ <RootNamespace>teste</RootNamespace>\r
+ <Keyword>Win32Proj</Keyword>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/bin\</OutDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)_$(Configuration)/obj/$(ProjectName)\</IntDir>\r
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\..\..\libgc\include;..\..\VSDependancies\include\glib-2.0;..\..\VSDependancies\include\glib-2.0\glib;..\..\VSDependancies\lib\glib-2.0\include;..\..\VSDependancies\include;..\..\;C:\cygwin\opt\mono\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <ObjectFileName>$(IntDir)e/</ObjectFileName>\r
+ <ProgramDataBaseFileName>$(IntDir)e/vc80.pdb</ProgramDataBaseFileName>\r
+ <XMLDocumentationFileName>$(IntDir)e/</XMLDocumentationFileName>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>\r
+ <DataExecutionPrevention>\r
+ </DataExecutionPrevention>\r
+ <TargetMachine>MachineX86</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>Disabled</Optimization>\r
+ <AdditionalIncludeDirectories>..\..\..\libgc\include;..\..\VSDependancies\include\glib-2.0;..\..\VSDependancies\include\glib-2.0\glib;..\..\VSDependancies\lib\glib-2.0\include;..\..\VSDependancies\include;..\..\;C:\cygwin\opt\mono\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <MinimalRebuild>true</MinimalRebuild>\r
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <ObjectFileName>$(IntDir)e/</ObjectFileName>\r
+ <ProgramDataBaseFileName>$(IntDir)e/vc80.pdb</ProgramDataBaseFileName>\r
+ <XMLDocumentationFileName>$(IntDir)e/</XMLDocumentationFileName>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ <CompileAs>CompileAsC</CompileAs>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalDependencies>glib-2.0.lib;gmodule-2.0.lib;ws2_32.lib;gthread-2.0.lib;gobject-2.0.lib;libmono.lib;Psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
+ <Midl>\r
+ <TargetEnvironment>X64</TargetEnvironment>\r
+ </Midl>\r
+ <ClCompile>\r
+ <Optimization>MinSpace</Optimization>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+ <BufferSecurityCheck>true</BufferSecurityCheck>\r
+ <PrecompiledHeader>\r
+ </PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+ </ClCompile>\r
+ <ProjectReference>\r
+ <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
+ </ProjectReference>\r
+ <Link>\r
+ <AdditionalLibraryDirectories>$(Platform)_$(Configuration)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <SubSystem>Console</SubSystem>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <TargetMachine>MachineX64</TargetMachine>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="..\samples\embed\teste.c" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="libmono.vcxproj">\r
+ <Project>{cb0d9e92-293c-439c-9ac7-c5f59b6e0771}</Project>\r
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
#test_profiles += net_4_0
endif
+if INSTALL_MONODROID
+build_profiles += monodroid
+endif
+
if INSTALL_MONOTOUCH
build_profiles += monotouch
endif
/mkbundle1
/mkbundle2
/mod
+/mono-abi-info
/mono-api-diff
/mono-api-info
/mono-api-info1
csharp2$(SCRIPT_SUFFIX) \
gacutil2$(SCRIPT_SUFFIX) \
gmcs$(SCRIPT_SUFFIX) \
+ mdoc$(SCRIPT_SUFFIX) \
monop2$(SCRIPT_SUFFIX) \
resgen2$(SCRIPT_SUFFIX) \
wsdl2$(SCRIPT_SUFFIX)
installvst$(SCRIPT_SUFFIX) \
genxs$(SCRIPT_SUFFIX) \
macpack$(SCRIPT_SUFFIX) \
- mdoc$(SCRIPT_SUFFIX) \
mono-cil-strip$(SCRIPT_SUFFIX) \
prj2make$(SCRIPT_SUFFIX) \
soapsuds$(SCRIPT_SUFFIX) \
mv -f $@.tmp $@
$(scripts_mono_configuration_crypto): mono-configuration-crypto.in
- $(REWRITE2) -e "s,@exe_name@,mono-configuration-crypto,g" $(srcdir)/mono-configuration-crypto.in > $@.tmp
+ $(REWRITE4) -e "s,@exe_name@,mono-configuration-crypto,g" $(srcdir)/mono-configuration-crypto.in > $@.tmp
mv -f $@.tmp $@
$(MDOC_SUBCOMMANDS): Makefile