29 #include <boost/noncopyable.hpp> 30 #include <boost/iterator/transform_iterator.hpp> 35 #include "../runtime/TypeStringTools.h" 49 template<
typename Container,
typename Accessor = pass_through>
55 typedef typename Container::pointer
pointer;
60 typedef boost::transform_iterator<Accessor,
64 typedef boost::transform_iterator<Accessor,
typename Container::iterator,
89 template<
typename P1,
typename P2>
93 begin()
const throw ();
105 size() const throw ();
108 empty() const throw ();
119 template<typename Container>
137 inline const_iterator
138 begin()
const throw ();
143 inline const_iterator
144 end() const throw ();
150 size() const throw ();
153 empty() const throw ();
155 typedef Container container_type;
157 typedef pass_through accessor_type;
159 container_type& container;
164 template<typename Container, typename Accessor>
166 container(container) {
169 template<
typename Container,
typename Accessor>
171 Container, Accessor>
::begin()
const throw () {
175 template<
typename Container,
typename Accessor>
181 template<
typename Container,
typename Accessor>
183 Container, Accessor>
::end()
const throw () {
187 template<
typename Container,
typename Accessor>
189 Container, Accessor>
::end() throw () {
193 template<
typename Container,
typename Accessor>
195 Container, Accessor>
::size()
const throw () {
196 return this->container.size();
199 template<
typename Container,
typename Accessor>
201 return this->container.empty();
206 template<
typename Container>
208 container(container) {
211 template<
typename Container>
213 Container, pass_through>
::begin()
const throw () {
214 return container.begin();
217 template<
typename Container>
220 return container.begin();
223 template<
typename Container>
225 Container, pass_through>
::end()
const throw () {
226 return container.end();
229 template<
typename Container>
231 Container, pass_through>
::end() throw () {
232 return container.end();
235 template<
typename Container>
237 Container, pass_through>
::size()
const throw () {
238 return container.size();
241 template<
typename Container>
243 return container.empty();
Container::size_type size_type
Container::size_type size_type
Container::value_type value_type
Container::const_reference const_reference
container_type & container
boost::transform_iterator< Accessor, typename Container::iterator, typename Accessor::result_type > iterator
Container::difference_type difference_type
Container::pointer pointer
Container::pointer pointer
const_iterator begin() const
Container::value_type value_type
Container::reference reference
const_iterator end() const
iterator::difference_type difference_type
boost::transform_iterator< Accessor, typename Container::const_iterator, typename detail::force_const< typename Accessor::result_type >::type > const_iterator
Container::const_iterator const_iterator
Container::reference reference
ContainerProxy(Container &container)
Container::const_reference const_reference
Container::iterator iterator