Текущий раздел:

Описания RDS

Приложения

Приложение А. Функции, константы и структуры RDS

А.5. Сервисные функции и макросы RDS

А.5.24. Вспомогательный объект для работы со списком блоков и связей

А.5.24.6. Команда RDS_HBCL_BLOCKARRAY – получение массива блоков

# Приложения

## Приложение А. Функции, константы и структуры RDS

### А.5. Сервисные функции и макросы RDS

#### А.5.24. Вспомогательный объект для работы со списком блоков и связей

##### А.5.24.6. Команда RDS_HBCL_BLOCKARRAY – получение массива блоков

Команда RDS_HBCL_BLOCKARRAY позволяет получить указатель на внутренний массив идентификаторов блоков в объекте-списке и общее число идентификаторов в этом массиве.

Вызов команды

      int iCount;
      RDS_BHANDLE *arrBlocks=(RDS_BHANDLE*)rdsGetObjectArray(
        List,RDS_HBCL_BLOCKARRAY,0,&iCount);

Параметры и результат

List(RDS_HOBJECT)
  Идентификатор вспомогательного объекта-списка, ранее созданного функцией rdsBCLCreateList.
iCount(int)
  Целая (int) переменная, в которую функция rdsGetObjectArray запишет общее число блоков в списке. Вместо указателя на эту переменную можно передать NULL, если размер списка не нужен вызывающей программе.
arrBlocks(RDS_BHANDLE*)
  Указатель на первый элемент массива идентификаторов блоков. Функция rdsGetObjectArray возвращает указатель общего вида, поэтому перед использованием его нужно привести к типу «указатель на RDS_BHANDLE» (RDS_BHANDLE*).

Примечания

Команда RDS_HBCL_BLOCKARRAY, переданная через сервисную функцию rdsGetObjectArray, возвращает указатель на первый элемент внутреннего массива идентификаторов блоков из объекта List. Если командой RDS_HBCL_AUTODELETE включено отслеживание удаления блоков, некоторые элементы этого массива могут иметь значение NULL. В приведенной выше записи вызова команды общее число элементов в массиве (включая элементы со значением NULL) записывается в переменную iCount. Идентификаторы блоков будут элементами массива arrBlocks: от arrBlocks[0] до arrBlocks[iCount-1].

Следует помнить, что указатель на внутренний массив идентификаторов, возвращаемый функцией rdsGetObjectArray, можно использовать только до тех пор, пока вызовом функции rdsBCLAddBlock в список не будет добавлен новый блок. Добавление нового блока может привести к отведению нового массива и уничтожению старого, поэтому после добавления блоков указатель на массив идентификаторов нужно получать заново.

Пример

Пример использования команды RDS_HBCL_BLOCKARRAY приведен в §2.16.2 руководства программиста.

См. также

rdsBCLCreateList, rdsGetObjectArray, RDS_HBCL_AUTODELETE, rdsBCLAddBlock.