// Begin License: // Copyright (C) 2006-2014 Tobias Sargeant (tobias.sargeant@gmail.com). // All rights reserved. // // This file is part of the Carve CSG Library (http://carve-csg.com/) // // This file may be used under the terms of either the GNU General // Public License version 2 or 3 (at your option) as published by the // Free Software Foundation and appearing in the files LICENSE.GPL2 // and LICENSE.GPL3 included in the packaging of this file. // // This file is provided "AS IS" with NO WARRANTY OF ANY KIND, // INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE. // End: #pragma once #include #include namespace carve { namespace csg { namespace detail { typedef std::map::vertex_t *, std::set::face_t *, double> > > EdgeIntInfo; typedef std::unordered_set::vertex_t *> VSet; typedef std::unordered_set::face_t *> FSet; typedef std::set::vertex_t *> VSetSmall; typedef std::set V2SetSmall; typedef std::set::face_t *> FSetSmall; typedef std::unordered_map::vertex_t *, VSetSmall> VVSMap; typedef std::unordered_map::edge_t *, EdgeIntInfo> EIntMap; typedef std::unordered_map::face_t *, VSetSmall> FVSMap; typedef std::unordered_map::vertex_t *, FSetSmall> VFSMap; typedef std::unordered_map::face_t *, V2SetSmall> FV2SMap; typedef std::unordered_map< carve::mesh::MeshSet<3>::edge_t *, std::vector::vertex_t *> > EVVMap; typedef std::unordered_map::vertex_t *, std::vector::edge_t *> > VEVecMap; class LoopEdges : public std::unordered_map > { typedef std::unordered_map > super; public: void addFaceLoop(FaceLoop *fl); void sortFaceLoopLists(); void removeFaceLoop(FaceLoop *fl); }; } } } static inline std::ostream &operator<<(std::ostream &o, const carve::csg::detail::FSet &s) { const char *sep=""; for (carve::csg::detail::FSet::const_iterator i = s.begin(); i != s.end(); ++i) { o << sep << *i; sep=","; } return o; }