size_t wxStreamBuffer::Read(void *buffer, size_t size) { wxASSERT_MSG( buffer, _T("Warning: Null pointer is about to be used") ); /* Clear buffer first */ memset(buffer, 0x00, size); // lasterror is reset before all new IO calls if ( m_stream ) m_stream->Reset(); size_t readBytes; if ( !HasBuffer() ) { wxInputStream *inStream = GetInputStream(); wxCHECK_MSG( inStream, 0, _T("should have a stream in wxStreamBuffer") ); readBytes = inStream->OnSysRead(buffer, size); } else // we have a buffer, use it { size_t orig_size = size; while ( size > 0 ) { size_t left = GetDataLeft(); // if the requested number of bytes if greater than the buffer // size, read data in chunks if ( size > left ) { GetFromBuffer(buffer, left); size -= left; buffer = (char *)buffer + left; if ( !FillBuffer() ) { SetError(wxSTREAM_EOF); break; } } else // otherwise just do it in one gulp { GetFromBuffer(buffer, size); size = 0; } } readBytes = orig_size - size; } if ( m_stream ) m_stream->m_lastcount = readBytes; return readBytes; }
void Poglos(void) { int value = (iChannel0RightIn + iChannel0LeftIn) / 2; Buffor[Buffor_Pozycja] = value; iChannel0LeftOut = value / 2 + GetFromBuffer(6000) / 4 + GetFromBuffer(5000) / 8 + GetFromBuffer(4000) / 8; iChannel0RightOut = iChannel0LeftOut; Buffor_Pozycja = (Buffor_Pozycja + 1) % BUFFOR_SIZE; }
char wxStreamBuffer::GetChar() { wxInputStream *inStream = GetInputStream(); wxCHECK_MSG( inStream, 0, _T("should have a stream in wxStreamBuffer") ); char c; if ( !HasBuffer() ) { inStream->OnSysRead(&c, sizeof(c)); } else { if ( !GetDataLeft() ) { SetError(wxSTREAM_READ_ERROR); c = 0; } else { GetFromBuffer(&c, sizeof(c)); m_stream->m_lastcount = 1; } } return c; }
void Echo(void) { int value = (iChannel0RightIn + iChannel0LeftIn) / 2; Buffor[Buffor_Pozycja] = value; iChannel0LeftOut = value / 2 + GetFromBuffer(1) / 4; iChannel0RightOut = iChannel0LeftOut; Buffor_Pozycja = (Buffor_Pozycja + 1) % BUFFOR_SIZE; }
static void k_read(char *buff, int size) { int i=0; _Cli(); while( !BufferIsEmpty() && i< size ) { buff[i] = GetFromBuffer() ; i++; } _Sti(); }
char wxStreamBuffer::Peek() { wxCHECK_MSG( m_stream && HasBuffer(), 0, _T("should have the stream and the buffer in wxStreamBuffer") ); if ( !GetDataLeft() ) { SetError(wxSTREAM_READ_ERROR); return 0; } char c; GetFromBuffer(&c, sizeof(c)); m_buffer_pos--; return c; }