[net.lang.c++] Xerox Star "traits"

mike@bambi.UUCP (Michael Caplinger) (03/06/86)

Does someone know how the "traits" multiple-inheritance scheme was implemented
on the Xerox Star?  There are a couple of clues in the literature (see
for example the paper in the '82 Siggraph proceedings) but the exact
implementation details were "beyond the scope of this paper."  Other
papers mention something called a "traits manager", but don't say how it
works.

I'm interested in just how they were able to implement this scheme without
bypassing the type checking in Mesa -- particularly for "replaceable"
(read Simula/C++ "virtual") functions, and still not do any lookup/
type resolution at runtime.

	Mike Caplinger
	mike@bellcore.arpa
	ihnp4!bambi!mike

mark@umcp-cs.UUCP (Mark Weiser) (03/11/86)

In article <296@bambi.UUCP> mike@bambi.UUCP writes:
>Does someone know how the "traits" multiple-inheritance scheme was implemented
>on the Xerox Star?  There are a couple of clues in the literature (see
>for example the paper in the '82 Siggraph proceedings) but the exact
>implementation details were "beyond the scope of this paper."  Other
>papers mention something called a "traits manager", but don't say how it
>works.
>

I've used Mesa (have an XDE machine next to me right now), but my reading
of the traits paper is that it was all done with mirrors, or more exactly,
managers.  The paper never comes out and says there was any preprocessor
to Mesa code at all, and if there was, why not say so?  So I think the traits
business was a discipline, programmer enforced, nothing more.  But I would
like to know for sure.
-mark
-- 
Spoken: Mark Weiser 	ARPA:	mark@maryland	Phone: +1-301-454-7817
CSNet:	mark@umcp-cs 	UUCP:	{seismo,allegra}!umcp-cs!mark
USPS: Computer Science Dept., University of Maryland, College Park, MD 20742

rlw@well.UUCP (Bob Weissman) (03/11/86)

In article <185@umcp-cs.UUCP>, mark@umcp-cs.UUCP (Mark Weiser) writes:
> In article <296@bambi.UUCP> mike@bambi.UUCP writes:
> >Does someone know how the "traits" multiple-inheritance scheme was implemented
> >on the Xerox Star?  There are a couple of clues in the literature (see
> >for example the paper in the '82 Siggraph proceedings) but the exact
> >implementation details were "beyond the scope of this paper."  Other
> >papers mention something called a "traits manager", but don't say how it
> >works.
> 
> I've used Mesa (have an XDE machine next to me right now), but my reading
> of the traits paper is that it was all done with mirrors, or more exactly,
> managers.  The paper never comes out and says there was any preprocessor
> to Mesa code at all, and if there was, why not say so?  So I think the traits
> business was a discipline, programmer enforced, nothing more.  But I would
> like to know for sure.

I worked on the Xerox Star.  Traits were indeed more than "mirrors" or
"programmer discipline".  The traits mechanism was a true implementation of
multiple-inheritance subclassing.  Yes, there was a pre-processor stage,
called Trait Analysis, which was run once for each version of Star which
introduced new classes, subclasses, or traits.  

I'm hesitant to give out more details, since I don't have a copy of
the trade-secret agreement I signed with Xerox sitting in front of me.

I refer interested readers to the original Traits paper,
"Traits: An Approach to Multiple-Inheritance Subclassing", by
Curry, Baer, Lipkie, and Lee, in the Proceedings of the SIGOA Conference
on Office Information Systems, 1982, ACM order number 611820.  The
article itself is ACM 0-89791-075-3/82/006/0001.

-- Bob Weissman
   G.WEISSMAN@SU-SCORE.ARPA
   ...!well!rlw