1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
/*=========================================================================
Program: Visualization Toolkit
Module: vtkMatlabEngineInterface.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/*-------------------------------------------------------------------------
Copyright 2009 Sandia Corporation.
Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
the U.S. Government retains certain rights in this software.
-------------------------------------------------------------------------*/
// .NAME vtkMatlabEngineInterface
//
// .SECTION Description
//
// This class defines a VTK inteface to the MathWorks Matlab Engine.
//
// When an instance of this class is created, a Matlab engine process is created
// as a singleton instance. Multiple instances of this interface can be created
// to access the Matlab engine singleton. The Matlab engine process is closed when
// all interface instances using it have been deleted.
//
// The current implementation performs deep copies of all VTK data arrays passed
// to and from the Matlab Engine.
//
// .SECTION See Also
// vtkMatlabMexAdapter vtkMatlabEngineFilter
//
// .SECTION Thanks
// Developed by Thomas Otahal at Sandia National Laboratories.
//
#ifndef vtkMatlabEngineInterface_h
#define vtkMatlabEngineInterface_h
#include "vtkFiltersMatlabModule.h"
#include "vtkObject.h"
class vtkArray;
class vtkDataArray;
class vtkMatlabEngineSingleton;
class vtkMatlabMexAdapter;
class VTKFILTERSMATLAB_EXPORT vtkMatlabEngineInterface : public vtkObject
{
public:
static vtkMatlabEngineInterface *New();
vtkTypeMacro(vtkMatlabEngineInterface, vtkObject );
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Non zero if Matlab engine connection is open.
int EngineOpen();
// Description:
// Input char string is a Matlab command or a series of Matlab commands
// read from an input file.
// Returns 0 if command failed to execute.
int EvalString(const char* string);
// Description:
// Send input vtkDataArray vda to the Matlab Engine as Matlab variable named name
// Returns 0 if variable was not created.
int PutVtkDataArray(const char* name, vtkDataArray* vda);
// Description:
// Get Matlab variable name from Matlab Engine and return as vtkDataArray (memory allocated)
// Returns 0 if variable could not be copied.
vtkDataArray* GetVtkDataArray(const char* name);
// Description:
// Send input vtkArray vda to the Matlab Engine as Matlab variable named name
// Returns 0 if variable was not created.
int PutVtkArray(const char* name, vtkArray* vda);
// Description:
// Get Matlab variable name from Matlab Engine and return as vtkArray (memory allocated)
// Returns 0 if variable could not be copied.
vtkArray* GetVtkArray(const char* name);
// Description:
// Use char buffer p of length n to store console output from the Matlab Engine.
// buffer is filled after each call to EvalString().
int OutputBuffer(char* p, int n);
// Description:
// Turns the Matlab Engine process visible, so users can interact directly with Matlab.
int SetVisibleOn();
// Description:
// Turns visibility off.
int SetVisibleOff();
protected:
vtkMatlabEngineInterface();
~vtkMatlabEngineInterface();
private:
vtkMatlabEngineInterface(const vtkMatlabEngineInterface&); // Not implemented.
void operator=(const vtkMatlabEngineInterface&); // Not implemented.
vtkMatlabEngineSingleton* meng;
vtkMatlabMexAdapter* vmma;
};
#endif
|