]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/streams.i
added wxRecursionGuard
[wxWidgets.git] / wxPython / src / streams.i
index 376b22d0f40241b602b7907f763d70e37f2675d7..8bf7f2156d904f1400dee93982a58cc7a2d20696 100644 (file)
@@ -28,7 +28,6 @@
 %import _defs.i
 
 %pragma(python) code = "import wx"
-%pragma(python) code = "import string"
 
 //----------------------------------------------------------------------
 // typemaps for wxInputStream
@@ -39,7 +38,7 @@
         $target = temp->m_wxis;
         created = FALSE;
     } else {
-        $target = wxPyCBInputStream::create($source, FALSE);
+        $target = wxPyCBInputStream_create($source, FALSE);
         if ($target == NULL) {
             PyErr_SetString(PyExc_TypeError,"Expected _wxInputStream_p or Python file-like object.");
             return NULL;
     if ($source) {
         _ptr = new wxPyInputStream($source);
     }
-    $target = wxPyConstructObject(_ptr, "wxInputStream", TRUE);
+    $target = wxPyConstructObject(_ptr, wxT("wxInputStream"), TRUE);
 }
 
 //----------------------------------------------------------------------
 
 
-// wxStringPtrList* to python list of strings typemap
-%typemap(python, out) wxStringPtrList* {
-    if ($source) {
-        $target = PyList_New($source->GetCount());
-        wxStringPtrList::Node *node = $source->GetFirst();
-        for (int i=0; node; i++) {
-            wxString *s = node->GetData();
-            PyList_SetItem($target, i, PyString_FromStringAndSize(s->c_str(), s->Len()));
-            node = node->GetNext();
-            delete s;
-        }
-        delete $source;
-    }
-    else
-        $target=0;
-}
-
+//  // wxStringPtrList* to python list of strings typemap
+//  %typemap(python, out) wxStringPtrList* {
+//      if ($source) {
+//          $target = PyList_New($source->GetCount());
+//          wxStringPtrList::Node *node = $source->GetFirst();
+//          for (int i=0; node; i++) {
+//              wxString *s = node->GetData();
+//  #if wxUSE_UNICODE
+//              PyList_SetItem($target, i, PyUnicode_FromUnicode(s->c_str(), s->Len()));
+//  #else
+//              PyList_SetItem($target, i, PyString_FromStringAndSize(s->c_str(), s->Len()));
+//  #endif
+//              node = node->GetNext();
+//              delete s;
+//          }
+//          delete $source;
+//      }
+//      else
+//          $target=0;
+//  }
+
+enum wxSeekMode
+{
+  wxFromStart,
+  wxFromCurrent,
+  wxFromEnd
+};
 
 
 
@@ -101,9 +110,9 @@ public:
     void close();
     void flush();
     bool eof();
-    wxString* read(int size=-1);
-    wxString* readline(int size=-1);
-    wxStringPtrList* readlines(int sizehint=-1);
+    PyObject* read(int size=-1);
+    PyObject* readline(int size=-1);
+    PyObject* readlines(int sizehint=-1);
     void seek(int offset, int whence=0);
     int tell();
 
@@ -114,6 +123,16 @@ public:
       void write(wxString data);
       void writelines(wxStringPtrList);
     */
+
+    char Peek();
+    char GetC();
+    size_t LastRead();
+    bool CanRead();
+    bool Eof();
+    bool Ungetch(char c);
+
+    long SeekI(long pos, wxSeekMode mode = wxFromStart);
+    long TellI();
 }
 
 
@@ -137,8 +156,16 @@ public:
     */
 
     %addmethods {
-        void write(const wxString& str) {
-            self->Write(str.c_str(), str.Length());
+        void write(PyObject* obj) {
+            // We use only strings for the streams, not unicode
+            PyObject* str = PyObject_Str(obj);
+            if (! str) {
+                PyErr_SetString(PyExc_TypeError, "Unable to convert to string");
+                return;
+            }
+            self->Write(PyString_AS_STRING(str),
+                        PyString_GET_SIZE(str));
+            Py_DECREF(str);
         }
     }
 };