diff --git a/src/Mod/Spreadsheet/App/SpreadsheetExpression.cpp b/src/Mod/Spreadsheet/App/SpreadsheetExpression.cpp index 807ed22d2..a25199624 100644 --- a/src/Mod/Spreadsheet/App/SpreadsheetExpression.cpp +++ b/src/Mod/Spreadsheet/App/SpreadsheetExpression.cpp @@ -87,6 +87,19 @@ AggregateFunctionExpression::~AggregateFunctionExpression() { } +Expression *AggregateFunctionExpression::copy() const +{ + std::vector::const_iterator i = args.begin(); + std::vector a; + + while (i != args.end()) { + a.push_back((*i)->copy()); + ++i; + } + + return new AggregateFunctionExpression(owner, f, a); +} + /** * Evaluate function. Returns a NumberExpression if evaluation is successfuly. * Throws an exception if something fails. diff --git a/src/Mod/Spreadsheet/App/SpreadsheetExpression.h b/src/Mod/Spreadsheet/App/SpreadsheetExpression.h index a7f0be912..d2848cd87 100644 --- a/src/Mod/Spreadsheet/App/SpreadsheetExpression.h +++ b/src/Mod/Spreadsheet/App/SpreadsheetExpression.h @@ -90,6 +90,8 @@ public: virtual ~AggregateFunctionExpression(); + virtual Expression * copy() const; + virtual App::Expression * eval() const; virtual std::string toString() const;