| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | 
							
- #! See http://www.cmake.org/Wiki/CMakeMacroListOperations#LIST_FILTER
 
- #!
 
- #! Usage:
 
- #! \code
 
- #! LIST_FILTER(<list> <regexp_var> [<regexp_var> ...]
 
- #!              [OUTPUT_VARIABLE <variable>])
 
- #! \endcode
 
- #!
 
- #! Removes items from <list> which do not match any of the specified
 
- #! regular expressions. An optional argument OUTPUT_VARIABLE
 
- #! specifies a variable in which to store the matched items instead of
 
- #! updating <list>
 
- #! As regular expressions can not be given to macros (see bug #5389), we pass
 
- #! variable names whose content is the regular expressions.
 
- #! Note that this macro requires PARSE_ARGUMENTS macro, available here:
 
- #! http://www.cmake.org/Wiki/CMakeMacroParseArguments
 
- #!
 
- #! \ingroup CMakeUtilities
 
- MACRO(CtkMacroListFilter)
 
-   ctkMacroParseArguments(LIST_FILTER "OUTPUT_VARIABLE" "" ${ARGV})
 
-   # Check arguments.
 
-   LIST(LENGTH LIST_FILTER_DEFAULT_ARGS LIST_FILTER_default_length)
 
-   IF(${LIST_FILTER_default_length} EQUAL 0)
 
-     MESSAGE(FATAL_ERROR "LIST_FILTER: missing list variable.")
 
-   ENDIF(${LIST_FILTER_default_length} EQUAL 0)
 
-   IF(${LIST_FILTER_default_length} EQUAL 1)
 
-     MESSAGE(FATAL_ERROR "LIST_FILTER: missing regular expression variable.")
 
-   ENDIF(${LIST_FILTER_default_length} EQUAL 1)
 
-   # Reset output variable
 
-   IF(NOT LIST_FILTER_OUTPUT_VARIABLE)
 
-     SET(LIST_FILTER_OUTPUT_VARIABLE "LIST_FILTER_internal_output")
 
-   ENDIF(NOT LIST_FILTER_OUTPUT_VARIABLE)
 
-   SET(${LIST_FILTER_OUTPUT_VARIABLE})
 
-   # Extract input list from arguments
 
-   LIST(GET LIST_FILTER_DEFAULT_ARGS 0 LIST_FILTER_input_list)
 
-   LIST(REMOVE_AT LIST_FILTER_DEFAULT_ARGS 0)
 
-   FOREACH(LIST_FILTER_item ${${LIST_FILTER_input_list}})
 
-     FOREACH(LIST_FILTER_regexp_var ${LIST_FILTER_DEFAULT_ARGS})
 
-       FOREACH(LIST_FILTER_regexp ${${LIST_FILTER_regexp_var}})
 
-         IF(${LIST_FILTER_item} MATCHES ${LIST_FILTER_regexp})
 
-           LIST(APPEND ${LIST_FILTER_OUTPUT_VARIABLE} ${LIST_FILTER_item})
 
-         ENDIF(${LIST_FILTER_item} MATCHES ${LIST_FILTER_regexp})
 
-       ENDFOREACH(LIST_FILTER_regexp ${${LIST_FILTER_regexp_var}})
 
-     ENDFOREACH(LIST_FILTER_regexp_var)
 
-   ENDFOREACH(LIST_FILTER_item)
 
-   # If OUTPUT_VARIABLE is not specified, overwrite the input list.
 
-   IF(${LIST_FILTER_OUTPUT_VARIABLE} STREQUAL "LIST_FILTER_internal_output")
 
-     SET(${LIST_FILTER_input_list} ${${LIST_FILTER_OUTPUT_VARIABLE}})
 
-   ENDIF(${LIST_FILTER_OUTPUT_VARIABLE} STREQUAL "LIST_FILTER_internal_output")
 
- ENDMACRO(CtkMacroListFilter)
 
 
  |