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: vtkRInterface.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 vtkRInterface
//
// .SECTION Description
//
// This class defines a VTK interface to an embedded GNU R intepreter instance. An
// instance of the R interpreter is created when this class is instantiated. Additional
// instances of this class will share access the same R interpreter. The R interpreter will
// be shutdown when the application using this class exits.
//
// .SECTION See Also
// vtkRadapter vtkRcalculatorFilter
//
// .SECTION Thanks
// Developed by Thomas Otahal at Sandia National Laboratories.
//
#ifndef __vtkRInterface_h
#define __vtkRInterface_h
#include "vtkObject.h"
class vtkDataArray;
class vtkArray;
class vtkTable;
class vtkImplementationRSingleton;
class vtkRAdapter;
class VTK_GRAPHICS_EXPORT vtkRInterface : public vtkObject
{
public:
static vtkRInterface* New();
vtkTypeMacro(vtkRInterface,vtkObject);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Evaluate an R command on the embedded R interpreter that takes one integer argument.
int EvalRcommand(const char *commandName, int param);
// Description:
// Evaluate an R script given in string on the embedded R interpreter. Set showRoutput
// to turn on and off output from R.
int EvalRscript(const char *string, bool showRoutput = true);
// Description:
// Provide a character buffer in p of length n. All output from the R interpreter instance
// will be written to p by default.
int OutputBuffer(char* p, int n);
// Description:
// Copies vtkDataArray da into the R interpreter instance as a variable named RVariableName.
// If RVariableName already exists, it will be overwritten.
void AssignVTKDataArrayToRVariable(vtkDataArray* da, const char* RVariableName);
// Description:
// Copies vtkArray da into the R interpreter instance as a variable named RVariableName.
// If RVariableName already exists, it will be overwritten.
void AssignVTKArrayToRVariable(vtkArray* da, const char* RVariableName);
// Description:
// Copies the R variable RVariableName to the returned vtkDataArray. If the operation fails,
// the method will return NULL.
vtkDataArray* AssignRVariableToVTKDataArray(const char* RVariableName);
// Description:
// Copies the R variable RVariableName to the returned vtkArray. If the operation fails,
// the method will return NULL. The returned vtkArray is currently always a vtkDenseArray
// of type double.
vtkArray* AssignRVariableToVTKArray(const char* RVariableName);
// Description:
// Copies the R matrix or R list in RVariableName to the returned vtkTable. If the operation fails,
// the method will return NULL. If RVariableName is an R list, each list entry must be a vector of
// the same length.
vtkTable* AssignRVariableToVTKTable(const char* RVariableName);
// Description:
// Copies the vtkTable given in table to an R list structure name RVariableName. The R list
// will be length of the number of columns in table. Each member of the list will contain a
// column of table.
void AssignVTKTableToRVariable(vtkTable* table, const char* RVariableName);
protected:
vtkRInterface();
~vtkRInterface();
private:
int FillOutputBuffer();
vtkRInterface(const vtkRInterface&); // Not implemented
void operator=(const vtkRInterface&); // Not implemented
vtkImplementationRSingleton* rs;
char* buffer;
int buffer_size;
vtkRAdapter* vra;
};
#endif
|