From d7cbbca9220ca85e927fe07f9df10b0c19c44b01 Mon Sep 17 00:00:00 2001 From: David Rosca <roscadav@fit.cvut.cz> Date: Sun, 8 Mar 2015 12:55:26 +0100 Subject: [PATCH] Graphs: Change node/edge values from Primitive to int Primitive doesn't work well in algorithms. Also, almost (?) all algorithms are working with integer values on nodes/edges, so this should be just fine. --- alib2data/src/graph/directed/DirectedGraph.cpp | 12 ++++++------ alib2data/src/graph/directed/DirectedGraph.h | 18 ++++++++---------- .../src/graph/undirected/UndirectedGraph.cpp | 12 ++++++------ .../src/graph/undirected/UndirectedGraph.h | 18 ++++++++---------- 4 files changed, 28 insertions(+), 32 deletions(-) diff --git a/alib2data/src/graph/directed/DirectedGraph.cpp b/alib2data/src/graph/directed/DirectedGraph.cpp index 7dce4428a6..525826bcbf 100644 --- a/alib2data/src/graph/directed/DirectedGraph.cpp +++ b/alib2data/src/graph/directed/DirectedGraph.cpp @@ -102,7 +102,7 @@ bool DirectedGraph::addNode(const Node &node) return impl->addNode(node); } -bool DirectedGraph::addNode(const Node &node, const primitive::Primitive &value) +bool DirectedGraph::addNode(const Node &node, int value) { bool success = addNode(node); if (success) { @@ -125,7 +125,7 @@ bool DirectedGraph::addEdge(const DirectedEdge &edge) return impl->addEdge(edge); } -bool DirectedGraph::addEdge(const DirectedEdge &edge, const primitive::Primitive &value) +bool DirectedGraph::addEdge(const DirectedEdge &edge, int value) { bool success = addEdge(edge); if (success) { @@ -143,22 +143,22 @@ bool DirectedGraph::removeEdge(const DirectedEdge &edge) return success; } -primitive::Primitive DirectedGraph::getNodeValue(const Node &node) const +int DirectedGraph::getNodeValue(const Node &node) const { return nodeValues.at(node); } -void DirectedGraph::setNodeValue(const Node &node, const primitive::Primitive &value) +void DirectedGraph::setNodeValue(const Node &node, int value) { nodeValues.insert({node, value}); } -primitive::Primitive DirectedGraph::getEdgeValue(const DirectedEdge &edge) const +int DirectedGraph::getEdgeValue(const DirectedEdge &edge) const { return edgeValues.at(edge); } -void DirectedGraph::setEdgeValue(const DirectedEdge &edge, const primitive::Primitive &value) +void DirectedGraph::setEdgeValue(const DirectedEdge &edge, int value) { edgeValues.insert({edge, value}); } diff --git a/alib2data/src/graph/directed/DirectedGraph.h b/alib2data/src/graph/directed/DirectedGraph.h index 3422c1135e..306605437b 100644 --- a/alib2data/src/graph/directed/DirectedGraph.h +++ b/alib2data/src/graph/directed/DirectedGraph.h @@ -9,8 +9,6 @@ #include "../common/Node.h" #include "DirectedEdge.h" -#include "../../primitive/Primitive.h" - namespace graph { class IDirectedGraph; @@ -41,18 +39,18 @@ public: std::set<DirectedEdge> neighborEdges(const Node &node) const; bool addNode(const Node &node); - bool addNode(const Node &node, const primitive::Primitive &value); + bool addNode(const Node &node, int value); bool removeNode(const Node &node); bool addEdge(const DirectedEdge &edge); - bool addEdge(const DirectedEdge &edge, const primitive::Primitive &value); + bool addEdge(const DirectedEdge &edge, int value); bool removeEdge(const DirectedEdge &edge); - primitive::Primitive getNodeValue(const Node &node) const; - void setNodeValue(const Node &node, const primitive::Primitive &value); + int getNodeValue(const Node &node) const; + void setNodeValue(const Node &node, int value); - primitive::Primitive getEdgeValue(const DirectedEdge &edge) const; - void setEdgeValue(const DirectedEdge &edge, const primitive::Primitive &value); + int getEdgeValue(const DirectedEdge &edge) const; + void setEdgeValue(const DirectedEdge &edge, int value); int compare(const ObjectBase &other) const override { @@ -76,8 +74,8 @@ private: REPRESENTATION representation; IDirectedGraph *impl; - std::unordered_map<Node, primitive::Primitive> nodeValues; - std::unordered_map<DirectedEdge, primitive::Primitive> edgeValues; + std::unordered_map<Node, int> nodeValues; + std::unordered_map<DirectedEdge, int> edgeValues; }; } // namespace graph diff --git a/alib2data/src/graph/undirected/UndirectedGraph.cpp b/alib2data/src/graph/undirected/UndirectedGraph.cpp index deb0eb13a1..bf0d409aa9 100644 --- a/alib2data/src/graph/undirected/UndirectedGraph.cpp +++ b/alib2data/src/graph/undirected/UndirectedGraph.cpp @@ -102,7 +102,7 @@ bool UndirectedGraph::addNode(const Node &node) return impl->addNode(node); } -bool UndirectedGraph::addNode(const Node &node, const primitive::Primitive &value) +bool UndirectedGraph::addNode(const Node &node, int value) { bool success = addNode(node); if (success) { @@ -125,7 +125,7 @@ bool UndirectedGraph::addEdge(const UndirectedEdge &edge) return impl->addEdge(edge); } -bool UndirectedGraph::addEdge(const UndirectedEdge &edge, const primitive::Primitive &value) +bool UndirectedGraph::addEdge(const UndirectedEdge &edge, int value) { bool success = addEdge(edge); if (success) { @@ -143,22 +143,22 @@ bool UndirectedGraph::removeEdge(const UndirectedEdge &edge) return success; } -primitive::Primitive UndirectedGraph::getNodeValue(const Node &node) const +int UndirectedGraph::getNodeValue(const Node &node) const { return nodeValues.at(node); } -void UndirectedGraph::setNodeValue(const Node &node, const primitive::Primitive &value) +void UndirectedGraph::setNodeValue(const Node &node, int value) { nodeValues.insert({node, value}); } -primitive::Primitive UndirectedGraph::getEdgeValue(const UndirectedEdge &edge) const +int UndirectedGraph::getEdgeValue(const UndirectedEdge &edge) const { return edgeValues.at(edge); } -void UndirectedGraph::setEdgeValue(const UndirectedEdge &edge, const primitive::Primitive &value) +void UndirectedGraph::setEdgeValue(const UndirectedEdge &edge, int value) { edgeValues.insert({edge, value}); } diff --git a/alib2data/src/graph/undirected/UndirectedGraph.h b/alib2data/src/graph/undirected/UndirectedGraph.h index 1eaf3433e3..ed6cdc68ae 100644 --- a/alib2data/src/graph/undirected/UndirectedGraph.h +++ b/alib2data/src/graph/undirected/UndirectedGraph.h @@ -9,8 +9,6 @@ #include "../common/Node.h" #include "UndirectedEdge.h" -#include "../../primitive/Primitive.h" - namespace graph { class IUndirectedGraph; @@ -41,18 +39,18 @@ public: std::set<UndirectedEdge> neighborEdges(const Node &node) const; bool addNode(const Node &node); - bool addNode(const Node &node, const primitive::Primitive &value); + bool addNode(const Node &node, int value); bool removeNode(const Node &node); bool addEdge(const UndirectedEdge &edge); - bool addEdge(const UndirectedEdge &edge, const primitive::Primitive &value); + bool addEdge(const UndirectedEdge &edge, int value); bool removeEdge(const UndirectedEdge &edge); - primitive::Primitive getNodeValue(const Node &node) const; - void setNodeValue(const Node &node, const primitive::Primitive &value); + int getNodeValue(const Node &node) const; + void setNodeValue(const Node &node, int value); - primitive::Primitive getEdgeValue(const UndirectedEdge &edge) const; - void setEdgeValue(const UndirectedEdge &edge, const primitive::Primitive &value); + int getEdgeValue(const UndirectedEdge &edge) const; + void setEdgeValue(const UndirectedEdge &edge, int value); int compare(const ObjectBase &other) const override { @@ -76,8 +74,8 @@ private: REPRESENTATION representation; IUndirectedGraph *impl; - std::unordered_map<Node, primitive::Primitive> nodeValues; - std::unordered_map<UndirectedEdge, primitive::Primitive> edgeValues; + std::unordered_map<Node, int> nodeValues; + std::unordered_map<UndirectedEdge, int> edgeValues; }; } // namespace graph -- GitLab