
##############################
#
#        Parser options
#
##############################

# switch preprocessor on/off
# NOTE: this option disables macro substitution during parsing.
# NOTE: conditional compilation macros (#ifdef, #ifndef,...) are always processed.
# NOTE: all the macros in project are considered as common for all the files
# NOTE: #include directives are processed
parser.cpp.preprocessor = on

# Defines set of macro names to be availabe while parsing c++ files
# There are few macros that have special meaning for Together.
# Some of them are used in 'preinclude.inc' file to turn on/off sets of preloaded
# macro definitions for most popular c++ IDEs/vendors/libraries
# TS_KEYWORDS_ISO646 - process new keywords of ISO 646 standart
# TS_KEYWORDS_VC - process new keywords in the VC++(6.0).
# _TCPP_ - This macro definition was always on in Together/Professional.
#          It is recommended to keep it on.
#          It is necessary for proper work of OLE/COM Interface Extractor (from Together/Pro).
# TS_PREINCLUDE_MICROSOFT_WINDOWS - MS-Windows related macro definitions
# TS_PREINCLUDE_MICROSOFT_COM - Microsoft COM related macro definitions
# TS_PREINCLUDE_MICROSOFT_VISUAL_C - Microsoft C++ and MFC related macro definitions
# TS_PREINCLUDE_ATL - ATL related macro definitions
# MFC_MACROS_SHOW and MFC_MACROS_SHOW_EXPANDED - control "level of details" of MFC macros expansion
#
parser.cpp.define = _TCPP_;TS_KEYWORDS_ISO646;TS_KEYWORDS_VC;TS_PREINCLUDE_MICROSOFT_WINDOWS;TS_PREINCLUDE_MICROSOFT_COM;TS_PREINCLUDE_ATL;TS_PREINCLUDE_MICROSOFT_VISUAL_C;MFC_MACROS_SHOW

# Is to report when file in the #include directive cannot be processed.
parser.cpp.reportIncludeNotFound = true

# Is to set file separator for the #include directive.
# It may be : "\\" or "/" or "File.separatorChar"
parser.cpp.includeFileSeparator ="/"

# name of preincluded file
#  collect in this file macros usually used in your project and fix their value
# NOTE: the value specifed in preincluded file overrides the value in the source code
parser.cpp.preinclude_file = preinclude.inc

# switch skipping standard directories on/off
# NOTE: it means if file to include enclosed in <> then this file will not be included in case this option is true
parser.cpp.skip_standard_directories = true

# Together/Pro (Together/C++) design comment compatibility
# Uncomment the following line to recognize Together/Pro style design comments.
# Each comment is converted to java-doc style on first change of the comment made from Together
;parser.tgprocomment.recognize = yes

# Rational Rose 98 C++ comments compatibility
# Uncomment the following line to recognize Rational Rose 98 C++ style doc comments
# Each comment is converted to java-doc style on first change of the comment made from Together
;parser.cpp.rosecomment.convert = yes

##############################
#
#        Codegen options
#
##############################


# extension of generated C++ header files
codegen.cpp.declaration_file_ext = "h"

# extension of generated C++ source (implementation) files
codegen.cpp.definition_file_ext = "cpp"

codegen.cpp.file_ext = "cpp"

# Is to choose: whether you want use system include restrictor( "" or <> ) or always use one of them.
# Values should be quotes|angleBrackets|auto
codegen.cpp.includeStatementChar ="auto"

# rename options
# a class is created with a default name.
# then when you change the class name from default, the corresponding files are renamed always.
# the rename options define whether further renames the class also rename the files.

# rename header file when rename class
codegen.cpp.rename_declaration_files = yes

# rename source file when rename class
codegen.cpp.rename_definition_files = yes

# This option defines what names are treated as default.
# Default name is: "Default + <int>", where Default one of the names listed in this option.
# Files with default names will be renamed always till name become non-default
codegen.cpp.rename_files.default = Class;Interface;Template;Struct;Union

# create definition when create an operation or static attribute
codegen.cpp.create_definitions = yes

codegen.cpp.default_pattern.class.Class = "Default Class"
codegen.cpp.default_pattern.class.Interface = "Default Interface"
codegen.cpp.default_pattern.member.Attribute =
\  if (!%container%->hasProperty("$interface"),
\      "Default Attribute",
\      "Default Attribute in Interface")
codegen.cpp.default_pattern.member.Operation =
\  if (!%container%->hasProperty("$interface"),
\      "Default Operation",
\      "Default Operation in Interface")
codegen.cpp.default_pattern.member.Constructor = "Default Constructor"
codegen.cpp.default_pattern.member.Destructor = "Default Destructor"
codegen.cpp.default_pattern.link.GeneralizationLink = "Default Inheritance"
codegen.cpp.default_pattern.link.ImplementationLink = "Default Inheritance"
# Creation default links to templates disabled due to it requires
codegen.cpp.default_pattern.link.AssociationLink =
\  if( !%dst%->hasProperty("$template"),
\      if( %src%->hasProperty("$interface"),
\           "Association as Comment",
\           "Default Association"),
\      "Association Dst Template" )
codegen.cpp.default_pattern.link.AggregationLink =
\  if ( !%dst%->hasProperty("$template"),
\      if( %src%->hasProperty("$interface"),
\          "Aggregation as Comment",
\          "Default Aggregation"),
\      "" )
codegen.cpp.default_pattern.link.CompositionLink =
\  if ( !%dst%->hasProperty("$template"),
\      if( %src%->hasProperty("$interface"),
\          "Composition as Comment",
\          "Default Composition"),
\     "" )
codegen.cpp.default_pattern.link.DependencyLink =
\  if ( %dst%->hasProperty("$template"),
\       "Dependency Dst Template",
\       "Default Dependency" )
codegen.cpp.default_pattern.link.UnifiedAssociationAsVector =
\  if( !%src%->hasProperty("$interface"),
\       "Association 0..n as vector of pointers",
\       "" )

# Additional macro variables for file creation date/time stamp in
# prologue/epilogue available since 3.1: %DATE_CREATED%, %TIME_CREATED%
#
# header file prologue
#  lines of code inserted at the beginning of new header files generated by Together
codegen.cpp.blueprint.declaration_file_prologue =
\  /* Generated by Together */
\
\  #ifndef %FILE_NAME%_%FILE_EXT%
\  #define %FILE_NAME%_%FILE_EXT%
\

# header file epilogue
#  lines of code inserted at the end of new header files generated by Together
codegen.cpp.blueprint.declaration_file_epilogue =
\
\ #endif //%FILE_NAME%_%FILE_EXT%

# source file prologue
#  lines of code inserted at the beginning of new source files generated by Together
codegen.cpp.blueprint.definition_file_prologue =
\  /* Generated by Together */
\
\  #include %Header_File%
\

# source file epilogue
#  lines of code inserted at the end of new source files generated by Together
;codegen.cpp.blueprint.definition_file_epilogue =
;\
;\  // End of file %File_Name%.%File_Ext%"


#
# parser.cpp.blueprint.link.*
#   properties below define the blueprints for recognizing links.
#
# Parser's blueprints are defined with only one pattern string and without quotes.
# In addition to codegen blueprints, you can use %Any% in patterns.
#  %Any% - any token.
# Each attribute declaration or design comment is compared against the blueprint pattern
#  and if recognized, forms a link of the corresponding type.
# NOTE: the first matched blueprint is used.
# Additional properties (tags) can be defined as sub-property for particular blueprint.
# NOTE: tag values directly specified in design comments override the ones from blueprint.
#

# NOTE: uncomment the following lines to treat pointer to class as aggregation (not recommended).
;parser.cpp.blueprint.link.Aggregation from pointer = %dst% * %Name%
;parser.cpp.blueprint.link.Aggregation from pointer.link = "aggregation"
;parser.cpp.blueprint.link.Aggregation from pointer.supplierCardinality = "1"

parser.cpp.blueprint.link.Association from pointer = %dst% * %Name%
parser.cpp.blueprint.link.Association from pointer.supplierCardinality = "0..1"

parser.cpp.blueprint.link.Association from pointer_ = %Any% %dst% * %Name%
parser.cpp.blueprint.link.Association from pointer_.supplierCardinality = "0..1"

parser.cpp.blueprint.link.Association from reference = %dst%& %Name%
parser.cpp.blueprint.link.Association from reference.supplierCardinality = "1"

# NOTE: uncomment the following lines to treat template container of pointers to class as aggregation (not recommended).
;parser.cpp.blueprint.link.Aggregation from template of pointers = %Any%<%dst%*> %Name%
;parser.cpp.blueprint.link.Aggregation from template of pointers.link = "aggregation"
;parser.cpp.blueprint.link.Aggregation from template of pointers.supplierCardinality = "1..*"

parser.cpp.blueprint.link.Association from template of pointers = %Any%<%dst%*> %Name%
parser.cpp.blueprint.link.Association from template of pointers.supplierCardinality = "0..*"

# NOTE: to threat aggreration as composition comment line with "aggregation" and uncomment one with "aggregationByValue"
parser.cpp.blueprint.link.Aggregation = %dst% %Name%
parser.cpp.blueprint.link.Aggregation.link = aggregation
;parser.cpp.blueprint.link.Aggregation.link = "aggregationByValue"

# NOTE: to threat aggreration as composition comment line with "aggregation" and uncomment one with "aggregationByValue"
parser.cpp.blueprint.link.Aggregation from template = %Any%<%dst%> %Name%
parser.cpp.blueprint.link.Aggregation from template.link = "aggregation"
;parser.cpp.blueprint.link.Aggregation from template.link = "aggregationByValue"
parser.cpp.blueprint.link.Aggregation from template.supplierCardinality = "1..*"

