16 "title" :
"OSC Message",
17 "description" :
"An OSC message.",
40 for (
unsigned int i = 0; i < o->dataCount; ++i)
41 json_object_put(o->data[i]);
68 memcpy(o->data, data,
sizeof(
struct json_object *) * o->dataCount);
69 memcpy(o->dataTypes, dataTypes,
sizeof(
VuoOscType) * o->dataCount);
94 if (json_object_object_get_ex(js,
"address", &o))
97 unsigned int dataCount = 0;
100 if (json_object_object_get_ex(js,
"data", &o))
102 dataCount = json_object_array_length(o);
103 for (
unsigned int i = 0; i < dataCount; ++i)
107 if (json_object_object_get_ex(di,
"type", &v))
109 if (json_object_object_get_ex(di,
"data", &v))
110 data[i] = json_object_get(v);
129 json_object_object_add(js,
"address", json_object_new_string(value->address));
131 if (value->dataCount)
133 struct json_object *data = json_object_new_array();
134 for (
unsigned int i = 0; i < value->dataCount; ++i)
138 json_object_object_add(v,
"data", json_object_get(value->data[i]));
139 json_object_array_add(data, v);
141 json_object_object_add(js,
"data", data);
154 return strdup(
"No message");
156 int dataCount = value->dataCount;
157 char *data[dataCount];
160 for (
int i = 0; i < dataCount; ++i)
163 switch (json_object_get_type(o))
166 data[i] = strdup(
"null");
168 case json_type_boolean:
169 data[i] = strdup(json_object_get_boolean(o) ?
"true" :
"false");
171 case json_type_double:
173 double v = json_object_get_double(o);
179 long long v = json_object_get_int64(o);
183 case json_type_string:
184 data[i] = strdup(json_object_get_string(o));
187 data[i] = strdup(
"?");
193 for (
int i = 0; i < dataCount; ++i)
194 dataSize += strlen(data[i]);
196 dataSize += (dataCount - 1) * strlen(
", ");
199 char *compositeData = (
char *)malloc(dataSize);
200 compositeData[0] = 0;
201 for (
int i = 0; i < dataCount; ++i)
204 strlcat(compositeData,
", ", dataSize);
205 strlcat(compositeData, data[i], dataSize);
208 char *valueAsString =
VuoText_format(
"%s<br>[ %s ]", value->address, compositeData);
211 for (
int i = 0; i < dataCount; ++i)
214 return valueAsString;