From ca171c73936072e5be30444440b45d3fcf65b68b Mon Sep 17 00:00:00 2001 From: Davide Morelli Date: Fri, 13 Jan 2006 19:02:37 +0000 Subject: lists of atom working! still missing output svn path=/trunk/externals/clr/; revision=4400 --- external/pd.cs | 223 +++++++++++++++++++++++++-------------------------------- 1 file changed, 98 insertions(+), 125 deletions(-) (limited to 'external/pd.cs') 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; + */ } -- cgit v1.2.1