mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-10-22 08:02:08 +02:00
cpp: adds msgpack_vrefbuffer_new and msgpack_vrefbuffer_free
This commit is contained in:
@@ -19,6 +19,7 @@
|
|||||||
#define MSGPACK_VREFBUFFER_H__
|
#define MSGPACK_VREFBUFFER_H__
|
||||||
|
|
||||||
#include "msgpack/zone.h"
|
#include "msgpack/zone.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <sys/uio.h>
|
#include <sys/uio.h>
|
||||||
@@ -67,6 +68,9 @@ bool msgpack_vrefbuffer_init(msgpack_vrefbuffer* vbuf,
|
|||||||
size_t ref_size, size_t chunk_size);
|
size_t ref_size, size_t chunk_size);
|
||||||
void msgpack_vrefbuffer_destroy(msgpack_vrefbuffer* vbuf);
|
void msgpack_vrefbuffer_destroy(msgpack_vrefbuffer* vbuf);
|
||||||
|
|
||||||
|
static inline msgpack_vrefbuffer* msgpack_vrefbuffer_new(size_t ref_size, size_t chunk_size);
|
||||||
|
static inline void msgpack_vrefbuffer_free(msgpack_vrefbuffer* vbuf);
|
||||||
|
|
||||||
static inline int msgpack_vrefbuffer_write(void* data, const char* buf, unsigned int len);
|
static inline int msgpack_vrefbuffer_write(void* data, const char* buf, unsigned int len);
|
||||||
|
|
||||||
static inline const struct iovec* msgpack_vrefbuffer_vec(const msgpack_vrefbuffer* vref);
|
static inline const struct iovec* msgpack_vrefbuffer_vec(const msgpack_vrefbuffer* vref);
|
||||||
@@ -83,6 +87,23 @@ int msgpack_vrefbuffer_migrate(msgpack_vrefbuffer* vbuf, msgpack_vrefbuffer* to)
|
|||||||
void msgpack_vrefbuffer_clear(msgpack_vrefbuffer* vref);
|
void msgpack_vrefbuffer_clear(msgpack_vrefbuffer* vref);
|
||||||
|
|
||||||
|
|
||||||
|
msgpack_vrefbuffer* msgpack_vrefbuffer_new(size_t ref_size, size_t chunk_size)
|
||||||
|
{
|
||||||
|
msgpack_vrefbuffer* vbuf = (msgpack_vrefbuffer*)malloc(sizeof(msgpack_vrefbuffer));
|
||||||
|
if(!msgpack_vrefbuffer_init(vbuf, ref_size, chunk_size)) {
|
||||||
|
free(vbuf);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return vbuf;
|
||||||
|
}
|
||||||
|
|
||||||
|
void msgpack_vrefbuffer_free(msgpack_vrefbuffer* vbuf)
|
||||||
|
{
|
||||||
|
if(vbuf == NULL) { return; }
|
||||||
|
msgpack_vrefbuffer_destroy(vbuf);
|
||||||
|
free(vbuf);
|
||||||
|
}
|
||||||
|
|
||||||
int msgpack_vrefbuffer_write(void* data, const char* buf, unsigned int len)
|
int msgpack_vrefbuffer_write(void* data, const char* buf, unsigned int len)
|
||||||
{
|
{
|
||||||
msgpack_vrefbuffer* vbuf = (msgpack_vrefbuffer*)data;
|
msgpack_vrefbuffer* vbuf = (msgpack_vrefbuffer*)data;
|
||||||
|
Reference in New Issue
Block a user