| """Generate the skeleton for cStringIO as an example of framer.""" |
| |
| from framer.bases import Module, Type |
| from framer.member import member |
| |
| class cStringIO(Module): |
| """A simple fast partial StringIO replacement. |
| |
| This module provides a simple useful replacement for the StringIO |
| module that is written in C. It does not provide the full |
| generality of StringIO, but it provides enough for most |
| applications and is especially useful in conjunction with the |
| pickle module. |
| |
| Usage: |
| |
| from cStringIO import StringIO |
| |
| an_output_stream = StringIO() |
| an_output_stream.write(some_stuff) |
| ... |
| value = an_output_stream.getvalue() |
| |
| an_input_stream = StringIO(a_string) |
| spam = an_input_stream.readline() |
| spam = an_input_stream.read(5) |
| an_input_stream.seek(0) # OK, start over |
| spam = an_input_stream.read() # and read it all |
| """ |
| |
| __file__ = "cStringIO.c" |
| |
| def StringIO(o): |
| """Return a StringIO-like stream for reading or writing""" |
| StringIO.pyarg = "|O" |
| |
| class InputType(Type): |
| "Simple type for treating strings as input file streams" |
| |
| abbrev = "input" |
| |
| struct = """\ |
| typedef struct { |
| PyObject_HEAD |
| char *buf; |
| int pos; |
| int size; |
| PyObject *pbuf; |
| } InputObject; |
| """ |
| |
| def flush(self): |
| """Does nothing""" |
| |
| def getvalue(self): |
| """Get the string value. |
| |
| If use_pos is specified and is a true value, then the |
| string returned will include only the text up to the |
| current file position. |
| """ |
| |
| def isatty(self): |
| """Always returns False""" |
| |
| def read(self, s): |
| """Return s characters or the rest of the string.""" |
| read.pyarg = "|i" |
| |
| def readline(self): |
| """Read one line.""" |
| |
| def readlines(self, hint): |
| """Read all lines.""" |
| readlines.pyarg = "|i" |
| |
| def reset(self): |
| """Reset the file position to the beginning.""" |
| |
| def tell(self): |
| """Get the current position.""" |
| |
| def truncate(self, pos): |
| """Truncate the file at the current position.""" |
| truncate.pyarg = "|i" |
| |
| def seek(self, position, mode=0): |
| """Set the current position. |
| |
| The optional mode argument can be 0 for absolute, 1 for relative, |
| and 2 for relative to EOF. The default is absolute. |
| """ |
| seek.pyarg = "i|i" |
| |
| def close(self): |
| pass |
| |
| class OutputType(InputType): |
| "Simple type for output strings." |
| |
| abbrev = "output" |
| |
| struct = """\ |
| typedef struct { |
| PyObject_HEAD |
| char *buf; |
| int pos; |
| int size; |
| int softspace; |
| } OutputObject; |
| """ |
| |
| softspace = member() |
| |
| def close(self): |
| """Explicitly release resources.""" |
| |
| def write(self, s): |
| """Write a string to the file.""" |
| # XXX Hack: writing None resets the buffer |
| |
| def writelines(self, lines): |
| """Write each string in lines.""" |
| |
| |
| cStringIO.gen() |