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) VuoDiode_retain(element)
37#define RELEASE(element) VuoDiode_release(element)
45 "title" :
"List of VuoDiode elements",
70 if (json_object_get_type(js) == json_type_array)
72 int itemCount = json_object_array_length(js);
73 for (
int i = 0; i < itemCount; ++i)
75 json_object *itemObject = json_object_array_get_idx(js, i);
92 for (
unsigned long i = 1; i <= itemCount; ++i)
96 json_object_array_add(listObject, itemObject);
102#ifdef VuoDiode_REQUIRES_INTERPROCESS_JSON
108 for (
unsigned long i = 1; i <= itemCount; ++i)
111 json_object *itemObject = VuoDiode_getInterprocessJson(item);
112 json_object_array_add(listObject, itemObject);
121 const int maxItems = 20;
122 const int maxCharacters = 400;
126 return strdup(
"Empty list");
128 unsigned long characterCount = 0;
130 std::ostringstream summary;
131 summary <<
"List containing " << itemCount <<
" item" << (itemCount == 1 ?
"" :
"s") <<
": <ul>";
133 for (i = 1; i <= itemCount && i <= maxItems && characterCount <= maxCharacters; ++i)
137 std::string itemSummary = itemSummaryCstr;
138 free(itemSummaryCstr);
139 if (itemSummary.length() && itemSummary.find_first_not_of(
' ') != std::string::npos)
140 summary <<
"\n<li>" << itemSummary <<
"</li>";
142 summary <<
"\n<li> </li>";
143 characterCount += itemSummary.length();
147 summary <<
"\n<li>…</li>";
151 return strdup(summary.str().c_str());
156 std::vector<VuoDiode> * l =
new std::vector<VuoDiode>;
163 std::vector<VuoDiode> * l =
new std::vector<VuoDiode>(count, value);
167 for (
unsigned long i = 0; i < count; ++i)
179 std::vector<VuoDiode> *oldList = (std::vector<VuoDiode> *)list;
181 std::vector<VuoDiode> *newList =
new std::vector<VuoDiode>(*oldList);
184 for (std::vector<VuoDiode>::iterator i = newList->begin(); i != newList->end(); ++i)
199 std::vector<VuoDiode> * l = (std::vector<VuoDiode> *)list;
205 std::vector<VuoDiode> * l = (std::vector<VuoDiode> *)list;
207 if (!l || l->size() == 0)
213 if (index > l->size())
214 return (*l)[l->size()-1];
216 return (*l)[index-1];
221 std::vector<VuoDiode> * l = (std::vector<VuoDiode> *)list;
223 if (!l || l->size() == 0)
231 auto l =
reinterpret_cast<const std::vector<VuoDiode> *
>(list);
233 if (!l || l->size() == 0)
246 std::vector<VuoDiode> * l = (std::vector<VuoDiode> *)list;
248 if (!expandListIfNeeded && l->size() == 0)
251 unsigned long clampedIndex = index - 1;
256 if (expandListIfNeeded && clampedIndex >= l->size())
258 l->resize(clampedIndex + 1);
259 (*l)[clampedIndex] = value;
264 if (index > l->size())
265 clampedIndex = l->size() - 1;
268 VuoDiode oldValue = (*l)[clampedIndex];
270 (*l)[clampedIndex] = value;
281 std::vector<VuoDiode> * l = (std::vector<VuoDiode> *)list;
283 unsigned long clampedIndex = index - 1;
288 if (index > l->size())
289 clampedIndex = l->size() - 1;
292 if (index <= l->size())
293 l->insert(l->begin() + clampedIndex, value);
303 std::vector<VuoDiode> * l = (std::vector<VuoDiode> *)list;
305 l->insert(l->begin(), value);
313 std::vector<VuoDiode> * l = (std::vector<VuoDiode> *)list;
323 std::vector<VuoDiode> * l = (std::vector<VuoDiode> *)list;
325 size_t size = l->size();
329 unsigned long clampedIndexA = indexA - 1;
333 clampedIndexA = size - 1;
335 unsigned long clampedIndexB = indexB - 1;
339 clampedIndexB = size - 1;
341 VuoDiode value = (*l)[clampedIndexA];
342 (*l)[clampedIndexA] = (*l)[clampedIndexB];
343 (*l)[clampedIndexB] = value;
346#ifdef VuoDiode_SUPPORTS_COMPARISON
352 std::vector<VuoDiode> * l = (std::vector<VuoDiode> *)list;
354 size_t size = l->size();
369 std::vector<VuoDiode> *a = (std::vector<VuoDiode> *)_a;
370 std::vector<VuoDiode> *b = (std::vector<VuoDiode> *)_b;
371 if (a->size() != b->size())
374 for (std::vector<VuoDiode>::iterator ia = a->begin(), ib = b->begin(); ia != a->end(); ++ia, ++ib)
386 std::vector<VuoDiode> *a = (std::vector<VuoDiode> *)_a;
387 std::vector<VuoDiode> *b = (std::vector<VuoDiode> *)_b;
388 if (a->size() < b->size())
return true;
389 if (a->size() > b->size())
return false;
391 for (std::vector<VuoDiode>::iterator ia = a->begin(), ib = b->begin(); ia != a->end(); ++ia, ++ib)
406 std::vector<VuoDiode> * l = (std::vector<VuoDiode> *)list;
408 size_t size = l->size();
412 double clampedChaos =
MIN(
MAX(chaos,0),1);
413 for (
unsigned long i = 0; i < size * clampedChaos; ++i)
427 std::vector<VuoDiode> * l = (std::vector<VuoDiode> *)list;
428 std::reverse(l->begin(), l->end());
436 std::vector<VuoDiode> * l = (std::vector<VuoDiode> *)list;
438 size_t size = l->size();
442 signed long clampedStartIndex = startIndex - 1;
443 signed long clampedEndIndex = clampedStartIndex + itemCount - 1;
445 if (clampedStartIndex < 0)
446 clampedStartIndex = 0;
447 if (clampedEndIndex >= (
signed long)size)
448 clampedEndIndex = size - 1;
450 if (clampedStartIndex > clampedEndIndex)
453 std::vector<VuoDiode> *newList =
new std::vector<VuoDiode>(
454 l->begin() + clampedStartIndex,
455 l->begin() + clampedEndIndex + 1);
458 for (std::vector<VuoDiode>::iterator i = newList->begin(); i != newList->end(); ++i)
464#ifdef VuoDiode_SUPPORTS_COMPARISON
470 auto *l = (std::vector<VuoDiode> *)list;
472 size_t size = l->size();
476 auto *newList =
new std::vector<VuoDiode>;
479 for (
auto i = l->begin(); i != l->end(); ++i)
482 for (
auto j = newList->begin(); j != newList->end(); ++j)
489 newList->push_back(*i);
492 for (
auto i = newList->begin(); i != newList->end(); ++i)
504 std::vector<VuoDiode> * l = (std::vector<VuoDiode> *)list;
510 l->erase(l->begin());
518 std::vector<VuoDiode> * l = (std::vector<VuoDiode> *)list;
544 std::vector<VuoDiode> * l = (std::vector<VuoDiode> *)list;
546 size_t size = l->size();
547 if (size == 0 || index > size)
550 l->erase(l->begin() + index - 1);
558 std::vector<VuoDiode> * l = (std::vector<VuoDiode> *)list;