From 88fab669c6132d22beab6014ed7d48288fa30a01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Wed, 25 Jul 2018 18:42:23 +0200 Subject: [PATCH] Macroprocessor: length() operator called on a string returns the number of characters Closes DynareTeam/Dynare#1547 --- src/macro/MacroValue.cc | 6 ++++++ src/macro/MacroValue.hh | 1 + 2 files changed, 7 insertions(+) diff --git a/src/macro/MacroValue.cc b/src/macro/MacroValue.cc index c44f80c1..4d1f0ca0 100644 --- a/src/macro/MacroValue.cc +++ b/src/macro/MacroValue.cc @@ -329,6 +329,12 @@ StringMV::print() return "'" + value + "'"; } +shared_ptr +StringMV::length() noexcept(false) +{ + return make_shared(value.length()); +} + FuncMV::FuncMV(vector args_arg, string body_arg) : args{move(args_arg)}, body{move(body_arg)} { diff --git a/src/macro/MacroValue.hh b/src/macro/MacroValue.hh index b8e782d0..35c9c934 100644 --- a/src/macro/MacroValue.hh +++ b/src/macro/MacroValue.hh @@ -161,6 +161,7 @@ public: //! Returns underlying string value string toString() override; string print() override; + shared_ptr length() noexcept(false) override; }; class FuncMV : public MacroValue