Ejemplo n.º 1
0
        //===========================================================================================
        private void AddParameterAttributes(XElement complexType, ParameterInfo[] parameters, string[] requiredParameters)
        {
            foreach (var parameter in from parameter in parameters
                     let typeName = _GraphicsMagickNET.GetXsdAttributeType(parameter)
                                    where typeName != null
                                    orderby parameter.Name
                                    select new
            {
                Name = parameter.Name,
                TypeName = typeName,
                IsRequired = requiredParameters.Contains(parameter.Name)
            })
            {
                XElement attribute = new XElement(_Namespace + "attribute",
                                                  new XAttribute("name", parameter.Name));

                if (parameter.IsRequired)
                {
                    attribute.Add(new XAttribute("use", "required"));
                }

                attribute.Add(new XAttribute("type", parameter.TypeName));

                complexType.Add(attribute);
            }
        }
Ejemplo n.º 2
0
        //===========================================================================================
        private void WriteAttributeForEach(IndentedTextWriter writer, ParameterInfo[] allParameters)
        {
            ParameterInfo[] parameters = allParameters.Where(p => _GraphicsMagickNET.GetXsdAttributeType(p) != null).ToArray();
            if (parameters.Length == 0)
            {
                return;
            }

            parameters = parameters.OrderBy(p => p.Name).ToArray();

            writer.WriteLine("for each(XmlAttribute^ attribute in element->Attributes)");
            WriteStartColon(writer);

            if (parameters.DistinctBy(p => _GraphicsMagickNET.GetCppTypeName(p)).Count() == 1)
            {
                writer.Write("arguments[attribute->Name] = _Variables->GetValue<");
                writer.Write(_GraphicsMagickNET.GetCppTypeName(parameters[0]));
                writer.WriteLine(">(attribute);");
            }
            else
            {
                for (int i = 0; i < parameters.Length; i++)
                {
                    string xsdName = _GraphicsMagickNET.GetXsdName(parameters[i]);

                    if (i > 0)
                    {
                        writer.Write("else ");
                    }

                    writer.Write("if (attribute->Name == \"");
                    writer.Write(xsdName);
                    writer.WriteLine("\")");
                    writer.Indent++;
                    writer.Write("arguments[\"");
                    writer.Write(xsdName);
                    writer.Write("\"] = ");
                    WriteGetAttributeValue(writer, _GraphicsMagickNET.GetCppTypeName(parameters[i]), xsdName);
                    writer.Indent--;
                }
            }

            WriteEndColon(writer);
        }