[PD-cvs] packages/patches add_string_support.patch,1.2,1.3

Martin Peach mrpeach at users.sourceforge.net
Wed Nov 7 21:25:09 CET 2007


Update of /cvsroot/pure-data/packages/patches
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24617

Modified Files:
	add_string_support.patch 
Log Message:
strings are now blobs. replaced "string' by "blob" everywhere


Index: add_string_support.patch
===================================================================
RCS file: /cvsroot/pure-data/packages/patches/add_string_support.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** add_string_support.patch	29 May 2007 15:26:12 -0000	1.2
--- add_string_support.patch	7 Nov 2007 20:25:06 -0000	1.3
***************
*** 10,16 ****
   }
   
! +static void messresponder_string(t_messresponder *x, t_string *st)
! +{ /* MP 20070107 string type */
! +    outlet_string(x->mr_outlet, st);
  +}
  +
--- 10,16 ----
   }
   
! +static void messresponder_blob(t_messresponder *x, t_blob *st)
! +{ /* MP 20070107 blob type */
! +    outlet_blob(x->mr_outlet, st);
  +}
  +
***************
*** 22,29 ****
   }
   
! +static void message_string(t_message *x, t_string *st)
  +{
  +    t_atom at;
! +    SETSTRING(&at, st);
  +    binbuf_eval(x->m_text.te_binbuf, &x->m_messresponder.mr_pd, 1, &at);
  +}
--- 22,29 ----
   }
   
! +static void message_blob(t_message *x, t_blob *st)
  +{
  +    t_atom at;
! +    SETBLOB(&at, st);
  +    binbuf_eval(x->m_text.te_binbuf, &x->m_messresponder.mr_pd, 1, &at);
  +}
***************
*** 36,40 ****
       class_addfloat(message_class, message_float);
       class_addsymbol(message_class, message_symbol);
! +    class_addstring(message_class, message_string);
       class_addlist(message_class, message_list);
       class_addanything(message_class, message_list);
--- 36,40 ----
       class_addfloat(message_class, message_float);
       class_addsymbol(message_class, message_symbol);
! +    class_addblob(message_class, message_blob);
       class_addlist(message_class, message_list);
       class_addanything(message_class, message_list);
***************
*** 51,59 ****
   }
   
! +t_string *atom_getstring(t_atom *a)  /* MP 20070108 */
  +{
! +    static unsigned char c = 0;/* a default string to avoid null pointers. This should be somewhere else...? */
! +    static t_string st = {1L, &c};
! +    if (a->a_type == A_STRING) return (a->a_w.w_string);
  +    else return (&st);
  +}
--- 51,59 ----
   }
   
! +t_blob *atom_getblob(t_atom *a)  /* MP 20070108 */
  +{
! +    static unsigned char c = 0;/* a default blob to avoid null pointers. This should be somewhere else...? */
! +    static t_blob st = {1L, &c};
! +    if (a->a_type == A_BLOB) return (a->a_w.w_blob);
  +    else return (&st);
  +}
***************
*** 73,78 ****
                   typedmess(target, stackwas->a_w.w_symbol, nargs-1, stackwas+1);
                   break;
! +            case A_STRING: /* MP 20070106 string type */
! +                if (nargs == 1) pd_string(target, stackwas->a_w.w_string);
  +                else pd_list(target, 0, nargs, stackwas);
  +                break;
--- 73,78 ----
                   typedmess(target, stackwas->a_w.w_symbol, nargs-1, stackwas+1);
                   break;
! +            case A_BLOB: /* MP 20070106 blob type */
! +                if (nargs == 1) pd_blob(target, stackwas->a_w.w_blob);
  +                else pd_list(target, 0, nargs, stackwas);
  +                break;
***************
*** 91,95 ****
   static t_symbol *class_loadsym;     /* name under which an extern is invoked */
   static void pd_defaultfloat(t_pd *x, t_float f);
! +static void pd_defaultstring(t_pd *x, t_string *st); /* MP20061226 string type */
   static void pd_defaultlist(t_pd *x, t_symbol *s, int argc, t_atom *argv);
   t_pd pd_objectmaker;    /* factory for creating "object" boxes */
--- 91,95 ----
   static t_symbol *class_loadsym;     /* name under which an extern is invoked */
   static void pd_defaultfloat(t_pd *x, t_float f);
! +static void pd_defaultblob(t_pd *x, t_blob *st); /* MP20061226 blob type */
   static void pd_defaultlist(t_pd *x, t_symbol *s, int argc, t_atom *argv);
   t_pd pd_objectmaker;    /* factory for creating "object" boxes */
***************
*** 99,105 ****
   }
   
! +static void pd_defaultstring(t_pd *x, t_string *st) /* MP 20061226 string type */
  +{ /* for now just reject it, later convert to symbol/float/list */
! +    pd_error(x, "%s: no method for string so far...", (*x)->c_name->s_name);
  +}
  +
--- 99,105 ----
   }
   
! +static void pd_defaultblob(t_pd *x, t_blob *st) /* MP 20061226 blob type */
  +{ /* for now just reject it, later convert to symbol/float/list */
! +    pd_error(x, "%s: no method for blob so far...", (*x)->c_name->s_name);
  +}
  +
***************
*** 111,115 ****
       c->c_floatmethod = pd_defaultfloat;
       c->c_symbolmethod = pd_defaultsymbol;
! +    c->c_stringmethod = pd_defaultstring; /* MP 20061226 string type */
       c->c_listmethod = pd_defaultlist;
       c->c_anymethod = pd_defaultanything;
--- 111,115 ----
       c->c_floatmethod = pd_defaultfloat;
       c->c_symbolmethod = pd_defaultsymbol;
! +    c->c_blobmethod = pd_defaultblob; /* MP 20061226 blob type */
       c->c_listmethod = pd_defaultlist;
       c->c_anymethod = pd_defaultanything;
***************
*** 119,127 ****
           class_addsymbol(c, fn);
       }
! +    else if (sel == &s_string) /* MP 20070106 string type */
  +    {
  +        post("class_addmethod: %p", fn);
! +        if (argtype != A_STRING || va_arg(ap, t_atomtype)) goto phooey;
! +        class_addstring(c, fn);
  +    }
       else if (sel == &s_list)
--- 119,127 ----
           class_addsymbol(c, fn);
       }
! +    else if (sel == &s_blob) /* MP 20070106 blob type */
  +    {
  +        post("class_addmethod: %p", fn);
! +        if (argtype != A_BLOB || va_arg(ap, t_atomtype)) goto phooey;
! +        class_addblob(c, fn);
  +    }
       else if (sel == &s_list)
***************
*** 132,138 ****
   }
   
! +void class_addstring(t_class *c, t_method fn) /* MP 20061226 string type */
  +{
! +    c->c_stringmethod = (t_stringmethod)fn;
  +}
  +
--- 132,138 ----
   }
   
! +void class_addblob(t_class *c, t_method fn) /* MP 20061226 blob type */
  +{
! +    c->c_blobmethod = (t_blobmethod)fn;
  +}
  +
***************
*** 144,152 ****
   t_symbol  s_y =         {"y", 0, 0};
   t_symbol  s_ =          {"", 0, 0};
! +t_symbol  s_string =    {"string", 0, 0}; /* MP 20061223 string type */
   
   static t_symbol *symlist[] = { &s_pointer, &s_float, &s_symbol, &s_bang,
  -    &s_list, &s_anything, &s_signal, &s__N, &s__X, &s_x, &s_y, &s_};
! +    &s_list, &s_anything, &s_signal, &s__N, &s__X, &s_x, &s_y, &s_, &s_string}; /* MP 20061223 added s_string */
   
   void mess_init(void)
--- 144,152 ----
   t_symbol  s_y =         {"y", 0, 0};
   t_symbol  s_ =          {"", 0, 0};
! +t_symbol  s_blob =    {"blob", 0, 0}; /* MP 20061223 blob type */
   
   static t_symbol *symlist[] = { &s_pointer, &s_float, &s_symbol, &s_bang,
  -    &s_list, &s_anything, &s_signal, &s__N, &s__X, &s_x, &s_y, &s_};
! +    &s_list, &s_anything, &s_signal, &s__N, &s__X, &s_x, &s_y, &s_, &s_blob}; /* MP 20061223 added s_blob */
   
   void mess_init(void)
***************
*** 156,163 ****
           return;
       }
! +    if (s == &s_string) /* MP 20061226 string type */
  +    {
  +        /*post("pd_typedmess argc = %d\n", argc);*//* MP 20061226 debug */
! +        if (argc == 1) (*c->c_stringmethod)(x, argv->a_w.w_string);
  +        else goto badarg;
  +        return;
--- 156,163 ----
           return;
       }
! +    if (s == &s_blob) /* MP 20061226 blob type */
  +    {
  +        /*post("pd_typedmess argc = %d\n", argc);*//* MP 20061226 debug */
! +        if (argc == 1) (*c->c_blobmethod)(x, argv->a_w.w_blob);
  +        else goto badarg;
  +        return;
***************
*** 170,180 ****
                   dp++;
                   break;
! +            case A_STRING:/* MP 20070106 string type */
! +                /*post("pd_typedmess A_STRING");*/
  +                if (!argc) goto badarg;
! +                if (argv->a_type == A_STRING)
  +                {
! +                    /*post("argv->a_type == A_STRING, argc = %d, narg= %d", argc, narg);*/
! +                    *ap = (t_int)(argv->a_w.w_string);
  +                }
  +                argc--;
--- 170,180 ----
                   dp++;
                   break;
! +            case A_BLOB:/* MP 20070106 blob type */
! +                /*post("pd_typedmess A_BLOB");*/
  +                if (!argc) goto badarg;
! +                if (argv->a_type == A_BLOB)
  +                {
! +                    /*post("argv->a_type == A_BLOB, argc = %d, narg= %d", argc, narg);*/
! +                    *ap = (t_int)(argv->a_w.w_blob);
  +                }
  +                argc--;
***************
*** 191,197 ****
           case 's': SETSYMBOL(at, va_arg(ap, t_symbol *)); break;
  +        case 't':
! +            SETSTRING(at, va_arg(ap, t_string *));
! +            /*post("pd_vmess: arg[0].a_w.w_string = %p", arg[0].a_w.w_string);*/
! +            break; /* MP 20061226 string type */
           case 'i': SETFLOAT(at, va_arg(ap, t_int)); break;       
           case 'p': SETPOINTER(at, va_arg(ap, t_gpointer *)); break;
--- 191,197 ----
           case 's': SETSYMBOL(at, va_arg(ap, t_symbol *)); break;
  +        case 't':
! +            SETBLOB(at, va_arg(ap, t_blob *));
! +            /*post("pd_vmess: arg[0].a_w.w_blob = %p", arg[0].a_w.w_blob);*/
! +            break; /* MP 20061226 blob type */
           case 'i': SETFLOAT(at, va_arg(ap, t_int)); break;       
           case 'p': SETPOINTER(at, va_arg(ap, t_gpointer *)); break;
***************
*** 208,212 ****
   typedef void (*t_floatmethod)(t_pd *x, t_float f);
   typedef void (*t_symbolmethod)(t_pd *x, t_symbol *s);
! +typedef void (*t_stringmethod)(t_pd *x, t_string *st); /* MP20061226 string type */
   typedef void (*t_listmethod)(t_pd *x, t_symbol *s, int argc, t_atom *argv);
   typedef void (*t_anymethod)(t_pd *x, t_symbol *s, int argc, t_atom *argv);
--- 208,212 ----
   typedef void (*t_floatmethod)(t_pd *x, t_float f);
   typedef void (*t_symbolmethod)(t_pd *x, t_symbol *s);
! +typedef void (*t_blobmethod)(t_pd *x, t_blob *st); /* MP20061226 blob type */
   typedef void (*t_listmethod)(t_pd *x, t_symbol *s, int argc, t_atom *argv);
   typedef void (*t_anymethod)(t_pd *x, t_symbol *s, int argc, t_atom *argv);
***************
*** 216,220 ****
       t_floatmethod c_floatmethod;
       t_symbolmethod c_symbolmethod;
! +    t_stringmethod c_stringmethod;  /* MP20061226 string type */
       t_listmethod c_listmethod;
       t_anymethod c_anymethod;
--- 216,220 ----
       t_floatmethod c_floatmethod;
       t_symbolmethod c_symbolmethod;
! +    t_blobmethod c_blobmethod;  /* MP20061226 blob type */
       t_listmethod c_listmethod;
       t_anymethod c_anymethod;
***************
*** 231,235 ****
       t_float *iu_floatslot;
       t_symbol **iu_symslot;
! +    t_string **iu_stringslot; /* MP 20061226 string type */
       t_sample iu_floatsignalvalue;
   };
--- 231,235 ----
       t_float *iu_floatslot;
       t_symbol **iu_symslot;
! +    t_blob **iu_blobslot; /* MP 20061226 blob type */
       t_sample iu_floatsignalvalue;
   };
***************
*** 239,247 ****
   #define i_floatslot i_un.iu_floatslot
   #define i_symslot i_un.iu_symslot
! +#define i_stringslot i_un.iu_stringslot /* MP 20061226 string type */
   
   static t_class *inlet_class, *pointerinlet_class, *floatinlet_class,
  -    *symbolinlet_class;
! +    *symbolinlet_class, *stringinlet_class; /* MP 20061226 added stringinlet_class */
   
   #define ISINLET(pd) ((*(pd) == inlet_class) || \
--- 239,247 ----
   #define i_floatslot i_un.iu_floatslot
   #define i_symslot i_un.iu_symslot
! +#define i_blobslot i_un.iu_blobslot /* MP 20061226 blob type */
   
   static t_class *inlet_class, *pointerinlet_class, *floatinlet_class,
  -    *symbolinlet_class;
! +    *symbolinlet_class, *blobinlet_class; /* MP 20061226 added blobinlet_class */
   
   #define ISINLET(pd) ((*(pd) == inlet_class) || \
***************
*** 251,271 ****
   }
   
! +static void inlet_string(t_inlet *x, t_string *st) /* MP20061226 string type */
  +{
! +    /*post("inlet_string (%p): st %p", &inlet_string, st);*/
! +    if (x->i_symfrom == &s_string)
  +    {
! +        /*post("inlet_string calling pd_vmess");*/
  +        pd_vmess(x->i_dest, x->i_symto, "t", st);
  +    }
  +    else if (!x->i_symfrom)
  +    {
! +        /*post("inlet_string calling pd_string");*/
! +        pd_string(x->i_dest, st);
  +    }
  +    else
  +    {
! +        /*post("inlet_string calling inlet_wrong");*/
! +        inlet_wrong(x, &s_string);
  +    }
  +}
--- 251,271 ----
   }
   
! +static void inlet_blob(t_inlet *x, t_blob *st) /* MP20061226 blob type */
  +{
! +    /*post("inlet_blob (%p): st %p", &inlet_blob, st);*/
! +    if (x->i_symfrom == &s_blob)
  +    {
! +        /*post("inlet_blob calling pd_vmess");*/
  +        pd_vmess(x->i_dest, x->i_symto, "t", st);
  +    }
  +    else if (!x->i_symfrom)
  +    {
! +        /*post("inlet_blob calling pd_blob");*/
! +        pd_blob(x->i_dest, st);
  +    }
  +    else
  +    {
! +        /*post("inlet_blob calling inlet_wrong");*/
! +        inlet_wrong(x, &s_blob);
  +    }
  +}
***************
*** 278,288 ****
   }
   
! +t_inlet *stringinlet_new(t_object *owner, t_string **stp) /* MP 20061226 string type */
  +{
! +    t_inlet *x = (t_inlet *)pd_new(stringinlet_class), *y, *y2;
  +    x->i_owner = owner;
  +    x->i_dest = 0;
! +    x->i_symfrom = &s_string;
! +    x->i_stringslot = stp;
  +    x->i_next = 0;
  +    if (y = owner->ob_inlet)
--- 278,288 ----
   }
   
! +t_inlet *blobinlet_new(t_object *owner, t_blob **stp) /* MP 20061226 blob type */
  +{
! +    t_inlet *x = (t_inlet *)pd_new(blobinlet_class), *y, *y2;
  +    x->i_owner = owner;
  +    x->i_dest = 0;
! +    x->i_symfrom = &s_blob;
! +    x->i_blobslot = stp;
  +    x->i_next = 0;
  +    if (y = owner->ob_inlet)
***************
*** 302,306 ****
       class_addfloat(inlet_class, inlet_float);
       class_addsymbol(inlet_class, inlet_symbol);
! +    class_addstring(inlet_class, inlet_string); /* MP 20061226 string type */
       class_addlist(inlet_class, inlet_list);
       class_addanything(inlet_class, inlet_anything);
--- 302,306 ----
       class_addfloat(inlet_class, inlet_float);
       class_addsymbol(inlet_class, inlet_symbol);
! +    class_addblob(inlet_class, inlet_blob); /* MP 20061226 blob type */
       class_addlist(inlet_class, inlet_list);
       class_addanything(inlet_class, inlet_anything);
***************
*** 310,316 ****
   }
   
! +void outlet_string(t_outlet *x, t_string *st) /* MP 20061226 string type */
  +{
! +    /*post("outlet_string %p %lu", st, st->s_length);*/
  +    t_outconnect *oc;
  +    if(++stackcount >= STACKITER)
--- 310,316 ----
   }
   
! +void outlet_blob(t_outlet *x, t_blob *st) /* MP 20061226 blob type */
  +{
! +    /*post("outlet_blob %p %lu", st, st->s_length);*/
  +    t_outconnect *oc;
  +    if(++stackcount >= STACKITER)
***************
*** 318,322 ****
  +    else
  +        for (oc = x->o_connections; oc; oc = oc->oc_next)
! +            pd_string(oc->oc_to, st);
  +    --stackcount;
  +}
--- 318,322 ----
  +    else
  +        for (oc = x->o_connections; oc; oc = oc->oc_next)
! +            pd_blob(oc->oc_to, st);
  +    --stackcount;
  +}
***************
*** 336,343 ****
   }
   
! +void pd_string(t_pd *x, t_string *st) /* MP20061226 string type */
  +{
! +    /*post("pd_string: st %p length %lu (*x)->c_stringmethod %p", st, st->s_length, (*x)->c_stringmethod);*/
! +    (*(*x)->c_stringmethod)(x, st);
  +}
  +
--- 336,343 ----
   }
   
! +void pd_blob(t_pd *x, t_blob *st) /* MP20061226 blob type */
  +{
! +    /*post("pd_blob: st %p length %lu (*x)->c_blobmethod %p", st, st->s_length, (*x)->c_blobmethod);*/
! +    (*(*x)->c_blobmethod)(x, st);
  +}
  +
***************
*** 356,367 ****
   } t_gpointer;
   
! +#define PD_STRINGS 1 /* MP20070211 Use this to test for string capability */
! +/* MP20061223 string type: */
! +typedef struct _string /* pointer to a string */
  +{
! +   unsigned long s_length; /* length of string in bytes */
! +   unsigned char *s_data; /* pointer to 1st byte of string */
! +} t_string;
! +/* ...MP20061223 string type */
  +
  +
--- 356,367 ----
   } t_gpointer;
   
! +#define PD_BLOBS 1 /* MP20070211 Use this to test for blob capability */
! +/* MP20061223 blob type: */
! +typedef struct _blob /* pointer to a blob */
  +{
! +   unsigned long s_length; /* length of blob in bytes */
! +   unsigned char *s_data; /* pointer to 1st byte of blob */
! +} t_blob;
! +/* ...MP20061223 blob type */
  +
  +
***************
*** 373,377 ****
       struct _glist *w_list;
       int w_index;
! +    t_string *w_string; /* MP20061223 string type */
   } t_word;
   
--- 373,377 ----
       struct _glist *w_list;
       int w_index;
! +    t_blob *w_blob; /* MP20061223 blob type */
   } t_word;
   
***************
*** 383,387 ****
  -    A_CANT
  +    A_CANT,
! +    A_STRING /* MP20061223 string type */
   }  t_atomtype;
   
--- 383,387 ----
  -    A_CANT
  +    A_CANT,
! +    A_BLOB /* MP20061223 blob type */
   }  t_atomtype;
   
***************
*** 391,395 ****
   EXTERN t_symbol s_float;
   EXTERN t_symbol s_symbol;
! +EXTERN t_symbol s_string;
   EXTERN t_symbol s_bang;
   EXTERN t_symbol s_list;
--- 391,395 ----
   EXTERN t_symbol s_float;
   EXTERN t_symbol s_symbol;
! +EXTERN t_symbol s_blob;
   EXTERN t_symbol s_bang;
   EXTERN t_symbol s_list;
***************
*** 399,403 ****
   #define SETSYMBOL(atom, s) ((atom)->a_type = A_SYMBOL, \
       (atom)->a_w.w_symbol = (s))
! +#define SETSTRING(atom, st) ((atom)->a_type = A_STRING, (atom)->a_w.w_string = (st)) /* MP 20061226 string type */
   #define SETDOLLAR(atom, n) ((atom)->a_type = A_DOLLAR, \
       (atom)->a_w.w_index = (n))
--- 399,403 ----
   #define SETSYMBOL(atom, s) ((atom)->a_type = A_SYMBOL, \
       (atom)->a_w.w_symbol = (s))
! +#define SETBLOB(atom, st) ((atom)->a_type = A_BLOB, (atom)->a_w.w_blob = (st)) /* MP 20061226 blob type */
   #define SETDOLLAR(atom, n) ((atom)->a_type = A_DOLLAR, \
       (atom)->a_w.w_index = (n))
***************
*** 407,411 ****
   EXTERN t_int atom_getint(t_atom *a);
   EXTERN t_symbol *atom_getsymbol(t_atom *a);
! +EXTERN t_string *atom_getstring(t_atom *a);/* MP 20070108 sring type */
   EXTERN t_symbol *atom_gensym(t_atom *a);
   EXTERN t_float atom_getfloatarg(int which, int argc, t_atom *argv);
--- 407,411 ----
   EXTERN t_int atom_getint(t_atom *a);
   EXTERN t_symbol *atom_getsymbol(t_atom *a);
! +EXTERN t_blob *atom_getblob(t_atom *a);/* MP 20070108 blob type */
   EXTERN t_symbol *atom_gensym(t_atom *a);
   EXTERN t_float atom_getfloatarg(int which, int argc, t_atom *argv);
***************
*** 415,419 ****
   EXTERN void pd_float(t_pd *x, t_float f);
   EXTERN void pd_symbol(t_pd *x, t_symbol *s);
! +EXTERN void pd_string(t_pd *x, t_string *st); /* MP 20061226 string type */
   EXTERN void pd_list(t_pd *x, t_symbol *s, int argc, t_atom *argv);
   EXTERN void pd_anything(t_pd *x, t_symbol *s, int argc, t_atom *argv);
--- 415,419 ----
   EXTERN void pd_float(t_pd *x, t_float f);
   EXTERN void pd_symbol(t_pd *x, t_symbol *s);
! +EXTERN void pd_blob(t_pd *x, t_blob *st); /* MP 20061226 blob type */
   EXTERN void pd_list(t_pd *x, t_symbol *s, int argc, t_atom *argv);
   EXTERN void pd_anything(t_pd *x, t_symbol *s, int argc, t_atom *argv);
***************
*** 423,427 ****
   EXTERN void outlet_float(t_outlet *x, t_float f);
   EXTERN void outlet_symbol(t_outlet *x, t_symbol *s);
! +EXTERN void outlet_string(t_outlet *x, t_string *st); /* MP 20061226 string type */
   EXTERN void outlet_list(t_outlet *x, t_symbol *s, int argc, t_atom *argv);
   EXTERN void outlet_anything(t_outlet *x, t_symbol *s, int argc, t_atom *argv);
--- 423,427 ----
   EXTERN void outlet_float(t_outlet *x, t_float f);
   EXTERN void outlet_symbol(t_outlet *x, t_symbol *s);
! +EXTERN void outlet_blob(t_outlet *x, t_blob *st); /* MP 20061226 blob type */
   EXTERN void outlet_list(t_outlet *x, t_symbol *s, int argc, t_atom *argv);
   EXTERN void outlet_anything(t_outlet *x, t_symbol *s, int argc, t_atom *argv);
***************
*** 431,435 ****
   EXTERN void class_doaddfloat(t_class *c, t_method fn);
   EXTERN void class_addsymbol(t_class *c, t_method fn);
! +EXTERN void class_addstring(t_class *c, t_method fn);/* MP 20061226 string type */
   EXTERN void class_addlist(t_class *c, t_method fn);
   EXTERN void class_addanything(t_class *c, t_method fn);
--- 431,435 ----
   EXTERN void class_doaddfloat(t_class *c, t_method fn);
   EXTERN void class_addsymbol(t_class *c, t_method fn);
! +EXTERN void class_addblob(t_class *c, t_method fn);/* MP 20061226 blob type */
   EXTERN void class_addlist(t_class *c, t_method fn);
   EXTERN void class_addanything(t_class *c, t_method fn);
***************
*** 439,443 ****
   #define class_addfloat(x, y) class_doaddfloat((x), (t_method)(y))
   #define class_addsymbol(x, y) class_addsymbol((x), (t_method)(y))
! +#define class_addstring(x, y) class_addstring((x), (t_method)(y)) /* MP20061226 string type */
   #define class_addlist(x, y) class_addlist((x), (t_method)(y))
   #define class_addanything(x, y) class_addanything((x), (t_method)(y))
--- 439,443 ----
   #define class_addfloat(x, y) class_doaddfloat((x), (t_method)(y))
   #define class_addsymbol(x, y) class_addsymbol((x), (t_method)(y))
! +#define class_addblob(x, y) class_addblob((x), (t_method)(y)) /* MP20061226 blob type */
   #define class_addlist(x, y) class_addlist((x), (t_method)(y))
   #define class_addanything(x, y) class_addanything((x), (t_method)(y))





More information about the Pd-cvs mailing list