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

Reply via email to