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

Описания RDS

Приложения

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

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

А.5.15. Работа с матрицами и массивами

А.5.15.3. Макрос RDS_ARRAYEXISTS – проверка наличия элементов в матрице/массиве

# Приложения

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

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

#### А.5.15. Работа с матрицами и массивами

##### А.5.15.3. Макрос RDS_ARRAYEXISTS – проверка наличия элементов в матрице/массиве

Макрос RDS_ARRAYEXISTS проверяет, есть ли элементы в статической или динамической переменной блока, являющейся матрицей или массивом.

      RDS_ARRAYEXISTS(
        baseaddr    // Указатель на переменную
      )

Определение

      #define RDS_ARRAYEXISTS(baseaddr) \
        (*((void**)(baseaddr))!=NULL)

Параметр

baseaddr(указатель)
  Указатель (может быть любого типа, в т.ч. и void*) на данные переменной в дереве переменных блока.

Возвращаемое значение

TRUE – в массиве или матрице есть хотя бы один элемент. FALSE – матрица или массив пусты, то есть не содержат ни одного элемента, и область данных для них не отведена.

Примечания

По указателю baseaddr в дереве переменных блока находятся восемь байтов, описывающих матрицу. Четыре первых байта занимает указатель на данные матрицы. Если матрица пуста, этот указатель будет равен NULL, и макрос RDS_ARRAYEXISTS вернет значение FALSE. Если этот указатель не равен NULL, значит, для матрицы создана область данных со значениями элементов, и макрос вернет TRUE.

Массивы в RDS хранятся в памяти так же, как и матрицы, поэтому этот макрос можно применять как для матриц, так и для массивов. При желании, вместо макросов, работающих непосредственно с данными переменной, для получения описания матрицы или массива можно использовать структуру RDS_ARRAYACCESSDATA и функции, работающие с ней.

Пример

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

См. также

RDS_ARRAYCOLS, RDS_ARRAYROWS, RDS_ARRAYDATA, RDS_ARRAYACCESSDATA.