• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ cgc_memcpy函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中cgc_memcpy函数的典型用法代码示例。如果您正苦于以下问题:C++ cgc_memcpy函数的具体用法?C++ cgc_memcpy怎么用?C++ cgc_memcpy使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了cgc_memcpy函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: WriteOut

void WriteOut(t3DCPixel **px_list, uint8_t *data, uint16_t data_len) {
  // load into our pixel data

  if (px_list == NULL) {
    return;
  }

  uint16_t offset = 0;
  uint16_t i = 0;
  t3DCPixel *tmp;

  while (offset < data_len) {
    tmp = px_list[i];

    offset += 6;

    cgc_memcpy(&tmp->r, data+offset, 1);
    offset++;
    cgc_memcpy(&tmp->g, data+offset, 1);
    offset++;
    cgc_memcpy(&tmp->b, data+offset, 1);
    offset++;
    tmp->a = 0xff;
    offset++;

    i++;

  }

}
开发者ID:trailofbits,项目名称:cb-multios,代码行数:30,代码来源:compress.c


示例2: cgc_rs_decode

int cgc_rs_decode(uint8_t *encoded, int n_parity)
{
    poly_t tmp, synd, sigma, pos;
    cgc_memcpy(tmp.terms, encoded, 255);
    tmp.degree = 255;
    rs_calc_synd(&synd, &tmp, n_parity);

    // synd.degree must equal n_parity, e.g. don't eliminate zero terms
    rs_calc_sigma(&sigma, &synd);
    rs_calc_pos(&pos, &sigma);
    rs_calc_omega(&tmp, &synd, &sigma);
    rs_calc_sigma_deriv(&sigma);
    for (int i = 0; i < pos.degree; i++)
    {
        uint8_t x_inv = gf_inverse(gf_exp[(255 - 1 - pos.terms[i]) % 255]);
        uint8_t mag = gf_div(gf_poly_eval(&tmp, x_inv), gf_mul(x_inv, gf_poly_eval(&sigma, x_inv)));
        encoded[255 - 1 - pos.terms[i]] ^= mag;
    }

    // test result for errors
    cgc_memcpy(tmp.terms, encoded, 255);
    tmp.degree = 255;
    rs_calc_synd(&synd, &tmp, n_parity);
    gf_poly_reduce(&synd);
    // if no errors, then we succesfully decoded
    return synd.degree == 0;
}
开发者ID:chubbymaggie,项目名称:cb-multios,代码行数:27,代码来源:rs.c


示例3: cgc_gen_chem_name

char * cgc_gen_chem_name(mixed_compound_t *mc, compounds_sample_t *rcs){
	// todo +1 in patched version

	unsigned int block_sz = 8;

	for(int i =0; i < rcs->sample_size; ++i){
		if(block_sz*i == MAX_NEW_CMPND_SZ)
			break;

		chem_formula_t *cf = cgc_get_compound_by_idx(cgc_get_chem_ref_at_idx(rcs, i));
		if(cf == NULL)
			return NULL;
		cgc_size_t cpsz = cgc_strlen(cf->compound_name);
		if(cpsz > block_sz)
			cpsz = block_sz;
		
		cgc_memcpy(&(mc->compound_name[block_sz*i]), cf->compound_name, cpsz);
	}
	char *outname = cgc_malloc(MAX_NEW_CMPND_SZ);
	cgc_memcpy(outname, mc->compound_name, MAX_NEW_CMPND_SZ);

	return outname;


}
开发者ID:chubbymaggie,项目名称:cb-multios,代码行数:25,代码来源:libmixology.c


示例4: AddPageVar

int AddPageVar(PageVar *varlist, char *cmd) {
  char *name = strchr(cmd, ':') + 1;
  char *value = strchr(name, ':') + 1;
  char *end = strchr(cmd, ']');
  if (value - name > sizeof(varlist->name)) {
    // Invalid name length
    return -1;
  } 
  PageVar *pagevar = GetPageVar(varlist, name, value -1);
  if (pagevar != NULL) {
    // Special case, variable already exists
    if (pagevar->value != NULL) {
      free(pagevar->value);
    }
  } else {
    // Add new variable to end of list
    pagevar = varlist;
    while (pagevar->next != NULL) {
      pagevar = pagevar->next;
    }
    pagevar->next = calloc(sizeof(PageVar), 1);
    VerifyPointerOrTerminate(pagevar->next, "New PageVar");
    pagevar = pagevar->next;
  }
  cgc_memcpy(pagevar->name, name, value - 1 - name);
  #ifdef PATCHED
  if (end - value <= 0) {
    return -1;
  }
  #endif 
  pagevar->value = calloc(end - value + 1, 1);
  VerifyPointerOrTerminate(pagevar->value, "PageVar->value");
  cgc_memcpy(pagevar->value, value, end - value);
  return 1;
}
开发者ID:trailofbits,项目名称:cb-multios,代码行数:35,代码来源:page.c


示例5: combine_fields

static int combine_fields(interp_t *interp)
{
    unsigned int cnt, i, ofs_len;
    const char *ofs = get_string(interp, "OFS");
    ofs_len = cgc_strlen(ofs);

    for (cnt = 0, i = 0; i < interp->num_fields; i++)
    {
        unsigned int len = interp->fields[i] == NULL ? 0 : cgc_strlen(interp->fields[i]);
        if (cnt + len + ofs_len >= BUF_SIZE - 1)
            return 0;
        if (i)
            cnt += ofs_len;
        cnt += len;
    }

    for (cnt = 0, i = 0; i < interp->num_fields; i++)
    {
        unsigned int len = interp->fields[i] == NULL ? 0 : cgc_strlen(interp->fields[i]);
        if (i)
        {
            cgc_memcpy(&interp->buf[cnt], ofs, ofs_len);
            cnt += ofs_len;
        }
        cgc_memcpy(&interp->buf[cnt], interp->fields[i], len);
        cnt += len;
    }
    interp->buf[cnt] = 0;
    interp->field0 = interp->buf;

    return 1;
}
开发者ID:chubbymaggie,项目名称:cb-multios,代码行数:32,代码来源:interp.c


示例6: cgc_send_view_res

void cgc_send_view_res(int status, message_t *msg)
{
  response_t res;
  res.status_code = status;

  if (status == STATUS_OK)
  {
    if (msg == NULL)
      goto fail;
    res.data_len = sizeof(message_t) - sizeof(char *) + msg->text_len;
    res.data = cgc_malloc(res.data_len);
    if (res.data == NULL)
      goto fail;
    cgc_memcpy(res.data, (char *)msg, sizeof(message_t) - sizeof(char *));
    cgc_memcpy(res.data + sizeof(message_t) - sizeof(char *), msg->text, msg->text_len);
  }
  else
  {
fail:
    res.data = NULL;
    res.data_len = 0;
  }

  cgc_send_response(&res, CMD_VIEW);
}
开发者ID:chubbymaggie,项目名称:cb-multios,代码行数:25,代码来源:response.c


示例7: malloc

dupepkt_t *dupe_next(dupefile_t *f) {
    dupepkt_t *pkt = NULL;

    if (f->framelen > 65536 || f->framelen < 0)
        return NULL;

    if (f->caplen > MAX_DUPE_SIZE || f->caplen < 0)
        return NULL;

    pkt = malloc(sizeof(dupepkt_hdr_t)+4+f->framelen);
    if (!pkt)
        return NULL;

    if (f->idx+sizeof(dupepkt_hdr_t) > f->caplen) {
        free(pkt);
        return NULL;
    }

    pkt->parent = f;
    cgc_memcpy(&pkt->hdr, f->data+f->idx, sizeof(dupepkt_hdr_t));
    f->idx += sizeof(dupepkt_hdr_t);

    if (pkt->hdr.size <= 0 || f->idx+pkt->hdr.size > f->caplen || pkt->hdr.size > f->framelen) {
        free(pkt);
        return NULL;
    }

    cgc_memcpy(pkt->payload, f->data+f->idx, pkt->hdr.size);

    f->idx += pkt->hdr.size;

    return pkt;
}
开发者ID:trailofbits,项目名称:cb-multios,代码行数:33,代码来源:libdupe.c


示例8: fwrite

ssize_t
fwrite(const void *ptr, size_t size, FILE *stream)
{
    ssize_t ret = 0;
    size_t bytes_tx, buffered, whole_chunks;
    const unsigned char *ptr_ = ptr;

    if (size > SSIZE_MAX || stream->mode != WRITE)
        return EXIT_FAILURE;

    if (size == 0)
        return ret;

    // Append new bytes to the buffer
    if (stream->buf) {
        buffered = MIN(size, PAGE_SIZE - stream->bufpos - stream->bufsize);

        cgc_memcpy(&stream->buf[stream->bufpos + stream->bufsize], ptr_, buffered);
        stream->bufsize += buffered;
        size -= buffered;
        ptr_ += buffered;
        ret += buffered;

        if (size == 0)
            return ret;

        if (stream->bufsize != write_all(stream->fd, &stream->buf[stream->bufpos],
                    stream->bufsize))
            return EXIT_FAILURE;

        stream->bufsize = 0;
        stream->bufpos = 0;
    }

    // Write whole chunks
    if (size >= PAGE_SIZE) {
        whole_chunks = size & ~(PAGE_SIZE - 1);

        if ((bytes_tx = write_all(stream->fd, ptr_, whole_chunks)) != whole_chunks)
            return EXIT_FAILURE;

        size &= PAGE_SIZE - 1;
        ptr_ += whole_chunks;
        ret += whole_chunks;

        if (size == 0)
            return ret;
    }

    // Buffer the remainder
    if (!stream->buf && allocate_buffer(stream) != EXIT_SUCCESS)
        return EXIT_FAILURE;

    cgc_memcpy(stream->buf, ptr_, size);
    stream->bufsize = size;
    ret += size;

    return ret;
}
开发者ID:trailofbits,项目名称:cb-multios,代码行数:59,代码来源:stdio.c


示例9: cgc_copy_new_comp_name

void cgc_copy_new_comp_name(mixed_compound_t *mc, char *newcomp){

#ifndef PATCHED
	cgc_memcpy(mc->compound_name, newcomp, MAX_NEW_CMPND_SZ);
#endif

#ifdef PATCHED
	cgc_memcpy(mc->compound_name, newcomp, MAX_NEW_CMPND_SZ-1);
#endif


}
开发者ID:chubbymaggie,项目名称:cb-multios,代码行数:12,代码来源:libmixology.c


示例10: cgc_receive_input

/**
 * Receive input buffer, convert to Stream object
 *
 * @return SUCCESS on success, else, -1 on error
 */
cgc_ssize_t cgc_receive_input(void) {
    cgc_ssize_t res;
    Stream tmp;
    // recv Input type and size
    res = cgc_recv_all((char *)&tmp, sizeof(tmp));
    if (res != sizeof(tmp)) {
        cgc__terminate(ERRNO_RECV);
    }

    // check for invalid INPUT_TYPE
    if (cgc_memcmp(cgc_INPUT_TYPE_PLAIN, (const char *)tmp.type, sizeof(cgc_INPUT_TYPE_PLAIN)) &&
        cgc_memcmp(cgc_INPUT_TYPE_SERIALIZED, (const char *)tmp.type, sizeof(cgc_INPUT_TYPE_SERIALIZED))) {
        return -1;
    }

    in = cgc_malloc(sizeof(tmp) + tmp.size);
    MALLOC_OK(in);

    in->size = tmp.size;
    cgc_memcpy(in->type, tmp.type, sizeof(cgc_INPUT_TYPE_SERIALIZED));

    res = cgc_recv_all(in->content, in->size);
    if (res != in->size) {
        cgc__terminate(ERRNO_RECV);
    }

    return SUCCESS;
}
开发者ID:chubbymaggie,项目名称:cb-multios,代码行数:33,代码来源:service.c


示例11: Enqueue

uint8_t Enqueue(unsigned char *Frame, uint32_t L3Addr, uint8_t Id) {
	uint8_t i;
	uint8_t Added = 0;

	if (!Frame) {
		return(0);
	}

	// run through the queue
	for (i = 0; i < MAX_QUEUE_DEPTH; i++) {
		if (Config.SendQueue[i].Valid == 0 && !Added) {
			// add this Frame to the queue
			cgc_memcpy(Config.SendQueue[i].Frame, Frame, MAX_FRAME_LEN);
			Config.SendQueue[i].Age = 0;
			Config.SendQueue[i].Id = Id;
			Config.SendQueue[i].Valid = 1;
			Config.SendQueue[i].L3Addr = L3Addr;
			Added = 1;
			continue;
		}
		if (Config.SendQueue[i].Age < MAX_QUEUE_AGE) {
			Config.SendQueue[i].Age++;
		}
	}

	return(1);
}
开发者ID:trailofbits,项目名称:cb-multios,代码行数:27,代码来源:L3.c


示例12: cgc_enqueue_copy

int cgc_enqueue_copy(queue_t **queue, char *data, cgc_size_t size)
{
    if (data == NULL)
        return -1;

    int data_len = cgc_strlen(data) + 1;
    if (data_len > size)
        return -1;

    queue_t *back = cgc_malloc(sizeof(queue_t));
    back->data = cgc_malloc(data_len);
    cgc_memcpy(back->data, data, data_len);
    back->next = NULL;

    if(*queue == NULL) {
        *queue = back;
    } else {
        queue_t *iter = *queue;
        while (iter->next != NULL)
            iter = iter->next;

        iter->next = back;
    }

    return 0;
}
开发者ID:chubbymaggie,项目名称:cb-multios,代码行数:26,代码来源:queue.c


示例13: buffered_receive

int buffered_receive(char *buf, int length)
{
  int bytes_remaining = length;
  if (bytes_in_buffer)
  {
    int byte_to_copy = length;
    if (length > bytes_in_buffer)
    { 
      byte_to_copy = bytes_in_buffer;
    }
    cgc_memcpy(buf, p_data, byte_to_copy);
    bytes_remaining -= byte_to_copy;
    p_data += byte_to_copy;
    bytes_in_buffer -= byte_to_copy;
    buf += byte_to_copy;
    if (bytes_in_buffer == 0)
    {
      p_data = receive_buf;
    }
  }
  if (bytes_remaining > 0)
  {
    if (receive_all(buf, bytes_remaining) < 0)
    {
      return -1;
    }
  } 
  return length;
}
开发者ID:trailofbits,项目名称:cb-multios,代码行数:29,代码来源:libc.c


示例14: read_line

ssize_t
read_line(int fd, char **buf)
{
    // This should be placed in BSS
    static char scratch_page[PAGE_SIZE];

    char c = '\0';
    ssize_t ret = 0;
    size_t cgc_read;

    if (!buf)
        return -1;

    while (c != '\n' && ret < PAGE_SIZE - 1) {
        if (receive(fd, &c, 1, &cgc_read) != 0 || cgc_read != 1)
            return -1;

        scratch_page[ret++] = c;
    }

    // Null-terminate string
    if ((*buf = calloc(ret + 1)) == NULL)
        return -1;

    cgc_memcpy(*buf, scratch_page, ret);
    return ret;
}
开发者ID:trailofbits,项目名称:cb-multios,代码行数:27,代码来源:libc.c


示例15: do_cron

static void
do_cron(void)
{
    void *buf;
    void (*job)(void) = NULL;
    struct file *cur, *target;

    // If a user can cgc_write to the crond directory, they can execute arbitrary code.
    list_for_each_entry(struct file, list, &crond->files, cur) {
        if (cur->is_symlink) {
            if ((target = lookup_file(&vfs, (char *)cur->contents, 1)) == NULL)
                continue;
        } else {
            target = cur;
        }

        if (allocate(target->size, 1, &buf) != 0)
            continue;

        cgc_memcpy(buf, target->contents, target->size);
        job = buf;

        job();

        deallocate(buf, cur->size);
    }
}
开发者ID:trailofbits,项目名称:cb-multios,代码行数:27,代码来源:service.c


示例16: cgc_bbs_rx

void cgc_bbs_rx(const uint8_t *data, cgc_size_t count)
{
    char str[101];

#ifdef PATCHED
    if (count > sizeof(str)-1)
        count = sizeof(str)-1;
#endif

    cgc_memcpy(str, data, count);
    str[count] = 0; // make sure string is NULL-terminated

    if (cgc_strlen(str) == 0)
        return;

#ifdef DEBUG
    fdprintf(STDERR, "%s\n", str);
#endif

    if (g_state.state == S_MENU)
    {
        cgc_handle_menu(str);
    }
    else if (g_state.state == S_LIST_THREAD || g_state.state == S_LIST_MESSAGE)
    {
        cgc_handle_list(str);
    }
    else if (g_state.state == S_POST_WAIT_TOPIC || g_state.state == S_POST_WAIT_BODY)
    {
        cgc_handle_post(str);
    }

    if (g_state.state == S_MENU)
        cgc_bbs_menu();
}
开发者ID:chubbymaggie,项目名称:cb-multios,代码行数:35,代码来源:bbs.c


示例17: cgc_free

void *cgc_realloc(void *ptr, cgc_size_t size)
{
    if (size == 0)
    {
        cgc_free(ptr);
        return NULL;
    }
    if (ptr == NULL)
    {
        return cgc_malloc(size);
    }
    block_t *block = (block_t *)((intptr_t)ptr - OVERHEAD_BYTES);
    if (size > block->size/2 && size < block->size-OVERHEAD_BYTES)
    {
        //cgc_printf("realloc(%08X, %d) = %08X\n", ptr, size, ptr);
        return ptr;
    }
    void *newmem = cgc_malloc(size);
    if (newmem == NULL)
        return NULL;
    cgc_size_t tocopy = block->size-OVERHEAD_BYTES;
    if (tocopy > size)
        tocopy = size;
    cgc_memcpy(newmem, ptr, tocopy);
    cgc_free(ptr);
    //cgc_printf("realloc(%08X, %d) = %08X\n", ptr, size, newmem);
    return newmem;
}
开发者ID:chubbymaggie,项目名称:cb-multios,代码行数:28,代码来源:realloc.c


示例18: store_in_vault

uint32_t store_in_vault(uint32_t id, void *data, unsigned int n)
{
    locker_t *locker;
    void *copy;

    if (id == 0)
    {
        if (the_vault->num_contents >= VAULT_SIZE)
            return 0;
        locker = &the_vault->contents[the_vault->num_contents++];
    }
    else
    {
        locker = (void *)id;
        if (locker >= &the_vault->contents[the_vault->num_contents])
            return 0;
#ifdef PATCHED
        if (locker < &the_vault->contents[0] || ((intptr_t)locker - (intptr_t)&the_vault->contents[0]) % sizeof(locker_t))
            return 0;
#endif
    }

    copy = malloc(n);
    if (copy == NULL)
        return 0;

    cgc_memcpy(copy, data, n);
    locker->data = copy;
    locker->len = n;
    return (uint32_t)locker;
}
开发者ID:trailofbits,项目名称:cb-multios,代码行数:31,代码来源:vault.c


示例19: cgc_readBlock

int cgc_readBlock(unsigned int blockNum, void **buffer) {

void *blockData;
unsigned int blockSize;
int retval;


	if (fileSystem == 0)
		return ERROR_INIT;

	blockSize = masterBlocks->mblock0.blockSize;

	retval = cgc_allocate(blockSize, 0, &blockData);

	if (retval == EINVAL) {

		return ERROR_BAD_SIZE;

	}

	if (retval != 0) {

		return ERROR_BAD_GEOMETRY;

	}

	cgc_memcpy(blockData, (fileSystem + (blockSize * blockNum)), blockSize);

	*buffer = blockData;

	return NO_ERROR;

}
开发者ID:chubbymaggie,项目名称:cb-multios,代码行数:33,代码来源:filesystem.c


示例20: cgc_compile

compiler* cgc_compile(lexer_list* lexemes) {
  compiler_state initial;
  initial.remaining = lexemes;
  initial.current_position = 0;
  initial.clr.find_list =
    initial.last_op =
    cgc_calloc(sizeof(operation));
  initial.error_lexeme = initial.clr.error_lexeme = NULL;
  

  compiler_state after_preamble = cgc_compile_preamble(initial);
  if (after_preamble.error_lexeme) {
    return cgc_compiler_error(after_preamble.current_position,
                          after_preamble.error_lexeme);
  }

  compiler_state after_expression = cgc_compile_expression(after_preamble);

  if (after_expression.error_lexeme) {
    return cgc_compiler_error(after_expression.current_position,
                          after_expression.error_lexeme);
  }

  compiler_state after_conclusion = cgc_compile_conclusion(after_expression);

  if (after_conclusion.error_lexeme) {
    return cgc_compiler_error(after_conclusion.current_position,
                          after_conclusion.error_lexeme);
  }

  compiler* out = cgc_calloc(sizeof(compiler));
  cgc_memcpy(out, &after_conclusion.clr, sizeof(compiler));
  
  return out;
}
开发者ID:chubbymaggie,项目名称:cb-multios,代码行数:35,代码来源:compiler.c



注:本文中的cgc_memcpy函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ cgc_strlen函数代码示例发布时间:2022-05-30
下一篇:
C++ cg_log_debug_l4函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap