aboutsummaryrefslogtreecommitdiff
path: root/control/constant.c
diff options
context:
space:
mode:
authorGuenter Geiger <ggeiger@users.sourceforge.net>2002-06-17 10:13:57 +0000
committerGuenter Geiger <ggeiger@users.sourceforge.net>2002-06-17 10:13:57 +0000
commitfc3d3c0a4f110a23335398c327ac0a4fc949d5cb (patch)
tree1849d6afbe34cee9cec97bdb2295401f5126870b /control/constant.c
This commit was generated by cvs2svn to compensate for changes in r12,svn2git-root
which included commits to RCS files with non-trunk default branches. svn path=/trunk/externals/ggee/; revision=13
Diffstat (limited to 'control/constant.c')
-rwxr-xr-xcontrol/constant.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/control/constant.c b/control/constant.c
new file mode 100755
index 0000000..7e8ccfa
--- /dev/null
+++ b/control/constant.c
@@ -0,0 +1,61 @@
+/* (C) Guenter Geiger <geiger@epy.co.at> */
+
+
+#include <m_pd.h>
+#include <math.h>
+#include <string.h>
+#ifdef NT
+#pragma warning( disable : 4244 )
+#pragma warning( disable : 4305 )
+#endif
+
+/* ------------------------ constant ----------------------------- */
+#ifndef M_PI
+#define M_PI 3.141593f
+#endif
+
+static t_class *constant_class;
+
+
+typedef struct _constant
+{
+ t_object x_obj;
+ t_float x_constant;
+} t_constant;
+
+
+void constant_bang(t_constant *x)
+{
+ outlet_float(x->x_obj.ob_outlet, x->x_constant);
+}
+
+static void *constant_new(t_symbol* s)
+{
+ t_constant *x = (t_constant *)pd_new(constant_class);
+
+ if (s == &s_)
+ x->x_constant = M_PI;
+
+ if (!strcmp(s->s_name,"PI"))
+ x->x_constant = M_PI;
+
+ if (!strcmp(s->s_name,"TWOPI"))
+ x->x_constant = 2*M_PI;
+
+ if (!strcmp(s->s_name,"e"))
+ x->x_constant = exp(1.0);
+
+
+
+ outlet_new(&x->x_obj, &s_float);
+ return (x);
+}
+
+void constant_setup(void)
+{
+ constant_class = class_new(gensym("constant"), (t_newmethod)constant_new, 0,
+ sizeof(t_constant), 0,0);
+ class_addbang(constant_class,constant_bang);
+}
+
+