summaryrefslogtreecommitdiff
path: root/tools/swig/test/ArrayZ.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/swig/test/ArrayZ.h')
-rw-r--r--tools/swig/test/ArrayZ.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/tools/swig/test/ArrayZ.h b/tools/swig/test/ArrayZ.h
new file mode 100644
index 000000000..75abae0b2
--- /dev/null
+++ b/tools/swig/test/ArrayZ.h
@@ -0,0 +1,56 @@
+#ifndef ARRAYZ_H
+#define ARRAYZ_H
+
+#include <stdexcept>
+#include <string>
+#include <complex>
+
+class ArrayZ
+{
+public:
+
+ // Default/length/array constructor
+ ArrayZ(int length = 0, std::complex<double>* data = 0);
+
+ // Copy constructor
+ ArrayZ(const ArrayZ & source);
+
+ // Destructor
+ ~ArrayZ();
+
+ // Assignment operator
+ ArrayZ & operator=(const ArrayZ & source);
+
+ // Equals operator
+ bool operator==(const ArrayZ & other) const;
+
+ // Length accessor
+ int length() const;
+
+ // Resize array
+ void resize(int length, std::complex<double>* data = 0);
+
+ // Set item accessor
+ std::complex<double> & operator[](int i);
+
+ // Get item accessor
+ const std::complex<double> & operator[](int i) const;
+
+ // String output
+ std::string asString() const;
+
+ // Get view
+ void view(std::complex<double>** data, int* length) const;
+
+private:
+ // Members
+ bool _ownData;
+ int _length;
+ std::complex<double> * _buffer;
+
+ // Methods
+ void allocateMemory();
+ void deallocateMemory();
+};
+
+#endif