Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.35. Функции поддержки автоматической компиляции моделей
А.5.35.10. rdscompRenameModel – переименовать модель
Функция rdscompRenameModel изменяет имя указанной модели в указанном модуле автокомпиляции.
BOOL RDSCALL rdscompRenameModelA( RDS_COMPHANDLE Module, // Модуль автокомпиляции RDSCSTR OldModelName, // Старое имя (UTF8) RDSCSTR NewModelName, // Новое имя (UTF8) BOOL AllowReplace // Разрешить замену модели ); BOOL RDSCALL rdscompRenameModelW( RDS_COMPHANDLE Module, // Модуль автокомпиляции RDSWCSTR OldModelName, // Старое имя (UTF16) RDSWCSTR NewModelName, // Новое имя (UTF16) BOOL AllowReplace // Разрешить замену модели ); // Функция-псевдоним BOOL RDSCALL rdscompRenameModel( RDS_COMPHANDLE Module, // Модуль автокомпиляции RDSXCSTR OldModelName, // Старое имя (кодировка по умолчанию) RDSXCSTR NewModelName, // Новое имя (кодировка по умолчанию) BOOL AllowReplace // Разрешить замену модели );
Тип указателя на эту функцию
RDS_BChSSB (для UTF8) или RDS_BChWsWsB (для UTF16)
Параметры
- Module (RDS_COMPHANDLE)
- Идентификатор модуля автоматической компиляции, который обслуживает переименовываемую модель.
- OldModelName (RDSCSTR, RDSWCSTR, RDSXCSTR)
- Указатель на строку с текущим именем модели.
- NewModelName (RDSCSTR, RDSWCSTR, RDSXCSTR)
- Указатель на строку с новым именем модели.
- AllowReplace (BOOL)
- TRUE – если модель с именем NewModelName уже есть в модуле Module, она будет отключена от всех блоков, и к ним будет подключена переименованная модель. FALSE – если модель с именем NewModelName уже есть в модуле Module, переименование будет отменено и функция вернет FALSE.
Возвращаемое значение
TRUE – модель переименована, FALSE – в модуле Module нет модели OldModelName или, при AllowReplace==FALSE, модель NewModelName уже используется.
Примечания
Эта функция используется в тех случаях, когда необходимо изменить имя уже используемой модели (например, если в редакторе модели предусмотрена команда «»). При ее вызове RDS последовательно производит следующие действия:
- В модуле Module ищется модель с именем OldModelName. Если ее нет, функция возвращает FALSE.
- В модуле Module ищется модель с именем NewModelName. Если она есть, и в параметре AllowReplace передано FALSE, функция возвращает FALSE.
- Функция модуля Module вызывается для реакции на событие RDS_COMPM_CANRENMODEL. Если функция модуля запретит переименование, rdscompRenameModel вернет FALSE.
- Из памяти RDS выгружается скомпилированная DLL модели OldModelName.
- Если модель NewModelName существует, из памяти RDS выгружается ее скомпилированная DLL, модель отключается от всех блоков и ее данные в памяти уничтожаются. Блоки, к которым она была подключена, подключаются к модели OldModelName.
- Имя модели OldModelName меняется на NewModelName, и модуль автокомпиляции Module вызывается для реакции на событие RDS_COMPM_MODELRENAMED.
- Производится компиляция модели, если это необходимо, скомпилированная DLL модели загружается в память и начинает обслуживать блоки.
Кроме упомянутых событий RDS_COMPM_CANRENMODEL и RDS_COMPM_MODELRENAMED в процессе переименования модели могут возникнуть и другие: RDS_COMPM_DETACHBLOCK и RDS_COMPM_ATTACHBLOCK при передаче блоков от одной модели к другой, RDS_COMPM_MODELCLEANUP при уничтожении данных модели NewModelName и т.п.
Изменение альтернативного имени модели функцией rdscompRenameModel не предусмотрено, для этого следует использовать функцию rdscompSetAltModelName.
См. также
RDS_COMPM_CANRENMODEL, RDS_COMPM_MODELRENAMED, rdscompSetAltModelName.