My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
MexParser.h
1 #ifndef GCP_UTIL_MEXPARSER_H
2 #define GCP_UTIL_MEXPARSER_H
3 
11 #include <mex.h>
12 #include <matrix.h>
13 
14 #include <string>
15 
16 namespace gcp {
17  namespace matlab {
18 
19  class MexParser {
20  public:
21 
25  MexParser();
26  MexParser(const mxArray*);
27 
28  void setTo(const mxArray*);
29  void setTo(const mxArray**);
30 
34  virtual ~MexParser();
35 
36  bool isDouble();
37  static bool isDouble(mxArray* arr);
38  static bool isDouble(const mxArray* arr);
39 
40  bool isLogical();
41  static bool isLogical(mxArray* arr);
42  static bool isLogical(const mxArray* arr);
43 
44  bool isUchar();
45  static bool isUchar(mxArray* arr);
46  static bool isUchar(const mxArray* arr);
47 
48  bool isUint();
49  static bool isUint(mxArray* arr);
50  static bool isUint(const mxArray* arr);
51 
52  bool isString();
53  static bool isString(mxArray* arr);
54  static bool isString(const mxArray* arr);
55 
56  bool isComplex();
57  static bool isComplex(mxArray* arr);
58  static bool isComplex(const mxArray* arr);
59 
60  // Return the number of dimensions in an mxArray
61 
62  static int getNumberOfDimensions(mxArray* arr);
63  static int getNumberOfDimensions(const mxArray* arr);
64  int getNumberOfDimensions();
65 
66  // Return the vector of dimensions of an mxArray
67 
68  static const int* getDimensions(mxArray* arr);
69  static const int* getDimensions(const mxArray* arr);
70  const int* getDimensions();
71 
72  static int getDimension(mxArray* arr, unsigned iDim);
73  static int getDimension(const mxArray* arr, unsigned iDim);
74  int getDimension(unsigned iDim);
75 
76  static unsigned int getNumberOfElements(mxArray* arr);
77  static unsigned int getNumberOfElements(const mxArray* arr);
78  unsigned int getNumberOfElements();
79 
80  int getMaxDimension();
81 
82  // Struct handling
83 
84  static bool isStruct(mxArray* arr);
85  static bool isStruct(const mxArray* arr);
86  bool isStruct();
87 
88  static unsigned int getNumberOfFields(mxArray* arr);
89  static unsigned int getNumberOfFields(const mxArray* arr);
90  unsigned int getNumberOfFields();
91 
92  unsigned getNumberOfElements(mxArray* arr, std::string fieldName);
93  unsigned getNumberOfElements(const mxArray* arr, std::string fieldName);
94  unsigned getNumberOfElements(std::string fieldName);
95 
96  static const mxArray* getField(const mxArray* arr, std::string fieldName);
97  const mxArray* getField(std::string fieldName);
98 
99  static bool fieldExists(const mxArray* arr, std::string fieldName);
100  bool fieldExists(std::string fieldName);
101 
102  static double* getFieldAsDouble(mxArray* arr, std::string fieldName);
103  static double* getFieldAsDouble(const mxArray* arr, std::string fieldName);
104  double* getFieldAsDouble(std::string fieldName);
105 
106  static double* getImagFieldAsDouble(mxArray* arr, std::string fieldName);
107  static double* getImagFieldAsDouble(const mxArray* arr, std::string fieldName);
108  double* getImagFieldAsDouble(std::string fieldName);
109 
110  static unsigned* getFieldAsUint(mxArray* arr, std::string fieldName);
111  static unsigned* getFieldAsUint(const mxArray* arr, std::string fieldName);
112  unsigned* getFieldAsUint(std::string fieldName);
113 
114  static unsigned char* getFieldAsUchar(mxArray* arr, std::string fieldName);
115  static unsigned char* getFieldAsUchar(const mxArray* arr, std::string fieldName);
116  unsigned char* getFieldAsUchar(std::string fieldName);
117 
118  static bool* getFieldAsLogical(mxArray* arr, std::string fieldName);
119  static bool* getFieldAsLogical(const mxArray* arr, std::string fieldName);
120  bool* getFieldAsLogical(std::string fieldName);
121 
122  static std::string getFieldAsString(mxArray* arr, std::string fieldName);
123  static std::string getFieldAsString(const mxArray* arr, std::string fieldName);
124  std::string getFieldAsString(std::string fieldName);
125 
126  void printDimensions();
127 
128  // Return pointers to appropriate data types
129 
130  static double* getDoubleData(mxArray* arr);
131  static double* getDoubleData(const mxArray* arr);
132  double* getDoubleData();
133  double getDoubleVal(unsigned i1, unsigned i2);
134  double getDoubleVal(unsigned i1, unsigned i2, unsigned i3);
135 
136  static float* getFloatData(mxArray* arr);
137  static float* getFloatData(const mxArray* arr);
138  float* getFloatData();
139 
140  static bool* getLogicalData(mxArray* arr);
141  static bool* getLogicalData(const mxArray* arr);
142  bool* getLogicalData();
143 
144  static unsigned char* getUcharData(mxArray* arr);
145  static unsigned char* getUcharData(const mxArray* arr);
146  unsigned char* getUcharData();
147 
148  static unsigned* getUintData(mxArray* arr);
149  static unsigned* getUintData(const mxArray* arr);
150  unsigned* getUintData();
151  unsigned int getUintVal(unsigned i1, unsigned i2);
152  unsigned int getUintVal(unsigned i1, unsigned i2, unsigned i3);
153 
154  static double* getImagDoubleData(mxArray* arr);
155  static double* getImagDoubleData(const mxArray* arr);
156  double* getImagDoubleData();
157 
158  // Return the string corresponding to this mxArray
159 
160  static std::string getString(mxArray* arr);
161  static std::string getString(const mxArray* arr);
162  std::string getString();
163 
164  // Return true if the dimensions of two mxArrays match
165 
166  static bool dimensionsMatch(mxArray* arr1, mxArray* arr2);
167  static bool dimensionsMatch(const mxArray* arr1, const mxArray* arr2);
168 
169  bool operator==(MexParser& mp);
170  bool operator!=(MexParser& mp);
171 
172  private:
173 
174  const mxArray* array_;
175 
176  }; // End class MexParser
177 
178  } // End namespace matlab
179 } // End namespace gcp
180 
181 #endif // End #ifndef GCP_UTIL_MEXPARSER_H
bool isLogical()
Definition: MexParser.cc:525
static int getNumberOfDimensions(mxArray *arr)
Definition: MexParser.cc:55
double * getDoubleData()
Definition: MexParser.cc:502
bool isComplex()
Definition: MexParser.cc:437
bool isUchar()
Definition: MexParser.cc:543
bool isDouble()
Definition: MexParser.cc:455
unsigned int getNumberOfFields()
Definition: MexParser.cc:200
bool isUint()
Definition: MexParser.cc:561
float * getFloatData()
Definition: MexParser.cc:653
unsigned int getNumberOfElements()
Definition: MexParser.cc:147
Definition: MexParser.h:19
unsigned * getUintData()
Definition: MexParser.cc:625
double * getImagDoubleData()
Definition: MexParser.cc:473
std::string getString()
Definition: MexParser.cc:676
MexParser()
Definition: MexParser.cc:29
virtual ~MexParser()
Definition: MexParser.cc:49
static bool dimensionsMatch(mxArray *arr1, mxArray *arr2)
Definition: MexParser.cc:117
static const int * getDimensions(mxArray *arr)
Definition: MexParser.cc:75
unsigned char * getUcharData()
Definition: MexParser.cc:579
bool isString()
Definition: MexParser.cc:419
bool * getLogicalData()
Definition: MexParser.cc:602
void printDimensions()
Definition: MexParser.cc:402