Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2
Revisión | 1ac340d435c98f4d18738783f4ddae17c5ef5d57 (tree) |
---|---|
Tiempo | 2023-01-28 23:06:47 |
Autor | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
asis
@@ -77,40 +77,42 @@ | ||
77 | 77 | var_name = f'cc_P_{self.name}' |
78 | 78 | based_on_link = f'&cc_P_{self.based_on.name}' if self.based_on else "NULL" |
79 | 79 | |
80 | - retval = "" | |
81 | - retval += f'{prepent}struct CC_B_Protocol {var_name} = {{\n' | |
82 | - retval += f'{prepent}{indent}.name = "{self.name}",\n' | |
83 | - retval += f'{prepent}{indent}.kind = CC_B_ProtocolKindIs_{self.kind.name},\n' | |
84 | - retval += f'{prepent}{indent}.inherit_from = {based_on_link},\n' | |
85 | - retval += f'{prepent}{indent}.length = {len(self.events)},\n' | |
80 | + retval = [] | |
81 | + retval.append(f'{prepent}struct CC_B_Protocol {var_name} = {{') | |
82 | + retval.append(f'{prepent}{indent}.name = "{self.name}",') | |
83 | + retval.append(f'{prepent}{indent}.kind = CC_B_ProtocolKindIs_{self.kind.name},') | |
84 | + retval.append(f'{prepent}{indent}.inherit_from = {based_on_link},') | |
85 | + retval.append(f'{prepent}{indent}.length = {len(self.events)},') | |
86 | 86 | |
87 | 87 | ## For now, loop over the events here ... |
88 | - retval += f'{prepent}{indent}.events = {{\n' | |
88 | + lineval = [] | |
89 | + lineval.append(f'{prepent}{indent}.events = {{') | |
89 | 90 | for n, e in enumerate(self.events, len(self.event_dict(inherired=True,mine=False))): |
90 | - retval += f'{prepent}{indent*2}{{' | |
91 | - retval += f' .seqNo = {n}, ' | |
92 | - retval += f' .name = "{e.name}", ' | |
93 | - retval += f' .part_of = &{var_name} ' | |
94 | - retval += "},\n" | |
95 | - retval += f'{prepent}{indent*2}}}\n' | |
91 | + lineval.append(f'{prepent}{indent*2}{{') # pragma: no mutate | |
92 | + lineval.append(f' .seqNo = {n}, ') | |
93 | + lineval.append(f' .name = "{e.name}", ') | |
94 | + lineval.append(f' .part_of = &{var_name} ') | |
95 | + lineval.append("},\n") | |
96 | + lineval.append(f'{prepent}{indent*2}}}') | |
96 | 97 | |
97 | - retval += f'{prepent}}};\n' # end of struct | |
98 | - return retval | |
98 | + retval.append("".join(lineval)) | |
99 | + retval.append(f'{prepent}}};\n') # end of struct | |
100 | + return '\n'.join(retval) +"\n" | |
99 | 101 | |
100 | 102 | def render_indexes(self, prepent:str="", indent=" ") ->str: ## #define CC_P_<proto>_<event> index |
101 | 103 | ## For now, loop over the events here ... |
102 | - retval = "" | |
104 | + retval = [] | |
103 | 105 | for n, e in enumerate(self.events, len(self.event_dict(inherired=True,mine=False))): |
104 | - retval +=f'#define CC_P_{self.name}_{e.name}\t{n}\n' | |
105 | - return retval | |
106 | + retval.append(f'#define CC_P_{self.name}_{e.name}\t{n}\n') | |
107 | + return '\n'.join(retval)+"\n" | |
106 | 108 | |
107 | 109 | |
108 | 110 | def render_FTs(self, prepent:str="", indent=" ") ->str: ##typedef void (*CC_E_{...}_FT)(CC_selfType, CC_ComponentType, {...}); |
109 | 111 | type_name = lambda ptype : ptype if isinstance(ptype, str) else ptype.__name__ |
110 | 112 | |
111 | - retval = "" | |
113 | + retval = [] | |
112 | 114 | for e in self.events: |
113 | 115 | types =" , ".join(f'{type_name(parm.type)}' for parm in e.typedParameters) |
114 | - retval += f'typedef void (*CC_E_{self.name}_{e.name}_FT)(CC_selfType, CC_ComponentType, {types});\n' | |
115 | - return retval | |
116 | + retval.append( f'typedef void (*CC_E_{self.name}_{e.name}_FT)(CC_selfType, CC_ComponentType, {types});') | |
117 | + return '\n'.join(retval)+"\n" | |
116 | 118 |