Use existing defines for wstring/string

pull/1567/head
Ali Alamiri 5 years ago
parent cb100b58bf
commit dd93c6e5eb

@ -6,6 +6,10 @@
#include <spdlog/tweakme.h> #include <spdlog/tweakme.h>
#include <spdlog/details/null_mutex.h> #include <spdlog/details/null_mutex.h>
#ifdef _WIN32
#include <spdlog/details/windows_include.h>
#endif
#include <atomic> #include <atomic>
#include <chrono> #include <chrono>
#include <initializer_list> #include <initializer_list>
@ -88,9 +92,15 @@ class sink;
#if defined(_WIN32) && defined(SPDLOG_WCHAR_FILENAMES) #if defined(_WIN32) && defined(SPDLOG_WCHAR_FILENAMES)
using filename_t = std::wstring; using filename_t = std::wstring;
using win32_find_data = WIN32_FIND_DATAW;
#define find_first_file FindFirstFileW
#define find_next_file FindNextFileW
#define SPDLOG_FILENAME_T(s) L##s #define SPDLOG_FILENAME_T(s) L##s
#else #else
using filename_t = std::string; using filename_t = std::string;
using win32_find_data = WIN32_FIND_DATAA;
#define find_first_file FindFirstFileA
#define find_next_file FindNextFileA
#define SPDLOG_FILENAME_T(s) s #define SPDLOG_FILENAME_T(s) s
#endif #endif

@ -554,51 +554,20 @@ std::string SPDLOG_INLINE getenv(const char *field)
} }
#ifdef _WIN32 #ifdef _WIN32
#ifdef SPDLOG_WCHAR_FILENAMES SPDLOG_INLINE std::vector<filename_t> get_directory_files(const filename_t &directory) SPDLOG_NOEXCEPT
SPDLOG_INLINE std::vector<std::wstring> get_directory_files(const std::wstring &directory) SPDLOG_NOEXCEPT
{
std::vector<std::wstring> files;
HANDLE dir;
WIN32_FIND_DATAW file_data;
if ((dir = FindFirstFileW((directory + L"/*").c_str(), &file_data)) == INVALID_HANDLE_VALUE)
return files;
do
{
const std::wstring file_name = file_data.cFileName;
const std::wstring full_file_name = directory + L"/" + file_name;
const bool is_directory = (file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
if (file_name[0] == '.')
continue;
if (is_directory)
continue;
files.push_back(full_file_name);
} while (FindNextFileW(dir, &file_data));
FindClose(dir);
return files;
}
#else
SPDLOG_INLINE std::vector<std::string> get_directory_files(const std::string &directory) SPDLOG_NOEXCEPT
{ {
std::vector<std::string> files; std::vector<filename_t> files;
HANDLE dir; HANDLE dir;
WIN32_FIND_DATAA file_data; win32_find_data file_data;
if ((dir = FindFirstFileA((directory + "/*").c_str(), &file_data)) == INVALID_HANDLE_VALUE) if ((dir = find_first_file((directory + SPDLOG_FILENAME_T("/*")).c_str(), &file_data)) == INVALID_HANDLE_VALUE)
return files; return files;
do do
{ {
const std::string file_name = file_data.cFileName; const filename_t file_name = file_data.cFileName;
const std::string full_file_name = directory + "/" + file_name; const filename_t full_file_name = directory + SPDLOG_FILENAME_T("/") + file_name;
const bool is_directory = (file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0; const bool is_directory = (file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
if (file_name[0] == '.') if (file_name[0] == '.')
@ -608,13 +577,12 @@ SPDLOG_INLINE std::vector<std::string> get_directory_files(const std::string &di
continue; continue;
files.push_back(full_file_name); files.push_back(full_file_name);
} while (FindNextFileA(dir, &file_data)); } while (find_next_file(dir, &file_data));
FindClose(dir); FindClose(dir);
return files; return files;
} }
#endif
#else #else
SPDLOG_INLINE std::vector<std::string> get_directory_files(const std::string &directory) SPDLOG_NOEXCEPT SPDLOG_INLINE std::vector<std::string> get_directory_files(const std::string &directory) SPDLOG_NOEXCEPT
{ {

@ -102,11 +102,7 @@ SPDLOG_API bool create_dir(filename_t path);
// return empty string if field not found // return empty string if field not found
SPDLOG_API std::string getenv(const char *field); SPDLOG_API std::string getenv(const char *field);
#if defined(_WIN32) && defined(SPDLOG_WCHAR_FILENAMES) SPDLOG_API std::vector<filename_t> get_directory_files(const filename_t &directory) SPDLOG_NOEXCEPT;
SPDLOG_API std::vector<std::wstring> get_directory_files(const std::wstring &directory) SPDLOG_NOEXCEPT;
#else
SPDLOG_API std::vector<std::string> get_directory_files(const std::string &directory) SPDLOG_NOEXCEPT;
#endif
} // namespace os } // namespace os
} // namespace details } // namespace details

Loading…
Cancel
Save