+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
This commit is contained in:
rylek 2011-11-23 22:20:41 +00:00
parent 5237588657
commit 08af408078
2 changed files with 18 additions and 0 deletions

View file

@ -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)

View file

@ -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);