dRonin  adbada4
dRonin GCS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Groups Pages
DynArray.hpp
Go to the documentation of this file.
1 /*****************************************************************************
2 
3  DynArray.hpp
4  By Laurent de Soras
5 
6 --- Legal stuff ---
7 
8 This program is free software. It comes without any warranty, to
9 the extent permitted by applicable law. You can redistribute it
10 and/or modify it under the terms of the Do What The Fuck You Want
11 To Public License, Version 2, as published by Sam Hocevar. See
12 http://sam.zoy.org/wtfpl/COPYING for more details.
13 
14 *Tab=3***********************************************************************/
15 
16 
17 
18 #if defined (ffft_DynArray_CURRENT_CODEHEADER)
19  #error Recursive inclusion of DynArray code header.
20 #endif
21 #define ffft_DynArray_CURRENT_CODEHEADER
22 
23 #if ! defined (ffft_DynArray_CODEHEADER_INCLUDED)
24 #define ffft_DynArray_CODEHEADER_INCLUDED
25 
26 
27 
28 /*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
29 
30 #include <cassert>
31 
32 
33 
34 namespace ffft
35 {
36 
37 
38 
39 /*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
40 
41 
42 
43 template <class T>
45 : _data_ptr (0)
46 , _len (0)
47 {
48  // Nothing
49 }
50 
51 
52 
53 template <class T>
55 : _data_ptr (0)
56 , _len (0)
57 {
58  assert (size >= 0);
59  if (size > 0)
60  {
61  _data_ptr = new DataType [size];
62  _len = size;
63  }
64 }
65 
66 
67 
68 template <class T>
69 DynArray <T>::~DynArray ()
70 {
71  delete [] _data_ptr;
72  _data_ptr = 0;
73  _len = 0;
74 }
75 
76 
77 
78 template <class T>
79 long DynArray <T>::size () const
80 {
81  return (_len);
82 }
83 
84 
85 
86 template <class T>
87 void DynArray <T>::resize (long size)
88 {
89  assert (size >= 0);
90  if (size > 0)
91  {
92  DataType * old_data_ptr = _data_ptr;
93  DataType * tmp_data_ptr = new DataType [size];
94 
95  _data_ptr = tmp_data_ptr;
96  _len = size;
97 
98  delete [] old_data_ptr;
99  }
100 }
101 
102 
103 
104 template <class T>
105 const typename DynArray <T>::DataType & DynArray <T>::operator [] (long pos) const
106 {
107  assert (pos >= 0);
108  assert (pos < _len);
109 
110  return (_data_ptr [pos]);
111 }
112 
113 
114 
115 template <class T>
117 {
118  assert (pos >= 0);
119  assert (pos < _len);
120 
121  return (_data_ptr [pos]);
122 }
123 
124 
125 
126 /*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
127 
128 
129 
130 /*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/
131 
132 
133 
134 } // namespace ffft
135 
136 
137 
138 #endif // ffft_DynArray_CODEHEADER_INCLUDED
139 
140 #undef ffft_DynArray_CURRENT_CODEHEADER
141 
142 
143 
144 /*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/