diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 19:30:32 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 19:30:32 -0800 |
commit | 8b23a6c7e1aee255004dd19098d4c2462b61b849 (patch) | |
tree | 7a4d682ba51f0ff0364c5ca2509f515bdaf96de9 /cbuffer.h | |
parent | f721e3ac031f892af46f255a47d7f54a91317b30 (diff) | |
download | external_qemu-8b23a6c7e1aee255004dd19098d4c2462b61b849.zip external_qemu-8b23a6c7e1aee255004dd19098d4c2462b61b849.tar.gz external_qemu-8b23a6c7e1aee255004dd19098d4c2462b61b849.tar.bz2 |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'cbuffer.h')
-rw-r--r-- | cbuffer.h | 61 |
1 files changed, 61 insertions, 0 deletions
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 <stdint.h> + +/* 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 */ + + |