#ifndef __STATION_H__
#define __STATION_H__

#include "StationInterfaceExtra.h"
#include "queue.h"
#include "deque.h"
#include "stack.h"
#include "irdeque.h"
#include "ordeque.h"

class station : public StationInterfaceExtra {
    public:
        station(): current_car(-1) {};
		bool addToStation(int car);
		int showCurrentCar();
		bool removeFromStation();
		bool addToStack();
		bool removeFromStack();
		int showTopOfStack();
		int showSizeOfStack();
		bool addToQueue();
		bool removeFromQueue();
		int showTopOfQueue();
		int showSizeOfQueue();
		bool addToDequeLeft();
		bool addToDequeRight();
		bool removeFromDequeLeft();
		bool removeFromDequeRight();
		int showTopOfDequeLeft();
		int showTopOfDequeRight();
		int showSizeOfDeque();
		bool addToIRDequeLeft();
		bool removeFromIRDequeLeft();
		bool removeFromIRDequeRight();
		int showTopOfIRDequeLeft();
		int showTopOfIRDequeRight();
		int showSizeOfIRDeque();
		bool addToORDequeLeft();
		bool addToORDequeRight();
		bool removeFromORDequeLeft();
		int showTopOfORDequeLeft();
		int showSizeOfORDeque();
    private:
        int current_car;
        queue q;
        deque d;
        stack s;
        irdeque ir;
        ordeque ord;
};
#endif
