I've sent the patch as http://python.org/sf/1761465 using Guido's
suggestion of using bytes, but I do philosophically prefer Talin's and
Ronald's suggestions.

On 7/25/07, Ronald Oussoren <[EMAIL PROTECTED]> wrote:
> I've CC-ed Jack Jansen as he has maintained the Mac libraries for ages (from 
> way before OS9 was shiny and new).

Did you mean to add him to this thread?

> On Wednesday, July 25, 2007, at 07:18AM, "Jeffrey Yasskin" <[EMAIL 
> PROTECTED]> wrote:
> > 5) Make a new hashable class for these codes which converts them to
> >and from ints and bytes and becomes the general argument type for the
> >apple platform interface. [Cleanest, but lots of work that I'm not
> >volunteering to do]
>
> A 6th option is a subclass of int. It's constructor would accept a string 
> containing the 4CC and the repr/str method would return the string 
> representation of the code.  IMHO this is the cleanest representation of 4CCs 
> in Python because those codes are basicy a "neat" way to enter integer 
> literals in C.

Naïve question: How does that differ from option (5)? Just the
isinstance() behavior?

I said this would take a lot of work because I think the new type
needs to be implemented in C to be returned from PyMac_GetOSType(),
and it seemed like a bigger API change than just switching to bytes,
but it turns out that switching to bytes isn't particularly trivial
either when you have to cast for every use in a dict, so maybe the new
type would be easier.

> This would also solve a problem that PyObjC users sometimes run into: Several 
> C/Objective-C APIs return a dictionary where one  of the values is an integer 
> and where one would commonly use 4CCs to write down literals. This currently 
> causes unexpected failures but would do the right thing with this option.

I don't think that option (6) by itself solves with that particular
problem. If you call str() on one of those ints, you'd just get a
number, which is different from what would happen if you call str() on
the 4CC type. It might help though by handling comparisons correctly.

On 7/26/07, Alex Holkner <[EMAIL PROTECTED]> wrote:
> Providing a convenience str() method may be handy, but the internal
> representation must be integer.

Where are you getting "must"? In current python, they're 'str'
instances, not ints. The C interface between python and apple code
converts, of course, but python can do whatever makes the most sense
to us.

-- 
Namasté,
Jeffrey Yasskin
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to