30 #define RETAIN(element)
31 #define RELEASE(element)
33 #define RETAIN(element) VuoRetain((void *)element)
34 #define RELEASE(element) VuoRelease((void *)element)
36 #define RETAIN(element) VuoTempoRange_retain(element)
37 #define RELEASE(element) VuoTempoRange_release(element)
45 "title" :
"List of VuoTempoRange elements",
67 if (json_object_get_type(js) == json_type_array)
69 int itemCount = json_object_array_length(js);
70 for (
int i = 0; i < itemCount; ++i)
72 json_object *itemObject = json_object_array_get_idx(js, i);
86 for (
unsigned long i = 1; i <= itemCount; ++i)
90 json_object_array_add(listObject, itemObject);
96 #ifdef VuoTempoRange_REQUIRES_INTERPROCESS_JSON
102 for (
unsigned long i = 1; i <= itemCount; ++i)
105 json_object *itemObject = VuoTempoRange_getInterprocessJson(item);
106 json_object_array_add(listObject, itemObject);
116 return strdup(
"Empty list");
118 const int maxItems = 20;
119 const int maxCharacters = 400;
123 return strdup(
"Empty list");
125 unsigned long characterCount = 0;
127 std::ostringstream summary;
128 summary <<
"List containing " << itemCount <<
" item" << (itemCount == 1 ?
"" :
"s") <<
": <ul>";
130 for (i = 1; i <= itemCount && i <= maxItems && characterCount <= maxCharacters; ++i)
134 std::string itemSummary = itemSummaryCstr;
135 free(itemSummaryCstr);
136 if (itemSummary.length() && itemSummary.find_first_not_of(
' ') != std::string::npos)
137 summary <<
"<li>" << itemSummary <<
"</li>";
139 summary <<
"<li> </li>";
140 characterCount += itemSummary.length();
144 summary <<
"<li>…</li>";
148 return strdup(summary.str().c_str());
153 std::vector<VuoTempoRange> * l =
new std::vector<VuoTempoRange>;
160 std::vector<VuoTempoRange> * l =
new std::vector<VuoTempoRange>(count, value);
164 for (
unsigned long i = 0; i < count; ++i)
176 std::vector<VuoTempoRange> *oldList = (std::vector<VuoTempoRange> *)list;
178 std::vector<VuoTempoRange> *newList =
new std::vector<VuoTempoRange>(*oldList);
181 for (std::vector<VuoTempoRange>::iterator i = newList->begin(); i != newList->end(); ++i)
196 std::vector<VuoTempoRange> * l = (std::vector<VuoTempoRange> *)list;
202 std::vector<VuoTempoRange> * l = (std::vector<VuoTempoRange> *)list;
204 if (!l || l->size() == 0)
210 if (index > l->size())
211 return (*l)[l->size()-1];
213 return (*l)[index-1];
218 std::vector<VuoTempoRange> * l = (std::vector<VuoTempoRange> *)list;
220 if (!l || l->size() == 0)
228 auto l =
reinterpret_cast<const std::vector<VuoTempoRange> *
>(list);
230 if (!l || l->size() == 0)
243 std::vector<VuoTempoRange> * l = (std::vector<VuoTempoRange> *)list;
245 if (!expandListIfNeeded && l->size() == 0)
248 unsigned long clampedIndex = index - 1;
253 if (expandListIfNeeded && clampedIndex >= l->size())
255 l->resize(clampedIndex + 1);
256 (*l)[clampedIndex] = value;
261 if (index > l->size())
262 clampedIndex = l->size() - 1;
267 (*l)[clampedIndex] = value;
278 std::vector<VuoTempoRange> * l = (std::vector<VuoTempoRange> *)list;
280 unsigned long clampedIndex = index - 1;
285 if (index > l->size())
286 clampedIndex = l->size() - 1;
289 if (index <= l->size())
290 l->insert(l->begin() + clampedIndex, value);
300 std::vector<VuoTempoRange> * l = (std::vector<VuoTempoRange> *)list;
302 l->insert(l->begin(), value);
310 std::vector<VuoTempoRange> * l = (std::vector<VuoTempoRange> *)list;
320 std::vector<VuoTempoRange> * l = (std::vector<VuoTempoRange> *)list;
322 size_t size = l->size();
326 unsigned long clampedIndexA = indexA - 1;
330 clampedIndexA = size - 1;
332 unsigned long clampedIndexB = indexB - 1;
336 clampedIndexB = size - 1;
339 (*l)[clampedIndexA] = (*l)[clampedIndexB];
340 (*l)[clampedIndexB] = value;
343 #ifdef VuoTempoRange_SUPPORTS_COMPARISON
349 std::vector<VuoTempoRange> * l = (std::vector<VuoTempoRange> *)list;
351 size_t size = l->size();
366 std::vector<VuoTempoRange> *a = (std::vector<VuoTempoRange> *)_a;
367 std::vector<VuoTempoRange> *b = (std::vector<VuoTempoRange> *)_b;
368 if (a->size() != b->size())
371 for (std::vector<VuoTempoRange>::iterator ia = a->begin(), ib = b->begin(); ia != a->end(); ++ia, ++ib)
383 std::vector<VuoTempoRange> *a = (std::vector<VuoTempoRange> *)_a;
384 std::vector<VuoTempoRange> *b = (std::vector<VuoTempoRange> *)_b;
385 if (a->size() < b->size())
return true;
386 if (a->size() > b->size())
return false;
388 for (std::vector<VuoTempoRange>::iterator ia = a->begin(), ib = b->begin(); ia != a->end(); ++ia, ++ib)
403 std::vector<VuoTempoRange> * l = (std::vector<VuoTempoRange> *)list;
405 size_t size = l->size();
409 double clampedChaos =
MIN(
MAX(chaos,0),1);
410 for (
unsigned long i = 0; i < size * clampedChaos; ++i)
424 std::vector<VuoTempoRange> * l = (std::vector<VuoTempoRange> *)list;
425 std::reverse(l->begin(), l->end());
433 std::vector<VuoTempoRange> * l = (std::vector<VuoTempoRange> *)list;
435 size_t size = l->size();
439 signed long clampedStartIndex = startIndex - 1;
440 signed long clampedEndIndex = clampedStartIndex + itemCount - 1;
442 if (clampedStartIndex < 0)
443 clampedStartIndex = 0;
444 if (clampedEndIndex >= (
signed long)size)
445 clampedEndIndex = size - 1;
447 if (clampedStartIndex > clampedEndIndex)
450 std::vector<VuoTempoRange> *newList =
new std::vector<VuoTempoRange>(
451 l->begin() + clampedStartIndex,
452 l->begin() + clampedEndIndex + 1);
455 for (std::vector<VuoTempoRange>::iterator i = newList->begin(); i != newList->end(); ++i)
461 #ifdef VuoTempoRange_SUPPORTS_COMPARISON
467 auto *l = (std::vector<VuoTempoRange> *)list;
469 size_t size = l->size();
473 auto *newList =
new std::vector<VuoTempoRange>;
476 for (
auto i = l->begin(); i != l->end(); ++i)
479 for (
auto j = newList->begin(); j != newList->end(); ++j)
486 newList->push_back(*i);
489 for (
auto i = newList->begin(); i != newList->end(); ++i)
501 std::vector<VuoTempoRange> * l = (std::vector<VuoTempoRange> *)list;
507 l->erase(l->begin());
515 std::vector<VuoTempoRange> * l = (std::vector<VuoTempoRange> *)list;
541 std::vector<VuoTempoRange> * l = (std::vector<VuoTempoRange> *)list;
543 size_t size = l->size();
544 if (size == 0 || index > size)
547 l->erase(l->begin() + index - 1);
555 std::vector<VuoTempoRange> * l = (std::vector<VuoTempoRange> *)list;