| 151 | } |
| 152 | |
| 153 | void Node::addChild() |
| 154 | { |
| 155 | |
| 156 | auto kids = childrenCount(); |
| 157 | |
| 158 | switch (kids) |
| 159 | { |
| 160 | case 0: |
| 161 | { |
| 162 | setTag(Tag::ONE_CHILD); |
| 163 | } |
| 164 | break; |
| 165 | case 1: |
| 166 | { |
| 167 | setTag(Tag::TWO_CHILDREN); |
| 168 | } |
| 169 | break; |
| 170 | case 2: |
| 171 | { |
| 172 | /// copy existing children |
| 173 | // auto kids = new NodeID[3]; |
| 174 | auto kids = static_cast<NodeID *>(malloc(sizeof(NodeID) * 3)); |
| 175 | kids[0] = getChild(0); |
| 176 | kids[1] = getChild(1); |
| 177 | setPtr(kids); |
| 178 | setTag(Tag::MORE_CHILDREN); |
| 179 | m_noOfChildren = 3; |
| 180 | } |
| 181 | break; |
| 182 | default: |
| 183 | { |
| 184 | m_noOfChildren++; |
| 185 | auto ptr = static_cast<NodeID *>(realloc(getPtr(), sizeof(NodeID) * m_noOfChildren)); |
| 186 | setPtr(ptr); |
| 187 | setTag(Tag::MORE_CHILDREN); |
| 188 | } |
| 189 | break; |
| 190 | } |
| 191 | } |
| 192 | |
| 193 | NodeID Node::getParent() const |
| 194 | { |
no outgoing calls
no test coverage detected