00001 /***************************************************************************** 00002 00003 sideset.hpp -- A representation of polyhedron side set with iterators 00004 for ordered enumeration and other routines. 00005 00006 This file is a part of the Arageli library. 00007 00008 Copyright (C) Sergey S. Lyalin, 2006 00009 00010 *****************************************************************************/ 00011 00021 #ifndef _ARAGELI_sideset_hpp_ 00022 #define _ARAGELI_sideset_hpp_ 00023 00024 #include <cstddef> 00025 00026 #include "config.hpp" 00027 00028 #include "vector.hpp" 00029 00030 00031 namespace Arageli 00032 { 00033 00034 00036 00037 class sideset 00038 { 00039 typedef vector<vector<std::size_t> > VVs; 00040 VVs indices; 00041 00042 public: 00043 00044 typedef VVs::const_iterator const_iterator; 00045 typedef VVs::element_type vertex_indices_set; 00046 00047 sideset (const VVs& x) : indices(x) {} 00048 00049 VVs::const_iterator begin () const { return indices.begin(); } 00050 VVs::const_iterator end () const { return indices.end(); } 00051 00052 }; 00053 00054 00055 00056 } // namesapce Arageli 00057 00058 00059 #ifdef ARAGELI_INCLUDE_CPP_WITH_EXPORT_TEMPLATE 00060 #define ARAGELI_INCLUDE_CPP_WITH_EXPORT_TEMPLATE_sideset 00061 #include "sideset.cpp" 00062 #undef ARAGELI_INCLUDE_CPP_WITH_EXPORT_TEMPLATE_sideset 00063 #endif 00064 00065 #endif // #ifndef _ARAGELI_sideset_hpp_