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