]>
git.proxmox.com Git - mirror_qemu.git/blob - scripts/qapi/source.py
2 # QAPI frontend source file info
4 # Copyright (c) 2019 Red Hat Inc.
7 # Markus Armbruster <armbru@redhat.com>
9 # This work is licensed under the terms of the GNU GPL, version 2.
10 # See the COPYING file in the top-level directory.
14 from typing
import List
, Optional
, TypeVar
17 class QAPISchemaPragma
:
18 def __init__(self
) -> None:
19 # Are documentation comments required?
20 self
.doc_required
= False
21 # Whitelist of commands allowed to return a non-dictionary
22 self
.returns_whitelist
: List
[str] = []
23 # Whitelist of entities allowed to violate case conventions
24 self
.name_case_whitelist
: List
[str] = []
28 T
= TypeVar('T', bound
='QAPISourceInfo')
30 def __init__(self
, fname
: str, line
: int,
31 parent
: Optional
['QAPISourceInfo']):
35 self
.pragma
: QAPISchemaPragma
= (
36 parent
.pragma
if parent
else QAPISchemaPragma()
38 self
.defn_meta
: Optional
[str] = None
39 self
.defn_name
: Optional
[str] = None
41 def set_defn(self
, meta
: str, name
: str) -> None:
45 def next_line(self
: T
) -> T
:
46 info
= copy
.copy(self
)
51 if self
.fname
is None:
54 if self
.line
is not None:
55 ret
+= ':%d' % self
.line
58 def in_defn(self
) -> str:
60 return "%s: In %s '%s':\n" % (self
.fname
,
61 self
.defn_meta
, self
.defn_name
)
64 def include_path(self
) -> str:
68 ret
= 'In file included from %s:\n' % parent
.loc() + ret
69 parent
= parent
.parent
72 def __str__(self
) -> str:
73 return self
.include_path() + self
.in_defn() + self
.loc()