aboutsummaryrefslogtreecommitdiff
path: root/cutl
diff options
context:
space:
mode:
Diffstat (limited to 'cutl')
-rw-r--r--cutl/container/graph.hxx14
-rw-r--r--cutl/container/graph.txx35
2 files changed, 49 insertions, 0 deletions
diff --git a/cutl/container/graph.hxx b/cutl/container/graph.hxx
index f803797..9c1afe2 100644
--- a/cutl/container/graph.hxx
+++ b/cutl/container/graph.hxx
@@ -86,6 +86,20 @@ namespace cutl
new_node (A0 const&, A1 const&, A2 const&, A3 const&, A4 const&,
A5 const&, A6 const&, A7 const&, A8 const&, A9 const&);
+ // Non-const versions.
+ //
+ template <typename T, typename A0>
+ T&
+ new_node (A0&);
+
+ template <typename T, typename A0, typename A1>
+ T&
+ new_node (A0&, A1&);
+
+ template <typename T, typename A0, typename A1, typename A2>
+ T&
+ new_node (A0&, A1&, A2&);
+
public:
template <typename T, typename L, typename R>
T&
diff --git a/cutl/container/graph.txx b/cutl/container/graph.txx
index 666f94a..bb8fe47 100644
--- a/cutl/container/graph.txx
+++ b/cutl/container/graph.txx
@@ -155,6 +155,41 @@ namespace cutl
return *node;
}
+ // Non-const versions.
+ //
+ template <typename N, typename E>
+ template <typename T, typename A0>
+ T& graph<N, E>::
+ new_node (A0& a0)
+ {
+ shared_ptr<T> node (new (shared) T (a0));
+ nodes_[node.get ()] = node;
+
+ return *node;
+ }
+
+
+ template <typename N, typename E>
+ template <typename T, typename A0, typename A1>
+ T& graph<N, E>::
+ new_node (A0& a0, A1& a1)
+ {
+ shared_ptr<T> node (new (shared) T (a0, a1));
+ nodes_[node.get ()] = node;
+
+ return *node;
+ }
+
+ template <typename N, typename E>
+ template <typename T, typename A0, typename A1, typename A2>
+ T& graph<N, E>::
+ new_node (A0& a0, A1& a1, A2& a2)
+ {
+ shared_ptr<T> node (new (shared) T (a0, a1, a2));
+ nodes_[node.get ()] = node;
+
+ return *node;
+ }
// Edges.
//