Queue

This lab will consist of creating a static fixed size queue

the Capacity of the queue will be dictated by the below macro

#ifndef QUEUESIZE
#define QUEUESIZE 10
#endif

the datatype of the queue will be dictated by the below macro

#ifndef ELEMTYPE
#define ELEMTYPE int
#endif

test mains and a Makefile have been provided for you, complete the Queue implementation

be sure to log the start and end of all functions
main1 does not require a body for you deQueue function make sure you Queue implementation works for main1 and matches the example before proceeding.
your output should match the example EXACTLY do not alter the provided mains.
File: Queue.h 

#pragma once
#include "cmpslib19.h"
#include "easylogging++.h"


#ifndef QUEUESIZE
#define QUEUESIZE 10
#endif

#ifndef ELEMTYPE
#define ELEMTYPE int
#endif

class Queue
{
	private:
		ELEMTYPE data[QUEUESIZE];
		int backIndex;

	public:

		Queue();
		~Queue();
		bool empty();
		bool full();
		int size();
		bool enQueue(ELEMTYPE elem);
		bool deQueue();
		ELEMTYPE peekFront();
		string ToString();// return a string representation of the data in the container..

};

// the size is the difference between the back and front

// for this particular queue impementation the front indext is always index 0

int Queue::size()
{
	LOG(INFO) << "Start " <<  __PRETTY_FUNCTION__ << endl;

	LOG(INFO) << "End " <<  __PRETTY_FUNCTION__ << endl;
	LOG(INFO) << "Returning: " << backIndex << endl;
	return backIndex;
}



// Initialize the Queue

Queue::Queue( )
{
	// set the backIndex to 0

}


Queue::~Queue()
{
	
}


bool Queue::empty()
{
	// return a bool value indicating if the Queue is empty

}


// Check if the Queue is currently full

bool Queue::full()
{
	// return a bool value indicating if the Queue is full

}

// Add an element to the top of the Queue

bool Queue::enQueue(ELEMTYPE elem)
{
	// if the Queue is full return false
// insert the value elem to the array at the position of backIndex
// increment the backIndex 
// return true

}


// Remove the element at the front of the Queue

bool Queue::deQueue()
{
	// if the Queue is empty return false
// shift all the elements in the array over one positon
// replace  element 0 ( front ) with the one at index 1
//  1 with 2 , 2 with 3, 3 with 4 and so on
// decrement the backIndex
// return true

}




// Retrieve the value at the top of the Queue but do not delete it

ELEMTYPE Queue::peekFront()
{
	// if the queue is empty throw a the message "cannot peekFront() on and empty queue"
// return the value at the top of the Queue

}


string Queue::ToString()
{
	// create a string reresentation of the Queue
// show the backIndex, the values returnted by the functions size, empty, full
// list the value of all the postitions of the array  ie
// data[0]:addres 0x000048 value:duck
// data[1]:addres 0x000052 value:chicken

}