diff options
Diffstat (limited to 'engine-ocean/External/glew/auto/EGL-Registry/api/registry.rnc')
-rw-r--r-- | engine-ocean/External/glew/auto/EGL-Registry/api/registry.rnc | 270 |
1 files changed, 270 insertions, 0 deletions
diff --git a/engine-ocean/External/glew/auto/EGL-Registry/api/registry.rnc b/engine-ocean/External/glew/auto/EGL-Registry/api/registry.rnc new file mode 100644 index 0000000..be70668 --- /dev/null +++ b/engine-ocean/External/glew/auto/EGL-Registry/api/registry.rnc @@ -0,0 +1,270 @@ +# Copyright 2013-2020 The Khronos Group Inc. +# SPDX-License-Identifier: Apache-2.0 + +# Relax NG schema for Khronos Registry XML +# See https://www.github.com/KhronosGroup/EGL-Registry +# +# Last modified 2017/02/03 +# This definition is subject to change (mostly in the form of additions) + +namespace xsd = "http://www.w3.org/2001/XMLSchema-datatypes" + +# Toplevel is a <registry> tag. +# May be led by an optional <comment> tag containing e.g. copyrights. +start = element registry { + ( + element comment { text } ? | + Types * | + Groups * | + Enums * | + Commands * | + Feature * | + Extensions * + ) * +} + +# <types> defines a group of types +Types = element types { + Type * +} + +# <type> defines a single type. It is usually a C typedef but +# may contain arbitrary C code. +# name - name of this type, if not present in the <name> tag +# api - matches a <feature> api attribute, if present +# requires - name of another type definition required by this one +# type - "group", if present, indicating a group of values in the +# corresponding <enums> definition. +# comment - unused +# <apientry /> - substitutes for an APIENTRY-style macro on output +# <name> - contains typename +Type = element type { + attribute api { text } ? , + attribute requires { text } ? , + attribute name { TypeName } ? , + attribute type { text } ? , + Comment ? , + text , + element apientry { text } ? , + text , + element name { TypeName } ? , + text +} + +# <groups> defines a group of enum groups +Groups = element groups { + Group * +} + +# <group> defines a single enum group. Enums may +# be in multiple groups. +# name - group name +# comment - unused +# <enum name=""> - members of the group + +Group = element group { + Name , + Comment ? , + element enum { Name } * +} + +# <enums> defines a group of enumerants +# namespace - identifies a numeric namespace +# group - identifies a functional subset of the namespace - same as <group name=""> +# start, end - beginning and end of a numeric range in the namespace +# vendor - owner of the numeric range +# type - "bitmask", if present +# comment - unused +Enums = element enums { + attribute namespace { text } ? , + attribute group { text } ? , + attribute type { text } ? , + attribute start { Integer } ? , + attribute end { Integer } ? , + Vendor ? , + Comment ? , + (Enum | Unused) * +} +# <enum> defines a single enumerant +# value - integer (including hex) value of the enumerant +# api - matches a <feature> api attribute, if present +# type - "u" (unsigned), "ull" (uint64), or integer if not present +# name - enumerant name +# alias - another enumerant this is semantically identical to +# comment - unused +Enum = element enum { + ( + attribute value { Integer } & + attribute api { text } ? & + attribute type { TypeSuffix } ? & + attribute name { text } & + attribute alias { text } ? & + Comment ? + ) +} +# <unused> defines a range of enumerants not currently being used +# start, end - beginning and end of an unused numeric range +# vendor - unused +# comment - unused +Unused = element unused { + attribute start { Integer } , + attribute end { Integer } ? , + Vendor ? , + Comment ? +} +# <commands> defines a group of commands +# namespace - identifies a function namespace +Commands = element commands { + attribute namespace { text } ? , + Command * +} +# <command> defines a single command +# <proto> is the C function prototype, including the return type +# <param> are function parameters, in order +# <ptype> is a <type> name, if present +# <name> is the function / parameter name +# The textual contents of <proto> and <param> should be legal C +# for those parts of a function declaration. +# <alias> - denotes function aliasing +# name - name of aliased function +# <vecequiv> - denotes scalar / vector function equivalence +# name - name of corresponding vector form, e.g. (glColor3f -> glColor3fv) +# <glx> - information about GLX protocol +# type - "render", "single", or "vendor" for GLXRender, GLXSingle, GLXVendorPrivate{WithReply} +# opcode - numeric opcode of specified type for this function +# name - if present, protocol name (defaults to command name) +# comment - unused +Command = element command { + Comment ? , + element proto { + attribute group { text } ? , + text , + element ptype { TypeName } ? , + text , + element name { text } , + text + } , + element param { + attribute group { text } ? , + attribute len { text } ? , + text , + element ptype { TypeName } ? , + text , + element name { text } , + text + } * , + ( + element alias { + Name + } ? & + element vecequiv { + Name + } ? & + element glx { + attribute type { text } , + attribute opcode { xsd:integer } , + Name ? , + Comment ? + } * + ) +} +# Each <feature> defines the interface of an API version (e.g. OpenGL 1.2) +# api - API tag (e.g. 'gl', 'gles2', etc. - used internally, not +# neccessarily an actual API name +# name - version name (C preprocessor name, e.g. GL_VERSION_4_2) +# number - version number, e.g. 4.2 +# protect - additional #ifdef symbol to place around the feature +# <require> / <remove> contains features to require or remove in +# this version +# profile - only require/remove when generated profile matches +# comment - unused +Feature = element feature { + attribute api { text } , + Name , + attribute number { xsd:float } , + attribute protect { text } ?, + Comment ? , + ( + element require { + ProfileName ? , + Comment ? , + InterfaceElement * + } | + element remove { + ProfileName ? , + Comment ? , + InterfaceElement * + } + ) * +} +Extensions = element extensions { + Extension * +} +# Defines the interface of an API <extension>. Like a <feature> +# tag, but with a slightly different api attribute. +# api - regexp pattern matching one or more API tags, indicating +# which APIs the extension is known to work with. The only +# syntax supported is <name>{|<name>}* and each name must +# exactly match an API being generated (implicit ^$ surrounding). +# In addition, <require> / <remove> tags also support an +# api attribute: +# api - only require/remove these features for the matching API. +# Not a regular expression. +Extension = element extension { + Name , + attribute protect { text } ?, + attribute supported { StringGroup } ? , + Comment ? , + ( + element require { + attribute api { text } ? , + ProfileName ? , + Comment ? , + InterfaceElement * + } | + element remove { + attribute api { text } ? , + ProfileName ? , + Comment ? , + InterfaceElement * + } + ) * +} +# Contents of a <require> / <remove> tag, defining a group +# of features to require or remove. +# <type> / <enum> / <command> all have attributes +# name - feature name which must match +InterfaceElement = + element type { + Name , + Comment ? + } | + element enum { + Name , + Comment ? + } | + element command { + Name , + Comment ? + } + +# Integers are allowed to be either decimal or C-hex (0x[0-9A-F]+), but +# XML Schema types don't seem to support hex notation, so we use this +# as a placeholder. +Integer = text + +# TypeName is an argument/return value C type name +TypeName = text + +# TypeSuffix is a C numeric type suffix, e.g. 'u' or 'ull' +TypeSuffix = text + +# StringGroup is a regular expression with an implicit +# '^(' and ')$' bracketing it. +StringGroup = text + +# Repeatedly used attributes +ProfileName = attribute profile { text } +Vendor = attribute vendor { text } +Comment = attribute comment { text } +Name = attribute name { text } |