import new_message, new_bundle from require 'losc' import opairs from require 'alv.util' import T, Array, Struct from require 'alv.base' Message = require 'losc.message' Bundle = require 'losc.bundle' Timetag = require 'losc.timetag' add_item = (message, type, val, use_arrays=false) -> switch type.__class when Array message\add '[' if use_arrays for i=1,type.size add_item message, type.type, val[i], use_arrays message\add ']' if use_arrays when Struct message\add '[' if use_arrays for key, subtype in opairs type.types message\add 's', key add_item message, subtype, val[key], use_arrays message\add ']' if use_arrays else ts = switch type when T.num then 'f' when T.str, T.sym then 's' when T.bool if val then 'T' else 'F' when T.bang 'I' else error "unknown primitive type" message\add ts, val { :new_message :new_bundle :add_item :Message :Bundle :Timetag }