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