Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef VIENNADATA_CONFIG_STORAGE_HPP
00014 #define VIENNADATA_CONFIG_STORAGE_HPP
00015
00016 #include "viennadata/forwards.h"
00017
00023 namespace viennadata
00024 {
00025 namespace config
00026 {
00045 template <typename KeyType,
00046 typename DataType,
00047 typename ObjectType>
00048 struct storage
00049 {
00050 typedef sparse_data_tag tag;
00051 };
00052
00053 }
00054
00055 }
00056
00057
00059
00061 #define VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_KEY_DATA_OBJECT(arg_KEYCLASS, arg_DATACLASS, arg_OBJECTCLASS) \
00062 namespace viennadata { namespace config { \
00063 template <> struct storage<arg_KEYCLASS, arg_DATACLASS, arg_OBJECTCLASS> { typedef dense_data_tag tag; }; \
00064 } }
00065
00070 #define VIENNADATA_DISABLE_DENSE_DATA_STORAGE_FOR_KEY_DATA_OBJECT(arg_KEYCLASS, arg_DATACLASS, arg_OBJECTCLASS) \
00071 namespace viennadata { namespace config { \
00072 template <> struct storage<arg_KEYCLASS, arg_DATACLASS, arg_OBJECTCLASS> { typedef sparse_data_tag tag; }; \
00073 } }
00074
00076
00077
00078
00080 #define VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_KEY_DATA(arg_KEYCLASS, arg_DATACLASS) \
00081 namespace viennadata { namespace config { \
00082 template <typename ObjectType> struct storage<arg_KEYCLASS, arg_DATACLASS, ObjectType> { typedef dense_data_tag tag; }; \
00083 } }
00084
00089 #define VIENNADATA_DISABLE_DENSE_DATA_STORAGE_FOR_KEY_DATA(arg_KEYCLASS, arg_DATACLASS) \
00090 namespace viennadata { namespace config { \
00091 template <typename ObjectType> struct storage<arg_KEYCLASS, arg_DATACLASS, ObjectType> { typedef sparse_data_tag tag; }; \
00092 } }
00093
00094
00095
00096
00097
00099 #define VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_KEY_OBJECT(arg_KEYCLASS, arg_OBJECTCLASS) \
00100 namespace viennadata { namespace config { \
00101 template <typename DataType> struct storage<arg_KEYCLASS, DataType, arg_OBJECTCLASS> { typedef dense_data_tag tag; }; \
00102 } }
00103
00108 #define VIENNADATA_DISABLE_DENSE_DATA_STORAGE_FOR_KEY_OBJECT(arg_KEYCLASS, arg_OBJECTCLASS) \
00109 namespace viennadata { namespace config { \
00110 template <typename DataType> struct storage<arg_KEYCLASS, DataType, arg_OBJECTCLASS> { typedef sparse_data_tag tag; }; \
00111 } }
00112
00113
00114
00115
00117 #define VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_DATA_OBJECT(arg_DATACLASS, arg_OBJECTCLASS) \
00118 namespace viennadata { namespace config { \
00119 template <typename KeyType> struct storage<KeyType, arg_DATACLASS, arg_OBJECTCLASS> { typedef dense_data_tag tag; }; \
00120 } }
00121
00126 #define VIENNADATA_DISABLE_DENSE_DATA_STORAGE_FOR_DATA_OBJECT(arg_DATACLASS, arg_OBJECTCLASS) \
00127 namespace viennadata { namespace config { \
00128 template <typename KeyType> struct storage<KeyType, arg_DATACLASS, arg_OBJECTCLASS> { typedef sparse_data_tag tag; }; \
00129 } }
00130
00131
00133
00135 #define VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_KEY(arg_KEYCLASS) \
00136 namespace viennadata { namespace config { \
00137 template <typename DataType, typename ObjectType> \
00138 struct storage<arg_KEYCLASS, DataType, ObjectType> { typedef dense_data_tag tag; }; \
00139 } }
00140
00142 #define VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_DATA(arg_DATACLASS) \
00143 namespace viennadata { namespace config { \
00144 template <typename KeyType, typename ObjectType> \
00145 struct storage<KeyType, arg_DATACLASS, ObjectType> { typedef dense_data_tag tag; }; \
00146 } }
00147
00149 #define VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_OBJECT(arg_OBJECTCLASS) \
00150 namespace viennadata { namespace config { \
00151 template <typename KeyType, typename DataType> \
00152 struct storage<KeyType, DataType, arg_OBJECTCLASS> { typedef dense_data_tag tag; }; \
00153 } }
00154
00155
00156
00157 #endif
00158