|
Assist++
Assist++ analyzes C++ code of your project and provides several useful tools. The C++ code analyzer is quite good, it is able to cope with most C++ features used in U++, including templates. But as C++ is syntactically very complex language and speed is important in this case, some compromises had to be made. The three most important ones are that it does not expand macro definition, scans only project sources (means standard platform headers are not scanned) and namespaces are ignored.
Assist - code-completion
This tool provides list of class members after typing '.', '->', '::'. It can also be invoked explicitly by pressing Ctrl+Space. In that case, it can also list a complete list of global objects (classes, functions, variables, macros, ...) starting with the letters immediately preceding current position of the cursor.

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.
When you insert a function or macro with arguments, tooltip with the function signature is displayed and current argument is highlighted as you type:

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..
While jumping around the various places in code, it is often useful to go to the code you've seen previously. You can do this easily by pressing Alt+Left arrow and also go forward through the history of jumps with Alt+Right arrow
Navigator bar
On the left side from code editor resides Navigator bar. It allows you to browse and search the code base by type or file. The bar can be hidden or brought back using Ctrl+N.
You can also query the code base (default Ctrl+Q) and the search can be limited to current file, package or nest, using the icons on the right side of the search field.

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.
|
|
|
Additionally, the name of method can be underlined:
Red underline indicates method override.
Black underline indicates "original" virtual method.
Definition/Declaration conversion
This Copy as definition/declaration 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). As was already mentioned above, 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, then errors are listed in console).
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)
|
|
|