14 assert(listData !=
nullptr);
16 m_operands =
new const Expression *[m_numberOfColumns];
17 for (
int i = 0; i < m_numberOfColumns; i++) {
21 m_operands[i] = listData->
operand(i);
27 if (m_operands !=
nullptr) {
28 for (
int i=0; i<m_numberOfRows*m_numberOfColumns; i++) {
38 for (
int i = 0; i < m_numberOfRows*m_numberOfColumns; i++) {
39 newOperands[i] = m_operands[i];
41 for (
int i = 0; i < m_numberOfColumns; i++) {
43 newOperands[m_numberOfRows*m_numberOfColumns+i] = listData->
operand(i)->
clone();
45 newOperands[m_numberOfRows*m_numberOfColumns+i] = listData->
operand(i);
49 m_operands = newOperands;
54 return m_numberOfRows;
58 return m_numberOfColumns;
62 *newStorage = m_operands;
virtual Expression * clone() const =0
int numberOfOperands() const
void pushListData(ListData *listData, bool clone)
void pilferOperands(const Expression ***newStorageAddress)
const Expression * operand(int i) const
MatrixData(ListData *listData, bool clone)