Very soon, things will be changed to real tuple inheritance. In
certain cases, with the delegate system, your approach won't work (for
example if some generic word has a default method for objects) so you
may need to define a mixin for indexes. Otherwise, this is a very
nice, well-factored solution.

Actually, there's another way you could go about this: define a single
index class, and make a slot for which type of index it is (which you
can readably store as a symbol). Then, define three predicate classes
which subclass index and check if they have the right symbol. here's
now that'd look:

TUPLE: index fname type ;
C: <index> index

PREDICATE: index pso-index index-type pso-index = ;
PREDICATE: index ops-index index-type ops-index = ;
PREDICATE: index pos-index index-type pos-index = ;

: <pso-index> pso-index <index> ;
: <ops-index> ops-index <index> ;
: <pos-index> pos-index <index> ;

When tuple inheritance is added, the code will be able to look
something like this:

TUPLE: index fname ;

TUPLE: pso-index < index ;
C: <pso-index> pso-index

TUPLE: ops-index < index ;
C: <ops-index> ops-index ;

TUPLE: pos-index < index ;
C: <pos-index> pos-index

Daniel Ehrenberg

On Jan 7, 2008 8:38 AM, Phil Dawes <[EMAIL PROTECTED]> wrote:
> Hi Factor List,
>
> I've got a base class tuple that I want to inherit 3 subclasses from.
> The subclasses don't have state of their own, but are merely used for
> polymorphic method dispatch. I'm using delegates as follows:
>
> <PRIVATE
> TUPLE: index fname ;
> C: <index> index
> PRIVATE>
>
> : construct-index-delegate ( fname subclass -- obj )
>    >r <index> r> construct-empty tuck set-delegate ;
>
> TUPLE: pso-index ;
> TUPLE: osp-index ;
> TUPLE: pos-index ;
>
> : <pso-index> pso-index construct-index-delegate ;
> : <osp-index> osp-index construct-index-delegate ;
> : <pos-index> pos-index construct-index-delegate ;
>
> Is this the best approach?
>
> Cheers,
>
> Phil
>
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2005.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Factor-talk mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/factor-talk
>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Factor-talk mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/factor-talk

Reply via email to