usb: getting string descriptors, minor improvements
[quarnos.git] / libs / fifo.cpp
blob4210990b39345a9b36787e42d37ff7aab56d759a
1 /* Quarn OS
3 * Fifo
5 * Copyright (C) 2008-2009 Pawel Dziepak
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License along
18 * with this program; if not, write to the Free Software Foundation, Inc.,
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 #ifndef _FIFO_H_
24 #error This file can not be compiled directly.
25 #endif
27 template<typename T>
28 void fifo<T>::push(const T obj) {
29 queue.add(obj);
32 template<typename T>
33 T fifo<T>::pop() {
34 while (queue.get_count() == 0) __asm__("sti\nhlt");
35 T obj = queue[0];
36 queue.remove(0);
37 return obj;
40 template<typename T>
41 bool fifo<T>::empty() const {
42 if (queue.get_count() == 0)
43 return true;
44 return false;