Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Aug 21, 2011, 6:27:30 PM (13 years ago)
Author:
landauf
Message:

moved filtering of sub-contexts from BaseWriter to a new interface SubcontextOutputListener

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/output/src/libraries/util/output/BaseWriter.cc

    r8834 r8850  
    3333namespace orxonox
    3434{
    35     BaseWriter::BaseWriter(const std::string& name, bool bRegister) : OutputListener(bRegister)
     35    BaseWriter::BaseWriter(const std::string& name, bool bRegister) : SubcontextOutputListener(bRegister)
    3636    {
    3737        this->name_ = name;
     
    4040        this->configurableAdditionalContextsMaxLevel_ = level::verbose;
    4141        this->configurableAdditionalContexts_.push_back("example");
    42 
    43         this->subcontextsCheckMask_ = context::none;
    44         this->subcontextsNoCheckMask_ = context::none;
    4542
    4643        this->changedConfigurableLevel();
     
    5552    void BaseWriter::output(OutputLevel level, const OutputContextContainer& context, const std::vector<std::string>& lines)
    5653    {
    57         if (((this->subcontextsCheckMask_ & context.mask) == 0) ||
    58             (this->subcontextsNoCheckMask_ & context.mask) ||
    59             (this->subcontexts_.find(context.sub_id) != this->subcontexts_.end()))
    60         {
    61             const std::string& prefix = OutputManager::getInstance().getDefaultPrefix(level, context);
    62             std::string blanks(prefix.length(), ' ');
     54        const std::string& prefix = OutputManager::getInstance().getDefaultPrefix(level, context);
     55        std::string blanks(prefix.length(), ' ');
    6356
    64             for (size_t i = 0; i < lines.size(); ++i)
    65                 this->printLine((i == 0 ? prefix : blanks) + lines[i], level);
    66         }
     57        for (size_t i = 0; i < lines.size(); ++i)
     58            this->printLine((i == 0 ? prefix : blanks) + lines[i], level);
    6759    }
    6860
     
    9183    void BaseWriter::changedConfigurableAdditionalContexts()
    9284    {
    93         OutputContextMask context_mask = context::none;
    94         this->subcontextsCheckMask_ = context::none;
    95         this->subcontextsNoCheckMask_ = context::none;
    96 
    97         this->subcontexts_.clear();
     85        OutputContextMask main_contexts = context::none;
     86        std::set<const OutputContextContainer*> sub_contexts;
    9887
    9988        for (size_t i = 0; i < this->configurableAdditionalContexts_.size(); ++i)
     
    111100            }
    112101
    113             const OutputContextContainer& container = OutputManager::getInstance().registerContext(name, subname);
     102            const OutputContextContainer& context = OutputManager::getInstance().registerContext(name, subname);
    114103
    115             context_mask |= container.mask;
    116 
    117             if (container.sub_id != context::no_subcontext)
    118             {
    119                 this->subcontexts_.insert(container.sub_id);
    120                 this->subcontextsCheckMask_ |= container.mask;
    121             }
     104            if (context.sub_id == context::no_subcontext)
     105                main_contexts |= context.mask;
    122106            else
    123             {
    124                 this->subcontextsNoCheckMask_ |= container.mask;
    125             }
     107                sub_contexts.insert(&context);
    126108        }
    127109
    128         this->setAdditionalContextsMask(context_mask);
     110        this->setAdditionalContextsMask(main_contexts);
     111        this->setAdditionalSubcontexts(sub_contexts);
    129112    }
    130113}
Note: See TracChangeset for help on using the changeset viewer.