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

C++ pptr函数代码示例

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

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



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

示例1: okay

	/**
		Put bit at put pointer.

		\param[out] b Current bit.
		\return Whether okay (eof has not been encountered).
	*/
	bool sputb(bitfield b)
	{
		// Note: This is an optimization of "return sputn(bitfield, 1) == 1;"

		bool put_succeeded = true;

		if (pptr() == std::streampos(-1) || pptr() == epptr())
		{
			put_succeeded = overflow(b);
		}
		else
		{
			const size_t intra_byte_bit_offset = pptr() % CHAR_BIT;
			const size_t shift_amount = (CHAR_BIT - ((1 + intra_byte_bit_offset) % CHAR_BIT)) % CHAR_BIT;
			const unsigned char mask = ~(1 << shift_amount);
			unsigned char * const byte_pointer = current_put_byte();
			*byte_pointer = *byte_pointer & mask | (b & 1) << shift_amount;

			pbump(1);
		}

		return put_succeeded;
	}
开发者ID:dplong,项目名称:bitstream,代码行数:29,代码来源:iob.hpp


示例2: T

   int
   mlpipebuf::buffer_out()
   {
#ifdef DEBUG
      char *fname = "mlpipebuf::buffer_out()";
      Tracebuf T(fname);
#endif

      int cnt = pptr() - pbase();
      int retval = buffer_to_device(m_outbuf, cnt);
      pbump(-cnt);

      return retval;
   }
开发者ID:bryanhinton,项目名称:mls,代码行数:14,代码来源:mlpipebuf.cpp


示例3: pptr

int callbackBuffer::overflow(int ch)
{
	streamsize n = pptr() - pbase();
	if (n && sync())
		return EOF;
	if (ch != EOF) {
		char cbuf[1];
		cbuf[0] = (char) ch;
		if (write_to_callback(cbuf, 1) != 1)
			return EOF;
	}
	pbump(-n);					// Reset pptr().
	return 0;
}
开发者ID:wreality,项目名称:pstoedit-lmn-laser,代码行数:14,代码来源:cbstream.cpp


示例4: overflow

int scgi_outbuffer::overflow(int c)
{
	int len=pptr()-pbase();
	if(len) {
		int n=safe_write(fd,pbase(),len);
		pbump(-n);
	}
	if(c!=EOF) {
		char b=c;
		if(safe_write(fd,&b,1)<1)
			return EOF;
	}
	return 0;
}
开发者ID:klupek,项目名称:cppcms,代码行数:14,代码来源:scgi.cpp


示例5: pptr

bool ocryptostreambuf::update()
{
  int inl = pptr() - pbase(); // number of bytes to input
  pbump(-inl);
  int outl = 0;
  if (1 != EVP_CipherUpdate(ctx, (uint8_t*)out.data(), &outl, (uint8_t*)pbase(), inl))
    {
      EVP_CIPHER_CTX_free(ctx);
      ctx = NULL;
      return false;
    }
  // output to underlying stream
  return ( output.sputn(out.data(), outl) == outl );
}
开发者ID:jklof,项目名称:cryptostreambuf,代码行数:14,代码来源:cryptostreambuf.cpp


示例6: flushBuffer

    int flushBuffer () { // do the actual write
        int num = (int)(pptr()-pbase());
        if (write(2, buffer, num) != num) { // out to stderr
            return EOF;
        }
		// and log it
		buffer[num] = 0;
		if (!logs_.size()) { // did we recently hose this out?
			logs_.push_back(mprocess::mnote(time(NULL),std::string("")));
		}
		logs_[0].second += buffer;
        pbump (-num);    // reset put pointer accordingly
        return num;
    }
开发者ID:bspratt,项目名称:xtandem-g,代码行数:14,代码来源:mapreducehelper.cpp


示例7: gptr

MessageBuffer::int_type MessageBuffer::overflow(int_type ch)
{
    typedef MessageBuffer::traits_type traits_type;

    if( ! _buffer)
    {
        _bufferSize = BufferSize;
        _buffer = new char[_bufferSize];
        this->setp(_buffer, _buffer + _bufferSize);
        this->setg(_buffer, _buffer, _buffer);
    }
    else
    {
        std::size_t bufsize = _bufferSize + BufferSize;
        char* buf = new char[ bufsize ];
        traits_type::copy(buf, _buffer, _bufferSize);
        std::swap(_buffer, buf);

        this->setp(_buffer, _buffer + bufsize);
        this->pbump(_bufferSize);

        std::size_t gsize = gptr() - eback();
        this->setg(_buffer, _buffer + gsize, pptr());
        
        _bufferSize = bufsize;
        delete [] buf;
    }

    // if the overflow char is not EOF put it in buffer
    if(traits_type::eq_int_type(ch, traits_type::eof()) == false)
    {
        *pptr() = traits_type::to_char_type(ch);
        this->pbump(1);
    }

    return traits_type::not_eof(ch);
}
开发者ID:3Nigma,项目名称:frayon,代码行数:37,代码来源:Message.cpp


示例8: pbump

int LogBuf::overflow(Int32 c)
{
    if(!pptr())
        return EOF;

    if(c != EOF)
    {
        // Put character into write buffer
        *pptr() = c;

        pbump(1);

        // Flush write buffer
        std::streamsize size = pptr() - pbase();

        if(size > 0)
        {
            write(pbase(), size);
            pbump(-size);
        }
    }

    return 0;
}
开发者ID:vossg,项目名称:OpenSGDevMaster,代码行数:24,代码来源:OSGLog.cpp


示例9: Assert

  int bz2streambuf::overflow(int c)
  {
    Assert(write);

    int w = pptr() - pbase();
    if (c != EOF)
    {
      *pptr() = c;
      ++w;
    }

    BZ2_bzWrite(&bzerror, bzfile, pbase(), w * sizeof(char));
    if (bzerror == BZ_OK)
    {
      setp(buf, buf + bufsize - 1);
      return 0;
    }
    else
    {
      error = true;
      setp(0, 0);
      return EOF;
    }
  }
开发者ID:CanoeFZH,项目名称:dx-toolkit,代码行数:24,代码来源:Compress.cpp


示例10: overflow

  /**
   * Behaves according to the specification of @c std::streambuf::overflow(),
   * with the specialisation that @c std::length_error is thrown if appending
   * the character to the input sequence would require the condition
   * <tt>size() > max_size()</tt> to be true.
   */
  int_type overflow(int_type c)
  {
    if (!traits_type::eq_int_type(c, traits_type::eof()))
    {
      if (pptr() == epptr())
      {
        std::size_t buffer_size = pptr() - gptr();
        if (buffer_size < max_size_ && max_size_ - buffer_size < buffer_delta)
        {
          reserve(max_size_ - buffer_size);
        }
        else
        {
          reserve(buffer_delta);
        }
      }

      *pptr() = traits_type::to_char_type(c);
      pbump(1);
      return c;
    }

    return traits_type::not_eof(c);
  }
开发者ID:13609594236,项目名称:ph-open,代码行数:30,代码来源:basic_streambuf.hpp


示例11: seekpos

std::streampos SimpleStreamBuf::seekoff(std::streamoff off, std::ios_base::seekdir dir, std::ios_base::openmode which)
{
    if (dir == std::ios_base::beg)
    {
        return seekpos(off, which);
    }
    else if (dir == std::ios_base::end)
    {
        return seekpos((pptr() - m_buffer) - off, which);
    }
    else if (dir == std::ios_base::cur)
    {
        if(which == std::ios_base::in)
        { 
            return seekpos((gptr() - m_buffer) + off, which);
        }
        else
        {
            return seekpos((pptr() - m_buffer) + off, which);
        }
    }

    return off_type(-1);
}
开发者ID:marcomagdy,项目名称:aws-sdk-cpp,代码行数:24,代码来源:SimpleStreamBuf.cpp


示例12: PHYSFS_write

std::streambuf::int_type COutputStreamBuffer::overflow(std::streambuf::int_type ch)
{
    /* This function should be called when pptr() == epptr(). We use it also in sync()
       so we also have to write data if buffer is not full. */

    if (pbase() == pptr()) // no data to write, sync() called with empty buffer
        return 0;

    // save buffer
    PHYSFS_sint64 bytes_written = PHYSFS_write(m_file, pbase(), 1, pptr() - pbase());
    if (bytes_written <= 0)
        return traits_type::eof();

    pbump(-bytes_written);
    // write final char
    if (ch != traits_type::eof())
    {
        bytes_written = PHYSFS_write(m_file, &ch, 1, 1);
        if (bytes_written <= 0)
            return traits_type::eof();
    }

    return ch;
}
开发者ID:CyborgMaster,项目名称:colobot,代码行数:24,代码来源:outputstreambuffer.cpp


示例13: switch

std::streampos iconvstreambuf::seekoff(std::streamoff off,
  std::ios_base::seekdir way, std::ios_base::openmode which)
{
  // modify off to by relative position from current position
  switch (way) {
    case std::ios_base::beg:
      off -= pos;
    case std::ios_base::cur:
      break;
    default:
      return std::streampos(-1);
  }

  if (which == std::ios_base::in) {
    char *buf_p = gptr() + off;
    // alow seek only on valid data
    if (buf_p < eback() || buf_p > pptr())
        return std::streampos(-1);

    gbump(off);
    pos += off;
    return pos;
  }

  if (which == std::ios_base::out) {
    char *buf_p = pptr() + off;
    // alow seek only on valid data
    if (buf_p < pbase() || buf_p > pptr())
        return std::streampos(-1);

    pbump(off);
    return pos + off;
  }

  return std::streampos(-1);
}
开发者ID:913862627,项目名称:cxxtools,代码行数:36,代码来源:iconvstream.cpp


示例14: LOG

 int ostreambuf::overflow (int c) {
     LOG("bz::ostreambuf::overflow(" << c << ")\t available=" << (available ()) << "\tEOF=" << eof);
     if (eof == c) {
         LOG("\tEOF");
         flush(no_sync);
         return eof;
     } else {
         if (0 == available()) {
             LOG("\t have to flush :[]");
             flush(no_sync);
         }
         *pptr() = static_cast < char >(c);
         pbump(1);
     }
     return c;
 }
开发者ID:zahmed9,项目名称:sim-recon,代码行数:16,代码来源:bz.cpp


示例15: overflow

 // output functions
 int_type overflow (
     int_type c
 )
 {
     if (c != EOF)
     {
         *pptr() = c;
         pbump(1);
     }
     if (flush_out_buffer() == EOF)
     {
         // an error occurred
         return EOF;
     }
     return c;
 }
开发者ID:Iflier,项目名称:dlib,代码行数:17,代码来源:subprocess_stream.cpp


示例16: update

std::streambuf::int_type ocryptostreambuf::overflow(int_type ch)
{
  // overflow is only ever called when buffer is full
  // i think eof never happens in normal course of operation?
  if (!ctx || ch == traits_type::eof() )
    {
      return traits_type::eof();
    }

  update();

  // append remaining char to newly empty buffer
  *pptr() = ch;  pbump(1);

  return ch;
}
开发者ID:jklof,项目名称:cryptostreambuf,代码行数:16,代码来源:cryptostreambuf.cpp


示例17: overflow

 virtual std::streambuf::int_type overflow(std::streambuf::int_type c = traits_type::eof())
 {
     zstrm_p->next_in = reinterpret_cast< decltype(zstrm_p->next_in) >(pbase());
     zstrm_p->avail_in = pptr() - pbase();
     while (zstrm_p->avail_in > 0)
     {
         int r = deflate_loop(Z_NO_FLUSH);
         if (r != 0)
         {
             setp(nullptr, nullptr);
             return traits_type::eof();
         }
     }
     setp(in_buff, in_buff + buff_size);
     return traits_type::eq_int_type(c, traits_type::eof()) ? traits_type::eof() : sputc(c);
 }
开发者ID:mateidavid,项目名称:zstr,代码行数:16,代码来源:zstr.hpp


示例18: sync

int filebuf::sync()
{
//    char* ptr = cur_ptr();
    if (pptr() > pbase())
	if (do_flush()) return EOF;
    if (gptr() != egptr()) {
	streampos delta = gptr() - egptr();
	if (in_backup())
	    delta -= eGptr() - Gbase();
	if (sys_seek(delta, ios::cur) == EOF)
	    return EOF;
    }
    // FIXME: Cleanup - can this be shared?
//    setg(base(), ptr, ptr);
    return 0;
}
开发者ID:LambdaCalculus379,项目名称:SLS-1.02,代码行数:16,代码来源:filebuf.C


示例19: seekp

    inline pos_type seekp(off_type off
                          , ::std::ios_base::seekdir way)
    {
        if (way == ::std::ios_base::cur)
            off += pptr() - begin();
        else if (way == ::std::ios_base::end)
            off += capacity();

        if (off >= 0 && off <= (off_type) capacity() && off >= gptr() - begin())
        {
            setpg(offset(off), gptr());
            return (::std::streampos)(off);
        }

        return (::std::streampos)(::std::_BADOFF);
    }
开发者ID:xzmagic,项目名称:Bex,代码行数:16,代码来源:static_streambuf.hpp


示例20: pbase

int gzfilebuf::flushbuf() {

  int n;
  char *q;

  q = pbase();
  n = pptr() - q;

  if ( gzwrite( file, q, n) < n )
    return EOF;

  setp(0,0);

  return 0;

}
开发者ID:brunobuzzi,项目名称:Dolphin,代码行数:16,代码来源:zfstream.cpp



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

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