Приложения
Приложение А. Функции, константы и структуры RDS
А.3. События модуля автокомпиляции и связанные с ними структуры
А.3.4. События модуля автокомпиляции
А.3.4.6. RDS_COMPM_COMPILE – компиляция моделей
Первый параметр функции модуля (int CallMode)
Константа RDS_COMPM_COMPILE.
Третий параметр функции модуля (void *ExtParam)
Указатель на структуру RDS_COMPILEDATA, содержащую список моделей, которые должны быть скомпилированы.
Возвращаемое функцией модуля значение
| RDS_COMPR_DONE | Модели скомпилированы. |
| RDS_COMPR_ERROR | Модели не скомпилированы. |
Примечания
Событие RDS_COMPM_COMPILE возникает в тот момент, когда нужно скомпилировать все обслуживаемые модулем модели. Необходимость компиляции проверяется при вызове реакции на другое событие, RDS_COMPM_PREPARE, которая вызывается для каждой модели в отдельности. В отличие от RDS_COMPM_PREPARE, событие RDS_COMPM_COMPILE возникает не для каждой модели, а один раз для всего модуля. Именно в реакции на него обычно выполняются все основные действия модуля: формирование исходного текста программы, вызов компилятора, обработка ошибок компиляции и т.п. Кроме того, если в параметрах модели задается структура статических переменных блока (а, как правило, это необходимо), в этой реакции всем блокам, которым назначена эта модель, присваивается указанная структура переменных.
В параметре ExtParam при реакции на событие RDS_COMPM_COMPILE передается указатель на структуру RDS_COMPILEDATA:
typedef struct { RDS_PCOMPMODELDATA *InvalidModels; // Модели, которые нужно компилировать RDSINT32 IMCount; // Размер массива InvalidModels BOOL Rebuild; // Принудительная перекомпиляция всех моделей } RDS_COMPILEDATA; typedef RDS_COMPILEDATA *RDS_PCOMPILEDATA;
Поля структуры
- InvalidModels (RDS_PCOMPMODELDATA*)
- Массив указателей на структуры данных RDS_COMPMODELDATA тех моделей, которые должны быть скомпилированы. Этот массив формируется RDS, функция модуля не должна менять его элементы. Модуль должен скомпилировать модели InvalidModels[0] … InvalidModels[IMCount-1].
- IMCount (RDSINT32)
- Число моделей, которые необходимо скомпилировать, то есть размер массива InvalidModels.
- Rebuild (BOOL)
- TRUE, если пользователь выбрал принудительную компиляцию всех моделей схемы, FALSE в противном случае. Независимо от значения этого поля, функция модуля должна скомпилировать только те модели, указатели на данные которых находятся в массиве InvalidModels. При принудительной компиляции этот массив будет содержать все модели блоков, обслуживаемые данным модулем.
См. также