[Python-Dev] strop vs. string

M.-A. Lemburg mal@lemburg.com
Mon, 28 May 2001 11:04:51 +0200


Tim Peters wrote:
> 
> [Tim]
> > About combining strop and buffers and strings, don't forget
> > unicodeobject.c:  that's got oodles of basically duplicate code too.
> > /F suggested dealing with the minor differences via maintaining one
> > code file that gets compiled multiple times w/ appropriate #defines.
> 
> [MAL]
> > Hmm, that only saves us a few kB in source, but certainly not
> > in the object files.
> 
> That's not the point.  Manually duplicated code blocks always get out of
> synch, as people fix bugs in, or enhance, one of them but don't even know
> about the others.  /F brought this up after I pissed away a few hours trying
> to repair one of these in all places, and he noted that strop.replace() and
> string.replace() are woefully inefficient anyway.

Ok, so what we'd need is a bunch of generic low-level string 
operations: one set for 8-bit and one for 16-bit code. 

Looking at unicodeobject.c it seems that the section "Helpers" would
be a good start, plus perhaps a few bits from the method implementations
refactored to form a low-level string template library.

Perhaps we should move this code into
a file stringhelpers.h which then gets included by stringobject.c
and unicodeobject.c with appropriate #defines set up for
8-bit strings and for Unicode.

> > The better idea would be making the types subclass from a generic
> > abstract string object -- I just don't know how this will be
> > possible with Guido's type patches. We'll just have to wait,
> > I guess.
> 
> Wait for what?  If it were possible, is the chance that you'd take time to
> rework unicodeobject.c to "subclass from a generic abstract string object"
> greater than 0?  The chance that I would is exactly 0.

Well, that's hard to say. It would certainly be low-priority;
same for the above refactoring.

-- 
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
______________________________________________________________________
Company & Consulting:                           http://www.egenix.com/
Python Software:                        http://www.lemburg.com/python/