MCPcopy Create free account
hub / github.com/ElementsProject/lightning / Field

Class Field

tools/generate-wire.py:43–134  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

41
42# Class definitions, to keep things classy
43class Field(object):
44 def __init__(self, name, type_obj, extensions=[],
45 field_comments=[], optional=False):
46 self.name = name
47 self.type_obj = type_obj
48 self.count = 1
49 self.len_field_of = None
50 self.len_field = None
51 self.implicit_len = False
52
53 self.extension_names = extensions
54 self.is_optional = optional
55 self.field_comments = field_comments
56
57 def __deepcopy__(self, memo):
58 deepcopy_method = self.__deepcopy__
59 self.__deepcopy__ = None
60 field = copy.deepcopy(self, memo)
61 self.__deepcopy__ = deepcopy_method
62
63 field.type_obj = self.type_obj
64 return field
65
66 def add_count(self, count):
67 self.count = int(count)
68
69 def add_len_field(self, len_field):
70 self.count = False
71 # we cache our len-field's name
72 self.len_field = len_field.name
73 # the len-field caches our name
74 len_field.len_field_of = self.name
75
76 def add_implicit_len(self):
77 self.count = False
78 self.implicit_len = True
79
80 def is_array(self):
81 return self.count > 1
82
83 def is_varlen(self):
84 return not self.count
85
86 def is_implicit_len(self):
87 return self.implicit_len
88
89 def is_extension(self):
90 return bool(self.extension_names)
91
92 def size(self, implicit_expression=None):
93 if self.count:
94 return self.count
95 if self.len_field:
96 return self.len_field
97 assert self.is_implicit_len()
98 assert implicit_expression
99 return implicit_expression
100

Callers 1

add_data_fieldMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected