summaryrefslogtreecommitdiff
path: root/StdLib/Include/Containers/Fifo.h
diff options
context:
space:
mode:
Diffstat (limited to 'StdLib/Include/Containers/Fifo.h')
-rw-r--r--StdLib/Include/Containers/Fifo.h208
1 files changed, 0 insertions, 208 deletions
diff --git a/StdLib/Include/Containers/Fifo.h b/StdLib/Include/Containers/Fifo.h
deleted file mode 100644
index 69dd55b03e..0000000000
--- a/StdLib/Include/Containers/Fifo.h
+++ /dev/null
@@ -1,208 +0,0 @@
-/** @file
- Class for arbitrary sized FIFO queues.
-
- Copyright (c) 2012, Intel Corporation. All rights reserved.<BR>
- This program and the accompanying materials are licensed and made available
- under the terms and conditions of the BSD License which accompanies this
- distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php.
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-**/
-#ifndef _FIFO_CLASS_H
-#define _FIFO_CLASS_H
-#include <Uefi.h>
-#include <wchar.h>
-#include <Containers/ModuloUtil.h>
-#include <sys/types.h>
-
-__BEGIN_DECLS
-
-typedef struct _FIFO_CLASS cFIFO;
-
-/// Constants to select what is counted by the FIFO_NumInQueue function.
-typedef enum {
- AsElements, ///< Count the number of readable elements in the queue.
- AsBytes ///< Count the number of readable bytes in the queue.
-} FIFO_ElemBytes;
-
-/** Construct a new instance of a FIFO Queue.
-
- @param[in] NumElements Number of elements to be contained in the new FIFO.
- @param[in] ElementSize Size, in bytes, of an element
-
- @retval NULL Unable to create the instance.
- @retval NonNULL Pointer to the new FIFO instance.
-**/
-cFIFO * EFIAPI New_cFIFO(UINT32 NumElements, size_t ElementSize);
-
-/** Add one or more elements to the FIFO.
-
- This function allows one to add one or more elements, as specified by Count,
- to the FIFO. Each element is of the size specified when the FIFO object
- was instantiated (FIFO.ElementSize).
-
- pElement points to the first byte of the first element to be added.
- If multiple elements are to be added, the elements are expected to be
- organized as a packed array.
-
- @param[in] Self Pointer to the FIFO instance.
- @param[in] pElement Pointer to the element(s) to enqueue (add).
- @param[in] Count Number of elements to add.
-
- @retval 0 The FIFO is full.
- @retval >=0 The number of elements added to the FIFO.
-**/
-typedef size_t (EFIAPI *cFIFO_Enqueue) (cFIFO *Self, const void *ElementPointer, size_t Count);
-
-/** Read or copy elements from the FIFO.
-
- This function allows one to read one or more elements, as specified by Count,
- from the FIFO. Each element is of the size specified when the FIFO object
- was instantiated (FIFO.ElementSize).
-
- pElement points to the destination of the first byte of the first element
- to be read. If multiple elements are to be read, the elements are expected
- to be organized as a packed array.
-
- @param[in] Self Pointer to the FIFO instance.
- @param[out] pElement Pointer to where to store the element(s) read from the FIFO.
- @param[in] Count Number of elements to dequeue.
- @param[in] Consume If TRUE, consume read elements. Otherwise, preserve.
-
- @retval 0 The FIFO is empty.
- @retval >=0 The number of elements read from the FIFO.
-**/
-typedef size_t (EFIAPI *cFIFO_Dequeue) (cFIFO *Self, void *ElementPointer, size_t Count);
-
-/** Make a copy of the FIFO's data.
- The contents of the FIFO is copied out and linearized without affecting the
- FIFO contents.
-
- @param[in] Self Pointer to the FIFO instance.
- @param[out] ElementPointer Pointer to where to store the elements copied from the FIFO.
- @param[in] Count Number of elements to copy.
-
- @retval 0 The FIFO is empty.
- @retval >=0 The number of elements copied from the FIFO.
-**/
-typedef size_t (EFIAPI *cFIFO_Copy) (cFIFO *Self, void *ElementPointer, size_t Count);
-
-/** Test whether the FIFO is empty.
-
- @param[in] Self Pointer to the FIFO instance.
-
- @retval TRUE The FIFO is empty.
- @retval FALSE The FIFO is NOT empty.
-**/
-typedef BOOLEAN (EFIAPI *cFIFO_IsEmpty) (cFIFO *Self);
-
-/** Test whether the FIFO is full.
-
- @param[in] Self Pointer to the FIFO instance.
-
- @retval TRUE The FIFO is full.
- @retval FALSE The FIFO is NOT full.
-**/
-typedef BOOLEAN (EFIAPI *cFIFO_IsFull) (cFIFO *Self);
-
-/** Determine number of items available to read from the FIFO.
-
- The number of items are either the number of bytes, or the number of elements
- depending upon the value of the As enumerator.
-
- @param[in] Self Pointer to the FIFO instance.
- @param[in] As An enumeration variable whose value determines whether the
- returned value is the number of bytes or the number of elements
- currently contained by the FIFO.
-
- @retval 0 The FIFO is empty.
- @retval >=0 The number of items contained in the FIFO.
-**/
-typedef size_t (EFIAPI *cFIFO_NumInQueue) (cFIFO *Self, FIFO_ElemBytes As);
-
-/** Determine amount of free space in the FIFO that can be written into.
-
- The number of items are either the number of bytes, or the number of elements
- depending upon the value of the As enumerator.
-
- @param[in] Self Pointer to the FIFO instance.
- @param[in] As An enumeration variable whose value determines whether the
- returned value is the number of bytes or the number of elements
- currently available in the FIFO.
-
- @retval 0 The FIFO is full.
- @retval >=0 The number of items which can be accepted by the FIFO.
-**/
-typedef size_t (EFIAPI *cFIFO_FreeSpace) (cFIFO *Self, FIFO_ElemBytes As);
-
-/** Empty the FIFO, discarding up to NumToFlush elements.
-
- @param[in] Self Pointer to the FIFO instance.
- @param[in] NumToFlush Number of elements to flush from the FIFO.
- If larger than the number of elements in the
- FIFO, the FIFO is emptied.
-
- @return Returns the number of elements remaining in the FIFO after the flush.
-**/
-typedef size_t (EFIAPI *cFIFO_Flush) (cFIFO *Self, size_t NumToFlush);
-
-/** Remove the most recent element from the FIFO.
-
- @param[in] Self Pointer to the FIFO instance.
-
- @return Returns the number of elements remaining in the FIFO.
-**/
-typedef size_t (EFIAPI *cFIFO_Truncate) (cFIFO *Self);
-
-/** Cleanly delete a FIFO instance.
-
- @param[in] Self Pointer to the FIFO instance.
-**/
-typedef void (EFIAPI *cFIFO_Delete) (cFIFO *Self);
-
-/** Get the FIFO's current Read Index.
-
- @param[in] Self Pointer to the FIFO instance.
-
- @return The current value of the FIFO's ReadIndex member is returned.
-**/
-typedef UINT32 (EFIAPI *cFIFO_GetRDex) (cFIFO *Self);
-
-/** Get the FIFO's current Write Index.
-
- @param[in] Self Pointer to the FIFO instance.
-
- @return The current value of the FIFO's WriteIndex member is returned.
-**/
-typedef UINT32 (EFIAPI *cFIFO_GetWDex) (cFIFO *Self);
-
-/// Structure declaration for FIFO objects.
-struct _FIFO_CLASS {
- /* ######## Public Functions ######## */
- cFIFO_Enqueue Write; ///< Write an element into the FIFO.
- cFIFO_Dequeue Read; ///< Read an element from the FIFO.
- cFIFO_Copy Copy; ///< Non-destructive copy from FIFO.
- cFIFO_IsEmpty IsEmpty; ///< Test whether the FIFO is empty.
- cFIFO_IsFull IsFull; ///< Test whether the FIFO is full.
- cFIFO_NumInQueue Count; ///< Return the number of elements contained in the FIFO.
- cFIFO_FreeSpace FreeSpace; ///< Return the number of available elements in the FIFO.
- cFIFO_Flush Flush; ///< Remove the N earliest elements from the FIFO.
- cFIFO_Truncate Truncate; ///< Remove the most recent element from the FIFO.
- cFIFO_Delete Delete; ///< Delete the FIFO object.
-
- /* ######## Protected Functions ######## */
- cFIFO_GetRDex GetRDex; ///< Get a copy of the current Read Index.
- cFIFO_GetWDex GetWDex; ///< Get a copy of the current Write Index.
-
- /* ######## PRIVATE Data ######## */
- void *Queue; ///< The FIFO's data storage.
- UINT32 ElementSize; ///< Number of bytes in an element.
- UINT32 NumElements; ///< Number of elements the FIFO can store.
- UINT32 ReadIndex; ///< Index of next element to Read.
- UINT32 WriteIndex; ///< Index of where next element will be Written.
-};
-
-__END_DECLS
-#endif /* _FIFO_CLASS_H */