Навигация:
<< >> Оглавление Указатель

Приложения

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

А.4. Структуры RDS

А.4.17. RDS_VARDESCRIPTION – описание переменной блока

Структура RDS_VARDESCRIPTION используется для получения описания переменной блока и заполняется различными сервисными функциями. Примеры ее использования приведены в §2.7.4 и §2.16.1 руководства программиста.

  typedef struct {
     servSize;         // Размер этой структуры в байтах
     Type;          // Тип переменной (RDS_VARTYPE_*)
     Flags;            // Флаги (RDS_VARFLAG_*)
  
    // Имя переменной
     NameA;          // UTF8
     NameW;         // UTF16
    // Name;        // 
  
    // Имя типа структуры или NULL
     StructTypeA;    // UTF8
     StructTypeW;   // UTF16
    // StructType;  // 
  
     StructFields;  // Число полей (только для структур)
     DataSize;      // Размер блока данных
     Var;        // Идентификатор переменной
     Rank;          // Уровень переменной
  
    // Комментарий переменной
     RemarkA;        // UTF8
     RemarkW;       // UTF16
    // Remark;      // 
  } RDS_VARDESCRIPTION;
  typedef RDS_VARDESCRIPTION *RDS_PVARDESCRIPTION;

Поля структуры

servSize (DWORD)
Размер этой структуры в байтах. Перед вызовом любой сервисной функции, работающей с этой структурой, полю servSize необходимо присвоить значение sizeof(RDS_VARDESCRIPTION).
Type (RDSINT32)
Символ типа переменной (одна из констант RDS_VARTYPE_*).
Flags ()
Набор битовых флагов переменной:
RDS_VARFLAG_INPUT Переменная является входом блока (не может быть установлен одновременно с RDS_VARFLAG_OUTPUT).
RDS_VARFLAG_OUTPUT Переменная является выходом блока (не может быть установлен одновременно с RDS_VARFLAG_INPUT).
RDS_VARFLAG_RUN При срабатывании данного входа автоматически запускается модель (только для переменных – входов блока).
RDS_VARFLAG_MENU Имя переменной присутствует в меню присоединения связи к блоку (только для входов и выходов блоков).
RDS_VARFLAG_SHOWNAME Имя переменной отображается рядом с конечной точкой присоединенной к ней связи (только для входов и выходов блоков, считывается только в момент создания новой связи – далее отображение имени уже определяется параметрами точки этой связи).
RDS_VARFLAG_ONEINDEX Переменная – массив, а не матрица, то есть для ее элементов используется один индекс, а не два (только для переменных типа RDS_VARTYPE_ARRAY).
RDS_VARFLAG_MULTICONN При присоединении связи в меню выбора переменной не скрывать этот вход, если к нему уже присоединена связь. Обычно RDS не показывает в меню присоединения входы блока, на которые уже передаются данные по связям. Однако, при передаче сигналов присоединение нескольких связей к одному входу имеет смысл – получается сигнальная схема «ИЛИ».
RDS_VARFLAG_REMNAME В точке присоединения связи показывать комментарий вместо имени.
Для входов и выходов блока флаги RDS_VARFLAG_INPUT, RDS_VARFLAG_OUTPUT и RDS_VARFLAG_RUN устанавливаются не только для переменных, непосредственно находящихся в структуре переменных блока, но и для их элементов. Например, если какая-либо структура является входом, срабатывание связи которого вызывает запуск модели, флаги RDS_VARFLAG_INPUT и RDS_VARFLAG_RUN будут установлены не только у самой этой структуры, но и у всех ее полей.
NameA (RDSCSTR), NameW (RDSWCSTR), Name (RDSXCSTR)
Указатель на строку во внутренней памяти RDS, в которой хранится имя данной переменной. Функция модели не должна как-либо изменять эту строку, для изменения и переименования переменных блока следует использовать вспомогательный объект, создаваемый функцией rdsVSCreateEditor.
StructTypeA (), StructTypeW (), StructType ()
Указатель на строку во внутренней памяти RDS, в которой хранится название типа структуры, если данная переменная является структурой (тип RDS_VARTYPE_STRUCT). Функция модели не должна изменять эту строку. Если переменная структурой не является, или у структуры нет имени, в этом поле находится значение NULL.
StructFields ()
Число полей в переменной, если она является структурой (тип RDS_VARTYPE_STRUCT). Для всех остальных переменных в это поле записывается ноль.
DataSize ()
Размер в байтах блока данных этой переменной (см. §1.5 и §2.5 руководства программиста), то есть объем памяти, который занимает эта переменная в дереве переменных блока. Например, вещественная переменная двойной точности (double, тип RDS_VARTYPE_DOUBLE) занимает в памяти восемь байтов, строка (тип RDS_VARTYPE_STRING) – четыре байта, поскольку в дереве переменных хранится только указатель на строку, и т.п.
Var (RDS_VHANDLE)
Уникальный идентификатор данной переменной для использования в различных сервисных функциях.
Rank ()
Уровень данной переменной, то есть максимальная вложенность элементов в этой переменной. Например, для любой простой переменной уровень будет равен нулю, для массива или матрицы вещественных чисел – единице (один вложенный элемент), для матрицы матриц целых – двум (внутри этой матрицы – еще одна матрица, внутри которой – целое число, то есть в переменной два элемента, вложенных один в другой). Для структуры уровень будет числом, на единицу большим максимального уровня всех ее полей.
RemarkA (), RemarkW (), Remark ()
Указатель на строку с комментарием переменной или на пустую строку, если его нет. Функция модели не должна как-либо изменять эту строку, для изменения и переименования переменных блока следует использовать вспомогательный объект, создаваемый функцией .

См. также

RDS_BFM_VARCHECK, rdsGetBlockVar, rdsFindStructVar, rdsGetStructVar, rdsGetVarField, rdsFindBlockVar, rdsSetBlockVarFlags, rdsVSCreateEditor, rdsVSGetVarDescription.


<< >> Оглавление Указатель