This file sets the default storage scheme to sparse. Switching to a dense storage scheme should be done individually by the library user in his own files. More...
#include "viennadata/forwards.h"
Go to the source code of this file.
Data Structures | |
struct | storage< KeyType, DataType, ObjectType > |
A traits class that specifies whether data should be stored in a dense (i.e. vector) or a sparse (i.e. map) manner. More... | |
Namespaces | |
namespace | viennadata |
namespace | viennadata::config |
Defines | |
#define | VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_KEY_DATA_OBJECT(arg_KEYCLASS, arg_DATACLASS, arg_OBJECTCLASS) |
A convenience macro for dense data storage for a particular tuple of key type, data type and object type. | |
#define | VIENNADATA_DISABLE_DENSE_DATA_STORAGE_FOR_KEY_DATA_OBJECT(arg_KEYCLASS, arg_DATACLASS, arg_OBJECTCLASS) |
A convenience macro for sparse data storage for a particular tuple of key type, data type and object type. | |
#define | VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_KEY_DATA(arg_KEYCLASS, arg_DATACLASS) |
A convenience macro for dense data storage for a particular tuple of key type and data type. | |
#define | VIENNADATA_DISABLE_DENSE_DATA_STORAGE_FOR_KEY_DATA(arg_KEYCLASS, arg_DATACLASS) |
A convenience macro for sparse data storage for a particular pair of key type and data type. | |
#define | VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_KEY_OBJECT(arg_KEYCLASS, arg_OBJECTCLASS) |
A convenience macro for dense data storage for a particular tuple of key type and object type. | |
#define | VIENNADATA_DISABLE_DENSE_DATA_STORAGE_FOR_KEY_OBJECT(arg_KEYCLASS, arg_OBJECTCLASS) |
A convenience macro for sparse data storage for a particular pair of key type and object type. | |
#define | VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_DATA_OBJECT(arg_DATACLASS, arg_OBJECTCLASS) |
A convenience macro for dense data storage for a particular tuple of data type and object type. | |
#define | VIENNADATA_DISABLE_DENSE_DATA_STORAGE_FOR_DATA_OBJECT(arg_DATACLASS, arg_OBJECTCLASS) |
A convenience macro for sparse data storage for a particular pair of data type and object type. | |
#define | VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_KEY(arg_KEYCLASS) |
A convenience macro for dense data storage for a certain key type. | |
#define | VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_DATA(arg_DATACLASS) |
A convenience macro for dense data storage for a certain data type. | |
#define | VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_OBJECT(arg_OBJECTCLASS) |
A convenience macro for dense data storage for a certain object type. |
This file sets the default storage scheme to sparse. Switching to a dense storage scheme should be done individually by the library user in his own files.
#define VIENNADATA_DISABLE_DENSE_DATA_STORAGE_FOR_DATA_OBJECT | ( | arg_DATACLASS, | ||
arg_OBJECTCLASS | ||||
) |
namespace viennadata { namespace config { \ template <typename KeyType> struct storage<KeyType, arg_DATACLASS, arg_OBJECTCLASS> { typedef sparse_data_tag tag; }; \ } }
A convenience macro for sparse data storage for a particular pair of data type and object type.
Makes sense only if the dense data storage is enabled for a large class of (key, data, object)-type tuples.
#define VIENNADATA_DISABLE_DENSE_DATA_STORAGE_FOR_KEY_DATA | ( | arg_KEYCLASS, | ||
arg_DATACLASS | ||||
) |
namespace viennadata { namespace config { \ template <typename ObjectType> struct storage<arg_KEYCLASS, arg_DATACLASS, ObjectType> { typedef sparse_data_tag tag; }; \ } }
A convenience macro for sparse data storage for a particular pair of key type and data type.
Makes sense only if the dense data storage is enabled for a large class of (key, data, object)-type tuples.
#define VIENNADATA_DISABLE_DENSE_DATA_STORAGE_FOR_KEY_DATA_OBJECT | ( | arg_KEYCLASS, | ||
arg_DATACLASS, | ||||
arg_OBJECTCLASS | ||||
) |
namespace viennadata { namespace config { \ template <> struct storage<arg_KEYCLASS, arg_DATACLASS, arg_OBJECTCLASS> { typedef sparse_data_tag tag; }; \ } }
A convenience macro for sparse data storage for a particular tuple of key type, data type and object type.
Makes sense only if the dense data storage is enabled for a large class of (key, data, object)-type tuples.
#define VIENNADATA_DISABLE_DENSE_DATA_STORAGE_FOR_KEY_OBJECT | ( | arg_KEYCLASS, | ||
arg_OBJECTCLASS | ||||
) |
namespace viennadata { namespace config { \ template <typename DataType> struct storage<arg_KEYCLASS, DataType, arg_OBJECTCLASS> { typedef sparse_data_tag tag; }; \ } }
A convenience macro for sparse data storage for a particular pair of key type and object type.
Makes sense only if the dense data storage is enabled for a large class of (key, data, object)-type tuples.
#define VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_DATA | ( | arg_DATACLASS | ) |
namespace viennadata { namespace config { \ template <typename KeyType, typename ObjectType> \ struct storage<KeyType, arg_DATACLASS, ObjectType> { typedef dense_data_tag tag; }; \ } }
A convenience macro for dense data storage for a certain data type.
#define VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_DATA_OBJECT | ( | arg_DATACLASS, | ||
arg_OBJECTCLASS | ||||
) |
namespace viennadata { namespace config { \ template <typename KeyType> struct storage<KeyType, arg_DATACLASS, arg_OBJECTCLASS> { typedef dense_data_tag tag; }; \ } }
A convenience macro for dense data storage for a particular tuple of data type and object type.
#define VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_KEY | ( | arg_KEYCLASS | ) |
namespace viennadata { namespace config { \ template <typename DataType, typename ObjectType> \ struct storage<arg_KEYCLASS, DataType, ObjectType> { typedef dense_data_tag tag; }; \ } }
A convenience macro for dense data storage for a certain key type.
#define VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_KEY_DATA | ( | arg_KEYCLASS, | ||
arg_DATACLASS | ||||
) |
namespace viennadata { namespace config { \ template <typename ObjectType> struct storage<arg_KEYCLASS, arg_DATACLASS, ObjectType> { typedef dense_data_tag tag; }; \ } }
A convenience macro for dense data storage for a particular tuple of key type and data type.
#define VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_KEY_DATA_OBJECT | ( | arg_KEYCLASS, | ||
arg_DATACLASS, | ||||
arg_OBJECTCLASS | ||||
) |
namespace viennadata { namespace config { \ template <> struct storage<arg_KEYCLASS, arg_DATACLASS, arg_OBJECTCLASS> { typedef dense_data_tag tag; }; \ } }
A convenience macro for dense data storage for a particular tuple of key type, data type and object type.
#define VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_KEY_OBJECT | ( | arg_KEYCLASS, | ||
arg_OBJECTCLASS | ||||
) |
namespace viennadata { namespace config { \ template <typename DataType> struct storage<arg_KEYCLASS, DataType, arg_OBJECTCLASS> { typedef dense_data_tag tag; }; \ } }
A convenience macro for dense data storage for a particular tuple of key type and object type.
#define VIENNADATA_ENABLE_DENSE_DATA_STORAGE_FOR_OBJECT | ( | arg_OBJECTCLASS | ) |
namespace viennadata { namespace config { \ template <typename KeyType, typename DataType> \ struct storage<KeyType, DataType, arg_OBJECTCLASS> { typedef dense_data_tag tag; }; \ } }
A convenience macro for dense data storage for a certain object type.