10743 29762
|
When a function parameter is changed in the model and code is generated, the corresponding change is only made in the member function declaration - the *.cpp file is not updated.
|
11549
|
If an existing class does not have any member functions or static data members in an implementation (.cpp )file, the ANSI C++ add-in generates the function body for any new functions in the header (.h) file.
|
11689
|
Automatic code generation does not create new #included statements when existing code elements are modified via model edits. It only creates them when new items are added.
|
11961
|
The ANSI C++ add-in does not create directories during code generation. If you try to generate code into a directory that does not exist, a message will be displayed that says the file cannot be created.
|
12569
|
In a .cpp file containing only a #include statement is reverse engineered, the code generator will place this #include statement in a header file on forward engineering.
|
15144
|
When attempting to generate code for a collection of classes, if the Root Directory field in the code generation dialog remains empty, a warning dialog is presented once for each of the selected classes
|
16428
|
The ANSI C++ add-in does not create directories during code generation. If you try to generate code into a directory that does not exist, a message will be displayed that says the file cannot be created.
|
16429
|
If a typedef defines more than one name, the ANSI C++ add-in does not reverse engineer the typedef.
For example, reverse engineering the following code completes without error:
>>>
typedef struct myStruct {
DWORD Version;
DWORD Size;
} myName, * lp_myName;
<<<
However, the struct myStruct appears in the model, but the typedef does not.
|
16430
|
The ANSI C++ add-in displays any errors encountered during code generation or reverse engineering in the Rose log window. However, there is no message telling the user to check the log window for errors.
|
16432
|
Reverse engineering with the ANSI C++ add-in does not create a diagram that contains all reverse engineered classes.
Although they do not appear on a diagram, the reverse engineered classes do exist in the model. You can see them in the browser and can add them to a diagram with drag and drop, or by using the Query > Add Classes menu item.
|
16434
|
If an existing class does not have any member functions or static data members in an implementation (.cpp )file, the ANSI C++ add-in generates the function body for any new functions in the header (.h) file.
|
16449
|
The ANSI C++ add-in ignores comments in source code.
|
16452
|
The Class Customization feature can generate two get or set operations for the same attribute if the user invokes Class Customization twice, once generating Get by Reference and once just generating Get.
|
16457
|
After you convert a class or model from Classic C++ using the ANSI C++ Model Converter, you generate code for the class or model before attempting reverse engineering. Attempting to reverse engineer a class before generating code will cause this message to be displayed:
Class cannot be reverse engineered because it does not exist in the project files.
|
16463
|
A previous version of Rose could create multiple module lines for C++ classes in certain cases. These extra module lines cause the
Convert from Classic C++ to fail with this message:
The Class/Interface <class name here> is assigned to an unloaded Component, which has the language C++. Classes/Interfaces
may only be assigned to components with the same language.
To convert a model that has multiple module lines, open the model in a text editor and remove the offending lines. The lines that
should be removed contains two words: "module" and the name of the module. For example:
module "ABC"
module "ABC"
module "ABC"
module "ABC"
module "ABC"
|
16550
|
The ANSI C++ add-in cannot expand pathmaps that are defined using the reserved symbol "&". . Using a pathmap that is defined with "&" for the code generation root directory or the source file root directory will cause this error message when you attempt to close the ANSI C++ Component Specification dialog:
Directory <Pathmap symbol here> does not exist. Please reenter.
|
16552
|
The add-in can create the wrong operation signature in the model as a result of reverse engineering. This occurs if the code contains non-const, on-abstract member function declarations (i.e. one where the closing parenthesis is followed by a semicolon), where the last two parameters are abstract declarations(i.e. they don't have an identifier) that contain a single type name.
For instance, when reverse engineering:
class a { };
class b { };
class c { };
class x {
public:
void f(a, b, c);
};
the operation x::f in the model has the signature "f(:a, c:b): void",
which is wrong. The signature should be "f(:a, :b, :c): void".
On code update, the original signature is preserved, so the code is not changed. Only the model is incorrect.
Workaround: Change the code so that the function parameters are named.
For example, change
void f(a, b, c);
to
void f(a arg1, b arg2, c arg3);
Since parameter names are optional in function declarations, this will not affect the meaning of the code.
|
17848
|
The Typename keyword is not supported.
|
19170
|
AutoSynch does not remove the data member in the header file when removing its corresponding attribute in the Rose class.
|
19210
|
When AutoSynch is enabled, adding an operation to the class produces the correct declaration of the operation, but the operation body is also defined in the header file instead of in the .cpp file as one would expect.
|
19309
|
Rose is unable to browse the .cpp file with the editor after generating code and then reverse engineering.
|
21101
|
Converting from Classic C++ fails if a class is assigned to C++ Package Body and Specification components.
|
26191
|
Rose may crash when ANSI C++ reverse engineering is performed, using the following scenario:
- Start a new Rose (ANSI C++) model
- Create a class named "test"
- Create a component and assigned "test" to the component
- Mouse right click on the component and select ANSI C++ -> Open ANSI C++ Specification
- Enter the path for "Code generation root directory:" and click OK to exit
- Mouse right click on the component and select ANSI C++ -> Generate Code
- Start a new Rose (ANSI C++) model
- Create a component select ANSI C++ -> Open ANSI C++ Specification
- Click "Add Files" button.
- From the "Project Files:" list view window, click on the "..." button.
- Use the dialog to locate and select test.h and test.cpp produced earlier.
- Click OK to exit ANSI C++ Specification dialog
- Mouse right click on the component and select ANSI C++ -> Reverse engineer
- Drag and drop reverse engineered "test" class to the diagram. Note that there should no attributes/operations at all.
- Open test.h from i-editor and add an operation to test class as follows:
class test { myFoo(); };
- Save test.h and mouse right click on the component and select ANSI C++ -> Reverse engineer. Click OK to the class list dialog. Observe that myFoo() operation has been added to the class
- Open test.h from i-editor and change myFoo() operation to yourFoo() as follow:
class test { yourFoo(); };
- Save test.h and mouse right click on the component and select ANSI C++ -> Reverse engineer.
Click OK to close the class list dialog. Rose may crash at this point.
|