diff options
author | IOhannes m zmölnig <zmoelnig@users.sourceforge.net> | 2005-03-22 20:58:25 +0000 |
---|---|---|
committer | IOhannes m zmölnig <zmoelnig@users.sourceforge.net> | 2005-03-22 20:58:25 +0000 |
commit | 2b60d55c919e7588f5aff15936e83c300b3660bb (patch) | |
tree | 14d860de7f28083d3756ad91b627de70f26788f6 /src/z_makesymbol.c | |
parent | c500bc542cb7cc78d6dac3f7da3bff626056b1aa (diff) |
zexy-2.0:
- use of abstractions for objects that allow it
- some objects are build both as externals and abstractions (as slower fallbacks)
- code-layout is now 1:1 c-file<->object (this should allow for building of zexy as a collection of externals instead as a big library)
- matrix-objects have moved to iemmatrix !!
svn path=/trunk/externals/zexy/; revision=2641
Diffstat (limited to 'src/z_makesymbol.c')
-rw-r--r-- | src/z_makesymbol.c | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/src/z_makesymbol.c b/src/z_makesymbol.c deleted file mode 100644 index 89ba95f..0000000 --- a/src/z_makesymbol.c +++ /dev/null @@ -1,126 +0,0 @@ -/* -(l) 1210:forum::für::umläute:1999 - - "makesymbol" is something between "symbol" and "makefilename", thus storing and creating (formatted) - symbols... - -*/ - -#include "zexy.h" - -#include <string.h> -#include <stdio.h> - -#define MAXSTRINGARGS 10 -#define MAXSTRINGLENG 80 - -/* ----------------------- makesymbol --------------------- */ - -static t_class *makesymbol_class; - -typedef struct _makesymbol -{ - t_object x_obj; - t_symbol *x_sym; - - char* mask; - char* buf; -} t_makesymbol; - -static void reset_mask(t_makesymbol *x, t_symbol *s) -{ - if (*s->s_name) { - x->mask = s->s_name; - x->x_sym = s; - } else { - x->mask = "%s%s%s%s%s%s%s%s%s%s"; - x->x_sym = gensym(""); - } -} - -t_symbol* list2symbol(char *masque, int argc, t_atom *argv) -{ - typedef char cstring[MAXSTRINGLENG]; - - cstring buf[MAXSTRINGARGS]; - cstring buffer; - int i; - - for (i=0; i<argc; i++) { - atom_string(argv+i, buf[i], MAXSTRINGLENG); - } - - sprintf(buffer, - masque, - buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7], buf[8], buf[9]); - - return (gensym(buffer)); -} - -static void makesymbol_list(t_makesymbol *x, t_symbol *s, int argc, t_atom *argv) -{ - x->x_sym = list2symbol(x->mask, argc, argv); - outlet_symbol(x->x_obj.ob_outlet, x->x_sym); -} - -static void makesymbol_bang(t_makesymbol *x) -{ - outlet_symbol(x->x_obj.ob_outlet, x->x_sym); -} - - -static void *makesymbol_new(t_symbol *s, int argc, t_atom *argv) -{ - t_makesymbol *x = (t_makesymbol *)pd_new(makesymbol_class); - - x->buf = (char *)getbytes(MAXSTRINGLENG * sizeof(char)); - - x->mask = x->buf; - - if (argc) { - atom_string(argv, x->buf, MAXSTRINGLENG); - x->x_sym = gensym(x->buf); - } else { - x->mask = "%s%s%s%s%s%s%s%s%s%s"; - x->x_sym = gensym(""); - } - - outlet_new(&x->x_obj, &s_symbol); - inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("symbol"), gensym("sym1")); - - return (x); -} - -static void makesymbol_free(t_makesymbol *x) -{ - freebytes(x->buf, MAXSTRINGLENG*sizeof(char)); -} - - -static void helper(t_makesymbol *x) -{ - post("\n%c makesymbol :: create a formatted symbol", HEARTSYMBOL); - post("<list of anything>\t: glue up to 10 list-elements to 1 formatted symbol\n" - "'bang'\t\t\t: re-output\n" - "'help'\t\t\t: view this" - "\ninlet2 : <format-string>: new format-string (symbol !)" - "\noutlet : <symbol>\t: formatted concatenation"); - post("\ncreation:\"makesymbol [<format-string>]\": C-style format-string (%s only)", "%s"); - -post("\n\nmasq = %s", x->mask); -} - -void z_makesymbol_setup(void) -{ - makesymbol_class = class_new(gensym("makesymbol"), - (t_newmethod)makesymbol_new, (t_method)makesymbol_free, - sizeof(t_makesymbol), 0, A_GIMME, 0); - - class_addlist(makesymbol_class, makesymbol_list); - class_addbang(makesymbol_class, makesymbol_bang); - - class_addmethod(makesymbol_class, (t_method)reset_mask, gensym("sym1"), A_SYMBOL, 0); - - class_addmethod(makesymbol_class, (t_method)helper, gensym("help"), 0); - class_sethelpsymbol(makesymbol_class, gensym("zexy/makesymbol")); -} |