本文整理汇总了C++中BufferNew函数的典型用法代码示例。如果您正苦于以下问题:C++ BufferNew函数的具体用法?C++ BufferNew怎么用?C++ BufferNew使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了BufferNew函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: test_copyEqualBuffer
static void test_copyEqualBuffer(void **state)
{
char element0[] = "element0";
unsigned int element0size = strlen(element0);
char element1[] = "element1";
unsigned int element1size = strlen(element1);
Buffer *buffer0 = NULL;
Buffer *buffer1 = NULL;
Buffer *buffer2 = NULL;
// Empty buffers, all empty buffers are the same
assert_int_equal(0, BufferNew(&buffer0));
assert_int_equal(0, BufferNew(&buffer1));
assert_true(BufferEqual(buffer0, buffer0));
assert_true(BufferEqual(buffer0, buffer1));
assert_int_equal(0, BufferCopy(buffer0, &buffer2));
assert_true(BufferEqual(buffer0, buffer2));
// Add some flavour
assert_int_equal(0, BufferDestroy(&buffer2));
assert_int_equal(element0size, BufferSet(buffer0, element0, element0size));
assert_int_equal(element1size, BufferSet(buffer1, element1, element1size));
assert_true(BufferEqual(buffer0, buffer0));
assert_false(BufferEqual(buffer0, buffer1));
assert_int_equal(0, BufferCopy(buffer0, &buffer2));
assert_true(BufferEqual(buffer0, buffer2));
// Destroy the buffers
assert_int_equal(0, BufferDestroy(&buffer0));
assert_int_equal(0, BufferDestroy(&buffer1));
assert_int_equal(0, BufferDestroy(&buffer2));
}
示例2: BufferNew
Buffer *IPAddressGetAddress(IPAddress *address)
{
if (!address)
{
return NULL;
}
Buffer *buffer = NULL;
int result = 0;
if (address->type == IP_ADDRESS_TYPE_IPV4)
{
struct IPV4Address *ipv4 = (struct IPV4Address *)address->address;
buffer = BufferNew();
#if BIG_ENDIAN
result = BufferPrintf(buffer, "%u.%u.%u.%u", ipv4->octets[0], ipv4->octets[1], ipv4->octets[2], ipv4->octets[3]);
#elif LITTLE_ENDIAN
result = BufferPrintf(buffer, "%u.%u.%u.%u", ipv4->octets[3], ipv4->octets[2], ipv4->octets[1], ipv4->octets[0]);
#else
#warning "Unrecognized endianness, assuming big endian"
result = BufferPrintf(buffer, "%u.%u.%u.%u", ipv4->octets[0], ipv4->octets[1], ipv4->octets[2], ipv4->octets[3]);
#endif
}
else if (address->type == IP_ADDRESS_TYPE_IPV6)
{
struct IPV6Address *ipv6 = (struct IPV6Address *)address->address;
buffer = BufferNew();
#if BIG_ENDIAN
result = BufferPrintf(buffer, "%x:%x:%x:%x:%x:%x:%x:%x", ipv6->sixteen[0], ipv6->sixteen[1], ipv6->sixteen[2],
ipv6->sixteen[3], ipv6->sixteen[4], ipv6->sixteen[5], ipv6->sixteen[6], ipv6->sixteen[7]);
#elif LITTLE_ENDIAN
result = BufferPrintf(buffer, "%x:%x:%x:%x:%x:%x:%x:%x", ipv6->sixteen[7], ipv6->sixteen[6], ipv6->sixteen[5],
ipv6->sixteen[4], ipv6->sixteen[3], ipv6->sixteen[2], ipv6->sixteen[1], ipv6->sixteen[0]);
#else
#warning "Unrecognized endianness, assuming big endian"
result = BufferPrintf(buffer, "%x:%x:%x:%x:%x:%x:%x:%x", ipv6->sixteen[0], ipv6->sixteen[1], ipv6->sixteen[2],
ipv6->sixteen[3], ipv6->sixteen[4], ipv6->sixteen[5], ipv6->sixteen[6], ipv6->sixteen[7]);
#endif
}
else
{
buffer = NULL;
}
if (result < 0)
{
BufferDestroy(buffer);
return NULL;
}
return buffer;
}
示例3: test_createBuffer
static void test_createBuffer(void **state)
{
Buffer *buffer = NULL;
assert_int_equal(0, BufferNew(&buffer));
assert_true(buffer != NULL);
assert_true(buffer->buffer != NULL);
assert_int_equal(buffer->mode, BUFFER_BEHAVIOR_CSTRING);
assert_int_equal(buffer->capacity, DEFAULT_BUFFER_SIZE);
assert_int_equal(buffer->used, 0);
assert_int_equal(buffer->beginning, 0);
assert_int_equal(buffer->end, 0);
assert_true(buffer->ref_count != NULL);
assert_int_equal(buffer->ref_count->user_count, 1);
assert_int_equal(-1, BufferNew(NULL));
}
示例4: assert
char *VarRefToString(const VarRef *ref, bool qualified)
{
assert(ref->lval);
Buffer *buf = BufferNew();
if (qualified && VarRefIsQualified(ref))
{
const char *ns = ref->ns ? ref->ns : "default";
BufferAppend(buf, ns, strlen(ns));
BufferAppend(buf, ":", sizeof(char));
BufferAppend(buf, ref->scope, strlen(ref->scope));
BufferAppend(buf, ".", sizeof(char));
}
BufferAppend(buf, ref->lval, strlen(ref->lval));
for (size_t i = 0; i < ref->num_indices; i++)
{
BufferAppend(buf, "[", sizeof(char));
BufferAppend(buf, ref->indices[i], strlen(ref->indices[i]));
BufferAppend(buf, "]", sizeof(char));
}
char *var_string = xstrdup(BufferData(buf));
BufferDestroy(&buf);
return var_string;
}
示例5: test_zeroBuffer
static void test_zeroBuffer(void)
{
char *element0 = xstrdup("element0");
unsigned int element0size = strlen(element0);
const char *element0pointer = NULL;
Buffer *buffer = BufferNew();
assert_int_equal(element0size, BufferSet(buffer, element0, element0size));
element0pointer = buffer->buffer;
assert_int_equal(element0size, buffer->used);
assert_int_equal(element0size, BufferSize(buffer));
BufferZero(buffer);
assert_int_equal(DEFAULT_BUFFER_SIZE, buffer->capacity);
assert_int_equal(0, buffer->used);
assert_int_equal(0, BufferSize(buffer));
const char *data = BufferData(buffer);
assert_string_equal(data, "");
assert_true(element0pointer == buffer->buffer);
BufferZero(NULL);
assert_int_equal(0, BufferDestroy(&buffer));
/*
* Release the resources
*/
BufferDestroy(&buffer);
free (element0);
}
示例6: BufferNew
Buffer *StringSetToBuffer(StringSet *set, const char delimiter)
{
Buffer *buf = BufferNew();
StringSetIterator it = StringSetIteratorInit(set);
const char *element = NULL;
int pos = 0;
int size = StringSetSize(set);
char minibuf[2];
minibuf[0] = delimiter;
minibuf[1] = '\0';
while ((element = StringSetIteratorNext(&it)))
{
BufferAppend(buf, element, strlen(element));
if (pos < size-1)
{
BufferAppend(buf, minibuf, sizeof(char));
}
pos++;
}
return buf;
}
示例7: test_destroyBuffer
static void test_destroyBuffer(void)
{
Buffer *buffer = BufferNew();
assert_int_equal(0, BufferDestroy(&buffer));
assert_true(buffer == NULL);
assert_int_equal(0, BufferDestroy(NULL));
}
示例8: DoExtDiskSpace
void DoExtDiskSpace(tBuffer *bIn, tBuffer *bOut, u_int32_t id)
{
struct STATFS stfs;
tFSPath *realPath;
char *path;
path = convertFromUtf8(BufferGetString(bIn), 1);
realPath = FSCheckPath(path);
DEBUG((MYLOG_DEBUG, "[DoExtDiskSpaceOpenSSH]Path: %s", path));
if (realPath != NULL && !HAS_BIT(gl_var->flagsDisable, SFTP_DISABLE_STATSFS))
{
DEBUG((MYLOG_DEBUG, "[DoExtDiskSpaceOpenSSH]Realpath: %s", realPath->realPath));
if (STATFS(realPath->realPath, &stfs) == 0)
{
tBuffer *b;
b = BufferNew();
BufferPutInt8(b, SSH2_FXP_EXTENDED_REPLY);
BufferPutInt32(b, id);
BufferPutInt64(b, (u_int64_t) stfs.f_blocks * (u_int64_t) stfs.f_bsize);
BufferPutInt64(b, (u_int64_t) stfs.f_bfree * (u_int64_t) stfs.f_bsize);
BufferPutInt64(b, 0);
BufferPutInt64(b, (u_int64_t) stfs.f_bavail * (u_int64_t) stfs.f_bsize);
BufferPutInt32(b, stfs.f_bsize);
BufferPutPacket(bOut, b);
}
else
SendStatus(bOut, id, errnoToPortable(errno));
}
else
SendStatus(bOut, id, SSH2_FX_PERMISSION_DENIED);
FSDestroyPath(realPath);
free(path);
}
示例9: ExpandBundleReference
Rval ExpandBundleReference(EvalContext *ctx,
const char *ns, const char *scope,
Rval rval)
{
// Allocates new memory for the copy
switch (rval.type)
{
case RVAL_TYPE_SCALAR:
{
Buffer *buffer = BufferNew();
ExpandScalar(ctx, ns, scope, RvalScalarValue(rval), buffer);
return (Rval) { BufferClose(buffer), RVAL_TYPE_SCALAR };
}
case RVAL_TYPE_FNCALL:
return (Rval) {ExpandFnCall(ctx, ns, scope, RvalFnCallValue(rval)), RVAL_TYPE_FNCALL};
case RVAL_TYPE_CONTAINER:
case RVAL_TYPE_LIST:
case RVAL_TYPE_NOPROMISEE:
return RvalNew(NULL, RVAL_TYPE_NOPROMISEE);
}
assert(false);
return RvalNew(NULL, RVAL_TYPE_NOPROMISEE);
}
示例10: WindowGetattr
static PyObject *
WindowGetattr(PyObject *self, char *name)
{
WindowObject *this = (WindowObject *)(self);
if (CheckWindow(this))
return NULL;
if (strcmp(name, "buffer") == 0)
return (PyObject *)BufferNew(this->win->w_buffer);
else if (strcmp(name, "cursor") == 0)
{
pos_T *pos = &this->win->w_cursor;
return Py_BuildValue("(ll)", (long)(pos->lnum), (long)(pos->col));
}
else if (strcmp(name, "height") == 0)
return Py_BuildValue("l", (long)(this->win->w_height));
#ifdef FEAT_VERTSPLIT
else if (strcmp(name, "width") == 0)
return Py_BuildValue("l", (long)(W_WIDTH(this->win)));
#endif
else if (strcmp(name,"__members__") == 0)
return Py_BuildValue("[sss]", "buffer", "cursor", "height");
else
return Py_FindMethod(WindowMethods, self, name);
}
示例11: Epimenides
static bool Epimenides(EvalContext *ctx, const char *ns, const char *scope, const char *var, Rval rval, int level)
{
switch (rval.type)
{
case RVAL_TYPE_SCALAR:
if (StringContainsVar(RvalScalarValue(rval), var))
{
Log(LOG_LEVEL_ERR, "Scalar variable '%s' contains itself (non-convergent) '%s'", var, RvalScalarValue(rval));
return true;
}
if (IsCf3VarString(RvalScalarValue(rval)))
{
Buffer *exp = BufferNew();
ExpandScalar(ctx, ns, scope, RvalScalarValue(rval), exp);
if (strcmp(BufferData(exp), RvalScalarValue(rval)) == 0)
{
BufferDestroy(exp);
return false;
}
if (level > 3)
{
BufferDestroy(exp);
return false;
}
if (Epimenides(ctx, ns, scope, var, (Rval) { BufferGet(exp), RVAL_TYPE_SCALAR}, level + 1))
{
BufferDestroy(exp);
return true;
}
BufferDestroy(exp);
}
break;
case RVAL_TYPE_LIST:
for (const Rlist *rp = RvalRlistValue(rval); rp != NULL; rp = rp->next)
{
if (Epimenides(ctx, ns, scope, var, rp->val, level))
{
return true;
}
}
break;
case RVAL_TYPE_CONTAINER:
case RVAL_TYPE_FNCALL:
case RVAL_TYPE_NOPROMISEE:
return false;
}
return false;
}
示例12: test_expand_scalar_undefined
static void test_expand_scalar_undefined(void **state)
{
EvalContext *ctx = *state;
Buffer *res = BufferNew();
ExpandScalar(ctx, "default", "bundle", "a$(undefined)b", res);
assert_string_equal("a$(undefined)b", BufferData(res));
BufferDestroy(res);
}
示例13: CreateHardClassesFromFeatures
void CreateHardClassesFromFeatures(EvalContext *ctx, char *tags)
{
Buffer *buffer = BufferNew();
for(int i=0 ; features[i]!=NULL ; i++) {
BufferPrintf(buffer, "feature_%s", features[i]);
CreateHardClassesFromCanonification(ctx, BufferData(buffer), tags);
}
BufferDestroy(buffer);
}
示例14: ExpandPromiseAndDo
static PromiseResult ExpandPromiseAndDo(EvalContext *ctx, const Promise *pp,
Rlist *lists, Rlist *containers,
PromiseActuator *ActOnPromise, void *param)
{
const char *handle = PromiseGetHandle(pp);
EvalContextStackPushPromiseFrame(ctx, pp, true);
PromiseIterator *iter_ctx = NULL;
size_t i = 0;
PromiseResult result = PROMISE_RESULT_NOOP;
Buffer *expbuf = BufferNew();
for (iter_ctx = PromiseIteratorNew(ctx, pp, lists, containers); PromiseIteratorHasMore(iter_ctx); i++, PromiseIteratorNext(iter_ctx))
{
if (handle)
{
// This ordering is necessary to get automated canonification
BufferClear(expbuf);
ExpandScalar(ctx, NULL, "this", handle, expbuf);
CanonifyNameInPlace(BufferGet(expbuf));
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_THIS, "handle", BufferData(expbuf), CF_DATA_TYPE_STRING, "source=promise");
}
else
{
EvalContextVariablePutSpecial(ctx, SPECIAL_SCOPE_THIS, "handle", PromiseID(pp), CF_DATA_TYPE_STRING, "source=promise");
}
const Promise *pexp = EvalContextStackPushPromiseIterationFrame(ctx, i, iter_ctx);
if (!pexp)
{
// excluded
result = PromiseResultUpdate(result, PROMISE_RESULT_SKIPPED);
continue;
}
PromiseResult iteration_result = ActOnPromise(ctx, pexp, param);
NotifyDependantPromises(ctx, pexp, iteration_result);
result = PromiseResultUpdate(result, iteration_result);
if (strcmp(pp->parent_promise_type->name, "vars") == 0 || strcmp(pp->parent_promise_type->name, "meta") == 0)
{
VerifyVarPromise(ctx, pexp, true);
}
EvalContextStackPopFrame(ctx);
}
BufferDestroy(expbuf);
PromiseIteratorDestroy(iter_ctx);
EvalContextStackPopFrame(ctx);
return result;
}
示例15: test_copyCompareBuffer
static void test_copyCompareBuffer(void)
{
char *element0 = xstrdup("element0");
unsigned int element0size = strlen(element0);
char *element1 = xstrdup("element1");
unsigned int element1size = strlen(element1);
Buffer *buffer0 = NULL;
Buffer *buffer1 = NULL;
Buffer *buffer2 = NULL;
assert_int_equal(0, BufferCompare(buffer0, buffer1));
buffer0 = BufferNew();
assert_int_equal(-1, BufferCompare(NULL, buffer0));
assert_int_equal(1, BufferCompare(buffer0, NULL));
buffer1 = BufferNew();
assert_int_equal(0, BufferCompare(buffer0, buffer0));
assert_int_equal(0, BufferCompare(buffer0, buffer1));
assert_int_equal(0, BufferCopy(buffer0, &buffer2));
assert_int_equal(0, BufferCompare(buffer0, buffer2));
// Add some flavour
assert_int_equal(0, BufferDestroy(&buffer2));
assert_int_equal(element0size, BufferSet(buffer0, element0, element0size));
assert_int_equal(element1size, BufferSet(buffer1, element1, element1size));
assert_int_equal(0, BufferCompare(buffer0, buffer0));
assert_int_equal(-1, BufferCompare(buffer0, buffer1));
assert_int_equal(1, BufferCompare(buffer1, buffer0));
assert_int_equal(0, BufferCopy(buffer0, &buffer2));
assert_int_equal(0, BufferCompare(buffer0, buffer2));
// Destroy the buffers
assert_int_equal(0, BufferDestroy(&buffer0));
assert_int_equal(0, BufferDestroy(&buffer1));
assert_int_equal(0, BufferDestroy(&buffer2));
free (element0);
free (element1);
}