diff options
author | Davide Morelli <morellid@users.sourceforge.net> | 2006-01-16 16:26:58 +0000 |
---|---|---|
committer | Davide Morelli <morellid@users.sourceforge.net> | 2006-01-16 16:26:58 +0000 |
commit | 447a1fe81422c021e33787ba11c56fa34d379c9d (patch) | |
tree | 8ecefbac29923517d3daa0fb2081b2fe3cea8877 /pd | |
parent | 6727d8b42c156a14ea690ceff639fcc1ad7f18af (diff) |
now selectors take delegates instead of function names, lists without selectors ok, added the PureData.dll assembly to let people compile externals without having to compile the pd project
svn path=/trunk/externals/clr/; revision=4424
Diffstat (limited to 'pd')
-rwxr-xr-x | pd/Atom.cs | 22 | ||||
-rwxr-xr-x | pd/pd.cs | 152 |
2 files changed, 76 insertions, 98 deletions
@@ -31,4 +31,24 @@ namespace PureData this.string_value = s;
}
}
-}
\ No newline at end of file + // this struct is relative to this c struct, see clr.c
+
+ /*
+ // 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;
+ };
+ */
+}
@@ -9,15 +9,47 @@ namespace PureData public class pd
{
+ public delegate void DelegateWithoutArguments();
+ public delegate void DelegateFloat(float f);
+ public delegate void DelegateString(ref string s);
+ public delegate void DelegateArray(Atom [] atoms);
+
[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)
+ public static void AddSelector(IntPtr x, string sel, DelegateWithoutArguments func)
+ {
+ RegisterSelector (x, sel, func.Method.Name, (int) ParametersType.None);
+ }
+ public static void AddSelector(IntPtr x, string sel, DelegateFloat func)
+ {
+ RegisterSelector (x, sel, func.Method.Name, (int) ParametersType.Float);
+ }
+ public static void AddSelector(IntPtr x, string sel, DelegateString func)
+ {
+ RegisterSelector (x, sel, func.Method.Name, (int) ParametersType.Symbol);
+ }
+ public static void AddSelector(IntPtr x, string sel, DelegateArray func)
+ {
+ RegisterSelector (x, sel, func.Method.Name, (int) ParametersType.List);
+ }
+ public static void AddSelector(IntPtr x, DelegateWithoutArguments func)
+ {
+ RegisterSelector (x, "", func.Method.Name, (int) ParametersType.None);
+ }
+ public static void AddSelector(IntPtr x, DelegateFloat func)
+ {
+ RegisterSelector (x, "", func.Method.Name, (int) ParametersType.Float);
+ }
+ public static void AddSelector(IntPtr x, DelegateString func)
+ {
+ RegisterSelector (x, "", func.Method.Name, (int) ParametersType.Symbol);
+ }
+ public static void AddSelector(IntPtr x, DelegateArray func)
{
- RegisterSelector (x, sel, met, (int) type);
+ RegisterSelector (x, "", func.Method.Name, (int) ParametersType.List);
}
- // TODO
// send stuff to an outlet
[MethodImplAttribute (MethodImplOptions.InternalCall)]
private extern static void ToOutlet (IntPtr x, int outlet, int atoms_length, Atom [] atoms);
@@ -31,6 +63,25 @@ namespace PureData atoms[0] = atom;
ToOutlet (x, outlet, atoms.Length, atoms);
}
+ public static void SendToOutlet (IntPtr x, int outlet, float f)
+ {
+ Atom [] atoms = new Atom[1];
+ atoms[0] = new Atom(f);
+ ToOutlet (x, outlet, atoms.Length, atoms);
+ }
+ public static void SendToOutlet (IntPtr x, int outlet, int i)
+ {
+ Atom [] atoms = new Atom[1];
+ atoms[0] = new Atom((float) i);
+ ToOutlet (x, outlet, atoms.Length, atoms);
+ }
+ public static void SendToOutlet (IntPtr x, int outlet, string s)
+ {
+ Atom [] atoms = new Atom[1];
+ atoms[0] = new Atom(s);
+ ToOutlet (x, outlet, atoms.Length, atoms);
+ }
+
// create an outlet
[MethodImplAttribute (MethodImplOptions.InternalCall)]
private extern static void CreateOutlet (IntPtr x, int type);
@@ -55,102 +106,9 @@ namespace PureData [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; - */
+
}
|