Jiří Zárevúcky <zarevucky.j...@...> writes:

> 
> Dne 21. červenec 2009 17:06 Jiří Zárevúcky <zarevucky.jiri <at> gmail.com>
> napsal(a):
> > 2009/7/21 Julien Fontanet <julien.fontanet <at> isonoe.net>:
> >> How is that possible, the methods' signatures do not match:
> >>  - Collection.add (G item) vs. Map.set (K key, V value)
> >>  - Collection.contains (G item) vs. Map.contains (K key)
> >>  - Collection.remove (K item) vs. Map.remove (K key)
> >>
> >> Collection implements Iterable which provides this method: Iterator<G>
> >> iterator () whereas it should be Iterator<Pair<K, V>> iterator () for 
> >> Map.
> >
> > The trick is that Map<K, V> would implement interface
> > Collection<Pair<K, V>>. Unless there is some serious bug in Vala, it
> > would work perfectly. The .NET framework does it this way and it
> > always worked perfectly for me.
> 
> Ah, I misunderstood your point. You mean that there already are
> methods with different signatures then required by the interface.
> 
> Well, in that case, it's also simple. The colliding methods have to be
> implemented explicitly. nobody would use contains and remove with Pair
> on map anyway. I just don't know how is it with support for explicit
> interface member implementations in Vala.

Considering how interfaces are implemented in Glib, it should be 
implementable.  To overload an interface method, a pointer in the class
object is set to a pointer to the implementing function. So for explicit
interface implementation, the generator would create a function with
different name (<class>_<method>_<interface> instead of <class>_<method>
probably) and assign it to the appropriate member.  Than it would have to
notice it when generating the new method of the same name (which has cname
<class>_<method>, so it does not conflict) and skip setting that pointer.

From quickly glancing at the generator code it does not look like being 
implemented (it was a very very quick glance, though), but it should be
doable. Care just has to be taken to avoid the named constructors feature,
which uses similar syntax.

Regards,
Jan

--
 - Jan Hudec <[email protected]>


_______________________________________________
Vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to