35 void *init_new(t_symbol* s,
long argc, t_atom* argv);
36 void init_free(t_init *x);
37 void init_assist(t_init *x,
void *b,
long m,
long a,
char *s);
38 void init_subscribe(t_init *x);
39 void init_return_address(t_init *x, t_symbol *msg,
long argc, t_atom *argv);
40 void init_return_value(t_init *x, t_symbol *msg,
long argc, t_atom *argv);
44 t_eclass *g_init_class;
50 extern "C" void JAMOMA_EXPORT_MAXOBJ setup_j0x2einit(
void)
55 c = eclass_new(
"j.init",(method)init_new, (method)init_free,
sizeof(t_init), 0, A_GIMME, 0);
59 eclass_addmethod(c, (method)init_return_address,
"return_address", A_CANT, 0);
60 eclass_addmethod(c, (method)init_return_value,
"return_value", A_CANT, 0);
61 eclass_addmethod(c, (method)init_assist,
"assist", A_CANT, 0L);
64 eclass_register(CLASS_BOX, c);
74 void *init_new(t_symbol *s,
long argc, t_atom *argv)
76 long attrstart = attr_args_offset(argc, argv);
77 t_init *x = (t_init *)eobj_new(g_init_class);
78 t_symbol *relativeAddress = _sym_nothing;
80 if (argc && argv[0].a_type == A_SYMBOL)
81 relativeAddress = atom_getsymbol(argv);
85 x->outlets = (TTHandle)sysmem_newptr(
sizeof(
TTPtr) * 2);
86 x->outlets[end_out] = bangout(x);
87 x->outlets[start_out] = bangout(x);
89 x->patcherNode = NULL;
90 x->address =
TTAddress(relativeAddress->s_name);
92 attr_args_process(x, argc, argv);
104 void init_free(t_init *x)
107 x->initReceiver.set(kTTSym_address, kTTAdrsEmpty);
120 void init_assist(t_init *x,
void *b,
long msg,
long arg,
char *dst)
126 strcpy(dst,
"bang when initialization starts");
128 strcpy(dst,
"bang when initilization is done");
132 void init_subscribe(t_init *x)
139 TTObject returnAddressCallback, returnValueCallback, empty;
144 if (!
jamoma_subscriber_create((t_eobj*)x, empty, x->address, x->subscriberObject, returnedAddress, &returnedNode, &returnedContextNode)) {
148 x->subscriberObject.
get(
"contextAddress", v);
149 contextAddress = v[0];
153 if (contextAddress != kTTAdrsEmpty) {
156 returnAddressCallback =
TTObject(
"callback");
157 returnAddressCallback.
set(kTTSym_baton,
TTPtr(x));
159 args.
append(returnAddressCallback);
161 returnValueCallback =
TTObject(
"callback");
162 returnValueCallback.
set(kTTSym_baton,
TTPtr(x));
164 args.
append(returnValueCallback);
166 x->initReceiver =
TTObject(kTTSym_Receiver, args);
168 x->initReceiver.set(kTTSym_address, contextAddress.
appendAttribute(kTTSym_initialized));
189 pd_error((t_object*)x,
"can't bind because %s is not a relative address", x->address.c_str());
192 void init_return_address(t_init *x, t_symbol *msg,
long argc, t_atom *argv)
198 void init_return_value(t_init *x, t_symbol *msg,
long argc, t_atom *argv)
200 if (atom_gettype(argv) == A_LONG) {
202 if (atom_getlong(argv) == 0)
203 outlet_bang((t_outlet*)x->outlets[start_out]);
205 outlet_bang((t_outlet*)x->outlets[end_out]);
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 ...
The TTAddress class is used to represent a string and efficiently pass and compare that string...
Create and use Jamoma object instances.
Various utilities for interfacing with Pd that are not specific to JamomaModular as such...
this flag means that an address have no leading slash
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.
[doxygenAppendixC_copyExample]