/* Copyright (c) 2017 Microsoft Corporation. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Author: Leonardo de Moura, Gabriel Ebner */ #pragma once #include #include #include #include "runtime/exception.h" #include "runtime/optional.h" namespace lean { class file_not_found_exception : public exception { std::string m_fname; public: file_not_found_exception(std::string const & fname); }; #if !defined(LEAN_EMSCRIPTEN) std::string get_exe_location(); #endif char const * get_dir_sep(); char get_dir_sep_ch(); bool is_path_sep(char c); std::string normalize_path(std::string f); /** \brief Find all files with the given extension recursively. */ void find_files(std::string const & base, char const * ext, std::vector & files); bool has_file_ext(std::string const & fname, char const * ext); std::string resolve(std::string const & rel_or_abs, std::string const & base); std::string dirname(std::string const & fn); /** \brief Get the file name without the extension. */ std::string stem(std::string const & fn); std::string read_file(std::string const & fname, std::ios_base::openmode mode = std::ios_base::in); bool is_directory(std::string const & fn); optional is_dir(std::string const & fn); std::vector read_dir(std::string const & dirname); time_t get_mtime(std::string const & fname); std::string lrealpath(std::string const & fname); }