From 8119632bd799e5333534693cecda9b998dd670ff Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de>
Date: Sun, 26 Feb 2017 13:12:35 +0100
Subject: [PATCH] implement missing to_vec; now geni returns CObj pointer.

---
 pub/lib/node.cpp |  3 +--
 pub/lib/obj.cpp  | 15 +++++++++++++++
 pub/lib/obj.hpp  |  2 +-
 3 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/pub/lib/node.cpp b/pub/lib/node.cpp
index 99b45e78..4ae82b07 100644
--- a/pub/lib/node.cpp
+++ b/pub/lib/node.cpp
@@ -523,8 +523,7 @@ RObj CNodeGeni::tree_val(const CContext& ctx) const
         if (ctx.dim == CContext::_1)
             return val;
         else if (ctx.dim == CContext::_VI)
-            throw "TODO: implement to_vec";
-            // return val.to_vec(ctx.nv);
+            return val->to_vec(ctx.nv);
         else
             throw "BUG: unforeseen dimension {context: " + ctx.context_info() + "}";
 
diff --git a/pub/lib/obj.cpp b/pub/lib/obj.cpp
index 63d107d6..8849ff28 100644
--- a/pub/lib/obj.cpp
+++ b/pub/lib/obj.cpp
@@ -40,6 +40,10 @@ string CObjInt::to_s(int maxlen, int minlen, int prec) const
     return ret;
 }
 
+RObjVecNum CObjInt::to_vec(int repetitions) const
+{
+    return RObjVecInt(new CObjVecInt(vector<int>(repetitions, val)));
+}
 
 //**************************************************************************************************
 //  CObjDbl
@@ -65,6 +69,11 @@ string CObjDbl::result_info() const
         return "CObjDbl(" + to_s() + ")";
 }
 
+RObjVecNum CObjDbl::to_vec(int repetitions) const
+{
+    return RObjVecDbl(new CObjVecDbl(vector<double>(repetitions, val)));
+}
+
 
 //**************************************************************************************************
 //  CObjEnu
@@ -84,6 +93,12 @@ string CObjEnu::result_info() const
         return "CObjDbl(" + to_s() + ")";
 }
 
+RObjVecNum CObjEnu::to_vec(int repetitions) const
+{
+    return RObjVecEnu(new CObjVecEnu(vector<double>(repetitions, val),
+                                     vector<double>(repetitions, err)));
+}
+
 
 //**************************************************************************************************
 //  CObjVec
diff --git a/pub/lib/obj.hpp b/pub/lib/obj.hpp
index 756f4295..7a049a56 100644
--- a/pub/lib/obj.hpp
+++ b/pub/lib/obj.hpp
@@ -50,7 +50,7 @@ public:
     bool is_vec() const { return false; }
     virtual double to_dr() const { return 0.; }
     virtual double to_dr(int i) const { return 0.; }
-    virtual RObjVecNum to_vec(int repetitions) const;
+    virtual RObjVecNum to_vec(int repetitions) const = 0;
 };
 
 //! Data container holding a single integer number.
-- 
GitLab