From cbf60e091efac7f407a650f7ec0fa169be89abd5 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Thu, 28 Feb 2002 15:53:14 +0000 Subject: [PATCH] Moved declaratrions of wxPyInputStream and etc. into it's own header file. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14424 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- wxPython/src/filesys.i | 1 + wxPython/src/helpers.cpp | 1 + wxPython/src/helpers.h | 69 ---------------------------- wxPython/src/msw/filesys.cpp | 1 + wxPython/src/msw/streams.cpp | 1 + wxPython/src/pyistream.h | 87 ++++++++++++++++++++++++++++++++++++ wxPython/src/streams.i | 3 +- 7 files changed, 93 insertions(+), 70 deletions(-) create mode 100644 wxPython/src/pyistream.h diff --git a/wxPython/src/filesys.i b/wxPython/src/filesys.i index 9380577a21..2bab95dee8 100644 --- a/wxPython/src/filesys.i +++ b/wxPython/src/filesys.i @@ -14,6 +14,7 @@ %{ #include "helpers.h" +#include "pyistream.h" #include #include #include diff --git a/wxPython/src/helpers.cpp b/wxPython/src/helpers.cpp index 065e70e0ba..f653ed1c41 100644 --- a/wxPython/src/helpers.cpp +++ b/wxPython/src/helpers.cpp @@ -15,6 +15,7 @@ #undef DEBUG #include #include "helpers.h" +#include "pyistream.h" #ifdef __WXMSW__ #include diff --git a/wxPython/src/helpers.h b/wxPython/src/helpers.h index 5ae8cc62d8..a39d69429c 100644 --- a/wxPython/src/helpers.h +++ b/wxPython/src/helpers.h @@ -76,75 +76,6 @@ void wxPyEndAllowThreads(PyThreadState* state); void wxPyBeginBlockThreads(); void wxPyEndBlockThreads(); -//---------------------------------------------------------------------- -// Handling of wxInputStreams by Joerg Baumann -// See stream.i for implementations - -// list class for return list of strings, e.g. readlines() -WX_DECLARE_LIST(wxString, wxStringPtrList); - - -// C++ class wxPyInputStream to act as base for python class wxInputStream -// You can use it in python like a python file object. -class wxPyInputStream { -public: - // underlying wxInputStream - wxInputStream* m_wxis; - -public: - wxPyInputStream(wxInputStream* wxis) : m_wxis(wxis) {} - ~wxPyInputStream(); - - // python file object interface for input files (most of it) - void close(); - void flush(); - bool eof(); - wxString* read(int size=-1); - wxString* readline(int size=-1); - wxStringPtrList* readlines(int sizehint=-1); - void seek(int offset, int whence=0); - int tell(); - - /* do these later? - bool isatty(); - int fileno(); - void truncate(int size=-1); - void write(wxString data); - void writelines(wxStringPtrList); - */ -}; - - - -// This is a wxInputStream that wraps a Python file-like -// object and calls the Python methods as needed. -class wxPyCBInputStream : public wxInputStream { -public: - ~wxPyCBInputStream(); - virtual size_t GetSize() const; - - // factory function - static wxPyCBInputStream* create(PyObject *py, bool block=TRUE); - -protected: - // can only be created via the factory - wxPyCBInputStream(PyObject *r, PyObject *s, PyObject *t, bool block); - - // wxStreamBase methods - virtual size_t OnSysRead(void *buffer, size_t bufsize); - virtual size_t OnSysWrite(const void *buffer, size_t bufsize); - virtual off_t OnSysSeek(off_t off, wxSeekMode mode); - virtual off_t OnSysTell() const; - - // helper - static PyObject* getMethod(PyObject* py, char* name); - - PyObject* m_read; - PyObject* m_seek; - PyObject* m_tell; - bool m_block; -}; - //---------------------------------------------------------------------- // These are helpers used by the typemaps diff --git a/wxPython/src/msw/filesys.cpp b/wxPython/src/msw/filesys.cpp index 1a48238fae..0cbdf473d1 100644 --- a/wxPython/src/msw/filesys.cpp +++ b/wxPython/src/msw/filesys.cpp @@ -56,6 +56,7 @@ extern PyObject *SWIG_newvarlink(void); #define SWIG_name "filesysc" #include "helpers.h" +#include "pyistream.h" #include #include #include diff --git a/wxPython/src/msw/streams.cpp b/wxPython/src/msw/streams.cpp index e06a968f1f..95a8a66579 100644 --- a/wxPython/src/msw/streams.cpp +++ b/wxPython/src/msw/streams.cpp @@ -56,6 +56,7 @@ extern PyObject *SWIG_newvarlink(void); #define SWIG_name "streamsc" #include "helpers.h" +#include "pyistream.h" #include #include diff --git a/wxPython/src/pyistream.h b/wxPython/src/pyistream.h new file mode 100644 index 0000000000..ab43fa8b8b --- /dev/null +++ b/wxPython/src/pyistream.h @@ -0,0 +1,87 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: pyistream.h +// Purpose: Classes for managing wxInputStream <--> Python streams +// +// Author: Robin Dunn +// +// Created: 25-Sept-2000 +// RCS-ID: $Id$ +// Copyright: (c) 2000 by Total Control Software +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#ifndef __PYISTREAM__ +#define __PYISTREAM__ + + +//---------------------------------------------------------------------- +// Handling of wxInputStreams by Joerg Baumann +// See stream.i for implementations + +// list class for return list of strings, e.g. readlines() +WX_DECLARE_LIST(wxString, wxStringPtrList); + + +// C++ class wxPyInputStream to act as base for python class wxInputStream +// You can use it in python like a python file object. +class wxPyInputStream { +public: + // underlying wxInputStream + wxInputStream* m_wxis; + +public: + wxPyInputStream(wxInputStream* wxis) : m_wxis(wxis) {} + ~wxPyInputStream(); + + // python file object interface for input files (most of it) + void close(); + void flush(); + bool eof(); + wxString* read(int size=-1); + wxString* readline(int size=-1); + wxStringPtrList* readlines(int sizehint=-1); + void seek(int offset, int whence=0); + int tell(); + + /* do these later? + bool isatty(); + int fileno(); + void truncate(int size=-1); + void write(wxString data); + void writelines(wxStringPtrList); + */ +}; + + + +// This is a wxInputStream that wraps a Python file-like +// object and calls the Python methods as needed. +class wxPyCBInputStream : public wxInputStream { +public: + ~wxPyCBInputStream(); + virtual size_t GetSize() const; + + // factory function + static wxPyCBInputStream* create(PyObject *py, bool block=TRUE); + +protected: + // can only be created via the factory + wxPyCBInputStream(PyObject *r, PyObject *s, PyObject *t, bool block); + + // wxStreamBase methods + virtual size_t OnSysRead(void *buffer, size_t bufsize); + virtual size_t OnSysWrite(const void *buffer, size_t bufsize); + virtual off_t OnSysSeek(off_t off, wxSeekMode mode); + virtual off_t OnSysTell() const; + + // helper + static PyObject* getMethod(PyObject* py, char* name); + + PyObject* m_read; + PyObject* m_seek; + PyObject* m_tell; + bool m_block; +}; + +//---------------------------------------------------------------------- +#endif diff --git a/wxPython/src/streams.i b/wxPython/src/streams.i index 4122cf2fce..376b22d0f4 100644 --- a/wxPython/src/streams.i +++ b/wxPython/src/streams.i @@ -2,7 +2,7 @@ // Name: streams.i // Purpose: SWIG definitions of the wxFileSystem family of classes // -// Author: Joerg Baumann +// Author: Joerg Baumann and Robin Dunn // // Created: 25-Sept-2000 // RCS-ID: $Id$ @@ -14,6 +14,7 @@ %{ #include "helpers.h" +#include "pyistream.h" #include #include %} -- 2.47.2