aboutsummaryrefslogtreecommitdiff
path: root/shmem.c
diff options
context:
space:
mode:
Diffstat (limited to 'shmem.c')
-rw-r--r--shmem.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/shmem.c b/shmem.c
index 404d795..f3e1bc2 100644
--- a/shmem.c
+++ b/shmem.c
@@ -114,6 +114,19 @@ void shmem_dump(t_shmem *x, t_symbol *unused, int argc, t_atom *argv)
}
}
+void shmem_read(t_shmem *x, t_float index)
+{
+ int i, vecsize, index_max, shmem_offset;
+ t_garray *a;
+ t_word *vec;
+
+ shmem_offset = index;
+ if (shmem_offset < 0) shmem_offset = 0;
+ if (shmem_offset > x->segment_size-1) i = x->segment_size-1;
+ // post("i=%d", offset);
+ outlet_float(x->x_obj.ob_outlet, x->share_memory[shmem_offset]);
+}
+
t_class *shmem_class;
void *shmem_new( t_floatarg id, t_floatarg size)
@@ -167,5 +180,6 @@ void shmem_setup(void)
class_addmethod(shmem_class, (t_method)shmem_set, gensym("memset"), A_GIMME, 0);
class_addmethod(shmem_class, (t_method)shmem_dump, gensym("memdump"), A_GIMME, 0);
class_addmethod(shmem_class, (t_method)shmem_clear, gensym("memclear"), 0);
+ class_addmethod(shmem_class, (t_method)shmem_read, gensym("memread"),A_DEFFLOAT, 0);
}