Проблема
В Enterprise Architect 7.1.834 в шаблонах генерации кода можно распечатать все родительские пакеты, к которым принадлежит класс в рамках шаблона файла?
Причина, по которой это необходимо, заключается в создании защиты с несколькими включениями, совместимой со стандартом кодирования моей компании.
Что не работает
Я пробовал оба:
%list="Namespace__Notes" @separator="-"%
а также
%packageName%
Вывод обоих печатает только родительский пакет верхнего уровня (Package1), но я хотел бы видеть:
Package1-Package2-Package3
Кто-нибудь нашел способ сделать это?
Namepace__Notes
Namepace__Notes — это настраиваемый шаблон с типом Namepace, содержание которого следующее:
%PI=""%
%packageName%
[править] Грязный раствор
Мое текущее (грязное) решение - изменить путь к файлу. Я что-то упустил?
Код:
$l_backslash = %REPLACE("\z","z","")%
$filepath = %filePath%
$upper_filepath = %TO_UPPER($filepath)%
$upper_package_as_path = $l_backslash + %TO_UPPER(packageName)% + $l_backslash
$upper_package_base_len = %LENGTH(packageName)%
$package_path_pos = %FIND($upper_filepath,$upper_package_as_path)%
%if $package_path_pos != "-1" and $package_path_pos != "0"%
$upper_filepath = %MID($upper_filepath,$package_path_pos)%
%endIf%
$file_define = "_" + $upper_filepath + "__"
$file_define = %REPLACE($file_define,".","_")%
$file_define = %REPLACE($file_define,$l_backslash,"_")%
$file_define = %REPLACE($file_define,"/","_")%
$body += "/**************************************************************************//**"
$body += "\n * \file " + %fileName%
$body += "\n *"
$body += "\n * \brief " + %elemType% + " " + %className% + " header file"
$body += "\n *"
$body += "\n * \author " + %classAuthor ? value : "<unknown>"%
$body += "\n *"
$body += "\n *****************************************************************************/"
$body += "\n"
$body += "\n#ifndef " + $file_define
$body += "\n#define " + $file_define
$body += "\n"