GUI: Fix Tomato RAF theme for all builds. Compilation typo.
[tomato.git] / release / src-rt-6.x.4708 / toolchains / hndtools-arm-linux-2.6.36-uclibc-4.5.3 / arm-brcm-linux-uclibcgnueabi / include / c++ / 4.5.3 / ext / pb_ds / detail / pat_trie_ / traits.hpp
blobc8e7f587b55e534f58059277199c8458ec4db7a0
1 // -*- C++ -*-
3 // Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
4 //
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the terms
7 // of the GNU General Public License as published by the Free Software
8 // Foundation; either version 3, or (at your option) any later
9 // version.
11 // This library is distributed in the hope that it will be useful, but
12 // WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // General Public License for more details.
16 // Under Section 7 of GPL version 3, you are granted additional
17 // permissions described in the GCC Runtime Library Exception, version
18 // 3.1, as published by the Free Software Foundation.
20 // You should have received a copy of the GNU General Public License and
21 // a copy of the GCC Runtime Library Exception along with this program;
22 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23 // <http://www.gnu.org/licenses/>.
25 // Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
27 // Permission to use, copy, modify, sell, and distribute this software
28 // is hereby granted without fee, provided that the above copyright
29 // notice appears in all copies, and that both that copyright notice
30 // and this permission notice appear in supporting documentation. None
31 // of the above authors, nor IBM Haifa Research Laboratories, make any
32 // representation about the suitability of this software for any
33 // purpose. It is provided "as is" without express or implied
34 // warranty.
36 /**
37 * @file traits.hpp
38 * Contains an implementation class for pat_trie_.
41 #ifndef PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP
42 #define PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP
44 #include <ext/pb_ds/detail/pat_trie_/node_base.hpp>
45 #include <ext/pb_ds/detail/pat_trie_/head.hpp>
46 #include <ext/pb_ds/detail/pat_trie_/leaf.hpp>
47 #include <ext/pb_ds/detail/pat_trie_/internal_node.hpp>
48 #include <ext/pb_ds/detail/pat_trie_/point_iterators.hpp>
49 #include <ext/pb_ds/detail/pat_trie_/node_iterators.hpp>
50 #include <ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp>
52 namespace __gnu_pbds
54 namespace detail
57 template<typename Key,
58 typename Mapped,
59 class E_Access_Traits,
60 template<typename Const_Node_Iterator,
61 class Node_Iterator,
62 class Cmp_Fn_,
63 class Allocator_>
64 class Node_Update,
65 class Allocator>
66 struct trie_traits<
67 Key,
68 Mapped,
69 E_Access_Traits,
70 Node_Update,
71 pat_trie_tag,
72 Allocator>
74 private:
75 typedef types_traits< Key, Mapped, Allocator, false> type_traits;
77 public:
78 typedef
79 typename trie_node_metadata_selector<
80 Key,
81 Mapped,
82 E_Access_Traits,
83 Node_Update,
84 Allocator>::type
85 metadata_type;
87 typedef E_Access_Traits e_access_traits;
89 typedef
90 __gnu_pbds::detail::synth_e_access_traits<
91 type_traits,
92 false,
93 e_access_traits>
94 synth_e_access_traits;
96 typedef
97 pat_trie_node_base<
98 type_traits,
99 synth_e_access_traits,
100 metadata_type,
101 Allocator>
102 node;
104 typedef
105 pat_trie_leaf<
106 type_traits,
107 synth_e_access_traits,
108 metadata_type,
109 Allocator>
110 leaf;
112 typedef
113 pat_trie_head<
114 type_traits,
115 synth_e_access_traits,
116 metadata_type,
117 Allocator>
118 head;
120 typedef
121 pat_trie_internal_node<
122 type_traits,
123 synth_e_access_traits,
124 metadata_type,
125 Allocator>
126 internal_node;
128 typedef
129 pat_trie_const_it_<
130 type_traits,
131 node,
132 leaf,
133 head,
134 internal_node,
135 true,
136 Allocator>
137 const_iterator;
139 typedef
140 pat_trie_it_<
141 type_traits,
142 node,
143 leaf,
144 head,
145 internal_node,
146 true,
147 Allocator>
148 iterator;
150 typedef
151 pat_trie_const_it_<
152 type_traits,
153 node,
154 leaf,
155 head,
156 internal_node,
157 false,
158 Allocator>
159 const_reverse_iterator;
161 typedef
162 pat_trie_it_<
163 type_traits,
164 node,
165 leaf,
166 head,
167 internal_node,
168 false,
169 Allocator>
170 reverse_iterator;
172 typedef
173 pat_trie_const_node_it_<
174 node,
175 leaf,
176 head,
177 internal_node,
178 const_iterator,
179 iterator,
180 synth_e_access_traits,
181 Allocator>
182 const_node_iterator;
184 typedef
185 pat_trie_node_it_<
186 node,
187 leaf,
188 head,
189 internal_node,
190 const_iterator,
191 iterator,
192 synth_e_access_traits,
193 Allocator>
194 node_iterator;
196 typedef
197 Node_Update<
198 const_node_iterator,
199 node_iterator,
200 E_Access_Traits,
201 Allocator>
202 node_update;
204 typedef
205 __gnu_pbds::null_trie_node_update<
206 const_node_iterator,
207 node_iterator,
208 E_Access_Traits,
209 Allocator>*
210 null_node_update_pointer;
213 template<typename Key,
214 class E_Access_Traits,
215 template<typename Const_Node_Iterator,
216 class Node_Iterator,
217 class Cmp_Fn_,
218 class Allocator_>
219 class Node_Update,
220 class Allocator>
221 struct trie_traits<
222 Key,
223 null_mapped_type,
224 E_Access_Traits,
225 Node_Update,
226 pat_trie_tag,
227 Allocator>
229 private:
230 typedef
231 types_traits<
232 Key,
233 null_mapped_type,
234 Allocator,
235 false>
236 type_traits;
238 public:
239 typedef
240 typename trie_node_metadata_selector<
241 Key,
242 null_mapped_type,
243 E_Access_Traits,
244 Node_Update,
245 Allocator>::type
246 metadata_type;
248 typedef E_Access_Traits e_access_traits;
250 typedef
251 __gnu_pbds::detail::synth_e_access_traits<
252 type_traits,
253 true,
254 e_access_traits>
255 synth_e_access_traits;
257 typedef
258 pat_trie_node_base<
259 type_traits,
260 synth_e_access_traits,
261 metadata_type,
262 Allocator>
263 node;
265 typedef
266 pat_trie_leaf<
267 type_traits,
268 synth_e_access_traits,
269 metadata_type,
270 Allocator>
271 leaf;
273 typedef
274 pat_trie_head<
275 type_traits,
276 synth_e_access_traits,
277 metadata_type,
278 Allocator>
279 head;
281 typedef
282 pat_trie_internal_node<
283 type_traits,
284 synth_e_access_traits,
285 metadata_type,
286 Allocator>
287 internal_node;
289 typedef
290 pat_trie_const_it_<
291 type_traits,
292 node,
293 leaf,
294 head,
295 internal_node,
296 true,
297 Allocator>
298 const_iterator;
300 typedef const_iterator iterator;
302 typedef
303 pat_trie_const_it_<
304 type_traits,
305 node,
306 leaf,
307 head,
308 internal_node,
309 false,
310 Allocator>
311 const_reverse_iterator;
313 typedef const_reverse_iterator reverse_iterator;
315 typedef
316 pat_trie_const_node_it_<
317 node,
318 leaf,
319 head,
320 internal_node,
321 const_iterator,
322 iterator,
323 synth_e_access_traits,
324 Allocator>
325 const_node_iterator;
327 typedef const_node_iterator node_iterator;
329 typedef
330 Node_Update<
331 const_node_iterator,
332 node_iterator,
333 E_Access_Traits,
334 Allocator>
335 node_update;
337 typedef
338 __gnu_pbds::null_trie_node_update<
339 const_node_iterator,
340 const_node_iterator,
341 E_Access_Traits,
342 Allocator>*
343 null_node_update_pointer;
346 } // namespace detail
347 } // namespace __gnu_pbds
349 #endif // #ifndef PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP