00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00027
00028
00029 #ifndef _ARAGELI_intcount_barvinok_hpp_
00030 #define _ARAGELI_intcount_barvinok_hpp_
00031
00032 #include "config.hpp"
00033
00034 #include "_utility.hpp"
00035
00036
00037 namespace Arageli
00038 {
00039
00040
00041 namespace ctrl
00042 {
00043
00044 class intcount_barvinok_idler {};
00045
00046 }
00047
00048
00050 template <typename A, typename T, typename Ctrler>
00051 void intcount_barvinok (const A& a, T& res, Ctrler ctrler);
00052
00053
00055 template <typename A, typename T>
00056 inline void intcount_barvinok (const A& a, T& res)
00057 { intcount_barvinok(a, res, ctrl::intcount_barvinok_idler()); }
00058
00059
00061 template <typename A>
00062 inline typename A::element_type intcount_barvinok (const A& a)
00063 {
00064 typename A::element_type res;
00065 intcount_barvinok(a, res, ctrl::intcount_barvinok_idler());
00066 return res;
00067 }
00068
00069
00070 }
00071
00072
00073 #ifdef ARAGELI_INCLUDE_CPP_WITH_EXPORT_TEMPLATE
00074 #define ARAGELI_INCLUDE_CPP_WITH_EXPORT_TEMPLATE_INTCOUNT_BARVINOK
00075 #include "intcount_barvinok.cpp"
00076 #undef ARAGELI_INCLUDE_CPP_WITH_EXPORT_TEMPLATE_INTCOUNT_BARVINOK
00077 #endif
00078
00079 #endif