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 --- external/External.cs | 43 +++++++++--- external/external.csproj | 12 ++-- external/pd.cs | 172 ----------------------------------------------- 3 files changed, 38 insertions(+), 189 deletions(-) delete mode 100755 external/pd.cs (limited to 'external') diff --git a/external/External.cs b/external/External.cs index 820c7ca..ace63a3 100755 --- a/external/External.cs +++ b/external/External.cs @@ -1,11 +1,8 @@ using System; - namespace PureData { - - public class External { private IntPtr x; @@ -15,8 +12,6 @@ namespace PureData x = IntPtr.Zero; } - - // this function MUST exist public void SetUp(IntPtr pdClass) { @@ -31,16 +26,36 @@ namespace PureData pd.AddSelector(x, "selFloat", "SelFloat", ParametersType.Float); pd.AddSelector(x, "selString", "SelString", ParametersType.Symbol); pd.AddSelector(x, "selGenericList", "SelGenericList", ParametersType.List); + + pd.AddSelector(x, "", "GetBang", ParametersType.Bang); + pd.AddSelector(x, "", "GetFloat", ParametersType.Float); + pd.AddSelector(x, "", "GetSymbol", ParametersType.Symbol); + Console.WriteLine("selectors set"); pd.AddOutlet(x, ParametersType.Float); pd.AddInlet(x, "selFloat", ParametersType.Float); } + public void GetBang() + { + pd.PostMessage("GetBang invoked!"); + } - + public void GetFloat(float f) + { + pd.PostMessage("GetFloat invoked with " + f); + } + + public void GetSymbol(ref string s) + { + pd.PostMessage("GetSymbol invoked with " + s); + } + public void Sel1() { pd.PostMessage("Sel1 invoked!"); + Atom [] a= new Atom[2]; + } public void Sel2() @@ -48,10 +63,12 @@ namespace PureData 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); + Atom[] atoms = new Atom[4]; + atoms[0] = new Atom(1.5f); + atoms[1] = new Atom("ciao"); + atoms[2] = new Atom(2.5f); + atoms[3] = new Atom("hello"); + pd.SendToOutlet(x, 0, atoms); } @@ -69,6 +86,7 @@ namespace PureData public void SelGenericList(Atom [] list) { + Atom [] ret = new Atom[list.Length]; for (int i = 0; i + @@ -93,11 +98,6 @@ SubType = "Code" BuildAction = "Compile" /> - diff --git a/external/pd.cs b/external/pd.cs deleted file mode 100755 index 87478ae..0000000 --- a/external/pd.cs +++ /dev/null @@ -1,172 +0,0 @@ -using System; -using System.Runtime.CompilerServices; // for extern import -using System.Runtime.InteropServices; // for structures - - -namespace PureData -{ - public enum ParametersType {None = 0, Float=1, Symbol=2, List=3}; - - 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)] - 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)] - 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; - }; - */ - } - 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; - */ - -} -- cgit v1.2.1