Proyecto ABInBev para la tarjeta Guaria 1/2.

Committer:
fmanzano_dtk
Date:
Thu Jul 07 16:17:25 2022 +0000
Revision:
19:5580a9a54ad5
Parent:
1:9e821e640117
Sincronizacion;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fmanzano_dtk 1:9e821e640117 1 /**
fmanzano_dtk 1:9e821e640117 2 * @file playlist.cpp
fmanzano_dtk 1:9e821e640117 3 * @author Felícito Manzano (felicito.manzano@detektor.com.sv)
fmanzano_dtk 1:9e821e640117 4 * @brief
fmanzano_dtk 1:9e821e640117 5 * @version 0.1
fmanzano_dtk 1:9e821e640117 6 * @date 2020-11-19
fmanzano_dtk 1:9e821e640117 7 *
fmanzano_dtk 1:9e821e640117 8 * @copyright Copyright (c) 2020
fmanzano_dtk 1:9e821e640117 9 *
fmanzano_dtk 1:9e821e640117 10 */
fmanzano_dtk 1:9e821e640117 11
fmanzano_dtk 1:9e821e640117 12 #include "playlist.hpp"
fmanzano_dtk 1:9e821e640117 13 extern int items_queue;
fmanzano_dtk 1:9e821e640117 14
fmanzano_dtk 1:9e821e640117 15 // Constructor to initialize queue
fmanzano_dtk 1:9e821e640117 16 queue::queue(int size)
fmanzano_dtk 1:9e821e640117 17 {
fmanzano_dtk 1:9e821e640117 18 arr = new int[size];
fmanzano_dtk 1:9e821e640117 19 capacity = size;
fmanzano_dtk 1:9e821e640117 20 front = 0;
fmanzano_dtk 1:9e821e640117 21 rear = -1;
fmanzano_dtk 1:9e821e640117 22 count = 0;
fmanzano_dtk 1:9e821e640117 23 }
fmanzano_dtk 1:9e821e640117 24
fmanzano_dtk 1:9e821e640117 25 // Destructor to free memory allocated to the queue
fmanzano_dtk 1:9e821e640117 26 queue::~queue()
fmanzano_dtk 1:9e821e640117 27 {
fmanzano_dtk 1:9e821e640117 28 delete[] arr;
fmanzano_dtk 1:9e821e640117 29 }
fmanzano_dtk 1:9e821e640117 30
fmanzano_dtk 1:9e821e640117 31 // Utility function to remove front element from the queue
fmanzano_dtk 1:9e821e640117 32 void queue::dequeue()
fmanzano_dtk 1:9e821e640117 33 {
fmanzano_dtk 1:9e821e640117 34 // check for queue underflow
fmanzano_dtk 1:9e821e640117 35 if (isEmpty())
fmanzano_dtk 1:9e821e640117 36 {
fmanzano_dtk 1:9e821e640117 37 //cout << "UnderFlow\nProgram Terminated\n";
fmanzano_dtk 1:9e821e640117 38 exit(EXIT_FAILURE);
fmanzano_dtk 1:9e821e640117 39 }
fmanzano_dtk 1:9e821e640117 40
fmanzano_dtk 1:9e821e640117 41 //cout << "Removing " << arr[front] << '\n';
fmanzano_dtk 1:9e821e640117 42
fmanzano_dtk 1:9e821e640117 43 front = (front + 1) % capacity;
fmanzano_dtk 1:9e821e640117 44 count--;
fmanzano_dtk 1:9e821e640117 45 items_queue--;
fmanzano_dtk 1:9e821e640117 46 }
fmanzano_dtk 1:9e821e640117 47
fmanzano_dtk 1:9e821e640117 48 // Utility function to add an item to the queue
fmanzano_dtk 1:9e821e640117 49 void queue::enqueue(int item)
fmanzano_dtk 1:9e821e640117 50 {
fmanzano_dtk 1:9e821e640117 51 // check for queue overflow
fmanzano_dtk 1:9e821e640117 52 if (isFull())
fmanzano_dtk 1:9e821e640117 53 {
fmanzano_dtk 1:9e821e640117 54 // cout << "OverFlow\nProgram Terminated\n";
fmanzano_dtk 1:9e821e640117 55 exit(EXIT_FAILURE);
fmanzano_dtk 1:9e821e640117 56 }
fmanzano_dtk 1:9e821e640117 57
fmanzano_dtk 1:9e821e640117 58 //cout << "Inserting " << item << '\n';
fmanzano_dtk 1:9e821e640117 59
fmanzano_dtk 1:9e821e640117 60 rear = (rear + 1) % capacity;
fmanzano_dtk 1:9e821e640117 61 arr[rear] = item;
fmanzano_dtk 1:9e821e640117 62 count++;
fmanzano_dtk 1:9e821e640117 63 items_queue++;
fmanzano_dtk 1:9e821e640117 64 }
fmanzano_dtk 1:9e821e640117 65
fmanzano_dtk 1:9e821e640117 66 // Utility function to return front element in the queue
fmanzano_dtk 1:9e821e640117 67 int queue::peek()
fmanzano_dtk 1:9e821e640117 68 {
fmanzano_dtk 1:9e821e640117 69 if (isEmpty())
fmanzano_dtk 1:9e821e640117 70 {
fmanzano_dtk 1:9e821e640117 71 //cout << "UnderFlow\nProgram Terminated\n";
fmanzano_dtk 1:9e821e640117 72 exit(EXIT_FAILURE);
fmanzano_dtk 1:9e821e640117 73 }
fmanzano_dtk 1:9e821e640117 74 return arr[front];
fmanzano_dtk 1:9e821e640117 75 }
fmanzano_dtk 1:9e821e640117 76
fmanzano_dtk 1:9e821e640117 77 // Utility function to return the size of the queue
fmanzano_dtk 1:9e821e640117 78 int queue::size()
fmanzano_dtk 1:9e821e640117 79 {
fmanzano_dtk 1:9e821e640117 80 return count;
fmanzano_dtk 1:9e821e640117 81 }
fmanzano_dtk 1:9e821e640117 82
fmanzano_dtk 1:9e821e640117 83 // Funcion agregada para limpiar items directamente
fmanzano_dtk 1:9e821e640117 84 /*
fmanzano_dtk 1:9e821e640117 85 void queue::erase()
fmanzano_dtk 1:9e821e640117 86 {
fmanzano_dtk 1:9e821e640117 87 memset(arr, '\0', sizeof(arr));
fmanzano_dtk 1:9e821e640117 88 front = 0;
fmanzano_dtk 1:9e821e640117 89 rear = -1;
fmanzano_dtk 1:9e821e640117 90 count = 0;
fmanzano_dtk 1:9e821e640117 91
fmanzano_dtk 1:9e821e640117 92 }
fmanzano_dtk 1:9e821e640117 93 */
fmanzano_dtk 1:9e821e640117 94
fmanzano_dtk 1:9e821e640117 95 // Utility function to check if the queue is empty or not
fmanzano_dtk 1:9e821e640117 96 bool queue::isEmpty()
fmanzano_dtk 1:9e821e640117 97 {
fmanzano_dtk 1:9e821e640117 98 return (size() == 0);
fmanzano_dtk 1:9e821e640117 99 }
fmanzano_dtk 1:9e821e640117 100
fmanzano_dtk 1:9e821e640117 101 // Utility function to check if the queue is full or not
fmanzano_dtk 1:9e821e640117 102 bool queue::isFull()
fmanzano_dtk 1:9e821e640117 103 {
fmanzano_dtk 1:9e821e640117 104 return (size() == capacity);
fmanzano_dtk 1:9e821e640117 105 }