00001 #ifndef VIENNAGRID_SEGMENT_HPP 00002 #define VIENNAGRID_SEGMENT_HPP 00003 00004 /* ======================================================================= 00005 Copyright (c) 2011, Institute for Microelectronics, 00006 Institute for Analysis and Scientific Computing, 00007 TU Wien. 00008 00009 ----------------- 00010 ViennaGrid - The Vienna Grid Library 00011 ----------------- 00012 00013 Authors: Karl Rupp rupp@iue.tuwien.ac.at 00014 Josef Weinbub weinbub@iue.tuwien.ac.at 00015 00016 (A list of additional contributors can be found in the PDF manual) 00017 00018 License: MIT (X11), see file LICENSE in the base directory 00019 ======================================================================= */ 00020 00021 00022 #include <map> 00023 #include <set> 00024 #include <deque> 00025 00026 #include "viennagrid/forwards.h" 00027 #include "viennagrid/domain.hpp" //segment does not make any sense without domain 00028 #include "viennagrid/detail/segment_layers.hpp" 00029 #include "viennagrid/detail/segment_iterators.hpp" 00030 00035 namespace viennagrid 00036 { 00037 00038 00039 //Segment type: set up using recursive inheritance, similar to domain_t and element_t 00040 template <typename Conf> 00041 class segment_t : public detail::segment_layers_top<Conf, Conf::cell_tag::dim> 00042 { 00043 typedef detail::segment_layers_top<Conf, Conf::cell_tag::dim> base_type; 00044 00045 public: 00047 typedef Conf config_type; 00048 00050 ~segment_t() { viennadata::erase<viennadata::all, viennadata::all>()(*this); } 00051 00052 using base_type::push_back; 00053 00054 }; 00055 00056 00057 00058 00059 } 00060 #endif