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 char, double and float.
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
![](../../Integrity_Modeler/images/btn_mini_295.gif)
.
• 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
![](../../Integrity_Modeler/images/btn_mini_295.gif)
.
| ACS does not generate code for the C profile. |
• 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.
Important:
The C Profile package includes the following Stereotypes and Tag Definitions:
• «C Attribute» applies the following Tag Definitions to an Attribute:
◦ C Anonymous Item - specifies that the attribute is generated with no name.
◦ C Array Spec - specifies array text, that is, the array text between the brackets.
◦ 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 Storage Class - specifies a storage class keyword, that is, blank, static, auto, register or extern.
• «C Class» applies the following Tag Definitions to a Class, Data Type or Interface:
◦ C Anonymous Item - specifies that the struct is generated inline.
◦ C Forward Declarations - specifies forward declarations to structs, unions and enums by referencing those Classes, Data Types, Interface and Type Definitions in the Model.
◦ C Forward Declaration Text - specifies forward declarations to structs, unions and enums that cannot be referenced through the C Forward Declaration tag definition.
◦ C Generate State Machine - specifies whether state machine code is generated for the Class' or Interface's State Diagram.
◦ C Header File - retrieves the location of generated or reverse engineered files from the registry and is used to generate #include statements. Note that this is used when opening a source file from Modeler.
◦ 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 Non Member - specifies that a nested struct is generated in the code file created for its root item, but not as part of the struct created for the root item.
◦ C Source File - retrieves the location of generated or reverse engineered files from the registry. Note that this is used when opening a source file from Modeler.
• «C Dependency» applies the following Tag Definitions to a Dependency:
◦ 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 Enum Literal» applies the following Tag Definitions to an Enumeration Literal:
◦ C Expression - specifies expression text.
◦ C Prefix Name - specifies whether the enumeration literal is prefixed with the name of the owning typedef suffixed with an underscore.
• «C Enumeration» applies the following Tag Definitions to an Enumeration:
◦ C Anonymous Item - specifies that the enumeration is generated inline.
• «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 structs that use that library.
• «CMacro»- specifies that an Operation is generated as function macro.
• «C Module»- specifies that a struct is not generated for the Class, Data Type or Interface, but header and implementation files are as required.
• «C Operation» applies the following Tag Definitions to an Operation:
◦ 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 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 Inline - specifies that the Operation uses the inline keyword.
◦ C Operation Implementation Comment - specifies comments for the Operation implementation.
◦ C Storage Class - specifies a storage class keyword, that is, blank, static, auto, register or extern.
• «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 Anonymous Item - specifies that the parameter is generated with no name.
◦ C Array Spec - specifies array text, that is, the array text between the brackets.
◦ 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, blank, static, auto, register or extern.
• «C Role» applies the following Tag Definitions to a Role:
◦ C Array Spec - specifies array text, that is, the array text between the brackets.
◦ C CV Qualifier - specifies a CV qualifier, that is, const, volatile, or const volatile.
◦ C Indirection - specifies indirection text, such as, *, & or * const.
◦ C Storage Class - specifies a storage class keyword, that is, blank, static, auto, register or extern.
• «C Typedef» applies the following Tag Definitions to a Type Definition:
◦ C Array Spec - specifies array text, that is, the array text between the brackets.
◦ 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.