00001
00002
00003 #ifndef AITOOLS_BIGHASHMAP_TEST_GENERATOR_HPP
00004 #define AITOOLS_BIGHASHMAP_TEST_GENERATOR_HPP
00005
00006 #include "util/conversion.hpp"
00007 #include "value/pair.hpp"
00008 #include "value/triple.hpp"
00009 #include "value/quadruple.hpp"
00010
00011 namespace aitools {
00012
00013 template <typename T>
00014 struct generator
00015 {
00016 typedef T value_type;
00017
00018 static void
00019 randomized(value_type& value)
00020 {
00021 value = std::rand();
00022 }
00023
00024 static void
00025 numbered(value_type& value, size_t number)
00026 {
00027 value = number;
00028 }
00029 };
00030
00031 template <typename T1, typename T2>
00032 struct generator<value::pair<T1, T2> >
00033 {
00034 typedef value::pair<T1, T2> value_type;
00035
00036 static void
00037 randomized(value_type& value)
00038 {
00039 generator<T1>::randomized(value.e1());
00040 generator<T2>::randomized(value.e2());
00041 }
00042
00043 static void
00044 numbered(value_type& value, size_t number)
00045 {
00046 generator<T1>::numbered(value.e1(), number);
00047 generator<T2>::numbered(value.e2(), number);
00048 }
00049 };
00050
00051 template <typename T1, typename T2, typename T3>
00052 struct generator<value::triple<T1, T2, T3> >
00053 {
00054 typedef value::triple<T1, T2, T3> value_type;
00055
00056 static void
00057 randomized(value_type& value)
00058 {
00059 generator<T1>::randomized(value.e1());
00060 generator<T2>::randomized(value.e2());
00061 generator<T3>::randomized(value.e3());
00062 }
00063
00064 static void
00065 numbered(value_type& value, size_t number)
00066 {
00067 generator<T1>::numbered(value.e1(), number);
00068 generator<T2>::numbered(value.e2(), number);
00069 generator<T3>::numbered(value.e3(), number);
00070 }
00071 };
00072
00073 template <typename T1, typename T2, typename T3, typename T4>
00074 struct generator<value::quadruple<T1, T2, T3, T4> >
00075 {
00076 typedef value::quadruple<T1, T2, T3, T4> value_type;
00077
00078 static void
00079 randomized(value_type& value)
00080 {
00081 generator<T1>::randomized(value.e1());
00082 generator<T2>::randomized(value.e2());
00083 generator<T3>::randomized(value.e3());
00084 generator<T4>::randomized(value.e4());
00085 }
00086
00087 static void
00088 numbered(value_type& value, size_t number)
00089 {
00090 generator<T1>::numbered(value.e1(), number);
00091 generator<T2>::numbered(value.e2(), number);
00092 generator<T3>::numbered(value.e3(), number);
00093 generator<T4>::numbered(value.e4(), number);
00094 }
00095 };
00096
00097 }
00098
00099 #endif // AITOOLS_BIGHASHMAP_TEST_GENERATOR_HPP