File: //opt/alt/python27/lib64/python2.7/bsddb/dbrecio.pyc
�
�Ю]c           @   s5   d  Z  d d l Z d d l Z d d d �  �  YZ d S(   s�  
File-like objects that read from or write to a bsddb record.
This implements (nearly) all stdio methods.
f = DBRecIO(db, key, txn=None)
f.close()           # explicitly release resources held
flag = f.isatty()   # always false
pos = f.tell()      # get current position
f.seek(pos)         # set current position
f.seek(pos, mode)   # mode 0: absolute; 1: relative; 2: relative to EOF
buf = f.read()      # read until EOF
buf = f.read(n)     # read up to n bytes
f.truncate([size])  # truncate file at to at most size (default: current pos)
f.write(buf)        # write at current position
f.writelines(list)  # for line in list: f.write(line)
Notes:
- fileno() is left unimplemented so that code which uses it triggers
  an exception early.
- There's a simple test set (see end of this file) - not yet updated
  for DBRecIO.
- readline() is not implemented yet.
From:
    Itamar Shtull-Trauring <itamar@maxnm.com>
i����Nt   DBRecIOc           B   st   e  Z d
 d  � Z d �  Z d �  Z d d � Z d �  Z d d � Z d Z	 d
 d	 � Z
 d
 �  Z d �  Z d �  Z
 RS(   c         C   sC   | |  _  | |  _ | |  _ d  |  _ d |  _ d |  _ d |  _ d  S(   Ni    (   t   dbt   keyt   txnt   Nonet   lent   post   closedt	   softspace(   t   selfR   R   R   (    (    s2   /opt/alt/python27/lib64/python2.7/bsddb/dbrecio.pyt   __init__#   s    						c         C   s%   |  j  s! d |  _  |  ` |  ` n  d  S(   Ni   (   R   R   R   (   R	   (    (    s2   /opt/alt/python27/lib64/python2.7/bsddb/dbrecio.pyt   close,   s    		c         C   s   |  j  r t d � n  d S(   Ns   I/O operation on closed filei    (   R   t
   ValueError(   R	   (    (    s2   /opt/alt/python27/lib64/python2.7/bsddb/dbrecio.pyt   isatty1   s    	i    c         C   sc   |  j  r t d � n  | d k r1 | |  j } n | d k rM | |  j } n  t d | � |  _ d  S(   Ns   I/O operation on closed filei   i   i    (   R   R   R   R   t   max(   R	   R   t   mode(    (    s2   /opt/alt/python27/lib64/python2.7/bsddb/dbrecio.pyt   seek6   s    	c         C   s   |  j  r t d � n  |  j S(   Ns   I/O operation on closed file(   R   R   R   (   R	   (    (    s2   /opt/alt/python27/lib64/python2.7/bsddb/dbrecio.pyt   tell?   s    	i����c         C   s�   |  j  r t d � n  | d k  r- |  j } n t |  j | |  j � } | |  j } |  j j |  j d |  j d | d |  j �} | |  _ | S(   Ns   I/O operation on closed filei    R   t   dlent   doff(	   R   R   R   t   minR   R   t   getR   R   (   R	   t   nt   newposR   t   r(    (    s2   /opt/alt/python27/lib64/python2.7/bsddb/dbrecio.pyt   readD   s    	
-	s|  
    def readline(self, length=None):
        if self.closed:
            raise ValueError, "I/O operation on closed file"
        if self.buflist:
            self.buf = self.buf + string.joinfields(self.buflist, '')
            self.buflist = []
        i = string.find(self.buf, '
', self.pos)
        if i < 0:
            newpos = self.len
        else:
            newpos = i+1
        if length is not None:
            if self.pos + length < newpos:
                newpos = self.pos + length
        r = self.buf[self.pos:newpos]
        self.pos = newpos
        return r
    def readlines(self, sizehint = 0):
        total = 0
        lines = []
        line = self.readline()
        while line:
            lines.append(line)
            total += len(line)
            if 0 < sizehint <= total:
                break
            line = self.readline()
        return lines
    c      	   C   s�   |  j  r t d � n  | d  k r- |  j } n<