summaryrefslogtreecommitdiffstats
path: root/Include/cStringIO.h
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1996-12-05 23:30:48 (GMT)
committerGuido van Rossum <guido@python.org>1996-12-05 23:30:48 (GMT)
commit049cd90b93e4d25e0fac18d4cfbba6cc0b0e19d9 (patch)
treef3ffeff6cc07dd3c79358084ce26b4974943ce08 /Include/cStringIO.h
parent81b24c0221fd829d69c43367b1f9eb3c6ac81d70 (diff)
downloadcpython-049cd90b93e4d25e0fac18d4cfbba6cc0b0e19d9.zip
cpython-049cd90b93e4d25e0fac18d4cfbba6cc0b0e19d9.tar.gz
cpython-049cd90b93e4d25e0fac18d4cfbba6cc0b0e19d9.tar.bz2
Jim F's brainchild
Diffstat (limited to 'Include/cStringIO.h')
-rw-r--r--Include/cStringIO.h130
1 files changed, 130 insertions, 0 deletions
diff --git a/Include/cStringIO.h b/Include/cStringIO.h
new file mode 100644
index 0000000..0f7a56d
--- /dev/null
+++ b/Include/cStringIO.h
@@ -0,0 +1,130 @@
+#ifndef CSTRINGIO_INCLUDED
+#define CSTRINGIO_INCLUDED
+/*
+
+ $Id$
+
+ cStringIO C API
+
+ Copyright
+
+ Copyright 1996 Digital Creations, L.C., 910 Princess Anne
+ Street, Suite 300, Fredericksburg, Virginia 22401 U.S.A. All
+ rights reserved. Copyright in this software is owned by DCLC,
+ unless otherwise indicated. Permission to use, copy and
+ distribute this software is hereby granted, provided that the
+ above copyright notice appear in all copies and that both that
+ copyright notice and this permission notice appear. Note that
+ any product, process or technology described in this software
+ may be the subject of other Intellectual Property rights
+ reserved by Digital Creations, L.C. and are not licensed
+ hereunder.
+
+ Trademarks
+
+ Digital Creations & DCLC, are trademarks of Digital Creations, L.C..
+ All other trademarks are owned by their respective companies.
+
+ No Warranty
+
+ The software is provided "as is" without warranty of any kind,
+ either express or implied, including, but not limited to, the
+ implied warranties of merchantability, fitness for a particular
+ purpose, or non-infringement. This software could include
+ technical inaccuracies or typographical errors. Changes are
+ periodically made to the software; these changes will be
+ incorporated in new editions of the software. DCLC may make
+ improvements and/or changes in this software at any time
+ without notice.
+
+ Limitation Of Liability
+
+ In no event will DCLC be liable for direct, indirect, special,
+ incidental, economic, cover, or consequential damages arising
+ out of the use of or inability to use this software even if
+ advised of the possibility of such damages. Some states do not
+ allow the exclusion or limitation of implied warranties or
+ limitation of liability for incidental or consequential
+ damages, so the above limitation or exclusion may not apply to
+ you.
+
+ If you have questions regarding this software,
+ contact:
+
+ info@digicool.com
+ Digital Creations L.C.
+
+ (540) 371-6909
+
+
+ This header provides access to cStringIO objects from C.
+ Functions are provided for calling cStringIO objects and
+ macros are provided for testing whether you have cStringIO
+ objects.
+
+ Before calling any of the functions or macros, you must initialize
+ the routines with:
+
+ PycStringIO_IMPORT
+
+ This would typically be done in your init function.
+
+ $Log$
+ Revision 2.1 1996/12/05 23:30:48 guido
+ Jim F's brainchild
+
+
+*/
+
+
+/* Basic fuctions to manipulate cStringIO objects from C */
+
+/* Read a string. If the last argument is -1, the remainder will be read. */
+static int(*PycStringIO_cread)(PyObject *, char **, int)=NULL;
+
+/* Read a line */
+static int(*PycStringIO_creadline)(PyObject *, char **)=NULL;
+
+/* Write a string */
+static int(*PycStringIO_cwrite)(PyObject *, char *, int)=NULL;
+
+/* Get the cStringIO object as a Python string */
+static PyObject(*PycStringIO_cgetvalue)(PyObject *)=NULL;
+
+/* Create a new output object */
+static PyObject(*PycStringIO_NewOutput)(void)=NULL;
+
+/* Create an input object from a Python string */
+static PyObject(*PycStringIO_NewInput)(PyObject *)=NULL;
+
+/* The Python types for cStringIO input and output objects.
+ Note that you can do input on an output object.
+*/
+static PyObject *PycStringIO_InputType=NULL, *PycStringIO_OutputType=NULL;
+
+/* These can be used to test if you have one */
+#define PycStringIO_InputCheck(O) ((O)->ob_type==PycStringIO_InputType)
+#define PycStringIO_OutputCheck(O) ((O)->ob_type==PycStringIO_OutputType)
+
+/* The following is used to implement PycString_IMPORT: */
+static PyObject *PycStringIO_Module=NULL, *PycStringIO_CObject=NULL;
+
+#define IMPORT_C_OBJECT(N) \
+ if((PycStringIO_CObject=PyObject_GetAttrString(PycStringIO_Module, #N))) { \
+ PycStringIO_ ## N = PyCObject_AsVoidPtr(PycStringIO_CObject); \
+ Py_DECREF(PycStringIO_CObject); }
+
+#define PycString_IMPORT \
+ if((PycStringIO_Module=PyImport_ImportModule("cStringIO"))) { \
+ PycStringIO_InputType=PyObject_GetAttrString(PycStringIO_Module, \
+ "InputType"); \
+ PycStringIO_OutputType=PyObject_GetAttrString(PycStringIO_Module, \
+ "OutputType"); \
+ IMPORT_C_OBJECT(cread); \
+ IMPORT_C_OBJECT(creadline); \
+ IMPORT_C_OBJECT(cwrite); \
+ IMPORT_C_OBJECT(NewInput); \
+ IMPORT_C_OBJECT(NewOutput); \
+ IMPORT_C_OBJECT(cgetvalue); }
+
+#endif /* CSTRINGIO_INCLUDED */