Update of /cvsroot/pure-data/externals/clr/pd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4091
Modified Files: AssemblyInfo.cs Atom.cs pd.csproj Added Files: PureData.cs Removed Files: pd.cs Log Message: new interface to internal functions
--- pd.cs DELETED ---
Index: AssemblyInfo.cs =================================================================== RCS file: /cvsroot/pure-data/externals/clr/pd/AssemblyInfo.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** AssemblyInfo.cs 14 Jan 2006 02:34:17 -0000 1.1 --- AssemblyInfo.cs 27 Jan 2006 22:50:00 -0000 1.2 *************** *** 12,16 **** [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("")] ! [assembly: AssemblyCopyright("Davide Morelli")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] --- 12,16 ---- [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("")] ! [assembly: AssemblyCopyright("Davide Morelli, Thomas Grill")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")]
Index: pd.csproj =================================================================== RCS file: /cvsroot/pure-data/externals/clr/pd/pd.csproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** pd.csproj 14 Jan 2006 02:34:17 -0000 1.1 --- pd.csproj 27 Jan 2006 22:50:00 -0000 1.2 *************** *** 37,41 **** NoWarn = "" Optimize = "false" ! OutputPath = "bin\Debug" RegisterForComInterop = "false" RemoveIntegerChecks = "false" --- 37,41 ---- NoWarn = "" Optimize = "false" ! OutputPath = ".." RegisterForComInterop = "false" RemoveIntegerChecks = "false" *************** *** 95,99 **** /> <File ! RelPath = "pd.cs" SubType = "Code" BuildAction = "Compile" --- 95,99 ---- /> <File ! RelPath = "PureData.cs" SubType = "Code" BuildAction = "Compile"
Index: Atom.cs =================================================================== RCS file: /cvsroot/pure-data/externals/clr/pd/Atom.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Atom.cs 16 Jan 2006 16:26:58 -0000 1.3 --- Atom.cs 27 Jan 2006 22:50:00 -0000 1.4 *************** *** 4,35 **** namespace PureData { ! public enum AtomType {Null = 0, Float=1, Symbol=2, List=3, Bang=4};
! //[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(int i) { ! this.type = AtomType.Float; ! this.float_value = (float) i; ! this.string_value = "float"; ! } public Atom(string s) { ! this.type = AtomType.Symbol; ! this.float_value = 0; ! this.string_value = s; } } // this struct is relative to this c struct, see clr.c
--- 4,84 ---- namespace PureData { ! public enum AtomType {Null = 0, Float = 1, Symbol = 2, Pointer = 3};
! [StructLayout (LayoutKind.Sequential)] ! sealed public class Symbol ! { ! // this should NOT be public ! readonly private IntPtr ptr; ! ! public Symbol(IntPtr p) ! { ! ptr = p; ! } ! ! public Symbol(Symbol s) ! { ! ptr = s.ptr; ! } ! ! public Symbol(string s) ! { ! ptr = Core.GenSym(s); ! } ! ! override public string ToString() ! { ! return Core.EvalSym(this); ! } ! } ! ! [StructLayout (LayoutKind.Sequential)] ! sealed public class Pointer ! { ! public IntPtr ptr; ! } ! ! [StructLayout (LayoutKind.Explicit)] ! public struct Word ! { ! [FieldOffset(0)] public float w_float; ! [FieldOffset(0)] public Symbol w_symbol; ! [FieldOffset(0)] public Pointer w_pointer; ! } ! ! //[StructLayout (LayoutKind.Explicit)] [StructLayout (LayoutKind.Sequential)] ! sealed public class Atom { + public AtomType type; ! public Word word; ! public Atom(float f) { ! type = AtomType.Float; ! word.w_float = f; } + public Atom(int i) { ! type = AtomType.Float; ! word.w_float = (float)i; ! } ! ! public Atom(Symbol s) ! { ! type = AtomType.Symbol; ! word.w_symbol = s; ! } ! public Atom(string s) { ! type = AtomType.Symbol; ! word.w_symbol = new Symbol(s); } } + + // this struct is relative to this c struct, see clr.c
*************** *** 52,54 **** }; */ ! } --- 101,104 ---- }; */ ! ! } \ No newline at end of file
--- NEW FILE: PureData.cs --- using System; using System.Runtime.CompilerServices; // for extern import
namespace PureData { // PD core functions public class Core { [MethodImplAttribute (MethodImplOptions.InternalCall)] public extern static void Post(string message);
[MethodImplAttribute (MethodImplOptions.InternalCall)] public extern static void PostError(string message);
[MethodImplAttribute (MethodImplOptions.InternalCall)] public extern static void PostBug(string message);
[MethodImplAttribute (MethodImplOptions.InternalCall)] public extern static void PostVerbose(string message);
[MethodImplAttribute (MethodImplOptions.InternalCall)] public extern static IntPtr GenSym(string sym);
[MethodImplAttribute (MethodImplOptions.InternalCall)] public extern static string EvalSym(Symbol sym); }
// This is the base class for a PD/CLR external public class External : Core { private readonly IntPtr ptr;
protected virtual void MethodBang() { Post("No bang handler"); }
protected virtual void MethodFloat(float f) { Post("No float handler"); }
protected virtual void MethodSymbol(Symbol s) { Post("No symbol handler"); }
protected virtual void MethodPointer(Pointer p) { Post("No pointer handler");}
protected virtual void MethodList(Atom[] lst) { Post("No list handler"); }
protected virtual void MethodAnything(Atom[] lst) { Post("No list handler"); } } }