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

📄 dvector.c

📁 This is a implementation of cmd line mode email client. It support ESMTP. I am sure you are able to
💻 C
字号:
#include "dvector.h"#include "dutil.h"struct __dvhdr {	size_t size;	size_t length;	dvDestructor destroy;};dvectordvCreate(size_t size, dvDestructor destr){	void *mem = xmalloc(sizeof(struct __dvhdr) + (sizeof(void *) * (size+1)));	struct __dvhdr *hdr=mem;	dvector ptr = mem+sizeof(struct __dvhdr);	hdr->size = size;	hdr->length = 0;	hdr->destroy = destr;	return ptr;}voiddvAddItem(dvector *vec, void *item){	void *mem = (((void *)*vec) - sizeof(struct __dvhdr));	struct __dvhdr *hdr=mem;	size_t size = hdr->size;	if (hdr->length >= size) {		size *= 2;		mem = xrealloc(mem, sizeof(struct __dvhdr) + 			(sizeof(void *) * (size+1)));		hdr = mem;		hdr->size = size;		*vec = mem + sizeof(struct __dvhdr);	}	(*vec)[hdr->length++] = item;	(*vec)[hdr->length] = NULL;}voiddvDestroy(dvector vec){	void *mem = (((void *)vec) - sizeof(struct __dvhdr));	struct __dvhdr *hdr=mem;	if (hdr->destroy) {		uint i;		for (i=0; i < hdr->length; i++) {			hdr->destroy(vec[i]);		}	}	xfree(mem);}size_tdvSize(dvector vec){	void *mem = (((void *)vec) - sizeof(struct __dvhdr));	struct __dvhdr *hdr=mem;	return hdr->size;}size_tdvLength(dvector vec){	void *mem = (((void *)vec) - sizeof(struct __dvhdr));	struct __dvhdr *hdr=mem;	return hdr->length;}

⌨️ 快捷键说明

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