00001
00002
00003 #include <utility>
00004 #include <vector>
00005 #include <charm++.h>
00006 #include <boost/multi_array.hpp>
00007
00008 namespace MSA
00009 {
00010 typedef unsigned short Dimension;
00011 typedef CmiUInt8 cache_id;
00012 using std::pair;
00013 using std::vector;
00014
00015 template <class T>
00016 class cache_line
00017 {
00018
00019 };
00020
00021 template <class T>
00022 class modifiable_cache_line
00023 {
00024
00025
00026 };
00027
00028 template <class T>
00029 class write_cache_line
00030 {
00031
00032 };
00033
00034 template <class T>
00035 class accum_cache_line
00036 {
00037
00038 };
00039
00040
00041
00042 template <class T, Dimension D>
00043 cache_id make_msa(const ExtentList& array_size,
00044 const ExtentList& section_size,
00045 const ExtentList& line_size,
00046 const storage_order_type& storage_layout,
00047 const T& default_value)
00048 {
00049
00050
00051
00052 }
00053
00054 template <class T, Dimension D>
00055 class handle
00056 {
00057
00058 section_map §ions;
00059
00060 element_layout &layout;
00061
00062 vector<cache_line<T>*> lines;
00063
00064 bool valid;
00065 };
00066
00067 template <class T, Dimension D>
00068 class read : public handle<T, D>
00069 {
00070 public:
00071
00072
00073 private:
00074
00075 };
00076
00077 template <class T, Dimension D>
00078 class write : public handle<T, D>
00079 {
00080 public:
00081
00082
00083 private:
00084
00085 };
00086
00087 template <class T, Dimension D>
00088 class accum : public handle<T, D>
00089 {
00090 public:
00091
00092
00093 private:
00094
00095
00096 };
00097
00098 template <class T, Dimension D>
00099 class owner : public handle<T, D>
00100 {
00101 public:
00102
00103
00104 private:
00105
00106
00107 };
00108
00109
00110 }
00111
00112