#pragma once 


#include <SimCore/SimCore.hpp>
#include <condition_variable>
#include <cstddef>
#include <list>
#include <SimCore/Identifier.hpp>
#include <memory>
#include <mutex>

namespace SimCore {

    class IdentifierMaker{
        public:
            IdentifierMaker();

            std::shared_ptr<SimCore::Identifier> getNewIdentifier(std::uint32_t parent,SimCore::ObjectSource);

            bool isInList(std::shared_ptr<SimCore::Identifier>);

            size_t size();

        private:
          std::list<std::shared_ptr<SimCore::Identifier>>  IDList_;
          bool ObjectSource_;

            mutable std::mutex mx_;
            std::condition_variable c;




    };


}
