Integrations (PTC products, 3rd party products and code) > Code integration (Ada, ARINC 653, C, C#, C++, IDL, Java, SQL and VB) > C++ code > C++ profile package > Overview of the C++ profile package (C++ code)
  
Overview of the C++ profile package (C++ code)
The C++ Profile package contains Stereotypes and Tag Definitions required for modeling C++ code in the model. Through the Tag Definitions in the C++ profile, you can model information such as array specs, CV qualifiers and indirections. In addition, the C++ Profile package contains some Basic Types, such as bool, char and double.
If you reverse engineer C++ code to a model that does not contain the C++ profile, the Reverser creates a C++ Profile in the Model; however, the C++ profile it creates may contain only the Stereotypes and Tag Definitions required for the code you reverse engineered, and each Stereotype and Tag Definition of the C++ Profile package will not include a description of its purpose:
If you want to add a complete and documented C++ profile to a Model that does not contain the C++ Profile package, see Adding the C++ profile package to a model (C++ code).
If the Reverser has created a C++ profile in your Model and you want to update it so that it is complete and includes the Stereotype and Tag Definition descriptions, see Updating the C++ profile package in a model (C++ code)
* 
ACS does not generate code for the C++ profile. In addition, the C++ profile does not appear in the Difference View dialog.
* 
Do not make changes to the C++ profile. Any changes you make will be lost when the profile is updated.
Note that you can create Tag Definitions outside of the C++ profile, and link those Tag Definitions to Stereotypes in the C++ profile. When the C++ profile is updated, the links will not be broken.
Do not create copies of the C++ profile within a model, or create copies of the C++ profile through XMI Import/Export. The copies of the C++ profile will not work correctly and you will not be able to update the copies through the Update All Profiles command.
The C++ Profile package includes the following Stereotypes and Tag Definitions:
«C++ Attribute» applies the following Tag Definitions to an Attribute:
C++ Actual Template Parameters - specifies the text that appears between the angle brackets when attribute's type is a template class.
C++ Anonymous Item - specifies that the attribute is generated with no name.
C++ Array Spec - specifies array text.
C++ Bitfield - specifies bitfield width text.
C++ CV Qualifier - specifies a CV qualifier, that is, const, volatile, or const volatile.
C++ Function Pointer Parameters - specifies the function pointer parameters for an Attribute that is of type 'pointer to function'.
C++ Function Pointer Return - specifies the function pointer return for an Attribute that is of type 'pointer to function'.
C++ Indirection - specifies indirection text, such as, *, & or * const.
C++ Linkage - specifies the linkage.
C++ Non Member - specifies that the Attribute is a non-member, that is, the Attribute is not a member of the owning Class, Data Type or Interface but it is generated in the owning Class' or Data Type's implementation file (or outside the class definition for the owning Interface's header file). This Tag Definition is ignored when the Attribute is scoped to a Package.
C++ Storage Class - specifies a storage class keyword, that is, auto, register, extern or mutable.
«C++ Class» applies the following Tag Definitions to a Class, Data Type or Interface:
C++ Anonymous Item- specifies that the class or struct is generated inline.
C++ Forward Declarations - specifies forward declarations to classes, structs, unions and enums by referencing those Classes, Data Types, Interfaces and Type Definitions in the Model.
C++ Forward Declaration Text - specifies forward declarations to classes, structs, unions and enums that cannot be referenced through the C++ Forward Declaration tag definition.
C++ Friend - specifies friend classes and structs by referencing those Classes, Data Types and Interfaces in the Model.
C++ Friend Text - specifies friend function declarations and friend class declarations that cannot be referenced through the C++ Friend tag definition.
C++ Generate State Machine - specifies whether state machine code is generated for the Class' or Interface's State Diagram.
C++ Header File Comment - specifies the text of the header file comment.
C++ Header Include - specifies #includes text for the header file.
C++ Implementation File Comment - specifies the text of the implementation file comment.
C++ Implementation Include - specifies #includes text for the implementation file.
C++ Inheritance List - specifies the inheritance of a class or struct when the Reverser cannot model that inheritance in the Model.
C++ Linkage - specifies the linkage.
C++ Non Member - specifies that the Class, Data Type or Interface is a non-member, that is, the Class, Data Type or Interface is not a member of the owning Class or Interface, but it is generated in the owning Class' or Interface's implementation file. This Tag Definition applies only to nested Classes, Data Types and Interfaces.
C++ Specialization Parameters - specifies specialization parameters for a Class, Data Type or Interface that is a template specialization.
C++ Using Decls - specifies using declarations for the class or struct.
C++ Using Directives - specifies using directives for the class or struct.
CPP_HDER- Modeler uses the CPP_HDER tag definition for recording information about generated and reverse engineered header files.
CPP_IMPL- Modeler uses the CPP_IMPL tag definition for recording information about generated and reverse engineered implementation files.
«C++ Dependency» applies the following Tag Definitions to a Dependency:
C++ Actual Template Parameters - specifies the text that appears between the angle brackets when the Dependency's class is implementing a templated interface.
C++ In Implementation - specifies that a #include should be generated in both the header and implementation files.
C++ Is System - specifies that angled brackets, rather than inverted commas, are used for the #includes.
C++ Is Using - specifies using declarations or using directives instead of or in addition to a #include.
C++ Specialization Parameters - specifies the specialization parameters for the dependant Class, Data Type or Interface that is a specialization of the other Class, Data Type or Interface.
«C++ Enum Literal» applies the following Tag Definitions to an Enumeration Literal:
C++ Expression - specifies expression text.
C++ Prefix Name - specifies whether the enumeration literal prefix defined in the mangle.ini file is used.
«C++ Enumeration» applies the following Tag Definitions to an Enumeration:
C++ Anonymous Item - specifies that the enumeration is generated inline.
C++ Non Member - specifies that the Enumeration is a non-member, that is, the Enumeration is not a member of the owning Class or Interface, but it is generated in the owning Class' implementation file (or outside the class definition for the owning Interface's header file). This Tag Definition is ignored when the Enumeration is scoped to a Package.
«C++ Function Template» applies the following Tag Definitions to an Operation.
C++ Formal Template Parameters - specifies the formal template parameter list of a template function.
«C++ Ignore» - specifies that no #include statements are generated for a Dependency.
«C++ Library» - applies the following Tag Definitions to a Package, Class, Data Type or Interface:
C++ LIB_INCLUDE - for a library class, specifies the #includes to be generated for classes or structs that use that library.
«C++Macro» - specifies that an Operation is generated as function macro.
«C++ Namespace» - applies the following Tag Definitions to a Package:
C++ Anonymous Item - specifies that the namespace is generated with no name.
C++ Using Decls - specifies using declarations for the namespace.
C++ Using Directives - specifies using directives for the namespace.
«C++ Operation» -applies the following Tag Definitions to an Operation:
C++ Actual Template Parameters - specifies the text that appears between the angle brackets when the Operation's return type is a template class.
C++ CV Qualifier - specifies a CV qualifier, that is, const, volatile, or const volatile.
C++ Explicit - specifies that the Operation uses the explicit keyword.
C++ Function Pointer Parameters - specifies the function pointer parameters for an Operation that is of type 'pointer to function'.
C++ Function Pointer Return - specifies the function pointer return for an Operation that is of type 'pointer to function'.
C++ Indirection - specifies indirection text, such as, *, & or * const.
C++ Initializer List - for a constructor, specifies the text of the initializer text.
C++ Inline - specifies that the Operation uses the inline keyword.
C++ Linkage - specifies the linkage.
C++ Non Member - specifies that the Operation is a non-member, that is, the Operation is not a member of the owning Class, Data Type or Interface, but it is generated in the owning Class' or Data Type's implementation file (or outside the class definition for the owning Interface's header file). This Tag Definition is ignored when the Operation is scoped to a Package.
C++ Operation Implementation Comment - specifies comments for the Operation implementation.
C++ Storage Class - specifies a storage class keyword, that is, auto, register, extern or mutable.
«C++ Package» applies the following Tag Definitions to the Model or Package:
C++ Header Include - specifies #includes text for the header file.
C++ Implementation Include - specifies #includes text for the implementation file.
«C++ Parameter» applies the following Tag Definitions to a Parameter:
C++ Actual Template Parameters - specifies the text that appears between the angle brackets when the Parameter's type is a template class.
C++ Anonymous Item - specifies that the parameter is generated with no name.
C++ Array Spec - specifies array text.
C++ CV Qualifier - specifies a CV qualifier, that is, const, volatile, or const volatile.
C++ Function Pointer Parameters - specifies the function pointer parameters for a Parameter that is of type 'pointer to function'.
C++ Function Pointer Return - specifies the function pointer return for a Parameter that is of type 'pointer to function'.
C++ Indirection - specifies indirection text, such as, *, & or * const.
C++ Storage Class - specifies a storage class keyword, that is, auto, register, extern or mutable.
«C++ Role» applies the following Tag Definitions to a Role:
C++ Actual Template Parameters - if a collection template class is used to implement the Role, specifies the text you want between the angle brackets.
C++ Array Spec - specifies array text.
C++ CV Qualifier - specifies a CV qualifier, that is, const, volatile, or const volatile.
C++ Data Type - references the container template class that implements the Role.
C++ Indirection - specifies indirection text, such as, *, & or * const.
C++ Linkage - specifies the linkage.
C++ Storage Class - specifies a storage class keyword, that is, auto, register, extern or mutable.
C++ Template Name - name of the container template class that implements the Role. This Tag Definition is used only when the container template class is not modeled in the Model.
«C++ Specialization» applies the following Tag Definitions to a Generalization:
C++ Actual Template Parameters - specifies the text that appears between the angle brackets when the superclass is a template class.
«C++ Typedef» applies the following Tag Definitions to a Type Definition:
C++ Actual Template Parameters - specifies the text that appears between the angle brackets when the Type Definition's underlying type is a template class.
C++ Array Spec - specifies array text.
C++ CV Qualifier - specifies a CV qualifier, that is, const, volatile, or const volatile.
C++ Function Pointer Parameters - specifies the function pointer parameters for a Type Definition that is of type 'pointer to function'.
C++ Function Pointer Return - specifies the function pointer return for a Type Definition that is of type 'pointer to function'.
C++ Indirection - specifies indirection text, such as, *, & or * const.
C++ Linkage - specifies the linkage.
C++ Non Member - specifies that the Type Definition is a non-member, that is, the Type Definition is not a member of the owning Class or Interface, but it is generated in the owning Class' or Interface's implementation file. This Tag Definition is ignored when the Type Definition is scoped to a Package.