diff options
author | Davide Morelli <morellid@users.sourceforge.net> | 2006-01-13 19:02:37 +0000 |
---|---|---|
committer | Davide Morelli <morellid@users.sourceforge.net> | 2006-01-13 19:02:37 +0000 |
commit | ca171c73936072e5be30444440b45d3fcf65b68b (patch) | |
tree | 2ed72b757e45ec86a020cb9f6db3fe2fde4b376c /external | |
parent | 7a0d21c028c073e0ff3c64ab0bd7958e79816d45 (diff) |
lists of atom working! still missing output
svn path=/trunk/externals/clr/; revision=4400
Diffstat (limited to 'external')
-rwxr-xr-x | external/External.cs | 83 | ||||
-rwxr-xr-x | external/pd.cs | 223 |
2 files changed, 125 insertions, 181 deletions
diff --git a/external/External.cs b/external/External.cs index 215461c..820c7ca 100755 --- a/external/External.cs +++ b/external/External.cs @@ -30,9 +30,6 @@ namespace PureData pd.AddSelector(x, "sel2", "Sel2", ParametersType.None);
pd.AddSelector(x, "selFloat", "SelFloat", ParametersType.Float);
pd.AddSelector(x, "selString", "SelString", ParametersType.Symbol);
- 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);
@@ -49,80 +46,54 @@ namespace PureData public void Sel2()
{
pd.PostMessage("Sel2 invoked!");
+
+ // testing outlets
+ Atom[] atoms = new Atom[2];
+ atoms[0] = new Atom("ciao");
+ atoms[1] = new Atom(1.5f);
+ pd.ToOutlet(x, 0, atoms.Length, atoms);
+
}
public void SelFloat(float f)
{
pd.PostMessage("SelFloat received " + f);
- }
- public void SelString(ref string s)
- {
- pd.PostMessage("SelString received " + s);
- }
- public void SelList(int [] list)
- {
- pd.PostMessage("SelList received " + list.Length + " elements");
- for (int i = 0; i<list.Length; i++)
- {
- pd.PostMessage("int " + i + " = " + list[i]);
- }
- }
-
- public void SelStringList(string [] list)
- {
- pd.PostMessage("SetStringList received a " + list.Length + " long list");
- for (int i = 0; i<list.Length; i++)
- {
- pd.PostMessage("string " + i + " = " + list[i]);
- }
}
- public void SelFloatList(float [] list)
+ public void SelString(ref string s)
{
- pd.PostMessage("SetStringList received a " + list.Length + " long list");
- for (int i = 0; i<list.Length; i++)
- {
- pd.PostMessage("float " + i + " = " + list[i]);
- }
+ pd.PostMessage("SelString received " + s);
}
-
- public void SelGenericList(Atom a)
- {
-
- Console.WriteLine("a is type " + a.type);
- Console.WriteLine("float = " + a.float_value);
- Console.WriteLine("stringa = " + a.string_value);
-
- }
-
-
-/*
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];
- Console.WriteLine("a is type " + a.type);
- Console.WriteLine("float = " + a.float_value);
- Console.WriteLine("stringa = " + a.string_value);
- pd.PostMessage("a is type " + a.type);
- pd.PostMessage("float = " + a.float_value);
- pd.PostMessage("stringa = " + a.string_value);
+ switch (a.type)
+ {
+ case (AtomType.Null):
+ {
+ pd.PostMessage("element null");
+ break;
+ }
+ case (AtomType.Float):
+ {
+ pd.PostMessage("" + a.float_value);
+ break;
+ }
+ case (AtomType.Symbol):
+ {
+ pd.PostMessage(a.string_value);
+ break;
+ }
+ }
}
}
-*/
- public int test(int a)
- {
-
- Console.WriteLine("test("+a+")");
- return a+1;
- }
}
diff --git a/external/pd.cs b/external/pd.cs index 4f05734..87478ae 100755 --- a/external/pd.cs +++ b/external/pd.cs @@ -20,7 +20,11 @@ namespace PureData // TODO
// send stuff to an outlet
[MethodImplAttribute (MethodImplOptions.InternalCall)]
- public extern static void ToOutlet (IntPtr x, int outlet, int type /*, ? array of values */);
+ public extern static void ToOutlet (IntPtr x, int outlet, int atoms_length, [In, Out] Atom [] atoms);
+ public static void SendToOutlet (IntPtr x, int outlet, [In, Out] Atom [] atoms)
+ {
+ ToOutlet (x, outlet, atoms.Length, atoms);
+ }
// create an outlet
[MethodImplAttribute (MethodImplOptions.InternalCall)]
@@ -47,153 +51,122 @@ namespace PureData public extern static void ErrorMessage (string message);
+ /*
+ // 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;
+ };
+ */
}
-
-/*
-// 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, List=3};
-
- [StructLayout (LayoutKind.Explicit)]
-// [StructLayout (LayoutKind.Sequential)]
- public class Atom2
+ //[StructLayout (LayoutKind.Explicit)]
+ [StructLayout (LayoutKind.Sequential)]
+ public struct Atom
{
- //[FieldOffset (0)] AtomType type;
- //[FieldOffset (0)] public int type;
- [FieldOffset (0)]
- public int type;
-
- [FieldOffset (4)]
+ public AtomType type;
public float float_value;
-
-// [FieldOffset (4)]
- [FieldOffset (8)]
public string string_value;
-
-
- public Atom2()
+ public Atom(float f)
{
- this.type = 0;
- this.float_value = 0;
- this.string_value = "";
+ this.type = AtomType.Float;
+ this.float_value = f;
+ this.string_value = "float";
}
-
- public Atom2(string string_value)
+ public Atom(string s)
{
- this.type = 2;
+ this.type = AtomType.Symbol;
this.float_value = 0;
- this.string_value = string_value;
- }
- public Atom2(float float_value)
- {
- this.type = 1;
- this.string_value = "";
- this.float_value = float_value;
+ this.string_value = s;
}
}
-
-
- //[StructLayout (LayoutKind.Explicit)]
- [StructLayout (LayoutKind.Sequential)]
- public struct Atom
- {
- public int type;
- public float float_value;
- public string string_value;
- }
-
-/* - typedef float t_floatarg; + /* + typedef float t_floatarg; -typedef struct _symbol -{ - char *s_name; - struct _class **s_thing; - struct _symbol *s_next; - } t_symbol; + typedef struct _symbol + { + char *s_name; + struct _class **s_thing; + struct _symbol *s_next; + } t_symbol; - EXTERN_STRUCT _array; -#define t_array struct _array + EXTERN_STRUCT _array; + #define t_array struct _array -#define GP_NONE 0 -#define GP_GLIST 1 -#define GP_ARRAY 2 + #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 struct _gstub + { + union + { + struct _glist *gs_glist; + struct _array *gs_array; + } gs_un; + int gs_which; + int gs_refcount; + } t_gstub; -typedef union word + typedef struct _gpointer { -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; + union + { + struct _scalar *gp_scalar; + union word *gp_w; + } gp_un; + int gp_valid; + t_gstub *gp_stub; + } t_gpointer; -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; + 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; -#define A_DEFSYMBOL A_DEFSYM + 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; -typedef struct _atom - { - t_atomtype a_type; - union word a_w; - } t_atom; -*/
+ #define A_DEFSYMBOL A_DEFSYM + + typedef struct _atom + { + t_atomtype a_type; + union word a_w; + } t_atom; + */
}
|