I think the following would work.

* At the beginning of each parrot source code file there must be at
  least two Parrot-specific defines, e.g.

  #define PARROT_SOURCE
  #define PARROT_SOURCE_REGEXEC_C

  These would declare both being part of Parrot, and being
  a particular file.

  If some kind of clear component architecture emerges, then a third
  define may be in order

  #define PARROT_SOURCE
  #define PARROT_SOURCE_GC
  #define PARROT_SOURCE_BOEHM_C

* The parrot header files should be anal-retentively sorted into
  (at least) three categories:

  * Private to Parrot (intra-source-file protypes, for example).
  * Visible to friends of Parrot (XS, in Perl-5-talk)
  * Public.  This should be kept to minimum, and to prototypes
    and constants.  No dark scary ifdef forests, no hackish
    things mattering only to the Parrot implementation.

  There should be no (accidental) way for things external to Parrot
  to get at the category one: the way to do this would be to use the
  PARROT_SOURCE* defines.

It requires some discipline, yes, but wasn't that the whole idea
of this...?

-- 
$jhi++; # http://www.iki.fi/jhi/
        # There is this special biologist word we use for 'stable'.
        # It is 'dead'. -- Jack Cohen

Reply via email to