![[]](/images/special/trans.gif)
LibN2L-4 Library Code ReferenceClassesCompounds Files Members Method Index Full Reference cRStdContainerImp.cppGo to the documentation of this file.00001 /************************************************************************ 00002 Nova-2 Library (libN2L, or simply n2l) Game development C++ Library 00003 Copyright (C) 2003 Aaron Cameron 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Lesser General Public 00007 License as published by the Free Software Foundation; either 00008 version 2.1 of the License, or (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Lesser General Public License for more details. 00014 00015 You should have received a copy of the GNU Lesser General Public 00016 License along with this library; if not, write to the Free Software 00017 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00018 00019 A copy of the GNU Lesser General Public License has been provided with 00020 this library in the file 'COPYING'. 00021 00022 Contact information for the author of this library has been provided 00023 with this library in the file 'AUTHOR'. 00024 ************************************************************************/ 00025 00026 #include "cRStdContainerImp.h" 00027 #include "cRenderableInterface.h" 00028 00029 using namespace std; 00030 00031 namespace n2l 00032 { 00033 00034 cRStdContainerImp::tHandle cRStdContainerImp::smNextHandle = 1; 00035 00036 /* ************************************************************ */ 00037 cRStdContainerImp::cRStdContainerImp() 00038 { 00039 } 00040 00041 00042 /* ************************************************************ */ 00043 cRStdContainerImp::~cRStdContainerImp() 00044 { 00045 } 00046 00047 00048 /* ************************************************************ */ 00049 const cRStdContainerImp::tHandle cRStdContainerImp::push( const cAutoPtr<tChild> & i_ioChild ) 00050 { 00051 tChildMap::value_type newChild( smNextHandle, i_ioChild ); 00052 mChildren.insert( newChild ); 00053 return smNextHandle++; 00054 } 00055 00056 00057 /* ************************************************************ */ 00058 const cAutoPtr<cRStdContainerImp::tChild> cRStdContainerImp::pop( const tHandle iChildHandle ) 00059 { 00060 tChildMap::iterator childNode = mChildren.find(iChildHandle); 00061 if (mChildren.end()==childNode) 00062 throw cOutOfBoundsException( "cRStdContainerImp::popChild", 00063 "No such handle found" ); 00064 cAutoPtr<tChild> temp = childNode->second; 00065 mChildren.erase(childNode); 00066 return temp; 00067 } 00068 00069 00070 /* ************************************************************ */ 00071 const cRStdContainerImp::tSize cRStdContainerImp::size() const 00072 { 00073 return mChildren.size(); 00074 } 00075 00076 00077 /* ************************************************************ */ 00078 void cRStdContainerImp::render() const 00079 { 00080 tChildMap::const_iterator childIt = mChildren.begin(); 00081 const tChildMap::const_iterator LastChildIt = mChildren.end(); 00082 for (; LastChildIt!=childIt; ++childIt) 00083 childIt->second->render(); 00084 } 00085 00086 00087 } // namespace |