diff options
author | Jon Leech <[email protected]> | 2019-03-20 02:20:31 -0700 |
---|---|---|
committer | Jon Leech <[email protected]> | 2019-03-22 18:02:36 -0700 |
commit | 71be0a4302045876c788c942ec86d177735eeea7 (patch) | |
tree | 07c7507dae32ae532e685110aa420d484d790eb2 /registry/conventions.py | |
parent | 16a43fcfe42dc8c7565754b1df5d575b540a876a (diff) | |
download | Vulkan-Headers-71be0a4302045876c788c942ec86d177735eeea7.tar.gz Vulkan-Headers-71be0a4302045876c788c942ec86d177735eeea7.zip |
Update for Vulkan-Docs 1.1.105
Diffstat (limited to 'registry/conventions.py')
-rw-r--r-- | registry/conventions.py | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/registry/conventions.py b/registry/conventions.py new file mode 100644 index 0000000..7c0ac9f --- /dev/null +++ b/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 ABC, abstractmethod + + +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 + + @property + @abstractmethod + def api_name(self): + """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 |