summaryrefslogtreecommitdiff
path: root/tools/swig/test/ArrayZ.h
blob: 75abae0b2083d10c20f9f6ce0bb1bdc61afeed38 (plain)
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
#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