fix for carve memory leak, update carve to hg bf36d92ff093
[blender.git] / extern / carve / lib / csg_detail.hpp
index 4b8fca3d2d2311e64669eba891d866918977d2db..e5947e776b5046eead2e6eabdde16e6df80157ec 100644 (file)
 namespace carve {
   namespace csg {
     namespace detail {
 namespace carve {
   namespace csg {
     namespace detail {
+      typedef std::map<carve::mesh::MeshSet<3>::vertex_t *,
+                       std::set<std::pair<carve::mesh::MeshSet<3>::face_t *, double> > > EdgeIntInfo;
 
 
-    typedef std::unordered_set<carve::mesh::MeshSet<3>::vertex_t *> VSet;
-    typedef std::unordered_set<carve::mesh::MeshSet<3>::face_t *> FSet;
+      typedef std::unordered_set<carve::mesh::MeshSet<3>::vertex_t *> VSet;
+      typedef std::unordered_set<carve::mesh::MeshSet<3>::face_t *> FSet;
 
 
-    typedef std::set<carve::mesh::MeshSet<3>::vertex_t *> VSetSmall;
-    typedef std::set<csg::V2> V2SetSmall;
-    typedef std::set<carve::mesh::MeshSet<3>::face_t *> FSetSmall;
+      typedef std::set<carve::mesh::MeshSet<3>::vertex_t *> VSetSmall;
+      typedef std::set<csg::V2> V2SetSmall;
+      typedef std::set<carve::mesh::MeshSet<3>::face_t *> FSetSmall;
 
 
-    typedef std::unordered_map<carve::mesh::MeshSet<3>::vertex_t *, VSetSmall> VVSMap;
-    typedef std::unordered_map<carve::mesh::MeshSet<3>::edge_t *, VSetSmall> EVSMap;
-    typedef std::unordered_map<carve::mesh::MeshSet<3>::face_t *, VSetSmall> FVSMap;
+      typedef std::unordered_map<carve::mesh::MeshSet<3>::vertex_t *, VSetSmall> VVSMap;
+      typedef std::unordered_map<carve::mesh::MeshSet<3>::edge_t *, EdgeIntInfo> EIntMap;
+      typedef std::unordered_map<carve::mesh::MeshSet<3>::face_t *, VSetSmall> FVSMap;
 
 
-    typedef std::unordered_map<carve::mesh::MeshSet<3>::vertex_t *, FSetSmall> VFSMap;
-    typedef std::unordered_map<carve::mesh::MeshSet<3>::face_t *, V2SetSmall> FV2SMap;
+      typedef std::unordered_map<carve::mesh::MeshSet<3>::vertex_t *, FSetSmall> VFSMap;
+      typedef std::unordered_map<carve::mesh::MeshSet<3>::face_t *, V2SetSmall> FV2SMap;
 
 
-    typedef std::unordered_map<
-      carve::mesh::MeshSet<3>::edge_t *,
-      std::vector<carve::mesh::MeshSet<3>::vertex_t *> > EVVMap;
+      typedef std::unordered_map<
+        carve::mesh::MeshSet<3>::edge_t *,
+        std::vector<carve::mesh::MeshSet<3>::vertex_t *> > EVVMap;
 
       typedef std::unordered_map<carve::mesh::MeshSet<3>::vertex_t *,
                                  std::vector<carve::mesh::MeshSet<3>::edge_t *> > VEVecMap;
 
 
 
       typedef std::unordered_map<carve::mesh::MeshSet<3>::vertex_t *,
                                  std::vector<carve::mesh::MeshSet<3>::edge_t *> > VEVecMap;
 
 
-     class LoopEdges : public std::unordered_map<V2, std::list<FaceLoop *> > {
+      class LoopEdges : public std::unordered_map<V2, std::list<FaceLoop *> > {
         typedef std::unordered_map<V2, std::list<FaceLoop *> > super;
 
       public:
         typedef std::unordered_map<V2, std::list<FaceLoop *> > super;
 
       public: