#ifndef PASTELSYS_LOGGER_H
#define PASTELSYS_LOGGER_H
#include "pastel/sys/logging/logger_fwd.h"
#include "pastel/sys/logging/log.h"
#include <string>
#include <unordered_set>
namespace Pastel
{
    inline Logger::~Logger()
    {
        Log_ConstIterator iter = logSet_.begin();
        Log_ConstIterator iterEnd = logSet_.end();
        while(iter != iterEnd)
        {
            Log_ConstIterator next = iter;
            ++next;
            // The current iterator 'iter'
            // will be erased.
            Log* log = *iter;
            log->removeLogger(this);
            iter = next;
        }
    }
    inline void Logger::swap(Logger& that)
    {
        logSet_.swap(that.logSet_);
    }
    inline void Logger::addLog(Log* log)
    {
        if (log)
        {
            logSet_.insert(log);
        }
    }
    inline void Logger::removeLog(Log* log)
    {
        if (log)
        {
            logSet_.erase(log);
        }
    }
}
#endif