Belle II Software  release-05-02-19
WrapArray2D.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2015-2018 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Guglielmo De Nardo *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 
14 namespace Belle2 {
19  namespace ECL {
20  template <typename T>
25  class WrapArray2D {
26  public:
28  WrapArray2D(int rows, int cols) :
29  m_data(new T[rows * cols]), m_ncols(cols)
30  {}
31 
33  WrapArray2D(const WrapArray2D&) = delete;
34 
36  WrapArray2D& operator=(const WrapArray2D&) = delete;
37 
39  ~WrapArray2D()
40  { delete [] m_data; }
41 
43  T* operator[](int irow)
44  {
45  return m_data + irow * m_ncols;
46  }
47 
49  operator T* () { return m_data; }
50  private:
51 
52  T* m_data;
53  int m_ncols;
54  };
55  }
57 }
Belle2::ECL::WrapArray2D::WrapArray2D
WrapArray2D(int rows, int cols)
replace POD 2D array
Definition: WrapArray2D.h:36
Belle2::ECL::WrapArray2D
class to replace POD 2D array to save stack usage since it just allocates memory dynamically.
Definition: WrapArray2D.h:33
Belle2::ECL::WrapArray2D::m_data
T * m_data
content of the 2d array
Definition: WrapArray2D.h:60
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::ECL::WrapArray2D::m_ncols
int m_ncols
number of columns
Definition: WrapArray2D.h:61
Belle2::ECL::WrapArray2D::operator[]
T * operator[](int irow)
return row
Definition: WrapArray2D.h:51
Belle2::ECL::WrapArray2D::operator=
WrapArray2D & operator=(const WrapArray2D &)=delete
no assignment
Belle2::ECL::WrapArray2D::~WrapArray2D
~WrapArray2D()
destructor
Definition: WrapArray2D.h:47