12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #
- # QAPI frontend source file info
- #
- # Copyright (c) 2019 Red Hat Inc.
- #
- # Authors:
- # Markus Armbruster <armbru@redhat.com>
- #
- # This work is licensed under the terms of the GNU GPL, version 2.
- # See the COPYING file in the top-level directory.
- import copy
- import sys
- class QAPISchemaPragma(object):
- def __init__(self):
- # Are documentation comments required?
- self.doc_required = False
- # Whitelist of commands allowed to return a non-dictionary
- self.returns_whitelist = []
- # Whitelist of entities allowed to violate case conventions
- self.name_case_whitelist = []
- class QAPISourceInfo(object):
- def __init__(self, fname, line, parent):
- self.fname = fname
- self.line = line
- self.parent = parent
- self.pragma = parent.pragma if parent else QAPISchemaPragma()
- self.defn_meta = None
- self.defn_name = None
- def set_defn(self, meta, name):
- self.defn_meta = meta
- self.defn_name = name
- def next_line(self):
- info = copy.copy(self)
- info.line += 1
- return info
- def loc(self):
- if self.fname is None:
- return sys.argv[0]
- ret = self.fname
- if self.line is not None:
- ret += ':%d' % self.line
- return ret
- def in_defn(self):
- if self.defn_name:
- return "%s: In %s '%s':\n" % (self.fname,
- self.defn_meta, self.defn_name)
- return ''
- def include_path(self):
- ret = ''
- parent = self.parent
- while parent:
- ret = 'In file included from %s:\n' % parent.loc() + ret
- parent = parent.parent
- return ret
- def __str__(self):
- return self.include_path() + self.in_defn() + self.loc()
|