]> git.wh0rd.org Git - ICEs.git/blob - 411691/id_manager.i.2
more
[ICEs.git] / 411691 / id_manager.i.2
1 typedef long unsigned int size_t;
2           namespace std  {
3         template<typename _Tp> _Tp* __addressof(_Tp& __r) {
4       }
5         template<class _Sp, class _Tp> struct __traitor {
6       };
7         template<typename _Tp> struct __is_integer {
8       };
9         template<typename _Tp> struct __is_floating {
10       };
11         template<typename _Tp> struct __is_pointer {
12       };
13         template<typename _Tp> struct __is_normal_iterator {
14       };
15         template<typename _Tp> struct __is_arithmetic : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > {
16       };
17         template<typename _Tp> struct __is_scalar : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > {
18       };
19         template<typename _Iterator, bool _HasBase> struct _Iter_base {      };
20
21         template<typename _Iterator> struct _Niter_base : _Iter_base<_Iterator, __is_normal_iterator<_Iterator>::__value> {      };
22         template<typename _Iterator> typename _Niter_base<_Iterator>::iterator_type __niter_base(_Iterator __it) {      }
23         template<typename _CharT> struct char_traits;
24       class exception {
25     public: exception() throw() {    }
26     virtual ~exception() throw();
27     };
28
29
30         }
31           namespace __gnu_cxx  {
32         template<bool, typename> struct __enable_if {      };
33         template<typename _Iterator, typename _Container> class __normal_iterator {
34       protected: _Iterator _M_current;
35       public: typedef _Iterator iterator_type;
36       __normal_iterator() : _M_current(_Iterator()) {
37     }
38       };
39         template<typename _Tp> class new_allocator {
40       public:
41       typedef const _Tp* const_pointer;
42       typedef _Tp& reference;
43       };
44         }
45           namespace std  {
46
47         template<typename _Tp> class allocator: public __gnu_cxx::new_allocator<_Tp> {
48       public:
49       template<typename _Tp1> struct rebind {
50     typedef allocator<_Tp1> other;
51     };
52       };
53         template<typename _InputIterator, typename _ForwardIterator, typename _Allocator> _ForwardIterator __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, _ForwardIterator __result, _Allocator& __alloc) {
54       try {
55     }
56       catch(...) {
57     }
58       }
59
60         }
61           namespace boost {
62         template<class T> class scoped_ptr {
63       private: T * px;
64       public: typedef T element_type;
65       explicit scoped_ptr( T * p = 0 ): px( p ) {
66     }
67       };
68         }
69           namespace std  {
70         template<typename _CharT, typename _Traits = char_traits<_CharT>, typename _Alloc = allocator<_CharT> > class basic_string;
71         typedef basic_string<char> string;
72         template<> struct char_traits<char> {
73       typedef char char_type;
74       static void assign(char_type& __c1, const char_type& __c2) {
75     }
76       }
77         __pthread_unwind_buf_t ;
78         }
79           typedef int _Atomic_word;
80           namespace __gnu_cxx  {
81         static _Atomic_word  __exchange_and_add_dispatch(_Atomic_word* __mem, int __val) {
82       }
83         }
84           namespace std  {
85         template<typename _CharT, typename _Traits, typename _Alloc> class basic_string {
86       typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;
87       public: typedef _Traits traits_type;
88       typedef _Alloc allocator_type;
89       typedef typename _CharT_alloc_type::reference reference;
90       typedef typename _CharT_alloc_type::const_pointer const_pointer;
91       typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string> const_iterator;
92       private: struct _Rep_base {
93     _Atomic_word _M_refcount;
94     };
95       struct _Rep : _Rep_base {
96     void _M_set_length_and_sharable(size_t __n) {
97     }
98     _CharT* _M_refdata() throw() {
99     return reinterpret_cast<_CharT*>(this + 1);
100     }
101     void _M_dispose(const _Alloc& __a) {
102     if (__builtin_expect(this != &_S_empty_rep(), false)) {
103     if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0) {
104   _M_destroy(__a);
105   }
106     }
107     }
108     void _M_destroy(const _Alloc&) throw();
109     };
110       struct _Alloc_hider : _Alloc {
111     _Alloc_hider(_CharT* __dat, const _Alloc& __a) : _Alloc(__a), _M_p(__dat) {
112     }
113     _CharT* _M_p;
114     };
115       public: static const size_t npos = static_cast<size_t>(-1);
116       private: mutable _Alloc_hider _M_dataplus;
117       _Rep* _M_rep() const {
118     }
119       size_t _M_limit(size_t __pos, size_t __off) const {
120     }
121       static _Rep& _S_empty_rep() {
122     }
123       public: basic_string() : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) {
124     }
125       ~basic_string() {
126     _M_rep()->_M_dispose(this->get_allocator());
127     }
128       size_t length() const {
129     }
130       reference operator[](size_t __pos) {
131     }
132       basic_string& erase(size_t __pos = 0, size_t __n = npos) {
133     }
134       allocator_type get_allocator() const {
135     }
136       };
137         }
138           namespace boost {
139         namespace detail {
140       template <typename T> class empty_base {
141     };
142       }
143         template <class T, class U, class B = ::boost::detail::empty_base<T> > struct less_than_comparable2 : B {
144       };
145         template <class T, class U, class B = ::boost::detail::empty_base<T> > struct equality_comparable2 : B {
146       };
147         namespace detail {
148       struct false_t {
149    };
150       }
151         template<class T> struct is_chained_base {
152       typedef ::boost::detail::false_t value;
153       };
154         template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct less_than_comparable : less_than_comparable2<T, U, B> {
155      };
156         template <class T ,class U = T ,class B = ::boost::detail::empty_base<T> ,class O = typename is_chained_base<U>::value > struct equality_comparable : equality_comparable2<T, U, B> {
157      };
158         namespace type_traits {
159       }
160         template<class T> class intrusive_ptr {
161       private: typedef intrusive_ptr this_type;
162       public: typedef T element_type;
163       intrusive_ptr(): px( 0 ) {
164     }
165       intrusive_ptr( T * p, bool add_ref = true ): px( p ) {
166     }
167       ~intrusive_ptr() {
168     if( px != 0 ) intrusive_ptr_release( px );
169     }
170       T * operator->() const {
171     return px;
172     }
173       typedef T * this_type::*unspecified_bool_type;
174       operator unspecified_bool_type() const {
175     }
176       private: T * px;
177       };
178         }
179           namespace quickbook {
180         struct section_info;
181         struct string_ref : boost::less_than_comparable<string_ref, boost::less_than_comparable<string_ref, std::string, boost::equality_comparable<string_ref, boost::equality_comparable<string_ref, std::string> > > > {
182       public: typedef std::string::const_iterator iterator;
183       private: iterator begin_, end_;
184       public: string_ref() : begin_(), end_() {
185     }
186       };
187         namespace exception_detail {
188       }
189         }
190         namespace std {
191       class bad_cast : public exception {    };
192         }
193           namespace quickbook {
194         template <typename T> struct intrusive_base {
195       intrusive_base() : ref_count_(0) {
196    }
197       ~intrusive_base() {
198     }
199       friend void intrusive_ptr_release(T* ptr) {
200     if(--ptr->ref_count_ == 0) delete ptr;
201     }
202       private: unsigned ref_count_;
203       };
204         struct id_category {
205       enum categories {
206     default_category = 0, numbered, generated, generated_heading, generated_section, generated_doc, explicit_id, explicit_section_id, explicit_anchor_id };
207       categories c;
208       };
209         struct id_state;
210         struct id_manager {
211       id_manager();
212       private: boost::scoped_ptr<id_state> state;
213       };
214         }
215           namespace boost{
216         namespace detail {
217       }
218         }
219           namespace std  {
220         template<typename _Tp, typename _Ref, typename _Ptr> struct _Deque_iterator {
221       };
222         template<typename _Tp, typename _Alloc> class _Deque_base {
223       public: typedef _Alloc allocator_type;
224       typedef _Deque_iterator<_Tp, _Tp&, _Tp*> iterator;
225       _Deque_base() : _M_impl() {
226     _M_initialize_map(0);
227     }
228       typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
229       struct _Deque_impl : public _Tp_alloc_type {
230     _Tp** _M_map;
231     size_t _M_map_size;
232     iterator _M_start;
233     iterator _M_finish;
234     _Deque_impl() : _Tp_alloc_type(), _M_map(0), _M_map_size(0), _M_start(), _M_finish() {
235     }
236     };
237       protected: void _M_initialize_map(size_t);
238       _Deque_impl _M_impl;
239       };
240         template<typename _Tp, typename _Alloc = std::allocator<_Tp> > class deque : protected _Deque_base<_Tp, _Alloc> {
241       };
242         namespace numeric {
243       enum range_check_result {
244     cInRange = 0 , cNegOverflow = 1 , cPosOverflow = 2 }
245       ;
246       class bad_numeric_cast : public std::bad_cast {
247     };
248       class negative_overflow : public bad_numeric_cast {
249     void operator() ( range_check_result r ) {
250     if ( r == cNegOverflow ) throw negative_overflow() ;
251     }
252     }
253       ;
254       }
255         }
256           namespace quickbook {
257         static const size_t max_size = 32;
258         struct id_placeholder {
259       };
260         struct file_info;
261         struct doc_info;
262         struct id_state {
263       boost::intrusive_ptr<file_info> current_file;
264       std::deque<id_placeholder> placeholders;
265       private: id_placeholder* add_id_to_section( std::string const& id, id_category category, boost::intrusive_ptr<section_info> const& section);
266       };
267         struct file_info : intrusive_base<file_info> {
268       boost::intrusive_ptr<file_info> parent;
269       boost::intrusive_ptr<doc_info> document;
270       bool document_root;
271       unsigned compatibility_version;
272       boost::intrusive_ptr<section_info> switched_section;
273       id_placeholder* original_placeholder;
274       std::string doc_id_1_1;
275       file_info(boost::intrusive_ptr<file_info> const& parent, unsigned compatibility_version) : parent(parent), document(parent->document), document_root(false), compatibility_version(compatibility_version), switched_section(), original_placeholder() {
276    }
277       };
278         struct doc_info : intrusive_base<doc_info> {
279       boost::intrusive_ptr<section_info> current_section;
280       std::string last_title_1_1;
281       std::string section_id_1_1;
282       };
283         struct section_info : intrusive_base<section_info> {
284       boost::intrusive_ptr<section_info> parent;
285       unsigned compatibility_version;
286       unsigned level;
287       std::string id_1_1;
288       id_placeholder* placeholder_1_6;
289       section_info(boost::intrusive_ptr<section_info> const& parent, unsigned compatibility_version, std::string const& id) : parent(parent), compatibility_version(compatibility_version), level(parent ? parent->level + 1 : 1), id_1_1(), placeholder_1_6(0) {
290     }
291       };
292         id_manager::id_manager() : state(new id_state) {
293       }
294         namespace {
295       std::string normalize_id( std::string src_id, size_t prefix = 0, size_t size = max_size) {
296     std::string id;
297     size_t src = prefix;
298     size_t dst = prefix;
299     if (src >= id.length()) {
300     if (id[src] == '_') {
301     }
302     }
303     id.erase(dst);
304     }
305       }
306         id_placeholder* id_state::add_id_to_section( std::string const& id, id_category category, boost::intrusive_ptr<section_info> const& section) {
307       std::string id_part = id;
308       if (current_file->compatibility_version >= 106u && category.c < id_category::explicit_id) {
309     id_part = normalize_id(id);
310     }
311       boost::intrusive_ptr<section_info> parent = current_file->document->current_section;
312       boost::intrusive_ptr<section_info> new_section = new section_info(parent, current_file->compatibility_version, id);
313       };
314         }