#include "QueueCB.h"


QueueCB::QueueCB(void)
{
}


QueueCB::~QueueCB(void)
{
}


void QueueCB::init(void)
{
    m_head = 0;
    m_tail = 0;
    m_buffer = new int[BSIZE];
}


void QueueCB::destroy(void)
{
    delete[] m_buffer;
    m_buffer = 0;
}


bool QueueCB::isEmpty(void)
{
    if(m_head == m_tail)
        return true;
    return false; 
}


bool QueueCB::isFull(void)
{
    if((m_tail+1)%BSIZE==m_head)
        return true;
    return false; 
}


bool QueueCB::get(int* data)
{
    // 如果 buffer 裡沒有東西, 請回傳 false
    if (isEmpty())
        return false;
    else
    {
        *data = m_buffer[m_head];
        m_head = (m_head+1) % BSIZE;
    }
    // 請由 buffer 中 (queue 的最前端) 取出資料

    return true;
}


bool QueueCB::put(int data)
{
    if(isFull())
        return false; 

    m_buffer[m_tail] = data; 

    m_tail=(m_tail+1)%BSIZE; 

    return true;
}
