brittledia ::
해더파일
cpp파일 #include <stdio.h> #include "queue.h" fifo::fifo() { fifo_i = new fifo_t; fifo_i->head = 0; fifo_i->tail = 0; fifo_i->buf = NULL; fifo_i->buf_size = 0; fifo_i->fifo_size = 0; } fifo::~fifo() { if (fifo_i->buf != NULL) delete[] fifo_i->buf; delete fifo_i; } bool fifo::initial(int size) { fifo_i->buf_size = size; fifo_i->fifo_size = size; fifo_i->buf = new lut[size]; if (fifo_i->buf == NULL) return false; else return true; } int fifo::push(lut* buf, int num) { for (int i = 0; i < num; i++) { if (full()) return i; else { if (fifo_i->head == fifo_i->buf_size) fifo_i->head = 0; fifo_i->buf[fifo_i->head] = *(buf++); fifo_i->head++; fifo_i->fifo_size--; } } return num; } int fifo::pop(lut* buf, int num) { for (int i = 0; i < num; i++) { if (empty()) return i; else { if (fifo_i->tail == fifo_i->buf_size) fifo_i->tail = 0; *(buf++) = fifo_i->buf[fifo_i->tail]; fifo_i->tail++; fifo_i->fifo_size++; } } return num; } bool fifo::push(lut buf) { if (full()) return false; else { if (fifo_i->head == fifo_i->buf_size) fifo_i->head = 0; fifo_i->buf[fifo_i->head] = buf; fifo_i->head++; fifo_i->fifo_size--; } return true; } bool fifo::pop(lut* buf) { if (empty()) return false; else { if (fifo_i->tail == fifo_i->buf_size) fifo_i->tail = 0; *(buf) = fifo_i->buf[fifo_i->tail]; fifo_i->tail++; fifo_i->fifo_size++; return true; } } int fifo::size() //return used buff mem size { return fifo_i->buf_size - fifo_i->fifo_size; } inline bool fifo::full() { if (fifo_i->fifo_size == 0) return true; else return false; } inline bool fifo::empty() { if (fifo_i->fifo_size == fifo_i->buf_size) return true; else return false; } lut LUT(int dst, int src) { lut ret; ret.dst = dst; ret.src = src; return ret; }