[PD-cvs] pd/src m_class.c,1.1.1.2.2.5,1.1.1.2.2.6
Mathieu Bouchard
matju at users.sourceforge.net
Mon Oct 25 17:19:32 CEST 2004
Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9804
Modified Files:
Tag: devel_0_37
m_class.c
Log Message:
added class browser thingies:
t_class_list, class_list, class_find(), glob_update_class_info()
Index: m_class.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_class.c,v
retrieving revision 1.1.1.2.2.5
retrieving revision 1.1.1.2.2.6
diff -C2 -d -r1.1.1.2.2.5 -r1.1.1.2.2.6
*** m_class.c 23 Jul 2004 08:46:40 -0000 1.1.1.2.2.5
--- m_class.c 25 Oct 2004 15:19:30 -0000 1.1.1.2.2.6
***************
*** 127,130 ****
--- 127,175 ----
}
+ /* matju (for class browser) { */
+
+ typedef struct t_class_list {
+ t_class *head;
+ struct t_class_list *tail;
+ } t_class_list;
+
+ static t_class_list *class_list = 0;
+
+ /* O(n) asymptotic time :-} only looks for already loaded classes though. */
+ t_class *class_find (t_symbol *s) {
+ t_class_list *me = class_list;
+ for (; me; me=me->tail) if (me->head->c_name == s) return me->head;
+ return 0;
+ }
+
+ void glob_update_class_info (t_pd *bogus, t_symbol *s) {
+ t_class *c = class_find(s);
+ if (!c) { post("class not found!"); return; }
+ sys_vgui("global class_info; set class_info(%s) [list "
+ "helpname \"%s\" externdir \"%s\" size \"%d\" "
+ /*
+ t_methodentry *c_methods; int c_nmethod;
+ t_method c_freemethod;
+ struct _widgetbehavior *c_wb;
+ struct _parentwidgetbehavior *c_pwb;
+ t_savefn c_savefn;
+ t_propertiesfn c_propertiesfn;
+ int c_floatsignalin;
+ */
+ "gobj \"%d\" patchable \"%d\" firstin \"%d\" "
+ "firsttip \"%s\" methods {",s->s_name,c->c_helpname->s_name,c->c_externdir->s_name,
+ c->c_size,c->c_gobj,c->c_patchable,c->c_firstin,c->c_firsttip->s_name);
+ if (c-> c_bangmethod != pd_defaultbang) sys_vgui("<bang> ");
+ if (c->c_pointermethod != pd_defaultpointer) sys_vgui("<pointer> ");
+ if (c-> c_floatmethod != pd_defaultfloat) sys_vgui("<float> ");
+ if (c-> c_symbolmethod != pd_defaultsymbol) sys_vgui("<symbol> ");
+ if (c-> c_listmethod != pd_defaultlist) sys_vgui("<list> ");
+ if (c-> c_anymethod != pd_defaultanything) sys_vgui("<any> ");
+ {int i; for (i=0; i<c->c_nmethod; i++) sys_vgui("%s ",c->c_methods[i].me_name->s_name);}
+ sys_vgui("}]; class_info_callback %s\n",s->s_name);
+ }
+
+ /* } matju */
+
/* for now we assume that all "gobjs" are text unless explicitly
overridden later by calling class_setbehavior(). I'm not sure
More information about the Pd-cvs
mailing list