E:/Eigene Dateien/Eigene Projekte/c0re/CyclicList.h

Go to the documentation of this file.
00001 /*
00002         This file is part of c0re.
00003 
00004         c0re is a multiplayer RTS on a hexagonal map with an evolving unit concept.
00005     Copyright (C) 2007 Stephan Hofmann
00006 
00007     c0re is free software: you can redistribute it and/or modify
00008     it under the terms of the GNU General Public License as published by
00009     the Free Software Foundation, either version 3 of the License, or
00010     (at your option) any later version.
00011 
00012     This program is distributed in the hope that it will be useful,
00013     but WITHOUT ANY WARRANTY; without even the implied warranty of
00014     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015     GNU General Public License for more details.
00016 
00017     You should have received a copy of the GNU General Public License
00018     along with this program.  If not, see <http://www.gnu.org/licenses/>.
00019 */
00020 
00021 #ifndef _CYCLICLIST_H_
00022 #define _CYCLICLIST_H_
00023 
00024 #include <vector>
00025 
00029 template <class T>
00030 class CyclicList
00031 {
00032 public:
00036         CyclicList(int p_size)
00037         {
00038                 myOffset = 0;
00039                 std::vector<T> _vec(p_size);
00040                 myVec.assign(_vec.begin(), _vec.end());
00041         }
00042 
00046         virtual ~CyclicList()
00047         {
00048         }
00049 
00055         int moveOn()
00056         {
00057                 myOffset++;
00058                 myOffset %= myVec.size();
00059                 return 0;               
00060         }
00061 
00065         T& operator[](int p_pos)
00066         {
00067                 return myVec[(p_pos + myOffset) % myVec.size()];
00068         }
00069 
00073         std::vector<T> myVec;
00074 
00078         int myOffset;
00079 
00080 };
00081 
00082 
00083 #endif

Generated on Tue Jul 17 22:02:22 2007 for C0re by  doxygen 1.5.2