Folks,
Short story: ------------ 1. Array2D must go. 2. Matrix must be a SequenceableCollection 3. We need a new subclass of SequenceableCollection: SubSequenceableCollection.
Long story: ----------- I have been following the following the demise of Array2D and the birth of Matrix with glee as I need a decent table functionality.
A major problem with Array2D, as pointed dout on this list, is that any matrix thing is not two dimensional - only the subscript space is. Further, the name and the interface stink. It should go away.
I have also been fiddling with Magma. It comes to pass that Magma doesn't like to play with Matrix.
On further investigation, Magma was absolved of all guilt - I can make my own Matrix class which works perfectly.
But, the present implementation of Matrix is also flawed in that a matrix IS sequential - after all row major is an ordering. This is why is has to lie in #isSequenceable.
However it is not implemented as a subclass of SequenceableCollection becuase it would then inherit a truck load of methods to do with copying sub-ranges: e.g. #copyFrom:to: and friends.
It also has to reimplement a bucket load of methods to pretend it is sequenceable.
IMHO the situation should be:
Object Collection SequenceableCollection Matrix SubSequenceableCollection NB!!!!! ArrayedCollection Array OrderedCollection ...etc...
Then if the offending methods are moved down to SubSequenceableCollection, all is well.
Regrettably, one cannot change the hierarchy of the collection classes - too dangerous apparently. I suspect something to do with the special objects array.
If anyone knows how to do this, let me know and I will test it.
I am awarding myself a beer in advance.
Cheers
Brent
__________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com