本文整理汇总了C++中refill函数的典型用法代码示例。如果您正苦于以下问题:C++ refill函数的具体用法?C++ refill怎么用?C++ refill使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了refill函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: memcpy
// ******************************************************
uint32_t dmx_demuxerMSDVR::read(uint8_t *w,uint32_t len)
{
uint32_t mx;
// enough in buffer ?
if(_pesBufferIndex+len<=_pesBufferLen)
{
memcpy(w,_pesBuffer+_pesBufferIndex,len);
_pesBufferIndex+=len;
consumed+=len;
return len;
}
// flush
mx=_pesBufferLen-_pesBufferIndex;
if(mx)
{
memcpy(w,_pesBuffer+_pesBufferIndex,mx);
_pesBufferIndex+=mx;
consumed+=mx;
w+=mx;
len-=mx;
}
if(!refill())
{
printf("Refill failed at %d \n",_pesBufferStart);
_lastErr=1;
return 0;
}
return mx+read(w,len);
}
示例2: refill
// -------------------------------------------------------
// next level
// -------------------------------------------------------
void Board::nextLevel(int level) {
_hover = -1;
_killed = 0;
_maxBombs = level * 2;
refill();
_grid.decrementBombs();
}
示例3: REQUIRE
int ScanStreamBase::get( void )
//-----------------------------
{
REQUIRE( !_error, "ScanStreamBase::get with _error ! " );
if( _eof ) {
return EOF;
}
if( _usePrev ) {
_usePrev = false;
_eof = _prevEOF;
return _prevChar;
}
int ret = _buffer[ _currPos ];
_currPos += 1;
if( _currPos > _endPos ) {
refill();
}
if( ret == '\n' ) {
_line += 1;
}
return ret;
}
示例4: _inStream
VorbisStream::VorbisStream(Common::SeekableReadStream *inStream, DisposeAfterUse::Flag dispose) :
_inStream(inStream),
_disposeAfterUse(dispose),
_length(0, 1000),
_bufferEnd(_buffer + ARRAYSIZE(_buffer)) {
int res = ov_open_callbacks(inStream, &_ovFile, NULL, 0, g_stream_wrap);
if (res < 0) {
warning("Could not create Vorbis stream (%d)", res);
_pos = _bufferEnd;
return;
}
// Read in initial data
if (!refill())
return;
// Setup some header information
_isStereo = ov_info(&_ovFile, -1)->channels >= 2;
_rate = ov_info(&_ovFile, -1)->rate;
#ifdef USE_TREMOR
_length = Timestamp(ov_time_total(&_ovFile, -1), getRate());
#else
_length = Timestamp(uint32(ov_time_total(&_ovFile, -1) * 1000.0), getRate());
#endif
}
示例5: memcpy
/**
\fn peek
*/
bool ADM_audioStreamBuffered::peek(uint32_t n,uint8_t *d)
{
if(start+n>=limit) refill();
if(start+n>=limit) return false;
memcpy(d,buffer.at(start),n);
return true;
}
示例6: ScanStreamBase
ScanStreamFile::ScanStreamFile( const char * fname )
: ScanStreamBase()
, _fileName( fname )
//--------------------------------------------------
{
char buffer[ _MAX_PATH ];
_handle = open( fname, O_TEXT | O_RDONLY );
for( int i = 0; i < _searchPaths.count() &&
_handle < 0 && errno == ENOENT; i += 1 ) {
strcpy( buffer, _searchPaths[ i ] );
char c = buffer[ strlen( buffer ) - 1 ];
if( !strchr( PathDelim, c ) ) {
strcat( buffer, "/" );
}
strcat( buffer, fname );
_handle = open( buffer, O_TEXT | O_RDONLY );
}
if( _handle < 0 ) {
if( errno != ENOENT ) {
errMessage( "ScanStream::Streamfile - [%s]: %s", fname, strerror( errno ) );
} else {
_error = true;
}
} else {
_endPos = SECTOR_SIZE; // so refill won't think eof.
refill();
}
}
示例7: FS_getChar
int FS_getChar(int dev)
{
struct FileStream *f;
if (opened(dev, 1) == -1)
{
return -1;
}
f = g_file[dev];
if (f->inSize == f->inCapacity && refill(dev) == -1)
{
return -1;
}
FS_errmsg = (const char *)0;
if (f->inSize + 1 == f->inCapacity)
{
char ch = f->inBuf[f->inSize];
f->inSize = f->inCapacity = 0;
return ch;
}
else
{
return f->inBuf[f->inSize++];
}
}
示例8: aprintf
/**
\fn getNextFrame
*/
bool resampleFps::getNextFrame(uint32_t *fn,ADMImage *image)
{
if(!prefillDone) // Empty, need 1/ to refill, 2/ to rebase
{
if(false==refill()) return false;
baseTime=frames[1]->Pts; // We start at the first frame
if(false==refill()) return false;
prefillDone=true;
}
float offset=configuration.newFpsDen;
offset*=1000000LL;
offset*=nextFrame;
offset=(offset+(configuration.newFpsNum/2-1))/configuration.newFpsNum;
uint64_t thisTime=baseTime+(uint64_t)offset;
again:
uint64_t frame1Dts=frames[0]->Pts;
uint64_t frame2Dts=frames[1]->Pts;
aprintf("Frame : %d, timeIncrement %d ms, Wanted : %" PRIu64", available %" PRIu64" and %" PRIu64"\n",
nextFrame,info.frameIncrement/1000,thisTime,frame1Dts,frame2Dts);
if(thisTime>frame1Dts && thisTime>frame2Dts)
{
if(false==refill()) return false;
goto again;
}
if(thisTime<frame1Dts && thisTime<frame2Dts)
{
image->duplicate(frames[0]);
image->Pts=thisTime;
*fn=nextFrame++;
return true;
}
// In between, take closer
double diff1=(double)thisTime-double(frame1Dts);
double diff2=(double)thisTime-double(frame2Dts);
if(diff1<0) diff1=-diff1;
if(diff2<0) diff2=-diff2;
int index=1;
if(diff1<diff2) index=0;
image->duplicate(frames[index]);
image->Pts=thisTime;
*fn=nextFrame++;
return true;
}
示例9: while
/**
\fn needBytes
*/
bool ADM_audioStreamBuffered::needBytes(uint32_t nbBytes)
{
while(1)
{
if((limit-start)>=nbBytes) return true;
if(false==refill()) return false;
}
}
示例10: refill
int DialogSocket::peek()
{
refill();
if (_pNext != _pEnd)
return std::char_traits<char>::to_int_type(*_pNext);
else
return EOF_CHAR;
}
示例11: peek
int32_t BufferedReader::peek() {
if (bufferPosition >= bufferLength) {
if (refill() == READER_EOF) {
return READER_EOF;
}
}
return buffer[bufferPosition];
}
示例12: refill
int StompSocket::get()
{
refill();
//std::cout << "get()==" << *_pNext << "(" << ((int) *_pNext) << ")" << std::endl;
if (_pNext != _pEnd)
return std::char_traits<char>::to_int_type(*_pNext++);
else
return EOF_CHAR;
}
示例13: refill
/// Return the next element in the chunk.
inline std::vector<flexible_type>&& sframe_reader_buffer::next() {
if (m_buffer_pos == m_buffer.size()) {
refill();
m_buffer_pos = 0;
}
DASSERT_LT(m_buffer_pos, m_buffer.size());
++m_iter;
return std::move(m_buffer[m_buffer_pos++]);
}
示例14: refill
T&& sarray_reader_buffer<T>::next() {
if (m_buffer_pos == m_buffer.size()) {
refill();
m_buffer_pos = 0;
}
DASSERT_LT(m_buffer_pos, m_buffer.size());
++m_iter;
return std::move(m_buffer[m_buffer_pos++]);
}
示例15: QWidget
ThumbWidget::ThumbWidget(const SVGInfo &info, bool compare, QWidget *parent) :
QWidget(parent)
{
setupUi(this);
#ifdef Q_OS_WIN
frame->setFrameShadow(QFrame::Plain);
#endif
refill(info, compare);
}