GCC Code Coverage Report


Directory: ./
File: include/hpp/core/node.hh
Date: 2024-08-10 11:29:48
Exec Total Coverage
Lines: 2 2 100.0%
Branches: 0 0 -%

Line Branch Exec Source
1 //
2 // Copyright (c) 2014 CNRS
3 // Authors: Florent Lamiraux
4 //
5
6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions are
8 // met:
9 //
10 // 1. Redistributions of source code must retain the above copyright
11 // notice, this list of conditions and the following disclaimer.
12 //
13 // 2. Redistributions in binary form must reproduce the above copyright
14 // notice, this list of conditions and the following disclaimer in the
15 // documentation and/or other materials provided with the distribution.
16 //
17 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 // HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
28 // DAMAGE.
29
30 #ifndef HPP_CORE_NODE_HH
31 #define HPP_CORE_NODE_HH
32
33 #include <hpp/core/config.hh>
34 #include <hpp/core/fwd.hh>
35 #include <hpp/pinocchio/fwd.hh>
36 #include <hpp/util/serialization-fwd.hh>
37
38 namespace hpp {
39 namespace core {
40 /// \addtogroup roadmap
41 /// \{
42
43 /// Node of a roadmap
44 ///
45 /// Stores a configuration.
46 class HPP_CORE_DLLAPI Node {
47 public:
48 typedef std::list<EdgePtr_t> Edges_t;
49 /// Constructor
50 /// \param configuration configuration stored in the new node
51 /// \note A new connected component is created. For consistency, the
52 /// new node is not registered in the connected component.
53 Node(ConfigurationIn_t configuration);
54 /// Constructor
55 /// \param configuration configuration stored in the new node
56 /// \param connectedComponent connected component the node belongs to.
57 Node(ConfigurationIn_t configuration,
58 ConnectedComponentPtr_t connectedComponent);
59 void addOutEdge(EdgePtr_t edge);
60 void addInEdge(EdgePtr_t edge);
61 /// Store the connected component the node belongs to
62 void connectedComponent(const ConnectedComponentPtr_t& cc);
63 ConnectedComponentPtr_t connectedComponent() const;
64 /// Access to outEdges
65 const Edges_t& outEdges() const;
66 /// Access to inEdges
67 const Edges_t& inEdges() const;
68 /// Check whether otherNode is an out-neighbor of this node.
69 /// Node B is an out-neighbor of node A if node A has an outgoing edge
70 /// going to B.
71 bool isOutNeighbor(const NodePtr_t& n) const;
72 /// Check whether otherNode is an in-neighbor of this node.
73 /// Node B is an in-neighbor of node A if node A has an ingoing edge
74 /// going to B.
75 bool isInNeighbor(const NodePtr_t& n) const;
76
77 const Configuration_t& configuration() const;
78 /// Print node in a stream
79 std::ostream& print(std::ostream& os) const;
80
81 148 virtual ~Node() {};
82
83 protected:
84 18 Node() {}
85
86 private:
87 Configuration_t configuration_;
88 Edges_t outEdges_;
89 Edges_t inEdges_;
90 ConnectedComponentPtr_t connectedComponent_;
91
92 HPP_SERIALIZABLE();
93 }; // class Node
94 std::ostream& operator<<(std::ostream& os, const Node& n);
95 /// \}
96 } // namespace core
97 } // namespace hpp
98 #endif // HPP_CORE_NODE_HH
99