/
value.c
85 lines (68 loc) · 1.55 KB
/
value.c
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// Value methods.
#include "co.h"
static inline coValue valueCreate(
coValtype valtype)
{
coValue value = coValueAlloc();
coValueSetType(value, valtype);
return value;
}
// Create an integer value.
coValue coIntValueCreate(
int64 val)
{
coValue value = valueCreate(CO_INT);
coValueSetIntVal(value, val);
return value;
}
// Create a string value.
coValue coStringValueCreate(
utSym val)
{
coValue value = valueCreate(CO_STRING);
coString string = coStringAlloc();
char *s = utSymGetName(val);
coStringSetValue(string, s, strlen(s) + 1);
coValueSetStringVal(value, string);
return value;
}
// Create a floating point value.
coValue coFloatValueCreate(
double val)
{
coValue value = valueCreate(CO_FLOAT);
coValueSetFloatVal(value, val);
return value;
}
// Create a Boolean point value.
coValue coBoolValueCreate(
bool val)
{
coValue value = valueCreate(CO_BOOL);
coValueSetBoolVal(value, val);
return value;
}
// Create an entry value.
coValue coEntryValueCreate(
utSym val)
{
coValue value = valueCreate(CO_IDENT);
coValueSetNameVal(value, val);
return value;
}
// Create a tuple value from an array of values.
coValue coTupleValueCreate(
coValueArray vals)
{
coValue value = valueCreate(CO_TUPLE);
coValueSetTupleVal(value, vals);
return value;
}
// Create an array value from an array of values.
coValue coArrayValueCreate(
coValueArray vals)
{
coValue value = valueCreate(CO_ARRAY);
coValueSetArrayVal(value, vals);
return value;
}