![](/media/cache/profiles/Felicito_-_New_Avatar.jpg.50x50_q85.jpg)
Proyecto ABInBev para la tarjeta Guaria 1/2.
VoicePlaylist/playlist.cpp@19:5580a9a54ad5, 2022-07-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |