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

C++ buffer_size函数代码示例

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

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



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

示例1: consume

  // Consume the specified number of bytes from the buffers.
  void consume(std::size_t size)
  {
    // Remove buffers from the start until the specified size is reached.
    while (size > 0 && !at_end_)
    {
      if (buffer_size(first_) <= size)
      {
        size -= buffer_size(first_);
        if (begin_remainder_ == buffers_.end())
          at_end_ = true;
        else
          first_ = *begin_remainder_++;
      }
      else
      {
        first_ = first_ + size;
        size = 0;
      }
    }

    // Remove any more empty buffers at the start.
    while (!at_end_ && buffer_size(first_) == 0)
    {
      if (begin_remainder_ == buffers_.end())
        at_end_ = true;
      else
        first_ = *begin_remainder_++;
    }
  }
开发者ID:alistairwalsh,项目名称:LSL-gazzlab-branch,代码行数:30,代码来源:consuming_buffers.hpp


示例2: buffer

/// Create a new non-modifiable buffer from an existing buffer.
inline const_buffer_container_1 buffer(const const_buffer& b,
    std::size_t max_size_in_bytes)
{
  return const_buffer_container_1(
      const_buffer(buffer_cast<const void*>(b),
        buffer_size(b) < max_size_in_bytes
        ? buffer_size(b) : max_size_in_bytes));
}
开发者ID:Sukumi,项目名称:python-libtorrent,代码行数:9,代码来源:buffer.hpp


示例3: const_buffer

/**
 * @relates const_buffer
 */
inline const_buffer operator+(std::size_t start, const const_buffer& b)
{
  if (start > buffer_size(b))
    return const_buffer();
  const char* new_data = buffer_cast<const char*>(b) + start;
  std::size_t new_size = buffer_size(b) - start;
  return const_buffer(new_data, new_size);
}
开发者ID:Sukumi,项目名称:python-libtorrent,代码行数:11,代码来源:buffer.hpp


示例4: mutable_buffer

/**
 * @relates mutable_buffer
 */
inline mutable_buffer operator+(const mutable_buffer& b, std::size_t start)
{
  if (start > buffer_size(b))
    return mutable_buffer();
  char* new_data = buffer_cast<char*>(b) + start;
  std::size_t new_size = buffer_size(b) - start;
  return mutable_buffer(new_data, new_size);
}
开发者ID:Sukumi,项目名称:python-libtorrent,代码行数:11,代码来源:buffer.hpp


示例5: need_wrap

static bool need_wrap(struct buffer * buffer)
{
    if (buffer == &primary_buf)
	return buffer_size(buffer) + indent_size() == max_columns;
    else
	return (buffer_size(&primary_buf) + buffer_size(&tag_buf)
		+ buffer_size(buffer) + indent_size()) >= max_columns;
}
开发者ID:penberg,项目名称:xmlindent,代码行数:8,代码来源:indent.c


示例6: resize

void Attribute::resize(Mesh *mesh, AttributePrimitive prim, bool reserve_only)
{
	if(reserve_only) {
		buffer.reserve(buffer_size(mesh, prim));
	}
	else {
		buffer.resize(buffer_size(mesh, prim), 0);
	}
}
开发者ID:mdtrooper,项目名称:goxel,代码行数:9,代码来源:attribute.cpp


示例7: save

mutable_buffer save(mutable_buffer& buffer, const mutable_buffer& v)
{
	if(buffer_size(buffer) < buffer_size(v)) {
		throw serialization_error("not enough buffer");
	}

	memcpy(buffer_cast<uint8*>(buffer), buffer_cast<uint8*>(v), buffer_size(v));
	return buffer + buffer_size(v);
}
开发者ID:chenbk85,项目名称:inet,代码行数:9,代码来源:serialize_extension.cpp


示例8: write_server_handle

/*
 * pconn is proxy --> server, and has no buffer.
 */
int write_server_handle( conn_t *pconn )
{
	log_message( LOG_DEBUG, "in write_server_handle" );

	//如果client_conn已经关闭,还是需要把剩余数据发送给server端
	if ( NULL == pconn->write_buffer ) {
		log_message( LOG_ERROR, "write_server_handle: write_buffer is NULL." );
		return -1;
	}
	if ( 1 == pconn->write_closed ) {
		log_message( LOG_WARNING, "try writing to server[%s] fd[%d], but it closed write", 
				inet_ntoa(pconn->addr.sin_addr), pconn->fd );
		return -1;
	}

	int bytes;
	bytes = write_buffer( pconn->fd, pconn->write_buffer );
	log_message( LOG_DEBUG, "send to server[%s:%d] %d bytes.\n",  inet_ntoa(pconn->addr.sin_addr), ntohs(pconn->addr.sin_port), bytes );

	if ( g_errno < 0 ) {					//写出错
		CONN_CLOSE_WRITE( pconn );
		if ( 1 == pconn->read_closed )
			return -1;
	}
	else {
		if ( 0==buffer_size(pconn->write_buffer) &&			//发送完缓冲区中的数据
			( NULL==pconn->server_conn ||					//并且客户端不会再有数据过来
				1 == pconn->server_conn->read_closed ) )  {
			CONN_CLOSE_WRITE( pconn );
			if ( 1 == pconn->read_closed )
				return -1;
		}
	}

	/*
	 * it's very important
	 */
	uint32_t clientf = 0, serverf = 0;
	//写缓存中还有数据
	if ( 0 == pconn->write_closed && buffer_size( pconn->write_buffer ) > 0 )
		serverf |= EPOLLOUT;
	//读缓存未满并且未关闭读
	if ( 0 == pconn->read_closed && buffer_size( pconn->read_buffer ) < MAXBUFFSIZE )	
		serverf |= EPOLLIN;			//继续侦听读事件
	epoll_mod_connection( pconn, serverf );

	conn_t	*pclie_conn;
	if ( NULL != ( pclie_conn = pconn->server_conn ) ) {
		if ( 0 == pclie_conn->write_closed && buffer_size( pclie_conn->write_buffer ) > 0 )
			clientf |= EPOLLOUT;
		if ( 0 == pclie_conn->read_closed && buffer_size( pclie_conn->read_buffer ) < MAXBUFFSIZE )
			clientf |= EPOLLIN;
		epoll_mod_connection( pclie_conn, clientf );
	}

	return TRUE;
}
开发者ID:afghanistanyn,项目名称:websshproxy,代码行数:60,代码来源:sock.c


示例9: switch

bool Lexer::skipComments()
{
	// We need to ensure that we have enough characters in the buffer.
	switch (buffer_size()) {
	case 0:
		buffer_put(m_input->get());
	case 1:
		buffer_put(m_input->get());
	case 2:
		buffer_put(m_input->get());
	case 3:
		buffer_put(m_input->get());
	}

	// We have a comment iff it begins with '<!--' sequence.
	if (!(buffer_at(0) == '<' &&
	      buffer_at(1) == '!' &&
	      buffer_at(2) == '-' &&
	      buffer_at(3) == '-'))
	{
		return false;
	}

	buffer_pop();
	buffer_pop();
	buffer_pop();
	buffer_pop();

	for (;;) {
		// TODO: Handle unclosed comments.

		// As above, we enusre that we have enough characters available.
		switch (buffer_size()) {
		case 0:
			buffer_put(m_input->get());
		case 1:
			buffer_put(m_input->get());
		case 2:
			buffer_put(m_input->get());
		}

		// The comment ends only with the '-->' sequence.
		if (buffer_at(0) == '-' &&
		    buffer_at(1) == '-' &&
		    buffer_at(2) == '>')
		{
			buffer_pop();
			buffer_pop();
			buffer_pop();
			break;
		}

		buffer_pop();
	}

	return true;
}
开发者ID:lncosie,项目名称:ogdf,代码行数:57,代码来源:Lexer.cpp


示例10: content

static void content(void)
{
    char current;

    /*
     * We should get one character at a time.
     */
    assert(strlen(yytext) == 1);

    current = yytext[0];
    if (current == EOF)
	return;
    
    if (is_newline(current)) {
	 newline();
	 return;
    }
    buffer_push_char(current_buf, current);

    /*
     * Forcing newline changes 'text' so lets do it after we've pushed
     * it to the buffer.
     */
    if (wrap_long_lines && need_wrap(current_buf)) {
	struct buffer tmp;
	buffer_init(&tmp, buffer_size(current_buf));
	/*
	 * Find last character that was not whitespace
	 */
	for (;;) {
	    int c;
	    if (buffer_size(current_buf) == 0)
		break;

	    c = buffer_pop_char(current_buf);
	    if (is_whitespace(c)) {
		/*
		 * Do not push whitespace because it would appear
		 * after the newline.
		 */
		break;
	    }
	    /*
	     * Characters are put in tmp buffer in reverse order.
	     */
	    buffer_push_char(&tmp, c);
	}
	force_newline_for_wrap(current_buf);
	/*
	 * Restore non-wrapped text into buffer.
	 */
	while (buffer_size(&tmp) > 0) {
	    buffer_push_char(current_buf, buffer_pop_char(&tmp));
	}
	buffer_release(&tmp);
    }
}
开发者ID:penberg,项目名称:xmlindent,代码行数:57,代码来源:indent.c


示例11: reserve

void Attribute::reserve(int numverts, int numtris, int numsteps, int numcurves, int numkeys, bool resize)
{
	if (resize) {
		buffer.resize(buffer_size(numverts, numtris, numsteps, numcurves, numkeys), 0);
	}
	else {
		buffer.reserve(buffer_size(numverts, numtris, numsteps, numcurves, numkeys));
	}
}
开发者ID:JK1337,项目名称:CCSycles,代码行数:9,代码来源:attribute.cpp


示例12: load

const_buffer load(const_buffer& buffer, const_buffer& v)
{
	if(buffer_size(buffer) < buffer_size(v)) {
		throw serialization_error("not enough buffer");
	}

	memcpy(const_cast<uint8*>(buffer_cast<const uint8*>(v))
		, buffer_cast<const uint8*>(buffer), buffer_size(v));
	return buffer + buffer_size(v);
}
开发者ID:chenbk85,项目名称:inet,代码行数:10,代码来源:serialize_extension.cpp


示例13: equal

 bool equal(const consuming_buffers_iterator& other) const
 {
   if (at_end_ && other.at_end_)
     return true;
   return !at_end_ && !other.at_end_
     && buffer_cast<const void*>(first_)
       == buffer_cast<const void*>(other.first_)
     && buffer_size(first_) == buffer_size(other.first_)
     && begin_remainder_ == other.begin_remainder_
     && end_remainder_ == other.end_remainder_;
 }
开发者ID:TheMatthew,项目名称:wcsaga,代码行数:11,代码来源:consuming_buffers.hpp


示例14: vmn_str_prealloc

/**
 * VMNative: string_prealloc( workshop , newsize )
 * Accepts a workshop argument and a number. The newsize is the size to
 * reallocate the workshop buffer to. Preallocate buffer for best performance.
 */
static bool vmn_str_prealloc(VM * vm, VMArg * arg, int argc) {
  VMLibData * data;
  Buffer * buffer;
  int newSize;

  /* check for proper number of arguments */
  if(argc != 2) {
    vm_set_err(vm, VMERR_INCORRECT_NUMARGS);
    return false;
  }

  /* check argument 1 major type */
  if(vmarg_type(arg[0]) != TYPE_LIBDATA) {
    vm_set_err(vm, VMERR_INVALID_TYPE_ARGUMENT);
    return false;
  }

  /* extract the libdata from the argument */
  data = vmarg_libdata(arg[0]);

  /* check libdata type */
  if(!vmlibdata_is_type(data, LIBSTR_STRING_TYPE, LIBSTR_STRING_TYPE_LEN)) {
    vm_set_err(vm, VMERR_INVALID_TYPE_ARGUMENT);
    return false;
  }

  /* check argument 2 type */
  if(vmarg_type(arg[1]) != TYPE_NUMBER) {
    vm_set_err(vm, VMERR_INVALID_TYPE_ARGUMENT);
    return false;
  }

  newSize = (int)vmarg_number(arg[1], NULL);

  /* check buffer size range */
  if(newSize < 1) {
    vm_set_err(vm, VMERR_ARGUMENT_OUT_OF_RANGE);
    return false;
  }

  /* extract the workshop */
  buffer = vmlibdata_data(data);

  /* can't make it smaller, only bigger */
  buffer_resize(buffer, newSize >= buffer_size(buffer)
		? newSize : buffer_size(buffer));

  /* push null result */
  vmarg_push_null(vm);

  /* this function does return a value */
  return true;
}
开发者ID:KaiSmith,项目名称:gunderscript,代码行数:58,代码来源:libstr.c


示例15: stream_check_test

void stream_check_test(Buffer_Set *buffers, void *scratch, int scratch_size){
    int i, page_size, size;
    
    size = buffer_size(&buffers->buffer);
    {
        int size2;
        size2 = buffer_size(&buffers->gap_buffer);
        hard_assert_4tech(size == size2);
        size2 = buffer_size(&buffers->multi_gap_buffer);
        hard_assert_4tech(size == size2);
        size2 = buffer_size(&buffers->rope_buffer);
        hard_assert_4tech(size == size2);
    }

    page_size = 1 << 10;

    char *page_1 = (char*)scratch;
    char *page_2 = page_1 + page_size;
    scratch_size -= page_size*2;
    hard_assert_4tech(scratch_size > 0);
    
    for (i = 0; i < size; i += page_size){
        int end = i + page_size;
        if (end > size) end = size;
        
        buffer_stringify(&buffers->buffer, i, end, page_1);
        
        buffer_stringify(&buffers->gap_buffer, i, end, page_2);
        page_compare(page_1, page_2, page_size);
        
        buffer_stringify(&buffers->multi_gap_buffer, i, end, page_2);
        page_compare(page_1, page_2, page_size);
        
        buffer_stringify(&buffers->rope_buffer, i, end, page_2);
        page_compare(page_1, page_2, page_size);
    }

    for (i = size-1; i > 0; i -= page_size){
        int end = i - page_size;
        if (end < 0) end = 0;
        
        buffer_backify(&buffers->buffer, i, end, page_1);
        
        buffer_backify(&buffers->gap_buffer, i, end, page_2);
        page_compare(page_1, page_2, page_size);
        
        buffer_backify(&buffers->multi_gap_buffer, i, end, page_2);
        page_compare(page_1, page_2, page_size);
        
        buffer_backify(&buffers->rope_buffer, i, end, page_2);
        page_compare(page_1, page_2, page_size);
    }
}
开发者ID:4th-dimention,项目名称:buffer_tests,代码行数:53,代码来源:4coder_test_main.cpp


示例16: check_size

static int
check_size(const struct buffer *b, size_t offset, size_t size, const char *desc)
{
	if (size == 0)
		return 0;

	if (offset >= buffer_size(b) || (offset + size) > buffer_size(b)) {
		ERROR("The file is not large enough for the '%s'. "
		      "%zu bytes @ offset %zu, input %zu bytes.\n",
		      desc, size, offset, buffer_size(b));
		return -1;
	}
	return 0;
}
开发者ID:DatanoiseTV,项目名称:coreboot-apu2,代码行数:14,代码来源:elfheaders.c


示例17: data_received

void data_received(endpoint_t ep, int err, size_t bytes, size_t more_bytes, buffer_t *buffer, void *ctx) {
    context_t *context = ctx;

    fprintf(stdout, "Receival error: %d: %s\n", err, strerror(err));
    if(err) {
        io_service_stop(context->service, true);
        return;
    }

    fprintf(stdout, "Data received (size: %llu): %.*s\n",
            buffer_size(buffer), buffer_size(buffer), buffer_data(buffer));

    io_service_stop(context->service, true);
}
开发者ID:ksergy1,项目名称:chats,代码行数:14,代码来源:udp-client.c


示例18: write_client_handle

/*
 * pconn: client --> proxy, its buffer isn't NULL
 */
int write_client_handle( conn_t *pconn )
{
	log_message( LOG_DEBUG, "in write_client_handle" );

	if ( 1 == pconn->write_closed ) {
		log_message( LOG_WARNING, "try writing to client[%s:%d], but it closed write", inet_ntoa(pconn->addr.sin_addr), ntohs(pconn->addr.sin_port) );
		return -1;
	}

	int bytes;
	bytes = write_buffer( pconn->fd, pconn->write_buffer );
	log_message( LOG_DEBUG, "write %d bytes to client[%s:%d].", bytes, inet_ntoa(pconn->addr.sin_addr), ntohs(pconn->addr.sin_port) );

	if ( g_errno < 0 ) {		//写出错
		CONN_CLOSE_WRITE( pconn );
		if ( 1 == pconn->read_closed )
			return -1;
	}
	else {
		if ( 0==buffer_size(pconn->write_buffer) &&			//发送完缓冲区中的数据
			( NULL==pconn->server_conn ||					//并且server已经不再写
				( NULL!=pconn->server_conn && 1 == pconn->server_conn->read_closed )) )  {
			CONN_CLOSE_WRITE( pconn );
			if ( 1 == pconn->read_closed )
				return -1;
		}
	}

	/*
	 * it's very important
	 */
	uint32_t clientf = 0, serverf = 0;
	if ( NULL != pconn->server_conn ) {
		conn_t	*pserv_conn = pconn->server_conn;
		if ( 0 == pserv_conn->write_closed && buffer_size( pserv_conn->write_buffer ) > 0 )
			serverf |= EPOLLOUT;
		if ( 0 == pserv_conn->read_closed && buffer_size( pserv_conn->read_buffer ) < MAXBUFFSIZE )
			serverf |= EPOLLIN;
		epoll_mod_connection( pserv_conn, serverf );
	}

	if ( 0 == pconn->write_closed && buffer_size( pconn->write_buffer ) > 0 )
		clientf |= EPOLLOUT;
	if ( 0 == pconn->read_closed && buffer_size( pconn->read_buffer ) < MAXBUFFSIZE )
		clientf |= EPOLLIN;
	epoll_mod_connection( pconn, clientf );

	return 0;
}
开发者ID:afghanistanyn,项目名称:websshproxy,代码行数:52,代码来源:sock.c


示例19: difference_type

//实现随机存取,迭代器可以直接跳跃n个距离
  self& operator+=(difference_type n)
  {
    difference_type offset = n + (cur - first);
    if (offset >= 0 && offset < difference_type(buffer_size()))
      cur += n; //目标位置在同一缓冲区内
    else {  //目标位置不在同一缓冲区内
      difference_type node_offset =
        offset > 0 ? offset / difference_type(buffer_size())
                   : -difference_type((-offset - 1) / buffer_size()) - 1;
      set_node(node + node_offset);  //切换到正确的节点(缓冲区)
	  //切换到正确的元素
      cur = first + (offset - node_offset * difference_type(buffer_size()));
    }
    return *this;
  }
开发者ID:liyangddd,项目名称:cplusplus,代码行数:16,代码来源:stl_deque.cpp


示例20: ramp_request_proxy

void
ramp_request_proxy (void* state, void* param, bid_t bid)
{
  ramp_t* ramp = state;
  assert (ramp != NULL);

  assert (buffer_size (bid) == sizeof (proxy_request_t));

  const proxy_request_t* request = buffer_read_ptr (bid);
  ramp_proxy_t* ramp_proxy = malloc (sizeof (ramp_proxy_t));
  ramp_proxy->request = *request;
  assert (automan_declare (ramp->automan,
			   &ramp_proxy->composed,
			   ramp_proxy,
			   ramp_declared,
			   ramp_proxy) == 0);
  assert (automan_create (ramp->automan,
			  &ramp_proxy->aid,
			  &ramp_proxy_descriptor,
			  NULL,
			  ramp_proxy_created,
			  ramp_proxy) == 0);
  assert (automan_compose (ramp->automan,
			   &ramp_proxy->composed,
			   &ramp->self,
			   ramp_integer_out,
			   ramp_proxy,
			   &ramp_proxy->aid,
			   ramp_proxy_integer_in,
			   NULL,
			   NULL,
			   NULL) == 0);
  assert (schedule_system_output () == 0);
}
开发者ID:jrwilson,项目名称:substrate,代码行数:34,代码来源:ramp.c



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
C++ buffer_string_is_empty函数代码示例发布时间:2022-05-30
下一篇:
C++ buffer_req函数代码示例发布时间: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