Make it take generic_string instead of TCHAR*, since at most callsites
we already have a generic_string.
Improve error handling. Depending on where we are in the function when
we get an error, we need to free the memory, unlock the memory, or
close the clipboard.
Note that if SetClipboardData succeeds then we should not do anything
more to the memory.
Just copy the actual results, without the additional formatting with
line and file name. It respects the hierarchy in the results, i.e.
you can copy all results from a search operation, or from a specific
file, or just the lines you selected.
The session snapshot feature runs in its own thread and access to
Scintilla etc is not thread-safe. As a *temporary* and *non-exhaustive*
fix we guard some long-running operations (undo, redo, replace, sort)
with a mutex to prevent data corruption.
Project now utilizes the /MP compiler switch to perform
parallelized builds. The number of parallel builds performed
is determined on a per-machine basis based on available
logical CPUs.
Long term this will provide the best performance output to
code maintainability ratio compared to just enabling
precompiled headers.
Using my personal machine (8 cores), I got the following
timings (Debug configuration):
* Normal build : 89 seconds
* Multi-processor build : 28 seconds
* PCH enabled : 27 seconds
Note that the multi-processor build timings can be further
reduced with proper dependency management and removal of
existing precompiled header file (precompiledHeaders.h).
Specific Changes:
* Precompiled header support disabled (not compatible with
/MP flag).
* precompiledHeader.cpp deleted.
* Solution File added.
* Minimal Rebuild (/Gm) disabled (ignored when /MP is on).
precompiledHeaders.h still exists because it contains a ton of
inclusions required by lots of files. A second and less trivial
cleanup will involve removing the precompiledHeaders.h file and
individually correcting and satisfying dependencies in each source
file in the code base.
We need a string-to-double conversion function which acts the same on
all computers, irrespective of which locale is running. We need to
guarantee that the function expects '.' as the decimal point, and not
','. The choice of en-US is more or less arbitrary.
User can now choose between lexicographic, integer and decimal sorting.
For decimal sorting there are two further options: decimal point ('.')
or decimal comma (',').
When doing integer/decimal sort, the parsing is not as strict as
before. E.g during integer sorting the program will interpret "123abc"
as 123.
Performance of integer sorting has been improved by 30%.
The implementation of sorting is delegated to classes which implement
the new "ISorter" interface. Unfortunately due to template issues most
of the code had to go in the header file.
It now only accepts digits and possibly a single minus character as the first character.
Ordinary std::stoi has too much special magic, e.g. it converts "1 a" to "1".
[UPDATE] Fix some typos and syntax issues.
git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@1299 f5eea248-9336-0410-98b8-ebc06183d4e3