Файлы Шаблона генерации кода (CGT)

Файлы Шаблона генерации кода (CGT) задают организацию верхнего уровня и форматирование сгенерированного исходного кода и заголовочных файлов. Файлы CGT имеют следующие приложения:

  • Генерация пользовательских баннеров (комментирует разделы) в файлах кода. Смотрите Генерируют Пользовательский Файл и Функциональные Баннеры.

  • Генерация пользовательского кода с помощью шаблона CFP требует файла CGT. Чтобы использовать шаблоны CFP, необходимо изучить файловую структуру CGT. Во многих случаях, однако, можно использовать файл CGT по умолчанию, не изменяя его.

Файл CGT по умолчанию

Программное обеспечение генерации кода обеспечивает файл CGT по умолчанию, matlabroot/toolbox/rtw/targets/ecoder/ert_code_template.cgt. Основывайте свои пользовательские файлы CGT на файле по умолчанию.

Файловая структура CGT

Файл CGT состоит из одного необходимого раздела и четырех дополнительных разделов:

Раздел вставки кода

(Требуемый) Этот раздел содержит лексемы, которые задают упорядоченное разделение сгенерированного кода во многие разделы (такие как Includes и Defines разделы). Лексемы имеют форму:

%<SectionName>

Например,

%<Includes>

Программное обеспечение генерации кода задает минимальный набор необходимых лексем. Эти лексемы генерируют C или источник C++ или код заголовка. Они - встроенные лексемы (см. Встроенные Лексемы и Разделы). Можно также задать пользовательские лексемы и пользовательские разделы.

Каждая лексема функционирует как заполнителя для соответствующего раздела сгенерированного кода. Упорядоченное расположение лексем задает порядок, в котором соответствующие разделы появляются в сгенерированном коде. Если вы не включаете лексему, то соответствующий раздел не сгенерирован. Чтобы сгенерировать код в данный раздел, явным образом вызовите шаблон API кода из шаблона CFP, как описано в Шаблонах Пользовательской обработки файла (CFP).

Лексемы CGT задают высокоуровневую организацию сгенерированного кода. Используя шаблон API кода, можно разделить каждую секцию кода в именованные подразделы, как описано в Подразделах.

В разделе вставки кода можно также вставить C или комментарии C++ между лексемами. Такие комментарии испускают непосредственно в сгенерированный код.

Раздел баннера файла

(Необязательно) Этот раздел содержит комментарии и лексемы, которые вы используете в генерации пользовательского баннера файла.

Функциональный раздел баннера

(Необязательно) Этот раздел содержит комментарии и лексемы для использования в генерации пользовательского функционального баннера.

Разделяемый раздел баннера служебной функции

(Необязательно) Этот раздел содержит комментарии и лексемы для использования в генерации пользовательского разделяемого баннера служебной функции.

Раздел трейлера файла

(Необязательно) Этот раздел содержит комментарии для использования в генерации пользовательского баннера трейлера.

Для получения дополнительной информации об этих разделах смотрите, Генерируют Пользовательский Файл и Функциональные Баннеры.

Встроенные лексемы и разделы

Следующее извлечение кода показывает необходимый раздел вставки кода файла CGT по умолчанию с необходимыми встроенными лексемами.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Code insertion section (required)
%%   These are required tokens. You can insert comments and other tokens in
%% between them, but do not change their order or remove them.
%%
%<Includes>
%<Defines>
%<Types>
%<Enums>
%<Definitions>
%<Declarations>
%<Functions>

Отметьте следующие требования настройкой файла CGT:

  • Не удаляйте требуемые встроенные лексемы.

  • Встроенные лексемы должны появиться в порядке, показанном, потому что каждый последовательный раздел имеет зависимости от предыдущих разделов.

  • Только одна лексема на строку.

  • Не повторяйте лексемы.

  • Можно добавить пользовательские лексемы и комментарии к разделу вставки кода, пока вы не нарушаете предыдущие требования.

Примечание

Если вы изменяете файл CGT и затем восстанавливаете вашу модель, процесс генерации кода не обеспечивает сборку топ-модели. Чтобы регенерировать код, смотрите Регенерацию Силы Кода Топ-модели.

Следующая таблица обобщает встроенные лексемы и соответствующие имена раздела, и описывает секции кода.

Встроенные лексемы CGT и соответствующие секции кода

Лексема и имя раздела

Описание

Includes

#include направляющий раздел

Defines

#define направляющий раздел

Types

typedef раздел. Typedefs может зависеть от ранее заданного типа

Enums

Раздел перечислимых типов

Definitions

Определения данных (например, double x = 3.0;)

Declarations

Объявления данных (например, extern double x;)

Functions

C или функции C++

Подразделы

Можно задать один или несколько именованных подразделов для любого раздела. Некоторые встроенные разделы предопределили подразделы, полученные в итоге в таблице Subsections Defined для Встроенных Разделов.

Примечание

Разделы и подразделы испускают к исходному или заголовочному файлу в порядке, перечисленном в файле CGT.

Используя пользовательскую функцию раздела, можно задать дополнительные разделы. Смотрите Генерируют Пользовательский Раздел.

Подразделы, заданные для встроенных разделов

Раздел

Подразделы

Описание подраздела

Includes

N/A

 

Defines

N/A

 

Types

IntrinsicTypes

Внутренний typedef раздел. Внутренние типы зависят только от внутреннего параметра C или типов C++.

Types

PrimitiveTypedefs

Примитивный typedef раздел. Примитивный typedefs зависят только от внутреннего параметра C или типов C++ и от typedefs ранее заданный в IntrinsicTypes раздел.

Types

UserTop

Можно поместить любой тип кода в этом разделе, включая код, который имеет зависимости от предыдущих разделов.

Types

Typedefs

typedef раздел. Typedefs может зависеть от ранее заданных типов

Enums

N/A

 

Definitions

N/A

 

Declarations

N/A

 

Functions

 

C или функции C++

Functions

CompilerErrors

#error директивы

Functions

CompilerWarnings

#warning директивы

Functions

Documentation

Документация (комментарий) раздел

Functions

UserBottom

Можно поместить любой код в этот раздел.

Для просмотра документации необходимо авторизоваться на сайте