ThePEG
1.8.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
Utilities
DIterator.h
1
// -*- C++ -*-
2
//
3
// DIterator.h is a part of ThePEG - Toolkit for HEP Event Generation
4
// Copyright (C) 1999-2011 Leif Lonnblad
5
//
6
// ThePEG is licenced under version 2 of the GPL, see COPYING for details.
7
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
8
//
9
#ifndef ThePEG_DIterator_H
10
#define ThePEG_DIterator_H
11
// This is the declaration of the DIterator class.
12
13
#include <iterator>
14
15
namespace
ThePEG {
16
17
template
<
typename
BaseIterator>
29
class
DIterator
{
30
31
public
:
32
34
typedef
std::iterator_traits<BaseIterator>
Traits
;
36
typedef
typename
Traits::iterator_category
iterator_category
;
38
typedef
typename
Traits::difference_type
difference_type
;
40
typedef
typename
Traits::value_type
PtrType
;
42
typedef
std::iterator_traits<PtrType>
PtrTraits
;
44
typedef
typename
PtrTraits::value_type
value_type
;
46
typedef
typename
PtrTraits::pointer
pointer
;
48
typedef
typename
PtrTraits::reference
reference
;
49
50
public
:
51
55
DIterator
(
const
BaseIterator & in):
i
(in) {}
56
60
DIterator
(
const
DIterator
& pi):
i
(pi.
i
) {}
61
62
public
:
63
67
reference
operator*
()
const
{
return
**
i
; }
68
72
pointer
operator->
()
const
{
return
*
i
; }
73
77
DIterator
&
operator=
(
const
DIterator
& pi) {
i
= pi.
i
;
return
*
this
; }
78
82
DIterator
&
operator=
(
const
BaseIterator & pi) {
i
= pi;
return
*
this
; }
83
87
DIterator
&
operator++
() { ++
i
;
return
*
this
; }
89
DIterator
operator++
(
int
) {
DIterator
tmp(*
this
); ++
i
;
return
tmp; }
91
DIterator
&
operator--
() { --
i
;
return
*
this
; }
93
DIterator
operator--
(
int
) {
DIterator
tmp(*
this
); --
i
;
return
tmp; }
95
DIterator
&
operator+=
(
int
n) {
i
+= n;
return
*
this
; }
97
DIterator
operator+
(
int
n) {
return
DIterator
(
i
+ n); }
99
DIterator
&
operator-=
(
int
n) {
i
-= n;
return
*
this
; }
101
DIterator
operator-
(
int
n) {
return
DIterator
(
i
- n); }
103
108
reference
operator[]
(
difference_type
n) {
return
*(
i
[n]); }
109
113
difference_type
operator-
(
const
DIterator
& pi) {
return
i
- pi.
i
; }
114
118
bool
operator==
(
const
DIterator
& pi) {
return
i
== pi.
i
; }
120
bool
operator!=
(
const
DIterator
& pi) {
return
i
!= pi.
i
; }
122
bool
operator<
(
const
DIterator
& pi) {
return
i
< pi.
i
; }
124
bool
operator>
(
const
DIterator
& pi) {
return
i
> pi.
i
; }
126
bool
operator<=
(
const
DIterator
& pi) {
return
i
<= pi.
i
; }
128
bool
operator>=
(
const
DIterator
& pi) {
return
i
>= pi.
i
; }
130
bool
operator==
(
const
BaseIterator & bi) {
return
i
== bi; }
132
bool
operator!=
(
const
BaseIterator & bi) {
return
i
!= bi; }
134
bool
operator<
(
const
BaseIterator & bi) {
return
i
< bi; }
136
bool
operator>
(
const
BaseIterator & bi) {
return
i
> bi; }
138
bool
operator<=
(
const
BaseIterator & bi) {
return
i
<= bi; }
140
bool
operator>=
(
const
BaseIterator & bi) {
return
i
>= bi; }
142
143
private
:
144
148
BaseIterator
i
;
149
150
private
:
151
155
DIterator
() {}
156
157
};
158
159
}
160
161
#endif
/* ThePEG_DIterator_H */
Generated on Sat Jun 16 2012 16:51:03 for ThePEG by
1.8.1.1