/***************************************************************************** DynArray.hpp By Laurent de Soras --- Legal stuff --- This program is free software. It comes without any warranty, to the extent permitted by applicable law. You can redistribute it and/or modify it under the terms of the Do What The Fuck You Want To Public License, Version 2, as published by Sam Hocevar. See http://sam.zoy.org/wtfpl/COPYING for more details. *Tab=3***********************************************************************/ #if defined(ffft_DynArray_CURRENT_CODEHEADER) # error Recursive inclusion of DynArray code header. #endif #define ffft_DynArray_CURRENT_CODEHEADER #if !defined(ffft_DynArray_CODEHEADER_INCLUDED) # define ffft_DynArray_CODEHEADER_INCLUDED /*\\\ INCLUDE FILES \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/ # include namespace ffft { /*\\\ PUBLIC \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/ template DynArray::DynArray() : _data_ptr(0) , _len(0) { // Nothing } template DynArray::DynArray(long size) : _data_ptr(0) , _len(0) { assert(size >= 0); if (size > 0) { _data_ptr = new DataType[size]; _len = size; } } template DynArray::~DynArray() { delete[] _data_ptr; _data_ptr = 0; _len = 0; } template long DynArray::size() const { return (_len); } template void DynArray::resize(long size) { assert(size >= 0); if (size > 0) { DataType *old_data_ptr = _data_ptr; DataType *tmp_data_ptr = new DataType[size]; _data_ptr = tmp_data_ptr; _len = size; delete[] old_data_ptr; } } template const typename DynArray::DataType &DynArray::operator[](long pos) const { assert(pos >= 0); assert(pos < _len); return (_data_ptr[pos]); } template typename DynArray::DataType &DynArray::operator[](long pos) { assert(pos >= 0); assert(pos < _len); return (_data_ptr[pos]); } /*\\\ PROTECTED \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/ /*\\\ PRIVATE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/ } // namespace ffft #endif // ffft_DynArray_CODEHEADER_INCLUDED #undef ffft_DynArray_CURRENT_CODEHEADER /*\\\ EOF \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/