bool COutputHandler::compile(std::vector< CCopasiContainer * > listOfContainer, const CCopasiDataModel* pDataModel)
{
  bool success = true;
  mObjects.clear();

  std::set< COutputInterface *>::iterator it = mInterfaces.begin();
  std::set< COutputInterface *>::iterator end = mInterfaces.end();

  std::set< const CCopasiObject * >::const_iterator itObj;
  std::set< const CCopasiObject * >::const_iterator endObj;

  for (; it != end; ++it)
    {
      success &= (*it)->compile(listOfContainer, pDataModel);

      // Assure that this is the only one master.
      COutputHandler * pHandler = dynamic_cast< COutputHandler * >(*it);

      if (pHandler != NULL) pHandler->setMaster(this);

      // Collect the list of objects
      const std::set< const CCopasiObject * > & Objects = (*it)->getObjects();

      for (itObj = Objects.begin(), endObj = Objects.end(); itObj != endObj; ++itObj)
        mObjects.insert(*itObj);
    }

  if (mpMaster == NULL)
    success &= compileRefresh(listOfContainer, pDataModel);

  return success;
}
void COutputHandler::addInterface(COutputInterface * pInterface)
{
  mInterfaces.insert(pInterface);

  // Assure that this is the only one master.
  COutputHandler * pHandler = dynamic_cast< COutputHandler * >(pInterface);

  if (pHandler != NULL) pHandler->setMaster(this);
}
void COutputHandler::removeInterface(COutputInterface * pInterface)
{
  mInterfaces.erase(pInterface);

  // Assure that the removed handler is its own master.
  COutputHandler * pHandler = dynamic_cast< COutputHandler * >(pInterface);

  if (pHandler != NULL) pHandler->setMaster(NULL);
}
Exemple #4
0
bool COutputHandler::compile(CObjectInterface::ContainerList listOfContainer)
{
    CObjectInterface::ContainerList::const_iterator itContainer = listOfContainer.begin();
    CObjectInterface::ContainerList::const_iterator endContainer = listOfContainer.end();

    for (mpContainer = NULL; itContainer != endContainer && mpContainer == NULL; ++itContainer)
    {
        mpContainer = dynamic_cast< const CMathContainer * >(*itContainer);
    }

    assert(mpContainer != NULL);

    bool success = true;
    mObjects.clear();

    std::set< COutputInterface *>::iterator it = mInterfaces.begin();
    std::set< COutputInterface *>::iterator end = mInterfaces.end();

    CObjectInterface::ObjectSet::const_iterator itObj;
    CObjectInterface::ObjectSet::const_iterator endObj;

    for (; it != end; ++it)
    {
        success &= (*it)->compile(listOfContainer);

        // Assure that this is the only one master.
        COutputHandler * pHandler = dynamic_cast< COutputHandler * >(*it);

        if (pHandler != NULL) pHandler->setMaster(this);

        // Collect the list of objects
        const CObjectInterface::ObjectSet & Objects = (*it)->getObjects();

        for (itObj = Objects.begin(), endObj = Objects.end(); itObj != endObj; ++itObj)
            mObjects.insert(*itObj);
    }

    if (mpMaster == NULL)
        success &= compileUpdateSequence(listOfContainer);

    return success;
}