Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.2. Управление работой RDS и функции общего назначения
А.5.2.33. rdsListVarTypes – список названий типов переменных
Функция rdsListVarTypes возвращает динамически созданную строку, содержащую перечисление названий запрошенных типов переменных RDS, разделенных символом перевода строки «\n» (код 10). Такой список можно показывать пользователю для выбора типа переменной.
RDSSTR RDSCALL rdsListVarTypesA( // UTF8 DWORD Flags, // Битовые флаги RDS_HVAR_F* RDSCSTR ExStruct // Исключаемая из списка структура (UTF8) ); RDSWSTR RDSCALL rdsListVarTypesW( // UTF16 DWORD Flags, // Битовые флаги RDS_HVAR_F* RDSWCSTR ExStruct // Исключаемая из списка структура (UTF16) ); // Функция-псевдоним RDSXSTR RDSCALL rdsListVarTypes( // Кодировка по умолчанию DWORD Flags, // Битовые флаги RDS_HVAR_F* RDSXCSTR ExStruct // Исключаемая из списка структура (кодировка по умолчанию) );
Тип указателя на эту функцию
RDS_SDwS (для UTF8) или RDS_WsDwWs (для UTF16)
Параметры
- Flags (DWORD)
- Битовые флаги, указывающие функции, какие типы переменных
нужно включить в список:
Для удобства в «RdsDef.h» описано четыре дополнительных константы, представляющих собой объединение приведенных выше флагов для часто встречающихся случаев. Эти константы можно использовать в параметре функции вместо флагов:
RDS_HVAR_FARRAYS матрицы; RDS_HVAR_F1INDEX массивы (только если установлен флаг RDS_HVAR_FARRAYS, разрешить массивы не разрешая матриц нельзя); RDS_HVAR_FCHAR однобайтовые целые (char); RDS_HVAR_FDOUBLE вещественные двойной точности (double); RDS_HVAR_FFLOAT вещественные одинарной точности (float); RDS_HVAR_FINT четырехбайтовые целые (int); RDS_HVAR_FLOGICAL однобайтовые логические; RDS_HVAR_FRUNTIME переменные, тип которых может изменяться в процессе работы (произвольный тип); RDS_HVAR_FSHORT двухбайтовые целые (short int); RDS_HVAR_FSIGNAL сигналы (однобайтовые логические специального вида, см. §2.5.2 руководства программиста); RDS_HVAR_FSTRING строки; RDS_HVAR_FSTRUCT структуры. Передаваемые в этом параметре флаги частично совпадают с флагами, используемыми вспомогательным объектом редактирования переменных в функции rdsVSExecuteEditor.RDS_HVAR_FALL все типы переменных; RDS_HVAR_FALLNS все типы, кроме сигналов; RDS_HVAR_FALLPLAIN все простые типы, то есть все, кроме структур, матриц/массивов, строк и произвольных типов; RDS_HVAR_FALLPLAINNS все простые типы, кроме сигналов. - ExStruct (RDSCSTR, RDSWCSTR, RDSXCSTR)
- Указатель на строку с именем структуры, которая должна быть исключена из формируемого списка. Если в список нужно включить все структуры, в этом параметре передается NULL. При исключении какой-либо структуры вместе с ней из списка исключаются все структуры, в которых эта используется как тип одного из полей.
Возвращаемое значение
Указатель на сформированную в динамической памяти строку, содержащую названия запрошенных типов, принятые в RDS. Именно такие названия показываются в выпадающих списках стандартных окон редактирования переменных и структур. В случае ошибки (например, если в параметре Flags не установлен ни один флаг типа), функция возвращает NULL.
Примечания
Списки типов, возвращаемых функцией rdsListVarTypes, чаще всего используются моделями блоков и модулями автокомпиляции, позволяющими пользователю задавать структуру переменных блока. Элементы списка, как и в других сервисных функциях RDS, отделяются друг от друга символом перевода строки («\n», код символа 10 в десятичной системе или 0x0A в шестнадцатеричной). Выбранный пользователем элемент списка можно преобразовать в константу типа при помощи функции rdsProcessText, передав ей код операции RDS_PT_VARTYPECHAR.
В параметре ExStruct можно передать имя структуры которая (вместе со всеми использующими ее структурами) должна быть исключена из формируемого списка. Например, если создается пользовательский интерфейс для редактирования полей какой-либо структуры, сама эта структура должна быть исключена из списка возможных типов полей – структура не может быть полем самой себя. По этой же причине необходимо исключить из списка и другие структуры, в которые входит эта.
Функция создает строку в динамической памяти, поэтому после использования эта строка обязательно должна быть освобождена вызовом rdsFree.
См. также
Типы переменных RDS, rdsProcessText, rdsFree, rdsVSExecuteEditor.