Vuo
2.4.4
Loading...
Searching...
No Matches
node
vuo.data
VuoData.c
Go to the documentation of this file.
1
10
#include "
VuoData.h
"
11
#include "
VuoBase64.h
"
12
14
#ifdef VUO_COMPILER
15
VuoModuleMetadata
({
16
"title"
:
"Binary Data"
,
17
"description"
:
"A blob of 8-bit binary data."
,
18
"keywords"
: [ ],
19
"version"
:
"1.0.0"
,
20
"dependencies"
: [
21
"VuoBase64"
,
22
"VuoText"
23
]
24
});
25
#endif
27
33
VuoData
VuoData_makeFromJson
(json_object *js)
34
{
35
VuoData
value = {0, NULL};
36
37
if
(json_object_get_type(js) != json_type_string)
38
return
value;
39
40
value.
data
=
VuoBase64_decode
(json_object_get_string(js), &value.
size
);
41
VuoRegister
(value.
data
, free);
42
return
value;
43
}
44
48
json_object *
VuoData_getJson
(
const
VuoData
value)
49
{
50
if
(!value.
data
)
51
return
NULL;
52
53
char
*encoded =
VuoBase64_encode
(value.
size
, value.
data
);
54
json_object *js = json_object_new_string(encoded);
55
free(encoded);
56
return
js;
57
}
58
62
bool
VuoData_areEqual
(
const
VuoData
valueA,
const
VuoData
valueB)
63
{
64
if
(valueA.
size
!= valueB.
size
)
65
return
false
;
66
67
if
(!valueA.
data
|| !valueB.
data
)
68
return
(!valueA.
data
&& !valueB.
data
);
69
70
return
memcmp(valueA.
data
, valueB.
data
, valueA.
size
) == 0;
71
}
72
76
bool
VuoData_isLessThan
(
const
VuoData
valueA,
const
VuoData
valueB)
77
{
78
// Treat null data as greater than non-null data,
79
// so the more useful non-null data sorts to the beginning of the list.
80
if
(!valueA.
data
|| !valueB.
data
)
81
return
valueA.
data
&& !valueB.
data
;
82
83
int
prefixCmp = memcmp(valueA.
data
, valueB.
data
,
MIN
(valueA.
size
, valueB.
size
));
84
if
(!prefixCmp)
85
return
(valueA.
size
< valueB.
size
);
86
else
87
return
(prefixCmp < 0);
88
}
89
93
char
*
VuoData_getSummary
(
const
VuoData
value)
94
{
95
if
(value.
data
)
96
return
VuoText_format
(
"%lld byte%s of data"
, value.
size
, value.
size
== 1 ?
""
:
"s"
);
97
else
98
return
strdup(
"no data"
);
99
}
100
108
VuoData
VuoData_make
(
VuoInteger
size,
unsigned
char
*data)
109
{
110
VuoData
value;
111
value.
size
= size;
112
value.
data
= (
char
*)data;
113
114
if
(data)
115
VuoRegister
(value.
data
, free);
116
117
return
value;
118
}
119
125
VuoData
VuoData_makeFromText
(
const
VuoText
text)
126
{
127
VuoData
value;
128
value.
size
= strlen(text);
129
value.
data
= (
char
*)malloc(value.
size
);
130
memcpy(value.
data
, text, value.
size
);
131
VuoRegister
(value.
data
, free);
132
return
value;
133
}
134
140
char
*
VuoData_copyToString
(
const
VuoData
data)
141
{
142
char
*dataAsString = (
char
*)malloc(data.
size
+ 1);
143
dataAsString[data.
size
] = 0;
144
memcpy(dataAsString, data.
data
, data.
size
);
145
return
dataAsString;
146
}
147
152
void
VuoData_retain
(
VuoData
value)
153
{
154
VuoRetain
(value.
data
);
155
}
156
161
void
VuoData_release
(
VuoData
value)
162
{
163
VuoRelease
(value.
data
);
164
}
Generated on Thu Nov 9 2023 16:59:30 for Vuo by
1.9.8