Update of /cvsroot/pure-data/externals/clr/external In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12601/external
Modified Files: External.cs pd.cs Log Message: lists of atom working! still missing output
Index: External.cs =================================================================== RCS file: /cvsroot/pure-data/externals/clr/external/External.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** External.cs 13 Jan 2006 13:02:22 -0000 1.4 --- External.cs 13 Jan 2006 19:02:37 -0000 1.5 *************** *** 31,37 **** 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"); --- 31,34 ---- *************** *** 50,53 **** --- 47,57 ---- { 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); + }
*************** *** 55,127 **** { 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) { ! pd.PostMessage("SetStringList received a " + list.Length + " long list"); ! for (int i = 0; i<list.Length; i++) ! { ! pd.PostMessage("float " + i + " = " + list[i]); ! } }
- - 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); } } - */
- public int test(int a) - { -
- Console.WriteLine("test("+a+")"); - return a+1; - } }
--- 59,98 ---- { pd.PostMessage("SelFloat received " + f);
}
! public void SelString(ref string s) { ! pd.PostMessage("SelString received " + s); }
public void SelGenericList(Atom [] list) { for (int i = 0; i<list.Length; i++) { Atom a = (Atom) list[i]; ! 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; ! } ! } } }
}
Index: pd.cs =================================================================== RCS file: /cvsroot/pure-data/externals/clr/external/pd.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** pd.cs 13 Jan 2006 13:02:22 -0000 1.4 --- pd.cs 13 Jan 2006 19:02:37 -0000 1.5 *************** *** 21,25 **** // send stuff to an outlet [MethodImplAttribute (MethodImplOptions.InternalCall)] ! public extern static void ToOutlet (IntPtr x, int outlet, int type /*, ? array of values */);
// create an outlet --- 21,29 ---- // send stuff to an outlet [MethodImplAttribute (MethodImplOptions.InternalCall)] ! 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 *************** *** 48,199 ****
} - - /* - // 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 { ! //[FieldOffset (0)] AtomType type; ! //[FieldOffset (0)] public int type; ! [FieldOffset (0)] ! public int type; ! ! [FieldOffset (4)] public float float_value; - - // [FieldOffset (4)] - [FieldOffset (8)] public string string_value; ! ! ! public Atom2() { ! this.type = 0; ! this.float_value = 0; ! this.string_value = ""; } ! ! public Atom2(string string_value) { ! this.type = 2; 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; } } - - - - //[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 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; ! */
} --- 52,172 ----
+ /* + // 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 struct Atom { ! public AtomType type; public float float_value; public string string_value; ! public Atom(float f) { ! this.type = AtomType.Float; ! this.float_value = f; ! this.string_value = "float"; } ! public Atom(string s) { ! this.type = AtomType.Symbol; this.float_value = 0; ! this.string_value = s; } }
! /* ! 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; ! */
}