AtxRingBuffer.h

00001 /*****************************************************************
00002 |
00003 |   Atomix - Ring Buffers
00004 |
00005 |   (c) 2002-2006 Gilles Boccon-Gibod
00006 |   Author: Gilles Boccon-Gibod (bok@bok.net)
00007 |
00008  ****************************************************************/
00009 
00010 #ifndef _ATX_RING_BUFFER_H_
00011 #define _ATX_RING_BUFFER_H_
00012 
00013 /*----------------------------------------------------------------------
00014 |    includes
00015 +---------------------------------------------------------------------*/
00016 #include "AtxTypes.h"
00017 #include "AtxDefs.h"
00018 #include "AtxResults.h"
00019 #include "AtxUtils.h"
00020 #include "AtxInterfaces.h"
00021 
00022 /*----------------------------------------------------------------------
00023 |    types
00024 +---------------------------------------------------------------------*/
00025 typedef struct ATX_RingBuffer ATX_RingBuffer;
00026 
00027 /*----------------------------------------------------------------------
00028 |    prototypes
00029 +---------------------------------------------------------------------*/
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif /* __cplusplus */
00033 
00034 ATX_Result     ATX_RingBuffer_Create(ATX_Size size, ATX_RingBuffer** buffer);
00035 ATX_Result     ATX_RingBuffer_Destroy(ATX_RingBuffer* ring);
00036 ATX_Size       ATX_RingBuffer_GetSpace(ATX_RingBuffer* ring);
00037 ATX_Size       ATX_RingBuffer_GetContiguousSpace(ATX_RingBuffer* ring);
00038 ATX_Size       ATX_RingBuffer_GetAvailable(ATX_RingBuffer* ring);
00039 ATX_Size       ATX_RingBuffer_GetContiguousAvailable(ATX_RingBuffer* ring);
00040 ATX_UInt8      ATX_RingBuffer_ReadByte(ATX_RingBuffer* ring);
00041 ATX_UInt8      ATX_RingBuffer_PeekByte(ATX_RingBuffer* ring, 
00042                                        ATX_Size        offset);
00043 ATX_ByteBuffer ATX_RingBuffer_GetIn(ATX_RingBuffer* ring);
00044 ATX_ByteBuffer ATX_RingBuffer_GetOut(ATX_RingBuffer* ring);
00045 ATX_Result     ATX_RingBuffer_Read(ATX_RingBuffer* ring, 
00046                                    ATX_ByteBuffer  buffer,
00047                                    ATX_Size        size);
00048 ATX_Result     ATX_RingBuffer_Write(ATX_RingBuffer* ring, 
00049                                     ATX_ByteBuffer  buffer,
00050                                     ATX_Size        size);
00051 ATX_Result     ATX_RingBuffer_MoveIn(ATX_RingBuffer* ring, ATX_Offset offset);
00052 ATX_Result     ATX_RingBuffer_MoveOut(ATX_RingBuffer* ring, ATX_Offset offset);
00053 ATX_Result     ATX_RingBuffer_Reset(ATX_RingBuffer* ring);
00054 
00055 #ifdef __cplusplus
00056 }
00057 #endif
00058 
00059 #endif /* _ATX_RING_BUFFER_H_ */