Dan Sugalski:
# At 10:31 AM -0800 2/26/02, Brent Dax wrote:
# >Different scopes, different policies. Outside the core (and
# in places
# >with external visibility) we use the Parrot_Foo-type
# pointer-to stuff;
# >inside we use FOO. *This is the same policy we have now*, except for
# >the outside the core part. I want that because I want to present a
# >unified, simple interface to embedders so they don't have to
# sweat the
# >small details.
#
# Hrm. I think I'd prefer to not have differently named typedefs for
# things and pointers to things. We can hide the core struct from the
# outside, but I'd rather not change type things. If it's STRING
# inside, it should be Parrot_String outside, assuming we even expose
# our internal string type in any way.
#
# At the moment I'm not really sure we should be exposing anything past
# PMC and keys, but...
I don't think we can get away with not exposing strings. They're used
everywhere, and they represent tangible data that users will want to get
at.
# >I *really* don't want their program to not work because
# >they typed "Parrot_String" instead of "Parrot_String *".
#
# They'll run into the same problem if they type char instead of char
# *. Those things we don't have to worry about--their compiler will
# catch it, and if it doesn't, well, bugs happen.
But they'll know about char* unless this is their first C program. I
don't think we should expect them to know which of our types should be
used as pointers and which shouldn't.
Look at it this way. Pro: it makes things simpler for embedders and
extenders. Con: it isn't quite the same as the way types are done
internally. Which is more important?
--Brent Dax
[EMAIL PROTECTED]
Parrot Configure pumpking, regex hacker, embedding coder, and boy genius
#define private public
--Spotted in a C++ program just before a #include