2 problems with derivation



1. (James brought this up a while ago)
  
   The signal signal-closure mechanism seems to be not
   workable as currently implemented because there is no
   way of overriding the class closure in derived types.

   You are storing the class closure with the class,
   but it needs to be stored with the signal.

   So, to make this functional, you need:

    a) A way to associate the class closure with the type.
       (I suppose you could keep list of class closures
       per type in the signal node.)

    b) A way to chain to the parent class's class closure
       during the invocation of the child class's 
       class node

   In some sense, the whole class closure mechanism is
   silly, since we've just introduced interfaces which
   pose exactly the same problems as the default handlers
   for signals.

   I think we need to accept that language bindings will
   either need:

    - Proxy functions written in C
   or:
    - libffi style magic 

2. As far as I know, there is no way to override a parent
   class's implementation of an interface, either entirely
   or partially. 

   I believe this is a fairly serious limitation compared
   to the general way interfaces/multiple-inheritance works in
   most languages.

   I think we really need the same capabilities as we
   have for virtual functions: 

    - Completely or partially override parent implementations
    - Chain to the parent classes implementations 





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]