From 08af408078db74ce694c65cd039820a2318cddb8 Mon Sep 17 00:00:00 2001 From: rylek Date: Wed, 23 Nov 2011 22:20:41 +0000 Subject: [PATCH] +TCore/CalcNode.h+cpp: added int64 variant for CalcNode::Calc & CalcContext::Evaluate git-svn-id: svn://ultimatepp.org/upp/trunk@4193 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/TCore/CalcNode.cpp | 16 ++++++++++++++++ uppsrc/TCore/CalcNode.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/uppsrc/TCore/CalcNode.cpp b/uppsrc/TCore/CalcNode.cpp index 45ab11e02..3a256331d 100644 --- a/uppsrc/TCore/CalcNode.cpp +++ b/uppsrc/TCore/CalcNode.cpp @@ -613,6 +613,12 @@ int CalcContext::EvaluateInt(String expr) return !!node ? node->CalcInt(*this) : int(Null); } +int64 CalcContext::EvaluateInt64(String expr) +{ + CalcNodePtr node = CalcParser().ScanVoid(expr); + return !!node ? node->CalcInt64(*this) : int(Null); +} + Date CalcContext::EvaluateDate(String expr) { CalcNodePtr node = CalcParser().ScanVoid(expr); @@ -1047,6 +1053,16 @@ int CalcNode::CalcInt(CalcContext& context) const return v; } +int64 CalcNode::CalcInt64(CalcContext& context) const +{ + if(this == 0) + return Null; + Value v = Calc(context); + if(!IsNull(v) && !IsNumber(v)) + throw Exc(t_("Number expected, found: ") + context.FormatNull(v)); + return v; +} + Date CalcNode::CalcDate(CalcContext& context) const { if(this == 0) diff --git a/uppsrc/TCore/CalcNode.h b/uppsrc/TCore/CalcNode.h index f7e53b23b..9e5796a5b 100644 --- a/uppsrc/TCore/CalcNode.h +++ b/uppsrc/TCore/CalcNode.h @@ -27,6 +27,7 @@ public: double CalcDouble(CalcContext& context) const; String CalcString(CalcContext& context) const; int CalcInt(CalcContext& context) const; + int64 CalcInt64(CalcContext& context) const; Date CalcDate(CalcContext& context) const; Time CalcTime(CalcContext& context) const; bool CalcBool(CalcContext& context) const; @@ -348,6 +349,7 @@ public: double EvaluateDouble(String expr); String EvaluateString(String expr); int EvaluateInt(String expr); + int64 EvaluateInt64(String expr); Date EvaluateDate(String expr); Time EvaluateTime(String expr); bool EvaluateBool(String expr, bool null_value = false);