Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2
修訂 | ef8e21a1d01e06ea2d0c9e2c93fbde909dd39c59 (tree) |
---|---|
時間 | 2023-10-06 23:03:43 |
作者 | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
Refacrored RPy-templated: split into subdirs
@@ -1,15 +0,0 @@ | ||
1 | -{#- (C) Albert Mietus, 2023. Part of Castle/CCastle project -#} | |
2 | - | |
3 | -{# See:: http://docideas.mietus.nl/en/default/CCastle/3.Design/B.Workshop/rPY/8.RPY_Jinja.html #} | |
4 | - | |
5 | - | |
6 | -{%macro ProtocolName(ProtoName) -%} | |
7 | - cc_P_{{ProtoName}} | |
8 | -{%- endmacro %} | |
9 | - | |
10 | -{%macro EventIndexName(ProtoName, EventName) -%} | |
11 | - CC_P_{{ProtoName}}_{{EventName}} | |
12 | -{%- endmacro %} | |
13 | - | |
14 | - | |
15 | - |
@@ -1,18 +0,0 @@ | ||
1 | -{#- (C) Albert Mietus, 2023. Part of Castle/CCastle project -#} | |
2 | -{% import "CastleMacros.jinja2" as m %} | |
3 | - | |
4 | -{# parameters: | |
5 | -- ``events`` : PTH.Sequence[aigr.Event] | |
6 | -- ``protocol``: aigr.EventProtocol | |
7 | -#} | |
8 | - | |
9 | -{# Note: the caller (:file:`protocol.jinja2` will loop over the sequence of protocols. | |
10 | - Or, should we do it here? #} | |
11 | -## | |
12 | -## EventIndexes (All {{events|length}} events of {{protocol.name}}) | |
13 | -## | |
14 | - | |
15 | -{% for e in events %} | |
16 | - {{- m.EventIndexName(protocol.name, e.name) }} = {{ protocol.eventIndex(e)}} | |
17 | -{% endfor %} | |
18 | - |
@@ -1,36 +0,0 @@ | ||
1 | -{# (C) Albert Mietus, 2023. Part of Castle/CCastle project #} | |
2 | - | |
3 | -{# parameters: ``protocols``: PTH.Sequence[aigr.EventProtocol] | |
4 | -#} | |
5 | - | |
6 | -{%- import "CastleMacros.jinja2" as m -%} | |
7 | - | |
8 | -{%- macro Str_or_Type(t) -%} | |
9 | - {%- if t is string -%} | |
10 | - "{{t}}" | |
11 | - {%- else -%} | |
12 | - {{t.__name__}} | |
13 | - {%- endif -%} | |
14 | -{%- endmacro -%} | |
15 | - | |
16 | -{%- for proto in protocols %} | |
17 | - {{- m.ProtocolName(proto.name) }} = buildin.CC_B_Protocol(name="{{ proto.name }}", | |
18 | - {% if proto.typedParameters %} | |
19 | - parameters=( | |
20 | - {% for parm in proto.typedParameters %} | |
21 | - ('{{ parm.name}}', {{ Str_or_Type(parm.type) }}), | |
22 | - {% endfor %} | |
23 | - ), {#- XXX ToDo: parms: tuple, namedType, strings, ... (see event -- use macro?) #} | |
24 | - | |
25 | - {% endif %} | |
26 | - kind=buildin.{{proto.kind}}, | |
27 | - inherit_from={{m.ProtocolName(proto.based_on.name)}}, | |
28 | - events=[]) | |
29 | - | |
30 | - {% for e in proto.events %} | |
31 | - {{- m.ProtocolName(proto.name) }}.events.append(buildin.CC_B_P_EventID(name="{{- e.name -}}", | |
32 | - seqNo={{- m.EventIndexName(proto.name, e.name) }}, | |
33 | - part_of={{ m.ProtocolName(proto.name) }})) | |
34 | - {% endfor %} {#- event #} | |
35 | - | |
36 | -{% endfor %} {#- protocols #} |
@@ -0,0 +1,15 @@ | ||
1 | +{#- (C) Albert Mietus, 2023. Part of Castle/CCastle project -#} | |
2 | + | |
3 | +{# See:: http://docideas.mietus.nl/en/default/CCastle/3.Design/B.Workshop/rPY/8.RPY_Jinja.html #} | |
4 | + | |
5 | + | |
6 | +{%macro ProtocolName(ProtoName) -%} | |
7 | + cc_P_{{ProtoName}} | |
8 | +{%- endmacro %} | |
9 | + | |
10 | +{%macro EventIndexName(ProtoName, EventName) -%} | |
11 | + CC_P_{{ProtoName}}_{{EventName}} | |
12 | +{%- endmacro %} | |
13 | + | |
14 | + | |
15 | + |
@@ -0,0 +1,36 @@ | ||
1 | +{# (C) Albert Mietus, 2023. Part of Castle/CCastle project #} | |
2 | + | |
3 | +{# parameters: ``protocols``: PTH.Sequence[aigr.EventProtocol] | |
4 | +#} | |
5 | +{% import 'macros/CastleMacros.jinja2' as m %} | |
6 | +{#------------------------------------------#} | |
7 | + | |
8 | +{%- macro Str_or_Type(t) -%} | |
9 | + {%- if t is string -%} | |
10 | + "{{t}}" | |
11 | + {%- else -%} | |
12 | + {{t.__name__}} | |
13 | + {%- endif -%} | |
14 | +{%- endmacro -%} | |
15 | + | |
16 | +{%- for proto in protocols %} | |
17 | + {{- m.ProtocolName(proto.name) }} = buildin.CC_B_Protocol(name="{{ proto.name }}", | |
18 | + {% if proto.typedParameters %} | |
19 | + parameters=( | |
20 | + {% for parm in proto.typedParameters %} | |
21 | + ('{{ parm.name}}', {{ Str_or_Type(parm.type) }}), | |
22 | + {% endfor %} | |
23 | + ), {#- XXX ToDo: parms: tuple, namedType, strings, ... (see event -- use macro?) #} | |
24 | + | |
25 | + {% endif %} | |
26 | + kind=buildin.{{proto.kind}}, | |
27 | + inherit_from={{m.ProtocolName(proto.based_on.name)}}, | |
28 | + events=[]) | |
29 | + | |
30 | + {% for e in proto.events %} | |
31 | + {{- m.ProtocolName(proto.name) }}.events.append(buildin.CC_B_P_EventID(name="{{- e.name -}}", | |
32 | + seqNo={{- m.EventIndexName(proto.name, e.name) }}, | |
33 | + part_of={{ m.ProtocolName(proto.name) }})) | |
34 | + {% endfor %} {#- event #} | |
35 | + | |
36 | +{% endfor %} {#- protocols #} |
@@ -0,0 +1,18 @@ | ||
1 | +{#- (C) Albert Mietus, 2023. Part of Castle/CCastle project -#} | |
2 | +{% import 'macros/CastleMacros.jinja2' as m %} | |
3 | + | |
4 | +{# parameters: | |
5 | +- ``events`` : PTH.Sequence[aigr.Event] | |
6 | +- ``protocol``: aigr.EventProtocol | |
7 | +#} | |
8 | + | |
9 | +{# Note: the caller (:file:`protocol.jinja2` will loop over the sequence of protocols. | |
10 | + Or, should we do it here? #} | |
11 | +## | |
12 | +## EventIndexes (All {{events|length}} events of {{protocol.name}}) | |
13 | +## | |
14 | + | |
15 | +{% for e in events %} | |
16 | + {{- m.EventIndexName(protocol.name, e.name) }} = {{ protocol.eventIndex(e)}} | |
17 | +{% endfor %} | |
18 | + |
@@ -1,7 +1,5 @@ | ||
1 | 1 | {% include '_header.jinja2' %} |
2 | 2 | {#--------------------------#} |
3 | -{% import 'CastleMacros.jinja2' as m1 %} | |
4 | -{#------------------------------------#} | |
5 | 3 | |
6 | 4 | |
7 | 5 | {# These imports are static #} |
@@ -18,10 +16,10 @@ | ||
18 | 16 | {% block EventIndexes %} |
19 | 17 | {% for protocol in protocols %} |
20 | 18 | {% set events = protocol.events %} |
21 | - {% include 'EventIndexes.jinja2' %} | |
19 | + {% include 'parts/protocol_EventIndexes.jinja2' %} | |
22 | 20 | {% endfor %} |
23 | 21 | {% endblock %} |
24 | 22 | |
25 | 23 | {% block ProtocolDataStructures %} |
26 | -{% include 'ProtocolDataStructures.jinja2' %} | |
24 | +{% include 'parts/protocol_DataStructures.jinja2' %} | |
27 | 25 | {% endblock %} |