#pragma once #include #include #include #include #include #include #ifdef __APPLE__ #include #include #elif defined(_MSC_VER) #include #elif defined(__linux) #include #include #include #include #endif class path_helper { public: static xlnt::path get_data_directory(const std::string &append = "") { return xlnt::path("data") .append(xlnt::path(append)); } static void copy_file(const xlnt::path &source, const xlnt::path &destination, bool overwrite) { if(!overwrite && destination.exists()) { throw std::runtime_error("destination file already exists and overwrite==false"); } std::ifstream src(source.string(), std::ios::binary); std::ofstream dst(destination.string(), std::ios::binary); dst << src.rdbuf(); } static void delete_file(const xlnt::path &path) { std::remove(path.string().c_str()); } };