Data Structures | Namespaces | Defines

/export/development/ViennaData/release/ViennaData-1.0.1/viennadata/config/storage.hpp File Reference

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.

Detailed Description

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 Documentation

#define VIENNADATA_DISABLE_DENSE_DATA_STORAGE_FOR_DATA_OBJECT (   arg_DATACLASS,
  arg_OBJECTCLASS 
)
Value:
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 
)
Value:
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 
)
Value:
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 
)
Value:
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  ) 
Value:
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 
)
Value:
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  ) 
Value:
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 
)
Value:
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 
)
Value:
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 
)
Value:
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  ) 
Value:
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.