From 8b23a6c7e1aee255004dd19098d4c2462b61b849 Mon Sep 17 00:00:00 2001 From: The Android Open Source Project Date: Tue, 3 Mar 2009 19:30:32 -0800 Subject: auto import from //depot/cupcake/@135843 --- cbuffer.h | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 cbuffer.h (limited to 'cbuffer.h') diff --git a/cbuffer.h b/cbuffer.h new file mode 100644 index 0000000..d25d765 --- /dev/null +++ b/cbuffer.h @@ -0,0 +1,61 @@ +/* Copyright (C) 2007-2008 The Android Open Source Project +** +** This software is licensed under the terms of the GNU General Public +** License version 2, as published by the Free Software Foundation, and +** may be copied, distributed, and modified under those terms. +** +** This program 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 General Public License for more details. +*/ +#ifndef _qemu_cbuffer_h +#define _qemu_cbuffer_h + +#include + +/* Basic circular buffer type and methods */ + +typedef struct { + uint8_t* buff; + int size; + int rpos; + int count; +} CBuffer; + +static __inline__ void +cbuffer_reset( CBuffer* cb, void* buff, int size ) +{ + cb->buff = buff; + cb->size = size; + cb->rpos = 0; + cb->count = 0; +} + +static __inline__ int +cbuffer_write_avail( CBuffer* cb ) +{ + return cb->size - cb->count; +} + +extern int cbuffer_write( CBuffer* cb, const void* from, int len ); +extern int cbuffer_write_peek( CBuffer* cb, uint8_t* *pbase ); +extern void cbuffer_write_step( CBuffer* cb, int len ); + +static __inline__ int +cbuffer_read_avail( CBuffer* cb ) +{ + return cb->count; +} + +extern int cbuffer_read( CBuffer* cb, void* to, int len ); +extern int cbuffer_read_peek( CBuffer* cb, uint8_t* *pbase ); +extern void cbuffer_read_step( CBuffer* cb, int len ); + +extern const char* cbuffer_quote( CBuffer* cb ); +extern const char* cbuffer_quote_data( CBuffer* cb ); +extern void cbuffer_print( CBuffer* cb ); + +#endif /* qemu_cbuffer_h */ + + -- cgit v1.1