00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _ATX_RING_BUFFER_H_
00011 #define _ATX_RING_BUFFER_H_
00012
00013
00014
00015
00016 #include "AtxTypes.h"
00017 #include "AtxDefs.h"
00018 #include "AtxResults.h"
00019 #include "AtxUtils.h"
00020 #include "AtxInterfaces.h"
00021
00022
00023
00024
00025 typedef struct ATX_RingBuffer ATX_RingBuffer;
00026
00027
00028
00029
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
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