Index: /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab.sln
===================================================================
--- /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab.sln	(revision 10122)
+++ /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab.sln	(revision 10122)
@@ -0,0 +1,46 @@
+﻿
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cs_example", "DotNetScilab\cs_example\cs_example.csproj", "{10B5A5BF-3204-4B47-91C0-7FA614EFA94A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetScilab", "DotNetScilab\dotnetsci\DotNetScilab.csproj", "{C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|Any CPU = Release|Any CPU
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{10B5A5BF-3204-4B47-91C0-7FA614EFA94A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{10B5A5BF-3204-4B47-91C0-7FA614EFA94A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{10B5A5BF-3204-4B47-91C0-7FA614EFA94A}.Debug|x64.ActiveCfg = Debug|x64
+		{10B5A5BF-3204-4B47-91C0-7FA614EFA94A}.Debug|x64.Build.0 = Debug|x64
+		{10B5A5BF-3204-4B47-91C0-7FA614EFA94A}.Debug|x86.ActiveCfg = Debug|x86
+		{10B5A5BF-3204-4B47-91C0-7FA614EFA94A}.Debug|x86.Build.0 = Debug|x86
+		{10B5A5BF-3204-4B47-91C0-7FA614EFA94A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{10B5A5BF-3204-4B47-91C0-7FA614EFA94A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{10B5A5BF-3204-4B47-91C0-7FA614EFA94A}.Release|x64.ActiveCfg = Release|x64
+		{10B5A5BF-3204-4B47-91C0-7FA614EFA94A}.Release|x64.Build.0 = Release|x64
+		{10B5A5BF-3204-4B47-91C0-7FA614EFA94A}.Release|x86.ActiveCfg = Release|x86
+		{10B5A5BF-3204-4B47-91C0-7FA614EFA94A}.Release|x86.Build.0 = Release|x86
+		{C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Debug|x64.ActiveCfg = Debug|x64
+		{C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Debug|x64.Build.0 = Debug|x64
+		{C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Debug|x86.ActiveCfg = Debug|x86
+		{C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Debug|x86.Build.0 = Debug|x86
+		{C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Release|Any CPU.Build.0 = Release|Any CPU
+		{C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Release|x64.ActiveCfg = Release|x64
+		{C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Release|x64.Build.0 = Release|x64
+		{C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Release|x86.ActiveCfg = Release|x86
+		{C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Release|x86.Build.0 = Release|x86
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
Index: /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/cs_example/Properties/AssemblyInfo.cs
===================================================================
--- /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/cs_example/Properties/AssemblyInfo.cs	(revision 10122)
+++ /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/cs_example/Properties/AssemblyInfo.cs	(revision 10122)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("example")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Scilab - DIGITEO")]
+[assembly: AssemblyProduct("example")]
+[assembly: AssemblyCopyright("Copyright © Scilab 2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("17e29de2-0c66-420c-931c-662ab2883fb8")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/cs_example/cs_example.cs
===================================================================
--- /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/cs_example/cs_example.cs	(revision 10122)
+++ /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/cs_example/cs_example.cs	(revision 10122)
@@ -0,0 +1,270 @@
+﻿/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2009 - DIGITEO - Allan CORNET
+ * 
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at    
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+//=============================================================================
+using System;
+using cs_example;
+using DotNetScilab;
+//=============================================================================
+namespace example {
+  class cs_example {
+    //=============================================================================
+    /*
+     * A small example to call scilab from C#
+     * read & write matrix of double, string, boolean, int(32)
+     */
+    static void example_readwriteMatrixOfDouble(Scilab _objScilab) {
+      //=============================================================================
+      // Send a command to scilab
+      // Here , we want to display SCI variable
+      _objScilab.SendScilabJob("disp(\'SCI = \');");
+      _objScilab.SendScilabJob("disp(SCI);");
+      //=============================================================================
+      double[] A = new double[] { 1, 2, 3, 4, 5, 6 };
+      int mA = 2, nA = 3;
+
+      // Write a matrix of double named in scilab
+      _objScilab.createNamedMatrixOfDouble("A", mA, nA, A);
+
+      // display matrix of double by scilab
+      _objScilab.SendScilabJob("disp(\'A =\');");
+      _objScilab.SendScilabJob("disp(A);");
+      //=============================================================================
+      if (_objScilab.getNamedVarType("A") == (int)DotNetScilab.ScilabType.sci_matrix) {
+        Console.WriteLine("A is a matrix of double");
+      }
+      //=============================================================================
+      _objScilab.SendScilabJob("B = A + 1;");
+
+      // get dimensions of a named matrix of double
+      int[] DimB = _objScilab.getNamedVarDimension("B");
+
+      // get named matrix of double
+      double[] B = _objScilab.readNamedMatrixOfDouble("B");
+
+      // display matrix of double from C#
+      Console.WriteLine("");
+      Console.WriteLine("(C#) B =");
+      for (int i = 0; i < DimB[0]; i++) {
+        for (int j = 0; j < DimB[1]; j++) {
+          Console.Write(B[j * DimB[0] + i] + " ");
+        }
+
+        Console.WriteLine("");
+      }
+
+      // display matrix of double by scilab
+      _objScilab.SendScilabJob("disp(\'B =\');");
+      _objScilab.SendScilabJob("disp(B);");
+      //=============================================================================
+    }
+    //=============================================================================
+    static void example_readwriteMatrixOfString(Scilab _objScilab) {
+      //=============================================================================
+      string[] strA = new string[] { "Scilab", "The", "open",
+                                        "source", "for", "numerical",
+                                        "computation" , ":", ")"};
+      int mstrA = 3, nstrA = 3;
+
+      // Write a matrix of string named in scilab
+      _objScilab.createNamedMatrixOfString("string_A", mstrA, nstrA, strA);
+
+      // display matrix of string by scilab
+      _objScilab.SendScilabJob("disp(\'string_A =\');");
+      _objScilab.SendScilabJob("disp(string_A);");
+      //=============================================================================
+      if (_objScilab.getNamedVarType("string_A") == (int)DotNetScilab.ScilabType.sci_strings) {
+        Console.WriteLine("string_A is a matrix of strings");
+      }
+      //=============================================================================
+      _objScilab.SendScilabJob("string_B = convstr(string_A,\'u\');");
+
+      // get dimensions of a named matrix of string
+      int[] DimstrB = _objScilab.getNamedVarDimension("string_B");
+
+      // get named matrix of string
+      string[] strB = _objScilab.readNamedMatrixOfString("string_B");
+
+      Console.WriteLine("");
+      Console.WriteLine("(C#) strB =");
+      for (int i = 0; i < DimstrB[0]; i++) {
+        for (int j = 0; j < DimstrB[1]; j++) {
+          Console.Write(strB[j * DimstrB[0] + i] + " ");
+        }
+
+        Console.WriteLine("");
+      }
+
+      // display matrix of string by scilab
+      _objScilab.SendScilabJob("disp(\'string_B =\');");
+      _objScilab.SendScilabJob("disp(string_B);");
+      //=============================================================================
+    }
+    //=============================================================================
+    static void example_readwriteMatrixOfBoolean(Scilab _objScilab) {
+      //=============================================================================
+      Boolean[] bA = new Boolean[] { false, true, false,
+                                           true, false, true};
+      int mbA = 2, nbA = 3;
+
+      // Write a matrix of string named in scilab
+      _objScilab.createNamedMatrixOfBoolean("boolean_A", mbA, nbA, bA);
+
+      // display matrix of string by scilab
+      _objScilab.SendScilabJob("disp(\'boolean_A =\');");
+      _objScilab.SendScilabJob("disp(boolean_A);");
+      //=============================================================================
+      // check if av
+      if (_objScilab.existNamedVariable("boolean_A") == true) {
+        Console.WriteLine("boolean_A exists in scilab");
+      }
+
+      if (_objScilab.existNamedVariable("boolean_B") == false) {
+        Console.WriteLine("boolean_B does not exist in scilab");
+      }
+      //=============================================================================
+      if (_objScilab.getNamedVarType("boolean_A") == (int)DotNetScilab.ScilabType.sci_boolean) {
+        Console.WriteLine("boolean_A is a matrix of boolean");
+      }
+      //=============================================================================
+      _objScilab.SendScilabJob("boolean_B = ~boolean_A;");
+      // get dimensions of a named matrix of boolean
+      int[] DimbB = _objScilab.getNamedVarDimension("boolean_B");
+
+      // get named matrix of boolean
+      Boolean[] bB = _objScilab.getNamedMatrixOfBoolean("boolean_B");
+
+      Console.WriteLine("");
+      Console.WriteLine("(C#) bB =");
+      for (int i = 0; i < DimbB[0]; i++) {
+        for (int j = 0; j < DimbB[1]; j++) {
+          Console.Write(bB[j * DimbB[0] + i] + " ");
+        }
+
+        Console.WriteLine("");
+      }
+
+      // display matrix of string by scilab
+      _objScilab.SendScilabJob("disp(\'boolean_B =\');");
+      _objScilab.SendScilabJob("disp(boolean_B);");
+      //=============================================================================
+    }
+    //=============================================================================
+    static void example_doplot3d(Scilab _objScilab) {
+      _objScilab.SendScilabJob("plot3d()");
+      while (_objScilab.HaveAGraph()) {
+        _objScilab.doEvent();
+      }
+    }
+    //=============================================================================
+    static void example_readwriteMatrixOfInt(Scilab _objScilab) {
+      //=============================================================================
+      int[] A = new int[] { 1, 2, 3, 4, 5, 6 };
+      int mA = 2, nA = 3;
+
+      // Write a matrix of double named in scilab
+      _objScilab.createNamedMatrixOfInt32("int32_A", mA, nA, A);
+
+      // display matrix of double by scilab
+      _objScilab.SendScilabJob("disp(\'int32_A =\');");
+      _objScilab.SendScilabJob("disp(int32_A);");
+      //=============================================================================
+      if (_objScilab.getNamedVarType("int32_A") == (int)DotNetScilab.ScilabType.sci_ints) {
+        Console.WriteLine("int32_A is a matrix of int(32)");
+      }
+      //=============================================================================
+      _objScilab.SendScilabJob("int32_B = int32_A + 1;");
+
+      // get dimensions of a named matrix of double
+      int[] DimB = _objScilab.getNamedVarDimension("int32_B");
+
+      // get named matrix of double
+      int[] B = _objScilab.readNamedMatrixOfInt32("int32_B");
+
+      // display matrix of double from C#
+      Console.WriteLine("");
+      Console.WriteLine("(C#) int32_B =");
+      for (int i = 0; i < DimB[0]; i++) {
+        for (int j = 0; j < DimB[1]; j++) {
+          Console.Write(B[j * DimB[0] + i] + " ");
+        }
+
+        Console.WriteLine("");
+      }
+
+      // display matrix of double by scilab
+      _objScilab.SendScilabJob("disp(\'int32_B =\');");
+      _objScilab.SendScilabJob("disp(int32_B);");
+      //=============================================================================
+    }
+    //=============================================================================
+    static void example_readwriteComplexMatrixOfDouble(Scilab _objScilab) {
+      //=============================================================================
+      double[] realPartA = new double[] { 1, 2, 3, 4, 5, 6 };
+      double[] imagPartA = new double[] { 6, 5, 4, 3, 2, 1 };
+      int mA = 2, nA = 3;
+
+      // Write a matrix of double named in scilab
+      _objScilab.createNamedComplexMatrixOfDouble("cplx_A", mA, nA, realPartA, imagPartA);
+
+      // display matrix of double by scilab
+      _objScilab.SendScilabJob("disp(\'cplx_A =\');");
+      _objScilab.SendScilabJob("disp(cplx_A);");
+      //=============================================================================
+      _objScilab.SendScilabJob("cplx_B = cplx_A * 2;");
+
+      // get dimensions of a named matrix of double
+      int[] DimB = _objScilab.getNamedVarDimension("cplx_B");
+
+      // get named matrix of double
+      double[] realPartB = _objScilab.readNamedComplexMatrixOfDoubleRealPart("cplx_B");
+      double[] imagPartB = _objScilab.readNamedComplexMatrixOfDoubleImgPart("cplx_B");
+
+      // display matrix of double from C#
+      Console.WriteLine("");
+      Console.WriteLine("(C#) cplx_B =");
+      for (int i = 0; i < DimB[0]; i++) {
+        for (int j = 0; j < DimB[1]; j++) {
+          Console.Write(realPartB[j * DimB[0] + i] + " + i *" + imagPartB[j * DimB[0] + i] + " ");
+        }
+
+        Console.WriteLine("");
+      }
+
+      // display matrix of double by scilab
+      _objScilab.SendScilabJob("disp(\'cplx_B =\');");
+      _objScilab.SendScilabJob("disp(cplx_B);");
+      //=============================================================================
+    }
+    //=============================================================================
+    static void Main(string[] args) {
+      Util.AddScilabInstalltionPathToEnvironment();
+      // start scilab engine with graphics
+      Scilab m_oSCilab = new Scilab(true);
+
+      example_readwriteMatrixOfDouble(m_oSCilab);
+
+      example_readwriteMatrixOfString(m_oSCilab);
+
+      example_readwriteMatrixOfBoolean(m_oSCilab);
+
+      example_readwriteMatrixOfInt(m_oSCilab);
+
+      example_readwriteComplexMatrixOfDouble(m_oSCilab);
+
+      //mkommend 11.11.2013: commented out as this functionality is not completely working
+      //chart is displayed, but hasFigures throws an exception
+      //example_doplot3d(m_oSCilab);
+    }
+    //=============================================================================
+  }
+}
+//=============================================================================
Index: /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/cs_example/cs_example.csproj
===================================================================
--- /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/cs_example/cs_example.csproj	(revision 10122)
+++ /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/cs_example/cs_example.csproj	(revision 10122)
@@ -0,0 +1,113 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{10B5A5BF-3204-4B47-91C0-7FA614EFA94A}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>cs_example</RootNamespace>
+    <AssemblyName>cs_example</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="cs_example.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Util.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\dotnetsci\DotNetScilab.csproj">
+      <Project>{c3f0c7dc-82ad-405b-990a-bf2c5b7f46ff}</Project>
+      <Name>DotNetScilab</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/dotnetsci/DotNetScilab.csproj
===================================================================
--- /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/dotnetsci/DotNetScilab.csproj	(revision 10122)
+++ /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/dotnetsci/DotNetScilab.csproj	(revision 10122)
@@ -0,0 +1,119 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>DotNetScilab</RootNamespace>
+    <AssemblyName>DotNet-Component-Scilab</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <RegisterForComInterop>false</RegisterForComInterop>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <RegisterForComInterop>false</RegisterForComInterop>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <RegisterForComInterop>false</RegisterForComInterop>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <Optimize>true</Optimize>
+    <RegisterForComInterop>false</RegisterForComInterop>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <RegisterForComInterop>false</RegisterForComInterop>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <Optimize>true</Optimize>
+    <RegisterForComInterop>false</RegisterForComInterop>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Scilab.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Scilab_cs_wrapper.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/dotnetsci/Properties/AssemblyInfo.cs
===================================================================
--- /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/dotnetsci/Properties/AssemblyInfo.cs	(revision 10122)
+++ /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/dotnetsci/Properties/AssemblyInfo.cs	(revision 10122)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("dotnetsci")]
+[assembly: AssemblyDescription(".NET Component for Scilab 5.x")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Scilab - DIGITEO")]
+[assembly: AssemblyProduct("dotnetsci")]
+[assembly: AssemblyCopyright("Copyright © Scilab 2009")]
+[assembly: AssemblyTrademark("Allan CORNET")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("ef7effe8-4440-47b7-b579-433dc94cc859")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/dotnetsci/Scilab.cs
===================================================================
--- /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/dotnetsci/Scilab.cs	(revision 10122)
+++ /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/dotnetsci/Scilab.cs	(revision 10122)
@@ -0,0 +1,515 @@
+﻿/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2009 - DIGITEO - Allan CORNET
+ * 
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at    
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+//=============================================================================
+/* Please notice that it is only a example and not a full C# wrapper */
+//=============================================================================
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Runtime.InteropServices;
+using System.Threading;
+//=============================================================================
+namespace DotNetScilab
+{
+    /* Scilab Types */
+    public enum ScilabType
+    {
+        sci_matrix = 1,
+        sci_poly = 2,
+        sci_boolean = 4,
+        sci_sparse = 5,
+        sci_boolean_sparse = 6,
+        sci_matlab_sparse = 7,
+        sci_ints = 8,
+        sci_handles = 9,
+        sci_strings = 10,
+        sci_u_function = 11,
+        sci_c_function = 13,
+        sci_lib = 14,
+        sci_list = 15,
+        sci_tlist = 16,
+        sci_mlist = 17,
+        sci_pointer = 128,
+        sci_implicit_poly = 129,
+        sci_intrinsic_function = 130
+    };
+
+    public sealed class Scilab
+    {
+        //=============================================================================
+        static Scilab instance = null;
+        static readonly object padlock = new object();
+        private Boolean withGraphics = false;
+        //=============================================================================
+        /// <summary>
+        /// Constructor, initialize scilab engine.
+        /// </summary>
+        public Scilab()
+        {
+            // Disable TCL/TK and Java graphic interfaces
+            Scilab_cs_wrapper.DisableInteractiveMode();
+            withGraphics = false;
+
+            // start Scilab engine configurated without java
+            Scilab_cs_wrapper.StartScilab(null, null, null);
+        }
+        //=============================================================================
+        public Scilab(Boolean _bWithGraphics)
+        {
+            // Disable TCL/TK and Java graphic interfaces
+            if (_bWithGraphics == false)
+            {
+                Scilab_cs_wrapper.DisableInteractiveMode();
+                withGraphics = false;
+            }
+            else
+            {
+                withGraphics = true;
+            }
+
+            // start Scilab engine
+            Scilab_cs_wrapper.StartScilab(null, null, null);
+        }
+        //=============================================================================
+        /// <summary>
+        /// Singleton 
+        /// Only one instance of Scilab can be launch
+        /// thread safe
+        /// </summary>
+        public static Scilab Instance
+        {
+            get
+            {
+                lock (padlock)
+                {
+                    if (instance == null)
+                    {
+                        instance = new Scilab();
+                    }
+                    return instance;
+                }
+            }
+        }
+        //=============================================================================
+        /// <summary>
+        /// Destructor
+        /// </summary>
+        ~Scilab()
+        {
+            // freed by O.S
+            //Scilab_cs_wrapper.TerminateScilab(null);
+        }
+        //=============================================================================
+        /// <summary>
+        /// Send a job to scilab
+        /// </summary>
+        /// <param name="command">command to send to scilab</param>
+        /// <returns>error code operation, 0 : OK</returns>
+        public int SendScilabJob(string command)
+        {
+            return Scilab_cs_wrapper.SendScilabJob(command);
+        }
+        //=============================================================================
+        /// <summary>
+        ///  get last error code
+        /// </summary>
+        /// <returns>last error code</returns>
+        public int GetLastErrorCode()
+        {
+            return Scilab_cs_wrapper.GetLastErrorCode();
+        }
+        //=============================================================================
+        /// <summary>
+        /// Write a named matrix of double in Scilab
+        /// </summary>
+        /// <param name="matrixName"> variable name</param>
+        /// <param name="iRows"> Number of row</param>
+        /// <param name="iCols"> Number of column</param>
+        /// <param name="matrixDouble"> pointer on data</param>
+        /// <returns> if the operation successes (0) or not ( !0 )</returns>
+        public int createNamedMatrixOfDouble(string matrixName, int iRows, int iCols, double[] matrixDouble)
+        {
+            System.IntPtr ptrEmpty = new System.IntPtr();
+            Scilab_cs_wrapper.api_Err SciErr = Scilab_cs_wrapper.createNamedMatrixOfDouble(ptrEmpty, matrixName, iRows, iCols, matrixDouble);
+            return SciErr.iErr;
+        }
+        //=============================================================================
+        /// <summary>
+        /// Write a named matrix of string in scilab
+        /// </summary>
+        /// <param name="matrixName"> variable name</param>
+        /// <param name="iRows"> Number of row</param>
+        /// <param name="iCols"> Number of column</param>
+        /// <param name="matrixDouble"> pointer on data</param>
+        /// <returns> if the operation successes (0) or not ( !0 )</returns>
+        public int createNamedMatrixOfString(string matrixName, int iRows, int iCols, string[] matrixString)
+        {
+            System.IntPtr ptrEmpty = new System.IntPtr();
+            Scilab_cs_wrapper.api_Err SciErr = Scilab_cs_wrapper.createNamedMatrixOfString(ptrEmpty, matrixName, iRows, iCols, matrixString);
+            return SciErr.iErr;
+        }
+        //=============================================================================
+        /// <summary>
+        /// Write a named matrix of boolean in Scilab
+        /// </summary>
+        /// <param name="matrixName"> variable name</param>
+        /// <param name="iRows"> Number of row</param>
+        /// <param name="iCols"> Number of column</param>
+        /// <param name="matrixBoolean"> pointer on data</param>
+        /// <returns> if the operation successes (0) or not ( !0 )</returns>
+        public int createNamedMatrixOfBoolean(string matrixName, int iRows, int iCols, Boolean[] matrixBoolean)
+        {
+            int[] matrixInt = new int[matrixBoolean.Length];
+            for (int i = 0; i < matrixBoolean.Length; i++)
+            {
+                if (matrixBoolean[i] == true)
+                {
+                    matrixInt[i] = 1;
+                }
+                else
+                {
+                    matrixInt[i] = 0;
+                }
+            }
+            System.IntPtr ptrEmpty = new System.IntPtr();
+            Scilab_cs_wrapper.api_Err SciErr = Scilab_cs_wrapper.createNamedMatrixOfBoolean(ptrEmpty, matrixName, iRows, iCols, matrixInt);
+            return SciErr.iErr;
+        }
+        //=============================================================================
+        /// <summary>
+        /// Write a named matrix of int(32) in Scilab
+        /// </summary>
+        /// <param name="matrixName"> variable name</param>
+        /// <param name="iRows"> Number of row</param>
+        /// <param name="iCols"> Number of column</param>
+        /// <param name="matrixInt"> pointer on data</param>
+        public int createNamedMatrixOfInt32(string matrixName, int iRows, int iCols, int[] matrixInt)
+        {
+            System.IntPtr ptrEmpty = new System.IntPtr();
+            Scilab_cs_wrapper.api_Err SciErr = Scilab_cs_wrapper.createNamedMatrixOfInteger32(ptrEmpty, matrixName, iRows, iCols, matrixInt);
+            return SciErr.iErr;
+        }
+        //=============================================================================
+        /// <summary>
+        /// Write a named matrix of complex double in Scilab
+        /// </summary>
+        /// <param name="matrixName"> variable name</param>
+        /// <param name="iRows">Number of row</param>
+        /// <param name="iCols">Number of column</param>
+        /// <param name="matrixRealPart">real part</param>
+        /// <param name="matrixImagPart">imag part</param>
+        /// <returns></returns>
+        public int createNamedComplexMatrixOfDouble(string matrixName,
+                                                int iRows, int iCols,
+                                                double[] matrixRealPart,
+                                                double[] matrixImagPart)
+        {
+            System.IntPtr ptrEmpty = new System.IntPtr();
+            Scilab_cs_wrapper.api_Err SciErr = Scilab_cs_wrapper.createNamedComplexMatrixOfDouble(ptrEmpty, matrixName,
+                                                    iRows, iCols,
+                                                    matrixRealPart,
+                                                    matrixImagPart);
+            return SciErr.iErr;
+        }
+        //=============================================================================
+        /// <summary>
+        /// Read a named matrix of double from Scilab
+        /// </summary>
+        /// <param name="matrixName"> variable name</param>
+        /// <returns>a matrix of double from scilab. If Variable name does not exist returns null</returns>
+        public unsafe double[] readNamedMatrixOfDouble(string matrixName)
+        {
+            int iRows = 0;
+            int iCols = 0;
+
+            System.IntPtr ptrEmpty = new System.IntPtr();
+            Scilab_cs_wrapper.api_Err SciErr = Scilab_cs_wrapper.readNamedMatrixOfDouble(ptrEmpty, matrixName, &iRows, &iCols, null);
+
+            if (iRows * iCols > 0)
+            {
+                double[] matrixDouble = new double[iRows * iCols];
+
+                // get values in matrixDouble
+                SciErr = Scilab_cs_wrapper.readNamedMatrixOfDouble(ptrEmpty, matrixName, &iRows, &iCols, matrixDouble);
+                if (SciErr.iErr != 0) return null;
+                return matrixDouble;
+            }
+            return null;
+        }
+        //=============================================================================
+        /// <summary>
+        /// Get dimensions of a named matrix in scilab
+        /// </summary>
+        /// <returns>a int array. 
+        /// if variable name does not exist dimensions are null </returns>
+        public unsafe int[] getNamedVarDimension(string matrixName)
+        {
+            int[] iDim = null;
+            int iRows = 0;
+            int iCols = 0;
+
+            System.IntPtr ptrEmpty = new System.IntPtr();
+            Scilab_cs_wrapper.api_Err SciErr = Scilab_cs_wrapper.getNamedVarDimension(ptrEmpty, matrixName, &iRows, &iCols);
+            if (SciErr.iErr == 0)
+            {
+                iDim = new int[2];
+                iDim[0] = iRows;
+                iDim[1] = iCols;
+            }
+            return iDim;
+        }
+        //=============================================================================
+        /// <summary>
+        /// Read a named matrix of string from scilab
+        /// </summary>
+        /// <param name="matrixName"> variable name</param>
+        /// <returns>a matrix of string from scilab. If Variable name does not exist returns null</returns>
+        public unsafe string[] readNamedMatrixOfString(string matrixName)
+        {
+            string[] matrixString = null;
+
+            int[] iDim = getNamedVarDimension(matrixName);
+
+            if (iDim != null)
+            {
+                int iRows = iDim[0];
+                int iCols = iDim[1];
+
+                // we allocate lengthmatrixString
+                int[] lengthmatrixString = new int[iRows * iCols];
+
+                System.IntPtr ptrEmpty = new System.IntPtr();
+
+                // we get length of strings
+                Scilab_cs_wrapper.api_Err SciErr = Scilab_cs_wrapper.readNamedMatrixOfString(ptrEmpty, matrixName, 
+                                        &iRows, &iCols, 
+                                        lengthmatrixString, null);
+
+                // we allocate each string
+                matrixString = new string[iRows * iCols];
+                for (int i = 0; i < iRows * iCols; i++)
+                {
+                    matrixString[i] = new string(' ', lengthmatrixString[i]);
+                }
+
+                // we get strings from scilab
+                SciErr = Scilab_cs_wrapper.readNamedMatrixOfString(ptrEmpty, matrixName, 
+                                                &iRows, &iCols,
+                                                lengthmatrixString, 
+                                                matrixString);
+            }
+            return matrixString;
+        }
+        //=============================================================================
+        /// <summary>
+        /// Read a named matrix of boolean from Scilab
+        /// </summary>
+        /// <param name="matrixName"> variable name</param>
+        /// <returns>a matrix of boolean from scilab. If Variable name does not exist returns null</returns>
+        public unsafe Boolean[] getNamedMatrixOfBoolean(string matrixName)
+        {
+            Boolean[] matrixBoolean = null;
+            int[] iDim = getNamedVarDimension(matrixName);
+
+            if (iDim != null)
+            {
+                int iRows = iDim[0];
+                int iCols = iDim[1];
+                int[] matrixInt = new int[iRows * iCols];
+
+                System.IntPtr ptrEmpty = new System.IntPtr();
+
+                // get values in matrixDouble
+                Scilab_cs_wrapper.api_Err SciErr = Scilab_cs_wrapper.readNamedMatrixOfBoolean(ptrEmpty, matrixName, 
+                                                            &iRows, &iCols, 
+                                                            matrixInt);
+
+                if (matrixInt != null)
+                {
+                    matrixBoolean = new Boolean[iRows * iCols];
+                    for (int i = 0; i < iRows * iCols; i++)
+                    {
+                        if (matrixInt[i] == 1)
+                        {
+                            matrixBoolean[i] = true;
+                        }
+                        else
+                        {
+                            matrixBoolean[i] = false;
+                        }
+                    }
+                }
+            }
+            return matrixBoolean;
+        }
+        //=============================================================================
+        /// <summary>
+        /// Read a named matrix of complex double in Scilab (Real part)
+        /// </summary>
+        /// <param name="matrixName">variable name</param>
+        /// <returns> real part. If Variable name does not exist returns null</returns>
+        public unsafe double[] readNamedComplexMatrixOfDoubleRealPart(string matrixName)
+        {
+            double[] dRealPart = null;
+            int[] iDim = getNamedVarDimension(matrixName);
+            if (iDim != null)
+            {
+                int iRows = iDim[0];
+                int iCols = iDim[1];
+
+                double[] dImagPart = new double[iRows * iCols];
+                dRealPart = new double[iRows * iCols];
+
+                System.IntPtr ptrEmpty = new System.IntPtr();
+
+                Scilab_cs_wrapper.api_Err SciErr = Scilab_cs_wrapper.readNamedComplexMatrixOfDouble(ptrEmpty, matrixName,
+                                           &iRows, &iCols,
+                                           dRealPart,
+                                           dImagPart);
+            }
+            return dRealPart;
+        }
+        //=============================================================================
+        /// <summary>
+        /// Read a named matrix of complex double in Scilab (Imag part)
+        /// </summary>
+        /// <param name="matrixName">variable name</param>
+        /// <returns> img part. If Variable name does not exist returns null</returns>
+        public unsafe double[] readNamedComplexMatrixOfDoubleImgPart(string matrixName)
+        {
+            double[] dImagPart = null;
+            int[] iDim = getNamedVarDimension(matrixName);
+            if (iDim != null)
+            {
+                int iRows = iDim[0];
+                int iCols = iDim[1];
+
+                double[] dRealPart = new double[iRows * iCols];
+                dImagPart = new double[iRows * iCols];
+
+                System.IntPtr ptrEmpty = new System.IntPtr();
+
+                Scilab_cs_wrapper.api_Err SciErr = Scilab_cs_wrapper.readNamedComplexMatrixOfDouble(ptrEmpty, matrixName,
+                                           &iRows, &iCols,
+                                           dRealPart,
+                                           dImagPart);
+            }
+            return dImagPart;
+        }
+        //=============================================================================
+        /// <summary>
+        /// Read a named matrix of int(32) in Scilab
+        /// </summary>
+        /// <param name="matrixName"> variable name</param>
+        /// <returns>a matrix of int(32) from scilab. If Variable name does not exist returns null</returns>
+        public unsafe int[] readNamedMatrixOfInt32(string matrixName)
+        {
+            int[] matrixInt = null;
+            int[] iDim = getNamedVarDimension(matrixName);
+            if (iDim != null)
+            {
+                int iRows = iDim[0];
+                int iCols = iDim[1];
+
+                // we allocate matrixInt array
+                matrixInt = new int[iRows * iCols];
+
+                System.IntPtr ptrEmpty = new System.IntPtr();
+
+                // get values in matrixInt
+                Scilab_cs_wrapper.api_Err SciErr = Scilab_cs_wrapper.readNamedMatrixOfInteger32(ptrEmpty, matrixName, &iRows, &iCols, matrixInt);
+            }
+            return matrixInt;
+        }
+        //=============================================================================
+        /// <summary>
+        /// get scilab type of named matrix
+        /// </summary>
+        /// <param name="matrixName"> variable name</param>
+        /// <returns>scilab type (see enum ScilabType)</returns>
+        public unsafe int getNamedVarType(string matrixName)
+        {
+            int iType = 0;
+            System.IntPtr ptrEmpty = new System.IntPtr();
+
+            Scilab_cs_wrapper.api_Err SciErr = Scilab_cs_wrapper.getNamedVarType(ptrEmpty, matrixName, &iType);
+            if (SciErr.iErr == 0) return iType;
+            return 0;
+        }
+        //=============================================================================
+        /// <summary>
+        /// Detect if a variable name exists in Scilab
+        /// </summary>
+        /// <param name="matrixName"> variable name</param>
+        /// <returns> true if exists</returns>
+        public unsafe Boolean existNamedVariable(string matrixName)
+        {
+            int* piAdress = null;
+            System.IntPtr ptrEmpty = new System.IntPtr();
+
+            Scilab_cs_wrapper.api_Err SciErr = Scilab_cs_wrapper.getVarAddressFromName(ptrEmpty, matrixName, &piAdress);
+            if (SciErr.iErr == 0) return true;
+            return false;
+        }
+        //=============================================================================
+        /// <summary>
+        /// Execute a scilab script .sce
+        /// </summary>
+        /// <param name="scriptFilename">the path to the .sce file</param>
+        /// <returns>error code operation, 0 : OK</returns>
+        public int execScilabScript(String scriptFilename)
+        {
+            return Scilab_cs_wrapper.SendScilabJob("exec('" + scriptFilename + "');");
+        }
+        //=============================================================================
+        /// <summary>
+        /// Detect if a Scilab graphic window is opened
+        /// </summary>
+        /// <returns>true or false</returns>
+        public Boolean HaveAGraph()
+        {
+            if (withGraphics)
+            {
+                int ierr = Scilab_cs_wrapper.sciHasFigures();
+                if (ierr == 1) return true;
+            }
+            return false;
+        }
+        //=============================================================================
+        /// <summary>
+        /// do a scilab event
+        /// parser need to run to do a event
+        /// </summary>
+        /// <returns>error code operation, 0 : OK</returns>
+        public int doEvent()
+        {
+            // do a pause (we do not want 100% CPU used)
+            // ugly but it works ...
+            Thread.Sleep(1);
+            // do a loop of parser
+            return SendScilabJob("");
+        }
+        //=============================================================================
+        /// <summary>
+        /// get scilab type of named matrix
+        /// </summary>
+        /// <param name="matrixName"> variable name</param>
+        /// <returns>scilab type (see enum ScilabType)</returns>
+        public int isNamedVarComplex(string matrixName)
+        {
+            System.IntPtr ptrEmpty = new System.IntPtr();
+            return Scilab_cs_wrapper.isNamedVarComplex(ptrEmpty, matrixName);
+        }
+        //=============================================================================
+    }
+}
+//=============================================================================
Index: /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/dotnetsci/Scilab_cs_wrapper.cs
===================================================================
--- /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/dotnetsci/Scilab_cs_wrapper.cs	(revision 10122)
+++ /branches/HeuristicLab.ExternalEvaluation Scientific/DotNetScilab/dotnetsci/Scilab_cs_wrapper.cs	(revision 10122)
@@ -0,0 +1,228 @@
+﻿/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2009 - DIGITEO - Allan CORNET
+ * 
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at    
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+//=============================================================================
+using System;
+using System.Runtime.InteropServices;
+//=============================================================================
+namespace DotNetScilab {
+  class Scilab_cs_wrapper {
+    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
+    public unsafe struct api_Ctx {
+      public String pstName; /**< Function name */
+    }
+    //=============================================================================
+    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
+    public unsafe struct api_Err {
+      public int iErr;
+      public int iMsgCount;
+      public fixed int pstructMsg[5];
+    }
+    //=============================================================================
+    private const string CALL_SCILAB_DLL = "call_scilab.dll";
+    private const string API_SCILAB_DLL = "api_scilab.dll";
+    private const string GRAPHICS_DLL = "graphics.dll";
+    private const string OUTPUT_STREAM_DLL = "scioutput_stream.dll";
+    //=============================================================================
+    /// <summary>
+    /// import SendScilabJob from C (see call_scilab.h)
+    /// </summary>
+    [DllImport(CALL_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public static extern int SendScilabJob([In]String job);
+    //=============================================================================
+    /// <summary>
+    /// import StartScilab from C (see call_scilab.h)
+    /// </summary>
+    [DllImport(CALL_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public static extern int StartScilab([In] String SCIpath,
+                                          [In] String ScilabStartup,
+                                          [In] Int32[] Stacksize);
+    //=============================================================================
+    /// <summary>
+    /// import TerminateScilab from C (see call_scilab.h)
+    /// </summary>
+    [DllImport(CALL_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public static extern int TerminateScilab([In] String ScilabQuit);
+    //=============================================================================
+    /// <summary>
+    /// import DisableInteractiveMode from C (see call_scilab.h)
+    /// </summary>
+    [DllImport(CALL_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public static extern void DisableInteractiveMode();
+    //=============================================================================
+    /// <summary>
+    /// import createNamedMatrixOfString from C (see api_string.h)
+    /// </summary>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public static extern api_Err createNamedMatrixOfString([In]IntPtr pvApiCtx, [In] String _pstName,
+                                                        [In] int _iRows, [In] int _iCols,
+                                                        [In] String[] _pstStrings);
+    //=============================================================================
+    /// <summary>
+    /// import createNamedMatrixOfWideString from C (see api_string.h)
+    /// </summary>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Unicode)]
+    public static extern api_Err createNamedMatrixOfWideString([In]IntPtr pvApiCtx,
+                                                        [In] String _pstName,
+                                                        [In] int _iRows, [In] int _iCols,
+                                                        [In] String[] _pstStrings);
+    //=============================================================================
+    /// <summary>
+    /// import createNamedMatrixOfDouble from C (see api_double.h)
+    /// </summary>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    [return: MarshalAs(UnmanagedType.Struct)]
+    public static extern api_Err createNamedMatrixOfDouble([In]IntPtr pvApiCtx, [In] String _pstName,
+                                                        [In] int _iRows, [In] int _iCols,
+                                                        [In] double[] _pdblReal);
+
+
+    //=============================================================================
+    /// <summary>
+    /// import createNamedMatrixOfBoolean from C (see api_boolean.h)
+    /// </summary>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public static extern api_Err createNamedMatrixOfBoolean([In]IntPtr pvApiCtx, [In] String _pstName,
+                                                        [In] int _iRows, [In] int _iCols,
+                                                        [In] int[] _piBool);
+    //=============================================================================
+    /// <summary>
+    /// import createNamedMatrixOfInteger32 from C (see api_int.h)
+    /// </summary>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public unsafe static extern api_Err createNamedMatrixOfInteger32([In]IntPtr pvApiCtx, [In] String _pstName,
+                                                       [In] int _iRows, [In] int _iCols,
+                                                       [In] int[] _piData);
+    //=============================================================================
+    /// <summary>
+    /// import createNamedComplexMatrixOfDouble from C (see api_double.h)
+    /// </summary>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public unsafe static extern api_Err createNamedComplexMatrixOfDouble([In]IntPtr pvApiCtx, [In] String _pstName,
+                                                        [In] int _iRows, [In] int _iCols,
+                                                        [In] double[] _pdblReal,
+                                                        [In] double[] _pdblImg);
+    //=============================================================================
+    /// <summary>
+    /// import readNamedMatrixOfString from C (see api_string.h)
+    /// </summary>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public unsafe static extern api_Err readNamedMatrixOfString([In]IntPtr pvApiCtx, [In] String _pstName,
+                                                      [Out]  Int32* _piRows, [Out]  Int32* _piCols,
+                                                      [In, Out] int[] _piLength,
+                                                      [In, Out] String[] _pstStrings);
+    //=============================================================================
+    /// <summary>
+    /// import readNamedMatrixOfWideString from C (see api_string.h)
+    /// </summary>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Unicode)]
+    public unsafe static extern api_Err readNamedMatrixOfWideString([In]IntPtr pvApiCtx, [In] String _pstName,
+                                                      [Out]  Int32* _piRows, [Out]  Int32* _piCols,
+                                                      [In, Out] int[] _piLength,
+                                                      [In, Out] String[] _pstStrings);
+    //=============================================================================
+    /// <summary>
+    /// import readNamedMatrixOfDouble from C (see api_double.h)
+    /// </summary>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public unsafe static extern api_Err readNamedMatrixOfDouble([In]IntPtr pvApiCtx, [In] String _pstName,
+                                                      [Out] Int32* _piRows, [Out] Int32* _piCols,
+                                                      [In, Out] Double[] _pdblReal);
+    //=============================================================================
+    /// <summary>
+    /// import readNamedMatrixOfBoolean from C (see api_boolean.h)
+    /// </summary>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public unsafe static extern api_Err readNamedMatrixOfBoolean([In]IntPtr pvApiCtx, [In] String _pstName,
+                                                      [Out] Int32* _piRows, [Out] Int32* _piCols,
+                                                      [In, Out] int[] _piBool);
+    //=============================================================================
+    /// <summary>
+    /// import readNamedMatrixOfInteger32 from C (see api_int.h)
+    /// </summary>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public unsafe static extern api_Err readNamedMatrixOfInteger32([In]IntPtr pvApiCtx, [In] String _pstName,
+                                                      [Out] Int32* _piRows, [Out] Int32* _piCols,
+                                                      [In, Out] int[] _piData);
+
+    //=============================================================================
+    /// <summary>
+    /// import readNamedComplexMatrixOfDouble from C (see api_double.h)
+    /// </summary>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public unsafe static extern api_Err readNamedComplexMatrixOfDouble([In]IntPtr pvApiCtx, [In] String _pstName,
+                                                    [Out] Int32* _piRows, [Out] Int32* _piCols,
+                                                    [In, Out] double[] _pdblReal,
+                                                    [In, Out] double[] _pdblImg);
+    //=============================================================================
+    /// <summary>
+    /// get Variable Adress in scilab stack from name
+    /// used for getNamedMatrixType (internal)
+    /// </summary>
+    /// <param name="_pstName">variable name</param>
+    /// <param name="_piAddress"> stack address</param>
+    /// <returns>1 if ok</returns>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public unsafe static extern api_Err getVarAddressFromName([In]IntPtr pvApiCtx, [In] String _pstName,
+                                                           [Out] Int32** _piAddress);
+    //=============================================================================
+    /// <summary>
+    /// get Variable type in scilab stack from name
+    /// </summary>
+    /// <param name="_pstName">variable name</param>
+    /// <returns>type or -1</returns>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public unsafe static extern api_Err getNamedVarType([In]IntPtr pvApiCtx, [In] String _pstName, [Out]Int32* _piType);
+    //=============================================================================
+    /// <summary>
+    /// get variable type with adress in scilab stack
+    /// used for getNamedMatrixType (internal)
+    /// </summary>
+    /// <param name="_piAddress"> stack address</param>
+    /// <returns>scilab type, 0 fails</returns>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public unsafe static extern api_Err getVarType([In]IntPtr pvApiCtx, [In] Int32* _piAddress, [Out]Int32* _piType);
+    //=============================================================================
+    /// <summary>
+    ///  Detect if a Scilab graphic window is opened
+    /// </summary>
+    /// <returns>0 (FALSE) or 1 (TRUE)</returns>
+    [DllImport(GRAPHICS_DLL, CharSet = CharSet.Ansi)]
+    public unsafe static extern int sciHasFigures();
+    //=============================================================================
+    /// <summary>
+    ///  get last error code
+    /// </summary>
+    /// <returns>last error code</returns>
+    [DllImport(OUTPUT_STREAM_DLL, CharSet = CharSet.Ansi)]
+    public unsafe static extern int GetLastErrorCode();
+    //=============================================================================
+    /// <summary>
+    ///  Get variable dimension
+    /// </summary>
+    /// import getNamedVarDimension from C (see api_common.h)
+    /// <returns>int last error code</returns>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public unsafe static extern api_Err getNamedVarDimension([In]IntPtr pvApiCtx, [In] String _pstName,
+                               [Out] Int32* _piRows, [Out] Int32* _piCols);
+    //=============================================================================
+    /// <summary>
+    ///  Get named complex information
+    /// </summary>
+    /// import isNamedVarComplex from C (see api_common.h)
+    /// <returns>int if complex 1 otherwise 0</returns>
+    [DllImport(API_SCILAB_DLL, CharSet = CharSet.Ansi)]
+    public unsafe static extern int isNamedVarComplex([In]IntPtr pvApiCtx, [In] String _pstName);
+    //=============================================================================
+
+  }
+}
+//=============================================================================
Index: /branches/HeuristicLab.ExternalEvaluation Scientific/HeuristicLab.Problems.ExternalEvaluation.Scilab/3.3/HeuristicLab.Problems.ExternalEvaluation.Scilab-3.3.csproj
===================================================================
--- /branches/HeuristicLab.ExternalEvaluation Scientific/HeuristicLab.Problems.ExternalEvaluation.Scilab/3.3/HeuristicLab.Problems.ExternalEvaluation.Scilab-3.3.csproj	(revision 10121)
+++ /branches/HeuristicLab.ExternalEvaluation Scientific/HeuristicLab.Problems.ExternalEvaluation.Scilab/3.3/HeuristicLab.Problems.ExternalEvaluation.Scilab-3.3.csproj	(revision 10122)
@@ -79,5 +79,5 @@
     <Reference Include="DotNet-Component-Scilab, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>.\DotNet-Component-Scilab.dll</HintPath>
+      <HintPath>..\..\bin\DotNet-Component-Scilab.dll</HintPath>
     </Reference>
     <Reference Include="HeuristicLab.Collections-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
@@ -153,7 +153,4 @@
   </ItemGroup>
   <ItemGroup>
-    <Content Include="DotNet-Component-Scilab.dll">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </Content>
     <Content Include="Scilab License.txt">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
Index: /branches/HeuristicLab.ExternalEvaluation Scientific/HeuristicLab.Problems.ExternalEvaluation.Scilab/3.3/Plugin.cs.frame
===================================================================
--- /branches/HeuristicLab.ExternalEvaluation Scientific/HeuristicLab.Problems.ExternalEvaluation.Scilab/3.3/Plugin.cs.frame	(revision 10121)
+++ /branches/HeuristicLab.ExternalEvaluation Scientific/HeuristicLab.Problems.ExternalEvaluation.Scilab/3.3/Plugin.cs.frame	(revision 10122)
@@ -30,5 +30,5 @@
   [Plugin("HeuristicLab.Problems.ExternalEvaluation.Scilab", "3.3.8.$WCREV$")]
   [PluginFile("HeuristicLab.Problems.ExternalEvaluation.Scilab-3.3.dll", PluginFileType.Assembly)]
-  [PluginFile("DotNet-Component-SciLab.dll",PluginFileType.Assembly)]
+  [PluginFile("DotNet-Component-Scilab.dll",PluginFileType.Assembly)]
   [PluginFile("Scilab License.txt", PluginFileType.License)]
   [PluginDependency("HeuristicLab.Collections", "3.3")]
@@ -46,9 +46,6 @@
     private const string scilab_PATH = @"SCIPATH";
 
-    private static bool loadedOnce = false;
-
     public override void OnLoad() {
       base.OnLoad();
-      if (loadedOnce) return;
 
       var currentPath = Environment.GetEnvironmentVariable("path");
