[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]

vigra/promote_traits.hxx |

    00001 /************************************************************************/
    00002 /*                                                                      */
    00003 /*               Copyright 1998-2008 by Ullrich Koethe                  */
    00004 /*                                                                      */
    00005 /*    This file is part of the VIGRA computer vision library.           */
    00006 /*    The VIGRA Website is                                              */
    00007 /*        http://hci.iwr.uni-heidelberg.de/vigra/                       */
    00008 /*    Please direct questions, bug reports, and contributions to        */
    00009 /*        ullrich.koethe@iwr.uni-heidelberg.de    or                    */
    00010 /*        vigra@informatik.uni-hamburg.de                               */
    00011 /*                                                                      */
    00012 /*    Permission is hereby granted, free of charge, to any person       */
    00013 /*    obtaining a copy of this software and associated documentation    */
    00014 /*    files (the "Software"), to deal in the Software without           */
    00015 /*    restriction, including without limitation the rights to use,      */
    00016 /*    copy, modify, merge, publish, distribute, sublicense, and/or      */
    00017 /*    sell copies of the Software, and to permit persons to whom the    */
    00018 /*    Software is furnished to do so, subject to the following          */
    00019 /*    conditions:                                                       */
    00020 /*                                                                      */
    00021 /*    The above copyright notice and this permission notice shall be    */
    00022 /*    included in all copies or substantial portions of the             */
    00023 /*    Software.                                                         */
    00024 /*                                                                      */
    00025 /*    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND    */
    00026 /*    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES   */
    00027 /*    OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND          */
    00028 /*    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT       */
    00029 /*    HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,      */
    00030 /*    WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING      */
    00031 /*    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR     */
    00032 /*    OTHER DEALINGS IN THE SOFTWARE.                                   */
    00033 /*                                                                      */
    00034 /************************************************************************/
    00035
    00036
    00037 #ifndef VIGRA_PROMOTETRAITS_HXX
    00038 #define VIGRA_PROMOTETRAITS_HXX
    00039
    00040 // this file was autogenerated from promote_traits.hxx.py - DO NOT EDIT
    00041
    00042 template <>
    00043 struct PromoteTraits<bool, bool> : public detail::PromoteType<bool, bool>
    00044 {
    00045     typedef detail::PromoteType<bool, bool>::Promote Promote;
    00046     using detail::PromoteType<bool, bool>::toPromote;
    00047 };
    00048
    00049 template <>
    00050 struct PromoteTraits<bool, signed char> : public detail::PromoteType<bool, signed char>
    00051 {
    00052     typedef detail::PromoteType<bool, signed char>::Promote Promote;
    00053     using detail::PromoteType<bool, signed char>::toPromote;
    00054 };
    00055
    00056 template <>
    00057 struct PromoteTraits<bool, unsigned char> : public detail::PromoteType<bool, unsigned char>
    00058 {
    00059     typedef detail::PromoteType<bool, unsigned char>::Promote Promote;
    00060     using detail::PromoteType<bool, unsigned char>::toPromote;
    00061 };
    00062
    00063 template <>
    00064 struct PromoteTraits<bool, short> : public detail::PromoteType<bool, short>
    00065 {
    00066     typedef detail::PromoteType<bool, short>::Promote Promote;
    00067     using detail::PromoteType<bool, short>::toPromote;
    00068 };
    00069
    00070 template <>
    00071 struct PromoteTraits<bool, unsigned short> : public detail::PromoteType<bool, unsigned short>
    00072 {
    00073     typedef detail::PromoteType<bool, unsigned short>::Promote Promote;
    00074     using detail::PromoteType<bool, unsigned short>::toPromote;
    00075 };
    00076
    00077 template <>
    00078 struct PromoteTraits<bool, int> : public detail::PromoteType<bool, int>
    00079 {
    00080     typedef detail::PromoteType<bool, int>::Promote Promote;
    00081     using detail::PromoteType<bool, int>::toPromote;
    00082 };
    00083
    00084 template <>
    00085 struct PromoteTraits<bool, unsigned int> : public detail::PromoteType<bool, unsigned int>
    00086 {
    00087     typedef detail::PromoteType<bool, unsigned int>::Promote Promote;
    00088     using detail::PromoteType<bool, unsigned int>::toPromote;
    00089 };
    00090
    00091 template <>
    00092 struct PromoteTraits<bool, long> : public detail::PromoteType<bool, long>
    00093 {
    00094     typedef detail::PromoteType<bool, long>::Promote Promote;
    00095     using detail::PromoteType<bool, long>::toPromote;
    00096 };
    00097
    00098 template <>
    00099 struct PromoteTraits<bool, unsigned long> : public detail::PromoteType<bool, unsigned long>
    00100 {
    00101     typedef detail::PromoteType<bool, unsigned long>::Promote Promote;
    00102     using detail::PromoteType<bool, unsigned long>::toPromote;
    00103 };
    00104
    00105 template <>
    00106 struct PromoteTraits<bool, float> : public detail::PromoteType<bool, float>
    00107 {
    00108     typedef detail::PromoteType<bool, float>::Promote Promote;
    00109     using detail::PromoteType<bool, float>::toPromote;
    00110 };
    00111
    00112 template <>
    00113 struct PromoteTraits<bool, double> : public detail::PromoteType<bool, double>
    00114 {
    00115     typedef detail::PromoteType<bool, double>::Promote Promote;
    00116     using detail::PromoteType<bool, double>::toPromote;
    00117 };
    00118
    00119 template <>
    00120 struct PromoteTraits<bool, long double> : public detail::PromoteType<bool, long double>
    00121 {
    00122     typedef detail::PromoteType<bool, long double>::Promote Promote;
    00123     using detail::PromoteType<bool, long double>::toPromote;
    00124 };
    00125
    00126 #ifdef LLONG_MAX
    00127 template <>
    00128 struct PromoteTraits<bool, long long> : public detail::PromoteType<bool, long long>
    00129 {
    00130     typedef detail::PromoteType<bool, long long>::Promote Promote;
    00131     using detail::PromoteType<bool, long long>::toPromote;
    00132 };
    00133 #endif // LLONG_MAX
    00134
    00135 #ifdef LLONG_MAX
    00136 template <>
    00137 struct PromoteTraits<bool, unsigned long long> : public detail::PromoteType<bool, unsigned long long>
    00138 {
    00139     typedef detail::PromoteType<bool, unsigned long long>::Promote Promote;
    00140     using detail::PromoteType<bool, unsigned long long>::toPromote;
    00141 };
    00142 #endif // LLONG_MAX
    00143
    00144 template <>
    00145 struct PromoteTraits<signed char, signed char> : public detail::PromoteType<signed char, signed char>
    00146 {
    00147     typedef detail::PromoteType<signed char, signed char>::Promote Promote;
    00148     using detail::PromoteType<signed char, signed char>::toPromote;
    00149 };
    00150
    00151 template <>
    00152 struct PromoteTraits<signed char, bool> : public detail::PromoteType<signed char, bool>
    00153 {
    00154     typedef detail::PromoteType<signed char, bool>::Promote Promote;
    00155     using detail::PromoteType<signed char, bool>::toPromote;
    00156 };
    00157
    00158 template <>
    00159 struct PromoteTraits<signed char, unsigned char> : public detail::PromoteType<signed char, unsigned char>
    00160 {
    00161     typedef detail::PromoteType<signed char, unsigned char>::Promote Promote;
    00162     using detail::PromoteType<signed char, unsigned char>::toPromote;
    00163 };
    00164
    00165 template <>
    00166 struct PromoteTraits<signed char, short> : public detail::PromoteType<signed char, short>
    00167 {
    00168     typedef detail::PromoteType<signed char, short>::Promote Promote;
    00169     using detail::PromoteType<signed char, short>::toPromote;
    00170 };
    00171
    00172 template <>
    00173 struct PromoteTraits<signed char, unsigned short> : public detail::PromoteType<signed char, unsigned short>
    00174 {
    00175     typedef detail::PromoteType<signed char, unsigned short>::Promote Promote;
    00176     using detail::PromoteType<signed char, unsigned short>::toPromote;
    00177 };
    00178
    00179 template <>
    00180 struct PromoteTraits<signed char, int> : public detail::PromoteType<signed char, int>
    00181 {
    00182     typedef detail::PromoteType<signed char, int>::Promote Promote;
    00183     using detail::PromoteType<signed char, int>::toPromote;
    00184 };
    00185
    00186 template <>
    00187 struct PromoteTraits<signed char, unsigned int> : public detail::PromoteType<signed char, unsigned int>
    00188 {
    00189     typedef detail::PromoteType<signed char, unsigned int>::Promote Promote;
    00190     using detail::PromoteType<signed char, unsigned int>::toPromote;
    00191 };
    00192
    00193 template <>
    00194 struct PromoteTraits<signed char, long> : public detail::PromoteType<signed char, long>
    00195 {
    00196     typedef detail::PromoteType<signed char, long>::Promote Promote;
    00197     using detail::PromoteType<signed char, long>::toPromote;
    00198 };
    00199
    00200 template <>
    00201 struct PromoteTraits<signed char, unsigned long> : public detail::PromoteType<signed char, unsigned long>
    00202 {
    00203     typedef detail::PromoteType<signed char, unsigned long>::Promote Promote;
    00204     using detail::PromoteType<signed char, unsigned long>::toPromote;
    00205 };
    00206
    00207 template <>
    00208 struct PromoteTraits<signed char, float> : public detail::PromoteType<signed char, float>
    00209 {
    00210     typedef detail::PromoteType<signed char, float>::Promote Promote;
    00211     using detail::PromoteType<signed char, float>::toPromote;
    00212 };
    00213
    00214 template <>
    00215 struct PromoteTraits<signed char, double> : public detail::PromoteType<signed char, double>
    00216 {
    00217     typedef detail::PromoteType<signed char, double>::Promote Promote;
    00218     using detail::PromoteType<signed char, double>::toPromote;
    00219 };
    00220
    00221 template <>
    00222 struct PromoteTraits<signed char, long double> : public detail::PromoteType<signed char, long double>
    00223 {
    00224     typedef detail::PromoteType<signed char, long double>::Promote Promote;
    00225     using detail::PromoteType<signed char, long double>::toPromote;
    00226 };
    00227
    00228 #ifdef LLONG_MAX
    00229 template <>
    00230 struct PromoteTraits<signed char, long long> : public detail::PromoteType<signed char, long long>
    00231 {
    00232     typedef detail::PromoteType<signed char, long long>::Promote Promote;
    00233     using detail::PromoteType<signed char, long long>::toPromote;
    00234 };
    00235 #endif // LLONG_MAX
    00236
    00237 #ifdef LLONG_MAX
    00238 template <>
    00239 struct PromoteTraits<signed char, unsigned long long> : public detail::PromoteType<signed char, unsigned long long>
    00240 {
    00241     typedef detail::PromoteType<signed char, unsigned long long>::Promote Promote;
    00242     using detail::PromoteType<signed char, unsigned long long>::toPromote;
    00243 };
    00244 #endif // LLONG_MAX
    00245
    00246 template <>
    00247 struct PromoteTraits<unsigned char, unsigned char> : public detail::PromoteType<unsigned char, unsigned char>
    00248 {
    00249     typedef detail::PromoteType<unsigned char, unsigned char>::Promote Promote;
    00250     using detail::PromoteType<unsigned char, unsigned char>::toPromote;
    00251 };
    00252
    00253 template <>
    00254 struct PromoteTraits<unsigned char, bool> : public detail::PromoteType<unsigned char, bool>
    00255 {
    00256     typedef detail::PromoteType<unsigned char, bool>::Promote Promote;
    00257     using detail::PromoteType<unsigned char, bool>::toPromote;
    00258 };
    00259
    00260 template <>
    00261 struct PromoteTraits<unsigned char, signed char> : public detail::PromoteType<unsigned char, signed char>
    00262 {
    00263     typedef detail::PromoteType<unsigned char, signed char>::Promote Promote;
    00264     using detail::PromoteType<unsigned char, signed char>::toPromote;
    00265 };
    00266
    00267 template <>
    00268 struct PromoteTraits<unsigned char, short> : public detail::PromoteType<unsigned char, short>
    00269 {
    00270     typedef detail::PromoteType<unsigned char, short>::Promote Promote;
    00271     using detail::PromoteType<unsigned char, short>::toPromote;
    00272 };
    00273
    00274 template <>
    00275 struct PromoteTraits<unsigned char, unsigned short> : public detail::PromoteType<unsigned char, unsigned short>
    00276 {
    00277     typedef detail::PromoteType<unsigned char, unsigned short>::Promote Promote;
    00278     using detail::PromoteType<unsigned char, unsigned short>::toPromote;
    00279 };
    00280
    00281 template <>
    00282 struct PromoteTraits<unsigned char, int> : public detail::PromoteType<unsigned char, int>
    00283 {
    00284     typedef detail::PromoteType<unsigned char, int>::Promote Promote;
    00285     using detail::PromoteType<unsigned char, int>::toPromote;
    00286 };
    00287
    00288 template <>
    00289 struct PromoteTraits<unsigned char, unsigned int> : public detail::PromoteType<unsigned char, unsigned int>
    00290 {
    00291     typedef detail::PromoteType<unsigned char, unsigned int>::Promote Promote;
    00292     using detail::PromoteType<unsigned char, unsigned int>::toPromote;
    00293 };
    00294
    00295 template <>
    00296 struct PromoteTraits<unsigned char, long> : public detail::PromoteType<unsigned char, long>
    00297 {
    00298     typedef detail::PromoteType<unsigned char, long>::Promote Promote;
    00299     using detail::PromoteType<unsigned char, long>::toPromote;
    00300 };
    00301
    00302 template <>
    00303 struct PromoteTraits<unsigned char, unsigned long> : public detail::PromoteType<unsigned char, unsigned long>
    00304 {
    00305     typedef detail::PromoteType<unsigned char, unsigned long>::Promote Promote;
    00306     using detail::PromoteType<unsigned char, unsigned long>::toPromote;
    00307 };
    00308
    00309 template <>
    00310 struct PromoteTraits<unsigned char, float> : public detail::PromoteType<unsigned char, float>
    00311 {
    00312     typedef detail::PromoteType<unsigned char, float>::Promote Promote;
    00313     using detail::PromoteType<unsigned char, float>::toPromote;
    00314 };
    00315
    00316 template <>
    00317 struct PromoteTraits<unsigned char, double> : public detail::PromoteType<unsigned char, double>
    00318 {
    00319     typedef detail::PromoteType<unsigned char, double>::Promote Promote;
    00320     using detail::PromoteType<unsigned char, double>::toPromote;
    00321 };
    00322
    00323 template <>
    00324 struct PromoteTraits<unsigned char, long double> : public detail::PromoteType<unsigned char, long double>
    00325 {
    00326     typedef detail::PromoteType<unsigned char, long double>::Promote Promote;
    00327     using detail::PromoteType<unsigned char, long double>::toPromote;
    00328 };
    00329
    00330 #ifdef LLONG_MAX
    00331 template <>
    00332 struct PromoteTraits<unsigned char, long long> : public detail::PromoteType<unsigned char, long long>
    00333 {
    00334     typedef detail::PromoteType<unsigned char, long long>::Promote Promote;
    00335     using detail::PromoteType<unsigned char, long long>::toPromote;
    00336 };
    00337 #endif // LLONG_MAX
    00338
    00339 #ifdef LLONG_MAX
    00340 template <>
    00341 struct PromoteTraits<unsigned char, unsigned long long> : public detail::PromoteType<unsigned char, unsigned long long>
    00342 {
    00343     typedef detail::PromoteType<unsigned char, unsigned long long>::Promote Promote;
    00344     using detail::PromoteType<unsigned char, unsigned long long>::toPromote;
    00345 };
    00346 #endif // LLONG_MAX
    00347
    00348 template <>
    00349 struct PromoteTraits<short, short> : public detail::PromoteType<short, short>
    00350 {
    00351     typedef detail::PromoteType<short, short>::Promote Promote;
    00352     using detail::PromoteType<short, short>::toPromote;
    00353 };
    00354
    00355 template <>
    00356 struct PromoteTraits<short, bool> : public detail::PromoteType<short, bool>
    00357 {
    00358     typedef detail::PromoteType<short, bool>::Promote Promote;
    00359     using detail::PromoteType<short, bool>::toPromote;
    00360 };
    00361
    00362 template <>
    00363 struct PromoteTraits<short, signed char> : public detail::PromoteType<short, signed char>
    00364 {
    00365     typedef detail::PromoteType<short, signed char>::Promote Promote;
    00366     using detail::PromoteType<short, signed char>::toPromote;
    00367 };
    00368
    00369 template <>
    00370 struct PromoteTraits<short, unsigned char> : public detail::PromoteType<short, unsigned char>
    00371 {
    00372     typedef detail::PromoteType<short, unsigned char>::Promote Promote;
    00373     using detail::PromoteType<short, unsigned char>::toPromote;
    00374 };
    00375
    00376 template <>
    00377 struct PromoteTraits<short, unsigned short> : public detail::PromoteType<short, unsigned short>
    00378 {
    00379     typedef detail::PromoteType<short, unsigned short>::Promote Promote;
    00380     using detail::PromoteType<short, unsigned short>::toPromote;
    00381 };
    00382
    00383 template <>
    00384 struct PromoteTraits<short, int> : public detail::PromoteType<short, int>
    00385 {
    00386     typedef detail::PromoteType<short, int>::Promote Promote;
    00387     using detail::PromoteType<short, int>::toPromote;
    00388 };
    00389
    00390 template <>
    00391 struct PromoteTraits<short, unsigned int> : public detail::PromoteType<short, unsigned int>
    00392 {
    00393     typedef detail::PromoteType<short, unsigned int>::Promote Promote;
    00394     using detail::PromoteType<short, unsigned int>::toPromote;
    00395 };
    00396
    00397 template <>
    00398 struct PromoteTraits<short, long> : public detail::PromoteType<short, long>
    00399 {
    00400     typedef detail::PromoteType<short, long>::Promote Promote;
    00401     using detail::PromoteType<short, long>::toPromote;
    00402 };
    00403
    00404 template <>
    00405 struct PromoteTraits<short, unsigned long> : public detail::PromoteType<short, unsigned long>
    00406 {
    00407     typedef detail::PromoteType<short, unsigned long>::Promote Promote;
    00408     using detail::PromoteType<short, unsigned long>::toPromote;
    00409 };
    00410
    00411 template <>
    00412 struct PromoteTraits<short, float> : public detail::PromoteType<short, float>
    00413 {
    00414     typedef detail::PromoteType<short, float>::Promote Promote;
    00415     using detail::PromoteType<short, float>::toPromote;
    00416 };
    00417
    00418 template <>
    00419 struct PromoteTraits<short, double> : public detail::PromoteType<short, double>
    00420 {
    00421     typedef detail::PromoteType<short, double>::Promote Promote;
    00422     using detail::PromoteType<short, double>::toPromote;
    00423 };
    00424
    00425 template <>
    00426 struct PromoteTraits<short, long double> : public detail::PromoteType<short, long double>
    00427 {
    00428     typedef detail::PromoteType<short, long double>::Promote Promote;
    00429     using detail::PromoteType<short, long double>::toPromote;
    00430 };
    00431
    00432 #ifdef LLONG_MAX
    00433 template <>
    00434 struct PromoteTraits<short, long long> : public detail::PromoteType<short, long long>
    00435 {
    00436     typedef detail::PromoteType<short, long long>::Promote Promote;
    00437     using detail::PromoteType<short, long long>::toPromote;
    00438 };
    00439 #endif // LLONG_MAX
    00440
    00441 #ifdef LLONG_MAX
    00442 template <>
    00443 struct PromoteTraits<short, unsigned long long> : public detail::PromoteType<short, unsigned long long>
    00444 {
    00445     typedef detail::PromoteType<short, unsigned long long>::Promote Promote;
    00446     using detail::PromoteType<short, unsigned long long>::toPromote;
    00447 };
    00448 #endif // LLONG_MAX
    00449
    00450 template <>
    00451 struct PromoteTraits<unsigned short, unsigned short> : public detail::PromoteType<unsigned short, unsigned short>
    00452 {
    00453     typedef detail::PromoteType<unsigned short, unsigned short>::Promote Promote;
    00454     using detail::PromoteType<unsigned short, unsigned short>::toPromote;
    00455 };
    00456
    00457 template <>
    00458 struct PromoteTraits<unsigned short, bool> : public detail::PromoteType<unsigned short, bool>
    00459 {
    00460     typedef detail::PromoteType<unsigned short, bool>::Promote Promote;
    00461     using detail::PromoteType<unsigned short, bool>::toPromote;
    00462 };
    00463
    00464 template <>
    00465 struct PromoteTraits<unsigned short, signed char> : public detail::PromoteType<unsigned short, signed char>
    00466 {
    00467     typedef detail::PromoteType<unsigned short, signed char>::Promote Promote;
    00468     using detail::PromoteType<unsigned short, signed char>::toPromote;
    00469 };
    00470
    00471 template <>
    00472 struct PromoteTraits<unsigned short, unsigned char> : public detail::PromoteType<unsigned short, unsigned char>
    00473 {
    00474     typedef detail::PromoteType<unsigned short, unsigned char>::Promote Promote;
    00475     using detail::PromoteType<unsigned short, unsigned char>::toPromote;
    00476 };
    00477
    00478 template <>
    00479 struct PromoteTraits<unsigned short, short> : public detail::PromoteType<unsigned short, short>
    00480 {
    00481     typedef detail::PromoteType<unsigned short, short>::Promote Promote;
    00482     using detail::PromoteType<unsigned short, short>::toPromote;
    00483 };
    00484
    00485 template <>
    00486 struct PromoteTraits<unsigned short, int> : public detail::PromoteType<unsigned short, int>
    00487 {
    00488     typedef detail::PromoteType<unsigned short, int>::Promote Promote;
    00489     using detail::PromoteType<unsigned short, int>::toPromote;
    00490 };
    00491
    00492 template <>
    00493 struct PromoteTraits<unsigned short, unsigned int> : public detail::PromoteType<unsigned short, unsigned int>
    00494 {
    00495     typedef detail::PromoteType<unsigned short, unsigned int>::Promote Promote;
    00496     using detail::PromoteType<unsigned short, unsigned int>::toPromote;
    00497 };
    00498
    00499 template <>
    00500 struct PromoteTraits<unsigned short, long> : public detail::PromoteType<unsigned short, long>
    00501 {
    00502     typedef detail::PromoteType<unsigned short, long>::Promote Promote;
    00503     using detail::PromoteType<unsigned short, long>::toPromote;
    00504 };
    00505
    00506 template <>
    00507 struct PromoteTraits<unsigned short, unsigned long> : public detail::PromoteType<unsigned short, unsigned long>
    00508 {
    00509     typedef detail::PromoteType<unsigned short, unsigned long>::Promote Promote;
    00510     using detail::PromoteType<unsigned short, unsigned long>::toPromote;
    00511 };
    00512
    00513 template <>
    00514 struct PromoteTraits<unsigned short, float> : public detail::PromoteType<unsigned short, float>
    00515 {
    00516     typedef detail::PromoteType<unsigned short, float>::Promote Promote;
    00517     using detail::PromoteType<unsigned short, float>::toPromote;
    00518 };
    00519
    00520 template <>
    00521 struct PromoteTraits<unsigned short, double> : public detail::PromoteType<unsigned short, double>
    00522 {
    00523     typedef detail::PromoteType<unsigned short, double>::Promote Promote;
    00524     using detail::PromoteType<unsigned short, double>::toPromote;
    00525 };
    00526
    00527 template <>
    00528 struct PromoteTraits<unsigned short, long double> : public detail::PromoteType<unsigned short, long double>
    00529 {
    00530     typedef detail::PromoteType<unsigned short, long double>::Promote Promote;
    00531     using detail::PromoteType<unsigned short, long double>::toPromote;
    00532 };
    00533
    00534 #ifdef LLONG_MAX
    00535 template <>
    00536 struct PromoteTraits<unsigned short, long long> : public detail::PromoteType<unsigned short, long long>
    00537 {
    00538     typedef detail::PromoteType<unsigned short, long long>::Promote Promote;
    00539     using detail::PromoteType<unsigned short, long long>::toPromote;
    00540 };
    00541 #endif // LLONG_MAX
    00542
    00543 #ifdef LLONG_MAX
    00544 template <>
    00545 struct PromoteTraits<unsigned short, unsigned long long> : public detail::PromoteType<unsigned short, unsigned long long>
    00546 {
    00547     typedef detail::PromoteType<unsigned short, unsigned long long>::Promote Promote;
    00548     using detail::PromoteType<unsigned short, unsigned long long>::toPromote;
    00549 };
    00550 #endif // LLONG_MAX
    00551
    00552 template <>
    00553 struct PromoteTraits<int, int> : public detail::PromoteType<int, int>
    00554 {
    00555     typedef detail::PromoteType<int, int>::Promote Promote;
    00556     using detail::PromoteType<int, int>::toPromote;
    00557 };
    00558
    00559 template <>
    00560 struct PromoteTraits<int, bool> : public detail::PromoteType<int, bool>
    00561 {
    00562     typedef detail::PromoteType<int, bool>::Promote Promote;
    00563     using detail::PromoteType<int, bool>::toPromote;
    00564 };
    00565
    00566 template <>
    00567 struct PromoteTraits<int, signed char> : public detail::PromoteType<int, signed char>
    00568 {
    00569     typedef detail::PromoteType<int, signed char>::Promote Promote;
    00570     using detail::PromoteType<int, signed char>::toPromote;
    00571 };
    00572
    00573 template <>
    00574 struct PromoteTraits<int, unsigned char> : public detail::PromoteType<int, unsigned char>
    00575 {
    00576     typedef detail::PromoteType<int, unsigned char>::Promote Promote;
    00577     using detail::PromoteType<int, unsigned char>::toPromote;
    00578 };
    00579
    00580 template <>
    00581 struct PromoteTraits<int, short> : public detail::PromoteType<int, short>
    00582 {
    00583     typedef detail::PromoteType<int, short>::Promote Promote;
    00584     using detail::PromoteType<int, short>::toPromote;
    00585 };
    00586
    00587 template <>
    00588 struct PromoteTraits<int, unsigned short> : public detail::PromoteType<int, unsigned short>
    00589 {
    00590     typedef detail::PromoteType<int, unsigned short>::Promote Promote;
    00591     using detail::PromoteType<int, unsigned short>::toPromote;
    00592 };
    00593
    00594 template <>
    00595 struct PromoteTraits<int, unsigned int> : public detail::PromoteType<int, unsigned int>
    00596 {
    00597     typedef detail::PromoteType<int, unsigned int>::Promote Promote;
    00598     using detail::PromoteType<int, unsigned int>::toPromote;
    00599 };
    00600
    00601 template <>
    00602 struct PromoteTraits<int, long> : public detail::PromoteType<int, long>
    00603 {
    00604     typedef detail::PromoteType<int, long>::Promote Promote;
    00605     using detail::PromoteType<int, long>::toPromote;
    00606 };
    00607
    00608 template <>
    00609 struct PromoteTraits<int, unsigned long> : public detail::PromoteType<int, unsigned long>
    00610 {
    00611     typedef detail::PromoteType<int, unsigned long>::Promote Promote;
    00612     using detail::PromoteType<int, unsigned long>::toPromote;
    00613 };
    00614
    00615 template <>
    00616 struct PromoteTraits<int, float> : public detail::PromoteType<int, float>
    00617 {
    00618     typedef detail::PromoteType<int, float>::Promote Promote;
    00619     using detail::PromoteType<int, float>::toPromote;
    00620 };
    00621
    00622 template <>
    00623 struct PromoteTraits<int, double> : public detail::PromoteType<int, double>
    00624 {
    00625     typedef detail::PromoteType<int, double>::Promote Promote;
    00626     using detail::PromoteType<int, double>::toPromote;
    00627 };
    00628
    00629 template <>
    00630 struct PromoteTraits<int, long double> : public detail::PromoteType<int, long double>
    00631 {
    00632     typedef detail::PromoteType<int, long double>::Promote Promote;
    00633     using detail::PromoteType<int, long double>::toPromote;
    00634 };
    00635
    00636 #ifdef LLONG_MAX
    00637 template <>
    00638 struct PromoteTraits<int, long long> : public detail::PromoteType<int, long long>
    00639 {
    00640     typedef detail::PromoteType<int, long long>::Promote Promote;
    00641     using detail::PromoteType<int, long long>::toPromote;
    00642 };
    00643 #endif // LLONG_MAX
    00644
    00645 #ifdef LLONG_MAX
    00646 template <>
    00647 struct PromoteTraits<int, unsigned long long> : public detail::PromoteType<int, unsigned long long>
    00648 {
    00649     typedef detail::PromoteType<int, unsigned long long>::Promote Promote;
    00650     using detail::PromoteType<int, unsigned long long>::toPromote;
    00651 };
    00652 #endif // LLONG_MAX
    00653
    00654 template <>
    00655 struct PromoteTraits<unsigned int, unsigned int> : public detail::PromoteType<unsigned int, unsigned int>
    00656 {
    00657     typedef detail::PromoteType<unsigned int, unsigned int>::Promote Promote;
    00658     using detail::PromoteType<unsigned int, unsigned int>::toPromote;
    00659 };
    00660
    00661 template <>
    00662 struct PromoteTraits<unsigned int, bool> : public detail::PromoteType<unsigned int, bool>
    00663 {
    00664     typedef detail::PromoteType<unsigned int, bool>::Promote Promote;
    00665     using detail::PromoteType<unsigned int, bool>::toPromote;
    00666 };
    00667
    00668 template <>
    00669 struct PromoteTraits<unsigned int, signed char> : public detail::PromoteType<unsigned int, signed char>
    00670 {
    00671     typedef detail::PromoteType<unsigned int, signed char>::Promote Promote;
    00672     using detail::PromoteType<unsigned int, signed char>::toPromote;
    00673 };
    00674
    00675 template <>
    00676 struct PromoteTraits<unsigned int, unsigned char> : public detail::PromoteType<unsigned int, unsigned char>
    00677 {
    00678     typedef detail::PromoteType<unsigned int, unsigned char>::Promote Promote;
    00679     using detail::PromoteType<unsigned int, unsigned char>::toPromote;
    00680 };
    00681
    00682 template <>
    00683 struct PromoteTraits<unsigned int, short> : public detail::PromoteType<unsigned int, short>
    00684 {
    00685     typedef detail::PromoteType<unsigned int, short>::Promote Promote;
    00686     using detail::PromoteType<unsigned int, short>::toPromote;
    00687 };
    00688
    00689 template <>
    00690 struct PromoteTraits<unsigned int, unsigned short> : public detail::PromoteType<unsigned int, unsigned short>
    00691 {
    00692     typedef detail::PromoteType<unsigned int, unsigned short>::Promote Promote;
    00693     using detail::PromoteType<unsigned int, unsigned short>::toPromote;
    00694 };
    00695
    00696 template <>
    00697 struct PromoteTraits<unsigned int, int> : public detail::PromoteType<unsigned int, int>
    00698 {
    00699     typedef detail::PromoteType<unsigned int, int>::Promote Promote;
    00700     using detail::PromoteType<unsigned int, int>::toPromote;
    00701 };
    00702
    00703 template <>
    00704 struct PromoteTraits<unsigned int, long> : public detail::PromoteType<unsigned int, long>
    00705 {
    00706     typedef detail::PromoteType<unsigned int, long>::Promote Promote;
    00707     using detail::PromoteType<unsigned int, long>::toPromote;
    00708 };
    00709
    00710 template <>
    00711 struct PromoteTraits<unsigned int, unsigned long> : public detail::PromoteType<unsigned int, unsigned long>
    00712 {
    00713     typedef detail::PromoteType<unsigned int, unsigned long>::Promote Promote;
    00714     using detail::PromoteType<unsigned int, unsigned long>::toPromote;
    00715 };
    00716
    00717 template <>
    00718 struct PromoteTraits<unsigned int, float> : public detail::PromoteType<unsigned int, float>
    00719 {
    00720     typedef detail::PromoteType<unsigned int, float>::Promote Promote;
    00721     using detail::PromoteType<unsigned int, float>::toPromote;
    00722 };
    00723
    00724 template <>
    00725 struct PromoteTraits<unsigned int, double> : public detail::PromoteType<unsigned int, double>
    00726 {
    00727     typedef detail::PromoteType<unsigned int, double>::Promote Promote;
    00728     using detail::PromoteType<unsigned int, double>::toPromote;
    00729 };
    00730
    00731 template <>
    00732 struct PromoteTraits<unsigned int, long double> : public detail::PromoteType<unsigned int, long double>
    00733 {
    00734     typedef detail::PromoteType<unsigned int, long double>::Promote Promote;
    00735     using detail::PromoteType<unsigned int, long double>::toPromote;
    00736 };
    00737
    00738 #ifdef LLONG_MAX
    00739 template <>
    00740 struct PromoteTraits<unsigned int, long long> : public detail::PromoteType<unsigned int, long long>
    00741 {
    00742     typedef detail::PromoteType<unsigned int, long long>::Promote Promote;
    00743     using detail::PromoteType<unsigned int, long long>::toPromote;
    00744 };
    00745 #endif // LLONG_MAX
    00746
    00747 #ifdef LLONG_MAX
    00748 template <>
    00749 struct PromoteTraits<unsigned int, unsigned long long> : public detail::PromoteType<unsigned int, unsigned long long>
    00750 {
    00751     typedef detail::PromoteType<unsigned int, unsigned long long>::Promote Promote;
    00752     using detail::PromoteType<unsigned int, unsigned long long>::toPromote;
    00753 };
    00754 #endif // LLONG_MAX
    00755
    00756 template <>
    00757 struct PromoteTraits<long, long> : public detail::PromoteType<long, long>
    00758 {
    00759     typedef detail::PromoteType<long, long>::Promote Promote;
    00760     using detail::PromoteType<long, long>::toPromote;
    00761 };
    00762
    00763 template <>
    00764 struct PromoteTraits<long, bool> : public detail::PromoteType<long, bool>
    00765 {
    00766     typedef detail::PromoteType<long, bool>::Promote Promote;
    00767     using detail::PromoteType<long, bool>::toPromote;
    00768 };
    00769
    00770 template <>
    00771 struct PromoteTraits<long, signed char> : public detail::PromoteType<long, signed char>
    00772 {
    00773     typedef detail::PromoteType<long, signed char>::Promote Promote;
    00774     using detail::PromoteType<long, signed char>::toPromote;
    00775 };
    00776
    00777 template <>
    00778 struct PromoteTraits<long, unsigned char> : public detail::PromoteType<long, unsigned char>
    00779 {
    00780     typedef detail::PromoteType<long, unsigned char>::Promote Promote;
    00781     using detail::PromoteType<long, unsigned char>::toPromote;
    00782 };
    00783
    00784 template <>
    00785 struct PromoteTraits<long, short> : public detail::PromoteType<long, short>
    00786 {
    00787     typedef detail::PromoteType<long, short>::Promote Promote;
    00788     using detail::PromoteType<long, short>::toPromote;
    00789 };
    00790
    00791 template <>
    00792 struct PromoteTraits<long, unsigned short> : public detail::PromoteType<long, unsigned short>
    00793 {
    00794     typedef detail::PromoteType<long, unsigned short>::Promote Promote;
    00795     using detail::PromoteType<long, unsigned short>::toPromote;
    00796 };
    00797
    00798 template <>
    00799 struct PromoteTraits<long, int> : public detail::PromoteType<long, int>
    00800 {
    00801     typedef detail::PromoteType<long, int>::Promote Promote;
    00802     using detail::PromoteType<long, int>::toPromote;
    00803 };
    00804
    00805 template <>
    00806 struct PromoteTraits<long, unsigned int> : public detail::PromoteType<long, unsigned int>
    00807 {
    00808     typedef detail::PromoteType<long, unsigned int>::Promote Promote;
    00809     using detail::PromoteType<long, unsigned int>::toPromote;
    00810 };
    00811
    00812 template <>
    00813 struct PromoteTraits<long, unsigned long> : public detail::PromoteType<long, unsigned long>
    00814 {
    00815     typedef detail::PromoteType<long, unsigned long>::Promote Promote;
    00816     using detail::PromoteType<long, unsigned long>::toPromote;
    00817 };
    00818
    00819 template <>
    00820 struct PromoteTraits<long, float> : public detail::PromoteType<long, float>
    00821 {
    00822     typedef detail::PromoteType<long, float>::Promote Promote;
    00823     using detail::PromoteType<long, float>::toPromote;
    00824 };
    00825
    00826 template <>
    00827 struct PromoteTraits<long, double> : public detail::PromoteType<long, double>
    00828 {
    00829     typedef detail::PromoteType<long, double>::Promote Promote;
    00830     using detail::PromoteType<long, double>::toPromote;
    00831 };
    00832
    00833 template <>
    00834 struct PromoteTraits<long, long double> : public detail::PromoteType<long, long double>
    00835 {
    00836     typedef detail::PromoteType<long, long double>::Promote Promote;
    00837     using detail::PromoteType<long, long double>::toPromote;
    00838 };
    00839
    00840 #ifdef LLONG_MAX
    00841 template <>
    00842 struct PromoteTraits<long, long long> : public detail::PromoteType<long, long long>
    00843 {
    00844     typedef detail::PromoteType<long, long long>::Promote Promote;
    00845     using detail::PromoteType<long, long long>::toPromote;
    00846 };
    00847 #endif // LLONG_MAX
    00848
    00849 #ifdef LLONG_MAX
    00850 template <>
    00851 struct PromoteTraits<long, unsigned long long> : public detail::PromoteType<long, unsigned long long>
    00852 {
    00853     typedef detail::PromoteType<long, unsigned long long>::Promote Promote;
    00854     using detail::PromoteType<long, unsigned long long>::toPromote;
    00855 };
    00856 #endif // LLONG_MAX
    00857
    00858 template <>
    00859 struct PromoteTraits<unsigned long, unsigned long> : public detail::PromoteType<unsigned long, unsigned long>
    00860 {
    00861     typedef detail::PromoteType<unsigned long, unsigned long>::Promote Promote;
    00862     using detail::PromoteType<unsigned long, unsigned long>::toPromote;
    00863 };
    00864
    00865 template <>
    00866 struct PromoteTraits<unsigned long, bool> : public detail::PromoteType<unsigned long, bool>
    00867 {
    00868     typedef detail::PromoteType<unsigned long, bool>::Promote Promote;
    00869     using detail::PromoteType<unsigned long, bool>::toPromote;
    00870 };
    00871
    00872 template <>
    00873 struct PromoteTraits<unsigned long, signed char> : public detail::PromoteType<unsigned long, signed char>
    00874 {
    00875     typedef detail::PromoteType<unsigned long, signed char>::Promote Promote;
    00876     using detail::PromoteType<unsigned long, signed char>::toPromote;
    00877 };
    00878
    00879 template <>
    00880 struct PromoteTraits<unsigned long, unsigned char> : public detail::PromoteType<unsigned long, unsigned char>
    00881 {
    00882     typedef detail::PromoteType<unsigned long, unsigned char>::Promote Promote;
    00883     using detail::PromoteType<unsigned long, unsigned char>::toPromote;
    00884 };
    00885
    00886 template <>
    00887 struct PromoteTraits<unsigned long, short> : public detail::PromoteType<unsigned long, short>
    00888 {
    00889     typedef detail::PromoteType<unsigned long, short>::Promote Promote;
    00890     using detail::PromoteType<unsigned long, short>::toPromote;
    00891 };
    00892
    00893 template <>
    00894 struct PromoteTraits<unsigned long, unsigned short> : public detail::PromoteType<unsigned long, unsigned short>
    00895 {
    00896     typedef detail::PromoteType<unsigned long, unsigned short>::Promote Promote;
    00897     using detail::PromoteType<unsigned long, unsigned short>::toPromote;
    00898 };
    00899
    00900 template <>
    00901 struct PromoteTraits<unsigned long, int> : public detail::PromoteType<unsigned long, int>
    00902 {
    00903     typedef detail::PromoteType<unsigned long, int>::Promote Promote;
    00904     using detail::PromoteType<unsigned long, int>::toPromote;
    00905 };
    00906
    00907 template <>
    00908 struct PromoteTraits<unsigned long, unsigned int> : public detail::PromoteType<unsigned long, unsigned int>
    00909 {
    00910     typedef detail::PromoteType<unsigned long, unsigned int>::Promote Promote;
    00911     using detail::PromoteType<unsigned long, unsigned int>::toPromote;
    00912 };
    00913
    00914 template <>
    00915 struct PromoteTraits<unsigned long, long> : public detail::PromoteType<unsigned long, long>
    00916 {
    00917     typedef detail::PromoteType<unsigned long, long>::Promote Promote;
    00918     using detail::PromoteType<unsigned long, long>::toPromote;
    00919 };
    00920
    00921 template <>
    00922 struct PromoteTraits<unsigned long, float> : public detail::PromoteType<unsigned long, float>
    00923 {
    00924     typedef detail::PromoteType<unsigned long, float>::Promote Promote;
    00925     using detail::PromoteType<unsigned long, float>::toPromote;
    00926 };
    00927
    00928 template <>
    00929 struct PromoteTraits<unsigned long, double> : public detail::PromoteType<unsigned long, double>
    00930 {
    00931     typedef detail::PromoteType<unsigned long, double>::Promote Promote;
    00932     using detail::PromoteType<unsigned long, double>::toPromote;
    00933 };
    00934
    00935 template <>
    00936 struct PromoteTraits<unsigned long, long double> : public detail::PromoteType<unsigned long, long double>
    00937 {
    00938     typedef detail::PromoteType<unsigned long, long double>::Promote Promote;
    00939     using detail::PromoteType<unsigned long, long double>::toPromote;
    00940 };
    00941
    00942 #ifdef LLONG_MAX
    00943 template <>
    00944 struct PromoteTraits<unsigned long, long long> : public detail::PromoteType<unsigned long, long long>
    00945 {
    00946     typedef detail::PromoteType<unsigned long, long long>::Promote Promote;
    00947     using detail::PromoteType<unsigned long, long long>::toPromote;
    00948 };
    00949 #endif // LLONG_MAX
    00950
    00951 #ifdef LLONG_MAX
    00952 template <>
    00953 struct PromoteTraits<unsigned long, unsigned long long> : public detail::PromoteType<unsigned long, unsigned long long>
    00954 {
    00955     typedef detail::PromoteType<unsigned long, unsigned long long>::Promote Promote;
    00956     using detail::PromoteType<unsigned long, unsigned long long>::toPromote;
    00957 };
    00958 #endif // LLONG_MAX
    00959
    00960 template <>
    00961 struct PromoteTraits<float, float> : public detail::PromoteType<float, float>
    00962 {
    00963     typedef detail::PromoteType<float, float>::Promote Promote;
    00964     using detail::PromoteType<float, float>::toPromote;
    00965 };
    00966
    00967 template <>
    00968 struct PromoteTraits<float, bool> : public detail::PromoteType<float, bool>
    00969 {
    00970     typedef detail::PromoteType<float, bool>::Promote Promote;
    00971     using detail::PromoteType<float, bool>::toPromote;
    00972 };
    00973
    00974 template <>
    00975 struct PromoteTraits<float, signed char> : public detail::PromoteType<float, signed char>
    00976 {
    00977     typedef detail::PromoteType<float, signed char>::Promote Promote;
    00978     using detail::PromoteType<float, signed char>::toPromote;
    00979 };
    00980
    00981 template <>
    00982 struct PromoteTraits<float, unsigned char> : public detail::PromoteType<float, unsigned char>
    00983 {
    00984     typedef detail::PromoteType<float, unsigned char>::Promote Promote;
    00985     using detail::PromoteType<float, unsigned char>::toPromote;
    00986 };
    00987
    00988 template <>
    00989 struct PromoteTraits<float, short> : public detail::PromoteType<float, short>
    00990 {
    00991     typedef detail::PromoteType<float, short>::Promote Promote;
    00992     using detail::PromoteType<float, short>::toPromote;
    00993 };
    00994
    00995 template <>
    00996 struct PromoteTraits<float, unsigned short> : public detail::PromoteType<float, unsigned short>
    00997 {
    00998     typedef detail::PromoteType<float, unsigned short>::Promote Promote;
    00999     using detail::PromoteType<float, unsigned short>::toPromote;
    01000 };
    01001
    01002 template <>
    01003 struct PromoteTraits<float, int> : public detail::PromoteType<float, int>
    01004 {
    01005     typedef detail::PromoteType<float, int>::Promote Promote;
    01006     using detail::PromoteType<float, int>::toPromote;
    01007 };
    01008
    01009 template <>
    01010 struct PromoteTraits<float, unsigned int> : public detail::PromoteType<float, unsigned int>
    01011 {
    01012     typedef detail::PromoteType<float, unsigned int>::Promote Promote;
    01013     using detail::PromoteType<float, unsigned int>::toPromote;
    01014 };
    01015
    01016 template <>
    01017 struct PromoteTraits<float, long> : public detail::PromoteType<float, long>
    01018 {
    01019     typedef detail::PromoteType<float, long>::Promote Promote;
    01020     using detail::PromoteType<float, long>::toPromote;
    01021 };
    01022
    01023 template <>
    01024 struct PromoteTraits<float, unsigned long> : public detail::PromoteType<float, unsigned long>
    01025 {
    01026     typedef detail::PromoteType<float, unsigned long>::Promote Promote;
    01027     using detail::PromoteType<float, unsigned long>::toPromote;
    01028 };
    01029
    01030 template <>
    01031 struct PromoteTraits<float, double> : public detail::PromoteType<float, double>
    01032 {
    01033     typedef detail::PromoteType<float, double>::Promote Promote;
    01034     using detail::PromoteType<float, double>::toPromote;
    01035 };
    01036
    01037 template <>
    01038 struct PromoteTraits<float, long double> : public detail::PromoteType<float, long double>
    01039 {
    01040     typedef detail::PromoteType<float, long double>::Promote Promote;
    01041     using detail::PromoteType<float, long double>::toPromote;
    01042 };
    01043
    01044 #ifdef LLONG_MAX
    01045 template <>
    01046 struct PromoteTraits<float, long long> : public detail::PromoteType<float, long long>
    01047 {
    01048     typedef detail::PromoteType<float, long long>::Promote Promote;
    01049     using detail::PromoteType<float, long long>::toPromote;
    01050 };
    01051 #endif // LLONG_MAX
    01052
    01053 #ifdef LLONG_MAX
    01054 template <>
    01055 struct PromoteTraits<float, unsigned long long> : public detail::PromoteType<float, unsigned long long>
    01056 {
    01057     typedef detail::PromoteType<float, unsigned long long>::Promote Promote;
    01058     using detail::PromoteType<float, unsigned long long>::toPromote;
    01059 };
    01060 #endif // LLONG_MAX
    01061
    01062 template <>
    01063 struct PromoteTraits<double, double> : public detail::PromoteType<double, double>
    01064 {
    01065     typedef detail::PromoteType<double, double>::Promote Promote;
    01066     using detail::PromoteType<double, double>::toPromote;
    01067 };
    01068
    01069 template <>
    01070 struct PromoteTraits<double, bool> : public detail::PromoteType<double, bool>
    01071 {
    01072     typedef detail::PromoteType<double, bool>::Promote Promote;
    01073     using detail::PromoteType<double, bool>::toPromote;
    01074 };
    01075
    01076 template <>
    01077 struct PromoteTraits<double, signed char> : public detail::PromoteType<double, signed char>
    01078 {
    01079     typedef detail::PromoteType<double, signed char>::Promote Promote;
    01080     using detail::PromoteType<double, signed char>::toPromote;
    01081 };
    01082
    01083 template <>
    01084 struct PromoteTraits<double, unsigned char> : public detail::PromoteType<double, unsigned char>
    01085 {
    01086     typedef detail::PromoteType<double, unsigned char>::Promote Promote;
    01087     using detail::PromoteType<double, unsigned char>::toPromote;
    01088 };
    01089
    01090 template <>
    01091 struct PromoteTraits<double, short> : public detail::PromoteType<double, short>
    01092 {
    01093     typedef detail::PromoteType<double, short>::Promote Promote;
    01094     using detail::PromoteType<double, short>::toPromote;
    01095 };
    01096
    01097 template <>
    01098 struct PromoteTraits<double, unsigned short> : public detail::PromoteType<double, unsigned short>
    01099 {
    01100     typedef detail::PromoteType<double, unsigned short>::Promote Promote;
    01101     using detail::PromoteType<double, unsigned short>::toPromote;
    01102 };
    01103
    01104 template <>
    01105 struct PromoteTraits<double, int> : public detail::PromoteType<double, int>
    01106 {
    01107     typedef detail::PromoteType<double, int>::Promote Promote;
    01108     using detail::PromoteType<double, int>::toPromote;
    01109 };
    01110
    01111 template <>
    01112 struct PromoteTraits<double, unsigned int> : public detail::PromoteType<double, unsigned int>
    01113 {
    01114     typedef detail::PromoteType<double, unsigned int>::Promote Promote;
    01115     using detail::PromoteType<double, unsigned int>::toPromote;
    01116 };
    01117
    01118 template <>
    01119 struct PromoteTraits<double, long> : public detail::PromoteType<double, long>
    01120 {
    01121     typedef detail::PromoteType<double, long>::Promote Promote;
    01122     using detail::PromoteType<double, long>::toPromote;
    01123 };
    01124
    01125 template <>
    01126 struct PromoteTraits<double, unsigned long> : public detail::PromoteType<double, unsigned long>
    01127 {
    01128     typedef detail::PromoteType<double, unsigned long>::Promote Promote;
    01129     using detail::PromoteType<double, unsigned long>::toPromote;
    01130 };
    01131
    01132 template <>
    01133 struct PromoteTraits<double, float> : public detail::PromoteType<double, float>
    01134 {
    01135     typedef detail::PromoteType<double, float>::Promote Promote;
    01136     using detail::PromoteType<double, float>::toPromote;
    01137 };
    01138
    01139 template <>
    01140 struct PromoteTraits<double, long double> : public detail::PromoteType<double, long double>
    01141 {
    01142     typedef detail::PromoteType<double, long double>::Promote Promote;
    01143     using detail::PromoteType<double, long double>::toPromote;
    01144 };
    01145
    01146 #ifdef LLONG_MAX
    01147 template <>
    01148 struct PromoteTraits<double, long long> : public detail::PromoteType<double, long long>
    01149 {
    01150     typedef detail::PromoteType<double, long long>::Promote Promote;
    01151     using detail::PromoteType<double, long long>::toPromote;
    01152 };
    01153 #endif // LLONG_MAX
    01154
    01155 #ifdef LLONG_MAX
    01156 template <>
    01157 struct PromoteTraits<double, unsigned long long> : public detail::PromoteType<double, unsigned long long>
    01158 {
    01159     typedef detail::PromoteType<double, unsigned long long>::Promote Promote;
    01160     using detail::PromoteType<double, unsigned long long>::toPromote;
    01161 };
    01162 #endif // LLONG_MAX
    01163
    01164 template <>
    01165 struct PromoteTraits<long double, long double> : public detail::PromoteType<long double, long double>
    01166 {
    01167     typedef detail::PromoteType<long double, long double>::Promote Promote;
    01168     using detail::PromoteType<long double, long double>::toPromote;
    01169 };
    01170
    01171 template <>
    01172 struct PromoteTraits<long double, bool> : public detail::PromoteType<long double, bool>
    01173 {
    01174     typedef detail::PromoteType<long double, bool>::Promote Promote;
    01175     using detail::PromoteType<long double, bool>::toPromote;
    01176 };
    01177
    01178 template <>
    01179 struct PromoteTraits<long double, signed char> : public detail::PromoteType<long double, signed char>
    01180 {
    01181     typedef detail::PromoteType<long double, signed char>::Promote Promote;
    01182     using detail::PromoteType<long double, signed char>::toPromote;
    01183 };
    01184
    01185 template <>
    01186 struct PromoteTraits<long double, unsigned char> : public detail::PromoteType<long double, unsigned char>
    01187 {
    01188     typedef detail::PromoteType<long double, unsigned char>::Promote Promote;
    01189     using detail::PromoteType<long double, unsigned char>::toPromote;
    01190 };
    01191
    01192 template <>
    01193 struct PromoteTraits<long double, short> : public detail::PromoteType<long double, short>
    01194 {
    01195     typedef detail::PromoteType<long double, short>::Promote Promote;
    01196     using detail::PromoteType<long double, short>::toPromote;
    01197 };
    01198
    01199 template <>
    01200 struct PromoteTraits<long double, unsigned short> : public detail::PromoteType<long double, unsigned short>
    01201 {
    01202     typedef detail::PromoteType<long double, unsigned short>::Promote Promote;
    01203     using detail::PromoteType<long double, unsigned short>::toPromote;
    01204 };
    01205
    01206 template <>
    01207 struct PromoteTraits<long double, int> : public detail::PromoteType<long double, int>
    01208 {
    01209     typedef detail::PromoteType<long double, int>::Promote Promote;
    01210     using detail::PromoteType<long double, int>::toPromote;
    01211 };
    01212
    01213 template <>
    01214 struct PromoteTraits<long double, unsigned int> : public detail::PromoteType<long double, unsigned int>
    01215 {
    01216     typedef detail::PromoteType<long double, unsigned int>::Promote Promote;
    01217     using detail::PromoteType<long double, unsigned int>::toPromote;
    01218 };
    01219
    01220 template <>
    01221 struct PromoteTraits<long double, long> : public detail::PromoteType<long double, long>
    01222 {
    01223     typedef detail::PromoteType<long double, long>::Promote Promote;
    01224     using detail::PromoteType<long double, long>::toPromote;
    01225 };
    01226
    01227 template <>
    01228 struct PromoteTraits<long double, unsigned long> : public detail::PromoteType<long double, unsigned long>
    01229 {
    01230     typedef detail::PromoteType<long double, unsigned long>::Promote Promote;
    01231     using detail::PromoteType<long double, unsigned long>::toPromote;
    01232 };
    01233
    01234 template <>
    01235 struct PromoteTraits<long double, float> : public detail::PromoteType<long double, float>
    01236 {
    01237     typedef detail::PromoteType<long double, float>::Promote Promote;
    01238     using detail::PromoteType<long double, float>::toPromote;
    01239 };
    01240
    01241 template <>
    01242 struct PromoteTraits<long double, double> : public detail::PromoteType<long double, double>
    01243 {
    01244     typedef detail::PromoteType<long double, double>::Promote Promote;
    01245     using detail::PromoteType<long double, double>::toPromote;
    01246 };
    01247
    01248 #ifdef LLONG_MAX
    01249 template <>
    01250 struct PromoteTraits<long double, long long> : public detail::PromoteType<long double, long long>
    01251 {
    01252     typedef detail::PromoteType<long double, long long>::Promote Promote;
    01253     using detail::PromoteType<long double, long long>::toPromote;
    01254 };
    01255 #endif // LLONG_MAX
    01256
    01257 #ifdef LLONG_MAX
    01258 template <>
    01259 struct PromoteTraits<long double, unsigned long long> : public detail::PromoteType<long double, unsigned long long>
    01260 {
    01261     typedef detail::PromoteType<long double, unsigned long long>::Promote Promote;
    01262     using detail::PromoteType<long double, unsigned long long>::toPromote;
    01263 };
    01264 #endif // LLONG_MAX
    01265
    01266 #ifdef LLONG_MAX
    01267 template <>
    01268 struct PromoteTraits<long long, long long> : public detail::PromoteType<long long, long long>
    01269 {
    01270     typedef detail::PromoteType<long long, long long>::Promote Promote;
    01271     using detail::PromoteType<long long, long long>::toPromote;
    01272 };
    01273 #endif // LLONG_MAX
    01274
    01275 #ifdef LLONG_MAX
    01276 template <>
    01277 struct PromoteTraits<long long, bool> : public detail::PromoteType<long long, bool>
    01278 {
    01279     typedef detail::PromoteType<long long, bool>::Promote Promote;
    01280     using detail::PromoteType<long long, bool>::toPromote;
    01281 };
    01282 #endif // LLONG_MAX
    01283
    01284 #ifdef LLONG_MAX
    01285 template <>
    01286 struct PromoteTraits<long long, signed char> : public detail::PromoteType<long long, signed char>
    01287 {
    01288     typedef detail::PromoteType<long long, signed char>::Promote Promote;
    01289     using detail::PromoteType<long long, signed char>::toPromote;
    01290 };
    01291 #endif // LLONG_MAX
    01292
    01293 #ifdef LLONG_MAX
    01294 template <>
    01295 struct PromoteTraits<long long, unsigned char> : public detail::PromoteType<long long, unsigned char>
    01296 {
    01297     typedef detail::PromoteType<long long, unsigned char>::Promote Promote;
    01298     using detail::PromoteType<long long, unsigned char>::toPromote;
    01299 };
    01300 #endif // LLONG_MAX
    01301
    01302 #ifdef LLONG_MAX
    01303 template <>
    01304 struct PromoteTraits<long long, short> : public detail::PromoteType<long long, short>
    01305 {
    01306     typedef detail::PromoteType<long long, short>::Promote Promote;
    01307     using detail::PromoteType<long long, short>::toPromote;
    01308 };
    01309 #endif // LLONG_MAX
    01310
    01311 #ifdef LLONG_MAX
    01312 template <>
    01313 struct PromoteTraits<long long, unsigned short> : public detail::PromoteType<long long, unsigned short>
    01314 {
    01315     typedef detail::PromoteType<long long, unsigned short>::Promote Promote;
    01316     using detail::PromoteType<long long, unsigned short>::toPromote;
    01317 };
    01318 #endif // LLONG_MAX
    01319
    01320 #ifdef LLONG_MAX
    01321 template <>
    01322 struct PromoteTraits<long long, int> : public detail::PromoteType<long long, int>
    01323 {
    01324     typedef detail::PromoteType<long long, int>::Promote Promote;
    01325     using detail::PromoteType<long long, int>::toPromote;
    01326 };
    01327 #endif // LLONG_MAX
    01328
    01329 #ifdef LLONG_MAX
    01330 template <>
    01331 struct PromoteTraits<long long, unsigned int> : public detail::PromoteType<long long, unsigned int>
    01332 {
    01333     typedef detail::PromoteType<long long, unsigned int>::Promote Promote;
    01334     using detail::PromoteType<long long, unsigned int>::toPromote;
    01335 };
    01336 #endif // LLONG_MAX
    01337
    01338 #ifdef LLONG_MAX
    01339 template <>
    01340 struct PromoteTraits<long long, long> : public detail::PromoteType<long long, long>
    01341 {
    01342     typedef detail::PromoteType<long long, long>::Promote Promote;
    01343     using detail::PromoteType<long long, long>::toPromote;
    01344 };
    01345 #endif // LLONG_MAX
    01346
    01347 #ifdef LLONG_MAX
    01348 template <>
    01349 struct PromoteTraits<long long, unsigned long> : public detail::PromoteType<long long, unsigned long>
    01350 {
    01351     typedef detail::PromoteType<long long, unsigned long>::Promote Promote;
    01352     using detail::PromoteType<long long, unsigned long>::toPromote;
    01353 };
    01354 #endif // LLONG_MAX
    01355
    01356 #ifdef LLONG_MAX
    01357 template <>
    01358 struct PromoteTraits<long long, float> : public detail::PromoteType<long long, float>
    01359 {
    01360     typedef detail::PromoteType<long long, float>::Promote Promote;
    01361     using detail::PromoteType<long long, float>::toPromote;
    01362 };
    01363 #endif // LLONG_MAX
    01364
    01365 #ifdef LLONG_MAX
    01366 template <>
    01367 struct PromoteTraits<long long, double> : public detail::PromoteType<long long, double>
    01368 {
    01369     typedef detail::PromoteType<long long, double>::Promote Promote;
    01370     using detail::PromoteType<long long, double>::toPromote;
    01371 };
    01372 #endif // LLONG_MAX
    01373
    01374 #ifdef LLONG_MAX
    01375 template <>
    01376 struct PromoteTraits<long long, long double> : public detail::PromoteType<long long, long double>
    01377 {
    01378     typedef detail::PromoteType<long long, long double>::Promote Promote;
    01379     using detail::PromoteType<long long, long double>::toPromote;
    01380 };
    01381 #endif // LLONG_MAX
    01382
    01383 #ifdef LLONG_MAX
    01384 template <>
    01385 struct PromoteTraits<long long, unsigned long long> : public detail::PromoteType<long long, unsigned long long>
    01386 {
    01387     typedef detail::PromoteType<long long, unsigned long long>::Promote Promote;
    01388     using detail::PromoteType<long long, unsigned long long>::toPromote;
    01389 };
    01390 #endif // LLONG_MAX
    01391
    01392 #ifdef LLONG_MAX
    01393 template <>
    01394 struct PromoteTraits<unsigned long long, unsigned long long> : public detail::PromoteType<unsigned long long, unsigned long long>
    01395 {
    01396     typedef detail::PromoteType<unsigned long long, unsigned long long>::Promote Promote;
    01397     using detail::PromoteType<unsigned long long, unsigned long long>::toPromote;
    01398 };
    01399 #endif // LLONG_MAX
    01400
    01401 #ifdef LLONG_MAX
    01402 template <>
    01403 struct PromoteTraits<unsigned long long, bool> : public detail::PromoteType<unsigned long long, bool>
    01404 {
    01405     typedef detail::PromoteType<unsigned long long, bool>::Promote Promote;
    01406     using detail::PromoteType<unsigned long long, bool>::toPromote;
    01407 };
    01408 #endif // LLONG_MAX
    01409
    01410 #ifdef LLONG_MAX
    01411 template <>
    01412 struct PromoteTraits<unsigned long long, signed char> : public detail::PromoteType<unsigned long long, signed char>
    01413 {
    01414     typedef detail::PromoteType<unsigned long long, signed char>::Promote Promote;
    01415     using detail::PromoteType<unsigned long long, signed char>::toPromote;
    01416 };
    01417 #endif // LLONG_MAX
    01418
    01419 #ifdef LLONG_MAX
    01420 template <>
    01421 struct PromoteTraits<unsigned long long, unsigned char> : public detail::PromoteType<unsigned long long, unsigned char>
    01422 {
    01423     typedef detail::PromoteType<unsigned long long, unsigned char>::Promote Promote;
    01424     using detail::PromoteType<unsigned long long, unsigned char>::toPromote;
    01425 };
    01426 #endif // LLONG_MAX
    01427
    01428 #ifdef LLONG_MAX
    01429 template <>
    01430 struct PromoteTraits<unsigned long long, short> : public detail::PromoteType<unsigned long long, short>
    01431 {
    01432     typedef detail::PromoteType<unsigned long long, short>::Promote Promote;
    01433     using detail::PromoteType<unsigned long long, short>::toPromote;
    01434 };
    01435 #endif // LLONG_MAX
    01436
    01437 #ifdef LLONG_MAX
    01438 template <>
    01439 struct PromoteTraits<unsigned long long, unsigned short> : public detail::PromoteType<unsigned long long, unsigned short>
    01440 {
    01441     typedef detail::PromoteType<unsigned long long, unsigned short>::Promote Promote;
    01442     using detail::PromoteType<unsigned long long, unsigned short>::toPromote;
    01443 };
    01444 #endif // LLONG_MAX
    01445
    01446 #ifdef LLONG_MAX
    01447 template <>
    01448 struct PromoteTraits<unsigned long long, int> : public detail::PromoteType<unsigned long long, int>
    01449 {
    01450     typedef detail::PromoteType<unsigned long long, int>::Promote Promote;
    01451     using detail::PromoteType<unsigned long long, int>::toPromote;
    01452 };
    01453 #endif // LLONG_MAX
    01454
    01455 #ifdef LLONG_MAX
    01456 template <>
    01457 struct PromoteTraits<unsigned long long, unsigned int> : public detail::PromoteType<unsigned long long, unsigned int>
    01458 {
    01459     typedef detail::PromoteType<unsigned long long, unsigned int>::Promote Promote;
    01460     using detail::PromoteType<unsigned long long, unsigned int>::toPromote;
    01461 };
    01462 #endif // LLONG_MAX
    01463
    01464 #ifdef LLONG_MAX
    01465 template <>
    01466 struct PromoteTraits<unsigned long long, long> : public detail::PromoteType<unsigned long long, long>
    01467 {
    01468     typedef detail::PromoteType<unsigned long long, long>::Promote Promote;
    01469     using detail::PromoteType<unsigned long long, long>::toPromote;
    01470 };
    01471 #endif // LLONG_MAX
    01472
    01473 #ifdef LLONG_MAX
    01474 template <>
    01475 struct PromoteTraits<unsigned long long, unsigned long> : public detail::PromoteType<unsigned long long, unsigned long>
    01476 {
    01477     typedef detail::PromoteType<unsigned long long, unsigned long>::Promote Promote;
    01478     using detail::PromoteType<unsigned long long, unsigned long>::toPromote;
    01479 };
    01480 #endif // LLONG_MAX
    01481
    01482 #ifdef LLONG_MAX
    01483 template <>
    01484 struct PromoteTraits<unsigned long long, float> : public detail::PromoteType<unsigned long long, float>
    01485 {
    01486     typedef detail::PromoteType<unsigned long long, float>::Promote Promote;
    01487     using detail::PromoteType<unsigned long long, float>::toPromote;
    01488 };
    01489 #endif // LLONG_MAX
    01490
    01491 #ifdef LLONG_MAX
    01492 template <>
    01493 struct PromoteTraits<unsigned long long, double> : public detail::PromoteType<unsigned long long, double>
    01494 {
    01495     typedef detail::PromoteType<unsigned long long, double>::Promote Promote;
    01496     using detail::PromoteType<unsigned long long, double>::toPromote;
    01497 };
    01498 #endif // LLONG_MAX
    01499
    01500 #ifdef LLONG_MAX
    01501 template <>
    01502 struct PromoteTraits<unsigned long long, long double> : public detail::PromoteType<unsigned long long, long double>
    01503 {
    01504     typedef detail::PromoteType<unsigned long long, long double>::Promote Promote;
    01505     using detail::PromoteType<unsigned long long, long double>::toPromote;
    01506 };
    01507 #endif // LLONG_MAX
    01508
    01509 #ifdef LLONG_MAX
    01510 template <>
    01511 struct PromoteTraits<unsigned long long, long long> : public detail::PromoteType<unsigned long long, long long>
    01512 {
    01513     typedef detail::PromoteType<unsigned long long, long long>::Promote Promote;
    01514     using detail::PromoteType<unsigned long long, long long>::toPromote;
    01515 };
    01516 #endif // LLONG_MAX
    01517
    01518
    01519
    01520 #endif // VIGRA_PROMOTETRAITS_HXX

© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de) Heidelberg Collaboratory for Image Processing, University of Heidelberg, Germany | html generated using doxygen and Python vigra 1.7.1 (3 Dec 2010)