| 600 | } |
| 601 | |
| 602 | void SolutionArray::addExtra(const string& name, bool back) |
| 603 | { |
| 604 | if (m_extra->count(name)) { |
| 605 | throw CanteraError("SolutionArray::addExtra", |
| 606 | "Component '{}' already exists.", name); |
| 607 | } |
| 608 | (*m_extra)[name] = AnyValue(); |
| 609 | if (back) { |
| 610 | if (m_order->size()) { |
| 611 | // add name at end of back components |
| 612 | m_order->emplace(m_order->begin()->first - 1, name); |
| 613 | } else { |
| 614 | // first name after state components |
| 615 | m_order->emplace(-1, name); |
| 616 | } |
| 617 | } else { |
| 618 | if (m_order->size()) { |
| 619 | // insert name at end of front components |
| 620 | m_order->emplace(m_order->rbegin()->first + 1, name); |
| 621 | } else { |
| 622 | // name in leading position |
| 623 | m_order->emplace(0, name); |
| 624 | } |
| 625 | } |
| 626 | } |
| 627 | |
| 628 | vector<string> SolutionArray::listExtra(bool all) const |
| 629 | { |