Esempio n. 1
0
        public override void WriteEventSyntax(XPathNavigator reflection, SyntaxWriter writer)
        {
            string         name       = (string)reflection.Evaluate(apiNameExpression);
            XPathNavigator handler    = reflection.SelectSingleNode(apiHandlerOfEventExpression);
            XPathNavigator args       = reflection.SelectSingleNode(apiEventArgsExpression);
            bool           isVirtual  = (bool)reflection.Evaluate(apiIsVirtualExpression) && !(bool)reflection.Evaluate(apiIsAbstractProcedureExpression);
            int            iterations = isVirtual ? 2 : 1;

            for (int i = 0; i < iterations; i++)
            {
                WriteAttributes(reflection, writer);
                WriteVisibility(reflection, writer);
                if (isVirtual)
                {
                    if (i == 0)
                    {
                        writer.WriteKeyword("abstract");
                        writer.WriteString(" ");
                    }
                    else
                    {
                        writer.WriteKeyword("override");
                        writer.WriteString(" ");
                    }
                }
                else
                {
                    WriteMemberKeyword(reflection, writer);
                }
                writer.WriteIdentifier(name);
                writer.WriteString(" : ");
                writer.WriteReferenceLink("T:Microsoft.FSharp.Control.IEvent");

                writer.WriteString("<");
                WriteTypeReference(handler, writer);
                writer.WriteString(",");
                writer.WriteLine();
                writer.WriteString("    ");
                if (args == null)
                {
                    writer.WriteReferenceLink("T:System.EventArgs");
                }
                else
                {
                    WriteTypeReference(args, writer);
                }
                writer.WriteString(">");
                if (i == 0)
                {
                    writer.WriteLine();
                }
            }
        }
Esempio n. 2
0
        public virtual void WriteAttachedEventSyntax(XPathNavigator reflection, SyntaxWriter writer)
        {
            string adderId   = (string)reflection.Evaluate(attachedEventAdderExpression);
            string removerId = (string)reflection.Evaluate(attachedEventRemoverExpression);

            if (!(string.IsNullOrEmpty(adderId) && string.IsNullOrEmpty(removerId)))
            {
                writer.WriteString("See ");
                writer.WriteReferenceLink(adderId);
                writer.WriteString(", ");
                writer.WriteReferenceLink(removerId);
            }
        }
Esempio n. 3
0
        // Attributes

        private void WriteAttribute(string reference, SyntaxWriter writer)
        {
            writer.WriteString("[<");
            writer.WriteReferenceLink(reference);
            writer.WriteString(">]");
            writer.WriteLine();
        }
        public override void WriteStructureSyntax(XPathNavigator reflection, SyntaxWriter writer)
        {
            if (IsUnsupportedGeneric(reflection, writer))
            {
                return;
            }

            string name           = (string)reflection.Evaluate(apiNameExpression);
            bool   isSerializable = (bool)reflection.Evaluate(apiIsSerializableTypeExpression);

            if (isSerializable)
            {
                WriteAttribute("T:System.SerializableAttribute", writer);
            }
            WriteAttributes(reflection, writer);
            WriteVisibility(reflection, writer);
            writer.WriteString(" ");
            writer.WriteKeyword("final");
            writer.WriteString(" ");
            writer.WriteKeyword("class");
            writer.WriteString(" ");
            writer.WriteIdentifier(name);

            writer.WriteString(" ");
            writer.WriteKeyword("extends");
            writer.WriteString(" ");
            writer.WriteReferenceLink("T:System.ValueType");

            WriteImplementedInterfaces(reflection, writer);
        }
        private void WriteNormalTypeReference(string reference, SyntaxWriter writer)
        {
            switch (reference)
            {
            case "T:System.Void":
                writer.WriteReferenceLink(reference, "void");
                break;

            case "T:System.Boolean":
                writer.WriteReferenceLink(reference, "boolean");
                break;

            case "T:System.Byte":
                writer.WriteReferenceLink(reference, "byte");
                break;

            case "T:System.Char":
                writer.WriteReferenceLink(reference, "char");
                break;

            case "T:System.Int16":
                writer.WriteReferenceLink(reference, "short");
                break;

            case "T:System.Int32":
                writer.WriteReferenceLink(reference, "int");
                break;

            case "T:System.Int64":
                writer.WriteReferenceLink(reference, "long");
                break;

            case "T:System.Single":
                writer.WriteReferenceLink(reference, "float");
                break;

            case "T:System.Double":
                writer.WriteReferenceLink(reference, "double");
                break;

            default:
                writer.WriteReferenceLink(reference);
                break;
            }
        }
Esempio n. 6
0
        private static void WriteNormalTypeReference(string reference, SyntaxWriter writer)
        {
            switch (reference)
            {
            case "T:System.Int16":
                writer.WriteReferenceLink(reference, "Short");
                break;

            case "T:System.Int32":
                writer.WriteReferenceLink(reference, "Integer");
                break;

            case "T:System.Int64":
                writer.WriteReferenceLink(reference, "Long");
                break;

            case "T:System.UInt16":
                writer.WriteReferenceLink(reference, "UShort");
                break;

            case "T:System.UInt32":
                writer.WriteReferenceLink(reference, "UInteger");
                break;

            case "T:System.UInt64":
                writer.WriteReferenceLink(reference, "ULong");
                break;

            default:
                writer.WriteReferenceLink(reference);
                break;
            }
        }
 private void WriteAttribute(string reference, SyntaxWriter writer, bool newline)
 {
     writer.WriteString("/** @attribute ");
     writer.WriteReferenceLink(reference);
     writer.WriteString(" */ ");
     if (newline)
     {
         writer.WriteLine();
     }
 }
Esempio n. 8
0
        public virtual void WriteAttachedPropertySyntax(XPathNavigator reflection, SyntaxWriter writer)
        {
            string getterId = (string)reflection.Evaluate(attachedPropertyGetterExpression);
            string setterId = (string)reflection.Evaluate(attachedPropertySetterExpression);

            if (!string.IsNullOrEmpty(getterId))
            {
                writer.WriteString("See ");
                writer.WriteReferenceLink(getterId);
            }
            if (!string.IsNullOrEmpty(setterId))
            {
                if (!string.IsNullOrEmpty(getterId))
                {
                    writer.WriteString(", ");
                }
                writer.WriteReferenceLink(setterId);
            }
        }
Esempio n. 9
0
        // Attributes

        private void WriteAttribute(string reference, bool newline, SyntaxWriter writer)
        {
            writer.WriteString("[");
            writer.WriteReferenceLink(reference);
            writer.WriteString("]");
            if (newline)
            {
                writer.WriteLine();
            }
        }
Esempio n. 10
0
        private void WriteEventSyntax(XPathNavigator reflection, SyntaxWriter writer, string prefix)
        {
            string name          = (string)reflection.Evaluate(nameExpression);
            string declaringType = (string)reflection.Evaluate(declaringTypeExpression);
            string handlerType   = (string)reflection.Evaluate(eventHandlerTypeExpression);

            writer.WriteStartBlock(Language);

            writer.WriteString("<");
            writer.WriteString(prefix);
            writer.WriteString(":");
            writer.WriteReferenceLink(declaringType);
            writer.WriteString(" ");
            writer.WriteString("On");
            writer.WriteString(name);
            writer.WriteString("=\"");
            writer.WriteReferenceLink(handlerType);
            writer.WriteString("\" />");

            writer.WriteEndBlock();
        }
        /// <summary>
        /// Write out a normal type reference
        /// </summary>
        /// <param name="api">The API name</param>
        /// <param name="writer">The syntax writer to which it is written</param>
        private static void WriteNormalTypeReference(string api,
          SyntaxWriter writer)
        {
            switch(api)
            {
                case "T:System.Byte":
                    writer.WriteReferenceLink(api, "Byte");
                    break;

                case "T:System.SByte":
                    writer.WriteReferenceLink(api, "SByte");
                    break;

                case "T:System.Char":
                    writer.WriteReferenceLink(api, "Char");
                    break;

                case "T:System.Int16":
                    writer.WriteReferenceLink(api, "Int16");
                    break;

                case "T:System.Int32":
                    writer.WriteReferenceLink(api, "Int32");
                    break;

                case "T:System.Int64":
                    writer.WriteReferenceLink(api, "Int64");
                    break;

                case "T:System.UInt16":
                    writer.WriteReferenceLink(api, "UInt16");
                    break;

                case "T:System.UInt32":
                    writer.WriteReferenceLink(api, "UInt32");
                    break;

                case "T:System.UInt64":
                    writer.WriteReferenceLink(api, "UInt64");
                    break;

                case "T:System.Single":
                    writer.WriteReferenceLink(api, "Single");
                    break;

                case "T:System.Double":
                    writer.WriteReferenceLink(api, "Double");
                    break;

                case "T:System.Decimal":
                    writer.WriteReferenceLink(api, "Decimal");
                    break;

                case "T:System.Boolean":
                    writer.WriteReferenceLink(api, "Boolean");
                    break;

                default:
                {
                    string text = api.Substring(2);
                    if(text.StartsWith("System.", StringComparison.Ordinal))
                    {
                        int num = text.LastIndexOf('.');
                        text = text.Substring(num + 1);
                    }

                    writer.WriteReferenceLink(api, text);
                    break;
                }
            }
        }
Esempio n. 12
0
        private void WriteEventSyntax (XPathNavigator reflection, SyntaxWriter writer, string prefix) {

            string name = (string)reflection.Evaluate(nameExpression);
            string declaringType = (string)reflection.Evaluate(declaringTypeExpression);
            string handlerType = (string)reflection.Evaluate(eventHandlerTypeExpression);

            writer.WriteStartBlock(Language);

            writer.WriteString("<");
            writer.WriteString(prefix);
            writer.WriteString(":");
            writer.WriteReferenceLink(declaringType);
            writer.WriteString(" ");
            writer.WriteString("On");
            writer.WriteString(name);
            writer.WriteString("=\"");
            writer.WriteReferenceLink(handlerType);
            writer.WriteString("\" />");

            writer.WriteEndBlock();

        }
        /// <inheritdoc />
        protected override void WriteNormalTypeReference(string api, SyntaxWriter writer)
        {
            switch (api)
            {
            case "T:System.Byte":
                writer.WriteReferenceLink(api, "Byte");
                break;

            case "T:System.SByte":
                writer.WriteReferenceLink(api, "SByte");
                break;

            case "T:System.Char":
                writer.WriteReferenceLink(api, "Char");
                break;

            case "T:System.Int16":
                writer.WriteReferenceLink(api, "Int16");
                break;

            case "T:System.Int32":
                writer.WriteReferenceLink(api, "Int32");
                break;

            case "T:System.Int64":
                writer.WriteReferenceLink(api, "Int64");
                break;

            case "T:System.UInt16":
                writer.WriteReferenceLink(api, "UInt16");
                break;

            case "T:System.UInt32":
                writer.WriteReferenceLink(api, "UInt32");
                break;

            case "T:System.UInt64":
                writer.WriteReferenceLink(api, "UInt64");
                break;

            case "T:System.Single":
                writer.WriteReferenceLink(api, "Single");
                break;

            case "T:System.Double":
                writer.WriteReferenceLink(api, "Double");
                break;

            case "T:System.Decimal":
                writer.WriteReferenceLink(api, "Decimal");
                break;

            case "T:System.Boolean":
                writer.WriteReferenceLink(api, "Boolean");
                break;

            default:
            {
                string text = api.Substring(2);

                if (text.StartsWith("System.", StringComparison.Ordinal))
                {
                    int num = text.LastIndexOf('.');
                    text = text.Substring(num + 1);
                }

                writer.WriteReferenceLink(api, text);
                break;
            }
            }
        }
		private void WriteAttribute (string reference, bool newLine, SyntaxWriter writer) {
			writer.WriteString("<");
			writer.WriteReferenceLink(reference);
			writer.WriteString(">");
			if (newLine) {
				writer.WriteString(" _");
				writer.WriteLine();
			}
		}
		private void WriteNormalTypeReference (string reference, SyntaxWriter writer) {
			switch (reference) {
				case "T:System.Int16":
					writer.WriteReferenceLink(reference, "Short");
				break;
				case "T:System.Int32":
					writer.WriteReferenceLink(reference, "Integer");
				break;
				case "T:System.Int64":
					writer.WriteReferenceLink(reference, "Long");
				break;
				case "T:System.UInt16":
					writer.WriteReferenceLink(reference, "UShort");
				break;
				case "T:System.UInt32":
					writer.WriteReferenceLink(reference, "UInteger");
				break;
				case "T:System.UInt64":
					writer.WriteReferenceLink(reference, "ULong");
				break;
				default:
					writer.WriteReferenceLink(reference);
				break;
			}
		}
Esempio n. 16
0
        // DONE
        private void WriteNormalTypeReference(string api, SyntaxWriter writer)
        {
            switch (api)
            {
            case "T:System.Void":
                writer.WriteReferenceLink(api, "unit");
                break;

            case "T:System.String":
                writer.WriteReferenceLink(api, "string");
                break;

            case "T:System.Boolean":
                writer.WriteReferenceLink(api, "bool");
                break;

            case "T:System.Byte":
                writer.WriteReferenceLink(api, "byte");
                break;

            case "T:System.SByte":
                writer.WriteReferenceLink(api, "sbyte");
                break;

            case "T:System.Char":
                writer.WriteReferenceLink(api, "char");
                break;

            case "T:System.Int16":
                writer.WriteReferenceLink(api, "int16");
                break;

            case "T:System.Int32":
                writer.WriteReferenceLink(api, "int");
                break;

            case "T:System.Int64":
                writer.WriteReferenceLink(api, "int64");
                break;

            case "T:System.UInt16":
                writer.WriteReferenceLink(api, "uint16");
                break;

            case "T:System.UInt32":
                writer.WriteReferenceLink(api, "uint32");
                break;

            case "T:System.UInt64":
                writer.WriteReferenceLink(api, "uint64");
                break;

            case "T:System.Single":
                writer.WriteReferenceLink(api, "float32");
                break;

            case "T:System.Double":
                writer.WriteReferenceLink(api, "float");
                break;

            case "T:System.Decimal":
                writer.WriteReferenceLink(api, "decimal");
                break;

            default:
                writer.WriteReferenceLink(api);
                break;
            }
        }
Esempio n. 17
0
 public virtual void WriteAttachedEventSyntax(XPathNavigator reflection, SyntaxWriter writer)
 {
     string adderId = (string)reflection.Evaluate(attachedEventAdderExpression);
     string removerId = (string)reflection.Evaluate(attachedEventRemoverExpression);
     if (!(string.IsNullOrEmpty(adderId) && string.IsNullOrEmpty(removerId)))
     {
         writer.WriteString("See ");
         writer.WriteReferenceLink(adderId);
         writer.WriteString(", ");
         writer.WriteReferenceLink(removerId);
     }
 }
Esempio n. 18
0
        private void WriteNormalTypeReference(string api, SyntaxWriter writer)
        {
            switch (api)
            {
            case "T:System.Byte":
                writer.WriteReferenceLink(api, "Byte");
                return;

            case "T:System.SByte":
                writer.WriteReferenceLink(api, "SByte");
                return;

            case "T:System.Char":
                writer.WriteReferenceLink(api, "Char");
                return;

            case "T:System.Int16":
                writer.WriteReferenceLink(api, "Int16");
                return;

            case "T:System.Int32":
                writer.WriteReferenceLink(api, "Int32");
                return;

            case "T:System.Int64":
                writer.WriteReferenceLink(api, "Int64");
                return;

            case "T:System.UInt16":
                writer.WriteReferenceLink(api, "UInt16");
                return;

            case "T:System.UInt32":
                writer.WriteReferenceLink(api, "UInt32");
                return;

            case "T:System.UInt64":
                writer.WriteReferenceLink(api, "UInt64");
                return;

            case "T:System.Single":
                writer.WriteReferenceLink(api, "Single");
                return;

            case "T:System.Double":
                writer.WriteReferenceLink(api, "Double");
                return;

            case "T:System.Decimal":
                writer.WriteReferenceLink(api, "Decimal");
                return;

            case "T:System.Boolean":
                writer.WriteReferenceLink(api, "Boolean");
                return;
            }

            // Remove 'T:'
            string name = api.Substring(2);

            // Strip System namespaces
            if (name.StartsWith("System."))
            {
                int idx = name.LastIndexOf('.');
                name = name.Substring(idx + 1);
            }

            writer.WriteReferenceLink(api, name);
        }
        // Attributes

        private void WriteAttribute(string reference, SyntaxWriter writer)
        {
            writer.WriteString("[<");
            writer.WriteReferenceLink(reference);
            writer.WriteString(">]");
            writer.WriteLine();
        }
Esempio n. 20
0
        private void WritePropertySyntax (XPathNavigator reflection, SyntaxWriter writer, string prefix) {

            bool set = (bool) reflection.Evaluate(propertyIsSettable);
            if (!set) return;

            string name = (string) reflection.Evaluate(nameExpression);
            string declaringType = (string) reflection.Evaluate(declaringTypeExpression);
            string propertyType = (string) reflection.Evaluate(propertyTypeExpression);

            bool isInnerProperty = (bool)reflection.Evaluate(propertyIsInnerProperty);

            writer.WriteStartBlock(Language);

            if (isInnerProperty) {

                // inner property logic

                writer.WriteString("<");
                writer.WriteString(prefix);
                writer.WriteString(":");
                writer.WriteReferenceLink(declaringType);
                writer.WriteString(">");

                writer.WriteLine();
                writer.WriteString("\t");

                writer.WriteString("<");
                writer.WriteString(name);
                writer.WriteString(">");
                if (String.IsNullOrEmpty(propertyType)) {
                    writer.WriteParameter("value");
                } else {
                    if (propertyType == "T:System.Boolean") {
                        writer.WriteString("True|False");
                    } else {
                        writer.WriteReferenceLink(propertyType);
                    }
                }
                writer.WriteString("</");
                writer.WriteString(name);
                writer.WriteString(">");

                writer.WriteLine();

                writer.WriteString("</");
                writer.WriteString(prefix);
                writer.WriteString(":");
                writer.WriteReferenceLink(declaringType);
                writer.WriteString(">");

            } else {

                // normal property logic

                writer.WriteString("<");
                writer.WriteString(prefix);
                writer.WriteString(":");
                writer.WriteReferenceLink(declaringType);
                writer.WriteString(" ");
                writer.WriteString(name);
                writer.WriteString("=\"");
                if (String.IsNullOrEmpty(propertyType)) {
                    writer.WriteParameter("value");
                } else {
                    if (propertyType == "T:System.Boolean") {
                        writer.WriteString("True|False");
                    } else {
                        writer.WriteReferenceLink(propertyType);
                    }
                }
                writer.WriteString("\" />");

            }

            writer.WriteEndBlock();

        }
		private void WriteNormalTypeReference (string reference, SyntaxWriter writer) {
			switch (reference) {
				case "T:System.Void":
					writer.WriteReferenceLink(reference, "void");
				break;
				case "T:System.Boolean":
					writer.WriteReferenceLink(reference, "boolean");
				break;
				case "T:System.Byte":
					writer.WriteReferenceLink(reference, "byte");
				break;
				case "T:System.Char":
					writer.WriteReferenceLink(reference, "char");
				break;
				case "T:System.Int16":
					writer.WriteReferenceLink(reference, "short");
				break;
				case "T:System.Int32":
					writer.WriteReferenceLink(reference, "int");
				break;
				case "T:System.Int64":
					writer.WriteReferenceLink(reference, "long");
				break;
				case "T:System.Single":
					writer.WriteReferenceLink(reference, "float");
				break;
				case "T:System.Double":
					writer.WriteReferenceLink(reference, "double");
				break;
				default:
					writer.WriteReferenceLink(reference);
				break;
			}
		}
Esempio n. 22
0
        private void ObjectElementUsageForClassStruct(XPathNavigator reflection, SyntaxWriter writer)
        {
            string typeName = (string)reflection.Evaluate(apiNameExpression);
            bool isGeneric = (bool)reflection.Evaluate(apiIsGenericExpression);
            string xamlBlockId = System.Enum.GetName(typeof(XamlHeadingID), XamlHeadingID.xamlObjectElementUsageHeading);

            string contentPropertyId = (string)reflection.Evaluate(contentPropertyIdExpression);
            if (contentPropertyId == "")
                contentPropertyId = (string)reflection.Evaluate(ancestorContentPropertyIdExpression);

            // start the syntax block
            writer.WriteStartSubBlock(xamlBlockId);

            writer.WriteString("<");
            if (isGeneric)
            {
                writer.WriteIdentifier(typeName);

                // for generic types show the type arguments
                XPathNodeIterator templates = (XPathNodeIterator)reflection.Evaluate(apiTemplatesExpression);
                if (templates.Count > 0)
                {
                    writer.WriteString(" x:TypeArguments=\"");
                    while (templates.MoveNext())
                    {
                        XPathNavigator template = templates.Current;
                        string name = template.GetAttribute("name", String.Empty);
                        writer.WriteString(name);
                        if (templates.CurrentPosition < templates.Count)
                            writer.WriteString(",");
                    }
                    writer.WriteString("\"");
                }
            }
            else
            {
                // for non-generic types just show the name
                writer.WriteIdentifier(typeName);
            }
            if (contentPropertyId == string.Empty)
            {
                writer.WriteString(" .../>");
            }
            else
            {
                // close the start tag
                writer.WriteString(">");

                // the inner xml of the Object Element syntax for a type with a content property
                // is a link to the content property
                writer.WriteLine();
                writer.WriteString("  ");
                writer.WriteReferenceLink(contentPropertyId);
                writer.WriteLine();

                // write the end tag
                writer.WriteString("</");
                writer.WriteIdentifier(typeName);
                writer.WriteString(">");
            }

            // end the sub block
            writer.WriteEndSubBlock();
        }
 private void WriteMemberReference (XPathNavigator member, SyntaxWriter writer) {
     string api = member.GetAttribute("api", String.Empty);
     writer.WriteReferenceLink(api);
 }
Esempio n. 24
0
        private void ObjectElementUsageForClassStruct(XPathNavigator reflection, SyntaxWriter writer)
        {
            string typeName    = (string)reflection.Evaluate(apiNameExpression);
            bool   isGeneric   = (bool)reflection.Evaluate(apiIsGenericExpression);
            string xamlBlockId = System.Enum.GetName(typeof(XamlHeadingID), XamlHeadingID.xamlObjectElementUsageHeading);

            string contentPropertyId = (string)reflection.Evaluate(contentPropertyIdExpression);

            if (String.IsNullOrEmpty(contentPropertyId))
            {
                contentPropertyId = (string)reflection.Evaluate(ancestorContentPropertyIdExpression);
            }

            // start the syntax block
            writer.WriteStartSubBlock(xamlBlockId);

            writer.WriteString("<");

            if (isGeneric)
            {
                writer.WriteIdentifier(typeName);

                // for generic types show the type arguments
                XPathNodeIterator templates = (XPathNodeIterator)reflection.Evaluate(apiTemplatesExpression);

                if (templates.Count > 0)
                {
                    writer.WriteString(" x:TypeArguments=\"");

                    while (templates.MoveNext())
                    {
                        XPathNavigator template = templates.Current;
                        string         name     = template.GetAttribute("name", String.Empty);
                        writer.WriteString(name);

                        if (templates.CurrentPosition < templates.Count)
                        {
                            writer.WriteString(",");
                        }
                    }

                    writer.WriteString("\"");
                }
            }
            else
            {
                // for non-generic types just show the name
                writer.WriteIdentifier(typeName);
            }

            if (String.IsNullOrEmpty(contentPropertyId))
            {
                writer.WriteString(" .../>");
            }
            else
            {
                // close the start tag
                writer.WriteString(">");

                // the inner xml of the Object Element syntax for a type with a content property
                // is a link to the content property
                writer.WriteLine();
                writer.WriteString("  ");
                writer.WriteReferenceLink(contentPropertyId);
                writer.WriteLine();

                // write the end tag
                writer.WriteString("</");
                writer.WriteIdentifier(typeName);
                writer.WriteString(">");
            }

            // end the sub block
            writer.WriteEndSubBlock();
        }
		private void WriteAttribute (string reference, SyntaxWriter writer, bool newline) {
			writer.WriteString("/** @attribute ");
			writer.WriteReferenceLink(reference);
			writer.WriteString(" */ ");
			if (newline) writer.WriteLine();
		}
Esempio n. 26
0
        private void WritePropertySyntax(XPathNavigator reflection, SyntaxWriter writer, string prefix)
        {
            bool set = (bool)reflection.Evaluate(propertyIsSettable);

            if (!set)
            {
                return;
            }

            string name          = (string)reflection.Evaluate(nameExpression);
            string declaringType = (string)reflection.Evaluate(declaringTypeExpression);
            string propertyType  = (string)reflection.Evaluate(propertyTypeExpression);

            bool isInnerProperty = (bool)reflection.Evaluate(propertyIsInnerProperty);

            writer.WriteStartBlock(Language);

            if (isInnerProperty)
            {
                // inner property logic

                writer.WriteString("<");
                writer.WriteString(prefix);
                writer.WriteString(":");
                writer.WriteReferenceLink(declaringType);
                writer.WriteString(">");

                writer.WriteLine();
                writer.WriteString("\t");

                writer.WriteString("<");
                writer.WriteString(name);
                writer.WriteString(">");
                if (String.IsNullOrEmpty(propertyType))
                {
                    writer.WriteParameter("value");
                }
                else
                {
                    if (propertyType == "T:System.Boolean")
                    {
                        writer.WriteString("True|False");
                    }
                    else
                    {
                        writer.WriteReferenceLink(propertyType);
                    }
                }
                writer.WriteString("</");
                writer.WriteString(name);
                writer.WriteString(">");

                writer.WriteLine();

                writer.WriteString("</");
                writer.WriteString(prefix);
                writer.WriteString(":");
                writer.WriteReferenceLink(declaringType);
                writer.WriteString(">");
            }
            else
            {
                // normal property logic

                writer.WriteString("<");
                writer.WriteString(prefix);
                writer.WriteString(":");
                writer.WriteReferenceLink(declaringType);
                writer.WriteString(" ");
                writer.WriteString(name);
                writer.WriteString("=\"");
                if (String.IsNullOrEmpty(propertyType))
                {
                    writer.WriteParameter("value");
                }
                else
                {
                    if (propertyType == "T:System.Boolean")
                    {
                        writer.WriteString("True|False");
                    }
                    else
                    {
                        writer.WriteReferenceLink(propertyType);
                    }
                }
                writer.WriteString("\" />");
            }

            writer.WriteEndBlock();
        }
		public override void WriteStructureSyntax (XPathNavigator reflection, SyntaxWriter writer) {

			if (IsUnsupportedGeneric(reflection, writer)) return;

			string name = (string) reflection.Evaluate(apiNameExpression);
			bool isSerializable = (bool) reflection.Evaluate(apiIsSerializableTypeExpression);

			if (isSerializable) WriteAttribute("T:System.SerializableAttribute", writer);
			WriteAttributes(reflection, writer);
			WriteVisibility(reflection, writer);
			writer.WriteString(" ");
			writer.WriteKeyword("final");
			writer.WriteString(" ");
			writer.WriteKeyword("class");
			writer.WriteString(" ");
			writer.WriteIdentifier(name);

			writer.WriteString(" ");
			writer.WriteKeyword("extends");
			writer.WriteString(" ");
			writer.WriteReferenceLink("T:System.ValueType");

			WriteImplementedInterfaces(reflection, writer);
		}
Esempio n. 28
0
        private static void WriteMemberReference(XPathNavigator member, SyntaxWriter writer)
        {
            string api = member.GetAttribute("api", String.Empty);

            writer.WriteReferenceLink(api);
        }
        /// <inheritdoc />
        protected override void WriteNormalTypeReference(string api, SyntaxWriter writer)
        {
            switch (api)
            {
            case "T:System.Boolean":
                writer.WriteReferenceLink(api, "boolean");
                break;

            case "T:System.Byte":
                writer.WriteReferenceLink(api, "byte");
                break;

            case "T:System.SByte":
                writer.WriteReferenceLink(api, "sbyte");
                break;

            case "T:System.Char":
                writer.WriteReferenceLink(api, "char");
                break;

            case "T:System.Int16":
                writer.WriteReferenceLink(api, "short");
                break;

            case "T:System.Int32":
                writer.WriteReferenceLink(api, "int");
                break;

            case "T:System.Int64":
                writer.WriteReferenceLink(api, "long");
                break;

            case "T:System.UInt16":
                writer.WriteReferenceLink(api, "ushort");
                break;

            case "T:System.UInt32":
                writer.WriteReferenceLink(api, "uint");
                break;

            case "T:System.UInt64":
                writer.WriteReferenceLink(api, "ulong");
                break;

            case "T:System.Single":
                writer.WriteReferenceLink(api, "float");
                break;

            case "T:System.Double":
                writer.WriteReferenceLink(api, "double");
                break;

            case "T:System.Decimal":
                writer.WriteReferenceLink(api, "decimal");
                break;

            default:
                writer.WriteReferenceLink(api);
                break;
            }
        }
        public override void WriteEventSyntax(XPathNavigator reflection, SyntaxWriter writer)
        {
            string name = (string)reflection.Evaluate(apiNameExpression);
            XPathNavigator handler = reflection.SelectSingleNode(apiHandlerOfEventExpression);
            XPathNavigator args = reflection.SelectSingleNode(apiEventArgsExpression);
            bool isVirtual = (bool)reflection.Evaluate(apiIsVirtualExpression) && !(bool)reflection.Evaluate(apiIsAbstractProcedureExpression);
            int iterations = isVirtual ? 2 : 1;

            for (int i = 0; i < iterations; i++)
            {
                WriteAttributes(reflection, writer);
                WriteVisibility(reflection, writer);
                if (isVirtual)
                    if (i == 0)
                    {
                        writer.WriteKeyword("abstract");
                        writer.WriteString(" ");
                    }
                    else
                    {
                        writer.WriteKeyword("override");
                        writer.WriteString(" ");
                    }
                else
                {
                    WriteMemberKeyword(reflection, writer);
                }
                writer.WriteIdentifier(name);
                writer.WriteString(" : ");
                writer.WriteReferenceLink("T:Microsoft.FSharp.Control.IEvent");

                writer.WriteString("<");
                WriteTypeReference(handler, writer);
                writer.WriteString(",");
                writer.WriteLine();
                writer.WriteString("    ");
                if (args == null)
                {
                    writer.WriteReferenceLink("T:System.EventArgs");
                }
                else
                {
                    WriteTypeReference(args, writer);
                }
                writer.WriteString(">");
                if (i == 0)
                    writer.WriteLine();
            }
        }
Esempio n. 31
0
 public virtual void WriteAttachedPropertySyntax(XPathNavigator reflection, SyntaxWriter writer)
 {
     string getterId = (string)reflection.Evaluate(attachedPropertyGetterExpression);
     string setterId = (string)reflection.Evaluate(attachedPropertySetterExpression);
     if (!string.IsNullOrEmpty(getterId))
     {
         writer.WriteString("See ");
         writer.WriteReferenceLink(getterId);
     }
     if (!string.IsNullOrEmpty(setterId))
     {
         if (!string.IsNullOrEmpty(getterId))
             writer.WriteString(", ");
         writer.WriteReferenceLink(setterId);
     }
 }
 // DONE
 private void WriteNormalTypeReference(string api, SyntaxWriter writer)
 {
     switch (api)
     {
         case "T:System.Void":
             writer.WriteReferenceLink(api, "unit");
             break;
         case "T:System.String":
             writer.WriteReferenceLink(api, "string");
             break;
         case "T:System.Boolean":
             writer.WriteReferenceLink(api, "bool");
             break;
         case "T:System.Byte":
             writer.WriteReferenceLink(api, "byte");
             break;
         case "T:System.SByte":
             writer.WriteReferenceLink(api, "sbyte");
             break;
         case "T:System.Char":
             writer.WriteReferenceLink(api, "char");
             break;
         case "T:System.Int16":
             writer.WriteReferenceLink(api, "int16");
             break;
         case "T:System.Int32":
             writer.WriteReferenceLink(api, "int");
             break;
         case "T:System.Int64":
             writer.WriteReferenceLink(api, "int64");
             break;
         case "T:System.UInt16":
             writer.WriteReferenceLink(api, "uint16");
             break;
         case "T:System.UInt32":
             writer.WriteReferenceLink(api, "uint32");
             break;
         case "T:System.UInt64":
             writer.WriteReferenceLink(api, "uint64");
             break;
         case "T:System.Single":
             writer.WriteReferenceLink(api, "float32");
             break;
         case "T:System.Double":
             writer.WriteReferenceLink(api, "float");
             break;
         case "T:System.Decimal":
             writer.WriteReferenceLink(api, "decimal");
             break;
         default:
             writer.WriteReferenceLink(api);
             break;
     }
 }
        private void WriteNormalTypeReference(string api, SyntaxWriter writer) {
            switch (api) {
                case "T:System.Byte":
                    writer.WriteReferenceLink(api, "Byte");
                    return;

                case "T:System.SByte":
                    writer.WriteReferenceLink(api, "SByte");
                    return;

                case "T:System.Char":
                    writer.WriteReferenceLink(api, "Char");
                    return;

                case "T:System.Int16":
                    writer.WriteReferenceLink(api, "Int16");
                    return;

                case "T:System.Int32":
                    writer.WriteReferenceLink(api, "Int32");
                    return;

                case "T:System.Int64":
                    writer.WriteReferenceLink(api, "Int64");
                    return;

                case "T:System.UInt16":
                    writer.WriteReferenceLink(api, "UInt16");
                    return;

                case "T:System.UInt32":
                    writer.WriteReferenceLink(api, "UInt32");
                    return;

                case "T:System.UInt64":
                    writer.WriteReferenceLink(api, "UInt64");
                    return;

                case "T:System.Single":
                    writer.WriteReferenceLink(api, "Single");
                    return;

                case "T:System.Double":
                    writer.WriteReferenceLink(api, "Double");
                    return;

                case "T:System.Decimal":
                    writer.WriteReferenceLink(api, "Decimal");
                    return;

                case "T:System.Boolean":
                    writer.WriteReferenceLink(api, "Boolean");
                    return;
            }

            // Remove 'T:'
            string name = api.Substring(2);

            // Strip System namespaces
            if (name.StartsWith("System.")) {
                int idx = name.LastIndexOf('.');
                name = name.Substring(idx + 1);
            }

            writer.WriteReferenceLink(api, name);
        }