/** \file circular_queue.cpp \author michael.zohner@ec-spride.de \copyright ABY - A Framework for Efficient Mixed-protocol Secure Two-party Computation Copyright (C) 2019 ENCRYPTO Group, TU Darmstadt This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. ABY is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . \brief Circular Queue Implementation */ #include "circular_queue.h" #include CQueue::CQueue(int maxsize) { head = 0; tail = 0; queuesize = maxsize; queue = (int*) malloc(sizeof(int) * queuesize); } CQueue::~CQueue() { if (queue) free(queue); } void CQueue::enq(int ele) { queue[head] = ele; head = (head + 1) % queuesize; } int CQueue::deq() { int ret = queue[tail]; tail = (tail + 1) % queuesize; return ret; } int CQueue::size() { int rem = (head - tail) % queuesize; if (rem < 0) return queuesize + rem; else return rem; }