mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -04:00
Fix interrogate warnings, flesh out iterator header
This commit is contained in:
parent
72a1a9820b
commit
ba5bba42b0
@ -1,6 +1,74 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdtypedefs.h>
|
||||
#include <string>
|
||||
|
||||
namespace std {
|
||||
template<class Iterator> class iterator;
|
||||
template<class Iterator> class reverse_iterator;
|
||||
// Iterator tags
|
||||
struct input_iterator_tag {};
|
||||
struct output_iterator_tag {};
|
||||
struct forward_iterator_tag : public input_iterator_tag {};
|
||||
struct bidirectional_iterator_tag : public forward_iterator_tag {};
|
||||
struct random_access_iterator_tag : public bidirectional_iterator_tag {};
|
||||
|
||||
// Iterator traits
|
||||
template<class Iterator> struct iterator_traits {
|
||||
typedef typename Iterator::difference_type difference_type;
|
||||
typedef typename Iterator::value_type value_type;
|
||||
typedef typename Iterator::pointer pointer;
|
||||
typedef typename Iterator::reference reference;
|
||||
typedef typename Iterator::iterator_category iterator_category;
|
||||
};
|
||||
|
||||
template<class T> struct iterator_traits<T*> {
|
||||
typedef ptrdiff_t difference_type;
|
||||
typedef T value_type;
|
||||
typedef T *pointer;
|
||||
typedef T &reference;
|
||||
typedef random_access_iterator_tag iterator_category;
|
||||
};
|
||||
|
||||
template<class T> struct iterator_traits<const T*> {
|
||||
typedef ptrdiff_t difference_type;
|
||||
typedef T value_type;
|
||||
typedef const T *pointer;
|
||||
typedef const T &reference;
|
||||
typedef random_access_iterator_tag iterator_category;
|
||||
};
|
||||
|
||||
// Iterators
|
||||
template<class Category, class T, class Distance = ptrdiff_t,
|
||||
class Pointer = T*, class Reference = T&> struct iterator {
|
||||
typedef T value_type;
|
||||
typedef Distance difference_type;
|
||||
typedef Pointer pointer;
|
||||
typedef Reference reference;
|
||||
typedef Category iterator_category;
|
||||
};
|
||||
|
||||
template<class Iterator>
|
||||
class reverse_iterator : public
|
||||
iterator<typename iterator_traits<Iterator>::iterator_category,
|
||||
typename iterator_traits<Iterator>::value_type,
|
||||
typename iterator_traits<Iterator>::difference_type,
|
||||
typename iterator_traits<Iterator>::pointer,
|
||||
typename iterator_traits<Iterator>::reference> {
|
||||
public:
|
||||
typedef Iterator iterator_type;
|
||||
typedef typename iterator_traits<Iterator>::difference_type difference_type;
|
||||
typedef typename iterator_traits<Iterator>::reference reference;
|
||||
typedef typename iterator_traits<Iterator>::pointer pointer;
|
||||
};
|
||||
|
||||
template<class T, class charT = char, class traits = char_traits<charT>,
|
||||
class Distance = ptrdiff_t>
|
||||
class istream_iterator;
|
||||
|
||||
template<class T, class charT = char, class traits = char_traits<charT>>
|
||||
class ostream_iterator;
|
||||
|
||||
template<class charT, class traits = char_traits<charT>>
|
||||
class istreambuf_iterator;
|
||||
template <class charT, class traits = char_traits<charT>>
|
||||
class ostreambuf_iterator;
|
||||
};
|
||||
|
@ -122,7 +122,7 @@ namespace std {
|
||||
struct is_always_equal;
|
||||
|
||||
template <class T> using rebind_alloc = size_t;
|
||||
template <class T> using rebind_traits = allocator_traits<rebind_alloc<T> >;
|
||||
//template <class T> using rebind_traits = allocator_traits<rebind_alloc<T> >;
|
||||
};
|
||||
|
||||
template <class T> class allocator;
|
||||
|
Loading…
x
Reference in New Issue
Block a user