2 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
3 // Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
4 // Stefan Bund <g0dil@berlios.de>
6 // This program is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 2 of the License, or
9 // (at your option) any later version.
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the
18 // Free Software Foundation, Inc.,
19 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22 \brief INet6Address internal header */
24 #ifndef IH_INet6Address_
25 #define IH_INet6Address_ 1
29 ///////////////////////////////ih.p////////////////////////////////////////
39 template <unsigned a, unsigned bytes, unsigned restbits>
40 struct CheckINet6Network_impl5
44 struct CheckINet6Network_impl5<a,0,0>
46 static bool match(boost::uint8_t v0, boost::uint8_t v1);
49 template <unsigned a, unsigned restbits>
50 struct CheckINet6Network_impl5<a,0,restbits>
52 static bool match(boost::uint8_t v0, boost::uint8_t v1);
56 struct CheckINet6Network_impl5<a,1,0>
58 static bool match(boost::uint8_t v0, boost::uint8_t v1);
61 template <unsigned a, unsigned restbits>
62 struct CheckINet6Network_impl5<a,1,restbits>
64 static bool match(boost::uint8_t v0, boost::uint8_t v1);
67 template <unsigned a, unsigned bits>
68 struct CheckINet6Network_impl4
69 : public CheckINet6Network_impl5<a,bits/8,bits%8>
72 template <unsigned a0, unsigned a1, unsigned a2, unsigned a3, unsigned a4,
73 unsigned a5, unsigned a6, unsigned a7, unsigned words, unsigned restbits>
74 struct CheckINet6Network_impl3
77 template <unsigned a0, unsigned a1, unsigned a2, unsigned a3, unsigned a4,
78 unsigned a5, unsigned a6, unsigned a7, unsigned restbits>
79 struct CheckINet6Network_impl3<a0,a1,a2,a3,a4,a5,a6,a7,0,restbits>
81 static bool match(INet6Address const & addr);
84 template <unsigned a0, unsigned a1, unsigned a2, unsigned a3, unsigned a4,
85 unsigned a5, unsigned a6, unsigned a7, unsigned restbits>
86 struct CheckINet6Network_impl3<a0,a1,a2,a3,a4,a5,a6,a7,1,restbits>
88 static bool match(INet6Address const & addr);
91 template <unsigned a0, unsigned a1, unsigned a2, unsigned a3, unsigned a4,
92 unsigned a5, unsigned a6, unsigned a7, unsigned restbits>
93 struct CheckINet6Network_impl3<a0,a1,a2,a3,a4,a5,a6,a7,2,restbits>
95 static bool match(INet6Address const & addr);
98 template <unsigned a0, unsigned a1, unsigned a2, unsigned a3, unsigned a4,
99 unsigned a5, unsigned a6, unsigned a7, unsigned restbits>
100 struct CheckINet6Network_impl3<a0,a1,a2,a3,a4,a5,a6,a7,3,restbits>
102 static bool match(INet6Address const & addr);
105 template <unsigned a0, unsigned a1, unsigned a2, unsigned a3, unsigned a4,
106 unsigned a5, unsigned a6, unsigned a7, unsigned restbits>
107 struct CheckINet6Network_impl3<a0,a1,a2,a3,a4,a5,a6,a7,4,restbits>
109 static bool match(INet6Address const & addr);
112 template <unsigned a0, unsigned a1, unsigned a2, unsigned a3, unsigned a4,
113 unsigned a5, unsigned a6, unsigned a7, unsigned restbits>
114 struct CheckINet6Network_impl3<a0,a1,a2,a3,a4,a5,a6,a7,5,restbits>
116 static bool match(INet6Address const & addr);
119 template <unsigned a0, unsigned a1, unsigned a2, unsigned a3, unsigned a4,
120 unsigned a5, unsigned a6, unsigned a7, unsigned restbits>
121 struct CheckINet6Network_impl3<a0,a1,a2,a3,a4,a5,a6,a7,6,restbits>
123 static bool match(INet6Address const & addr);
126 template <unsigned a0, unsigned a1, unsigned a2, unsigned a3, unsigned a4,
127 unsigned a5, unsigned a6, unsigned a7, unsigned restbits>
128 struct CheckINet6Network_impl3<a0,a1,a2,a3,a4,a5,a6,a7,7,restbits>
130 static bool match(INet6Address const & addr);
133 template <unsigned a0, unsigned a1, unsigned a2, unsigned a3, unsigned a4,
134 unsigned a5, unsigned a6, unsigned a7, unsigned bits>
135 struct CheckINet6Network_impl2
136 : public CheckINet6Network_impl3<a0,a1,a2,a3,a4,a5,a6,a7,bits/16,bits%16>
139 template <unsigned a0, unsigned a1, unsigned a2, unsigned a3, unsigned a4,
140 unsigned a5, unsigned a6, unsigned a7, unsigned a8>
141 struct CheckINet6Network_impl
142 : public CheckINet6Network_impl2<a0,a1,a2,a3,a4,a5,a6,a7,a8>
145 template <unsigned a0, unsigned a1, unsigned a2, unsigned a3, unsigned a4,
146 unsigned a5, unsigned a6, unsigned a7>
147 struct CheckINet6Network_impl<a0,a1,a2,a3,a4,a5,a6,a7,0>
148 : public CheckINet6Network_impl2<a0,a1,a2,a3,a4,a5,a6,0,a7>
151 template <unsigned a0, unsigned a1, unsigned a2, unsigned a3, unsigned a4,
152 unsigned a5, unsigned a6>
153 struct CheckINet6Network_impl<a0,a1,a2,a3,a4,a5,a6,0,0>
154 : public CheckINet6Network_impl2<a0,a1,a2,a3,a4,a5,0,0,a6>
157 template <unsigned a0, unsigned a1, unsigned a2, unsigned a3, unsigned a4,
159 struct CheckINet6Network_impl<a0,a1,a2,a3,a4,a5,0,0,0>
160 : public CheckINet6Network_impl2<a0,a1,a2,a3,a4,0,0,0,a5>
163 template <unsigned a0, unsigned a1, unsigned a2, unsigned a3, unsigned a4>
164 struct CheckINet6Network_impl<a0,a1,a2,a3,a4,0,0,0,0>
165 : public CheckINet6Network_impl2<a0,a1,a2,a3,0,0,0,0,a4>
168 template <unsigned a0, unsigned a1, unsigned a2, unsigned a3>
169 struct CheckINet6Network_impl<a0,a1,a2,a3,0,0,0,0,0>
170 : public CheckINet6Network_impl2<a0,a1,a2,0,0,0,0,0,a3>
173 template <unsigned a0, unsigned a1, unsigned a2>
174 struct CheckINet6Network_impl<a0,a1,a2,0,0,0,0,0,0>
175 : public CheckINet6Network_impl2<a0,a1,0,0,0,0,0,0,a2>
178 template <unsigned a0, unsigned a1>
179 struct CheckINet6Network_impl<a0,a1,0,0,0,0,0,0,0>
180 : public CheckINet6Network_impl2<a0,0,0,0,0,0,0,0,a1>
183 template <boost::uint64_t net, boost::uint64_t id, unsigned bits, unsigned bytes>
184 struct IsINet6Network_impl
191 ///////////////////////////////ih.e////////////////////////////////////////
198 // comment-column: 40
199 // c-file-style: "senf"
200 // indent-tabs-mode: nil
201 // ispell-local-dictionary: "american"
202 // compile-command: "scons -u test"