cmp.hpp

Go to the documentation of this file.
00001 /*****************************************************************************
00002     
00003     cmp.hpp -- Comparisions.
00004 
00005     Этот файл является частью библиотеки Arageli.
00006 
00007     Copyright (C) Nikolai Yu. Zolotykh, 1999--2006
00008     Copyright (C) Sergey S. Lyalin, 2005
00009     University of Nizhni Novgorod, Russia
00010 
00011 *****************************************************************************/
00012 
00013 #ifndef _ARAGELI_cmp_hpp_
00014 #define _ARAGELI_cmp_hpp_
00015 
00016 #include "config.hpp"
00017 #include "exception.hpp"
00018 #include "factory.hpp"
00019 
00020 #include "std_import.hpp"
00021 
00022 
00023 namespace Arageli
00024 {
00025 
00026 
00028 
00034 template <typename T1, typename T2>
00035 inline int cmp (const T1& a, const T2& b)
00036 {
00037     if(a < b)return -1;
00038     else if(a > b)return +1;
00039     else
00040     {
00041         ARAGELI_ASSERT_0(a == b);
00042         return 0;
00043     }
00044 }
00045 
00046 
00048 
00049 template <typename T>
00050 inline int sign (const T& x)
00051 { return cmp(x, null(x)); }
00052 
00053 
00055 template <typename T>
00056 inline bool is_even (const T& x)
00057 { return is_null(x & unit(x)); }
00058 
00059 
00061 template <typename T>
00062 inline bool is_odd (const T& x)
00063 { return !is_null(x & unit(x)); }
00064 
00065 
00067 template <typename T1, typename T2>
00068 inline bool is_divisible (const T1& a, const T2& b)
00069 { return is_null(a%b); }
00070 
00071 
00073 template <typename T>
00074 inline bool is_positive (const T& x)
00075 { return x > null(x); }
00076 
00078 template <typename T>
00079 inline bool is_negative (const T& x)
00080 { return x < null(x); }
00081 
00082 
00084 template <typename T>
00085 inline bool is_integer (const T& x)
00086 { return is_null(frac(x)); }
00087 
00088 
00089 } // namespace Arageli
00090 
00091 
00092 //#ifdef ARAGELI_INCLUDE_CPP_WITH_EXPORT_TEMPLATE
00093 //  #define ARAGELI_INCLUDE_CPP_WITH_EXPORT_TEMPLATE_CMP
00094 //  #include "cmp.cpp"
00095 //  #undef  ARAGELI_INCLUDE_CPP_WITH_EXPORT_TEMPLATE_CMP
00096 //#endif
00097 
00098 
00099 #endif  //  #ifndef _ARAGELI_cmp_hpp_

Generated on Thu Aug 31 17:38:05 2006 for Arageli by  doxygen 1.4.7