# Interface for iterating over a text file by line. # # Example usage: # # fi_open_file(${some_file}) # # while(NOT fi_done) # fi_get_next_line() # # message(STATUS "read line: ${fi_line}") # endwhile() macro(fi_check_done) string(LENGTH "${fi_file_contents}" len) set(fi_done FALSE PARENT_SCOPE) if(len EQUAL 0) set(fi_done TRUE PARENT_SCOPE) endif() endmacro() function(fi_open_file file) file(READ "${file}" fi_file_contents) set(fi_file_contents "${fi_file_contents}" PARENT_SCOPE) fi_check_done() endfunction() function(fi_get_next_line) string(FIND "${fi_file_contents}" "\n" pos) string(SUBSTRING "${fi_file_contents}" 0 ${pos} fi_line) math(EXPR pos "${pos} + 1") string(SUBSTRING "${fi_file_contents}" ${pos} -1 fi_file_contents) fi_check_done() set(fi_line "${fi_line}" PARENT_SCOPE) set(fi_file_contents "${fi_file_contents}" PARENT_SCOPE) endfunction()