[PD-cvs] pd/src m_pd.c,1.3.8.8.2.2,1.3.8.8.2.3
Mathieu Bouchard
matju at users.sourceforge.net
Wed Dec 13 06:25:00 CET 2006
Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16168
Modified Files:
Tag: desiredata
m_pd.c
Log Message:
added object_table
Index: m_pd.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_pd.c,v
retrieving revision 1.3.8.8.2.2
retrieving revision 1.3.8.8.2.3
diff -C2 -d -r1.3.8.8.2.2 -r1.3.8.8.2.3
*** m_pd.c 8 Dec 2006 04:46:18 -0000 1.3.8.8.2.2
--- m_pd.c 13 Dec 2006 05:24:58 -0000 1.3.8.8.2.3
***************
*** 6,10 ****
#include "desire.h"
! /* FIXME no out-of-memory testing yet! */
t_pd *pd_new(t_class *c)
--- 6,10 ----
#include "desire.h"
! t_hash *object_table;
t_pd *pd_new(t_class *c)
***************
*** 14,17 ****
--- 14,18 ----
x = (t_pd *)t_getbytes(c->c_size);
*x = c;
+ hash_set(object_table,x,(void*)0);
if (c->c_gobj) ((t_gobj *)x)->g_adix = appendix_new((t_gobj *)x);
if (c->c_patchable)
***************
*** 28,39 ****
if (c->c_freemethod) (*(t_gotfn)(c->c_freemethod))(x);
if (c->c_gobj) appendix_free((t_gobj *)x);
! if (c->c_patchable)
! {
! while (((t_object *)x)->ob_outlet)
! outlet_free(((t_object *)x)->ob_outlet);
! while (((t_object *)x)->ob_inlet)
! inlet_free(((t_object *)x)->ob_inlet);
! if (((t_object *)x)->ob_binbuf)
! binbuf_free(((t_object *)x)->ob_binbuf);
}
if (c->c_size) t_freebytes(x, c->c_size);
--- 29,38 ----
if (c->c_freemethod) (*(t_gotfn)(c->c_freemethod))(x);
if (c->c_gobj) appendix_free((t_gobj *)x);
! hash_delete(object_table,x);
! if (c->c_patchable) {
! t_object *y = (t_object *)x;
! while (y->ob_outlet) outlet_free(y->ob_outlet);
! while (y->ob_inlet) inlet_free(y->ob_inlet);
! if (y->ob_binbuf) binbuf_free(y->ob_binbuf);
}
if (c->c_size) t_freebytes(x, c->c_size);
***************
*** 65,110 ****
} t_bindlist;
! static void bindlist_bang(t_bindlist *x)
! {
! t_bindelem *e;
! for (e = x->b_list; e; e = e->e_next)
! pd_bang(e->e_who);
}
!
! static void bindlist_float(t_bindlist *x, t_float f)
! {
! t_bindelem *e;
! for (e = x->b_list; e; e = e->e_next)
! pd_float(e->e_who, f);
}
!
! static void bindlist_symbol(t_bindlist *x, t_symbol *s)
! {
! t_bindelem *e;
! for (e = x->b_list; e; e = e->e_next)
! pd_symbol(e->e_who, s);
}
!
! static void bindlist_pointer(t_bindlist *x, t_gpointer *gp)
! {
! t_bindelem *e;
! for (e = x->b_list; e; e = e->e_next)
! pd_pointer(e->e_who, gp);
}
!
! static void bindlist_list(t_bindlist *x, t_symbol *s,
! int argc, t_atom *argv)
! {
! t_bindelem *e;
! for (e = x->b_list; e; e = e->e_next)
! pd_list(e->e_who, s, argc, argv);
}
!
! static void bindlist_anything(t_bindlist *x, t_symbol *s,
! int argc, t_atom *argv)
! {
! t_bindelem *e;
! for (e = x->b_list; e; e = e->e_next)
! pd_typedmess(e->e_who, s, argc, argv);
}
--- 64,85 ----
} t_bindlist;
! #define bind_each(e,x) for (e = x->b_list; e; e = e->e_next)
! static void bindlist_bang(t_bindlist *x) {
! t_bindelem *e; bind_each(e,x) pd_bang(e->e_who);
}
! static void bindlist_float(t_bindlist *x, t_float f) {
! t_bindelem *e; bind_each(e,x) pd_float(e->e_who, f);
}
! static void bindlist_symbol(t_bindlist *x, t_symbol *s) {
! t_bindelem *e; bind_each(e,x) pd_symbol(e->e_who, s);
}
! static void bindlist_pointer(t_bindlist *x, t_gpointer *gp) {
! t_bindelem *e; bind_each(e,x) pd_pointer(e->e_who, gp);
}
! static void bindlist_list(t_bindlist *x, t_symbol *s, int argc, t_atom *argv) {
! t_bindelem *e; bind_each(e,x) pd_list(e->e_who, s, argc, argv);
}
! static void bindlist_anything(t_bindlist *x, t_symbol *s, int argc, t_atom *argv) {
! t_bindelem *e; bind_each(e,x) pd_typedmess(e->e_who, s, argc, argv);
}
***************
*** 267,294 ****
}
! void pd_bang(t_pd *x)
! {
! (*(*x)->c_bangmethod)(x);
! }
!
! void pd_float(t_pd *x, t_float f)
! {
! (*(*x)->c_floatmethod)(x, f);
! }
!
! void pd_pointer(t_pd *x, t_gpointer *gp)
! {
! (*(*x)->c_pointermethod)(x, gp);
! }
!
! void pd_symbol(t_pd *x, t_symbol *s)
! {
! (*(*x)->c_symbolmethod)(x, s);
! }
!
void pd_list(t_pd *x, t_symbol *s, int argc, t_atom *argv)
! {
! (*(*x)->c_listmethod)(x, &s_list, argc, argv);
! }
void mess_init(void);
--- 242,251 ----
}
! void pd_bang(t_pd *x) {(*x)->c_bangmethod(x);}
! void pd_float(t_pd *x, t_float f) {(*x)->c_floatmethod(x, f);}
! void pd_pointer(t_pd *x, t_gpointer *gp) {(*x)->c_pointermethod(x, gp);}
! void pd_symbol(t_pd *x, t_symbol *s) {(*x)->c_symbolmethod(x, s);}
void pd_list(t_pd *x, t_symbol *s, int argc, t_atom *argv)
! {(*x)->c_listmethod(x, &s_list, argc, argv);}
void mess_init(void);
***************
*** 300,303 ****
--- 257,261 ----
void pd_init(void)
{
+ object_table = hash_new(127);
mess_init();
obj_init();
More information about the Pd-cvs
mailing list