STK++ 1.0
STK_IContainer1D.cpp
Go to the documentation of this file.
00001 /*--------------------------------------------------------------------*/
00002 /*     Copyright (C) 2004-2007  Serge Iovleff
00003 
00004     This program is free software; you can redistribute it and/or modify
00005     it under the terms of the GNU Lesser General Public License as
00006     published by the Free Software Foundation; either version 2 of the
00007     License, or (at your option) any later version.
00008 
00009     This program is distributed in the hope that it will be useful,
00010     but WITHOUT ANY WARRANTY; without even the implied warranty of
00011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012     GNU Lesser General Public License for more details.
00013 
00014     You should have received a copy of the GNU Lesser General Public
00015     License along with this program; if not, write to the
00016     Free Software Foundation, Inc.,
00017     59 Temple Place,
00018     Suite 330,
00019     Boston, MA 02111-1307
00020     USA
00021 
00022     Contact : Serge.Iovleff@stkpp.org
00023 */
00024 
00025 /*
00026  * Project:  stkpp::Sdk::TContainer
00027  * Purpose:  Define the Interface 1D Container class.
00028  * Author:   Serge Iovleff, serge.iovleff@stkpp.org
00029  *
00030  **/
00031 
00036 #include "../include/STK_IContainer1D.h"
00037 
00038 namespace STK
00039 {
00040 
00041 /* Default constructor */
00042 IContainer1D::IContainer1D() { }
00043 
00044 /* Virtual destructor. */
00045 IContainer1D::~IContainer1D() { }
00046 
00047 /* STL compatibility. Resize the container.
00048  * - call @c shift
00049  * - call @c pushBack if there will be more elements
00050  * - call @c popBack if three will be less elements
00051  * @param I the range to set to the container
00052  **/
00053 void IContainer1D::resize(Range const& I)
00054 {
00055   // check if there is something to do
00056   if ( range() == I) return;
00057   // translate beg
00058   shift(I.first());
00059   // compute number of elements to delete or add
00060   const Integer inc = I.last() - last();
00061   // adjust size of the container
00062   if (inc > 0) pushBack(inc);  // more elements
00063   else         popBack(-inc);  // less elements
00064 }
00065 
00066 } // namespace STK