]> Git Repo - qemu.git/blob - scripts/qapi/source.py
Merge remote-tracking branch 'remotes/philmd-gitlab/tags/fw_cfg-20200721' into staging
[qemu.git] / scripts / qapi / source.py
1 #
2 # QAPI frontend source file info
3 #
4 # Copyright (c) 2019 Red Hat Inc.
5 #
6 # Authors:
7 #  Markus Armbruster <[email protected]>
8 #
9 # This work is licensed under the terms of the GNU GPL, version 2.
10 # See the COPYING file in the top-level directory.
11
12 import copy
13 import sys
14
15
16 class QAPISchemaPragma:
17     def __init__(self):
18         # Are documentation comments required?
19         self.doc_required = False
20         # Whitelist of commands allowed to return a non-dictionary
21         self.returns_whitelist = []
22         # Whitelist of entities allowed to violate case conventions
23         self.name_case_whitelist = []
24
25
26 class QAPISourceInfo:
27     def __init__(self, fname, line, parent):
28         self.fname = fname
29         self.line = line
30         self.parent = parent
31         self.pragma = parent.pragma if parent else QAPISchemaPragma()
32         self.defn_meta = None
33         self.defn_name = None
34
35     def set_defn(self, meta, name):
36         self.defn_meta = meta
37         self.defn_name = name
38
39     def next_line(self):
40         info = copy.copy(self)
41         info.line += 1
42         return info
43
44     def loc(self):
45         if self.fname is None:
46             return sys.argv[0]
47         ret = self.fname
48         if self.line is not None:
49             ret += ':%d' % self.line
50         return ret
51
52     def in_defn(self):
53         if self.defn_name:
54             return "%s: In %s '%s':\n" % (self.fname,
55                                           self.defn_meta, self.defn_name)
56         return ''
57
58     def include_path(self):
59         ret = ''
60         parent = self.parent
61         while parent:
62             ret = 'In file included from %s:\n' % parent.loc() + ret
63             parent = parent.parent
64         return ret
65
66     def __str__(self):
67         return self.include_path() + self.in_defn() + self.loc()
This page took 0.028705 seconds and 4 git commands to generate.