Changeset 1576

Show
Ignore:
Timestamp:
06/29/04 00:38:41 (20 years ago)
Author:
jalet
Message:

Increased speed by a factor of 2 in PCLXL parser

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/pykota/pdlanalyzer.py

    r1575 r1576  
    2222# 
    2323# $Log$ 
     24# Revision 1.20  2004/06/28 22:38:41  jalet 
     25# Increased speed by a factor of 2 in PCLXL parser 
     26# 
    2427# Revision 1.19  2004/06/28 21:20:30  jalet 
    2528# PCLXL support now works ! 
     
    332335    def handleArray(self, itemsize) :         
    333336        """Handles arrays.""" 
    334         datatype = self.minfile[self.pos] 
    335         self.pos += 1 
     337        pos = self.pos 
     338        datatype = self.minfile[pos] 
     339        pos += 1 
    336340        length = self.tags[ord(datatype)] 
    337         if length is None : 
    338             raise PDLAnalyzerError, "Error on array length at %s" % self.pos 
    339         elif callable(length) : 
     341        if callable(length) : 
     342            self.pos = pos 
    340343            length = length() 
    341         pos = self.pos     
     344            pos = self.pos 
    342345        posl = pos + length 
    343346        sarraysize = self.minfile[pos:posl] 
     
    372375    def embeddedDataSmall(self) : 
    373376        """Handle small amounts of data.""" 
    374         length = ord(self.minfile[self.pos]) 
    375         self.pos += 1 
     377        pos = self.pos 
     378        length = ord(self.minfile[pos]) 
     379        self.pos = pos + 1 
    376380        return length 
    377381         
     
    401405        """Counts pages in a PCLXL (PCL6) document.""" 
    402406        infileno = self.infile.fileno() 
    403         self.minfile = mmap.mmap(infileno, os.fstat(infileno).st_size, access=mmap.ACCESS_READ) 
     407        self.minfile = minfile = mmap.mmap(infileno, os.fstat(infileno).st_size, access=mmap.ACCESS_READ) 
     408        tags = self.tags 
    404409        self.pagecount = 0 
    405         self.pos = self.infile.tell() 
     410        self.pos = pos = self.infile.tell() 
    406411        try : 
    407412            while 1 : 
    408                 char = self.minfile[self.pos] 
    409                 self.pos += 1 
    410                 length = self.tags[ord(char)] 
    411                 if not length :     
     413                char = minfile[pos] 
     414                pos += 1 
     415                length = tags[ord(char)] 
     416                if not length : 
    412417                    continue 
    413418                if callable(length) :     
     419                    self.pos = pos 
    414420                    length = length() 
    415                 self.pos += length     
     421                    pos = self.pos 
     422                pos += length     
    416423        except IndexError : # EOF ? 
    417424            self.minfile.close() # reached EOF