int JAMOMA_EXPORT_MAXOBJ main(void) { t_class *c; t_object *attr = NULL; long numDataspaces = 0; SymbolPtr* dataspaceNames = NULL; char dataspaces[2048]; short i; jamoma_init(); common_symbols_init(); jamoma_getDataspaceList(&numDataspaces, &dataspaceNames); dataspaces[0] = 0; for (i=0; i<numDataspaces; i++) { strcat(dataspaces, dataspaceNames[i]->s_name); strcat(dataspaces, " "); } // Define our class c = class_new("jcom.return",(method)return_new, (method)return_free, sizeof(t_return), (method)0L, A_GIMME, 0); // Make methods accessible for our class: class_addmethod(c, (method)return_bang, "bang", A_CANT, 0L); class_addmethod(c, (method)return_int, "int", A_DEFLONG, 0L); class_addmethod(c, (method)return_float, "float", A_DEFFLOAT, 0L); class_addmethod(c, (method)return_list, "list", A_GIMME, 0L); class_addmethod(c, (method)return_symbol, "anything", A_GIMME, 0L); class_addmethod(c, (method)return_dump, "dump", 0L); class_addmethod(c, (method)return_updatename, "update_name", A_CANT, 0L); class_addmethod(c, (method)return_assist, "assist", A_CANT, 0L); jcom_core_subscriber_classinit_extended(c, attr); // ATTRIBUTE: type - options are generic, integer, decimal, string, boolean jamoma_class_attr_new(c, "type", _sym_symbol, (method)return_attr_settype, (method)return_attr_gettype); // ATTRIBUTES: dataspace stuff CLASS_ATTR_SYM(c, "dataspace", 0, t_return, attrDataspace); CLASS_ATTR_LABEL(c, "dataspace", 0, "dataspace"); CLASS_ATTR_ENUM(c, "dataspace", 0, dataspaces); CLASS_ATTR_SYM(c, "dataspace/unit/native", 0, t_return, attrUnitNative); CLASS_ATTR_LABEL(c, "dataspace/unit/native", 0, "dataspace/unit/native"); CLASS_ATTR_CHAR(c, "enable", 0, t_return, attrEnable); CLASS_ATTR_STYLE(c, "enable", 0, "onoff"); // Finalize our class class_register(CLASS_BOX, c); return_class = c; return 0; }
int JAMOMA_EXPORT_MAXOBJ main(void) { long flags; t_class* c; long numDataspaces = 0; t_symbol** dataspaceNames = NULL; TTValue functionNames; TTSymbol* functionName; char dataspaces[2048]; char functions[2048]; char tempstr[64]; short i; jamoma_init(); common_symbols_init(); jamoma_getDataspaceList(&numDataspaces, &dataspaceNames); dataspaces[0] = 0; for(i=0; i<numDataspaces; i++){ strcat(dataspaces, dataspaceNames[i]->s_name); strcat(dataspaces, " "); } FunctionLib::getUnitNames(functionNames); functions[0] = 0; for(i=0; i<functionNames.getSize(); i++){ functionNames.get(i, &functionName); strcat(functions, functionName->getCString()); strcat(functions, " "); } c = class_new("jcom.paramui", (method)paramui_new, (method)paramui_free, sizeof(t_paramui), (method)NULL, A_GIMME, 0L); flags = JBOX_TEXTFIELD | JBOX_COLOR; jbox_initclass(c, flags); c->c_flags |= CLASS_FLAG_NEWDICTIONARY; // to specify dictionary constructor class_addmethod(c, (method)paramui_notify, "notify", A_CANT, 0); class_addmethod(c, (method)paramui_paint, "paint", A_CANT, 0); class_addmethod(c, (method)paramui_mousedown, "mousedown", A_CANT, 0); class_addmethod(c, (method)paramui_mousedragdelta, "mousedragdelta", A_CANT, 0); class_addmethod(c, (method)paramui_mouseup, "mouseup", A_CANT, 0); class_addmethod(c, (method)paramui_oksize, "oksize", A_CANT, 0); CLASS_ATTR_DEFAULT(c, "patching_rect", 0, "0. 0. 144. 20."); CLASS_ATTR_DEFAULT(c, "fontname", 0, JAMOMA_DEFAULT_FONT); snprintf(tempstr, 64, "%f", JAMOMA_DEFAULT_FONTSIZE); CLASS_ATTR_DEFAULT(c, "fontsize", 0, tempstr); CLASS_STICKY_ATTR(c, "category", 0, "Jamoma"); CLASS_ATTR_SYM(c, "name", 0, t_paramui, attr_name); CLASS_ATTR_LABEL(c, "name", 0, "Parameter Name"); CLASS_ATTR_DEFAULT(c, "name", 0, "my/parameter"); CLASS_ATTR_SAVE(c, "name", 0); CLASS_ATTR_ACCESSORS(c, "name", paramui_getName, paramui_setName); CLASS_ATTR_SYM(c, "label", 0, t_paramui, attr_label); CLASS_ATTR_LABEL(c, "label", 0, "Parameter Label"); CLASS_ATTR_STYLE(c, "label", 0, "text_onesymbol"); CLASS_ATTR_DEFAULT(c, "label", 0, ""); CLASS_ATTR_SAVE(c, "label", 0); CLASS_ATTR_SYM(c, "type", 0, t_paramui, attr_type); CLASS_ATTR_LABEL(c, "type", 0, "Data Type"); CLASS_ATTR_ENUM(c, "type", 0, "decimal integer string boolean"); CLASS_ATTR_DEFAULT(c, "type", 0, "decimal"); CLASS_ATTR_SAVE(c, "type", 0); CLASS_ATTR_ACCESSORS(c, "type", paramui_getType, paramui_setType); CLASS_ATTR_FLOAT_VARSIZE(c, "value/default", 0, t_paramui, attr_default, attr_defaultSize, LISTSIZE); CLASS_ATTR_LABEL(c, "value/default", 0, "Default Value"); CLASS_ATTR_DEFAULT(c, "value/default", 0, "0."); CLASS_ATTR_SAVE(c, "value/default", 0); CLASS_ATTR_ACCESSORS(c, "value/default", paramui_getDefault, paramui_setDefault); CLASS_ATTR_SYM(c, "ramp/drive", 0, t_paramui, attr_rampDrive); CLASS_ATTR_LABEL(c, "ramp/drive", 0, "Ramp Drive"); CLASS_ATTR_DEFAULT(c, "ramp/drive", 0, "none"); CLASS_ATTR_SAVE(c, "ramp/drive", 0); CLASS_ATTR_ACCESSORS(c, "ramp/drive", paramui_getRampDrive, paramui_setRampDrive); CLASS_ATTR_SYM(c, "ramp/function", 0, t_paramui, attr_rampFunction); CLASS_ATTR_LABEL(c, "ramp/function", 0, "Ramp Function/Shape"); CLASS_ATTR_ENUM(c, "ramp/function", 0, functions); CLASS_ATTR_DEFAULT(c, "ramp/function", 0, "linear"); CLASS_ATTR_SAVE(c, "ramp/function", 0); CLASS_ATTR_ACCESSORS(c, "ramp/function", paramui_getRampFunction, paramui_setRampFunction); CLASS_ATTR_LONG(c, "view/freeze", 0, t_paramui, attr_uiFreeze); CLASS_ATTR_LABEL(c, "view/freeze", 0, "Freeze the UI"); CLASS_ATTR_STYLE(c, "view/freeze", 0, "onoff"); CLASS_ATTR_DEFAULT(c, "view/freeze", 0, "0"); CLASS_ATTR_SAVE(c, "view/freeze", 0); CLASS_ATTR_ACCESSORS(c, "view/freeze", paramui_getUIFreeze, paramui_setUIFreeze); CLASS_ATTR_FLOAT(c, "value/stepsize", 0, t_paramui, attr_stepsize); CLASS_ATTR_LABEL(c, "value/stepsize", 0, "Step Size for inc/dec"); CLASS_ATTR_DEFAULT(c, "value/stepsize", 0, "1.0"); CLASS_ATTR_SAVE(c, "value/stepsize", 0); CLASS_ATTR_ACCESSORS(c, "value/stepsize", paramui_getStepsize, paramui_setStepsize); CLASS_ATTR_LONG(c, "priority", 0, t_paramui, attr_priority); CLASS_ATTR_LABEL(c, "priority", 0, "Priority when Recalled from Presets"); CLASS_ATTR_DEFAULT(c, "priority", 0, "0"); CLASS_ATTR_SAVE(c, "priority", 0); CLASS_ATTR_ACCESSORS(c, "priority", paramui_getPriority, paramui_setPriority); CLASS_ATTR_FLOAT_ARRAY(c, "range/bounds", 0, t_paramui, attr_range, 2); CLASS_ATTR_LABEL(c, "range/bounds", 0, "Range"); CLASS_ATTR_DEFAULT(c, "range/bounds", 0, "0.0 1.0"); CLASS_ATTR_SAVE(c, "range/bounds", 0); CLASS_ATTR_ACCESSORS(c, "range/bounds", paramui_getRange, paramui_setRange); CLASS_ATTR_LONG(c, "repetitions/allow", 0, t_paramui, attr_repetitions); CLASS_ATTR_LABEL(c, "repetitions/allow", 0, "Allow Repeated Values"); CLASS_ATTR_STYLE(c, "repetitions/allow", 0, "onoff"); CLASS_ATTR_DEFAULT(c, "repetitions/allow", 0, "0"); CLASS_ATTR_SAVE(c, "repetitions/allow", 0); CLASS_ATTR_ACCESSORS(c, "repetitions/allow", paramui_getRepetitions, paramui_setRepetitions); CLASS_ATTR_SYM(c, "range/clipmode", 0, t_paramui, attr_clipmode); CLASS_ATTR_LABEL(c, "range/clipmode", 0, "Mode for Clipping to Range"); CLASS_ATTR_ENUM(c, "range/clipmode", 0, "none low high both"); CLASS_ATTR_DEFAULT(c, "range/clipmode", 0, "none"); CLASS_ATTR_SAVE(c, "range/clipmode", 0); CLASS_ATTR_ACCESSORS(c, "range/clipmode", paramui_getClipmode, paramui_setClipmode); CLASS_ATTR_SYM(c, "description", 0, t_paramui, attr_description); CLASS_ATTR_LABEL(c, "description", 0, "Parameter Description"); //CLASS_ATTR_STYLE(c, "description", 0, "text_large"); CLASS_ATTR_STYLE(c, "description", 0, "text_onesymbol"); CLASS_ATTR_DEFAULT(c, "description", 0, "This parameter should do something."); CLASS_ATTR_SAVE(c, "description", 0); CLASS_ATTR_ACCESSORS(c, "description", paramui_getDescription, paramui_setDescription); CLASS_ATTR_SYM(c, "dataspace", 0, t_paramui, attr_dataspace); CLASS_ATTR_LABEL(c, "dataspace", 0, "Dataspace"); CLASS_ATTR_ENUM(c, "dataspace", 0, dataspaces); CLASS_ATTR_DEFAULT(c, "dataspace", 0, "none"); CLASS_ATTR_SAVE(c, "dataspace", 0); CLASS_ATTR_ACCESSORS(c, "dataspace", paramui_getDataspace, paramui_setDataspace); CLASS_ATTR_SYM(c, "dataspace/unit/active", 0, t_paramui, attr_unitActive); CLASS_ATTR_LABEL(c, "dataspace/unit/active", 0, "Active Unit within the Dataspace"); CLASS_ATTR_DEFAULT(c, "dataspace/unit/active", 0, "none"); CLASS_ATTR_SAVE(c, "dataspace/unit/active", 0); CLASS_ATTR_ACCESSORS(c, "dataspace/unit/active", paramui_getUnitActive, paramui_setUnitActive); CLASS_ATTR_SYM(c, "dataspace/unit/native", 0, t_paramui, attr_unitNative); CLASS_ATTR_LABEL(c, "dataspace/unit/native", 0, "Native Unit within the Dataspace"); CLASS_ATTR_DEFAULT(c, "dataspace/unit/native", 0, "none"); CLASS_ATTR_SAVE(c, "dataspace/unit/native", 0); CLASS_ATTR_ACCESSORS(c, "dataspace/unit/native", paramui_getUnitNative, paramui_setUnitNative); CLASS_STICKY_ATTR_CLEAR(c, "category"); class_register(CLASS_BOX, c); s_ui_class = c; sysmem_freeptr(dataspaceNames); return 0; }