Configuration file nodes
This section lists all tags allowed in configuration file.
csproj
<csproj path="Path/ProjectName.csproj" cfg="Configuration" platform="Platform"/>
Reference to input project file.
Attributes:
| Attribute | Meaning | Mandatory |
|---|---|---|
| path | Path to project file | Yes |
| cfg | Configuration used when parsing source C# code | No (default Debug) |
| platform | Platform to use specific settings for when parsing the project | No (default or first available platform as defined in input project file) |
This attribute overrides path to project given to a translator application via command line.
outdir
<outdir path="Path"/>
Reference to output directory.
| Attribute | Meaning | Mandatory |
|---|---|---|
| path | Path to output directory | Yes |
embedded_proj
<embedded_proj path="path/to/project"/>
Defines paths to embedded projects used in project being translated.
| Attribute | Meaning | Mandatory |
|---|---|---|
| path | Full or relative path to embedded project | Yes |
cppproj
<cppproj name="ProjectName"/>
Allows it to specify output project name.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Output project name | Yes |
opt
<opt name="Name" value="Value"/>
Translator option. See configuration file options for details on what options are available.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Option name | Yes |
| value | Option value | Yes |
| Option-specific attributes | Some options can require additional attributes to be specified | Defined by option |
additional_source
<additional_source>
<copy dir="dir1"/>
<copy dir="dir2"/>
</additional_source>
Directories to copy additional C++ sources from. Only 'copy' subnodes are allowed inside 'additional_source' one.
copy
<copy dir="dir1"/>
Single directory to copy additional C++ source files from.
| Attribute | Meaning | Mandatory |
|---|---|---|
| dir | Path to directory (absolute or relative to configuration file; can also be relative to translator directory if 'use_porter_home_directory_while_resolving_path' option is enabled) | Yes |
import
<import config="details.config"/>
Imports configuration file as if all its contents were added into the current one. Imported configuration file must have valid structure ('porter' node in the root and so on).
| Attribute | Meaning | Mandatory |
|---|---|---|
| config | Path to configuration file (absolute or relative to current configuration file; can also be relative to translator directory if 'use_porter_home_directory_while_resolving_path' option is enabled) | Yes |
libs, style
<libs>
<lib name="a">
...
</lib>
</libs>
<style>
<opt name="b" value="c"/>
...
</style>
Logical grouping. 'libs' element defines configuration file section which contains instructions on libraries attachment. 'style' element is meant to group style-related options.
Only 'opt' and 'lib' nodes are allowed inside both tags. Using 'opt' and 'lib' outside of 'libs' or 'style' is also allowed.
lib
<lib name="LibProject.Cpp">
<tag path="path/path">Namespace::Namespace2::</tag>
<cmake_part_template>
find_botan()
</cmake_part_template>
<cmake_link_template>
target_link_libraries(Project_name PUBLIC botan::botan LibProject::LibProject)
</cmake_link_template>
<defines>DEFINE1 DEFINE2;DEFINE3=VALUE</defines>
<includes>path/to/dir1 path/to/dir2;path/to/dir3</includes>
<libdirs>path/to/dir1 path/to/dir2;path/to/dir3</libdirs>
<class name="LibProject::Class1" path="libproject/class1.h" shortptr="true"/>
<enum name="LibProject::Enum1" path="libproject/enum1.h"/>
<namespace name="LibProject::Namespace1" path="libproject/namespace1.h" shortptr="true"/>
<replace_user_types>false</replace_user_types>
</lib>
Imports library to use against current project.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Name of the imported project in C++ | Yes |
Meaning of allowed subnodes is explained below.
tag
<tag path="path/to/ns2/headers">Namespace::Namespace2::</tag>
Sets up header lookup rule. When translator meets a name from namespace given, it generates includes based on path specified, following the below rules:
- Each namespace inside tagged namespace is translated to a separate subdirectory;
- Class name corresponds to header name;
- Extension of file being included is .h;
- Namespaces and classes names are converted to underscore-delimited format even if they originally follow e. g. camelCase.
More specific rules (with innermore namespaces mentioned) override less specific ones. Explicit rules for individual types override tags.
| Attribute | Meaning | Mandatory |
|---|---|---|
| Element contents | Namespace to add rule for | Yes |
| path | Beginning of generated inclusion path | Yes |
For example, the above example implements such rule that references to class called 'NamespaceNamespace2Namespace3::FooBarClass' will generate the following include:
#include "path/to/ns2/headers/namespace3/foo_bar_class.h"
Tag syntax is useful when implementing library manually. When using translated library, use typemap configuration file inclusion instead.
cmake_part_template
<cmake_part_template>
find_botan()
</cmake_part_template>
CMake rules to allow for includes and other necessary setups like 3rd party libraries lookup.
| Attribute | Meaning | Mandatory |
|---|---|---|
| Element contents | Bare CMake code to be used both for libraries and executables | No |
cmake_link_template
<cmake_link_template>
target_link_libraries(Project_name PUBLIC botan::botan LibProject::LibProject)
</cmake_link_template>
CMake rules to allow for linkable units (DLLs, EXEs)
| Attribute | Meaning | Mandatory |
|---|---|---|
| Element contents | Bare CMake code to be used for linkable items (executables, shared libraries) |
defines
<defines>DEFINE1 DEFINE2;DEFINE3=VALUE</defines>
Defines to be added to the project. Put library-related defines here rather than to global section of your configuration file as this make unnecessary define go once you exclude library-related file. Another benefit is keeping everything that relates to the library in a single place.
| Attribute | Meaning | Mandatory |
|---|---|---|
| Element contents | Space- and semicolon-separated list of defines with optional values |
includes
<includes>path/to/dir1 path/to/dir2;path/to/dir3</includes>
Paths to include directories, related to the library. Again, allows keeping everything that is related to the library in a single place.
| Attribute | Meaning | Mandatory |
|---|---|---|
| Element contents | Space- and semicolon-separated list of paths for cmake to use |
libdirs
<libdirs>path/to/dir1 path/to/dir2;path/to/dir3</libdirs>
Paths to library directories, related to the library.
| Attribute | Meaning | Mandatory |
|---|---|---|
| Element contents | Space- and semicolon-separated list of paths |
class
<class name="LibProject::Class1" path="libproject/class1.h" shortptr="true"/>
Sets class-specific header path, useful for classes not covered by any tag rules.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Class name with namespace | Yes |
| path | Full header path to be inserted into 'include' directive | Yes |
| shortptr | Whether class provides ClassNamePtr-formed alias for SharedPtr<ClassName>, must be 'true' or 'false' | No (default false) |
enum
<enum name="LibProject::Enum1" path="libproject/enum1.h"/>
Sets enum-specific header path, useful for enums not covered by any tag rules.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Enum name with namespace | Yes |
| path | Full header path to be inserted into 'include' directive | Yes |
namespace
<namespace name="LibProject::Namespace1" path="libproject/namespace1.h" shortptr="true"/>
Sets namespace-specific header path, useful for enums not covered by any tag rules.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Full namespace | Yes |
| path | Full header path to be inserted into 'include' directive | Yes |
replace_user_types
<replace_user_types>false</replace_user_types>
Forces the types in current project that are covered by any of the library tags to be ignored (skipped) - library-provided ones will be used instead. Useful if you add library to replace some types available in current build.
| Attribute | Meaning | Mandatory |
|---|---|---|
| Element contents | 'true' to exclude types or 'false' to let them be | Node (default false) |
files
<files>
<exclude file="/mask"/>
<include file="/mask"/>
<only file="/mask"/>
</files>
Adds file include and exclude masks. Masks should be prefixed with '/'. When these filters apply, priorities are as follows:
| Directive | Priority | Effect | Overrides directives | Is overriden by directives |
|---|---|---|---|---|
| include | High | Adds masked files to translating even if they are excluded by 'exclude' or 'only' rules | All | None |
| exclude | Medium | Excludes masked files from translating even if they are included by 'only' rules but unless they are included by 'include' rule | only | include |
| only | Low | If present, excludes all files but those masked, unless they are excluded by 'exclude' rule, plus those added by 'include' rule | None | All |
| Attribute | Meaning | Mandatory |
|---|
Allowed subnodes are listed below.
exclude
<exclude file="path/foo_*.cs"/>
Makes translator ignore all files in project that match the specified mask.
| Attribute | Meaning | Mandatory |
|---|---|---|
| file | Filename mask with '*' and '?' substitutions allowed. | Yes |
include
<include file="path/foo_bar_*.cs"/>
Stops translator from ignoring files that match the specified mask even if ignored otherwise (by 'exclude' or 'only' subnode).
| Attribute | Meaning | Mandatory |
|---|---|---|
| file | Filename mask with '*' and '?' substitutions allowed. | Yes |
only
<only file="path/bar_foo_*.cs"/>
Makes translator ignore all files that do not match the specified mask (or any of the masks specified in 'only' subnodes if multiple ones are present).
| Attribute | Meaning | Mandatory |
|---|---|---|
| file | Filename mask with '*' and '?' substitutions allowed. | Yes |
cut_namespaces
<cut_namespaces>
<exclude file="mask"/>
<include file="mask"/>
<only file="mask"/>
</cut_namespaces>
Enable/disable namespaces cutting for all types, defined in specific files. The subnodes rules are identical with <files> option.
So, if the file 'foo.cs' containing type Bar.Foo is included using cut_namespace element, this type will be referred to as 'Foo' in translated code. Otherwise, it will be referred to as 'Bar::Foo'.
typemap
<typemap>
<class csname="Namespace1.Class1" cppname="Namespace2.Class2" box="false"/>
...
</typemap>
Maps C# type names into C++ ones. Useful if the default mapping fails. The only allowed subnode is 'class'.
class
<class csname="Namespace1.Class1" cppname="Namespace2.Class2" box="false"/>
Denotes a single mapping rule of how C# typename should be translated to C++.
| Attribute | Meaning | Mandatory |
|---|---|---|
| csname | Class name with namespace in C# | Yes |
| cppname | Class name with namespace in C++ | Yes |
| box | Boolean flag that shows whether the type requires boxing | No (default false) |
includes
<includes>
<class name="LibProject::Class1" path="libproject/class1.h" shortptr="true"/>
<enum name="LibProject::Enum1" path="libproject/enum1.h"/>
<namespace name="LibProject::Namespace1" path="libproject/namespace1.h"/>
...
</includes>
Specifies includes for specific types. Include rules, same as in <lib> section.
force_value_types
<force_value_types>
<class name="Namespace1::Class1"/>
<class name="Namespace2::Class2" box="true"/>
...
</force_value_types>
Lists the types to be treated as value types. Only 'class' subnodes are allowed.
class
<class name="Namespace1::Class1" box="false"/>
Class to be treated as value type.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Type in C++ with namespace | Yes |
| box | Boolean value which defines whether type is subject for boxing | No (default false) |
references
<references>
<assembly name="Assembly.Name" path="path\to\assembly.dll"/>
</references>
Specifies the references to external assemblies to import symbols from. Only 'assembly' nodes are allowed here.
assembly
<assembly name="Assembly.Name" path="path\to\assembly.dll"/>
Single assembly to import symbols from.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | C# assembly name. | Yes |
| path | Path to assembly. | Yes |
dont_wrap_params
<dont_wrap_params>
<class name="Namespace::Class1"/>
<method name="Namespace::Class2::Method1"/>
...
</dont_wrap_params>
Disables parameters wrapping (matching actual parameters against format ones with necessary casts) against specific method or all methods of specific class. This is required if the method uses variadic template arguments and actual wrapping would fail.
Only 'class' and 'method' subnodes are allowed here.
class
<class name="Namespace::Class1"/>
Single class, all methods of which will not be wrapping parameters for.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Name of the class in C++ with namespace. | Yes |
method
<method name="Namespace::Class2::Method1"/>
Single method to not wrap parameters for. All methods with this name will be affected - there's no way disabling parameter wrapping for single overload.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Name of the method in C++ with namespace and class name. | Yes |
disable_boxing
<disable_boxing>
<class name="System::Convert"/>
<method name="System::Enum::Parse"/>
...
</disable_boxing>
Disables parameters boxing when type conversions occur (usually when native C++ implementations exist with better signatures). The syntax is same as for 'dont_wrap_param'.
restricted_tokens
<restricted_tokens mask="*">
<token from="OldName" to="NewName"/>
...
</restricted_tokens>
Replaces all identifiers specified globally in selected files.
| Attribute | Meaning | Mandatory |
|---|---|---|
| mask | File name or path mask - only selected files will be affected. | No (default *) |
token
<token from="OldName" to="NewName"/>
Single rule for identifier replacement.
| Attribute | Meaning | Mandatory |
|---|---|---|
| from | Identifier in original C# code to be replaced | Yes |
| to | Replacement for identifier specified in 'from' attribute | Yes |
assembly_with_restricted_tokens
<assembly_with_restricted_tokens>AssemblyName</assembly_with_restricted_tokens>
Forces the names in the referenced assembly to be replaced as per all restricted_tokens rules. By default, only the tokens in current assembly are replaced. No mask matching is performed.
| Attribute | Meaning | Mandatory |
|---|---|---|
| Element contents | Name of the dependence assembly in C# | Yes |
skip_definitions
<skip_definitions stub="false" only_public_api="true"/>
Global version of 'CppSkipDefinition' attribute. If enabled, no class member definitions are processed (but declarations are still generated for them).
| Attribute | Meaning | Mandatory |
|---|---|---|
| stub | Whether to generate stubs for dropped definitions, 'true' or 'false' | No (default true) |
| only_public_api | Whether translator should leave public API only ('true') or process private and internal classes as well ('false') | No (default false) |
implementation
<implementation type="MyNamespace.MyClass" entity="MyMethod" includes="*someglobalheader;*otherglobalheader.h;path1/path2/header1.h;path1/path2/header2.h">
<![CDATA[
return 2+2;
]]>
</implementation>
<implementation file="OriginalFileName.cpp" to="source"/>
Substitutes some C++ implementation instead of translated one. First form allows it to store the implementation for the specified method in config itself. The second one copies the C++ file to destination directory.
| Attribute | Meaning | Mandatory |
|---|---|---|
| type | C# type name to substitute member for | In the first form |
| entity | C# method name (no overloads supported) | In the first form |
| includes | Semicolon delimited list of headers, used for the custom implementation (if header started with '*' character, then header is the global, else header is the local) | Optional (used in the first form only) |
| Element contents | CDATA with code | In the first form |
| file | Path to C++ file with additional implementations to copy to your target project | In the second form |
| to | Subdirectory to copy C++ file to | In the second form |
Alternatively, you can simply include .cpp file into your C# project. It will be copied to output project during translating.
Please note that all methods you want to replace implementations for must be marked with CppSkipDefinition attribute.
nunit_categories
<nunit_categories>
<include name="Category1"/>
<exclude name="Category2"/>
</nunit_categories>
Allows it to filter tests by the category specified in NUnit.Framework.Category attribute. 'exclude' filter excludes single category. 'include' filter, if present, excludes all categories except for the one specified and for the ones specified in other 'include' filters, if present. 'include' directive has higher priority than 'execlude' one.
Only 'include' and 'exclude' elements are allowed inside 'nunit_categories' one.
For example, there are 'A', 'B', 'C' and 'D' categories and some uncategorized tests. If we exclude 'A' and 'B' categories, then only 'C', 'D' and uncategorized tests will be translated. If we additionally include 'A', then only 'A' category will be translated, as 'include' tag overweights any 'exclude' ones and, if present, excludes everything that is not included explicitly. If now we include '*' category, then only 'A', 'C', 'D' and uncategorized tests are translated as including '*' includes everything that was not excluded explicitly.
include
<include name="Category1"/>
Category for inclusion.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | NUnit test category name | Yes |
A special value of '*' can be assigned to the 'name' attribute of 'include' tag. If present, such tag changes the logic here. By default, everything that is not included explicitly, is excluded if there is at least one 'include' tag present. If there is a tag including '*' category, then everything that is not excluded explicitly gets included, instead.
exclude
<exclude name="Category1"/>
Category for exclusion.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | NUnit test category name | Yes |
cmake_commands
<cmake_commands>
<![CDATA[
if (MSVC)
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "/INCREMENTAL:NO")
endif()
]]>
</cmake_commands>
Allows it to push custom commands to resulting CMakeLists.txt file.
| Attribute | Meaning | Mandatory |
|---|---|---|
| Element contents | CDATA with cmake code | Yes |
cmake_files
<cmake_files>
<file name="file1.cmake" />
...
</cmake_files>
Lists cmake files to be copied from 'cmake' directory of translator installation to target project directory. Please note that each copy of this node clears all previously set ones, including the default values.
Only 'file' nodes are allowed inside.
file
<file name="file1.cmake" />
Single file to be copied.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | File name | Yes |
enum_underlying_types
<enum_underlying_types>
<type name="Enum1" value="int" />
...
</enum_underlying_types>
Maps enums underlying types. Mostly used by translator typemap when processing dependent projects.
| Attribute | Meaning | Mandatory |
|---|
Only 'type' nodes are allowed inside.
type
<type name="Enum1" value="int" />
Individual underlying type mapping rule.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Enum type name with namespace | Yes |
| value | Integer type name | Yes |
attribute
<attribute name="CppAttributeName" ... />
Single attribute record. See attributes in configuration file for more details.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Attribute name | Yes |
| Other attributes | Individual per attribute. Some of them set attribute parameters, some other ones specify scope. | Depends on attribute |
forced_include
<forced_include>
<class name="Namespace::ClassName" />
<class name="Namespace::ClassName1" />
</forced_include>
Include header instead of forward declaration for an argument type, same as CppForceInclude attribute.
Only 'class' nodes are allowed inside.
class
<class name="Namespace::ClassName" />
Individual class to force includes for.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Class name with namespace | Yes |
documentation_comments_translation
<documentation_comments_translation>
<cref_typemap>
<cref cstext="sbyte" cpptext="int8_t" />
</cref_typemap>
<summary_text_map>
<property cstext="Gets or sets" getter_text="Gets" setter_text="Sets" />
</summary_text_map>
<options>
<opt name="fix_setter_return_tag" value="true" />
</options>
<replacements>
<comment type="SomeNS.Enum1" member="" tag="code">
<![CDATA[
C++ code Enum1
]]>
</comment>
</replacements>
<translate_code_from_comments value="true"/>
<translate_code_from_comments_system_dlls>
<system_dll name="System.Something.dll"/>
</translate_code_from_comments_system_dlls>
</documentation_comments_translation>
Parameters for code documentation.
The following subsections are allowed:
- cref_typemap - list of type references to be translated and supplied to Doxygen. The following child nodes are allowed:
- cref - one type; cstext attribute names type in C# and cpptext names corresponding type in C++.
- summary_text_map - list of substrings which should be replaced when generating individual getter and setter comments from joint getter+setter comment in C#.
- property - individual replacement entry. cstext attribute means text to be replaced, getter_text is replacement for getter and setter_text is replacement for setter.
- options - list of options related to documentation generation. The following options are allowed:
- fix_setter_return_tag - remove 'return' tag from setter documentation.
- replacements - list of allowed replacements for the specified tags in comments to specified items.
- comment - the contents of this item will replace the contents of specified tag of the specified member of specified tag. If both type and member are unset, this replacement will be done by default to all occurrances of mentioned tag where no other replacements apply.
For mentioned subtags attributes, see below.
cref_typemap
| Attribute | Meaning | Mandatory |
|---|
cref
| Attribute | Meaning | Mandatory |
|---|---|---|
| cstext | Type name in C# comments | Yes |
| cpptext | Corresponding type name in C++ comments | Yes |
summary_text_map
| Attribute | Meaning | Mandatory |
|---|
property
| Attribute | Meaning | Mandatory |
|---|---|---|
| cstext | Text to be replaced as it appears in C# property documentation | Yes |
| getter_text | Replacement text for C++ getter function documentation | Yes |
| setter_text | Replacement text for C++ setter function documentation | Yes |
options
| Attribute | Meaning | Mandatory |
|---|
replacements
Defines exact replacement for contents of specific tag in documentation for type or type member.
translate_code_from_comments
Enables the translator replacing references to C# types and members with C++ analogs.
| Attribute | Meaning | Mandatory |
|---|---|---|
| value | Boolean flag that enables or disables this behavior. | Yes |
translate_code_from_comments_system_dlls
Adds specified DLLs to symbol lookup when replacing references in documentation comments. No longer required since 21.3 version.
system_dll
Specifies a single DLL to add to this list.
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Name of the DLL to use symbols from when performing code comments changes. | Yes |
if
<if defined="my_var">
<opt name="additional_defines" value="SOME_DEFINES"/>
<else>
<opt name="additional_defines" value="SOME_OTHER_DEFINES"/>
</else>
</if>
Allows to switch on or off some part of the config conditionally, based on command line parameters passed to translator: if '-d' command line parameter followed by definition name is passed, all contents of 'if' tag except for 'else' subtag is executed (in the above example - first 'opt' element); otherwise, only 'else' tag is executed (in the above example - second 'opt' tag).
| Attribute | Meaning | Mandatory |
|---|---|---|
| defined | Name of parameter to be evaluated | Yes |
else
<else>
<opt name="additional_defines" value="SOME_OTHER_DEFINES"/>
</else>
Part of the config which should be executed if 'if' element evaluation fails.
msbuild_global_properties
<msbuild_global_properties>
<property name="TargetFramework" value="net20"/>
</msbuild_global_properties>
Allows to define MSBuild properties directly to satisfy conditions in csproj file.
Allowed sub-items:
property
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | MSBuild property name | Yes |
| value | MSBUild property value | Yes |
rename_files
<rename_files>
<file name_without_extension="FileToRename" to="RenamedFile"/>
</rename_files>
Allows to rename files generated by translator. Impacts both '.h' and '.cpp' file (if exist).
Allowed sub-items:
file
| Attribute | Meaning | Mandatory |
|---|---|---|
| name_without_extension | Name of file generated by translator by default. | Yes |
| to | File name the file to be renamed to. | Yes |
allowed_heap_only_types
<allowed_heap_only_types>
<class name="System.Xml.XPath.XPathNodeIterator" />
</allowed_heap_only_types>
Makes translator generate code that produces compilation error if specified class is being allocated on stack. Useful for the classes that create shared pointers to themselves and thus are incompatible with automatic memory management.
Allowed sub-items:
class
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Fully qualified name of C# class. | Yes |
types_with_begin_and_end_methods
<types_with_begin_and_end_methods>
<class name="System.Collections.Generic.Dictionary" />
</types_with_begin_and_end_methods>
Makes translator generate simplier code for 'foreach' statements, if [['foreach_as_range_based_for_loop' option|doc:Codeporting.Dynabic.csPorter for Cpp.Documentation and Support Materials.Production documentation storage point.Developer Guide.CodePorting.Translator Cs2Cpp configuration file.Configuration file options.WebHome]] is enabled.
Allowed sub-items:
class
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Fully qualified name of C# class. | Yes |
assembly_types
<assembly_types>
<class name="Namespace.ClassName" />
</assembly_types>
Makes translator register specified types in the Assembly object which is associated with current project. Unless the type is registered, TypeInfo::get_Assembly() doesn't work for it.
Allowed sub-items:
class
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Fully qualified name of C# class. | Yes |
unity_build
<unity_build batch_size="16">
<excluded_files>
<file name="main.cpp" />
</excluded_files>
</unity_build>
Enables the building process using UNITY_BUILD for the translated project.
| Attribute | Meaning | Mandatory |
|---|---|---|
| batch_size | Sets the batch size of UNITY_BUILD. The value must be greater that 0. Otherwise, UNITY_BUILD will be disabled. | Yes |
Allowed sub-items:
excluded_files
Contains a list of files that must be excluded from UNITY_BUILD.
Allowed sub-items:
file
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | A path to a file that must be excluded from UNITY_BUILD. | Yes |
external_include
<external_include file="AddFunctionArgument_PassFunctionArgument_Tests.cs" include="function_traits.hpp" include_to="source" include_as="local"/>
Makes the translator generate additional include directives into the translated version of the specified cs file. Can do the same thing CppForceInclude attribute does, but can also include any file the translator doesn't know about.
| Attribute | Meaning | Mandatory |
|---|---|---|
| file | Cs file the inclusion should be added to the translated version of. | Yes |
| include | Include text (header name with all directories required). | Yes |
| include_to | Whether to add the include into header ('header') file or into the source ('source') file. | Yes |
| include_as | Whether to use local inclusion syntax (double quotes, 'local') or global inclusion syntax (angle brackets, 'global'). | Yes |
events_with_custom_accessors
<events_with_custom_accessors>
<event name="System.Xml.XmlReaderSettings.ValidationEventHandler"/>
<event name="System.Xml.XmlValidatingReader.ValidationEventHandler"/>
<event name="System.Xml.Schema.XmlSchemaSet.ValidationEventHandler"/>
</events_with_custom_accessors>
Makes the translator generate <PropertyName>_add()/<PropertyName>_remove() calls instead of +=/-= operators for specified custom events.
Allowed sub-items:
event
| Attribute | Meaning | Mandatory |
|---|---|---|
| name | Event name (with namespace and class name) | Yes |
insert_code_to_tests
<insert_code_to_tests include="myinclude.h">
<![CDATA[
// Any C++ code
]]>
</insert_code_to_tests>
Adds some snippet of C++ code into beginning of each Google.Test Recommended to wrap C++ code to XML <![CDATA[...]]> to avoid problems during parsing configuration
| Attribute | Meaning | Mandatory |
|---|---|---|
| include | Name of header file that will be included in every C++ source file contains tests affected by <insert_code_to_tests> | No |
Multiple usage of tag is allowed and will add all code snippets and all includes consequentially.