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) VuoMidiOutputDevice_retain(element)
37#define RELEASE(element) VuoMidiOutputDevice_release(element)
45 "title" :
"List of VuoMidiOutputDevice 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 VuoMidiOutputDevice_REQUIRES_INTERPROCESS_JSON
108 for (
unsigned long i = 1; i <= itemCount; ++i)
111 json_object *itemObject = VuoMidiOutputDevice_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<VuoMidiOutputDevice> * l =
new std::vector<VuoMidiOutputDevice>;
163 std::vector<VuoMidiOutputDevice> * l =
new std::vector<VuoMidiOutputDevice>(count, value);
167 for (
unsigned long i = 0; i < count; ++i)
176 std::vector<VuoMidiOutputDevice> *l =
new std::vector<VuoMidiOutputDevice>(values, values + valueCount);
180 for (
unsigned long i = 0; i < valueCount; ++i)
192 std::vector<VuoMidiOutputDevice> *oldList = (std::vector<VuoMidiOutputDevice> *)list;
194 std::vector<VuoMidiOutputDevice> *newList =
new std::vector<VuoMidiOutputDevice>(*oldList);
197 for (std::vector<VuoMidiOutputDevice>::iterator i = newList->begin(); i != newList->end(); ++i)
212 std::vector<VuoMidiOutputDevice> * l = (std::vector<VuoMidiOutputDevice> *)list;
218 std::vector<VuoMidiOutputDevice> * l = (std::vector<VuoMidiOutputDevice> *)list;
220 if (!l || l->size() == 0)
226 if (index > l->size())
227 return (*l)[l->size()-1];
229 return (*l)[index-1];
234 std::vector<VuoMidiOutputDevice> * l = (std::vector<VuoMidiOutputDevice> *)list;
236 if (!l || l->size() == 0)
244 auto l =
reinterpret_cast<const std::vector<VuoMidiOutputDevice> *
>(list);
246 if (!l || l->size() == 0)
259 std::vector<VuoMidiOutputDevice> * l = (std::vector<VuoMidiOutputDevice> *)list;
261 if (!expandListIfNeeded && l->size() == 0)
264 unsigned long clampedIndex = index - 1;
269 if (expandListIfNeeded && clampedIndex >= l->size())
271 l->resize(clampedIndex + 1);
272 (*l)[clampedIndex] = value;
277 if (index > l->size())
278 clampedIndex = l->size() - 1;
283 (*l)[clampedIndex] = value;
294 std::vector<VuoMidiOutputDevice> * l = (std::vector<VuoMidiOutputDevice> *)list;
296 unsigned long clampedIndex = index - 1;
301 if (index > l->size())
302 clampedIndex = l->size() - 1;
305 if (index <= l->size())
306 l->insert(l->begin() + clampedIndex, value);
316 std::vector<VuoMidiOutputDevice> * l = (std::vector<VuoMidiOutputDevice> *)list;
318 l->insert(l->begin(), value);
326 std::vector<VuoMidiOutputDevice> * l = (std::vector<VuoMidiOutputDevice> *)list;
336 std::vector<VuoMidiOutputDevice> * l = (std::vector<VuoMidiOutputDevice> *)list;
338 size_t size = l->size();
342 unsigned long clampedIndexA = indexA - 1;
346 clampedIndexA = size - 1;
348 unsigned long clampedIndexB = indexB - 1;
352 clampedIndexB = size - 1;
355 (*l)[clampedIndexA] = (*l)[clampedIndexB];
356 (*l)[clampedIndexB] = value;
359#ifdef VuoMidiOutputDevice_SUPPORTS_COMPARISON
365 std::vector<VuoMidiOutputDevice> * l = (std::vector<VuoMidiOutputDevice> *)list;
367 size_t size = l->size();
382 std::vector<VuoMidiOutputDevice> *a = (std::vector<VuoMidiOutputDevice> *)_a;
383 std::vector<VuoMidiOutputDevice> *b = (std::vector<VuoMidiOutputDevice> *)_b;
384 if (a->size() != b->size())
387 for (std::vector<VuoMidiOutputDevice>::iterator ia = a->begin(), ib = b->begin(); ia != a->end(); ++ia, ++ib)
399 std::vector<VuoMidiOutputDevice> *a = (std::vector<VuoMidiOutputDevice> *)_a;
400 std::vector<VuoMidiOutputDevice> *b = (std::vector<VuoMidiOutputDevice> *)_b;
401 if (a->size() < b->size())
return true;
402 if (a->size() > b->size())
return false;
404 for (std::vector<VuoMidiOutputDevice>::iterator ia = a->begin(), ib = b->begin(); ia != a->end(); ++ia, ++ib)
419 std::vector<VuoMidiOutputDevice> * l = (std::vector<VuoMidiOutputDevice> *)list;
421 size_t size = l->size();
425 double clampedChaos =
MIN(
MAX(chaos,0),1);
426 for (
unsigned long i = 0; i < size * clampedChaos; ++i)
440 std::vector<VuoMidiOutputDevice> * l = (std::vector<VuoMidiOutputDevice> *)list;
441 std::reverse(l->begin(), l->end());
449 std::vector<VuoMidiOutputDevice> * l = (std::vector<VuoMidiOutputDevice> *)list;
451 size_t size = l->size();
455 signed long clampedStartIndex = startIndex - 1;
456 signed long clampedEndIndex = clampedStartIndex + itemCount - 1;
458 if (clampedStartIndex < 0)
459 clampedStartIndex = 0;
460 if (clampedEndIndex >= (
signed long)size)
461 clampedEndIndex = size - 1;
463 if (clampedStartIndex > clampedEndIndex)
466 std::vector<VuoMidiOutputDevice> *newList =
new std::vector<VuoMidiOutputDevice>(
467 l->begin() + clampedStartIndex,
468 l->begin() + clampedEndIndex + 1);
471 for (std::vector<VuoMidiOutputDevice>::iterator i = newList->begin(); i != newList->end(); ++i)
477#ifdef VuoMidiOutputDevice_SUPPORTS_COMPARISON
483 auto *l = (std::vector<VuoMidiOutputDevice> *)list;
485 size_t size = l->size();
489 auto *newList =
new std::vector<VuoMidiOutputDevice>;
492 for (
auto i = l->begin(); i != l->end(); ++i)
495 for (
auto j = newList->begin(); j != newList->end(); ++j)
502 newList->push_back(*i);
505 for (
auto i = newList->begin(); i != newList->end(); ++i)
517 std::vector<VuoMidiOutputDevice> * l = (std::vector<VuoMidiOutputDevice> *)list;
523 l->erase(l->begin());
531 std::vector<VuoMidiOutputDevice> * l = (std::vector<VuoMidiOutputDevice> *)list;
557 std::vector<VuoMidiOutputDevice> * l = (std::vector<VuoMidiOutputDevice> *)list;
559 size_t size = l->size();
560 if (size == 0 || index > size)
563 l->erase(l->begin() + index - 1);
571 std::vector<VuoMidiOutputDevice> * l = (std::vector<VuoMidiOutputDevice> *)list;