ViennaGrid - The Vienna Grid Library  2.1.0
viennagrid/config/id_generator_config.hpp
Go to the documentation of this file.
00001 #ifndef VIENNAGRID_CONFIG_ID_GENERATOR_CONFIG_HPP
00002 #define VIENNAGRID_CONFIG_ID_GENERATOR_CONFIG_HPP
00003 
00004 /* =======================================================================
00005    Copyright (c) 2011-2014, Institute for Microelectronics,
00006                             Institute for Analysis and Scientific Computing,
00007                             TU Wien.
00008 
00009                             -----------------
00010                      ViennaGrid - The Vienna Grid Library
00011                             -----------------
00012 
00013    License:      MIT (X11), see file LICENSE in the base directory
00014 ======================================================================= */
00015 
00016 #include "viennagrid/storage/id_generator.hpp"
00017 
00022 namespace viennagrid
00023 {
00024   namespace result_of
00025   {
00027     template<typename mesh_config, typename id_generator_tag>
00028     struct id_generator_impl {};
00029 
00030     template<typename mesh_config>
00031     struct id_generator_impl<mesh_config, config::continuous_id_generator_tag>
00032     {
00033       typedef typename viennagrid::detail::result_of::continuous_id_generator_config_from_mesh_config<mesh_config>::type typemap;
00034       typedef viennagrid::continuous_id_generator<typemap> type;
00035     };
00039     template<typename WrappedConfig>
00040     struct id_generator
00041     {
00042       typedef typename config::result_of::query<WrappedConfig, config::continuous_id_generator_tag, config::id_generator_tag>::type id_generator_tag;
00043       typedef typename id_generator_impl<WrappedConfig, id_generator_tag>::type type;
00044     };
00045   }
00046 }
00047 
00048 #endif