Exemple #1
0
        public Enum(Namespace parentNamespace, XmlBindings.Enum xmlData, Overrides.XmlBindings.Enum overrides, Dictionary <string, QualifiableType> typeDictionary, OutputDataTypes outputDataTypes)
        {
            m_stylizedName = Formatter.Prefix + Formatter.StylizeNameFromUnderscoreSeparators(xmlData.Name);

            if (parentNamespace != null)
            {
                m_rawName = parentNamespace.ApiName + "_" + xmlData.Name;
                typeDictionary[parentNamespace.RawName + "::" + xmlData.Name] = this;
            }
            else
            {
                //
                // Namespace of NULL indicates the global namespace.
                // These types aren't D2D types, and their full native name is
                // exactly what's in the name field (no need to prepend anything).
                //
                m_rawName = xmlData.Name;
                typeDictionary[xmlData.Name] = this;
            }

            m_isFlags = xmlData.IsFlags;

            m_enumValues = new List <EnumValue>();
            foreach (XmlBindings.EnumValue valueXml in xmlData.EnumValues)
            {
                Overrides.XmlBindings.EnumValue overridesEnumValue = null;
                if (overrides != null)
                {
                    overridesEnumValue = overrides.Values.Find(x => x.Name == valueXml.Name);
                }

                m_enumValues.Add(new EnumValue(valueXml, m_rawName, overridesEnumValue));
            }

            bool shouldProject = false;

            if (overrides != null)
            {
                shouldProject = overrides.ShouldProject;

                if (overrides.ProjectedNameOverride != null)
                {
                    m_stylizedName = Formatter.Prefix + overrides.ProjectedNameOverride;
                }
            }

            // One of the XML files has a mistake where it doesn't properly order its enums.
            if (m_isFlags)
            {
                m_enumValues.Sort(new EnumValueComparer());
            }

            // Enums in the global namespace are defined as aliases only. By convention, only enums in a namespace are output.
            if (parentNamespace != null && shouldProject)
            {
                outputDataTypes.AddEnum(this);
            }
        }
Exemple #2
0
        public EnumValue(XmlBindings.EnumValue xmlData, Overrides.XmlBindings.EnumValue overrides)
        {
            m_nativeName    = xmlData.Name;
            m_stylizedName  = Formatter.StylizeNameFromUnderscoreSeparators(xmlData.Name);
            m_shouldProject = true;

            if (overrides != null)
            {
                if (overrides.ProjectedNameOverride != null)
                {
                    m_stylizedName = overrides.ProjectedNameOverride;
                }

                m_shouldProject = overrides.ShouldProject;
            }

            m_valueExpression = GetValueExpression(xmlData);
        }
Exemple #3
0
        public EnumValue(XmlBindings.EnumValue xmlData, string containingEnumName, Overrides.XmlBindings.EnumValue overrides)
        {
            m_rawNameComponent = xmlData.Name;
            m_nativeName       = containingEnumName + "_" + m_rawNameComponent;
            m_stylizedName     = Formatter.StylizeNameFromUnderscoreSeparators(xmlData.Name);
            m_shouldProject    = true;
            m_valueExpression  = GetValueExpression(xmlData);

            if (overrides != null)
            {
                if (overrides.ProjectedNameOverride != null)
                {
                    m_stylizedName = overrides.ProjectedNameOverride;
                }

                if (overrides.ProjectedValueOverride != null)
                {
                    m_valueExpression = overrides.ProjectedValueOverride;
                }

                m_shouldProject = overrides.ShouldProject;
            }
        }