00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
#ifndef OMF_CONSTITERATOR_HPP
00026
#define OMF_CONSTITERATOR_HPP
00027
00028
00029
#include <list>
00030
#include <set>
00031
#include <map>
00032
00033
namespace OMF
00034 {
00035
00036
class Object;
00037
class List;
00038
class Set;
00039
00048
class ConstIterator
00049 {
00050
friend class List;
00051
friend class Set;
00052
00053
typedef std::list<Object *>::const_iterator ListConstIterator;
00054
typedef std::set<Object *>::const_iterator SetConstIterator;
00055
typedef std::map<unsigned, Object *>::const_iterator MapConstIterator;
00056
00061
enum Mode {
00062 None,
00063 List,
00064 Set,
00065 Map
00066 };
00067
00068
public:
00069
ConstIterator();
00070
ConstIterator(
const ConstIterator &i);
00071
ConstIterator(
const ListConstIterator &i);
00072
ConstIterator(
const SetConstIterator &i);
00073
ConstIterator(
const MapConstIterator &i);
00074
00075
const ConstIterator &
operator =(
const ConstIterator &i);
00076
const ConstIterator &
operator =(
const ListConstIterator &i);
00077
const ConstIterator &
operator =(
const SetConstIterator &i);
00078
const ConstIterator &
operator =(
const MapConstIterator &i);
00079
00080 Object *
operator *();
00081 Object *
operator ->();
00082
00083
ConstIterator &
operator ++();
00084
ConstIterator operator ++(
int);
00085
ConstIterator &
operator --();
00086
ConstIterator operator --(
int);
00087
00088
bool operator ==(
const ConstIterator &i);
00089
bool operator !=(
const ConstIterator &i);
00090
00091
private:
00092 Mode _mode;
00093 ListConstIterator _iList;
00094 SetConstIterator _iSet;
00095 MapConstIterator _iMap;
00096 };
00097 }
00098
00099
#endif