32 TTAddress newRelativeAddress, newContextAddress;
33 TTBoolean newInstance, newContextInstance;
38 args.
append(relativeAddress);
40 returnedSubscriber =
TTObject(kTTSym_Subscriber, args);
47 err = returnedSubscriber.
send(kTTSym_Subscribe, args, v);
55 if (!err && *returnedNode) {
57 if (anObject.
valid()) {
60 returnedSubscriber.
get(
"newInstanceCreated", v);
64 returnedSubscriber.
get(
"newContextInstanceCreated", v);
65 newContextInstance = v[0];
70 returnedSubscriber.
get(
"relativeAddress", v);
71 newRelativeAddress = v[0];
72 object_warn(x,
"Jamoma cannot register multiple objects with the same OSC identifier (%s). Using %s instead.", relativeAddress.
c_str(), newRelativeAddress.
c_str());
76 if (newContextInstance) {
78 returnedSubscriber.
get(
"contextAddress", v);
79 newContextAddress = v[0];
95 if (patcherContext == kTTSym_model && argc == 1) {
97 if (atom_gettype(argv) == A_SYM)
98 patcherArg =
TTAddress(atom_getsym(argv)->s_name);
100 else if (patcherContext == kTTSym_view && argc == 2) {
102 if (atom_gettype(argv+1) == A_SYM)
103 patcherArg =
TTAddress(atom_getsym(argv+1)->s_name);
107 sysmem_freeptr(argv);
113 object_warn(patcher,
"No name provided to %s %s. Using %s.", patcherClass.
c_str(), patcherContext.
c_str(), newContextAddress.
getNameInstance().
c_str());
117 object_warn(patcher,
"Duplicate name provided to %s %s (%s). Using %s.", patcherClass.
c_str(), patcherContext.
c_str(), patcherArg.
c_str(), newContextAddress.
getNameInstance().
c_str());
121 returnedSubscriber.
get(kTTSym_nodeAddress, v);
122 returnedAddress = v[0];
124 JamomaDebug object_post(x,
"registers at %s", returnedAddress.
c_str());
130 if (anObject.
valid())
131 object_error(x,
"Jamoma cannot registers %s", relativeAddress.
c_str());
142 t_object *box = object_attr_getobj(patcher, _sym_box);
143 t_symbol *objclass = NULL;
146 objclass = object_classname(box);
148 if (objclass == _sym_bpatcher)
151 else if (objclass == _sym_newobj)
152 return _sym_subpatcher;
156 if (object_attr_getobj(patcher, _sym_parentpatcher))
157 return gensym(
"poly");
167 t_object *patcher = NULL;
168 object_obex_lookup(obj, SymbolGen(
"#P"), &patcher);
172 patcher = object_attr_getobj(obj, _sym_parentpatcher);
181 TTString diezeStr, argsStr, addressStr = address->s_name;
196 patcher = object_attr_getobj(x, _sym_parentpatcher);
205 if (hierarchy == _sym_subpatcher) {
209 if (atom_getsym(av) == _sym_p || atom_getsym(av) == _sym_patcher) {
259 return gensym((
char*)addressStr.data());
269 t_object *objPtr = x;
270 t_object *patcherPtr = NULL;
283 if (patcherName && patcherPtr) {
292 jamoma_subscriber_fill_list(aContextListToFill,
TTAddress(patcherName), patcherPtr);
311 void jamoma_subscriber_fill_list(TTList& listToFill,
TTAddress address,
TTPtr pointer)
315 listToFill.insert(0, v);
318 if (parent != kTTAdrsEmpty)
319 jamoma_subscriber_fill_list(listToFill, parent, pointer);
329 TTObject returnAddressCallback, returnValueCallback;
332 returnAddressCallback =
TTObject(
"callback");
333 returnAddressCallback.
set(kTTSym_baton,
TTPtr(x));
335 args.
append(returnAddressCallback);
337 returnValueCallback =
TTObject(
"callback");
338 returnValueCallback.
set(kTTSym_baton,
TTPtr(x));
340 args.
append(returnValueCallback);
342 returnedContainer =
TTObject(kTTSym_Container, args);
353 if (aContainer.
valid()) {
355 anAddress = relativeAddressAndAttribute->s_name;
358 error(
"%s is an absolute address", relativeAddressAndAttribute->s_name);
374 return aContainer.
send(kTTSym_Send, data, none);
385 returnedNodeInfo =
TTObject(kTTSym_NodeInfo);
396 returnedData =
TTObject(kTTSym_Data, service);
399 returnedData.
set(kTTSym_baton,
TTPtr(x));
415 return aData.
send(kTTSym_Command, v, none);
427 returnedSender =
TTObject(kTTSym_Sender);
437 audio =
TTObject(kTTSym_audiosignal, 1);
439 returnedSender =
TTObject(kTTSym_Sender, audio);
448 if (aSender.
valid()) {
452 return aSender.
send(kTTSym_Send, v, none);
465 TTObject returnAddressCallback, returnValueCallback;
468 returnAddressCallback =
TTObject(
"callback");
469 returnAddressCallback.
set(kTTSym_baton,
TTPtr(x));
471 args.
append(returnAddressCallback);
473 returnValueCallback =
TTObject(
"callback");
474 returnValueCallback.
set(kTTSym_baton,
TTPtr(x));
476 args.
append(returnValueCallback);
478 returnedReceiver =
TTObject(kTTSym_Receiver, args);
486 TTObject returnAddressCallback, audio, empty;
489 returnAddressCallback =
TTObject(
"callback");
490 returnAddressCallback.
set(kTTSym_baton,
TTPtr(x));
492 args.
append(returnAddressCallback);
496 audio =
TTObject(kTTSym_audiosignal, 1);
499 returnedReceiver =
TTObject(kTTSym_Receiver, args);
512 returnLineCallback =
TTObject(
"callback");
513 returnLineCallback.
set(kTTSym_baton,
TTPtr(x));
516 returnedPresetManager =
TTObject(kTTSym_PresetManager, returnLineCallback);
526 returnLineCallback =
TTObject(
"callback");
527 returnLineCallback.
set(kTTSym_baton,
TTPtr(x));
530 returnedCueManager =
TTObject(kTTSym_CueManager, returnLineCallback);
544 signalOutCallback =
TTObject(
"callback");
546 signalOutCallback.
set(kTTSym_baton, baton);
549 returnedInput =
TTObject(kTTSym_Input, signalOutCallback);
557 returnedInput =
TTObject(
"Input.audio");
566 if (anInput.
valid()) {
570 return anInput.
send(kTTSym_Send, v, none);
587 signalOutCallback =
TTObject(
"callback");
589 signalOutCallback.
set(kTTSym_baton, baton);
592 returnedOutput =
TTObject(kTTSym_Output, signalOutCallback);
601 returnedOutput =
TTObject(
"Output.audio");
610 if (anOutput.
valid()) {
614 return anOutput.
send(kTTSym_Send, v, none);
628 TTObject returnValueCallback, returnInputGoingDownCallback, returnInputGoingUpCallback, returnOutputGoingDownCallback, returnOutputGoingUpCallback;
631 returnValueCallback =
TTObject(
"callback");
632 returnValueCallback.
set(kTTSym_baton,
TTPtr(x));
634 args.
append(returnValueCallback);
636 returnInputGoingDownCallback =
TTObject(
"callback");
638 returnInputGoingDownCallback.
set(kTTSym_baton, baton);
640 args.
append(returnInputGoingDownCallback);
642 returnInputGoingUpCallback =
TTObject(
"callback");
644 returnInputGoingUpCallback.
set(kTTSym_baton, baton);
646 args.
append(returnInputGoingUpCallback);
648 returnOutputGoingDownCallback =
TTObject(
"callback");
650 returnOutputGoingDownCallback.
set(kTTSym_baton, baton);
652 args.
append(returnOutputGoingDownCallback);
654 returnOutputGoingUpCallback =
TTObject(
"callback");
656 returnOutputGoingUpCallback.
set(kTTSym_baton, baton);
658 args.
append(returnOutputGoingUpCallback);
660 returnedMapper =
TTObject(kTTSym_Mapper, args);
672 returnedViewer =
TTObject(kTTSym_Viewer);
674 returnedViewer.
set(kTTSym_baton,
TTPtr(x));
685 if (aViewer.
valid()) {
689 return aViewer.
send(kTTSym_Send, v, none);
703 TTObject returnValueCallback, returnSelectionCallback;
706 returnValueCallback =
TTObject(
"callback");
707 returnValueCallback.
set(kTTSym_baton,
TTPtr(x));
709 args.
append(returnValueCallback);
713 returnSelectionCallback =
TTObject(
"callback");
715 returnSelectionCallback.
set(kTTSym_baton, baton);
717 args.
append(returnSelectionCallback);
719 returnedExplorer =
TTObject(kTTSym_Explorer, args);
734 aFilter->
append(kTTSym_object, kTTSym_Data);
735 aFilter->
append(kTTSym_mode, kTTSym_restrict);
741 aFilter->append(kTTSym_object, kTTSym_Data);
742 aFilter->append(kTTSym_attribute, kTTSym_service);
743 aFilter->append(kTTSym_value, kTTSym_parameter);
744 aFilter->append(kTTSym_mode, kTTSym_restrict);
750 aFilter->append(kTTSym_object, kTTSym_Data);
751 aFilter->append(kTTSym_attribute, kTTSym_service);
752 aFilter->append(kTTSym_value, kTTSym_message);
753 aFilter->append(kTTSym_mode, kTTSym_restrict);
759 aFilter->append(kTTSym_object, kTTSym_Data);
760 aFilter->append(kTTSym_attribute, kTTSym_service);
761 aFilter->append(kTTSym_value, kTTSym_return);
762 aFilter->append(kTTSym_mode, kTTSym_restrict);
768 aFilter->append(kTTSym_object, kTTSym_Container);
769 aFilter->append(kTTSym_attribute, kTTSym_service);
770 aFilter->append(kTTSym_value, kTTSym_model);
771 aFilter->append(kTTSym_mode, kTTSym_restrict);
777 aFilter->append(kTTSym_object, kTTSym_Container);
778 aFilter->append(kTTSym_attribute, kTTSym_service);
779 aFilter->append(kTTSym_value, kTTSym_view);
780 aFilter->append(kTTSym_mode, kTTSym_restrict);
786 aFilter->append(kTTSym_object,
TTSymbol(
"none"));
787 aFilter->append(kTTSym_mode, kTTSym_restrict);
793 aFilter->append(kTTSym_object, kTTSym_Viewer);
794 aFilter->append(kTTSym_mode, kTTSym_restrict);
800 aFilter->append(kTTSym_attribute, kTTSym_tags);
801 aFilter->append(kTTSym_value, kTTSym_generic);
802 aFilter->append(kTTSym_mode, kTTSym_exclude);
808 aFilter->append(kTTSym_attribute, kTTSym_tags);
809 aFilter->append(kTTSym_value, kTTSym_generic);
810 aFilter->append(kTTSym_mode, kTTSym_restrict);
813 return defaultFilterBank;
827 returnedRamp =
TTObject(kTTSym_Ramp, args);
833 t_object *x = (t_object*)o;
841 argv = (t_atom*)sysmem_newptr(
sizeof(t_atom) * argc);
843 for (i = 0; i < argc; i++)
844 atom_setfloat(argv+i, v[i]);
848 object_method(x, jps_return_value, _sym_float, argc, argv);
850 object_method(x, jps_return_value, _sym_list, argc, argv);
852 sysmem_freeptr(argv);
864 x = (t_object*)((
TTPtr)baton[0]);
874 object_method(x, jps_return_address, SymbolGen(address.
c_str()), 0, 0);
887 method p_method = NULL;
892 x = (t_object*)((
TTPtr)baton[0]);
895 if (baton.
size() >= 2) {
897 s_method = (t_symbol*)((
TTPtr)baton[1]);
899 if (s_method == NULL || s_method == _sym_nothing)
903 if (baton.
size() == 3)
907 s_method = jps_return_value;
913 object_method(x, s_method, _sym_nothing, argc, argv);
917 p_method = object_getmethod(x, s_method);
920 defer_low(x, (method)p_method, _sym_nothing, argc, argv);
923 sysmem_freeptr(argv);
932 t_symbol *msg, *s_method;
936 method p_method = NULL;
942 x = (t_object*)((
TTPtr)baton[0]);
945 if (baton.
size() >= 2) {
947 s_method = (t_symbol*)((
TTPtr)baton[1]);
949 if (s_method == NULL || s_method == _sym_nothing)
953 if (baton.
size() == 3)
958 s_method = jps_return_value;
965 object_method(x, s_method, msg, argc, argv);
969 p_method = object_getmethod(x, s_method);
972 defer_low(x, (method)p_method, msg, argc, argv);
977 sysmem_freeptr(argv);
988 x = (t_object*)((
TTPtr)baton[0]);
993 object_method(x, jps_return_signal, _sym_nothing, argc, argv);
995 sysmem_freeptr(argv);
1004 t_atom *argv = NULL;
1007 x = (t_object*)((
TTPtr)baton[0]);
1011 argv = (t_atom*)sysmem_newptr(
sizeof(t_atom) * argc);
1012 for (i = 0; i < argc; i++) {
1014 atom_setobj(argv+i, signal);
1018 object_method(x, jps_return_signal, _sym_nothing, argc, argv);
1020 sysmem_freeptr(argv);
1034 *msg = _sym_nothing;
1038 *argv = (t_atom*)sysmem_newptr(
sizeof(t_atom) * (*argc));
1040 if (*argc && v.
size() > 0) {
1042 for (i = 0; i < *argc; i++) {
1046 atom_setfloat((*argv)+i, f);
1051 if (s == kTTSymEmpty || s == kTTAdrsEmpty)
1052 atom_setsym((*argv)+i, _sym_bang);
1054 atom_setsym((*argv)+i, gensym((
char*)s.
c_str()));
1059 atom_setlong((*argv)+i, t);
1066 if (atom_gettype(*argv) == A_SYM) {
1068 *msg = atom_getsym(*argv);
1095 if (*argc == 0 || v.
size() == 0)
1099 *argv = (t_atom*)sysmem_newptr(
sizeof(t_atom) * (*argc));
1101 for (i = 0; i < v.
size(); i++)
1106 atom_setfloat((*argv)+i, f);
1111 if (s == kTTSymEmpty)
1112 atom_setsym((*argv)+i, _sym_bang);
1114 atom_setsym((*argv)+i, gensym((
char*)s.
c_str()));
1119 atom_setlong((*argv)+i, t);
1129 if ((msg == _sym_bang || msg == _sym_nothing) && argc == 0)
1134 if (msg != _sym_nothing && msg != _sym_int && msg != _sym_float && msg != _sym_symbol && msg != _sym_list)
1147 for (i = 0; i < argc; i++)
1149 if (atom_gettype(argv+i) == A_LONG)
1150 v[i+start] = (int)atom_getlong(argv+i);
1151 else if (atom_gettype(argv+i) == A_FLOAT)
1152 v[i+start] = (
TTFloat64)atom_getfloat(argv+i);
1153 else if (atom_gettype(argv+i) == A_SYM)
1154 v[i+start] =
TTSymbol(atom_getsym(argv+i)->s_name);
1169 if (AppName == kTTSymEmpty)
1170 err = convertUpperCasedNameInAddress(TTName, anAddress);
1172 err = convertUpperCasedNameInAddress(AppName, anAddress);
1175 return gensym((
char*)anAddress.
c_str());
1186 c = class_findbyname(jps_box, objectname);
1188 p = (t_object *)newinstance(objectname, 0, NULL);
1190 c = class_findbyname(jps_box, objectname);
1195 error(
"jamoma: could not load extern (%s) within the core", objectname->s_name);
1200 if (*
object != NULL) {
1201 object_free(*
object);
1205 *
object = (t_object*)object_new_typed(CLASS_BOX, objectname, argc, argv);
1214 t_object *box = object_attr_getobj(patcher, _sym_box);
1215 t_object *textfield = NULL;
1216 t_object *assoc = NULL;
1218 unsigned long textlen = 0;
1220 if (hierarchy == _sym_bpatcher)
1221 object_attr_getvalueof(box, SymbolGen(
"args"), argc, argv);
1223 else if (hierarchy == _sym_subpatcher) {
1224 textfield = object_attr_getobj(box, SymbolGen(
"textfield"));
1225 object_method(textfield, SymbolGen(
"gettextptr"), &text, &textlen);
1226 atom_setparse(argc, argv, text);
1228 else if (hierarchy == gensym(
"poly")){
1230 object_method(patcher, gensym(
"getassoc"), &assoc);
1232 object_attr_getvalueof(assoc, SymbolGen(
"args"), argc, argv);
1243 t_symbol *hierarchy, *_sym_j_model, *_sym_j_view, *_sym_context;
1244 t_object *obj, *upperPatcher;
1248 obj = object_attr_getobj(*patcher, _sym_firstobject);
1251 _sym_j_model = gensym(
"j.model");
1252 _sym_j_view = gensym(
"j.view");
1256 _sym_context = object_attr_getsym(obj, _sym_maxclass);
1258 if (_sym_context == _sym_j_model) {
1260 returnedContext = kTTSym_model;
1264 }
else if (_sym_context == _sym_j_view) {
1266 returnedContext = kTTSym_view;
1271 obj = object_attr_getobj(obj, _sym_nextobject);
1279 if (hierarchy == _sym_subpatcher || hierarchy == _sym_bpatcher || hierarchy == SymbolGen(
"poly")) {
1290 if (returnedContext == kTTSymEmpty && found)
1291 returnedContext = kTTSym_model;
1295 *patcher = upperPatcher;
1298 else if (hierarchy == _sym_topmost)
1299 returnedContext = kTTSymEmpty;
1306 t_symbol *patcherName, *hierarchy;
1307 t_object *upperPatcher;
1309 TTStringIter begin, end;
1313 patcherName = object_attr_getsym(patcher, _sym_filename);
1315 if (patcherName != _sym_nothing) {
1317 s_toParse = patcherName->s_name;
1319 begin = s_toParse.begin();
1320 end = s_toParse.end();
1325 begin = s_toParse.begin();
1326 end = s_toParse.end();
1331 begin = s_toParse.begin();
1332 end = s_toParse.end();
1340 object_error(patcher,
"jmod. prefix in %s is a 0.5 convention. Please use .module suffix instead", patcherName->s_name);
1343 begin = s_toParse.begin();
1344 end = s_toParse.end();
1350 begin = s_toParse.begin();
1351 end = s_toParse.end();
1357 begin = s_toParse.begin();
1358 end = s_toParse.end();
1360 else if (context == kTTSym_model) {
1364 begin = s_toParse.begin();
1365 end = s_toParse.end();
1368 else if (context == kTTSym_view) {
1372 begin = s_toParse.begin();
1373 end = s_toParse.end();
1379 s_toParse +=
"_help";
1381 returnedClass =
TTSymbol(s_toParse);
1387 if (hierarchy == _sym_subpatcher) {
1396 if (atom_getsym(av) == _sym_p || atom_getsym(av) == _sym_patcher) {
1406 returnedClass =
TTSymbol(atom_getsym(av)->s_name);
1417 else if (hierarchy == _sym_bpatcher) {
1425 else if (hierarchy == _sym_topmost)
1426 returnedClass = kTTSymEmpty;
1435 t_symbol *hierarchy, *argName = _sym_nothing;
1437 returnedName = kTTSymEmpty;
1444 if (hierarchy == _sym_subpatcher) {
1448 if (atom_getsym(av) == _sym_p || atom_getsym(av) == _sym_patcher) {
1467 if (context == kTTSym_view) {
1469 argName = atom_getsym(av+1);
1472 }
else if (context == kTTSym_model || hierarchy == _sym_subpatcher)
1473 argName = atom_getsym(av);
1476 if (argName->s_name[0] ==
'@')
1477 argName = _sym_nothing;
1479 if (argName != _sym_nothing)
1489 t_symbol *_sym_j_model, *_sym_j_view, *_sym_j_context, *_sym_share;
1491 obj = object_attr_getobj(patcher, _sym_firstobject);
1494 _sym_j_model = gensym(
"j.model");
1495 _sym_j_view = gensym(
"j.view");
1496 _sym_share = gensym(
"share_patcher_info");
1498 _sym_j_context = object_attr_getsym(obj, _sym_maxclass);
1499 if (_sym_j_context == _sym_j_model || _sym_j_context == _sym_j_view) {
1502 object_method(object_attr_getobj(obj, _sym_object), _sym_share, &patcherInfo);
1504 if (patcherInfo.
size() == 4) {
1505 *returnedPatcher = (t_object*)((
TTPtr)patcherInfo[0]);
1506 returnedContext = patcherInfo[1];
1507 returnedClass = patcherInfo[2];
1508 returnedName = patcherInfo[3];
1512 obj = object_attr_getobj(obj, _sym_nextobject);
1521 t_symbol *_sym_j_model, *_sym_j_view, *_sym_j_context;
1523 *returnedModelOrView = NULL;
1525 obj = object_attr_getobj(patcher, _sym_firstobject);
1528 _sym_j_model = gensym(
"j.model");
1529 _sym_j_view = gensym(
"j.view");
1531 _sym_j_context = object_attr_getsym(obj, _sym_maxclass);
1532 if (_sym_j_context == _sym_j_model || _sym_j_context == _sym_j_view) {
1534 *returnedModelOrView = object_attr_getobj(obj, _sym_object);
1537 obj = object_attr_getobj(obj, _sym_nextobject);
1546 t_symbol *_sym_jcomcontext, *_sym_jin, *_sym_jout, *_sym_jintilda, *_sym_jouttilda;
1553 obj = object_attr_getobj(patcher, _sym_firstobject);
1556 _sym_jin = gensym(
"j.in");
1557 _sym_jout = gensym(
"j.out");
1558 _sym_jintilda = gensym(
"j.in~");
1559 _sym_jouttilda = gensym(
"j.out~");
1561 _sym_jcomcontext = object_attr_getsym(obj, _sym_maxclass);
1563 dataInput = dataInput || _sym_jcomcontext == _sym_jin;
1564 dataOutput = dataOutput || _sym_jcomcontext == _sym_jout;
1565 audioInput = audioInput || _sym_jcomcontext == _sym_jintilda;
1566 audioOutput = audioOutput || _sym_jcomcontext == _sym_jouttilda;
1568 obj = object_attr_getobj(obj, _sym_nextobject);
1577 t_symbol *_sym_jcomcontext, *_sym_jui;
1580 obj = object_attr_getobj(patcher, _sym_firstobject);
1583 _sym_jui = gensym(
"j.ui");
1585 _sym_jcomcontext = object_attr_getsym(obj, _sym_maxclass);
1587 uiObject = _sym_jcomcontext == _sym_jui;
1591 obj = object_attr_getobj(obj, _sym_nextobject);
1601 t_symbol *_sym_modelfilename, *_sym_objmaxclass, *_sym_objfilename;
1605 obj = object_attr_getobj(patcher, _sym_firstobject);
1607 *returnedModelPatcher = NULL;
1612 _sym_objmaxclass = object_attr_getsym(obj, _sym_maxclass);
1613 if (_sym_objmaxclass == _sym_jpatcher) {
1616 _sym_objfilename = object_attr_getsym(obj, _sym_filename);
1617 if (_sym_objfilename == _sym_modelfilename) {
1619 *returnedModelPatcher = object_attr_getobj(obj, _sym_object);
1623 obj = object_attr_getobj(obj, _sym_nextobject);
1631 t_symbol *_sym_j_model, *_sym_j_view, *_sym_j_context, *_sym_share;
1633 *patcherNode = NULL;
1635 obj = object_attr_getobj(patcher, _sym_firstobject);
1638 _sym_j_model = gensym(
"j.model");
1639 _sym_j_view = gensym(
"j.view");
1640 _sym_share = gensym(
"share_patcher_node");
1642 _sym_j_context = object_attr_getsym(obj, _sym_maxclass);
1643 if (_sym_j_context == _sym_j_model || _sym_j_context == _sym_j_view) {
1646 object_method(object_attr_getobj(obj, _sym_object), _sym_share, patcherNode);
1651 obj = object_attr_getobj(obj, _sym_nextobject);
1659 t_symbol *_sym_j_context;
1662 t_object *sharedPatcher = NULL;
1669 _sym_j_context = object_classname(obj);
1670 canShare = _sym_j_context == gensym(
"j.model") || _sym_j_context == gensym(
"j.view");
1672 patcher = *returnedPatcher;
1675 if (*returnedPatcher) {
1682 if (sharedPatcher && sharedContext && sharedClass && sharedName) {
1684 *returnedPatcher = sharedPatcher;
1685 returnedContext = sharedContext;
1686 returnedClass = sharedClass;
1687 returnedName = sharedName;
1697 if (returnedContext == kTTSymEmpty) {
1699 returnedName = S_SEPARATOR;
1700 returnedClass = kTTSymEmpty;
1711 if (returnedClass == kTTSymEmpty)
1712 returnedClass =
TTSymbol(
"Untitled");
1722 if (returnedName == kTTSymEmpty) {
1725 if (returnedContext == kTTSym_model)
1726 returnedName = returnedClass;
1729 else if (returnedContext == kTTSym_view) {
1730 viewName = returnedClass.
c_str();
1731 viewName +=
"(view)";
1732 returnedName =
TTSymbol(viewName.data());
1737 std::replace(s_toParse.begin(), s_toParse.end(),
'.',
'_');
1738 std::replace(s_toParse.begin(), s_toParse.end(),
' ',
'_');
1744 t_object *assoc = NULL;
1747 object_method(patcher, gensym(
"getassoc"), &assoc);
1750 m = zgetfn(assoc, gensym(
"getindex"));
1754 long index = (long)(*m)(assoc, patcher);
1759 s_num = (
char *)malloc(
sizeof(
char)*len);
1760 snprintf(s_num, len, s_toParse.
c_str(), index);
1767 returnedName =
TTSymbol(s_toParse);
1772 object_error(obj,
"Can't get the patcher. Subscription failed");
1787 TTStringIter begin, end;
1788 TTStringIter beginNumber, endNumber;
1790 begin = s_toParse.begin();
1791 end = s_toParse.end();
1803 sscanf(s_number.
c_str(),
"%ld", &number);
1805 si_format = s_before;
1807 si_format += s_after;
1809 ss_format = s_before;
1811 ss_format += s_after;
1829 s_num = (
char *)malloc(
sizeof(
char)*len);
1830 snprintf(s_num, len, format.
c_str(), i);
1831 *returnedName = gensym(s_num);
1843 s_str = (
char *)malloc(
sizeof(
char)*len);
1844 snprintf(s_str, len, format.
c_str(), s.
c_str());
1845 *returnedName = gensym(s_str);
1855 len = format.
size() + className.string().
size();
1856 s_str = (
char *)malloc(
sizeof(
char)*len);
1857 snprintf(s_str, len, format.
c_str(), className.
c_str());
1858 *returnedFileName = gensym(s_str);
1870 char fullpath[MAX_PATH_CHARS];
1872 t_filehandle file_handle;
1873 t_fourcc filetype =
'TEXT', outtype;
1879 if (atom_gettype(argv) == A_SYM) {
1880 userpath = atom_getsym(argv);
1882 if (userpath != _sym_nothing && userpath != _sym_bang) {
1885 path_nameconform(userpath->s_name, fullpath, PATH_STYLE_NATIVE, PATH_TYPE_BOOT);
1888 path_createsysfile(fullpath, path, filetype, &file_handle);
1896 if (result == kTTSymEmpty) {
1898 saveas_promptset(
"Save Preset...");
1899 err = saveasdialog_extended(default_filename, &path, &outtype, &filetype, 1);
1901 char posixpath[MAX_PATH_CHARS];
1904 path_createsysfile(default_filename, path, filetype, &file_handle);
1907 path_topathname(path, default_filename, fullpath);
1908 path_nameconform(fullpath, posixpath, PATH_STYLE_NATIVE, PATH_TYPE_BOOT);
1920 char filepath[MAX_FILENAME_CHARS];
1921 char fullpath[MAX_PATH_CHARS];
1922 char posixpath[MAX_PATH_CHARS];
1930 if (atom_gettype(argv) == A_SYM) {
1931 userpath = atom_getsym(argv);
1933 if (userpath != _sym_nothing && userpath != _sym_bang) {
1935 strncpy_zero(filepath, userpath->s_name, MAX_FILENAME_CHARS);
1936 if (locatefile_extended(filepath, &path, &outtype, &filetype, 1)) {
1938 object_error(x,
"%s : not found", filepath);
1947 open_dialog(filepath, &path, &outtype, &filetype, 1);
1951 path_topathname(path, filepath, fullpath);
1952 path_nameconform(fullpath, posixpath, PATH_STYLE_NATIVE, PATH_TYPE_BOOT);
TTErr setSchema(const TTSymbol schemaName)
TODO: Add documentation schemaName TODO: Add documentation.
bool TTBoolean
Boolean flag, same as Boolean on the Mac.
TTErr send(const TTSymbol aName)
Send a message to this object with no arguments.
TTAddress appendAttribute(TTSymbol anAttribute)
Return a new TTAddress with attribute part.
We build a directory of TTNodes, and you can request a pointer for any TTNode, or add an observer to ...
A type that contains a key and a value.
TTAddress getParent()
Get a pointer to the parent address.
const char * c_str() const
Return a pointer to the internal C-string.
The TTAddress class is used to represent a string and efficiently pass and compare that string...
Create and use Jamoma object instances.
size_type size() const noexcept
Return the number of elements.
this flag means that an address have no leading slash
Maintain a collection of TTValue objects indexed by TTSymbol pointers.
double TTFloat64
64 bit floating point number
#define ToAppName(ttName)
Convert a local application TTSymbol into a tt name.
void append(const T &anElementValueToAppend)
Insert a single TTElement at the end.
void * TTPtr
A generic pointer.
TTErr get(const TTSymbol aName, T &aReturnedValue) const
Get an attribute value for an object.
TTErr set(const TTSymbol aName, T aValue)
Set an attribute value for an object.
The TTSymbol class is used to represent a string and efficiently pass and compare that string...
TTErr append(const TTSymbol key, const TTValue &value)
Insert an item into the hash table.
float TTFloat32
32 bit floating point number
#define ToTTName(appName)
Convert a tt name TTSymbol into a local application name.
TTSymbol & getAttribute()
Get the attribute part.
TTSymbol getNameInstance()
Get the name.instance part.
const char * c_str() const
Return a pointer to the internal string as a C-string.
std::int32_t TTInt32
32 bit signed integer
void clear()
Clear all values from the vector, leaving with size of 0.
Something went wrong, but what exactly is not known. Typically used for context-specific problems...
TTAddressType getType()
Get the type.
TTErr
Jamoma Error Codes Enumeration of error codes that might be returned by any of the TTBlue functions a...
TTErr append(const TTSymbol key, const TTValue &value)
Insert an item into the hash table.
std::uint32_t TTUInt32
32 bit unsigned integer
size_t size() const
Find out the length of a string.
The TTString class is used to represent a string.
TTBoolean valid() const
Determine if the object contained by this TTObject is truly ready for use.
void resize(size_type n)
Change the number of elements.
[doxygenAppendixC_copyExample]