private CppElement ParseElement()

in SharpGen.Platform/CppParser.cs [924:947]


        private CppElement ParseElement(XElement xElement)
        {
            switch (xElement.Name.LocalName)
            {
                case CastXml.TagEnumeration:
                    return ParseEnum(xElement);
                case CastXml.TagFunction:
                    // TODO: Find better criteria for exclusion. In CastXML extern="1" only indicates an explicit external storage modifier.
                    // For now, exclude inline functions instead; may not be sensible since by default all functions have external linkage.
                    if (xElement.AttributeValue("inline") == null)
                        return ParseFunction(xElement);
                    break;
                case CastXml.TagClass:
                case CastXml.TagStruct:
                    return xElement.AttributeValue("abstract") != null ? (CppElement)ParseInterface(xElement) : ParseStructOrUnion(xElement);
                case CastXml.TagUnion:
                    return ParseStructOrUnion(xElement);
                case CastXml.TagVariable:
                    if (xElement.AttributeValue("init") != null)
                        return ParseVariable(xElement);
                    break;
            }
            return null;
        }