aboutsummaryrefslogtreecommitdiff
path: root/external/pd.cs
diff options
context:
space:
mode:
Diffstat (limited to 'external/pd.cs')
-rwxr-xr-xexternal/pd.cs223
1 files changed, 98 insertions, 125 deletions
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;
+ */
}