aboutsummaryrefslogtreecommitdiffstats
path: root/cbuffer.h
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 19:30:32 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 19:30:32 -0800
commit8b23a6c7e1aee255004dd19098d4c2462b61b849 (patch)
tree7a4d682ba51f0ff0364c5ca2509f515bdaf96de9 /cbuffer.h
parentf721e3ac031f892af46f255a47d7f54a91317b30 (diff)
downloadexternal_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.h61
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 */
+
+