1 | import { Writer as $Writer } from 'protobufjs/minimal';
|
2 | import { encode as encodeBitset } from '@statechart/scpb-bitset';
|
3 | import {
|
4 | state as stateTypes,
|
5 | transition as transitionTypes,
|
6 | expression as expressionTypes,
|
7 | } from './types';
|
8 |
|
9 | export default function encodeDocument(message, writer) {
|
10 | if (!writer)
|
11 | writer = $Writer.create();
|
12 | if (message.name != null && message.hasOwnProperty("name"))
|
13 | writer.uint32(10).string(message.name);
|
14 | var states = message.states || [];
|
15 | var stateSize = states.length;
|
16 | var transitions = message.transitions || [];
|
17 | var transitionSize = transitions.length;
|
18 | if (states.length)
|
19 | for (let i = 0; i < states.length; ++i)
|
20 | encodeState(states[i], writer.uint32(18).fork(), stateSize, transitionSize).ldelim();
|
21 | if (transitions.length)
|
22 | for (let i = 0; i < transitions.length; ++i)
|
23 | encodeTransition(transitions[i], writer.uint32(26).fork(), stateSize, transitionSize).ldelim();
|
24 | if (message.datamodel != null && message.hasOwnProperty("datamodel"))
|
25 | writer.uint32(34).string(message.datamodel);
|
26 | if (message.meta != null && message.hasOwnProperty("meta"))
|
27 | for (let keys = Object.keys(message.meta), i = 0; i < keys.length; ++i)
|
28 | writer.uint32(42).fork().uint32(10).string(keys[i]).uint32(18).string(message.meta[keys[i]]).ldelim();
|
29 | return writer;
|
30 | }
|
31 |
|
32 | function encodeState(message, writer, stateSize, transitionSize) {
|
33 | if (!writer)
|
34 | writer = $Writer.create();
|
35 | if (message.type != null && message.hasOwnProperty("type"))
|
36 | writer.uint32(8).uint32(stateTypes.indexOf(message.type));
|
37 | if (message.idx != null && message.hasOwnProperty("idx"))
|
38 | writer.uint32(16).uint32(message.idx);
|
39 | if (message.id != null && message.hasOwnProperty("id"))
|
40 | writer.uint32(26).string(message.id);
|
41 | if (message.onEnter != null && message.onEnter.length)
|
42 | for (let i = 0; i < message.onEnter.length; ++i)
|
43 | encodeExpression(message.onEnter[i], writer.uint32(34).fork()).ldelim();
|
44 | if (message.onExit != null && message.onExit.length)
|
45 | for (let i = 0; i < message.onExit.length; ++i)
|
46 | encodeExpression(message.onExit[i], writer.uint32(42).fork()).ldelim();
|
47 | if (message.invocations != null && message.invocations.length)
|
48 | for (let i = 0; i < message.invocations.length; ++i)
|
49 | encodeInvocation(message.invocations[i], writer.uint32(50).fork()).ldelim();
|
50 | if (message.data != null && message.data.length)
|
51 | for (let i = 0; i < message.data.length; ++i)
|
52 | encodeData(message.data[i], writer.uint32(58).fork()).ldelim();
|
53 | if (message.parent != null && message.hasOwnProperty("parent"))
|
54 | writer.uint32(64).uint32(message.parent);
|
55 | if (message.children != null && message.hasOwnProperty("children"))
|
56 | writer.uint32(74).bytes(encodeBitset(message.children, stateSize));
|
57 | if (message.ancestors != null && message.hasOwnProperty("ancestors"))
|
58 | writer.uint32(82).bytes(encodeBitset(message.ancestors, stateSize));
|
59 | if (message.completion != null && message.hasOwnProperty("completion"))
|
60 | writer.uint32(90).bytes(encodeBitset(message.completion, stateSize));
|
61 | if (message.transitions != null && message.hasOwnProperty("transitions"))
|
62 | writer.uint32(98).bytes(encodeBitset(message.transitions, transitionSize));
|
63 | if (message.hasHistory != null && message.hasOwnProperty("hasHistory"))
|
64 | writer.uint32(104).bool(message.hasHistory);
|
65 | return writer;
|
66 | }
|
67 |
|
68 | function encodeTransition(message, writer, stateSize, transitionSize) {
|
69 | if (!writer)
|
70 | writer = $Writer.create();
|
71 | if (message.type != null && message.hasOwnProperty("type"))
|
72 | writer.uint32(8).uint32(transitionTypes.indexOf(message.type));
|
73 | if (message.idx != null && message.hasOwnProperty("idx"))
|
74 | writer.uint32(16).uint32(message.idx);
|
75 | if (message.source != null && message.hasOwnProperty("source"))
|
76 | writer.uint32(24).uint32(message.source);
|
77 | if (message.events != null && message.events.length)
|
78 | for (let i = 0; i < message.events.length; ++i)
|
79 | writer.uint32(34).string(message.events[i]);
|
80 | if (message.condition != null && message.hasOwnProperty("condition"))
|
81 | encodeExpression(message.condition, writer.uint32(42).fork()).ldelim();
|
82 | if (message.onTransition != null && message.onTransition.length)
|
83 | for (let i = 0; i < message.onTransition.length; ++i)
|
84 | encodeExpression(message.onTransition[i], writer.uint32(50).fork()).ldelim();
|
85 | if (message.targets != null && message.hasOwnProperty("targets"))
|
86 | writer.uint32(58).bytes(encodeBitset(message.targets, stateSize));
|
87 | if (message.conflicts != null && message.hasOwnProperty("conflicts"))
|
88 | writer.uint32(66).bytes(encodeBitset(message.conflicts, transitionSize));
|
89 | if (message.exits != null && message.hasOwnProperty("exits"))
|
90 | writer.uint32(74).bytes(encodeBitset(message.exits, stateSize));
|
91 | return writer;
|
92 | }
|
93 |
|
94 | function encodeExpression(message, writer) {
|
95 | if (!writer)
|
96 | writer = $Writer.create();
|
97 | if (message.type != null && message.hasOwnProperty("type"))
|
98 | writer.uint32(8).uint32(expressionTypes.indexOf(message.type));
|
99 | if (message.value != null && message.hasOwnProperty("value"))
|
100 | writer.uint32(18).string(message.value);
|
101 | if (message.props != null && message.hasOwnProperty("props"))
|
102 | for (let keys = Object.keys(message.props), i = 0; i < keys.length; ++i) {
|
103 | let value = message.props[keys[i]];
|
104 | if (value == null) continue;
|
105 | writer.uint32(26).fork().uint32(10).string(keys[i]);
|
106 | encodeExpression(value, writer.uint32(18).fork()).ldelim().ldelim();
|
107 | }
|
108 | if (message.children != null && message.children.length)
|
109 | for (let i = 0; i < message.children.length; ++i)
|
110 | encodeExpression(message.children[i], writer.uint32(34).fork()).ldelim();
|
111 | return writer;
|
112 | }
|
113 |
|
114 | function encodeInvocation(message, writer) {
|
115 | if (!writer)
|
116 | writer = $Writer.create();
|
117 | if (message.type != null && message.hasOwnProperty("type"))
|
118 | encodeExpression(message.type, writer.uint32(10).fork()).ldelim();
|
119 | if (message.src != null && message.hasOwnProperty("src"))
|
120 | encodeExpression(message.src, writer.uint32(18).fork()).ldelim();
|
121 | if (message.id != null && message.hasOwnProperty("id"))
|
122 | encodeExpression(message.id, writer.uint32(26).fork()).ldelim();
|
123 | if (message.params != null && message.params.length)
|
124 | for (let i = 0; i < message.params.length; ++i)
|
125 | encodeExpression(message.params[i], writer.uint32(34).fork()).ldelim();
|
126 | if (message.content != null && message.hasOwnProperty("content"))
|
127 | encodeExpression(message.content, writer.uint32(42).fork()).ldelim();
|
128 | if (message.onExit != null && message.onExit.length)
|
129 | for (let i = 0; i < message.onExit.length; ++i)
|
130 | encodeExpression(message.onExit[i], writer.uint32(50).fork()).ldelim();
|
131 | if (message.autoforward != null && message.hasOwnProperty("autoforward"))
|
132 | writer.uint32(56).bool(message.autoforward);
|
133 | return writer;
|
134 | }
|
135 |
|
136 | function encodeData(message, writer) {
|
137 | if (!writer)
|
138 | writer = $Writer.create();
|
139 | if (message.id != null && message.hasOwnProperty("id"))
|
140 | writer.uint32(10).string(message.id);
|
141 | if (message.value != null && message.hasOwnProperty("value"))
|
142 | encodeExpression(message.value, writer.uint32(18).fork()).ldelim();
|
143 | if (message.src != null && message.hasOwnProperty("src"))
|
144 | writer.uint32(26).string(message.src);
|
145 | return writer;
|
146 | }
|