summaryrefslogtreecommitdiff
path: root/thirdparty/vulkan/registry/conventions.py
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/vulkan/registry/conventions.py')
-rwxr-xr-xthirdparty/vulkan/registry/conventions.py132
1 files changed, 132 insertions, 0 deletions
diff --git a/thirdparty/vulkan/registry/conventions.py b/thirdparty/vulkan/registry/conventions.py
new file mode 100755
index 0000000000..b37a494b34
--- /dev/null
+++ b/thirdparty/vulkan/registry/conventions.py
@@ -0,0 +1,132 @@
+#!/usr/bin/python3 -i
+#
+# Copyright (c) 2013-2019 The Khronos Group Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Base class for working-group-specific style conventions,
+# used in generation.
+
+from abc import ABCMeta, abstractmethod
+
+ABC = ABCMeta('ABC', (object,), {})
+
+class ConventionsBase(ABC):
+ """WG-specific conventions."""
+
+ @abstractmethod
+ def formatExtension(self, name):
+ """Mark up a name as an extension for the spec."""
+ raise NotImplementedError
+
+ @property
+ @abstractmethod
+ def null(self):
+ """Preferred spelling of NULL."""
+ raise NotImplementedError
+
+ def makeProseList(self, elements, connective='and'):
+ """Make a (comma-separated) list for use in prose.
+
+ Adds a connective (by default, 'and')
+ before the last element if there are more than 1.
+
+ Override with a different method or different call to
+ _implMakeProseList if you want to add a comma for two elements,
+ or not use a serial comma.
+ """
+ return self._implMakeProseList(elements, connective)
+
+ @property
+ def struct_macro(self):
+ """Get the appropriate format macro for a structure.
+
+ May override.
+ """
+ return 'sname:'
+
+ def makeStructName(self, name):
+ """Prepend the appropriate format macro for a structure to a structure type name.
+
+ Uses struct_macro, so just override that if you want to change behavior.
+ """
+ return self.struct_macro + name
+
+ @property
+ def external_macro(self):
+ """Get the appropriate format macro for an external type like uint32_t.
+
+ May override.
+ """
+ return 'basetype:'
+
+ def makeExternalTypeName(self, name):
+ """Prepend the appropriate format macro for an external type like uint32_t to a type name.
+
+ Uses external_macro, so just override that if you want to change behavior.
+ """
+ return self.external_macro + name
+
+ def _implMakeProseList(self, elements, connective, comma_for_two_elts=False, serial_comma=True):
+ """Internal-use implementation to make a (comma-separated) list for use in prose.
+
+ Adds a connective (by default, 'and')
+ before the last element if there are more than 1,
+ and only includes commas if there are more than 2
+ (if comma_for_two_elts is False).
+
+ Don't edit these defaults, override self.makeProseList().
+ """
+ assert(serial_comma) # didn't implement what we didn't need
+ my_elts = list(elements)
+ if len(my_elts) > 1:
+ my_elts[-1] = '{} {}'.format(connective, my_elts[-1])
+
+ if not comma_for_two_elts and len(my_elts) <= 2:
+ return ' '.join(my_elts)
+ return ', '.join(my_elts)
+
+ @property
+ @abstractmethod
+ def file_suffix(self):
+ """Return suffix of generated Asciidoctor files"""
+ raise NotImplementedError
+
+ @abstractmethod
+ def api_name(self, spectype = None):
+ """Return API name"""
+ raise NotImplementedError
+
+ @property
+ @abstractmethod
+ def api_prefix(self):
+ """Return API token prefix"""
+ raise NotImplementedError
+
+ @property
+ @abstractmethod
+ def api_version_prefix(self):
+ """Return API core version token prefix"""
+ raise NotImplementedError
+
+ @property
+ @abstractmethod
+ def KHR_prefix(self):
+ """Return extension name prefix for KHR extensions"""
+ raise NotImplementedError
+
+ @property
+ @abstractmethod
+ def EXT_prefix(self):
+ """Return extension name prefix for EXT extensions"""
+ raise NotImplementedError