When using a `StringBuilder` or `StringBuffer` to create a string message,
using implicit string concatenation inside an `.append()` call will
create a nested StringBuilder for the purposes of creating the arguments,
which will subsequently be converted to a String and then passed to
the outer StringBuilder.
Skip the creation of the intermediate object and String by simply
replacing such calls with `buffer.append(a).append(b)`.
Where values are compile time String constants, leave as is so
that the javac compiler can perform compile-time String concatenation.
Ensure that NEWLINE isn't appended in such a way since it is not
a compile time constant `System.getProperty("line.separator")`
Change-Id: I4126aefb2272f06b08332e004d7ea76b6f02cdba
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
Creates a single central CBuilder builder which find the C Build
Config and delegates the builds to it. That give configs full control
over the builds. Qt and CMake build configs are adapted to this new
structure.
More features are added to the default super class for configs.
Change-Id: I5ecfc7a4e9b909da6749189a059cdcd4a208fddd
There are many opportunities for replacing `StringBuffer` with
`StringBuilder` provided that the type isn't visible from the
public API and is used only in internal methods. Replace these
where appropriate.
Change-Id: I769ceb6eaee18d183fb0e00fa0d730651f8a7edb
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
The use of toString().toEmpty() is a potential code smell, and has
identified a couple of places where this pattern could be optimised.
Change-Id: I1a37e62ed8546a48151a494e9f24fea46d9d2497
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
In many cases a String's empty status is tested with `.equals("")`.
However, Java 1.6 added `.isEmpty()` which can be more efficient since
it compares the internal length parameter only for testing. Replace
code using the `.isEmpty()` variant instead.
Some tests for `"".equals(expr)` can be replaced with `expr.isEmpty()`
where it is already known that the `expr` is not null; however,
these have to be reviewed on a case-by-case basis.
Change-Id: I3c6af4d8b7638e757435914ac76cb3a67899a5fd
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
The implementation of `ToolReference::getToolCommand()` different from its
neighbours by checking if the `parent` was non-null. Change this so it looks for
the `parent` being null and swap the bodies of the `if` statement around to
maintain compatibility.
Change-Id: I8a188b350f94db9b1bd9d240b7a7320a930280a2
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
Replace all occurrences of `new String(expr)` with `expr` provided that the
`expr` is not a byte array or a char array.
Change-Id: Iecae801b83084908b60b9e146eba87550eac640d
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
Occurrences of `new String("...")` have been replaced with a direct reference
to the literal it was wrapping.
Change-Id: Iefb49a009f210db59e5724e0a232dba2e13292b1
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
Occurrences of `new String()` have been replaced with the equivalent `""` and
additional NON-NLS tags have been inserted in where appropriate.
Change-Id: I54cf71dcd0d5a92a675a71166d66949533de502b
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
Using `new Integer` and other wrapper types such as `new Character` results in
potential extra heap utilisation as the values are not cached. The built-in
`Integer.valueOf` will perform caching on numbers in the range -128..127 (at
least) using a flyweight pattern. In addition, parsing `int` values can be done
with `Integer.parseInt` which avoids object construction.
Adjust tests such as `"true".equals(expr)` to `Boolean.parseBoolean(expr)`.
Change-Id: I0408a5c69afc4ca6ede71acaf6cc4abd67538006
Signed-off-by: Alex Blewitt <alex.blewitt@gmail.com>
Neon generified ListenerList so cleanup here too.
Change-Id: I569ddf79d4cc0e805da5083867f3c403aa6d79b9
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
Move the new build system to cdt.core and remove the previous
plugins. Hook the new system into scanner info and environment
variable manager.
Clean up API in preparation for Neon and API lockdown. Hook up
Qt to the new APIs.
Add discovery of MSYS2's toolchain and Qt and Qt's MinGW toolchain.
Change-Id: I85b1a91da4a44e86f0e9da9310f8106c894623e0
This reverts the changes we've made for language settings providers
so that I can start again with a cleaner approach.
Change-Id: Icddd5a465a8f217594af5b07011a56bf1dfdf014
Use IBuildConfiguration instead of ICConfigurationDescription.
Add adapters to convert back and forth between these. Create
IBuildConfiguration objects when configuration descriptors are
created.
Clean up formating of the code involved.
Change-Id: Iec5ca132dddbf990f116f96b4680ef5f7318e28b
It is not obvious in autotools preferences UI how to set variables like CC=/sbin/gcc
Introduces the basis to allow extend the UI to include such as kind of variables.
Change-Id: Ife0aada50d8c253f3fff39e7087f5fd54803ba48
Signed-off-by: Wainer dos Santos Moschetta <wainersm@linux.vnet.ibm.com>
Currently only contains a button for launching the CMake GUI
(cmake-qt-gui), but we might want to put other things in here as well.
Change-Id: Ia89ad409eaad17a170cf1e2f1cd4fb31a7d678e2
Signed-off-by: Jesper Eskilson <jesper.eskilson@iar.com>
The New Class Wizard asks scanner info for include paths for a project.
Need to decide whether that's a good thing or not but for now, add
support in the Qt config and GCC toolchain for it.
Change-Id: I5f037deb13db41fc0a083ea9fdc30ac1f61557e6
Clean up cases when Qt installs aren't registered for a given
config. Fix bug on first scanner info request in build config.
Clean up the Qt Run launch delegate in extension.
Also added a method to GDBLaunch to allow subclasses to override
what the default gdb path is.
Change-Id: Icf158633e1c1327cc87ce59c1605bb26258f8708
of a tool and implement the new interface method.
Change-Id: Iee645519c1bf9fbe144021bc81bd6cf7434c3e4b
Signed-off-by: Guy Bonneau <guy.bonneau@videotron.ca>
Qt builds now clear the scanner info cache so that it reloads.
Also added Environment tab for Qt Local launch so that you can
override the environment. Supported for 'run'.
Change-Id: Id6a04a564587411b6a5846f00045f79f5696bfb8
We reuse GDBLaunch but need to override some settings that are
normally in the launch configuration. These things are calculated
at launch time.
Note there is also an added dependency to the launch bar core
to make GDBLaunch a targeted launch so we can set the target properly.
At some point we'll move this launch target stuff lower down, maybe
to the debug platform.
Change-Id: Ibbf6b794a9ecf25b79d46093cc624ea69dc04641
Make the build folder common for build configs. Makes things
consistent.
Also make it clear that we are caching scanner info with the
names of the API calls.
Change-Id: I1da0d90b3358065e28e437d0dfeea730e13c9aef
This brings the master branch up to date with everything we've done
in the 8.8 branch. Adjusts for the new ILaunchTarget and targeted
launch delegate.
Also has a start at making more things common in the new build system.
With three extenders of it now in CDT, i.e. Qt, CMake, and Arduino,
it's obvious we can make things more common and make new extenders
less work.
Also undoes some of the work I've done to get Arduino onto the new
build system. Will need to redo it as we do the new common stuff.
Change-Id: I51ce768e0fc60e29c16b05567bd9802d64e33779
This patch modifies the wizard so that the C projects also show in the
list of projects.
- If a given C project is selected and the C nature is selected, the
project is not modified.
- If a given C project is selected and the C++ nature is selected, the
C++ nature is added and project type and toolchain selection have no
effect because it is assumed that the project type and toolchain had
already been setup before hand.
- Old-style projects (CDT 3.0) are not converted anymore.
Unchanged behavior:
- C++ projects never show in the list of projects. Removing nature is
(still) unsupported.
- Non-CDT project behave as they use to.
Change-Id: Ie6282c11d90c42d21ecad2996ab49ebd64c38ece
Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
This code is not used and hasn't been touched since 2012.
Now it can be referred as the "old new new wizard".
Change-Id: Iccc60651a8233a5ef5b138dfcc334cfcf926d109
Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
* assertNotNull instead of assertTrue(var != null)
* better types for swtbot api to prevent useless casts after that
* LanguageSettingsManager.getLanguages instead of deprecated api
* assertFalse instead of assertTrue(!var)
Change-Id: Icdde01f10617b6ec51938bc1998a690cfe7ff1d4
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>