###
#
# @copyright (c) 2009-2014 The University of Tennessee and The University
#                          of Tennessee Research Foundation.
#                          All rights reserved.
# @copyright (c) 2012-2014 Inria. All rights reserved.
# @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
#
###
#
#  @file ParseArguments.cmake
#
#  @project MORSE
#  MORSE is a software package provided by:
#     Inria Bordeaux - Sud-Ouest,
#     Univ. of Tennessee,
#     King Abdullah Univesity of Science and Technology
#     Univ. of California Berkeley,
#     Univ. of Colorado Denver. 
#
#  @version 0.9.0
#  @author Cedric Castagnede
#  @author Emmanuel Agullo
#  @author Mathieu Faverge
#  @date 13-07-2012
#
###

MACRO(PARSE_ARGUMENTS prefix arg_names option_names)
    set(DEFAULT_ARGS)
    foreach(arg_name ${arg_names})    
        set(${prefix}_${arg_name})
    endforeach(arg_name)
    foreach(option ${option_names})
        set(${prefix}_${option} FALSE)
    endforeach(option)

    set(current_arg_name DEFAULT_ARGS)
    set(current_arg_list)
    foreach(arg ${ARGN})        
        set(larg_names ${arg_names})    
        list(FIND larg_names "${arg}" is_arg_name)           
        if(is_arg_name GREATER -1)
            set(${prefix}_${current_arg_name} ${current_arg_list})
            set(current_arg_name ${arg})
            set(current_arg_list)
        else(is_arg_name GREATER -1)
            set(loption_names ${option_names})    
            list(FIND loption_names "${arg}" is_option)        
            if(is_option GREATER -1)
                set(${prefix}_${arg} TRUE)
            else(is_option GREATER -1)
                set(current_arg_list ${current_arg_list} ${arg})
            endif(is_option GREATER -1)
        endif(is_arg_name GREATER -1)
    endforeach(arg)
    set(${prefix}_${current_arg_name} ${current_arg_list})

ENDMACRO(PARSE_ARGUMENTS)

MACRO(CAR var)
    set(${var} ${ARGV1})
ENDMACRO(CAR)

MACRO(CDR var junk)
    set(${var} ${ARGN})
ENDMACRO(CDR)

##
## @end file ParseArguments.cmake
##
