chunkedseq
container library for large in-memory data sets
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
cachedmeasure.hpp
Go to the documentation of this file.
1 
13 #include "algebra.hpp"
14 
15 #ifndef _PASL_DATA_CACHEDMEASURE_H_
16 #define _PASL_DATA_CACHEDMEASURE_H_
17 
18 namespace pasl {
19 namespace data {
20 namespace cachedmeasure {
21 
22 /***********************************************************************/
23 
24 /*---------------------------------------------------------------------*/
26 template <class Item, class Size>
27 class trivial {
28 public:
29 
30  using size_type = Size;
31  using value_type = Item;
35 
36  static void swap(measured_type& x, measured_type& y) {
37  // nothing to do
38  }
39 
40 };
42 
43 /*---------------------------------------------------------------------*/
45 template <class Item, class Size>
46 class size {
47 public:
48 
49  using size_type = Size;
50  using value_type = Item;
54 
55  static void swap(measured_type& x, measured_type& y) {
56  std::swap(x, y);
57  }
58 
59 };
61 
62 /*---------------------------------------------------------------------*/
64 template <class Item, class Weight, class Size, class Measure_environment>
65 class weight {
66 public:
67 
68  using size_type = Size;
69  using value_type = Item;
71  using measured_type = typename algebra_type::value_type; // = Weight
72  using measure_env_type = Measure_environment;
74 
75  static void swap(measured_type& x, measured_type& y) {
76  std::swap(x, y);
77  }
78 
79 };
81 
82 /*---------------------------------------------------------------------*/
84 template <class Cache1, class Cache2>
85 class combiner {
86 public:
87 
88  using algebra1_type = typename Cache1::algebra_type;
89  using algebra2_type = typename Cache2::algebra_type;
90  using measure1_type = typename Cache1::measure_type;
91  using measure2_type = typename Cache2::measure_type;
92 
93  using size_type = typename Cache1::size_type;
94  using value_type = typename Cache1::value_type;
98 
99  static void swap(measured_type& x, measured_type& y) {
100  Cache1::swap(x.value1, y.value1);
101  Cache2::swap(x.value2, y.value2);
102  }
103 
104 };
106 
107 /***********************************************************************/
108 
109 } // end namespace
110 } // end namespace
111 } // end namespace
112 
113 #endif
typename algebra_type::value_type measured_type
typename algebra_type::value_type measured_type
typename Cache1::algebra_type algebra1_type
static void swap(measured_type &x, measured_type &y)
typename Cache2::algebra_type algebra2_type
typename algebra_type::value_type measured_type
Measure_environment measure_env_type
Definition: algebra.hpp:18
static void swap(measured_type &x, measured_type &y)
[int_group_under_addition_and_negation]
Definition: algebra.hpp:105
measure::measured_pair< value1_type, value2_type > value_type
Definition: algebra.hpp:114
static void swap(measured_type &x, measured_type &y)
typename Cache1::size_type size_type
typename Cache1::measure_type measure1_type
typename algebra_type::value_type measured_type
typename Cache1::value_type value_type
static void swap(measured_type &x, measured_type &y)
typename Cache2::measure_type measure2_type
bytes_8 Item
Definition: do_fifo.cpp:107
Definitions of a few algebras.