Hooks for Repeatable Attributes

When an attribute implementation having dimensions is used in a hook, the interface for the attribute hooks will be different.

For set/get hooks, the interface is as follows. For example, let’s assume an on set hook is defined for an attribute implementation ‘note’ having dimension 5. Three used attributes are specified, the first one ‘optionalNote’ has no dimension and the other ones (‘extraNotes’ and ‘numbers’) have dimension 2. The last one (‘numbers’) is a long array, while the other ones are strings.

In that case the hook content for the on set hook can for example be:

	if i.optionalNote.iSet then
		o.note(1,1) = i.optionalNote
	else
		io.note.isSet(1) = false
	endif
	o.note(1,2) = i.extraNotes(1,1)
	o.note(1,3) = i.extraNotes(1,2)
	o.note(1,4) = str$(i.numbers(1))
	o.note(1,5) = str$(i.numbers(2))
	return(0) | OK

Note that strings have an extra dimension.