exponenta event banner

Файлы шаблонов генерации кода (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++

Подразделы

Можно определить одно или несколько именованных подразделов для любого раздела. Некоторые из встроенных разделов имеют предопределенные подразделы, обобщенные в таблице Подразделы определены для встроенных разделов.

Примечание

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

С помощью пользовательского элемента сечения можно определить дополнительные сечения. См. раздел Создание пользовательского сечения.

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

Раздел

Подразделы

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

Includes

Н/Д

 

Defines

Н/Д

 

Types

IntrinsicTypes

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

Types

PrimitiveTypedefs

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

Types

UserTop

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

Types

Typedefs

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

Enums

Н/Д

 

Definitions

Н/Д

 

Declarations

Н/Д

 

Functions

 

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

Functions

CompilerErrors

#error директивы

Functions

CompilerWarnings

#warning директивы

Functions

Documentation

Раздел документации (замечания)

Functions

UserBottom

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