00001 #ifndef ARITHM_TRAITS_H 00002 #define ARITHM_TRAITS_H 00003 00004 #include <synaps/init.h> 00005 #include <synaps/base/type.h> 00006 #include <synaps/arithm/let.h> 00007 #include <complex> 00008 __BEGIN_NAMESPACE_SYNAPS 00009 00010 #define simple_trait(name,default)\ 00011 template< typename X > struct name##_ { typedef default T; };\ 00012 template< typename X > struct name { typedef typename name##_< typename type::ucstref<X>::T >::T T; };\ 00013 00014 namespace arithm { using namespace type; }; 00015 using namespace arithm; 00016 00017 00018 __END_NAMESPACE_SYNAPS 00019 00020 #include "traits/structureof.h" 00021 #include "traits/kernelof.h" 00022 #include "traits/issubsetof.h" 00023 #include "traits/sup.h" 00024 #include "traits/ringof.h" 00025 #include "traits/fieldof.h" 00026 00027 #include "traits/isring.h" 00028 #include "traits/isfield.h" 00029 #include "traits/isexact.h" 00030 00031 #include "traits/isinteger.h" 00032 #include "traits/isrational.h" 00033 #include "traits/isfloating.h" 00034 #include "traits/isieee.h" 00035 00036 #include "traits/integerof.h" 00037 #include "traits/rationalof.h" 00038 #include "traits/floatingof.h" 00039 #include "traits/ieeeof.h" 00040 #include "traits/realof.h" 00041 00042 #include "traits/hasfunction.h" 00043 #include "traits/hasproperty.h" 00044 00045 00046 00047 00048 00049 #endif 00050