BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

DynArray.hpp (2550B)


      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>
     44 DynArray <T>::DynArray ()
     45 :	_data_ptr (0)
     46 ,	_len (0)
     47 {
     48 	// Nothing
     49 }
     50 
     51 
     52 
     53 template <class T>
     54 DynArray <T>::DynArray (long size)
     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>
    116 typename DynArray <T>::DataType &	DynArray <T>::operator [] (long pos)
    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 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/