Overview
Examples
Screenshots
Comparisons
Applications
Download
Manual
Status & Roadmap
FAQ
Authors & License
Forums
Wiki
Funding Ultimate++
Search on this site











SourceForge.net Logo



Assist++

Assist++ analyzes C++ code of your project and provides several useful tools. Note that while current C++ analyzer is quite good, it has limitations - the most important one is that it does not expand macro definition and scans only project sources (means standard platform headers are not scanned). On the other hand, it is able to cope with most C++ features used in U++, including templates.

 

Assist - code-completion

This tool provides list of class members after typing '.', '->', '::' or explicitly by pressing Ctrl+Space:

 

 

When list is displayed, you can use vertical movement keys or mouse to select desired method and then press Enter to insert it:

 

 

Alternatively, you can press Tab to insert the first item in the list.

 

You can also limit the list to particular type by choosing it. To do so using the keyboard, use movement keys with Ctrl.

 

Parameter declarations are inserted too - but it is separated by "cedilla" character instead of commas, because...

 

 

...after you replace parameter declaration with your code and press the comma key (with the cursor right before the cedilla), the next parameter is selected for replacement.

 

Code navigation

"Navigate in the file" (default Ctrl+G) function displays list of all C++ elements in the current file.

 

 

You can start typing an identifier into "Go to" field to find particular symbol. If you use ':' inside the field, part before ':' will limit your search to particular class. You can also type number into the "Go to" field - in that case cursor is moved to line with specified number.

 

Similar function is "Navigate.." (default Ctrl+J), but it lists symbols in all files of the curent project:

 

 

"Go to definition/declaration" (default Alt+I) function goes to another place where code or data currently at cursor position are defined/declared.

 

"Go to symbol definition" (default Alt+J) navigates to the place where current symbol (function, method, type) is defined..

Code browser

Code browser allows you to query the code base ("Query..", default Ctrl+Q):

 

 

Query result is displayed at the bottom pane of TheIDE. By clicking individual items you are moved to definitions/declarations of symbols. You can also right-click to get location is menu form.

 

 

If there is symbol in the right side of item, symbol has associated Topic++ documentation that can be invoked by selecting symbol and pressing F1.

 

Alternative way how to perform a Query is to invoke "Query word.." (default Ctrl+W) - this queries for name with cursor.

 

Graphical symbols used by Assist++

There is quite regular system in graphical symbols used by Assist++. Circles indicate code, boxes data, triangles types. Cyan color is used for global data/code, yellow color for instance data/code, gray color for class data/code.

 

Global variable.

Instance variable.

Class variable.

Global function.

Instance method.

Constructor.

Destructor.

Class method.

Friend function.

Enumerated constant.

struct, class or union.

typedef.

Macro.

 

Symbols can be further modified by other symbols to display more features:

 

Green border indicates template.

Dotted line indicates protected member.

Solid line indicates private member.

Small arrow-like gray triangle indicates that symbol is defined in the base class. Small lines under it indicate base class depth.

 

Red underline indicates method override.

Black underline indicates "original" virtual method.

Italics is used to indicate inherited method that is overridden in current class.

 

Definition/Declaration conversion

 

This Assist operation (default Alt+C) is capable of converting between method declaration and definition. To use it, select desired methods:

 

 

and invoke operation (press Alt+C). Assist performs conversion and stores the result to the clipboard. Move to file/position where you want your method definitions and paste:

 

 

In similar way you can perform inverse conversion.

 

Virtual functions

This assist operation (default Alt+V) invokes the overview of virtual methods defined in current class bases (defined by actual position, to make this operation work, place cursor inside class declaration):

You can select one or more virtual methods to override in the current class. After pushing the "OK" button, declaration of virtual methods are inserted at current position. Definitions of virtual methods are placed on clipboard so that they can be inserted to the source file (.cpp) later.

THISBACKs

THISBACKs tools provides assistance with binding Callbacks of current class and its members (usually but not limited to some GUI dialog and its widgets) to methods:

Check the "Insert" column for Callbacks you want to process by method, alternatively adjust the name of method. After clicking "OK" button, TheIDE will insert THISBACK assignments to the actual position and places methods definitions and declarations to the clipboard (you have to reselect declaration and move it to the class).

Layout code generation

There is a tool in layout designer that can be used to generate code snippets from layouts:

It brings this the dialog to setup kind and parameters of code generation:

 

 

Assist++ C++ parser directives

Like many other similar tools, Assist++, for performance reasons, does not implement full C++ syntax (in other words, it has to "cheat" on many places). The most important drawback of current implementation is that it does not pre-process files, ignores includes and macro expansions. Note that errors encountered during parsing are silently ignored (unless performed via "Rescan code" operation).

To resolve some of problems this might bring, Assist supports simple directives that are passed to it via '//' comments:

//$-

Code past this directive will not be passed to parser.

//$+

Code past this directive will be passed to parser (stops //$-).

//$ code

(example: //$ void Foo(Bar&)

code will be passed to parser (adds code that is not part of compiled sources)