From af0a9de91583557786cdfeca37c36b8e5656fb23 Mon Sep 17 00:00:00 2001 From: Davide Morelli Date: Sat, 14 Jan 2006 02:34:17 +0000 Subject: outlet ready, multi-instance, split assembly in 2 svn path=/trunk/externals/clr/; revision=4401 --- pd/pd.cs | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100755 pd/pd.cs (limited to 'pd/pd.cs') diff --git a/pd/pd.cs b/pd/pd.cs new file mode 100755 index 0000000..a94b9f1 --- /dev/null +++ b/pd/pd.cs @@ -0,0 +1,151 @@ +using System; +using System.Runtime.CompilerServices; // for extern import + + + +namespace PureData +{ + public enum ParametersType {None = 0, Float=1, Symbol=2, List=3, Bang=4}; + + public class pd + { + [MethodImplAttribute (MethodImplOptions.InternalCall)] + private extern static void RegisterSelector (IntPtr x, string sel, string met, int type); + // function called by the user + public static void AddSelector(IntPtr x, string sel, string met, ParametersType type) + { + RegisterSelector (x, sel, met, (int) type); + } + + // TODO + // send stuff to an outlet + [MethodImplAttribute (MethodImplOptions.InternalCall)] + private extern static void ToOutlet (IntPtr x, int outlet, int atoms_length, Atom [] atoms); + public static void SendToOutlet (IntPtr x, int outlet, Atom [] atoms) + { + ToOutlet (x, outlet, atoms.Length, atoms); + } + + // create an outlet + [MethodImplAttribute (MethodImplOptions.InternalCall)] + private extern static void CreateOutlet (IntPtr x, int type); + // function called by the user + public static void AddOutlet(IntPtr x, ParametersType type) + { + CreateOutlet (x, (int) type); + } + + // create an inlet + [MethodImplAttribute (MethodImplOptions.InternalCall)] + private extern static void CreateInlet (IntPtr x, string selector, int type); + // function called by the user + public static void AddInlet(IntPtr x, string selector, ParametersType type) + { + CreateInlet (x, selector, (int) type); + } + + [MethodImplAttribute (MethodImplOptions.InternalCall)] + public extern static void PostMessage (string message); + + [MethodImplAttribute (MethodImplOptions.InternalCall)] + 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; + }; + */ + } + + + /* + 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; + */ + +} -- cgit v1.2.1