aboutsummaryrefslogtreecommitdiff
path: root/external
diff options
context:
space:
mode:
authorDavide Morelli <morellid@users.sourceforge.net>2006-01-12 11:59:58 +0000
committerDavide Morelli <morellid@users.sourceforge.net>2006-01-12 11:59:58 +0000
commit27ed64f0d1ee32e0ccff7c48d4965c21c9f8128b (patch)
treec6d581dc8cec28b1c6f5d7c31996087db2edbdaf /external
parent20854f57a1617b4f662516445d20778ddbd6552d (diff)
lists of atoms still not working
svn path=/trunk/externals/clr/; revision=4389
Diffstat (limited to 'external')
-rwxr-xr-xexternal/External.cs16
-rwxr-xr-xexternal/pd.cs114
2 files changed, 127 insertions, 3 deletions
diff --git a/external/External.cs b/external/External.cs
index 3923f06..bc3d361 100755
--- a/external/External.cs
+++ b/external/External.cs
@@ -33,6 +33,7 @@ namespace PureData
pd.AddSelector(x, "selList", "SelList", ParametersType.List);
pd.AddSelector(x, "selStringList", "SelStringList", ParametersType.List);
pd.AddSelector(x, "selFloatList", "SelFloatList", ParametersType.List);
+ pd.AddSelector(x, "selGenericList", "SelGenericList", ParametersType.List);
Console.WriteLine("selectors set");
pd.AddOutlet(x, ParametersType.Float);
pd.AddInlet(x, "selFloat", ParametersType.Float);
@@ -79,12 +80,23 @@ namespace PureData
}
}
- public void SelFloatList(int [] list)
+ public void SelFloatList(float [] list)
{
pd.PostMessage("SetStringList received a " + list.Length + " long list");
for (int i = 0; i<list.Length; i++)
{
- pd.PostMessage("float " + i + " = " + list[0]);
+ pd.PostMessage("float " + i + " = " + list[i]);
+ }
+ }
+
+ public void SelGenericList(Atom [] list)
+ {
+ pd.PostMessage("SetStringList received a " + list.Length + " long list");
+ for (int i = 0; i<list.Length; i++)
+ {
+ Atom a = (Atom) list[i];
+ pd.PostMessage("list[" + i + "] is type " + a.type + " stringa = " + a.string_value);
+ // pd.PostMessage("float " + i + " = " + list[i]);
}
}
diff --git a/external/pd.cs b/external/pd.cs
index c844195..67befdf 100755
--- a/external/pd.cs
+++ b/external/pd.cs
@@ -1,5 +1,7 @@
using System;
-using System.Runtime.CompilerServices;
+using System.Runtime.CompilerServices; // for extern import
+using System.Runtime.InteropServices; // for structures
+
namespace PureData
{
@@ -46,4 +48,114 @@ namespace PureData
}
+
+/*
+// simplyfied atom
+typedef struct atom_simple atom_simple;
+typedef enum
+{
+ A_S_NULL=0,
+ A_S_FLOAT=1,
+ A_S_SYMBOL=2,
+} t_atomtype_simple;
+typedef struct atom_simple
+{
+ t_atomtype_simple a_type;
+ union{
+ float float_value;
+ MonoString *string_value;
+ } stuff;
+};
+*/
+
+ public enum AtomType {Null = 0, Float=1, Symbol=2};
+
+ [StructLayout (LayoutKind.Explicit)]
+ public struct Atom
+ {
+ //[FieldOffset (0)] AtomType type;
+ [FieldOffset (0)] public int type;
+ /* union members */
+ [FieldOffset (4)] public long string_value;
+ [FieldOffset (4)] public float float_value;
+ }
+
+
+
+/*
+ typedef float t_floatarg;
+
+typedef struct _symbol
+{
+ char *s_name;
+ struct _class **s_thing;
+ struct _symbol *s_next;
+ } t_symbol;
+
+ EXTERN_STRUCT _array;
+#define t_array struct _array
+
+
+
+#define GP_NONE 0
+#define GP_GLIST 1
+#define GP_ARRAY 2
+
+typedef struct _gstub
+ {
+ union
+ {
+ struct _glist *gs_glist;
+ struct _array *gs_array;
+ } gs_un;
+ int gs_which;
+ int gs_refcount;
+ } t_gstub;
+
+typedef struct _gpointer
+ {
+ union
+ {
+ struct _scalar *gp_scalar;
+ union word *gp_w;
+ } gp_un;
+ int gp_valid;
+ t_gstub *gp_stub;
+ } t_gpointer;
+
+typedef union word
+ {
+t_float w_float;
+t_symbol *w_symbol;
+t_gpointer *w_gpointer;
+t_array *w_array;
+struct _glist *w_list;
+ int w_index;
+} t_word;
+
+typedef enum
+ {
+ A_NULL,
+ A_FLOAT,
+ A_SYMBOL,
+ A_POINTER,
+ A_SEMI,
+ A_COMMA,
+ A_DEFFLOAT,
+ A_DEFSYM,
+ A_DOLLAR,
+ A_DOLLSYM,
+ A_GIMME,
+ A_CANT
+ } t_atomtype;
+
+#define A_DEFSYMBOL A_DEFSYM
+
+typedef struct _atom
+ {
+ t_atomtype a_type;
+ union word a_w;
+ } t_atom;
+*/
+
}