24 typedef struct extra {
30 #define EXTRA ((t_extra*)x->extra)
34 void WrapTTDataClass(WrappedClassPtr c);
35 void WrappedDataClass_new(
TTPtr self,
long argc, t_atom *argv);
36 void WrappedDataClass_free(
TTPtr self);
48 void data_new_address(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv);
49 void data_subscribe(
TTPtr self, t_symbol *address);
50 void data_address(
TTPtr self, t_symbol *name);
52 void data_return_value(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv);
55 void WrappedDataClass_anything(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv);
77 void data_list(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv);
88 void data_inc(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv);
99 void data_dec(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv);
105 #if defined(JMOD_RETURN)
106 extern "C" void JAMOMA_EXPORT_MAXOBJ setup_j0x2ereturn(
void)
107 #elif defined(JMOD_MESSAGE)
108 extern "C" void JAMOMA_EXPORT_MAXOBJ setup_j0x2emessage(
void)
110 extern "C" void JAMOMA_EXPORT_MAXOBJ setup_j0x2eparameter(
void)
113 ModularSpec *spec =
new ModularSpec;
114 spec->_wrap = &WrapTTDataClass;
115 spec->_new = &WrappedDataClass_new;
116 spec->_free = &WrappedDataClass_free;
117 spec->_any = &WrappedDataClass_anything;
118 spec->_notify = NULL;
120 #if defined(JMOD_MESSAGE)
122 #elif defined(JMOD_RETURN)
130 void WrapTTDataClass(WrappedClassPtr c)
132 eclass_addmethod(c->pdClass, (method)
data_assist,
"assist", A_CANT, 0L);
134 eclass_addmethod(c->pdClass, (method)data_return_value,
"return_value", A_CANT, 0L);
136 eclass_addmethod(c->pdClass, (method)
data_bang,
"bang", A_NULL, 0L);
137 eclass_addmethod(c->pdClass, (method)
data_float,
"float", A_FLOAT, 0);
138 eclass_addmethod(c->pdClass, (method)
data_list,
"list", A_GIMME, 0);
140 eclass_addmethod(c->pdClass, (method)
data_inc,
"+", A_GIMME, 0);
141 eclass_addmethod(c->pdClass, (method)
data_dec,
"-", A_GIMME, 0);
143 eclass_addmethod(c->pdClass, (method)data_address,
"address", A_SYM,0);
144 eclass_addmethod(c->pdClass, (method)
data_loadbang,
"loadbang", A_NULL,0);
148 void WrappedDataClass_new(
TTPtr self,
long argc, t_atom *argv)
151 t_symbol* relativeAddress;
152 long attrstart = attr_args_offset(argc, argv);
155 relativeAddress = _sym_nothing;
159 EXTRA->address = _sym_nothing;
160 EXTRA->arrayArgs =
new TTValue();
162 if (attrstart && argv)
163 if (atom_gettype(argv) == A_SYM)
164 relativeAddress = atom_getsym(argv);
166 if (relativeAddress == _sym_nothing) {
167 pd_error((t_object*)x,
"needs a name as first argument");
172 if (relativeAddress == gensym(
"data/mute") ||
173 relativeAddress == gensym(
"data/bypass") ||
174 relativeAddress == gensym(
"data/freeze") ||
175 relativeAddress == gensym(
"data/preview") ||
176 relativeAddress == gensym(
"audio/mute") ||
177 relativeAddress == gensym(
"audio/bypass") ||
178 relativeAddress == gensym(
"audio/mix") ||
179 relativeAddress == gensym(
"audio/gain") ||
180 relativeAddress == gensym(
"model") ||
181 relativeAddress == gensym(
"preset") ) {
183 pd_error((t_object*)x,
"%s address is reserved by j.model", relativeAddress->s_name);
194 x->
outlets[data_out] = outlet_new((t_object*)x, NULL);
197 if (argc > 1 && argv)
200 EXTRA->address = relativeAddress;
201 data_new_address(
self, relativeAddress, argc--, argv++);
205 void WrappedDataClass_free(
TTPtr self)
212 void data_new_address(
TTPtr self, t_symbol *relativeAddress,
long argc, t_atom *argv)
232 attr_args_process(x, argc, argv);
238 data_subscribe((t_object*)x, relativeAddress);
242 void data_subscribe(
TTPtr self, t_symbol *relativeAddress)
253 pd_error((t_object*)x,
"error when registering %s", relativeAddress->s_name);
271 pd_error((t_object*)x,
"can't register because %s is not a relative address", relativeAddress->s_name);
275 void data_address(
TTPtr self, t_symbol *address)
282 wrappedModularClass_unregister(x);
289 data_new_address(
self, address, argc, argv);
297 strcpy(dst,
"input");
301 strcpy(dst,
"direct: values");
304 strcpy(dst,
"dumpout");
320 atom_setfloat(&a, value);
333 void WrappedDataClass_anything(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv)
341 void data_return_value(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv)
346 if ( msg == _sym_nothing)
347 outlet_anything((t_outlet*)x->
outlets[data_out], NULL, argc, argv);
349 outlet_anything((t_outlet*)x->
outlets[data_out], msg, argc, argv);
375 data_subscribe((t_object*)x, EXTRA->address);
TTObject subscriberObject
The instance of a TTSubscriber object used to register the wrapped object in the tree structure...
TTErr send(const TTSymbol aName)
Send a message to this object with no arguments.
TTHandle outlets
an array of outlet
void data_float(TTPtr self, t_float value)
Process an incoming float value.
void data_assist(TTPtr self, TTPtr b, long msg, long arg, char *dst)
Provide assistance on input and output while patching.
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...
void * extra
used to keep very specific things
this flag means that an address have no leading slash
void data_bang(TTPtr self)
Process an incoming 'bang' message.
void * TTPtr
A generic pointer.
void data_list(TTPtr self, t_symbol *msg, long argc, t_atom *argv)
Process an incoming message containing a list.
void data_inc(TTPtr self, t_symbol *msg, long argc, t_atom *argv)
Increase parameter value in steps.
TTObject wrappedObject
The instance of the Jamoma object we are wrapping.
Wraps Jamoma Core classes as objects for PureData.
Data Structure for this object.
void data_loadbang(TTPtr self)
Loadbang method to register parameter after box creation.
TTAddressType getType()
Get the type.
void data_dec(TTPtr self, t_symbol *msg, long argc, t_atom *argv)
Decrease parameter value in steps.
TTBoolean useInternals
The hash table can be used as an array of wrappedObject.
WrappedModularInstance * WrappedModularInstancePtr
Pointer to a wrapped instance of our object.
[doxygenAppendixC_copyExample]
TTErr wrapTTModularClassAsPdClass(TTSymbol &ttblueClassName, const char *pdClassName, WrappedClassPtr *c, ModularSpec *specificities)
Wrap a Jamoma class as a Pd class.