| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
116459d3 cmListCommand: Avoid needlessly erasing from vectors.
1c7c35c3 cmListCommand: Replace remove duplicates loop with algorithm.
cebeed24 cmAlgorithms: Add cmRemoveDuplicates algorithm.
3cfe7a4c cmListCommand: Implement REMOVE_ITEM in terms of cmRemoveMatching.
050958a3 cmAlgorithms: Add cmRemoveMatching algorithm.
a77af8f1 cmListCommand: Replace joining loop with cmJoin algorithm.
6a22e401 cmListCommand: Use cmRemoveIndices for REMOVE_AT subcommand.
0b5cf0da cmAlgorithms: Implement algorithm for removing indexes.
069f2440 cmListCommand: Convert loop to find algorithm.
67a26764 cmListCommand: Implement REVERSE subcommand with std::reverse.
1cecd3a5 cmListCommand: Use std::find algorithm for FIND subcommand.
|
| |
| |
| |
| |
| |
| | |
The entire vector will be destroyed at once at the end of the scope,
and the remove algorithms already give us the end of the range of
interesting values, so just use those sentinals.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Start by creating a vector to hold a unique values of the input range. We
expect that in most cases, there will be relatively few duplicates, so
reserving enough memory for a complete copy is worthwhile. Unlike a solution
involving a std::set, this algorithm allocates all the memory it needs
in one go and in one place, so it is more cache friendly.
Populate the unique copy with a lower_bound insert algorithm and record the
indices of duplicates. This is the same complexity as the std::set insert
algorithm, but without the need to allocate memory on the heap and other
disadvantages of std::set.
Remove the duplicates with the cmRemoveIndices algorithm.
|
| | |
|
| |
| |
| |
| |
| | |
Implement it in terms of std::remove_if with a binary search through
a matching range.
|
| | |
|
| |
| |
| |
| |
| | |
Avoid repeatedly looping over the indices to process elements (even
without breaking out of the loop when the element is found).
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Implement ContainerAlgorithms::RemoveN to remove N elements to the
end of a container by rotating. The rotate is implemented in terms
of the efficient swap algorithm, optimized even more in the standard
library implementation when the compiler supports the rvalue-references
feature to move elements. Implement cmRemoveN with a Range API
for completeness.
std::rotate in C++11 is specified to return an iterator, but
c++98 specifies it to return void. libstdc++ 5.0 will be the first
version to have the correct return type. Implement
ContainerAlgorithms::Rotate in terms of std::rotate and return the
correct iterator from it. While std::rotate requires forward iterators,
this workaround means cmRotate requires bidirectional iterators. As
most of CMake uses random access iterators anyway, this should not
be a problem.
Implement cmRemoveIndices in terms of the RemoveN algorithm, such
that each element which is not removed is rotated only once. This
can not use the cmRemoveN range-API algorithm because that would
require creating a new range, but the range must be taken by reference
and so it can't be a temporary.
These remove algorithms are not part of the STL and I couldn't find them
anywhere else either.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
Use a ostringstream to account for the input being a variable of type
size_t as a result of using std::distance. There is no single
format string which portably accepts a size_t.
|
|\ \
| | |
| | |
| | |
| | | |
d891d474 Tests: Consolidate detection of 'rpmbuild'
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Several tests use slight variations of the same logic to enable CPack
RPM tests. Consolidate this logic into one check before any tests are
added. Look for 'rpmbuild' only on Linux and only when the test build
tree does not have spaces in the path. In particular, this will make
the result available in time for the RunCMake.CPackRPM test to be
activated even if CMake is configured exactly once.
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
a2ccbffd CPackWIX: Extend the patching mechanism to allow adding content to <Product>.
|
| | | | |
|
| | | | |
|
| | | | |
|
| |_|/
|/| | |
|
|\ \ \ |
|
| |\ \ \ |
|
| |\ \ \ \ |
|
|\ \ \ \ \ \
| | |_|/ / /
| |/| | | /
| |_|_|_|/
|/| | | | |
6d19ef9b Help: In 3.2 relnotes move OpenGL/X11 to deprecated/removed section
|
| | | | |
| | | | |
| | | | |
| | | | | |
It is a possibly incompatible change.
|
|\ \ \ \ \
| | |_|/ /
| |/| | |
| | | | |
| | | | | |
029d38fa Help: Revise configure_file documentation (#15403)
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | | |
Format the documentation with better reST markup. Revise the
wording to clarify how relative paths are handled. Also add
an example section.
|
|\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
78757e7f cmFunctionCommand: Replace loops with cmJoin.
fc1cf265 cmFunctionCommand: Remove counting variable.
e5ebeae7 cmFunctionCommand: Split loop in two.
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | | |
Start iteration at correct starting point directly.
|
| | | | | |
|
|\ \ \ \ \
| |_|_|_|/
|/| | | |
| | | | |
| | | | | |
bf8f9c29 Xcode: Teach XCODE_ATTRIBUTE target properties about generator expressions
|
| |/ / /
| | | |
| | | |
| | | | |
Signed-off-by: Gregor Jasny <gjasny@googlemail.com>
|
|/ / / |
|
|\ \ \
| | |/
| |/| |
|
| |\ \ |
|
| |\ \ \ |
|
|\ \ \ \ \ |
|
| | | | | | |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
b5f98e50 cmMacroCommand: Manipulate target string directly.
83414d5a cmMacroCommand: Move computation of ARGV%n names out of double loop.
9a1f8f35 cmMacroCommand: Move ARGV replacement out of condition.
4aa7bd2a cmMacroCommand: Remove condition around ARGN replacement.
6774c92b cmMacroCommand: Declare tmps in the scope that it's used.
2c4a7298 cmMacroCommand: Declare arg in the scope that it is used.
a551851a cmMacroCommand: Inline variable computation.
f79c0f76 cmMacroCommand: Compute variables outside of two loops.
8e0827b6 cmMacroCommand: Remove intermediate arg variables.
f2c49f59 cmMacroCommand: Remove condition around ARGN computation.
3250a7e5 cmMacroCommand: Remove conditional append of semicolon.
081a13f7 cmMacroCommand: Declare arg variables where used and initialized.
17b5ebd3 cmMacroCommand: Join the args strings outside of the loops.
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Avoid copying a string from the source, manipulating it, and then
copying it back. Manipulate it in place instead.
|
| | | | | | | |
|
| | | | | | | |
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
There is none for ARGC replacement, so no reason to conditionalize the
replacement. The computation is already done.
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
We don't particularly need to reuse the string memory here, and this
pattern is not common in CMake.
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
It can make sense to declare objects outside of loops if
the size required by the object can grow (eg std::string when
using getline), but that is not the case here.
|
| | | | | | | |
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Avoid computing them from scratch for each argument of each
function.
|
| | | | | | | |
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
An empty string is appended if the condition is false, which is
ok for this commit.
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
The conditions are never true.
|