aboutsummaryrefslogtreecommitdiff
path: root/pd
diff options
context:
space:
mode:
authorDavide Morelli <morellid@users.sourceforge.net>2006-01-14 02:34:17 +0000
committerDavide Morelli <morellid@users.sourceforge.net>2006-01-14 02:34:17 +0000
commitaf0a9de91583557786cdfeca37c36b8e5656fb23 (patch)
tree8ed7ba356a7bff2e6218aaecb703ad46f970623d /pd
parentca171c73936072e5be30444440b45d3fcf65b68b (diff)
outlet ready, multi-instance, split assembly in 2
svn path=/trunk/externals/clr/; revision=4401
Diffstat (limited to 'pd')
-rwxr-xr-xpd/AssemblyInfo.cs58
-rwxr-xr-xpd/Atom.cs28
-rwxr-xr-xpd/pd.cs151
-rwxr-xr-xpd/pd.csproj105
-rwxr-xr-xpd/pd.sln21
5 files changed, 363 insertions, 0 deletions
diff --git a/pd/AssemblyInfo.cs b/pd/AssemblyInfo.cs
new file mode 100755
index 0000000..74d5e94
--- /dev/null
+++ b/pd/AssemblyInfo.cs
@@ -0,0 +1,58 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+//
+// Le informazioni generali relative a un assembly sono controllate dal seguente
+// insieme di attributi. Per modificare le informazioni associate a un assembly
+// occorre quindi modificare i valori di questi attributi.
+//
+[assembly: AssemblyTitle("PureData")]
+[assembly: AssemblyDescription("bridge between C sharp externals and pd")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("Davide Morelli")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+//
+// Le informazioni sulla versione di un assembly sono costituite dai seguenti quattro valori:
+//
+// Numero di versione principale
+// Numero di versione secondario
+// Numero revisione
+// Numero build
+//
+// È possibile specificare tutti i valori o impostare come predefiniti i valori Numero revisione e Numero build
+// utilizzando l'asterisco (*) come illustrato di seguito:
+
+[assembly: AssemblyVersion("1.0.*")]
+
+//
+// Per firmare l'assembly è necessario specificare una chiave da utilizzare.
+// Fare riferimento alla documentazione di Microsoft .NET Framework per ulteriori informazioni sulla firma degli assembly.
+//
+// Utilizzare gli attributi elencati di seguito per verificare la chiave utilizzata per la firma.
+//
+// Note:
+// (*) Se non è specificata alcuna chiave, non sarà possibile firmare l'assembly.
+// (*) KeyName fa riferimento a una chiave installata nel provider di servizi di
+// crittografia (CSP) sul computer in uso. KeyFile fa riferimento a un file che contiene
+// una chiave.
+// (*) Se entrambi i valori KeyFile e KeyName sono specificati, si
+// verificherà il seguente processo:
+// (1) Se KeyName è presente in CSP, verrà utilizzata tale chiave.
+// (2) Se KeyName non esiste e KeyFile esiste, la chiave
+// di KeyFile verrà installata nel CSP e utilizzata.
+// (*) Per creare un KeyFile, è possibile utilizzare l'utilità sn.exe (Strong Name).
+// Quando si specifica il KeyFile, il percorso dovrà essere
+// relativo alla directory di output del progetto, ovvero
+// %Project Directory%\obj\<configuration>. Se ad esempio il KeyFile si
+// trova nella directory del progetto, occorre specificare l'attributo AssemblyKeyFile
+// come [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
+// (*) La firma ritardata è un'opzione avanzata. Vedere la documentazione di Microsoft
+// .NET Framework per ulteriori informazioni.
+//
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile("")]
+[assembly: AssemblyKeyName("")]
diff --git a/pd/Atom.cs b/pd/Atom.cs
new file mode 100755
index 0000000..7e0affa
--- /dev/null
+++ b/pd/Atom.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Runtime.InteropServices; // for structures
+
+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(string s)
+ {
+ this.type = AtomType.Symbol;
+ this.float_value = 0;
+ this.string_value = s;
+ }
+ }
+} \ No newline at end of file
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;
+ */
+
+}
diff --git a/pd/pd.csproj b/pd/pd.csproj
new file mode 100755
index 0000000..915ac50
--- /dev/null
+++ b/pd/pd.csproj
@@ -0,0 +1,105 @@
+<VisualStudioProject>
+ <CSHARP
+ ProjectType = "Local"
+ ProductVersion = "7.10.3077"
+ SchemaVersion = "2.0"
+ ProjectGuid = "{FFBC9D2E-1FB7-4E82-B5DC-46B31F8A58A2}"
+ >
+ <Build>
+ <Settings
+ ApplicationIcon = ""
+ AssemblyKeyContainerName = ""
+ AssemblyName = "PureData"
+ AssemblyOriginatorKeyFile = ""
+ DefaultClientScript = "JScript"
+ DefaultHTMLPageLayout = "Grid"
+ DefaultTargetSchema = "IE50"
+ DelaySign = "false"
+ OutputType = "Library"
+ PreBuildEvent = ""
+ PostBuildEvent = ""
+ RootNamespace = "PureData"
+ RunPostBuildEvent = "OnBuildSuccess"
+ StartupObject = ""
+ >
+ <Config
+ Name = "Debug"
+ AllowUnsafeBlocks = "false"
+ BaseAddress = "285212672"
+ CheckForOverflowUnderflow = "false"
+ ConfigurationOverrideFile = ""
+ DefineConstants = "DEBUG;TRACE"
+ DocumentationFile = ""
+ DebugSymbols = "true"
+ FileAlignment = "4096"
+ IncrementalBuild = "false"
+ NoStdLib = "false"
+ NoWarn = ""
+ Optimize = "false"
+ OutputPath = "bin\Debug\"
+ RegisterForComInterop = "false"
+ RemoveIntegerChecks = "false"
+ TreatWarningsAsErrors = "false"
+ WarningLevel = "4"
+ />
+ <Config
+ Name = "Release"
+ AllowUnsafeBlocks = "false"
+ BaseAddress = "285212672"
+ CheckForOverflowUnderflow = "false"
+ ConfigurationOverrideFile = ""
+ DefineConstants = "TRACE"
+ DocumentationFile = ""
+ DebugSymbols = "false"
+ FileAlignment = "4096"
+ IncrementalBuild = "false"
+ NoStdLib = "false"
+ NoWarn = ""
+ Optimize = "true"
+ OutputPath = "bin\Release\"
+ RegisterForComInterop = "false"
+ RemoveIntegerChecks = "false"
+ TreatWarningsAsErrors = "false"
+ WarningLevel = "4"
+ />
+ </Settings>
+ <References>
+ <Reference
+ Name = "System"
+ AssemblyName = "System"
+ HintPath = "..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll"
+ />
+ <Reference
+ Name = "System.Data"
+ AssemblyName = "System.Data"
+ HintPath = "..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll"
+ />
+ <Reference
+ Name = "System.XML"
+ AssemblyName = "System.Xml"
+ HintPath = "..\..\..\..\..\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll"
+ />
+ </References>
+ </Build>
+ <Files>
+ <Include>
+ <File
+ RelPath = "AssemblyInfo.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "Atom.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "pd.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ </Include>
+ </Files>
+ </CSHARP>
+</VisualStudioProject>
+
diff --git a/pd/pd.sln b/pd/pd.sln
new file mode 100755
index 0000000..2d4a44b
--- /dev/null
+++ b/pd/pd.sln
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "pd", "pd.csproj", "{FFBC9D2E-1FB7-4E82-B5DC-46B31F8A58A2}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {FFBC9D2E-1FB7-4E82-B5DC-46B31F8A58A2}.Debug.ActiveCfg = Debug|.NET
+ {FFBC9D2E-1FB7-4E82-B5DC-46B31F8A58A2}.Debug.Build.0 = Debug|.NET
+ {FFBC9D2E-1FB7-4E82-B5DC-46B31F8A58A2}.Release.ActiveCfg = Release|.NET
+ {FFBC9D2E-1FB7-4E82-B5DC-46B31F8A58A2}.Release.Build.0 = Release|.NET
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal