Numworks Epsilon  1.4.1
Graphing Calculator Operating System
list_data.cpp
Go to the documentation of this file.
1 extern "C" {
2 #include <assert.h>
3 #include <stdlib.h>
4 }
5 #include <poincare/list_data.h>
6 
7 namespace Poincare {
8 
10  m_numberOfOperands(1),
11  m_operands(new Expression*[1])
12 {
13  assert(operand != nullptr);
14  m_operands[0] = operand;
15 }
16 
18  for (int i=0; i<m_numberOfOperands; i++) {
19  if (m_operands[i]) {
20  delete m_operands[i];
21  }
22  }
23  delete[] m_operands;
24 }
25 
27  Expression ** newOperands = new Expression *[m_numberOfOperands+1];
28  for (int i=0; i<m_numberOfOperands; i++) {
29  newOperands[i] = m_operands[i];
30  }
31  delete [] m_operands;
32  newOperands[m_numberOfOperands] = operand;
33  m_operands = newOperands;
34  m_numberOfOperands++;
35 }
36 
38  return m_numberOfOperands;
39 }
40 
42  return m_operands;
43 }
44 
45 const Expression * ListData::operand(int i) const {
46  assert(i >= 0);
47  assert(i < m_numberOfOperands);
48  return m_operands[i];
49 }
50 
52  for (int i = 0; i < m_numberOfOperands; i++) {
53  m_operands[i] = nullptr;
54  }
55 }
56 
57 }
#define assert(e)
Definition: assert.h:9
Expression ** operands() const
Definition: list_data.cpp:41
int numberOfOperands() const
Definition: list_data.cpp:37
void pushExpression(Expression *operand)
Definition: list_data.cpp:26
ListData(Expression *operand)
Definition: list_data.cpp:9
const Expression * operand(int i) const
Definition: list_data.cpp:45