23 typedef struct extra {
26 #define EXTRA ((t_extra*)x->extra)
29 void WrapTTMapperClass(WrappedClassPtr c);
30 void WrappedMapperClass_new(
TTPtr self,
long argc, t_atom *argv);
31 void WrappedMapperClass_free(
TTPtr self);
33 void map_assist(
TTPtr self,
void *b,
long msg,
long arg,
char *dst);
35 void map_return_value(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv);
36 void map_return_input_going_down(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv);
37 void map_return_input_going_up(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv);
38 void map_return_output_going_down(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv);
39 void map_return_output_going_up(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv);
41 void map_int(
TTPtr self,
long value);
42 void map_float(
TTPtr self,
double value);
43 void map_list(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv);
45 void map_reset(
TTPtr self);
47 void map_subscribe(
TTPtr self);
51 ModularSpec *spec =
new ModularSpec;
52 spec->_wrap = &WrapTTMapperClass;
53 spec->_new = &WrappedMapperClass_new;
54 spec->_free = &WrappedMapperClass_free;
60 void WrapTTMapperClass(WrappedClassPtr c)
62 class_addmethod(c->maxClass, (method)map_assist,
"assist", A_CANT, 0L);
64 class_addmethod(c->maxClass, (method)map_return_value,
"return_value", A_CANT, 0);
65 class_addmethod(c->maxClass, (method)map_return_input_going_down,
"return_input_going_down", A_CANT, 0);
66 class_addmethod(c->maxClass, (method)map_return_input_going_up,
"return_input_going_up", A_CANT, 0);
67 class_addmethod(c->maxClass, (method)map_return_output_going_down,
"return_output_going_down", A_CANT, 0);
68 class_addmethod(c->maxClass, (method)map_return_output_going_up,
"return_output_going_up", A_CANT, 0);
70 class_addmethod(c->maxClass, (method)map_int,
"int", A_LONG, 0L);
71 class_addmethod(c->maxClass, (method)map_float,
"float", A_FLOAT, 0L);
72 class_addmethod(c->maxClass, (method)map_list,
"list", A_GIMME, 0L);
74 class_addmethod(c->maxClass, (method)map_reset,
"reset", 0L);
77 void WrappedMapperClass_new(
TTPtr self,
long argc, t_atom *argv)
80 t_symbol *relativeAddress;
81 long attrstart = attr_args_offset(argc, argv);
84 if (attrstart && argv)
85 relativeAddress = atom_getsym(argv);
87 relativeAddress = _sym_nothing;
95 x->
outlets[data_out] = outlet_new(x, NULL);
98 attr_args_process(x, argc, argv);
102 EXTRA->arguments =
new TTValue();
108 defer_low((t_object*)x, (method)map_subscribe, NULL, 0, 0);
111 void WrappedMapperClass_free(
TTPtr self)
114 delete EXTRA->arguments;
123 void map_assist(
TTPtr self,
void *b,
long msg,
long arg,
char *dst)
130 strcpy(dst,
"mapping output");
133 strcpy(dst,
"dumpout");
139 void map_subscribe(
TTPtr self)
187 void map_return_value(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv)
190 outlet_atoms(x->
outlets[data_out], argc, argv);
193 void map_return_input_going_down(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv)
195 object_obex_dumpout(
self, gensym(
"input/going/down"), argc, argv);
198 void map_return_input_going_up(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv)
200 object_obex_dumpout(
self, gensym(
"input/going/up"), argc, argv);
203 void map_return_output_going_down(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv)
205 object_obex_dumpout(
self, gensym(
"output/going/down"), argc, argv);
208 void map_return_output_going_up(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv)
210 object_obex_dumpout(
self, gensym(
"output/going/up"), argc, argv);
213 void map_bang(
TTPtr self)
215 map_list(
self, _sym_bang, 0, NULL);
218 void map_int(
TTPtr self,
long value)
222 atom_setlong(&a, value);
223 map_list(
self, _sym_int, 1, &a);
226 void map_float(
TTPtr self,
double value)
230 atom_setfloat(&a, value);
231 map_list(
self, _sym_float, 1, &a);
234 void map_list(
TTPtr self, t_symbol *msg,
long argc, t_atom *argv)
237 TTValue inputValue, outputValue;
246 void map_reset(
TTPtr self)
255 attr_args_process(x, argc, argv);
TTErr send(const TTSymbol aName)
Send a message to this object with no arguments.
TTHandle outlets
an array of outlet
TTErr wrapTTModularClassAsMaxClass(TTSymbol &ttblueClassName, const char *maxClassName, WrappedClassPtr *c, ModularSpec *specificities)
Wrap a Jamoma class as a Max class.
TTAddress address
sometime external needs to store an address (e.g. send, receive, view, ...)
int C74_EXPORT main(void)
Set up this class as a Max external the first time an object of this kind is instantiated.
The TTAddress class is used to represent a string and efficiently pass and compare that string...
void * extra
used to keep very specific things
void * TTPtr
A generic pointer.
TTErr set(const TTSymbol aName, T aValue)
Set an attribute value for an object.
TTObject wrappedObject
The instance of the Jamoma object we are wrapping.
Data Structure for this object.
Wraps Jamoma Core classes as objects for Max/MSP.
WrappedModularInstance * WrappedModularInstancePtr
Pointer to a wrapped instance of our object.
[doxygenAppendixC_copyExample]