2 Skelton for retropc emulator
4 Author : Kyuma.Ohta <whatisthis.sowhat _at_ gmail.com>
11 #include "ringbuffer.h"
13 RINGBUFFER::RINGBUFFER(int s, int empty_warn, int fill_warn) : FIFO(s, empty_warn, fill_warn)
18 void RINGBUFFER::write(int val, bool *p_fill_warn)
28 if(rpt < 0) rpt = size - 1;
30 if(fill_warn_val < cnt) {
31 fill_warn_flag = true;
33 fill_warn_flag = false;
35 if(p_fill_warn != nullptr) {
36 *p_fill_warn = fill_warn_flag;
40 int RINGBUFFER::read(bool *p_empty_warn)
53 if(empty_warn_val > cnt) {
54 empty_warn_flag = true;
56 empty_warn_flag = false;
58 if(p_empty_warn != nullptr) {
59 *p_empty_warn = empty_warn_flag;
65 int RINGBUFFER::read_not_remove(int pt, bool *p_empty_warn)
67 if(pt >= 0 && pt < size) {
72 if(empty_warn_val > cnt) {
73 empty_warn_flag = true;
75 empty_warn_flag = false;
77 if(p_empty_warn != nullptr) {
78 *p_empty_warn = empty_warn_flag;
82 if(p_empty_warn != nullptr) {
83 *p_empty_warn = false;
88 void RINGBUFFER::write_not_push(int pt, int d, bool *p_fill_warn)
90 if(pt >= 0 && pt < size) {
96 if(fill_warn_val < cnt) {
97 fill_warn_flag = true;
99 fill_warn_flag = false;
101 if(p_fill_warn != nullptr) {
102 *p_fill_warn = fill_warn_flag;
106 if(p_fill_warn != nullptr) {
107 *p_fill_warn = false;