symbian-qemu-0.9.1-12/python-2.6.1/Tools/framer/example.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 """Generate the skeleton for cStringIO as an example of framer."""
       
     2 
       
     3 from framer.bases import Module, Type
       
     4 from framer.member import member
       
     5 
       
     6 class cStringIO(Module):
       
     7     """A simple fast partial StringIO replacement.
       
     8 
       
     9     This module provides a simple useful replacement for the StringIO
       
    10     module that is written in C.  It does not provide the full
       
    11     generality of StringIO, but it provides enough for most
       
    12     applications and is especially useful in conjunction with the
       
    13     pickle module.
       
    14 
       
    15     Usage:
       
    16 
       
    17     from cStringIO import StringIO
       
    18 
       
    19     an_output_stream = StringIO()
       
    20     an_output_stream.write(some_stuff)
       
    21     ...
       
    22     value = an_output_stream.getvalue()
       
    23 
       
    24     an_input_stream = StringIO(a_string)
       
    25     spam = an_input_stream.readline()
       
    26     spam = an_input_stream.read(5)
       
    27     an_input_stream.seek(0)             # OK, start over
       
    28     spam = an_input_stream.read()       # and read it all
       
    29     """
       
    30 
       
    31     __file__ = "cStringIO.c"
       
    32 
       
    33     def StringIO(o):
       
    34         """Return a StringIO-like stream for reading or writing"""
       
    35     StringIO.pyarg = "|O"
       
    36 
       
    37     class InputType(Type):
       
    38         "Simple type for treating strings as input file streams"
       
    39 
       
    40         abbrev = "input"
       
    41 
       
    42         struct = """\
       
    43         typedef struct {
       
    44                 PyObject_HEAD
       
    45                 char *buf;
       
    46                 int pos;
       
    47                 int size;
       
    48                 PyObject *pbuf;
       
    49         } InputObject;
       
    50         """
       
    51 
       
    52         def flush(self):
       
    53             """Does nothing"""
       
    54 
       
    55         def getvalue(self):
       
    56             """Get the string value.
       
    57 
       
    58             If use_pos is specified and is a true value, then the
       
    59             string returned will include only the text up to the
       
    60             current file position.
       
    61             """
       
    62 
       
    63         def isatty(self):
       
    64             """Always returns False"""
       
    65 
       
    66         def read(self, s):
       
    67             """Return s characters or the rest of the string."""
       
    68         read.pyarg = "|i"
       
    69 
       
    70         def readline(self):
       
    71             """Read one line."""
       
    72 
       
    73         def readlines(self, hint):
       
    74             """Read all lines."""
       
    75         readlines.pyarg = "|i"
       
    76 
       
    77         def reset(self):
       
    78             """Reset the file position to the beginning."""
       
    79 
       
    80         def tell(self):
       
    81             """Get the current position."""
       
    82 
       
    83         def truncate(self, pos):
       
    84             """Truncate the file at the current position."""
       
    85         truncate.pyarg = "|i"
       
    86 
       
    87         def seek(self, position, mode=0):
       
    88             """Set the current position.
       
    89 
       
    90             The optional mode argument can be 0 for absolute, 1 for relative,
       
    91             and 2 for relative to EOF.  The default is absolute.
       
    92             """
       
    93         seek.pyarg = "i|i"
       
    94 
       
    95         def close(self):
       
    96             pass
       
    97 
       
    98     class OutputType(InputType):
       
    99         "Simple type for output strings."
       
   100 
       
   101         abbrev = "output"
       
   102 
       
   103         struct = """\
       
   104         typedef struct {
       
   105                 PyObject_HEAD
       
   106                 char *buf;
       
   107                 int pos;
       
   108                 int size;
       
   109                 int softspace;
       
   110         } OutputObject;
       
   111         """
       
   112 
       
   113         softspace = member()
       
   114 
       
   115         def close(self):
       
   116             """Explicitly release resources."""
       
   117 
       
   118         def write(self, s):
       
   119             """Write a string to the file."""
       
   120             # XXX Hack: writing None resets the buffer
       
   121 
       
   122         def writelines(self, lines):
       
   123             """Write each string in lines."""
       
   124 
       
   125 
       
   126 cStringIO.gen()