summaryrefslogtreecommitdiffstats
path: root/Source
Commit message (Collapse)AuthorAgeFilesLines
* cmListCommand: Implement REMOVE_ITEM in terms of cmRemoveMatching.Stephen Kelly2015-02-151-16/+6
|
* cmAlgorithms: Add cmRemoveMatching algorithm.Stephen Kelly2015-02-151-0/+24
| | | | | Implement it in terms of std::remove_if with a binary search through a matching range.
* cmListCommand: Replace joining loop with cmJoin algorithm.Stephen Kelly2015-02-151-8/+2
|
* cmListCommand: Use cmRemoveIndices for REMOVE_AT subcommand.Stephen Kelly2015-02-151-16/+9
| | | | | Avoid repeatedly looping over the indices to process elements (even without breaking out of the loop when the element is found).
* cmAlgorithms: Implement algorithm for removing indexes.Stephen Kelly2015-02-151-0/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* cmListCommand: Convert loop to find algorithm.Stephen Kelly2015-02-151-12/+1
|
* cmListCommand: Implement REVERSE subcommand with std::reverse.Stephen Kelly2015-02-151-9/+2
|
* cmListCommand: Use std::find algorithm for FIND subcommand.Stephen Kelly2015-02-151-11/+7
| | | | | | 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.
* Merge topic 'clean-up-cmFunctionCommand'Brad King2015-02-131-21/+4
|\ | | | | | | | | | | | | 78757e7f cmFunctionCommand: Replace loops with cmJoin. fc1cf265 cmFunctionCommand: Remove counting variable. e5ebeae7 cmFunctionCommand: Split loop in two.
| * cmFunctionCommand: Replace loops with cmJoin.Stephen Kelly2015-02-121-19/+4
| |
| * cmFunctionCommand: Remove counting variable.Stephen Kelly2015-02-121-9/+5
| | | | | | | | Start iteration at correct starting point directly.
| * cmFunctionCommand: Split loop in two.Stephen Kelly2015-02-121-2/+4
| |
* | Merge topic 'xcode-attribute-genex'Brad King2015-02-131-1/+4
|\ \ | | | | | | | | | | | | bf8f9c29 Xcode: Teach XCODE_ATTRIBUTE target properties about generator expressions
| * | Xcode: Teach XCODE_ATTRIBUTE target properties about generator expressionsGregor Jasny2015-02-121-1/+4
| |/ | | | | | | Signed-off-by: Gregor Jasny <gjasny@googlemail.com>
* | CMake Nightly Date StampKitware Robot2015-02-131-1/+1
|/
* Merge topic 'clean-up-cmMacroCommand'Brad King2015-02-121-61/+32
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * cmMacroCommand: Manipulate target string directly.Stephen Kelly2015-02-111-14/+10
| | | | | | | | | | Avoid copying a string from the source, manipulating it, and then copying it back. Manipulate it in place instead.
| * cmMacroCommand: Move computation of ARGV%n names out of double loop.Stephen Kelly2015-02-111-4/+9
| |
| * cmMacroCommand: Move ARGV replacement out of condition.Stephen Kelly2015-02-111-2/+1
| |
| * cmMacroCommand: Remove condition around ARGN replacement.Stephen Kelly2015-02-111-5/+1
| | | | | | | | | | There is none for ARGC replacement, so no reason to conditionalize the replacement. The computation is already done.
| * cmMacroCommand: Declare tmps in the scope that it's used.Stephen Kelly2015-02-111-3/+1
| | | | | | | | | | We don't particularly need to reuse the string memory here, and this pattern is not common in CMake.
| * cmMacroCommand: Declare arg in the scope that it is used.Stephen Kelly2015-02-111-1/+2
| | | | | | | | | | | | 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.
| * cmMacroCommand: Inline variable computation.Stephen Kelly2015-02-111-5/+1
| |
| * cmMacroCommand: Compute variables outside of two loops.Stephen Kelly2015-02-111-6/+12
| | | | | | | | | | Avoid computing them from scratch for each argument of each function.
| * cmMacroCommand: Remove intermediate arg variables.Stephen Kelly2015-02-111-7/+2
| |
| * cmMacroCommand: Remove condition around ARGN computation.Stephen Kelly2015-02-111-4/+1
| | | | | | | | | | An empty string is appended if the condition is false, which is ok for this commit.
| * cmMacroCommand: Remove conditional append of semicolon.Stephen Kelly2015-02-111-8/+0
| | | | | | | | The conditions are never true.
| * cmMacroCommand: Declare arg variables where used and initialized.Stephen Kelly2015-02-111-21/+9
| | | | | | | | | | Make the initialization by population with the expanded* content unconditional.
| * cmMacroCommand: Join the args strings outside of the loops.Stephen Kelly2015-02-111-4/+6
| | | | | | | | | | This means that we compute the strings even if not used in the macro but this shouldn't be expensive and it simplifies the code.
* | Merge topic 'use-cmRange'Brad King2015-02-1227-350/+274
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7c3f6376 Convert loop into two algorithms. 8a399c8c Convert loop to the common pattern. abfca975 Move loop inside of condition. 0b61b86d Handle last element outside of the loop. e21f7829 cmTarget: Use a sorted vector in place of a set. 559dc155 cmSet: Replace loop with cmJoin. 0ea71932 cmFindBase: Replace loop with cmJoin on range. 9380e85f Convert loops to cmJoin algorithm with cmRange. bb10012f cmStringCommand: Accumulate with cmJoin and range adaptors. 0c12f1ea cmAlgorithms: Add a range adaptor and API for adjusting a range. 27c6f017 Use cmJoin to accumulate string ranges. 4e78ebbd cmAlgorithms: Add a Range container and adaptor method. 89102249 Replace common loop pattern with cmJoin 7b8725bf Convert loops populating maybe-empty content into the common pattern. 7ee56f03 Convert loops into the commonly used pattern. 0a4e5674 cmMacroCommand: Remove counting variable. ...
| * Convert loop into two algorithms.Stephen Kelly2015-02-111-10/+6
| |
| * Convert loop to the common pattern.Stephen Kelly2015-02-111-10/+4
| |
| * Move loop inside of condition.Stephen Kelly2015-02-111-12/+12
| | | | | | | | The loop is only executed if the condition is true.
| * Handle last element outside of the loop.Stephen Kelly2015-02-111-3/+11
| | | | | | | | | | There is no point in checking on each loop iteration whether it is the last element.
| * cmTarget: Use a sorted vector in place of a set.Stephen Kelly2015-02-111-17/+10
| | | | | | | | | | | | | | The vector has a more easy-to-use API. Join the string with cmJoin, and avoid erasing from the container in the loop.
| * cmSet: Replace loop with cmJoin.Stephen Kelly2015-02-111-11/+1
| |
| * cmFindBase: Replace loop with cmJoin on range.Stephen Kelly2015-02-111-5/+3
| |
| * Convert loops to cmJoin algorithm with cmRange.Stephen Kelly2015-02-114-34/+5
| |
| * cmStringCommand: Accumulate with cmJoin and range adaptors.Stephen Kelly2015-02-111-31/+11
| |
| * cmAlgorithms: Add a range adaptor and API for adjusting a range.Stephen Kelly2015-02-111-0/+19
| |
| * Use cmJoin to accumulate string ranges.Stephen Kelly2015-02-112-10/+2
| | | | | | | | | | | | | | | | Avoid using the std::accumulate algorithm which is designed for numeric types, not complex types. It introduces unneccessary copies. Initialize variables where they are populated.
| * cmAlgorithms: Add a Range container and adaptor method.Stephen Kelly2015-02-111-0/+21
| | | | | | | | | | | | | | | | This can make a pair of iterators API compatible with the cmJoin algorithm and other range-based algorithms. Accept different iterator types in the cmRange adaptor so that a const and non-const iterator are accepted.
| * Replace common loop pattern with cmJoinStephen Kelly2015-02-116-81/+11
| |
| * Convert loops populating maybe-empty content into the common pattern.Stephen Kelly2015-02-113-17/+30
| |
| * Convert loops into the commonly used pattern.Stephen Kelly2015-02-112-32/+25
| |
| * cmMacroCommand: Remove counting variable.Stephen Kelly2015-02-111-9/+4
| | | | | | | | Start iteration at correct starting point directly.
| * cmMacroCommand: Execute loop only if it has an effect.Stephen Kelly2015-02-111-9/+12
| |
| * cmMacroCommand: Extract iteration starting point.Stephen Kelly2015-02-111-2/+3
| |
| * cmMacroCommand: Replace a loop with cmJoin.Stephen Kelly2015-02-111-3/+3
| |
| * Split cmAlgorithms into a separate header file.Stephen Kelly2015-02-1011-134/+161
| |