File indexing completed on 2026-08-30 08:28:21
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef BOOST_GEOMETRY_GEOMETRIES_POLYHEDRAL_SURFACE_HPP
0013 #define BOOST_GEOMETRY_GEOMETRIES_POLYHEDRAL_SURFACE_HPP
0014
0015 #include <memory>
0016 #include <vector>
0017 #include <boost/concept/assert.hpp>
0018 #include <boost/geometry/geometries/concepts/point_concept.hpp>
0019 #include <boost/geometry/geometries/concepts/polygon_concept.hpp>
0020 #include <boost/geometry/core/tag.hpp>
0021 #include <boost/geometry/core/tags.hpp>
0022 #include <boost/config.hpp>
0023
0024 namespace boost { namespace geometry
0025 {
0026 namespace model
0027 {
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047 template
0048 <
0049 typename Polygon,
0050 template<typename, typename> class Container = std::vector,
0051 template<typename> class Allocator = std::allocator
0052
0053 >
0054 class polyhedral_surface : public Container<Polygon, Allocator<Polygon> >
0055 {
0056 BOOST_CONCEPT_ASSERT( (concepts::Polygon<Polygon>) );
0057
0058 public :
0059 using polygon_type = Polygon;
0060 using polygon_container = Container<Polygon, Allocator<Polygon> >;
0061
0062
0063 inline polyhedral_surface()
0064 : polygon_container()
0065 {}
0066
0067
0068 inline polyhedral_surface(std::initializer_list<Polygon> l)
0069 : polygon_container(l.begin(), l.end())
0070 {}
0071
0072 };
0073 }
0074
0075 #ifndef DOXYGEN_NO_TRAITS_SPECIALIZATIONS
0076 namespace traits
0077 {
0078
0079 template
0080 <
0081 typename Polygon,
0082 template<typename, typename> class Container,
0083 template<typename> class Allocator
0084 >
0085 struct tag
0086 <
0087 model::polyhedral_surface
0088 <
0089 Polygon,
0090 Container, Allocator
0091 >
0092 >
0093 {
0094 using type = polyhedral_surface_tag;
0095 };
0096
0097 }
0098 #endif
0099
0100 }}
0101
0102 #endif