VIGRA - VIGRA: vigra/promote_traits.hxx Source File

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