Clase wxInputStream
wxInputStream es una clase base abstracta que no puede ser utilizada directamente.
Jerarquía:

Es la clase base de todos los flujos que proporcionan una función Read(), es decir, que se pueden utilizar para leer datos de una fuente (por ejemplo, un archivo, un socket, etc).
Si se quiere crear flujo de entrada propio, se necesitará derivar de esta clase e implementar únicamente la función protegida OnSysRead().
Funciones miembro
wxInputStream()
wxInputStream::wxInputStream()
Crea un flujo de entrada ficticio.
~wxInputStream()
virtual wxInputStream::~wxInputStream()
Destructor.
CanRead()
virtual bool wxInputStream::CanRead() const
Devuelve true si hay datos disponibles en el flujo en este momento, de forma que la llamada a Read() no se bloquee.
Eof()
virtual bool wxInputStream::Eof() const
Devuelve true después de que se haya intentado leer más allá del final del flujo.
GetC()
int wxInputStream::GetC()
Devuelve el primer carácter de la cola de entrada y lo elimina, bloqueando hasta que aparezca si es necesario.
En caso de éxito devuelve un valor entre 0 - 255; al final del fichero devuelve wxEOF.
LastRead()
virtual size_t wxInputStream::LastRead() const
Devuelve el último número de bytes leídos.
OnSysRead()
size_t wxInputStream::OnSysRead( void * buffer, size_t bufsize )
Función interna.
Es llamada cuando el stream quiere leer datos del tamaño especificado bufsize y quiere que sean colocados dentro del buffer.
Debe devolver el tamaño que se ha leído realmente o cero si se ha alcanzado el EOF o se ha producido un error (en este último caso, la variable interna m_lasterror también debe establecerse en consecuencia).
Peek()
virtual char wxInputStream::Peek()
Devuelve el primer carácter de la cola de entrada sin eliminarlo.
Read()
virtual wxInputStream& wxInputStream::Read( void * buffer, size_t size )
Lee la cantidad especificada de bytes y almacena los datos en el buffer.
Para comprobar si la llamada se ha realizado correctamente se debe utilizar LastRead() para comprobar si esta llamada realmente leyó size bytes de tamaño (si no lo hizo, GetLastError() debería devolver un valor significativo).
Advertencia
Es absolutamente necesario que el buffer tenga al menos el tamaño especificado.
Valor de retorno
Esta función devuelve una referencia sobre el objeto actual, por lo que el usuario puede comprobar cualquier estado del flujo inmediatamente.
Read()
wxInputStream& wxInputStream::Read(wxOutputStream & stream_out)
Lee datos de la cola de entrada y los almacena en el flujo de salida especificado.
Los datos se leen hasta que se produce un error en uno de los dos flujos.
Valor de retorno
Esta función devuelve una referencia sobre el objeto actual, por lo que el usuario puede comprobar cualquier estado del flujo inmediatamente.
ReadAll()
bool wxInputStream::ReadAll( void * buffer, size_t size )
Lee exactamente el número especificado de bytes en el buffer.
Devuelve true solo si se ha leído toda la cantidad de datos, en caso contrario devuelve false y el número de bytes realmente leídos puede recuperarse utilizando LastRead(), como con Read().
Este método utiliza llamadas repetidas a Read() (que puede devolver después de leer un número de bytes inferior al solicitado) si es necesario.
Advertencia
Es absolutamente necesario que el buffer tenga al menos el tamaño especificado.
SeekI()
virtual wxFileOffset wxInputStream::SeekI( wxFileOffset pos, wxSeekMode mode = wxFromStart )
Cambia la posición actual del flujo.
Esta operación en general solo es posible para flujos con opción de búsqueda (véase wxStreamBase::IsSeekable()); los flujos sin opción de búsqueda solo soportan la búsqueda de cantidades positivas en modo wxFromCurrent (esto se implementa leyendo datos y simplemente descartándolos).
Parámetros
- pos
- Desplazamiento a buscar.
- mode
- Uno de wxFromStart, wxFromEnd, wxFromCurrent.
Valor de retorno
La nueva posición del flujo o wxInvalidOffset en caso de error.
TellI()
virtual wxFileOffset wxInputStream::TellI() const
Devuelve la posición actual del flujo o wxInvalidOffset si no está disponible (p.ej. los flujos de socket no tienen un tamaño ni una posición de flujo actual).
Ungetch()
bool wxInputStream::Ungetch(char c)
Esta función actúa como la anterior, salvo que solo toma un carácter: a veces es más corta de usar que la función genérica.
Ungetch()
size_t wxInputStream::Ungetch( const void * buffer, size_t size )
Esta función solo es útil en modo lectura.
Es el gestor del búfer "Write-Back". Este buffer actúa como un buffer temporal donde se colocan los datos que tienen que ser leídos durante la siguiente llamada IO de lectura. Esto es útil cuando se obtiene un gran bloque de datos que no se quería leer: se pueden reemplazar en la parte superior de la cola de entrada de esta manera.
Hay que tener mucho cuidado con esta llamada en conexión con la llamada a SeekI() en el mismo flujo. Cualquier llamada a SeekI() invalidará cualquier llamada previa a este método (de otro modo se podría SeekI() a una posición, "leer" unos pocos bytes allí, SeekI() a otra posición y los datos se perderían o corromperían).
Valor de retorno
Devuelve la cantidad de bytes guardados en el buffer Write-Back.
Métodos y datos heredados
Esta clase hereda los métodos y datos miembro públicos y protegidos de wxStreamBase.