]> git.proxmox.com Git - mirror_edk2.git/blob - AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/member.py
EmbeddedPkg: Extend NvVarStoreFormattedLib LIBRARY_CLASS
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Tools / framer / framer / member.py
1 from framer import template
2 from framer.util import cstring, unindent
3
4 T_SHORT = "T_SHORT"
5 T_INT = "T_INT"
6 T_LONG = "T_LONG"
7 T_FLOAT = "T_FLOAT"
8 T_DOUBLE = "T_DOUBLE"
9 T_STRING = "T_STRING"
10 T_OBJECT = "T_OBJECT"
11 T_CHAR = "T_CHAR"
12 T_BYTE = "T_BYTE"
13 T_UBYTE = "T_UBYTE"
14 T_UINT = "T_UINT"
15 T_ULONG = "T_ULONG"
16 T_STRING_INPLACE = "T_STRING_INPLACE"
17 T_OBJECT_EX = "T_OBJECT_EX"
18
19 RO = READONLY = "READONLY"
20 READ_RESTRICTED = "READ_RESTRICTED"
21 WRITE_RESTRICTED = "WRITE_RESTRICTED"
22 RESTRICT = "RESTRICTED"
23
24 c2t = {"int" : T_INT,
25 "unsigned int" : T_UINT,
26 "long" : T_LONG,
27 "unsigned long" : T_LONG,
28 "float" : T_FLOAT,
29 "double" : T_DOUBLE,
30 "char *" : T_CHAR,
31 "PyObject *" : T_OBJECT,
32 }
33
34 class member(object):
35
36 def __init__(self, cname=None, type=None, flags=None, doc=None):
37 self.type = type
38 self.flags = flags
39 self.cname = cname
40 self.doc = doc
41 self.name = None
42 self.struct = None
43
44 def register(self, name, struct):
45 self.name = name
46 self.struct = struct
47 self.initvars()
48
49 def initvars(self):
50 v = self.vars = {}
51 v["PythonName"] = self.name
52 if self.cname is not None:
53 v["CName"] = self.cname
54 else:
55 v["CName"] = self.name
56 v["Flags"] = self.flags or "0"
57 v["Type"] = self.get_type()
58 if self.doc is not None:
59 v["Docstring"] = cstring(unindent(self.doc))
60 v["StructName"] = self.struct.name
61
62 def get_type(self):
63 """Deduce type code from struct specification if not defined"""
64 if self.type is not None:
65 return self.type
66 ctype = self.struct.get_type(self.name)
67 return c2t[ctype]
68
69 def dump(self, f):
70 if self.doc is None:
71 print >> f, template.memberdef_def % self.vars
72 else:
73 print >> f, template.memberdef_def_doc % self.vars