1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import new_message from require 'losc'
import opairs from require 'alv.util'
import T, Array, Struct from require 'alv.base'
add_item = (message, type, val) ->
switch type.__class
when Array
-- message\add '['
for i=1,type.size
add_item message, type.type, val[i]
-- message\add ']'
when Struct
-- message\add '['
for key, subtype in opairs type.types
-- message\add '['
message\add 's', key
add_item message, subtype, val[key]
-- message\add ']'
-- message\add ']'
else
ts = switch type
when T.num then 'f'
when T.str, T.sym then 's'
when T.bool, T.bang
if val then 'T' else 'F'
else
error "unknown primitive type"
message\add ts, val
{
:new_message
:add_item
}
|