From aababefead31730a8745e84dbf2e12cdec442281 Mon Sep 17 00:00:00 2001 From: halbux Date: Sat, 2 Mar 2019 12:07:17 +0100 Subject: [PATCH] Add .getrow() and .getcolumn() to expression object --- src/expression/expression.cpp | 38 +++++++++++++++++++++++++++++++++++ src/expression/expression.h | 4 ++++ 2 files changed, 42 insertions(+) diff --git a/src/expression/expression.cpp b/src/expression/expression.cpp index 203bcb80..390755f0 100755 --- a/src/expression/expression.cpp +++ b/src/expression/expression.cpp @@ -206,6 +206,44 @@ expression::expression(expression condexpr, expression exprtrue, expression expr } } +expression expression::getrow(int rownum) +{ + if (rownum < 0 || rownum >= mynumrows) + { + std::cout << "Error in 'expression object': cannot get row " << rownum << " in a " << mynumrows << "x" << mynumcols << " expression" << std::endl; + abort(); + } + + expression output; + output.mynumrows = 1; + output.mynumcols = mynumcols; + output.myoperations.resize(mynumcols); + + for (int i = 0; i < mynumcols; i++) + output.myoperations[i] = myoperations[rownum*mynumcols+i]; + + return output; +} + +expression expression::getcolumn(int colnum) +{ + if (colnum < 0 || colnum >= mynumcols) + { + std::cout << "Error in 'expression object': cannot get column " << colnum << " in a " << mynumrows << "x" << mynumcols << " expression" << std::endl; + abort(); + } + + expression output; + output.mynumrows = mynumrows; + output.mynumcols = 1; + output.myoperations.resize(mynumrows); + + for (int i = 0; i < mynumrows; i++) + output.myoperations[i] = myoperations[i*mynumcols+colnum]; + + return output; +} + void expression::reorderrows(std::vector neworder) { if (mynumrows != neworder.size()) diff --git a/src/expression/expression.h b/src/expression/expression.h index 8900f9e1..ed774a64 100755 --- a/src/expression/expression.h +++ b/src/expression/expression.h @@ -83,6 +83,10 @@ class expression int countrows(void) { return mynumrows; }; int countcolumns(void) { return mynumcols; }; + // Get a given row/column in a matrix expression: + expression getrow(int rownum); + expression getcolumn(int colnum); + void reorderrows(std::vector neworder); void reordercolumns(std::vector neworder);