⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplebuffer.c

📁 this ebook is for GSM if any one has interest in it you can take it
💻 C
字号:
#include <stdint.h>#include <stdlib.h>#include <string.h>#include <stdio.h>#include <sys/param.h>struct simplebuffer_s {	uint8_t		*buffer;	int		atomsize;	int		atoms;	int		fill;	int		headroom;};void *sb_init(int atoms, int atomsize, int headroom) {	struct simplebuffer_s	*sb;	sb=calloc(1, sizeof(struct simplebuffer_s));	if (!sb)		return NULL;	sb->buffer=malloc(atoms*atomsize+headroom);	if (!sb->buffer) {		free(sb);		return NULL;	}	sb->atoms=atoms;	sb->atomsize=atomsize;	sb->headroom=headroom;	return sb;}void sb_free(void *sbv) {	struct simplebuffer_s *sb=sbv;	free(sb->buffer);	free(sb);}int sb_used_atoms(void *sbv) {	struct simplebuffer_s *sb=sbv;	return sb->fill;}int sb_free_atoms(void *sbv) {	struct simplebuffer_s *sb=sbv;	return (sb->atoms-sb->fill);}int sb_add_atoms(void *sbv, uint8_t *atom, int atoms) {	struct simplebuffer_s *sb=sbv;	int	copy;	copy=MIN(atoms, sb_free_atoms(sbv));	memcpy(&sb->buffer[sb->fill*sb->atomsize+sb->headroom], atom, copy*sb->atomsize);	sb->fill+=copy;	return copy;}uint8_t *sb_bufptr(void *sbv) {	struct simplebuffer_s *sb=sbv;	return sb->buffer;}int sb_buflen(void *sbv) {	struct simplebuffer_s *sb=sbv;	return sb->fill*sb->atomsize+sb->headroom;}void sb_zap(void *sbv) {	struct simplebuffer_s *sb=sbv;	sb->fill=0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -