Приложения
Приложение А. Функции, константы и структуры 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.