C++ Reverse Program Supported Items

The following is a list of supported items for the C++ Reverse Plug-in.

Supported C++ Items

Classes that are not included in std package and Collection Classes with Templates as below would be imported as Association and they would have Qualifier, Constraints({ordered},{unique}) and Multiplicity.
(std::list<Child>, std::list<Child,allocator<Child>>, std::set<Child>, std::queue<Child>, std::vector<Child>, std::stack<Child>, std::map<string, Child>) The configuration regarding this you specified in the Config.properties would not apply.

Source code
(Parent Class's Attribute Type)
Qualifier of Parent Association EndChild Association EndMultiplicityConstraint
std::map<string, Child>key:stringChildN/AN/A
User Defined Template Class <Child>N/AUser Defined Template Class <Child>N/AN/A
User Defined Class[]N/AUser Defined Class*N/A

Default Model
Astah professional Install folder\template\project\C++.asta is imported as a default model. If there is no C++.asta file at the above directory, default model won't be imported.
C++.asta is automatically created in the Astah professional folder when you install Astah professional, and it contains main classes under std.
~destructor()Operation that its name starts with ~(Return Type: "")
  • [Class] <<enum>> of Stereotype tab
  • [Attribute] <<enum constant>> of Stereotype tab
  • Anonymous Enum is not supported.
template <class T=B>
class A {
T attr;
class E {
A attr1;
A<B> attr2;
A<B*> attr3;
A<> attr4;
  • Creates Class B
  • Creates Class A
  • Creates Template Parameter T with Default B to Class A
  • Creates Type T's Attribute, attr to Class A
  • Creates Class E
  • Creates Type A's Attribute, attr1 to Class E
  • Creates Actual ParameterB's Template Binding from anonymous bound class A<B> to A<T=B>
  • Creates Type A<B>'s Attribute, attr2 to Class E
  • Creates Actual ParameterB' and type qualifier(Actual Parameter)*'s Template Binding from anonymous bound class A<B*> to A<T=B>
  • Creates Type A<B*>'s Attribute, attr3 to Class E
  • Creates Type A's Attribute, attr4 to Class E
int b[2][2] = {{1,2},{3,4}}Attribute (Name: b, Type: int, Multiplicity: 2 , 2, Initial Value: {{1,2},{3,4}})
int *pAttribute (Name:p, Type: int, type qualifier: **)
int **p Attribute[] iName:p, Type:int, type qualifier:**
int p = &aAttribute (Name: p, Type: int, InitialValue: &a)
int (*pf)(int)

Class (Name:int (*)(int)) is created for Function Pointers with Operation (Name: function, Type: int, Parameter: int arg0)
Attribute (Name: pf, Type: int (*)(int)) will be created in the referred (based) class

int (*pa)[3]Class "int (*". Attribute (Name: pa, Type: int (*, Multiplicity: 3) will be created in the referred (based) class
int add(int,int)int add(int arg1, int arg2)
staticStatic in the Base tab of [Attribute]
Static in the Base tab of [Operation]

<<struct>> in the Stereotype of [Class]

union<<union>> in the Stereotype of [Class]
void fun(int a=1,int b=3,int c=5)void fun(int a,int b,int c). Initial value of parameter would not be set
Attributes that reside outside of ClassesA class "Global" is created and attributes will be created inside
Operations that reside outside of ClassesA class "Global" is created and operations will be created inside
Primitive Type Reversed as Primitive Type
Declared type with typedefType you declared with will be used
friendfriend in the Language tab of Class and Operation

const of Language tab of [Attribute] and [Operation]

mutablemutable in Language tab of [Attribute]
This cannot be converted with Doxygen or earlier.
volatilevolatile in Language tab of [Attribute]
explicitexplicit in Language tab of [Operation]
inlineinline in Language tab of [Operation]
virtualvirtual in Language tab of [Operation]

Following items are not currently supported.

  • B & operator=(const B &)
  • extern
  • Class, Attribute and Operation in other language except for English (i.e. Japanese characters)
  • Files that contain path in other language except for English (i.e. Japanese characters)