• R/O
  • SSH

Commit

Tags
Keine Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2


Commit MetaInfo

Revision517c45ea7939e13d06dd9722b8ccda4f4bd60b1f (tree)
Zeit2023-01-16 08:23:20
AutorAlbert Mietus < albert AT mietus DOT nl >
CommiterAlbert Mietus < albert AT mietus DOT nl >

Log Message

ASIS: Busy with move base/Event/Protocol from IPython into ...

Ändern Zusammenfassung

Diff

diff -r c199f4632d17 -r 517c45ea7939 castle/writers/CC2Cpy/CCbase.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/castle/writers/CC2Cpy/CCbase.py Mon Jan 16 00:23:20 2023 +0100
@@ -0,0 +1,15 @@
1+# (C) Albert Mietus, 2022, 2023. Part of Castle/CCastle project
2+
3+from typing import TypeAlias
4+from dataclasses import dataclass
5+
6+
7+fstring: TypeAlias=str # a Fix (sized) string. May be inplemented as a C-string, a Pascal-string, or ...
8+
9+class CC_Base: pass
10+
11+@dataclass
12+class CC_TypedParameter:
13+ """This is many a helper class/struct to combine a parameter: a name and an type"""
14+ name: fstring
15+ type: type
diff -r c199f4632d17 -r 517c45ea7939 castle/writers/CC2Cpy/Event.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/castle/writers/CC2Cpy/Event.py Mon Jan 16 00:23:20 2023 +0100
@@ -0,0 +1,16 @@
1+# (C) Albert Mietus, 2022, 2023. Part of Castle/CCastle project
2+
3+from .CCbase import *
4+from dataclasses import dataclass, KW_ONLY
5+from collections.abc import Sequence # Use for typing
6+
7+@dataclass
8+class CC_Event:
9+ """An event is like a (remote) function-call
10+
11+ It has a name, a return-type (can be void), and a sequence of typed parameters."""
12+
13+ name: fstring
14+ _: KW_ONLY # The field below must be passed as keywords, when initialising
15+ return_type: type=None
16+ typedParameters: Sequence[CC_TypedParameter]=() ## A tuple `()` is inmutable
diff -r c199f4632d17 -r 517c45ea7939 castle/writers/CC2Cpy/Protocol.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/castle/writers/CC2Cpy/Protocol.py Mon Jan 16 00:23:20 2023 +0100
@@ -0,0 +1,2 @@
1+# (C) Albert Mietus, 2022, 2023. Part of Castle/CCastle project
2+
diff -r c199f4632d17 -r 517c45ea7939 castle/writers/CC2Cpy/__init__.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/castle/writers/CC2Cpy/__init__.py Mon Jan 16 00:23:20 2023 +0100
@@ -0,0 +1,2 @@
1+# (C) Albert Mietus, 2022, 2023. Part of Castle/CCastle project
2+
diff -r c199f4632d17 -r 517c45ea7939 pytst/writers/CC2Cpy/test_0.py
--- a/pytst/writers/CC2Cpy/test_0.py Mon Jan 16 00:21:19 2023 +0100
+++ b/pytst/writers/CC2Cpy/test_0.py Mon Jan 16 00:23:20 2023 +0100
@@ -1,8 +1,8 @@
11 # (C) Albert Mietus, 2022, 2023. Part of Castle/CCastle project
22
3-from . import *
3+from . import * # CCompare
44
5-from castle.writers.CC2Cpy import *
5+from castle.writers.CC2Cpy.CCbase import * # Some generic types
66
77 LOG_ALL=True
88
@@ -26,3 +26,7 @@
2626 assert CCompare(abc,abc, log=True , log_all=False)
2727 assert CCompare(abc,abc, log=True, log_all=True)
2828
29+def test_5_base():
30+ # IMPORT the file will do mostly, but ...
31+ tp = CC_TypedParameter('test', int)
32+ assert tp.type is int
diff -r c199f4632d17 -r 517c45ea7939 pytst/writers/CC2Cpy/test_1_Event.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pytst/writers/CC2Cpy/test_1_Event.py Mon Jan 16 00:23:20 2023 +0100
@@ -0,0 +1,22 @@
1+# (C) Albert Mietus, 2022, 2023. Part of Castle/CCastle project
2+
3+from . import * # CCompare
4+
5+from castle.writers.CC2Cpy.Event import * #CC_Event
6+
7+def test_0_Event_empty():
8+ e = CC_Event("leeg_event")
9+ assert e.name == 'leeg_event'
10+ assert e.return_type is None
11+ assert len(e.typedParameters) == 0
12+
13+def test_1_Event_small():
14+ e = CC_Event("demo_int", typedParameters=[CC_TypedParameter(name='p1', type=float )])
15+ assert e.return_type is None
16+ assert len(e.typedParameters) == 1
17+ assert e.typedParameters[0].name == 'p1'
18+ assert e.typedParameters[0].type == float
19+
20+def test_1_Event_retunInt():
21+ e = CC_Event("an_event", return_type=int)
22+ assert e.return_type == int
diff -r c199f4632d17 -r 517c45ea7939 pytst/writers/CC2Cpy/test_2_Protocol.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pytst/writers/CC2Cpy/test_2_Protocol.py Mon Jan 16 00:23:20 2023 +0100
@@ -0,0 +1,45 @@
1+# (C) Albert Mietus, 2022, 2023. Part of Castle/CCastle project
2+
3+from . import * # CCompare
4+
5+from castle.writers.CC2Cpy.Protocol import * #CC_EventProtocol
6+
7+ref_DemoProtocol="""
8+struct CC_B_Protocol cc_P_DEMO = {
9+ .name = "DEMO",
10+ .kind = CC_B_ProtocolKindIs_Event,
11+ .inherit_from = &cc_P_Protocol,
12+ .length = 6,
13+ .events = {
14+ { .seqNo = 0, .name = "demoEventA", .part_of = &cc_P_DEMO },
15+ { .seqNo = 1, .name = "demoEventB", .part_of = &cc_P_DEMO },
16+ { .seqNo = 2, .name = "demoEventC", .part_of = &cc_P_DEMO },
17+ { .seqNo = 3, .name = "demoEventD", .part_of = &cc_P_DEMO },
18+ { .seqNo = 4, .name = "demoEventE", .part_of = &cc_P_DEMO },
19+ { .seqNo = 5, .name = "demoEventF", .part_of = &cc_P_DEMO },
20+ }
21+};
22+
23+#define CC_P_DEMO_demoEventA 0
24+#define CC_P_DEMO_demoEventB 1
25+#define CC_P_DEMO_demoEventC 2
26+#define CC_P_DEMO_demoEventD 3
27+#define CC_P_DEMO_demoEventE 4
28+#define CC_P_DEMO_demoEventF 5
29+
30+typedef void (*CC_E_DEMO_demoEventA_FT)(CC_selfType, CC_ComponentType, );
31+typedef void (*CC_E_DEMO_demoEventB_FT)(CC_selfType, CC_ComponentType, );
32+typedef void (*CC_E_DEMO_demoEventC_FT)(CC_selfType, CC_ComponentType, );
33+typedef void (*CC_E_DEMO_demoEventD_FT)(CC_selfType, CC_ComponentType, );
34+typedef void (*CC_E_DEMO_demoEventE_FT)(CC_selfType, CC_ComponentType, );
35+typedef void (*CC_E_DEMO_demoEventF_FT)(CC_selfType, CC_ComponentType, );
36+"""
37+
38+##qazProtocol = CC_EventProtocol("QAZ",
39+## events=[
40+## CC_Event("qazEventA"),
41+## CC_Event("qazEventB"),
42+## CC_Event("qazEventC"),
43+## CC_Event("qazEventD"),
44+## CC_Event("qazEventE"),
45+## CC_Event("qazEventF"),