//
// Created by sfd on 25-4-17.
//

#ifndef LAYERSTACK_H
#define LAYERSTACK_H

#include <vector>

#include "Core.h"
#include "Layer.h"

namespace Hazel
{
    class HAZEL_API LayerStack
    {
    public:
        LayerStack();
        ~LayerStack();

        void PushLayer(Layer* layer);
        void PushOverlay(Layer* layer);
        void PopLayer(Layer* layer);
        void PopOverlay(Layer* layer);

        std::vector<Layer*>::iterator begin() {return m_layers.begin();}
        std::vector<Layer*>::iterator end() { return m_layers.end(); }

    private:
        std::vector<Layer*> m_layers;
        unsigned int m_LayerInsertIndex = 0;

    };
}


#endif //LAYERSTACK_H
