Ручная реализация Назад В начало Вперед

Объектные индексы типа manual реализуются используя следующий синтаксис:

index [<имя_OBJ_интерфейса>.]<имя_индекса> manual ;

<имя_индекса> - имя объектного индекса, описанного в obj-интерфейсе.

Ручная реализация подразумевает полностью ручной механизм навигации. Это не обязательно должна быть навигация по физическим таблицам. Реально это может быть всё что угодно. При этом объект, имеющий индекс типа manual, должен реализовать объектный интерфейс IManualIndex, который, собственно, будет отвечать за навигацию.

При компиляции прототипа obj-интерфейса происходит создание констант, уникально идентифицирующих:

Номер свойства - константа с префиксом pn.

Формирование имени константы происходит по правилу: pn + имя obj-интерфейса + _ + имя свойства.

Пример: pnITest_pName

Номер объектного индекса - константа с префиксом in.

Формирование имени константы происходит по правилу: in + имя obj-интерфейса + _ + имя объектного индекса

Пример: inITest_iByName

Направление движения - константа с префиксом id.

Эти константы используются в функциях Find и Move.

Доступны следующие константы:

Операции сравнения - константа с префиксом cnd.

Эти константы возвращаются функцией GetFilterSeg.

Доступны следующие константы:

Структура интерфейса IManualIndex:

objInterface IManualIndex;
  function IndexActivated (indexNum : longInt) : word;
  function IndexDeactivated (indexNum : longInt) : word;
  function FilterChanged : word;
  function Count : longInt;
  function Find (direction : byte) : word;
  function Move (direction : byte) : word;
  function GetAddr (var address : comp) : word;
  function GetDirect (address : comp) : word;
end;

Так же вводятся зарегистрированные сервисные функции:

function FilterSegsCount : word;
function ValidateFilterSeg (segNum : word) : boolean;
function ValidateAllFilterSegs : boolean;
function ValidateBooleanFilters : boolean;
function GetFilterSeg ( segNum : word;
						var value : anyType;
						var op : byte;
						var propertyNumber : longInt ) : word;

Использование реляционных свойств аналогично использованию обычных индексов физических таблиц. Отличие состоит в том, что экземпляры ссылок на таблицы заводятся автоматически или посредством синонимов. Экземпляры ссылок же на obj-интерфейсы заводятся посредством секции var. Алгоритм подбора индексов работает как и у физических таблиц.

Версия : Атлантис 5.0.