From 02a5595973b61d2cf789b9074167ed73b928d157 Mon Sep 17 00:00:00 2001 From: Guenter Geiger Date: Wed, 13 Nov 2002 08:38:02 +0000 Subject: This commit was generated by cvs2svn to compensate for changes in r206, which included commits to RCS files with non-trunk default branches. svn path=/trunk/; revision=207 --- xgui/xgui-lib/message.c | 116 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 xgui/xgui-lib/message.c (limited to 'xgui/xgui-lib/message.c') diff --git a/xgui/xgui-lib/message.c b/xgui/xgui-lib/message.c new file mode 100644 index 00000000..57edc16b --- /dev/null +++ b/xgui/xgui-lib/message.c @@ -0,0 +1,116 @@ +/* Copyright (c) 2002 Damien HENRY. +* For information on usage and redistribution, and for a DISCLAIMER OF ALL +* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ + +/* message : NOT WORKING YET */ + + +/*#include "m_pd.h"*/ + +t_class *message_class ; +typedef struct s_message +{ t_pd o_pd; + int o_refcount; + t_message ??? o_message; +} t_message; + +t_class *pd_obj_message_class ; +typedef struct s_pd_obj_message +{ + t_object x_obj; + t_symbol *x_sym; + t_float *x_message; +} t_pd_obj_message; + +t_float *message_get(t_symbol *s) +{ t_message *num = (t_message *)pd_findbyclass(s,message_class); + if (!num) { + num = (t_message *)pd_new(message_class); + num->o_message = 0; + num->o_refcount = 0; + pd_bind(&num->o_pd, s); + } + num->o_refcount++; + return (&num->o_message); +} + +void message_release(t_symbol *s) +{ t_message *num = (t_message *)pd_findbyclass(s,message_class); + if (num) { + if (!--num->o_refcount) { + pd_unbind(&num->o_pd, s); + pd_free(&num->o_pd); + } + } + else bug("value_release"); +} + +void message_help(t_seg *x) +{ + post(" "); + post("message v001"); + post("+ symbol list :"); + post("++ help : this help !!!"); + post("++ float : set the float "); + post("++ bang : send the message"); + post(" "); +} + +void message_float(t_pd_obj_message *x, t_floatarg f) +{ *x->x_message = f ;} + +void message_q_x(t_pd_obj_message *x) +{ + t_atom my_atom ; + t_atom *my_pointer = &my_atom; + SETFLOAT(my_pointer, *x->x_message); + outlet_anything(x->x_obj.ob_outlet, gensym("x="), 1,my_pointer); +} + +void message_bang(t_pd_obj_message *x) +{ outlet_float(x->x_obj.ob_outlet, *x->x_message);} + +void message_get_(t_pd_obj_message *x,t_symbol *s) +{*x->x_message = *message_get(s);} + +void message_set_(t_pd_obj_message *x,t_symbol *s) +{ x->x_message = message_get(s);} + +void message_to(t_pd_obj_message *x,t_floatarg f1,t_floatarg f2) +{ post("not implemented yet"); } + +void message_free(t_pd_obj_message *x){ message_release(x->x_sym); } + +void *message_new(t_symbol *s,t_floatarg f) +{ + t_pd_obj_message *x = (t_pd_obj_message *)pd_new(pd_obj_message_class); + x->x_sym = s; + x->x_message = message_get(s); + outlet_new(&x->x_obj, &s_float); + return (void *)x; +} + +void message_setup(void) +{ + pd_obj_message_class = class_new(gensym("message"), (t_newmethod)message_new, + (t_method)message_free, sizeof(t_pd_obj_message), 0,A_DEFSYMBOL, 0); + class_addcreator((t_newmethod)message_new, gensym("x"), A_DEFSYM, 0); + class_addfloat(pd_obj_message_class,message_float); + class_addbang(pd_obj_message_class,message_bang); + class_addmethod(pd_obj_message_class, (t_method)message_float, gensym("!x"), A_FLOAT, 0); + class_addmethod(pd_obj_message_class, (t_method)message_q_x, gensym("?x"), 0); + class_addmethod(pd_obj_message_class, (t_method)message_add, gensym("add"),A_FLOAT, 0); + class_addmethod(pd_obj_message_class, (t_method)message_sub, gensym("sub"),A_FLOAT, 0); + class_addmethod(pd_obj_message_class, (t_method)message_mult, gensym("mult"),A_FLOAT, 0); + class_addmethod(pd_obj_message_class, (t_method)message_div, gensym("div"),A_FLOAT, 0); + class_addmethod(pd_obj_message_class, (t_method)message_inv, gensym("inv"),0); + class_addmethod(pd_obj_message_class, (t_method)message_if, gensym("if"),A_DEFSYMBOL,A_FLOAT,A_FLOAT,0); + class_addmethod(pd_obj_message_class, (t_method)message_to, gensym("to"),A_FLOAT,A_FLOAT, 0); + class_addmethod(pd_obj_message_class, (t_method)message_set_, gensym("set"),A_DEFSYMBOL, 0); + class_addmethod(pd_obj_message_class, (t_method)message_get_, gensym("get"),A_DEFSYMBOL, 0); + class_addmethod(pd_obj_message_class, (t_method)message_help, gensym("help"), 0); + class_sethelpsymbol(pd_obj_message_class, gensym("xgui/help_message")); + /* Declare the class that will contain the value */ + message_class = class_new(gensym("message"), 0, 0, sizeof(t_message), CLASS_PD, 0); + +} -- cgit v1.2.1