Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2
修订版 | d22f407e5f75b5591604b63f161b20ccf0e9c5e2 (tree) |
---|---|
时间 | 2024-03-20 06:03:47 |
作者 | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
ASIS: TESTDOUBLES::sieve as puml
@@ -0,0 +1,21 @@ | ||
1 | +@startuml | |
2 | + | |
3 | + | |
4 | +package Classes <<Cloud>> { | |
5 | +class ComponentInterface | |
6 | +} | |
7 | + | |
8 | + | |
9 | + | |
10 | +'SieveMoat = ComponentInterface(name=ID("Sieve"), | |
11 | +' ports=( | |
12 | +' Port(name='try', direction=PortDirection.In, type=protocols.SimpleSieve), | |
13 | +' Port(name='coprime', direction=PortDirection.Out, type=protocols.SimpleSieve), | |
14 | +' )) | |
15 | +object SieveMoat { | |
16 | + name = "Sieve" | |
17 | + ports = [try, coprime] | |
18 | +} | |
19 | +ComponentInterface <|-- SieveMoat | |
20 | + | |
21 | +@enduml |
@@ -0,0 +1,43 @@ | ||
1 | +@startuml | |
2 | + | |
3 | +package Classes <<Cloud>> { | |
4 | +class NameSpace | |
5 | +class Source_NS | |
6 | +NameSpace <|- Source_NS | |
7 | +} | |
8 | + | |
9 | +package NameSpaces <<Node>> { | |
10 | +object top { | |
11 | + name="The Sieve" | |
12 | +} | |
13 | +object start_sieve | |
14 | +object slow_start | |
15 | +object simple_sieve | |
16 | +object base | |
17 | +} | |
18 | + | |
19 | +package "Sieve Protocols" { | |
20 | + object StartSieve | |
21 | + object SlowStart | |
22 | + object SlowStart_1 | |
23 | + SlowStart <|.. SlowStart_1 | |
24 | + object SimpleSieve | |
25 | +} | |
26 | +start_sieve o.. base : register | |
27 | +slow_start o.. base : register | |
28 | +simple_sieve o.. base : register | |
29 | + | |
30 | + | |
31 | +start_sieve o.. StartSieve : register | |
32 | + | |
33 | +slow_start o.. SlowStart_1 : register | |
34 | +simple_sieve o.. slow_start : register | |
35 | + | |
36 | +simple_sieve o.. SimpleSieve : register | |
37 | + | |
38 | +top o.. start_sieve : register | |
39 | +top o.. slow_start : register | |
40 | +top o.. simple_sieve : register | |
41 | +top o.. base : register | |
42 | + | |
43 | +@enduml |
@@ -0,0 +1,53 @@ | ||
1 | +@startuml | |
2 | + | |
3 | + | |
4 | +package Classes <<Cloud>> { | |
5 | +class EventProtocol | |
6 | +class Specialise | |
7 | +EventProtocol <|- Specialise | |
8 | +} | |
9 | + | |
10 | +'StartSieve = EventProtocol(ID('StartSieve'), | |
11 | +' events=( | |
12 | +' Event(name=ID('runTo'), return_type=None, typedParameters=(TypedParameter(name='max', type=int),)), | |
13 | +' Event(name=ID('newMax'), return_type=None, typedParameters=(TypedParameter(name='max', type=int),)))) | |
14 | +object StartSieve { | |
15 | + events = [runTo, newMax] | |
16 | +} | |
17 | +EventProtocol <--- StartSieve | |
18 | + | |
19 | + | |
20 | +'SlowStart = EventProtocol(ID('SlowStart'), | |
21 | +' typedParameters=(TypedParameter(name='queue_max', type=int),), | |
22 | +' events=( | |
23 | +' Event(name=ID('setMax'), return_type=None, typedParameters=(TypedParameter(name='queue_max', type=int),)),)) | |
24 | +object SlowStart { | |
25 | + typedParameters = (queue_max :int,) | |
26 | + events = [setMax] | |
27 | +} | |
28 | +EventProtocol <--- SlowStart | |
29 | + | |
30 | + | |
31 | +'SlowStart_1 = Specialise(ID("SlowStart_1"), | |
32 | +' based_on=SlowStart, | |
33 | +' #OR: arguments=(Argument(name=queue_max, value=1),)) | |
34 | +' arguments=(Argument(value=1),)) | |
35 | +object SlowStart_1 { | |
36 | + based_on = SlowStart | |
37 | + arguments = (queue_max=1) | |
38 | +} | |
39 | +Specialise <-- SlowStart_1 | |
40 | +SlowStart <|- SlowStart_1 | |
41 | + | |
42 | +'SimpleSieve = EventProtocol(ID('SimpleSieve'), | |
43 | +' based_on=SlowStart_1, | |
44 | +' events=( | |
45 | +' Event(name=ID('input'), return_type=None, typedParameters=(TypedParameter(name='try', type=int),)),)) | |
46 | +object SimpleSieve { | |
47 | + based_on = SlowStart_1 | |
48 | + events = [input] | |
49 | +} | |
50 | +EventProtocol <--- SimpleSieve | |
51 | +SlowStart_1 <|- SimpleSieve | |
52 | + | |
53 | +@enduml |