Update of /cvsroot/pure-data/externals/miXed/toxy
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23253/toxy
Modified Files:
Makefile.objects build_counter notes.txt plustot.c
plustot.env.c plustot.h plustot.in.c plustot.out.c
plustot.print.c plustot.qlist.c plustot.var.c
Added Files:
pluswidget.c
Log Message:
toxy alpha18 and pddp alpha2 (see notes.txt for toxy, pddp and shared)
Index: plustot.qlist.c
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/toxy/plustot.qlist.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** plustot.qlist.c 11 Jan 2005 10:33:23 -0000 1.3
--- plustot.qlist.c 30 May 2005 09:29:26 -0000 1.4
***************
*** 1,3 ****
! /* Copyright (c) 2003 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
--- 1,3 ----
! /* Copyright (c) 2003-2005 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
***************
*** 30,34 ****
typedef struct _plustot_qlist
{
! t_object x_ob;
t_glist *x_glist;
t_plustob *x_tob;
--- 30,34 ----
typedef struct _plustot_qlist
{
! t_plusobject x_plusobject;
t_glist *x_glist;
t_plustob *x_tob;
***************
*** 169,172 ****
--- 169,173 ----
plusbob_release((t_plusbob *)x->x_tob);
if (x->x_proxy) pd_free((t_pd *)x->x_proxy);
+ plusobject_free(&x->x_plusobject);
}
***************
*** 180,184 ****
(tob = plustob_new(tin, 0)))
{
! x = (t_plustot_qlist *)pd_new(plustot_qlist_class);
plusbob_preserve((t_plusbob *)tob);
plusbob_setowner((t_plusbob *)tob, (t_pd *)x);
--- 181,185 ----
(tob = plustob_new(tin, 0)))
{
! x = (t_plustot_qlist *)plusobject_new(plustot_qlist_class, s, ac, av);
plusbob_preserve((t_plusbob *)tob);
plusbob_setowner((t_plusbob *)tob, (t_pd *)x);
***************
*** 187,192 ****
x->x_tob = tob;
x->x_proxy = plusproxy_qlist_new(x);
! inlet_new((t_object *)x, (t_pd *)x->x_proxy, 0, 0);
! outlet_new((t_object *)x, &s_anything);
x->x_rightout = outlet_new((t_object *)x, &s_symbol);
}
--- 188,193 ----
x->x_tob = tob;
x->x_proxy = plusproxy_qlist_new(x);
! plusinlet_new(&x->x_plusobject, (t_pd *)x->x_proxy, 0, 0);
! plusoutlet_new(&x->x_plusobject, &s_anything);
x->x_rightout = outlet_new((t_object *)x, &s_symbol);
}
***************
*** 208,211 ****
--- 209,213 ----
(t_method)plustot_qlist_free,
sizeof(t_plustot_qlist), 0, 0);
+ plusclass_inherit(plustot_qlist_class, gensym("+qlist"));
class_addbang(plustot_qlist_class, plustot_qlist_bang);
Index: notes.txt
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/toxy/notes.txt,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** notes.txt 10 May 2005 17:59:59 -0000 1.3
--- notes.txt 30 May 2005 09:29:26 -0000 1.4
***************
*** 8,14 ****
--- 8,32 ----
. find a way for "package require" to work out-of-the-box on windows
* tow: canvas-wide and type-on-canvas-wide broadcasting
+ * plustot:
+ . do not evaluate if fresh, unless explicitly forced to (are side-effects
+ to be modal, requested with a flag, or triggered with a message?)
+ . creation time evaluation
DONE for toxy
+ alpha18
+ * plustot:
+ . adjusted to the new, stubified +bob handling
+ . +selectors registered as creation selectors, so that, e.g. "+in" is
+ a valid input form for "plustot +in" ("+tot +in" remains valid too)
+ . "save" callback changes every "+tot" selector to "plustot",
+ and every "+selector" to "plustot +selector"
+ . customized appearance:
+ - creation selector omitted if equals "plustot" or "+tot"
+ - text, border and i/o outline is brown, border is thicker,
+ inlets and outlets are lightgrey inside and taller
+ . mouse click interpreted as the message 'bang'
+ . accepting commands without arguments (beware: this is yet to be debugged)
+
alpha17
* widget:
--- NEW FILE: pluswidget.c ---
/* Copyright (c) 2005 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
/* This is a prototype of a custom object box. It might be replaced with
a new core object type, T_CUSTOM (te_type bitfield would have to be
extended then). */
#include <stdio.h>
#include <string.h>
#include "m_pd.h"
#include "g_canvas.h"
#include "common/loud.h"
#include "toxy/plusbob.h"
#include "plustot.h"
#ifdef KRZYSZCZ
//#define PLUSWIDGET_DEBUG
#endif
struct _pluswidget
{
char *pw_vistext; /* binbuf_gettext()-style (no null termination) */
int pw_vissize;
int pw_rtextactive;
int pw_ishit;
};
/* Code that might be merged back to g_text.c starts here: */
static void pluswidget_getrect(t_gobj *z, t_glist *glist,
int *xp1, int *yp1, int *xp2, int *yp2)
{
t_pluswidget *pw = ((t_plusobject *)z)->po_widget;
int width, height;
float x1, y1, x2, y2;
if (glist->gl_editor && glist->gl_editor->e_rtext)
{
if (pw->pw_rtextactive)
{
t_rtext *y = glist_findrtext(glist, (t_text *)z);
width = rtext_width(y);
height = rtext_height(y);
}
else
{
int font = glist_getfont(glist);
width = pw->pw_vissize * sys_fontwidth(font) + 2;
height = sys_fontheight(font) + 4; /* 2-pixel top/bottom margins */
}
}
else width = height = 10;
x1 = text_xpix((t_text *)z, glist);
y1 = text_ypix((t_text *)z, glist);
x2 = x1 + width;
y2 = y1 + height;
y1 += 1;
*xp1 = x1;
*yp1 = y1;
*xp2 = x2;
*yp2 = y2;
}
static void pluswidget_drawiofor(t_glist *glist, t_plusobject *po,
int firsttime,
char *tag, int x1, int y1, int x2, int y2)
{
int n, nplus, i, width = x2 - x1;
for (n = po->po_noutlets, nplus = (n == 1 ? 1 : n-1), i = 0; i < n; i++)
{
int onset = x1 + (width - IOWIDTH) * i / nplus;
if (firsttime)
sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %so%d\
-outline brown -fill lightgrey\n",
glist_getcanvas(glist),
onset, y2 - 3,
onset + IOWIDTH, y2 + 2,
tag, i);
else
sys_vgui(".x%lx.c coords %so%d %d %d %d %d\n",
glist_getcanvas(glist), tag, i,
onset, y2 - 3,
onset + IOWIDTH, y2 + 2);
}
for (n = po->po_ninlets, nplus = (n == 1 ? 1 : n-1), i = 0; i < n; i++)
{
int onset = x1 + (width - IOWIDTH) * i / nplus;
if (firsttime)
sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %si%d\
-outline brown -fill lightgrey\n",
glist_getcanvas(glist),
onset, y1 - 3,
onset + IOWIDTH, y1 + 2,
tag, i);
else
sys_vgui(".x%lx.c coords %si%d %d %d %d %d\n",
glist_getcanvas(glist), tag, i,
onset, y1 - 3,
onset + IOWIDTH, y1 + 2);
}
}
static void pluswidget_drawborder(t_text *t, t_glist *glist,
char *tag, int firsttime)
{
int x1, y1, x2, y2;
pluswidget_getrect(&t->te_g, glist, &x1, &y1, &x2, &y2);
if (firsttime)
sys_vgui(".x%lx.c create line\
%d %d %d %d %d %d %d %d %d %d -width 2 -fill brown -tags %sR\n",
glist_getcanvas(glist),
x1, y1, x2, y1, x2, y2, x1, y2, x1, y1, tag);
else
sys_vgui(".x%lx.c coords %sR\
%d %d %d %d %d %d %d %d %d %d\n",
glist_getcanvas(glist), tag,
x1, y1, x2, y1, x2, y2, x1, y2, x1, y1);
pluswidget_drawiofor(glist, (t_plusobject *)t, firsttime,
tag, x1, y1, x2, y2);
}
static void pluswidget_displace(t_gobj *z, t_glist *glist, int dx, int dy)
{
t_text *t = (t_text *)z;
t->te_xpix += dx;
t->te_ypix += dy;
if (glist_isvisible(glist))
{
t_rtext *y = glist_findrtext(glist, t);
rtext_displace(y, dx, dy);
pluswidget_drawborder(t, glist, rtext_gettag(y), 0);
canvas_fixlinesfor(glist_getcanvas(glist), t);
}
}
static void pluswidget_select(t_gobj *z, t_glist *glist, int state)
{
t_pluswidget *pw = ((t_plusobject *)z)->po_widget;
t_rtext *y = glist_findrtext(glist, (t_text *)z);
rtext_select(y, state);
if (glist_isvisible(glist) && glist->gl_havewindow)
{
if (state)
sys_vgui(".x%lx.c itemconfigure %s -fill blue\n",
glist, rtext_gettag(y));
else
sys_vgui(".x%lx.c itemconfigure %s -text {%.*s} -fill brown\n",
glist, rtext_gettag(y), pw->pw_vissize, pw->pw_vistext);
}
}
static void pluswidget_activate(t_gobj *z, t_glist *glist, int state)
{
t_pluswidget *pw = ((t_plusobject *)z)->po_widget;
t_rtext *y = glist_findrtext(glist, (t_text *)z);
rtext_activate(y, state);
pw->pw_rtextactive = state;
pluswidget_drawborder((t_text *)z, glist, rtext_gettag(y), 0);
}
static void pluswidget_delete(t_gobj *z, t_glist *glist)
{
canvas_deletelinesfor(glist, (t_text *)z);
}
static void pluswidget_vis(t_gobj *z, t_glist *glist, int vis)
{
t_pluswidget *pw = ((t_plusobject *)z)->po_widget;
if (vis)
{
if (glist->gl_havewindow)
{
t_rtext *y = glist_findrtext(glist, (t_text *)z);
pluswidget_drawborder((t_text *)z, glist, rtext_gettag(y), 1);
rtext_draw(y);
sys_vgui(".x%lx.c itemconfigure %s -text {%.*s} -fill brown\n",
glist, rtext_gettag(y), pw->pw_vissize, pw->pw_vistext);
}
}
else
{
if (glist->gl_havewindow)
{
t_rtext *y = glist_findrtext(glist, (t_text *)z);
text_eraseborder((t_text *)z, glist, rtext_gettag(y));
rtext_erase(y);
}
}
}
static int pluswidget_click(t_gobj *z, t_glist *glist, int xpix, int ypix,
int shift, int alt, int dbl, int doit)
{
if (doit)
pd_bang((t_pd *)z);
return (1);
}
static t_widgetbehavior pluswidget_widgetbehavior =
{
pluswidget_getrect,
pluswidget_displace,
pluswidget_select,
pluswidget_activate,
pluswidget_delete,
pluswidget_vis,
pluswidget_click,
};
/* Code that might be merged back to g_text.c ends here. */
void plusobject_widgetfree(t_plusobject *po)
{
t_pluswidget *pw = po->po_widget;
if (pw)
{
if (pw->pw_vistext)
freebytes(pw->pw_vistext, pw->pw_vissize);
freebytes(pw, sizeof(*pw));
}
}
void plusobject_widgetcreate(t_plusobject *po, t_symbol *s, int ac, t_atom *av)
{
t_pluswidget *pw = getbytes(sizeof(*pw));
t_binbuf *inbb = binbuf_new();
if (!s || s == &s_)
s = plusps_tot;
po->po_widget = pw;
if ((s != totps_plustot && s != plusps_tot) || ac == 0)
{
t_atom at;
if (s == totps_plustot)
s = plusps_tot;
SETSYMBOL (&at, s);
binbuf_add(inbb, 1, &at);
}
if (ac > 0)
binbuf_add(inbb, ac, av);
binbuf_gettext(inbb, &pw->pw_vistext, &pw->pw_vissize);
binbuf_free(inbb);
pw->pw_rtextactive = 0;
pw->pw_ishit = 0;
}
void plusclass_widgetsetup(t_class *c)
{
class_setwidget(c, &pluswidget_widgetbehavior);
}
Index: plustot.c
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/toxy/plustot.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** plustot.c 11 Jan 2005 10:33:23 -0000 1.4
--- plustot.c 30 May 2005 09:29:26 -0000 1.5
***************
*** 1,3 ****
! /* Copyright (c) 2003-2004 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
--- 1,3 ----
! /* Copyright (c) 2003-2005 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
***************
*** 8,11 ****
--- 8,12 ----
#include "common/loud.h"
#include "common/grow.h"
+ #include "unstable/forky.h"
#include "hammer/file.h"
#include "common/props.h"
***************
*** 34,38 ****
#endif
- static t_symbol *plusps_tot;
static t_symbol *plusps_env;
static t_symbol *plusps_in;
--- 35,38 ----
***************
*** 43,46 ****
--- 43,65 ----
static t_symbol *totps_query;
+ static void plussymbols_create(void)
+ {
+ /* public */
+ totps_plustot = gensym("plustot");
+ plusps_tot = gensym("+tot");
+ plusps_Ti = gensym("+Ti");
+ plusps_To = gensym("+To");
+ plusps_Tv = gensym("+Tv");
+
+ /* private */
+ plusps_env = gensym("+env");
+ plusps_in = gensym("+in");
+ plusps_var = gensym("+var");
+ plusps_out = gensym("+out");
+ plusps_qlist = gensym("+qlist");
+ plusps_print = gensym("+print");
+ totps_query = gensym("query");
+ }
+
static void plusloud_tcldirty(t_pd *caller, char *fnname)
{
***************
*** 92,95 ****
--- 111,136 ----
static t_plustin *plustin_default = 0;
+ static int plustin_testCmd(ClientData cd, Tcl_Interp *interp,
+ int objc, Tcl_Obj **objv)
+ {
+ Tcl_Obj *result;
+ post("this is a test");
+ if (objc != 2)
+ {
+ Tcl_WrongNumArgs(interp, 1, objv, "anyValue");
+ return (TCL_ERROR);
+ }
+
+ post("in refcount: %d", objv[1]->refCount);
+ result = Tcl_DuplicateObj(objv[1]);
+ post("out refcount: %d", result->refCount);
+
+ if (result == NULL)
+ return (TCL_ERROR);
+ Tcl_SetObjResult(interp, result);
+ post("exit refcount: %d", result->refCount);
+ return (TCL_OK);
+ }
+
/* To be called from derived constructors or plustin's provider. */
t_plustin *plustin_create(t_plustype *tp, t_plusbob *parent, t_symbol *id)
***************
*** 107,110 ****
--- 148,157 ----
if (Tcl_Init(interp) == TCL_ERROR)
plusloud_tclerror(0, interp, "interpreter initialization failed");
+ else
+ {
+ Tcl_CreateObjCommand(interp, "test::test",
+ (Tcl_ObjCmdProc*)plustin_testCmd,
+ (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
+ }
Tcl_Release(interp);
}
***************
*** 319,324 ****
t_plustin *plustag_tobtin(t_symbol *tag, t_pd *caller)
{
! return (plustag_validroot(tag, plusps_To, caller)
! ? ((t_plustob *)tag)->tob_tin : 0);
}
--- 366,371 ----
t_plustin *plustag_tobtin(t_symbol *tag, t_pd *caller)
{
! t_plusbob *bob = plustag_validroot(tag, plusps_To, caller);
! return (bob ? ((t_plustob *)bob)->tob_tin : 0);
}
***************
*** 326,331 ****
Tcl_Obj *plustag_tobvalue(t_symbol *tag, t_pd *caller)
{
! return (plustag_validroot(tag, plusps_To, caller)
! ? ((t_plustob *)tag)->tob_value : 0);
}
--- 373,378 ----
Tcl_Obj *plustag_tobvalue(t_symbol *tag, t_pd *caller)
{
! t_plusbob *bob = plustag_validroot(tag, plusps_To, caller);
! return (bob ? ((t_plustob *)bob)->tob_value : 0);
}
***************
*** 409,415 ****
if (plustag_isvalid(s, 0))
{
! if (plustag_validroot(s, plusps_To, PLUSBOB_OWNER))
{
! t_plustob *from = (t_plustob *)s;
return (plustob_set(tob, from->tob_tin, from->tob_value));
}
--- 456,463 ----
if (plustag_isvalid(s, 0))
{
! t_plusbob *bob;
! if (bob = plustag_validroot(s, plusps_To, PLUSBOB_OWNER))
{
! t_plustob *from = (t_plustob *)bob;
return (plustob_set(tob, from->tob_tin, from->tob_value));
}
***************
*** 963,967 ****
typedef struct _plustot
{
! t_object x_ob;
t_glist *x_glist;
t_plustob *x_tob; /* interpreter's result (after invocation) */
--- 1011,1015 ----
typedef struct _plustot
{
! t_plusobject x_plusobject;
t_glist *x_glist;
t_plustob *x_tob; /* interpreter's result (after invocation) */
***************
*** 1344,1348 ****
plusproxy_new((t_pd *)x, i, x->x_tob->tob_tin);
for (i = 1; i < x->x_nproxies; i++)
! inlet_new((t_object *)x, (t_pd *)x->x_proxies[i], 0, 0);
x->x_mainproxy = x->x_proxies[0];
/* second pass: traverse non-empty slots, create variables */
--- 1392,1397 ----
plusproxy_new((t_pd *)x, i, x->x_tob->tob_tin);
for (i = 1; i < x->x_nproxies; i++)
! plusinlet_new(&x->x_plusobject,
! (t_pd *)x->x_proxies[i], 0, 0);
x->x_mainproxy = x->x_proxies[0];
/* second pass: traverse non-empty slots, create variables */
***************
*** 1781,1784 ****
--- 1830,1863 ----
}
+ static void plustot_save(t_gobj *z, t_binbuf *bb)
+ {
+ t_text *t = (t_text *)z;
+ t_binbuf *inbb = t->te_binbuf;
+ int ac = binbuf_getnatom(inbb);
+ t_atom *av = binbuf_getvec(inbb);
+ binbuf_addv(bb, "ssii", gensym("#X"), gensym("obj"),
+ (int)t->te_xpix, (int)t->te_ypix);
+ if (ac && av->a_type == A_SYMBOL)
+ {
+ t_symbol *s = av->a_w.w_symbol;
+ if (s != totps_plustot)
+ {
+ t_atom at;
+ SETSYMBOL(&at, totps_plustot);
+ binbuf_add(bb, 1, &at);
+ if (s == plusps_tot && ac > 1)
+ {
+ inbb = binbuf_new();
+ binbuf_add(inbb, ac - 1, av + 1);
+ }
+ }
+ }
+ else loudbug_bug("plustot_save");
+ binbuf_addbinbuf(bb, inbb);
+ binbuf_addsemi(bb);
+ if (inbb != t->te_binbuf)
+ binbuf_free(inbb);
+ }
+
#ifdef PLUSTOT_DEBUG
static void plustot_debug(t_plustot *x)
***************
*** 1822,1825 ****
--- 1901,1905 ----
}
if (x->x_script) scriptlet_free(x->x_script);
+ plusobject_free(&x->x_plusobject);
}
***************
*** 1833,1840 ****
t_plustob *tob = 0;
t_scriptlet *script = scriptlet_new(0, 0, 0, 0, glist, 0);
! if (ac && av->a_type == A_SYMBOL)
{
cmdname = av->a_w.w_symbol;
ac--; av++;
if (*cmdname->s_name == '+')
{
--- 1913,1925 ----
t_plustob *tob = 0;
t_scriptlet *script = scriptlet_new(0, 0, 0, 0, glist, 0);
! if (s != plusps_tot && s != totps_plustot && s != &s_)
! cmdname = s;
! else if (ac && av->a_type == A_SYMBOL)
{
cmdname = av->a_w.w_symbol;
ac--; av++;
+ }
+ if (cmdname)
+ {
if (*cmdname->s_name == '+')
{
***************
*** 1857,1861 ****
--- 1942,1949 ----
}
}
+ #if 0
+ /* FIXME forgot where this constraint came from, debug carefully... */
if (ac)
+ #endif
{
ctail = plusstring_fromatoms(ac, av, script);
***************
*** 1866,1870 ****
(tob = plustob_new(tin, 0)))
{
! x = (t_plustot *)pd_new(plustot_class);
/* tin already preserved (plustob_new() did it) */
plusbob_preserve((t_plusbob *)tob);
--- 1954,1958 ----
(tob = plustob_new(tin, 0)))
{
! x = (t_plustot *)plusobject_new(plustot_class, cmdname, ac, av);
/* tin already preserved (plustob_new() did it) */
plusbob_preserve((t_plusbob *)tob);
***************
*** 1934,1938 ****
}
}
! outlet_new((t_object *)x, &s_symbol);
}
else
--- 2022,2026 ----
}
}
! plusoutlet_new(&x->x_plusobject, &s_symbol);
}
else
***************
*** 1951,1964 ****
}
void plustot_setup(void)
{
post("beware! this is plustot %s, %s %s build...",
TOXY_VERSION, loud_ordinal(TOXY_BUILD), TOXY_RELEASE);
! plustot_class = class_new(gensym("+tot"),
(t_newmethod)plustot_new,
(t_method)plustot_free,
sizeof(t_plustot), 0, A_GIMME, 0);
! class_addcreator((t_newmethod)plustot_new,
! gensym("plustot"), A_GIMME, 0);
class_addbang(plustot_class, plustot_bang);
class_addfloat(plustot_class, plustot_float);
--- 2039,2092 ----
}
+ void plusobject_widgetfree(t_plusobject *po);
+ void plusobject_widgetcreate(t_plusobject *po, t_symbol *s, int ac, t_atom *av);
+ void plusclass_widgetsetup(t_class *c);
+
+ void plusobject_free(t_plusobject *po)
+ {
+ plusobject_widgetfree(po);
+ }
+
+ t_plusobject *plusobject_new(t_class *c, t_symbol *s, int ac, t_atom *av)
+ {
+ t_plusobject *po = (t_plusobject *)pd_new(c);
+ po->po_ninlets = 1;
+ po->po_noutlets = 0;
+ plusobject_widgetcreate(po, s, ac, av);
+ return (po);
+ }
+
+ t_inlet *plusinlet_new(t_plusobject *po, t_pd *dest,
+ t_symbol *s1, t_symbol *s2)
+ {
+ po->po_ninlets++;
+ return (inlet_new((t_object *)po, dest, s1, s2));
+ }
+
+ t_outlet *plusoutlet_new(t_plusobject *po, t_symbol *s)
+ {
+ po->po_noutlets++;
+ return (outlet_new((t_object *)po, s));
+ }
+
+ void plusclass_inherit(t_class *c, t_symbol *s)
+ {
+ class_addcreator((t_newmethod)plustot_new, s, A_GIMME, 0);
+ forky_setsavefn(c, plustot_save);
+ plusclass_widgetsetup(c);
+ }
+
void plustot_setup(void)
{
post("beware! this is plustot %s, %s %s build...",
TOXY_VERSION, loud_ordinal(TOXY_BUILD), TOXY_RELEASE);
! plussymbols_create();
!
! plustot_class = class_new(totps_plustot,
(t_newmethod)plustot_new,
(t_method)plustot_free,
sizeof(t_plustot), 0, A_GIMME, 0);
! plusclass_inherit(plustot_class, plusps_tot);
!
class_addbang(plustot_class, plustot_bang);
class_addfloat(plustot_class, plustot_float);
***************
*** 1975,1982 ****
class_addmethod(plustot_class, (t_method)plustot_tot,
gensym("query"), A_GIMME, 0);
- #ifdef PLUSTOT_DEBUG
- class_addmethod(plustot_class, (t_method)plustot_debug,
- gensym("debug"), 0);
- #endif
plusproxy_class = class_new(gensym("+tot proxy"), 0,
--- 2103,2106 ----
***************
*** 1986,2006 ****
class_addsymbol(plusproxy_class, plusproxy_symbol);
class_addlist(plusproxy_class, plusproxy_list);
#ifdef PLUSTOT_DEBUG
class_addmethod(plusproxy_class, (t_method)plusproxy_debug,
gensym("debug"), 0);
#endif
- plusps_tot = gensym("+tot");
- plusps_env = gensym("+env");
- plusps_in = gensym("+in");
- plusps_var = gensym("+var");
- plusps_out = gensym("+out");
- plusps_qlist = gensym("+qlist");
- plusps_print = gensym("+print");
- plusps_Ti = gensym("+Ti");
- plusps_To = gensym("+To");
- plusps_Tv = gensym("+Tv");
- totps_query = gensym("query");
-
plustin_basetype = plusenv_setup();
plustin_type = plustype_new(plustin_basetype, plusps_Ti,
--- 2110,2121 ----
class_addsymbol(plusproxy_class, plusproxy_symbol);
class_addlist(plusproxy_class, plusproxy_list);
+
#ifdef PLUSTOT_DEBUG
+ class_addmethod(plustot_class, (t_method)plustot_debug,
+ gensym("debug"), 0);
class_addmethod(plusproxy_class, (t_method)plusproxy_debug,
gensym("debug"), 0);
#endif
plustin_basetype = plusenv_setup();
plustin_type = plustype_new(plustin_basetype, plusps_Ti,
***************
*** 2014,2018 ****
sizeof(t_plusvar),
(t_plustypefn)plusvar_delete, 0, 0, 0);
-
plustot_env_setup();
plustot_in_setup();
--- 2129,2132 ----
Index: plustot.h
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/toxy/plustot.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** plustot.h 10 Dec 2004 20:47:06 -0000 1.2
--- plustot.h 30 May 2005 09:29:26 -0000 1.3
***************
*** 1,3 ****
! /* Copyright (c) 2003-2004 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
--- 1,3 ----
! /* Copyright (c) 2003-2005 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
***************
*** 24,27 ****
--- 24,40 ----
#define t_plusvar struct _plusvar
+ EXTERN_STRUCT _pluswidget;
+ #define t_pluswidget struct _pluswidget
+
+ typedef struct _plusobject
+ {
+ t_object po_ob;
+ t_pluswidget *po_widget;
+ int po_ninlets;
+ int po_noutlets;
+ } t_plusobject;
+
+ t_symbol *totps_plustot;
+ t_symbol *plusps_tot;
t_symbol *plusps_Ti;
t_symbol *plusps_To;
***************
*** 48,54 ****
--- 61,69 ----
int plustob_isshared(t_plustob *tob);
Tcl_Obj *plustob_getvalue(t_plustob *tob);
+
t_plustin *plustag_tobtin(t_symbol *s, t_pd *caller);
Tcl_Obj *plustag_tobvalue(t_symbol *s, t_pd *caller);
Tcl_Obj *plusatom_tobvalue(t_atom *ap, t_pd *caller);
+
Tcl_Obj *plustob_set(t_plustob *tob, t_plustin *tin, Tcl_Obj *ob);
Tcl_Obj *plustob_setfloat(t_plustob *tob, t_float f);
***************
*** 69,72 ****
--- 84,94 ----
Tcl_Obj *plusvar_setlist(t_plusvar *var, int ac, t_atom *av, int doit);
+ void plusobject_free(t_plusobject *po);
+ t_plusobject *plusobject_new(t_class *c, t_symbol *s, int ac, t_atom *av);
+ t_inlet *plusinlet_new(t_plusobject *po, t_pd *dest,
+ t_symbol *s1, t_symbol *s2);
+ t_outlet *plusoutlet_new(t_plusobject *po, t_symbol *s);
+ void plusclass_inherit(t_class *c, t_symbol *s);
+
void plustot_env_setup(void);
void plustot_in_setup(void);
Index: plustot.in.c
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/toxy/plustot.in.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** plustot.in.c 19 Feb 2004 22:23:18 -0000 1.1
--- plustot.in.c 30 May 2005 09:29:26 -0000 1.2
***************
*** 1,3 ****
! /* Copyright (c) 2003 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
--- 1,3 ----
! /* Copyright (c) 2003-2005 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
***************
*** 16,20 ****
typedef struct _plustot_in
{
! t_object x_ob;
t_glist *x_glist;
t_plustob *x_tob;
--- 16,20 ----
typedef struct _plustot_in
{
! t_plusobject x_plusobject;
t_glist *x_glist;
t_plustob *x_tob;
***************
*** 76,79 ****
--- 76,80 ----
plusbob_release((t_plusbob *)x->x_tob);
if (x->x_proxy) pd_free((t_pd *)x->x_proxy);
+ plusobject_free(&x->x_plusobject);
}
***************
*** 87,91 ****
(tob = plustob_new(tin, 0)))
{
! x = (t_plustot_in *)pd_new(plustot_in_class);
plusbob_preserve((t_plusbob *)tob);
plusbob_setowner((t_plusbob *)tob, (t_pd *)x);
--- 88,92 ----
(tob = plustob_new(tin, 0)))
{
! x = (t_plustot_in *)plusobject_new(plustot_in_class, s, ac, av);
plusbob_preserve((t_plusbob *)tob);
plusbob_setowner((t_plusbob *)tob, (t_pd *)x);
***************
*** 94,99 ****
x->x_tob = tob;
x->x_proxy = plusproxy_in_new((t_pd *)x);
! inlet_new((t_object *)x, (t_pd *)x->x_proxy, 0, 0);
! outlet_new((t_object *)x, &s_symbol);
}
else
--- 95,100 ----
x->x_tob = tob;
x->x_proxy = plusproxy_in_new((t_pd *)x);
! plusinlet_new(&x->x_plusobject, (t_pd *)x->x_proxy, 0, 0);
! plusoutlet_new(&x->x_plusobject, &s_symbol);
}
else
***************
*** 114,117 ****
--- 115,119 ----
(t_method)plustot_in_free,
sizeof(t_plustot_in), 0, 0);
+ plusclass_inherit(plustot_in_class, gensym("+in"));
class_addbang(plustot_in_class, plustot_in_bang);
class_addfloat(plustot_in_class, plustot_in_float);
Index: plustot.env.c
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/toxy/plustot.env.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** plustot.env.c 17 Apr 2004 17:45:29 -0000 1.2
--- plustot.env.c 30 May 2005 09:29:26 -0000 1.3
***************
*** 1,3 ****
! /* Copyright (c) 2003 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
--- 1,3 ----
! /* Copyright (c) 2003-2005 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
***************
*** 20,24 ****
typedef struct _plustot_env
{
! t_object x_ob;
t_plustin *x_tin;
t_glist *x_glist;
--- 20,24 ----
typedef struct _plustot_env
{
! t_plusobject x_plusobject;
t_plustin *x_tin;
t_glist *x_glist;
***************
*** 98,101 ****
--- 98,102 ----
plusbob_release((t_plusbob *)x->x_tin);
hammerfile_free(x->x_filehandle);
+ plusobject_free(&x->x_plusobject);
}
***************
*** 111,119 ****
{
int warned = 0;
! x = (t_plustot_env *)pd_new(plustot_env_class);
x->x_tin = tin;
plusbob_preserve((t_plusbob *)tin);
x->x_glist = gl;
! outlet_new((t_object *)x, &s_symbol);
if (deftin)
/* true if both oldtin == 0 (we are first in this glist)
--- 112,120 ----
{
int warned = 0;
! x = (t_plustot_env *)plusobject_new(plustot_env_class, s, ac, av);
x->x_tin = tin;
plusbob_preserve((t_plusbob *)tin);
x->x_glist = gl;
! plusoutlet_new(&x->x_plusobject, &s_symbol);
if (deftin)
/* true if both oldtin == 0 (we are first in this glist)
***************
*** 144,147 ****
--- 145,149 ----
(t_method)plustot_env_free,
sizeof(t_plustot_env), 0, 0);
+ plusclass_inherit(plustot_env_class, gensym("+env"));
class_addbang(plustot_env_class, plustot_env_bang);
class_addmethod(plustot_env_class, (t_method)plustot_env_source,
Index: plustot.print.c
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/toxy/plustot.print.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** plustot.print.c 8 Dec 2004 15:40:14 -0000 1.2
--- plustot.print.c 30 May 2005 09:29:26 -0000 1.3
***************
*** 1,3 ****
! /* Copyright (c) 2003 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
--- 1,3 ----
! /* Copyright (c) 2003-2005 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
***************
*** 10,16 ****
typedef struct _plustot_print
{
! t_object x_ob;
! t_symbol *x_label;
! t_binbuf *x_bb;
} t_plustot_print;
--- 10,16 ----
typedef struct _plustot_print
{
! t_plusobject x_plusobject;
! t_symbol *x_label;
! t_binbuf *x_bb;
} t_plustot_print;
***************
*** 76,84 ****
{
binbuf_free(x->x_bb);
}
void *plustot_print_new(t_symbol *s, int ac, t_atom *av)
{
! t_plustot_print *x = (t_plustot_print *)pd_new(plustot_print_class);
x->x_label = (ac && av->a_type == A_SYMBOL ? av->a_w.w_symbol : 0);
x->x_bb = binbuf_new();
--- 76,86 ----
{
binbuf_free(x->x_bb);
+ plusobject_free(&x->x_plusobject);
}
void *plustot_print_new(t_symbol *s, int ac, t_atom *av)
{
! t_plustot_print *x =
! (t_plustot_print *)plusobject_new(plustot_print_class, s, ac, av);
x->x_label = (ac && av->a_type == A_SYMBOL ? av->a_w.w_symbol : 0);
x->x_bb = binbuf_new();
***************
*** 91,94 ****
--- 93,97 ----
(t_method)plustot_print_free,
sizeof(t_plustot_print), 0, 0);
+ plusclass_inherit(plustot_print_class, gensym("+print"));
class_addsymbol(plustot_print_class, plustot_print_symbol);
}
Index: plustot.var.c
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/toxy/plustot.var.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** plustot.var.c 19 Feb 2004 22:23:18 -0000 1.1
--- plustot.var.c 30 May 2005 09:29:26 -0000 1.2
***************
*** 1,3 ****
! /* Copyright (c) 2003 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
--- 1,3 ----
! /* Copyright (c) 2003-2005 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
***************
*** 16,20 ****
typedef struct _plustot_var
{
! t_object x_ob;
t_glist *x_glist;
t_plusvar *x_var;
--- 16,20 ----
typedef struct _plustot_var
{
! t_plusobject x_plusobject;
t_glist *x_glist;
t_plusvar *x_var;
***************
*** 76,79 ****
--- 76,80 ----
plusbob_release((t_plusbob *)x->x_var);
if (x->x_proxy) pd_free((t_pd *)x->x_proxy);
+ plusobject_free(&x->x_plusobject);
}
***************
*** 88,92 ****
(var = plusvar_new(av->a_w.w_symbol->s_name, 0, tin)))
{
! x = (t_plustot_var *)pd_new(plustot_var_class);
plusbob_preserve((t_plusbob *)var);
plusbob_setowner((t_plusbob *)var, (t_pd *)x);
--- 89,93 ----
(var = plusvar_new(av->a_w.w_symbol->s_name, 0, tin)))
{
! x = (t_plustot_var *)plusobject_new(plustot_var_class, s, ac, av);
plusbob_preserve((t_plusbob *)var);
plusbob_setowner((t_plusbob *)var, (t_pd *)x);
***************
*** 95,100 ****
x->x_var = var;
x->x_proxy = plusproxy_var_new((t_pd *)x);
! inlet_new((t_object *)x, (t_pd *)x->x_proxy, 0, 0);
! outlet_new((t_object *)x, &s_symbol);
}
else
--- 96,101 ----
x->x_var = var;
x->x_proxy = plusproxy_var_new((t_pd *)x);
! plusinlet_new(&x->x_plusobject, (t_pd *)x->x_proxy, 0, 0);
! plusoutlet_new(&x->x_plusobject, &s_symbol);
}
else
***************
*** 118,121 ****
--- 119,123 ----
(t_method)plustot_var_free,
sizeof(t_plustot_var), 0, 0);
+ plusclass_inherit(plustot_var_class, gensym("+var"));
class_addbang(plustot_var_class, plustot_var_bang);
class_addfloat(plustot_var_class, plustot_var_float);
Index: Makefile.objects
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/toxy/Makefile.objects,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** Makefile.objects 10 May 2005 17:59:58 -0000 1.5
--- Makefile.objects 30 May 2005 09:29:26 -0000 1.6
***************
*** 26,30 ****
plustot.out.o \
plustot.qlist.o \
! plustot.print.o
PLUSTOT_LIBS = $(TCL_LIB)
--- 26,31 ----
plustot.out.o \
plustot.qlist.o \
! plustot.print.o \
! pluswidget.o
PLUSTOT_LIBS = $(TCL_LIB)
Index: plustot.out.c
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/toxy/plustot.out.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** plustot.out.c 19 Feb 2004 22:23:18 -0000 1.1
--- plustot.out.c 30 May 2005 09:29:26 -0000 1.2
***************
*** 1,3 ****
! /* Copyright (c) 2003 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
--- 1,3 ----
! /* Copyright (c) 2003-2005 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
***************
*** 10,15 ****
typedef struct _plustot_out
{
! t_object x_ob;
! t_binbuf *x_bb;
} t_plustot_out;
--- 10,15 ----
typedef struct _plustot_out
{
! t_plusobject x_plusobject;
! t_binbuf *x_bb;
} t_plustot_out;
***************
*** 53,63 ****
{
binbuf_free(x->x_bb);
}
void *plustot_out_new(t_symbol *s, int ac, t_atom *av)
{
! t_plustot_out *x = (t_plustot_out *)pd_new(plustot_out_class);
x->x_bb = binbuf_new();
! outlet_new((t_object *)x, &s_anything);
return (x);
}
--- 53,65 ----
{
binbuf_free(x->x_bb);
+ plusobject_free(&x->x_plusobject);
}
void *plustot_out_new(t_symbol *s, int ac, t_atom *av)
{
! t_plustot_out *x =
! (t_plustot_out *)plusobject_new(plustot_out_class, s, ac, av);
x->x_bb = binbuf_new();
! plusoutlet_new(&x->x_plusobject, &s_anything);
return (x);
}
***************
*** 68,71 ****
--- 70,74 ----
(t_method)plustot_out_free,
sizeof(t_plustot_out), 0, 0);
+ plusclass_inherit(plustot_out_class, gensym("+out"));
class_addsymbol(plustot_out_class, plustot_out_symbol);
}
Index: build_counter
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/toxy/build_counter,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** build_counter 10 May 2005 17:59:58 -0000 1.15
--- build_counter 30 May 2005 09:29:26 -0000 1.16
***************
*** 1,7 ****
#define TOXY_VERSION "0.1"
#define TOXY_RELEASE "alpha"
! #define TOXY_BUILD 17
#if 0
! TOXY_SNAPSHOT = 0.1-alpha17
#endif
--- 1,7 ----
#define TOXY_VERSION "0.1"
#define TOXY_RELEASE "alpha"
! #define TOXY_BUILD 18
#if 0
! TOXY_SNAPSHOT = 0.1-alpha18
#endif