oolong:~/research/parrot/include/parrot coke$ uname -a
Darwin oolong 7.5.0 Darwin Kernel Version 7.5.0: Thu Aug 5 19:26:16 PDT 2004;
root:xnu/xnu-517.7.21.obj~3/RELEASE_PPC Power Macintosh powerpc
perl is "v5.8.1-RC3"
All tests successful, 4 tests and 52 subtests skipped.
Files=122, Tests=1943, 422 wallclock secs (181.27 cusr + 101.12 csys = 282.39 CPU)
Brent Royal-Gordon via RT wrote:
Leopold Toetsch <[EMAIL PROTECTED]> wrote:
Jeff Clites <[EMAIL PROTECTED]> wrote:
At the same time, I'm not sure why we need this construct in a header:
struct Parrot_Interp;
typedef struct Parrot_Interp *Parrot_Interp;
We don't need it. There was some discussion a while a go. This typedef
should just be removed.
The embedding interface needs the typedef, but it doesn't need it to
have the same name as the struct. The struct is the odd man out
here--the standard used elsewhere in Parrot is:
Struct: struct parrot_whatever_t {...};
Internal typedef: typedef struct parrot_whatever_t Whatever;
External typedef: typedef struct parrot_whatever_t *Parrot_Whatever;
See the String/Parrot_String/parrot_string_t triplet for another
example of this.
I've written a patch to implement this change:
<http://www.brentdax.com/tmp/parrot.interp.patch>
Patch is 1979 lines, or ~81kb, and implements the scheme above.
Amusingly, Parrot is about 172kb smaller with this patch applied--all
those function declarations, I guess. I've reordered the files in the
patch so that the interesting stuff is near the top, and the
machine-generated stuff is at the bottom.
As you might suspect, most of this patch was done with a
one-liner--the moral equivalent of:
find . -xtype f | xargs perl -i -pe 's/struct\s+Parrot_Interp/Interp/'
(although I added some extra code to tell me how many changes were
made in each file).
There are a few files that used macros to shorten declarations
involving a "struct Parrot_Interp *"; these are now unnecessary and
occasionally counterproductive, but I haven't attempted to remove
them.
I've tested this out on my Linux box, navi:
Linux navi 2.4.18-opt #2 SMP Sun May 23 17:39:01 PDT 2004 i686 GNU/Linux
This is perl, v5.8.2 built for i686-linux-thread-multi
and everything seems to work. However, I'd appreciate testing from
people on other platforms, particularly ones with their own platform
files.
Testing or no, I'll apply this in a day or two if there are no objections.