/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2006 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ //$Id: coord_array.hpp 39 2005-04-10 20:39:53Z pavlenko $ #ifndef COORD_ARRAY_HPP #define COORD_ARRAY_HPP #include "coord.hpp" #include namespace mapnik { template class coord_array { typedef T coord_type; coord_type* pt_; const unsigned size_; public: coord_array(unsigned size=0) : pt_(static_cast(size==0?0: ::operator new (sizeof(coord_type)*size))), size_(size) {} coord_array(const coord_array& rhs) : pt_(static_cast(rhs.size_==0?0: ::operator new (sizeof(coord_type)*rhs.size_))), size_(rhs.size_) { memcpy(pt_,rhs.pt_,sizeof(coord_type)*rhs.size_); } ~coord_array() { ::operator delete (pt_); } unsigned size() const { return size_; } void set(unsigned index,double x,double y) { assert(index