File: vtkRAdapter.h

package info (click to toggle)
vtk7 7.1.1%2Bdfsg1-12
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 125,776 kB
  • sloc: cpp: 1,539,582; ansic: 106,521; python: 78,038; tcl: 47,013; xml: 8,142; yacc: 5,040; java: 4,439; perl: 3,132; lex: 1,926; sh: 1,500; makefile: 122; objc: 83
file content (140 lines) | stat: -rw-r--r-- 4,524 bytes parent folder | download | duplicates (3)
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140

/*=========================================================================

  Program:   Visualization Toolkit
  Module:    vtkRAdapter.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.
-------------------------------------------------------------------------*/

/**
 * @class   vtkRAdapter
 * @brief   This is a utility class to convert VTK array data and
 *  VTK tables to and from Gnu R S expression (SEXP) data structures.  It is used
 *  with the R .Call interface and the embedded R interpreter.
 *
 *
 *
 *  This class creates deep copies of input data.  Created R SEXP variables created
 *  by these functions can be freed by the R garbage collector by calling UNPROTECT(1).
 *  The conversions are performed for double and integer data types.
 *
 *  VTK data structures created by this class from R types are stored in array collections
 *  and freed when the class destructor is called.  Use the Register() method on a returned
 *  object to increase its reference count by one, in order keep the object around after this
 *  classes destructor has been called.  The code calling Register() must eventually call Delete()
 *  on the object to free memory.
 *
 * @sa
 *  vtkRinterface vtkRcalculatorFilter
 *
 * @par Thanks:
 *  Developed by Thomas Otahal at Sandia National Laboratories.
 *
*/

#ifndef vtkRAdapter_h
#define vtkRAdapter_h

#include "vtkFiltersStatisticsGnuRModule.h" // For export macro
#include "vtkObject.h"

#ifndef VTK_BUILDING_FILTERS_STATISTICSGNUR
#define R_NO_REMAP /* Don't pollute the namespace (some of which conflict). DO NOT REMOVE. */
#endif

#include "Rinternals.h" // Needed for Rinternals.h SEXP data structure

class vtkInformation;
class vtkInformationVector;
class vtkDataArray;
class vtkArray;
class vtkTable;
class vtkTree;
class vtkDataArrayCollection;
class vtkArrayData;
class vtkDataObjectCollection;

class VTKFILTERSSTATISTICSGNUR_EXPORT vtkRAdapter : public vtkObject
{

public:

  vtkTypeMacro(vtkRAdapter, vtkObject);

  void PrintSelf(ostream& os, vtkIndent indent);

  static vtkRAdapter *New();

  /**
   * Create a vtkDataArray copy of GNU R input matrix vaiable (deep copy, allocates memory)
   * Input is a R matrix or vector of doubles or integers
   */
  vtkDataArray* RToVTKDataArray(SEXP variable);

  /**
   * Create a vtkArray copy of the GNU R input variable multi-dimensional array (deep copy, allocates memory)
   * Input is a R multi-dimensional array of doubles or integers
   */
  vtkArray* RToVTKArray(SEXP variable);

  /**
   * Create a GNU R matrix copy of the input vtkDataArray da (deep copy, allocates memory)
   */
  SEXP VTKDataArrayToR(vtkDataArray* da);

  /**
   * Create a GNU R multi-dimensional array copy of the input vtkArray da (deep copy, allocates memory)
   */
  SEXP VTKArrayToR(vtkArray* da);

  /**
   * Create a GNU R matrix copy of the input vtkTable table (deep copy, allocates memory)
   */
  SEXP VTKTableToR(vtkTable* table);

  /**
   * Create a vtkTable copy of the GNU R input matrix variable (deep copy, allocates memory)
   * Input is R list of equal length vectors or a matrix.
   */
  vtkTable* RToVTKTable(SEXP variable);

  /**
   * Create a GNU R phylo tree copy of the input vtkTree tree (deep copy, allocates memory)
   */
  SEXP VTKTreeToR(vtkTree* tree);

  /**
   * Create a vtkTree copy of the GNU R input phylo tree variable (deep copy, allocates memory)
   */
  vtkTree* RToVTKTree(SEXP variable);

protected:
  vtkRAdapter();
  ~vtkRAdapter();

private:

  vtkRAdapter(const vtkRAdapter&) VTK_DELETE_FUNCTION;
  void operator=(const vtkRAdapter&) VTK_DELETE_FUNCTION;

  vtkDataArrayCollection* vdac;  // Collection of vtkDataArrays that have been converted from R.
  vtkArrayData* vad;  // Collection of vtkArrays that have been converted from R.
  vtkDataObjectCollection* vdoc; // Collection of vtkTables that have been converted from R.

};


#endif