[PD-cvs] externals/miXed/toxy plustot.ar.c, NONE, 1.1 Makefile.objects, 1.6, 1.7 plustot.c, 1.6, 1.7 plustot.h, 1.4, 1.5
Krzysztof Czaja
krzyszcz at users.sourceforge.net
Mon Nov 21 23:16:39 CET 2005
- Previous message: [PD-cvs] externals/miXed/shared/unstable fragile.c, 1.8, 1.9 fragile.h, 1.6, 1.7 loader.c, 1.1.1.1, 1.2 loader.h, 1.1.1.1, 1.2
- Next message: [PD-cvs] externals/miXed/cyclone/sickle overdrive.c, NONE, 1.1 Line.c, 1.4, 1.5 Makefile.sources, 1.6, 1.7 abs.c, 1.1.1.1, 1.2 allsickles.c, 1.6, 1.7 curve.c, 1.4, 1.5 lores.c, 1.1, 1.2 onepole.c, 1.1, 1.2 rampsmooth.c, 1.1.1.1, 1.2 reson.c, 1.1, 1.2 slide.c, 1.1.1.1, 1.2 svf.c, 1.3, 1.4
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/pure-data/externals/miXed/toxy
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29556/toxy
Modified Files:
Makefile.objects plustot.c plustot.h
Added Files:
plustot.ar.c
Log Message:
cyclone alpha55 (see notes.txt for cyclone and shared)
Index: plustot.c
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/toxy/plustot.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** plustot.c 13 Jun 2005 20:41:52 -0000 1.6
--- plustot.c 21 Nov 2005 22:16:37 -0000 1.7
***************
*** 35,38 ****
--- 35,39 ----
#endif
+ static t_symbol *plusps_ar;
static t_symbol *plusps_env;
static t_symbol *plusps_in;
***************
*** 53,56 ****
--- 54,58 ----
/* private */
+ plusps_ar = gensym("+ar");
plusps_env = gensym("+env");
plusps_in = gensym("+in");
***************
*** 102,108 ****
struct _plustin
{
! t_plusenv tin_env;
! t_glist *tin_glist;
! Tcl_Interp *tin_interp;
};
--- 104,111 ----
struct _plustin
{
! t_plusenv tin_env;
! t_glist *tin_glist;
! Tcl_Interp *tin_interp;
! Tcl_CmdInfo *tin_cinfop;
};
***************
*** 145,148 ****
--- 148,152 ----
#endif
tin->tin_interp = interp;
+ tin->tin_cinfop = 0;
Tcl_Preserve(interp);
if (Tcl_Init(interp) == TCL_ERROR)
***************
*** 150,153 ****
--- 154,163 ----
else
{
+ Tcl_CmdInfo cinfo;
+ /* store Tcl_CmdInfo for off-API Tcl_InfoObjCmd() */
+ if (Tcl_GetCommandInfo(interp, "info", &cinfo)
+ && cinfo.isNativeObjectProc)
+ tin->tin_cinfop = copybytes(&cinfo, sizeof(*tin->tin_cinfop));
+ /* create custom commands */
Tcl_CreateObjCommand(interp, "test::test",
(Tcl_ObjCmdProc*)plustin_testCmd,
***************
*** 169,172 ****
--- 179,184 ----
(id ? id->s_name : "default"), (int)tin->tin_interp);
#endif
+ if (tin->tin_cinfop)
+ freebytes(tin->tin_cinfop, sizeof(*tin->tin_cinfop));
Tcl_Preserve(tin->tin_interp);
if (!Tcl_InterpDeleted(tin->tin_interp))
***************
*** 180,183 ****
--- 192,233 ----
}
+ int plustin_procargc(t_plustin *tin, char *pname)
+ {
+ int result = -1;
+ if (tin->tin_cinfop)
+ {
+ /* FIXME preallocate */
+ Tcl_Obj *argv[3];
+ argv[0] = Tcl_NewStringObj("info", -1);
+ PLUSDEBUG_INCRREFCOUNT(argv[0], "plustin_procargc");
+ argv[1] = Tcl_NewStringObj("args", -1);
+ PLUSDEBUG_INCRREFCOUNT(argv[0], "plustin_procargc");
+ argv[2] = Tcl_NewStringObj(pname, -1);
+ PLUSDEBUG_INCRREFCOUNT(argv[1], "plustin_procargc");
+ if ((*tin->tin_cinfop->objProc)(tin->tin_cinfop->objClientData,
+ tin->tin_interp,
+ 3, argv) == TCL_OK)
+ {
+ Tcl_Obj *rob;
+ if (rob = Tcl_GetObjResult(tin->tin_interp))
+ {
+ PLUSDEBUG_INCRREFCOUNT(rob, "plustin_procargc");
+ if (Tcl_ListObjLength(tin->tin_interp, rob, &result) != TCL_OK)
+ {
+ result = -1;
+ plusloud_tcldirty(0, "plustin_procargc");
+ }
+ Tcl_ResetResult(tin->tin_interp);
+ PLUSDEBUG_DECRREFCOUNT(rob, "plustin_procargc");
+ }
+ else plusloud_tcldirty(0, "plustin_procargc");
+ }
+ PLUSDEBUG_DECRREFCOUNT(argv[0], "plustin_procargc");
+ PLUSDEBUG_DECRREFCOUNT(argv[1], "plustin_procargc");
+ PLUSDEBUG_DECRREFCOUNT(argv[2], "plustin_procargc");
+ }
+ return (result);
+ }
+
t_symbol *plustin_glistid(t_glist *gl)
{
***************
*** 2090,2094 ****
if (*cmdname->s_name == '+')
{
! if (cmdname == plusps_env)
return (plustot_env_new(cmdname, ac, av));
else if (cmdname == plusps_in)
--- 2140,2146 ----
if (*cmdname->s_name == '+')
{
! if (cmdname == plusps_ar)
! return (plustot_ar_new(cmdname, ac, av));
! else if (cmdname == plusps_env)
return (plustot_env_new(cmdname, ac, av));
else if (cmdname == plusps_in)
***************
*** 2181,2184 ****
--- 2233,2240 ----
if (res)
{
+ /* FIXME [+tot +ar pname] */
+ int n = plustin_procargc(tin, cmdname->s_name);
+ loudbug_post("plustin_procargc: %d", n);
+
/* creation time evaluation, LATER rethink:
should this be immediate or scheduled? */
***************
*** 2326,2329 ****
--- 2382,2386 ----
sizeof(t_plusvar),
(t_plustypefn)plusvar_delete, 0, 0, 0);
+ plustot_ar_setup();
plustot_env_setup();
plustot_in_setup();
Index: plustot.h
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/toxy/plustot.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** plustot.h 13 Jun 2005 20:41:52 -0000 1.4
--- plustot.h 21 Nov 2005 22:16:37 -0000 1.5
***************
*** 102,105 ****
--- 102,106 ----
void plusclass_inherit(t_class *c, t_symbol *s);
+ void plustot_ar_setup(void);
void plustot_env_setup(void);
void plustot_in_setup(void);
***************
*** 109,112 ****
--- 110,114 ----
void plustot_print_setup(void);
+ void *plustot_ar_new(t_symbol *s, int ac, t_atom *av);
void *plustot_env_new(t_symbol *s, int ac, t_atom *av);
void *plustot_in_new(t_symbol *s, int ac, t_atom *av);
Index: Makefile.objects
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/toxy/Makefile.objects,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** Makefile.objects 30 May 2005 09:29:26 -0000 1.6
--- Makefile.objects 21 Nov 2005 22:16:37 -0000 1.7
***************
*** 21,24 ****
--- 21,25 ----
PLUSTOT_PRIVATEOBJECTS = \
+ plustot.ar.o \
plustot.env.o \
plustot.in.o \
--- NEW FILE: plustot.ar.c ---
/* 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. */
#include "m_pd.h"
#include "common/loud.h"
#include "toxy/plusbob.h"
#include "plustot.h"
typedef struct _plusproxy_ar
{
t_pd pp_pd;
t_plustob *pp_tob;
} t_plusproxy_ar;
typedef struct _plustot_ar
{
t_plusobject x_plusobject;
t_glist *x_glist;
t_plustob *x_tob;
t_plusproxy_ar *x_proxy;
} t_plustot_ar;
static t_class *plusproxy_ar_class;
static t_class *plustot_ar_class;
static t_plusproxy_ar *plusproxy_ar_new(t_pd *master)
{
t_plusproxy_ar *pp = (t_plusproxy_ar *)pd_new(plusproxy_ar_class);
pp->pp_tob = ((t_plustot_ar *)master)->x_tob;
return (pp);
}
static void plusproxy_ar_float(t_plusproxy_ar *pp, t_float f)
{
plustob_setfloat(pp->pp_tob, f);
}
static void plusproxy_ar_symbol(t_plusproxy_ar *pp, t_symbol *s)
{
plustob_setsymbol(pp->pp_tob, s);
}
static void plusproxy_ar_list(t_plusproxy_ar *pp,
t_symbol *s, int ac, t_atom *av)
{
plustob_setlist(pp->pp_tob, ac, av);
}
static void plustot_ar_bang(t_plustot_ar *x)
{
if (plustob_getvalue(x->x_tob))
outlet_plusbob(((t_object *)x)->ob_outlet, (t_plusbob *)x->x_tob);
}
static void plustot_ar_float(t_plustot_ar *x, t_float f)
{
if (plustob_setfloat(x->x_tob, f))
outlet_plusbob(((t_object *)x)->ob_outlet, (t_plusbob *)x->x_tob);
}
static void plustot_ar_symbol(t_plustot_ar *x, t_symbol *s)
{
if (plustob_setsymbol(x->x_tob, s))
outlet_plusbob(((t_object *)x)->ob_outlet, (t_plusbob *)x->x_tob);
}
static void plustot_ar_list(t_plustot_ar *x, t_symbol *s, int ac, t_atom *av)
{
if (plustob_setlist(x->x_tob, ac, av))
outlet_plusbob(((t_object *)x)->ob_outlet, (t_plusbob *)x->x_tob);
}
static void plustot_ar_free(t_plustot_ar *x)
{
plusbob_release((t_plusbob *)x->x_tob);
if (x->x_proxy) pd_free((t_pd *)x->x_proxy);
plusobject_free(&x->x_plusobject);
}
void *plustot_ar_new(t_symbol *s, int ac, t_atom *av)
{
t_plustot_ar *x = 0;
t_glist *glist = canvas_getcurrent();
t_plustin *tin = 0;
t_plustob *tob = 0;
if ((tin = plustin_glistprovide(glist, PLUSTIN_GLIST_ANY, 0)) &&
(tob = plustob_new(tin, 0)))
{
x = (t_plustot_ar *)plusobject_new(plustot_ar_class, s, ac, av, 0);
plusbob_preserve((t_plusbob *)tob);
plusbob_setowner((t_plusbob *)tob, (t_pd *)x);
plustob_setlist(tob, ac, av);
x->x_glist = glist;
x->x_tob = tob;
x->x_proxy = plusproxy_ar_new((t_pd *)x);
plusinlet_new(&x->x_plusobject, (t_pd *)x->x_proxy, 0, 0);
plusoutlet_new(&x->x_plusobject, &s_symbol);
}
else
{
loud_error(0, "+ar: cannot initialize");
if (tin)
{
plusbob_preserve((t_plusbob *)tin);
plusbob_release((t_plusbob *)tin);
}
}
return (x);
}
void plustot_ar_setup(void)
{
plustot_ar_class = class_new(gensym("+ar"), 0,
(t_method)plustot_ar_free,
sizeof(t_plustot_ar), 0, 0);
plusclass_inherit(plustot_ar_class, gensym("+ar"));
class_addbang(plustot_ar_class, plustot_ar_bang);
class_addfloat(plustot_ar_class, plustot_ar_float);
class_addsymbol(plustot_ar_class, plustot_ar_symbol);
class_addlist(plustot_ar_class, plustot_ar_list);
plusproxy_ar_class = class_new(gensym("+ar proxy"), 0, 0,
sizeof(t_plusproxy_ar), CLASS_PD, 0);
class_addfloat(plusproxy_ar_class, plusproxy_ar_float);
class_addsymbol(plusproxy_ar_class, plusproxy_ar_symbol);
class_addlist(plusproxy_ar_class, plusproxy_ar_list);
}
- Previous message: [PD-cvs] externals/miXed/shared/unstable fragile.c, 1.8, 1.9 fragile.h, 1.6, 1.7 loader.c, 1.1.1.1, 1.2 loader.h, 1.1.1.1, 1.2
- Next message: [PD-cvs] externals/miXed/cyclone/sickle overdrive.c, NONE, 1.1 Line.c, 1.4, 1.5 Makefile.sources, 1.6, 1.7 abs.c, 1.1.1.1, 1.2 allsickles.c, 1.6, 1.7 curve.c, 1.4, 1.5 lores.c, 1.1, 1.2 onepole.c, 1.1, 1.2 rampsmooth.c, 1.1.1.1, 1.2 reson.c, 1.1, 1.2 slide.c, 1.1.1.1, 1.2 svf.c, 1.3, 1.4
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Pd-cvs
mailing list