Цитата:
Копируются побитно? А указатели можно класть? А INTEGER?
Берется структура, например, с целым (или указателем)
Код: "OBERON"
MyRec = RECORD
i1: INTEGER;
END;
И копируется побитно. Метаданные дают тип и длину.
Цитата:
Каст возникает не когда кладется, а когда достается, чудес же не бывает? А когда кладется оно падает в рантайме, если тип не угадал? Кстати, а что будет, если положить наследника в контейнер базовых элементов - упадет или обрежется?
ASSERT(v.r.Check(rec), 35) - несоответствие типа добавляемого типу в метаданных
Цитата:
Так а свой компаратор как задается?
Наследуем свой ключ, например LongKey от Base.Key,
Пишем функцию сравнения
Реализуем метод GetComparator
Добавляем новый ключ
Код: "OBERON"
PROCEDURE LongCompare (VAR n1: LONGINT; VAR n2: LONGINT): INTEGER;
BEGIN
RETURN SHORT(n1-n2)
END LongCompare;
PROCEDURE (VAR ri: LongKey) GetComparator* (VAR compare: Base.Comparator);
BEGIN
SYSTEM.PUT(SYSTEM.ADR(compare), SYSTEM.ADR(LongCompare));
END GetComparator;
.................
lri: LongKeyPtr;
.................
NEW(lri); Base.dir.AddKey(lri);