* Doc updates

* Fixes about socket, stream core, a superfluous stream.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1670 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Guilhem Lavaux 1999-02-10 20:01:06 +00:00
parent 5e1962f77f
commit 7f42cff13e
12 changed files with 72 additions and 24 deletions

View File

@ -191,6 +191,7 @@ $$\image{14cm;0cm}{wxclass.ps}$$
\input strlist.tex \input strlist.tex
\input strmbase.tex \input strmbase.tex
\input stream.tex \input stream.tex
\input strmmem.tex
\input sysclevt.tex \input sysclevt.tex
\input settings.tex \input settings.tex
\input tab.tex \input tab.tex

View File

@ -94,3 +94,6 @@ writing data, he has to delete the stream to close it.
An initialized write-only stream. An initialized write-only stream.
\wxheading{See also}
\helpref{wxOutputStream}{wxoutputstream}

View File

@ -30,11 +30,18 @@ TRUE, if the connection is established, else FALSE.
Creates a new input stream on the the specified path. You can use all but seek Creates a new input stream on the the specified path. You can use all but seek
functionnality of wxStream. Seek isn't available on all stream. For example, functionnality of wxStream. Seek isn't available on all stream. For example,
http or ftp streams doesn't deal with it. http or ftp streams doesn't deal with it. Other functions like StreamSize and
Tell aren't available for the moment for this sort of stream.
You will be notified when the EOF is reached by an error.
\wxheading{Return value} \wxheading{Return value}
Returns the initialized stream. You will have to delete it yourself. Returns the initialized stream. You will have to delete it yourself once you
don't use it anymore. The destructor closes the network connection.
\wxheading{See also}
\helpref{wxInputStream}{wxinputstream}
% ---------------------------------------------------------------------------- % ----------------------------------------------------------------------------
\membersection{wxProtocol::Abort}\label{wxprotoabort} \membersection{wxProtocol::Abort}\label{wxprotoabort}
@ -43,7 +50,9 @@ Returns the initialized stream. You will have to delete it yourself.
Abort the current stream. Abort the current stream.
\it{WARNING: It is advised to destroy the input stream instead of aborting the stream this way.} \wxheading{Warning}
It is advised to destroy the input stream instead of aborting the stream this way.
\wxheading{Return value} \wxheading{Return value}
@ -89,4 +98,3 @@ Sets the authentication user. It is mainly useful when FTP is used.
\func{void}{SetPassword}{\param{const wxString\&}{ user}} \func{void}{SetPassword}{\param{const wxString\&}{ user}}
Sets the authentication password. It is mainly useful when FTP is used. Sets the authentication password. It is mainly useful when FTP is used.

View File

@ -48,6 +48,16 @@ functionnalities of a ``normal'' stream.
\wxheading{Warning} \wxheading{Warning}
The "read\_write" mode may not work: it isn't completely finished. The "read\_write" mode may not work: it isn't completely finished.
You can create "memory" streams by this way:
\begin{verbatim}
wxStreamBuffer *sb = new wxStreamBuffer(wxStreamBuffer::read)
wxInputStream *input = new wxInputStream(sb);
sb->Fixed(FALSE); // It can change the size of the buffer.
// input is now a read-only memory stream.
\end{verbatim}
But you should care about destroying the stream buffer \it{YOURSELF}.
\wxheading{See also} \wxheading{See also}

View File

@ -84,5 +84,5 @@ current position in the stream. See \helpref{wxStreamBuffer::Seek}{wxstreambuffe
\constfunc{off_t}{OnSysTell}{\void} \constfunc{off_t}{OnSysTell}{\void}
Internal function. Is is called when the stream buffer needs to know the Internal function. Is is called when the stream buffer needs to know the
current position in the stream. real position in the stream.

View File

@ -27,10 +27,4 @@ class wxMemoryOutputStream: public wxOutputStream {
virtual ~wxMemoryOutputStream(); virtual ~wxMemoryOutputStream();
}; };
class wxMemoryStream: public wxMemoryInputStream, public wxMemoryOutputStream {
public:
wxMemoryStream(char *data = NULL, size_t length = 0);
virtual ~wxMemoryStream();
};
#endif #endif

View File

@ -328,6 +328,7 @@ bool wxFTP::Abort(void)
wxInputStream *wxFTP::GetInputStream(const wxString& path) wxInputStream *wxFTP::GetInputStream(const wxString& path)
{ {
wxString tmp_str; wxString tmp_str;
size_t calc_size;
if (!SendCommand("TYPE I", '2')) if (!SendCommand("TYPE I", '2'))
return NULL; return NULL;

View File

@ -358,6 +358,7 @@ bool wxSocketBase::Close()
wxSocketBase& wxSocketBase::Read(char* buffer, size_t nbytes) wxSocketBase& wxSocketBase::Read(char* buffer, size_t nbytes)
{ {
m_lcount = GetPushback(buffer, nbytes, FALSE); m_lcount = GetPushback(buffer, nbytes, FALSE);
nbytes -= m_lcount;
// If we have got the whole needed buffer or if we don't want to // If we have got the whole needed buffer or if we don't want to
// wait then it returns immediately. // wait then it returns immediately.

View File

@ -285,6 +285,9 @@ size_t wxStreamBuffer::Read(void *buffer, size_t size)
{ {
wxASSERT(m_stream != NULL); wxASSERT(m_stream != NULL);
if (m_mode == write)
return 0;
// ------------------ // ------------------
// Buffering disabled // Buffering disabled
// ------------------ // ------------------
@ -334,6 +337,9 @@ size_t wxStreamBuffer::Read(wxStreamBuffer *s_buf)
char buf[BUF_TEMP_SIZE]; char buf[BUF_TEMP_SIZE];
size_t s = 0, bytes_read = BUF_TEMP_SIZE; size_t s = 0, bytes_read = BUF_TEMP_SIZE;
if (m_mode == write)
return 0;
while (bytes_read == BUF_TEMP_SIZE) { while (bytes_read == BUF_TEMP_SIZE) {
bytes_read = Read(buf, bytes_read); bytes_read = Read(buf, bytes_read);
bytes_read = s_buf->Write(buf, bytes_read); bytes_read = s_buf->Write(buf, bytes_read);
@ -346,6 +352,9 @@ size_t wxStreamBuffer::Write(const void *buffer, size_t size)
{ {
wxASSERT(m_stream != NULL); wxASSERT(m_stream != NULL);
if (m_mode == read)
return 0;
// ------------------ // ------------------
// Buffering disabled // Buffering disabled
// ------------------ // ------------------
@ -392,6 +401,9 @@ size_t wxStreamBuffer::Write(wxStreamBuffer *sbuf)
char buf[BUF_TEMP_SIZE]; char buf[BUF_TEMP_SIZE];
size_t s = 0, bytes_count = BUF_TEMP_SIZE, b_count2; size_t s = 0, bytes_count = BUF_TEMP_SIZE, b_count2;
if (m_mode == read)
return 0;
while (bytes_count == BUF_TEMP_SIZE) { while (bytes_count == BUF_TEMP_SIZE) {
b_count2 = sbuf->Read(buf, bytes_count); b_count2 = sbuf->Read(buf, bytes_count);
bytes_count = Write(buf, b_count2); bytes_count = Write(buf, b_count2);

View File

@ -17,7 +17,6 @@
#endif #endif
#include <wx/stream.h> #include <wx/stream.h>
#include <wx/wfstream.h> #include <wx/wfstream.h>
#include <wx/mstream.h>
#include "mmfile.h" #include "mmfile.h"
@ -44,16 +43,18 @@ wxMMediaFile::wxMMediaFile(wxInputStream& is, bool preload, bool seekable)
m_tmpfname((char *)NULL), m_mfname((char *)NULL), m_tmpfname((char *)NULL), m_mfname((char *)NULL),
m_seekable(seekable) m_seekable(seekable)
{ {
/*
if (preload) { if (preload) {
wxMemoryStream *tmpstream = new wxMemoryStream(); wxStreamBuffer *streamb = new wxStreamBuffer(wxStreamBuffer::read_write);
m_o_temp = tmpstream; streamb->Fixed(FALSE);
m_i_temp = tmpstream; streamb->Flushable(FALSE);
m_o_temp = new wxOutputStream(streamb);
m_i_temp = new wxInputStream(streamb);
m_o_temp->Write(is); m_o_temp->Write(is);
streamb->ResetBuffer();
} }
*/
} }
wxMMediaFile::wxMMediaFile(const wxString& fname) wxMMediaFile::wxMMediaFile(const wxString& fname)
@ -75,16 +76,18 @@ void wxMMediaFile::SetFile(wxInputStream& str, bool preload, bool seekable)
m_ostream = NULL; m_ostream = NULL;
m_seekable = seekable; m_seekable = seekable;
/*
if (preload) { if (preload) {
wxMemoryStream *tmpstream = new wxMemoryStream(); wxStreamBuffer *streamb = new wxStreamBuffer(wxStreamBuffer::read_write);
m_i_temp = tmpstream; streamb->Fixed(FALSE);
m_o_temp = tmpstream; streamb->Flushable(FALSE);
m_o_temp->Write(str); m_o_temp = new wxOutputStream(streamb);
m_i_temp = new wxInputStream(streamb);
m_o_temp->Write(is);
streamb->ResetBuffer();
} }
*/
} }
void wxMMediaFile::SetFile(wxOutputStream& str, bool seekable) void wxMMediaFile::SetFile(wxOutputStream& str, bool seekable)
@ -113,7 +116,9 @@ void wxMMediaFile::CleanUpPrevious()
if (m_ostream) if (m_ostream)
m_ostream->Write(*m_i_temp); m_ostream->Write(*m_i_temp);
delete m_i_temp; // Only one delete because m_tmpo* and m_tmpi* are linked delete m_i_temp->StreamBuffer();
delete m_i_temp;
delete m_o_temp;
if (m_tmpfname) if (m_tmpfname)
wxRemoveFile(m_tmpfname); wxRemoveFile(m_tmpfname);

View File

@ -1,3 +1,12 @@
////////////////////////////////////////////////////////////////////////////////
// Name: sndpcm.cpp
// Purpose: wxMMedia
// Author: Guilhem Lavaux
// Created: 1998
// Updated: 1999
// Copyright: (C) 1997, 1998, 1999, Guilhem Lavaux
// License: wxWindows license
////////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__ #ifdef __GNUG__
#pragma implementation "sndpcm.h" #pragma implementation "sndpcm.h"
#endif #endif
@ -106,9 +115,11 @@ void wxSoundPcmCodec::InputSwapAndSign16()
} else { } else {
while (StreamOk()) { while (StreamOk()) {
temp = GET(); temp = GET();
temp2 = GET();
PUT(temp ^ signer1); PUT(temp ^ signer1);
if (!StreamOk()) { if (!StreamOk()) {
m_in_sound->WriteBack(temp); m_in_sound->WriteBack(temp);
m_in_sound->WriteBack(temp2);
break; break;
} }
PUT(GET() ^ signer2); PUT(GET() ^ signer2);
@ -164,6 +175,7 @@ void wxSoundPcmCodec::OutputSwapAndSign16()
PUT(temp ^ signer1); PUT(temp ^ signer1);
if (!StreamOk()) { if (!StreamOk()) {
m_in_sound->WriteBack(temp); m_in_sound->WriteBack(temp);
m_in_sound->WriteBack(temp2);
break; break;
} }
PUT(temp2 ^ signer2); PUT(temp2 ^ signer2);

View File

@ -20,6 +20,7 @@
#include "mmfile.h" #include "mmfile.h"
#include "wx/string.h" #include "wx/string.h"
#include "wx/window.h" #include "wx/window.h"
#include "wx/frame.h"
/// ///
typedef enum { typedef enum {