Vuo  2.0.2
VuoTimeUnit.c
Go to the documentation of this file.
1 
10 #include "type.h"
11 #include "VuoTimeUnit.h"
12 #include "VuoList_VuoTimeUnit.h"
13 
15 #ifdef VUO_COMPILER
17  "title" : "Time Unit",
18  "description" : "A delineation of time.",
19  "keywords" : [ ],
20  "version" : "1.0.0",
21  "dependencies" : [
22  "VuoList_VuoTimeUnit"
23  ]
24  });
25 #endif
26 
36 {
37  const char *valueAsString = "";
38  if (json_object_get_type(js) == json_type_string)
39  valueAsString = json_object_get_string(js);
40 
41  VuoTimeUnit value = VuoTimeUnit_Millennium;
42 
43  if (strcmp(valueAsString, "century") == 0)
44  value = VuoTimeUnit_Century;
45  else if (strcmp(valueAsString, "decade") == 0)
46  value = VuoTimeUnit_Decade;
47  else if (strcmp(valueAsString, "year") == 0)
48  value = VuoTimeUnit_Year;
49  else if (strcmp(valueAsString, "quarter") == 0)
50  value = VuoTimeUnit_Quarter;
51  else if (strcmp(valueAsString, "month") == 0)
52  value = VuoTimeUnit_Month;
53  else if (strcmp(valueAsString, "week-sunday") == 0)
54  value = VuoTimeUnit_WeekSunday;
55  else if (strcmp(valueAsString, "week-monday") == 0)
56  value = VuoTimeUnit_WeekMonday;
57  else if (strcmp(valueAsString, "day") == 0)
58  value = VuoTimeUnit_Day;
59  else if (strcmp(valueAsString, "hour") == 0)
60  value = VuoTimeUnit_Hour;
61  else if (strcmp(valueAsString, "half-hour") == 0)
62  value = VuoTimeUnit_HalfHour;
63  else if (strcmp(valueAsString, "quarter-hour") == 0)
64  value = VuoTimeUnit_QuarterHour;
65  else if (strcmp(valueAsString, "minute") == 0)
66  value = VuoTimeUnit_Minute;
67  else if (strcmp(valueAsString, "second") == 0)
68  value = VuoTimeUnit_Second;
69 
70  return value;
71 }
72 
77 {
78  char *valueAsString = "millennium";
79 
80  if (value == VuoTimeUnit_Century)
81  valueAsString = "century";
82  else if (value == VuoTimeUnit_Decade)
83  valueAsString = "decade";
84  else if (value == VuoTimeUnit_Year)
85  valueAsString = "year";
86  else if (value == VuoTimeUnit_Quarter)
87  valueAsString = "quarter";
88  else if (value == VuoTimeUnit_Month)
89  valueAsString = "month";
90  else if (value == VuoTimeUnit_WeekSunday)
91  valueAsString = "week-sunday";
92  else if (value == VuoTimeUnit_WeekMonday)
93  valueAsString = "week-monday";
94  else if (value == VuoTimeUnit_Day)
95  valueAsString = "day";
96  else if (value == VuoTimeUnit_Hour)
97  valueAsString = "hour";
98  else if (value == VuoTimeUnit_HalfHour)
99  valueAsString = "half-hour";
100  else if (value == VuoTimeUnit_QuarterHour)
101  valueAsString = "quarter-hour";
102  else if (value == VuoTimeUnit_Minute)
103  valueAsString = "minute";
104  else if (value == VuoTimeUnit_Second)
105  valueAsString = "second";
106 
107  return json_object_new_string(valueAsString);
108 }
109 
114 {
116  VuoListAppendValue_VuoTimeUnit(l, VuoTimeUnit_Millennium);
117  VuoListAppendValue_VuoTimeUnit(l, VuoTimeUnit_Century);
118  VuoListAppendValue_VuoTimeUnit(l, VuoTimeUnit_Decade);
119  VuoListAppendValue_VuoTimeUnit(l, VuoTimeUnit_Year);
120  VuoListAppendValue_VuoTimeUnit(l, VuoTimeUnit_Quarter);
121  VuoListAppendValue_VuoTimeUnit(l, VuoTimeUnit_Month);
122  VuoListAppendValue_VuoTimeUnit(l, VuoTimeUnit_WeekSunday);
123  VuoListAppendValue_VuoTimeUnit(l, VuoTimeUnit_WeekMonday);
124  VuoListAppendValue_VuoTimeUnit(l, VuoTimeUnit_Day);
125  VuoListAppendValue_VuoTimeUnit(l, VuoTimeUnit_Hour);
126  VuoListAppendValue_VuoTimeUnit(l, VuoTimeUnit_HalfHour);
127  VuoListAppendValue_VuoTimeUnit(l, VuoTimeUnit_QuarterHour);
128  VuoListAppendValue_VuoTimeUnit(l, VuoTimeUnit_Minute);
129  VuoListAppendValue_VuoTimeUnit(l, VuoTimeUnit_Second);
130  return l;
131 }
132 
137 {
138  char *valueAsString = "Millennium";
139 
140  if (value == VuoTimeUnit_Century)
141  valueAsString = "Century";
142  else if (value == VuoTimeUnit_Decade)
143  valueAsString = "Decade";
144  else if (value == VuoTimeUnit_Year)
145  valueAsString = "Year";
146  else if (value == VuoTimeUnit_Quarter)
147  valueAsString = "Quarter";
148  else if (value == VuoTimeUnit_Month)
149  valueAsString = "Month";
150  else if (value == VuoTimeUnit_WeekSunday)
151  valueAsString = "Week (Sunday–Saturday)";
152  else if (value == VuoTimeUnit_WeekMonday)
153  valueAsString = "Week (Monday–Sunday)";
154  else if (value == VuoTimeUnit_Day)
155  valueAsString = "Day";
156  else if (value == VuoTimeUnit_Hour)
157  valueAsString = "Hour";
158  else if (value == VuoTimeUnit_HalfHour)
159  valueAsString = "Half Hour";
160  else if (value == VuoTimeUnit_QuarterHour)
161  valueAsString = "Quarter Hour";
162  else if (value == VuoTimeUnit_Minute)
163  valueAsString = "Minute";
164  else if (value == VuoTimeUnit_Second)
165  valueAsString = "Second";
166 
167  return strdup(valueAsString);
168 }
169 
178 {
179  if (value == VuoTimeUnit_Millennium)
180  return 60ULL * 60 * 24 * 365 * 1000;
181  else if (value == VuoTimeUnit_Century)
182  return 60ULL * 60 * 24 * 365 * 100;
183  else if (value == VuoTimeUnit_Decade)
184  return 60ULL * 60 * 24 * 365 * 10;
185  else if (value == VuoTimeUnit_Year)
186  return 60ULL * 60 * 24 * 365;
187  else if (value == VuoTimeUnit_Quarter)
188  return 60ULL * 60 * 24 * 121;
189  else if (value == VuoTimeUnit_Month)
190  return 60ULL * 60 * 24 * 30;
191  else if (value == VuoTimeUnit_WeekSunday)
192  return 60ULL * 60 * 24 * 7;
193  else if (value == VuoTimeUnit_WeekMonday)
194  return 60ULL * 60 * 24 * 7;
195  else if (value == VuoTimeUnit_Day)
196  return 60ULL * 60 * 24;
197  else if (value == VuoTimeUnit_Hour)
198  return 60ULL * 60;
199  else if (value == VuoTimeUnit_HalfHour)
200  return 60ULL * 30;
201  else if (value == VuoTimeUnit_QuarterHour)
202  return 60ULL * 15;
203  else if (value == VuoTimeUnit_Minute)
204  return 60ULL;
205  else //if (value == VuoTimeUnit_Second)
206  return 1ULL;
207 }
208 
212 bool VuoTimeUnit_areEqual(const VuoTimeUnit valueA, const VuoTimeUnit valueB)
213 {
214  return valueA == valueB;
215 }
216 
220 bool VuoTimeUnit_isLessThan(const VuoTimeUnit valueA, const VuoTimeUnit valueB)
221 {
222  // Since time units are listed in reverse order of brevity in the enum,
223  // reverse the comparison operator here so that briefer time units are
224  // considered less than lengthier time units.
225  return valueA > valueB;
226 }
227