GCC Code Coverage Report


Directory: ./
File: include/coal/mesh_loader/loader.h
Date: 2025-04-01 09:23:31
Exec Total Coverage
Lines: 5 5 100.0%
Branches: 1 6 16.7%

Line Branch Exec Source
1 /*
2 * Software License Agreement (BSD License)
3 *
4 * Copyright (c) 2011-2014, Willow Garage, Inc.
5 * Copyright (c) 2014-2015, Open Source Robotics Foundation
6 * Copyright (c) 2016, CNRS - LAAS
7 * Copyright (c) 2020, INRIA
8 * All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 *
14 * * Redistributions of source code must retain the above copyright
15 * notice, this list of conditions and the following disclaimer.
16 * * Redistributions in binary form must reproduce the above
17 * copyright notice, this list of conditions and the following
18 * disclaimer in the documentation and/or other materials provided
19 * with the distribution.
20 * * Neither the name of Open Source Robotics Foundation nor the names of its
21 * contributors may be used to endorse or promote products derived
22 * from this software without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 * POSSIBILITY OF SUCH DAMAGE.
36 */
37
38 #ifndef COAL_MESH_LOADER_LOADER_H
39 #define COAL_MESH_LOADER_LOADER_H
40
41 #include "coal/fwd.hh"
42 #include "coal/config.hh"
43 #include "coal/data_types.h"
44 #include "coal/collision_object.h"
45
46 #include <map>
47 #include <ctime>
48
49 namespace coal {
50 /// Base class for building polyhedron from files.
51 /// This class builds a new object for each file.
52 class COAL_DLLAPI MeshLoader {
53 public:
54 18 virtual ~MeshLoader() {}
55
56 virtual BVHModelPtr_t load(const std::string& filename,
57 const Vec3s& scale = Vec3s::Ones());
58
59 /// Create an OcTree from a file in binary octomap format.
60 /// \todo add OctreePtr_t
61 virtual CollisionGeometryPtr_t loadOctree(const std::string& filename);
62
63
0/2
✗ Branch 1 not taken.
✗ Branch 2 not taken.
1 MeshLoader(const NODE_TYPE& bvType = BV_OBBRSS) : bvType_(bvType) {}
64
65 private:
66 const NODE_TYPE bvType_;
67 };
68
69 /// Class for building polyhedron from files with cache mechanism.
70 /// This class builds a new object for each different file.
71 /// If method CachedMeshLoader::load is called twice with the same arguments,
72 /// the second call returns the result of the first call.
73 class COAL_DLLAPI CachedMeshLoader : public MeshLoader {
74 public:
75 16 virtual ~CachedMeshLoader() {}
76
77
0/2
✗ Branch 1 not taken.
✗ Branch 2 not taken.
8 CachedMeshLoader(const NODE_TYPE& bvType = BV_OBBRSS) : MeshLoader(bvType) {}
78
79 virtual BVHModelPtr_t load(const std::string& filename, const Vec3s& scale);
80
81 struct COAL_DLLAPI Key {
82 std::string filename;
83 Vec3s scale;
84
85
1/2
✓ Branch 2 taken 16 times.
✗ Branch 3 not taken.
16 Key(const std::string& f, const Vec3s& s) : filename(f), scale(s) {}
86
87 bool operator<(const CachedMeshLoader::Key& b) const;
88 };
89 struct COAL_DLLAPI Value {
90 BVHModelPtr_t model;
91 std::time_t mtime;
92 };
93 typedef std::map<Key, Value> Cache_t;
94
95 const Cache_t& cache() const { return cache_; }
96
97 private:
98 Cache_t cache_;
99 };
100 } // namespace coal
101
102 #endif // COAL_MESH_LOADER_LOADER_H
103