| Index: core/fxcrt/fx_basic_util.cpp
|
| diff --git a/core/fxcrt/fx_basic_util.cpp b/core/fxcrt/fx_basic_util.cpp
|
| index ae3959bdb98003efb9e7eb6897af96bd8e8f5dc2..df22d4bf24b88e8c8ca8fdf6db8ff97cff87aa46 100644
|
| --- a/core/fxcrt/fx_basic_util.cpp
|
| +++ b/core/fxcrt/fx_basic_util.cpp
|
| @@ -7,13 +7,6 @@
|
| #include "core/fxcrt/fx_basic.h"
|
| #include "core/fxcrt/fx_ext.h"
|
|
|
| -#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
|
| -#include <dirent.h>
|
| -#include <sys/types.h>
|
| -#else
|
| -#include <direct.h>
|
| -#endif
|
| -
|
| #include <algorithm>
|
| #include <cctype>
|
| #include <limits>
|
| @@ -85,6 +78,7 @@ static const FX_FLOAT fraction_scales[] = {
|
| 0.1f, 0.01f, 0.001f, 0.0001f,
|
| 0.00001f, 0.000001f, 0.0000001f, 0.00000001f,
|
| 0.000000001f, 0.0000000001f, 0.00000000001f};
|
| +
|
| int FXSYS_FractionalScaleCount() {
|
| return FX_ArraySize(fraction_scales);
|
| }
|
| @@ -107,16 +101,14 @@ FX_FLOAT FX_atof(const CFX_ByteStringC& strc) {
|
| cc++;
|
| }
|
| while (cc < len) {
|
| - if (strc[cc] != '+' && strc[cc] != '-') {
|
| + if (strc[cc] != '+' && strc[cc] != '-')
|
| break;
|
| - }
|
| cc++;
|
| }
|
| FX_FLOAT value = 0;
|
| while (cc < len) {
|
| - if (strc[cc] == '.') {
|
| + if (strc[cc] == '.')
|
| break;
|
| - }
|
| value = value * 10 + FXSYS_toDecimalDigit(strc.CharAt(cc));
|
| cc++;
|
| }
|
| @@ -145,36 +137,15 @@ void FXSYS_snprintf(char* str,
|
| FXSYS_vsnprintf(str, size, fmt, ap);
|
| va_end(ap);
|
| }
|
| +
|
| void FXSYS_vsnprintf(char* str, size_t size, const char* fmt, va_list ap) {
|
| (void)_vsnprintf(str, size, fmt, ap);
|
| - if (size) {
|
| + if (size)
|
| str[size - 1] = 0;
|
| - }
|
| }
|
| #endif // _FXM_PLATFORM_WINDOWS_ && _MSC_VER < 1900
|
|
|
| -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
|
| -class CFindFileData {
|
| - public:
|
| - virtual ~CFindFileData() {}
|
| - HANDLE m_Handle;
|
| - FX_BOOL m_bEnd;
|
| -};
|
| -
|
| -class CFindFileDataA : public CFindFileData {
|
| - public:
|
| - ~CFindFileDataA() override {}
|
| - WIN32_FIND_DATAA m_FindData;
|
| -};
|
| -
|
| -class CFindFileDataW : public CFindFileData {
|
| - public:
|
| - ~CFindFileDataW() override {}
|
| - WIN32_FIND_DATAW m_FindData;
|
| -};
|
| -#endif
|
| -
|
| -void* FX_OpenFolder(const FX_CHAR* path) {
|
| +FX_FileHandle* FX_OpenFolder(const FX_CHAR* path) {
|
| #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
|
| std::unique_ptr<CFindFileDataA> pData(new CFindFileDataA);
|
| pData->m_Handle = FindFirstFileExA((CFX_ByteString(path) + "/*.*").c_str(),
|
| @@ -183,101 +154,54 @@ void* FX_OpenFolder(const FX_CHAR* path) {
|
| if (pData->m_Handle == INVALID_HANDLE_VALUE)
|
| return nullptr;
|
|
|
| - pData->m_bEnd = FALSE;
|
| + pData->m_bEnd = false;
|
| return pData.release();
|
| #else
|
| - DIR* dir = opendir(path);
|
| - return dir;
|
| + return opendir(path);
|
| #endif
|
| }
|
|
|
| -void* FX_OpenFolder(const FX_WCHAR* path) {
|
| -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
|
| - std::unique_ptr<CFindFileDataW> pData(new CFindFileDataW);
|
| - pData->m_Handle = FindFirstFileExW((CFX_WideString(path) + L"/*.*").c_str(),
|
| - FindExInfoStandard, &pData->m_FindData,
|
| - FindExSearchNameMatch, nullptr, 0);
|
| - if (pData->m_Handle == INVALID_HANDLE_VALUE)
|
| - return nullptr;
|
| +bool FX_GetNextFile(FX_FileHandle* handle,
|
| + CFX_ByteString* filename,
|
| + bool* bFolder) {
|
| + if (!handle)
|
| + return false;
|
|
|
| - pData->m_bEnd = FALSE;
|
| - return pData.release();
|
| -#else
|
| - DIR* dir = opendir(CFX_ByteString::FromUnicode(path).c_str());
|
| - return dir;
|
| -#endif
|
| -}
|
| -FX_BOOL FX_GetNextFile(void* handle,
|
| - CFX_ByteString& filename,
|
| - FX_BOOL& bFolder) {
|
| - if (!handle) {
|
| - return FALSE;
|
| - }
|
| #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
|
| - CFindFileDataA* pData = (CFindFileDataA*)handle;
|
| - if (pData->m_bEnd)
|
| - return FALSE;
|
| -
|
| - filename = pData->m_FindData.cFileName;
|
| - bFolder = pData->m_FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
|
| - if (!FindNextFileA(pData->m_Handle, &pData->m_FindData))
|
| - pData->m_bEnd = TRUE;
|
| - return TRUE;
|
| -#elif defined(__native_client__)
|
| - abort();
|
| - return FALSE;
|
| -#else
|
| - struct dirent* de = readdir((DIR*)handle);
|
| - if (!de) {
|
| - return FALSE;
|
| - }
|
| - filename = de->d_name;
|
| - bFolder = de->d_type == DT_DIR;
|
| - return TRUE;
|
| -#endif
|
| -}
|
| -FX_BOOL FX_GetNextFile(void* handle,
|
| - CFX_WideString& filename,
|
| - FX_BOOL& bFolder) {
|
| - if (!handle) {
|
| - return FALSE;
|
| - }
|
| -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
|
| - CFindFileDataW* pData = (CFindFileDataW*)handle;
|
| - if (pData->m_bEnd) {
|
| - return FALSE;
|
| - }
|
| - filename = pData->m_FindData.cFileName;
|
| - bFolder = pData->m_FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
|
| - if (!FindNextFileW(pData->m_Handle, &pData->m_FindData)) {
|
| - pData->m_bEnd = TRUE;
|
| - }
|
| - return TRUE;
|
| + if (handle->m_bEnd)
|
| + return false;
|
| +
|
| + *filename = handle->m_FindData.cFileName;
|
| + *bFolder =
|
| + (handle->m_FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
|
| + if (!FindNextFileA(handle->m_Handle, &handle->m_FindData))
|
| + handle->m_bEnd = true;
|
| + return true;
|
| #elif defined(__native_client__)
|
| abort();
|
| - return FALSE;
|
| + return false;
|
| #else
|
| - struct dirent* de = readdir((DIR*)handle);
|
| - if (!de) {
|
| - return FALSE;
|
| - }
|
| - filename = CFX_WideString::FromLocal(de->d_name);
|
| - bFolder = de->d_type == DT_DIR;
|
| - return TRUE;
|
| + struct dirent* de = readdir(handle);
|
| + if (!de)
|
| + return false;
|
| + *filename = de->d_name;
|
| + *bFolder = de->d_type == DT_DIR;
|
| + return true;
|
| #endif
|
| }
|
| -void FX_CloseFolder(void* handle) {
|
| - if (!handle) {
|
| +
|
| +void FX_CloseFolder(FX_FileHandle* handle) {
|
| + if (!handle)
|
| return;
|
| - }
|
| +
|
| #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
|
| - CFindFileData* pData = (CFindFileData*)handle;
|
| - FindClose(pData->m_Handle);
|
| - delete pData;
|
| + FindClose(handle->m_Handle);
|
| + delete handle;
|
| #else
|
| - closedir((DIR*)handle);
|
| + closedir(handle);
|
| #endif
|
| }
|
| +
|
| FX_WCHAR FX_GetFolderSeparator() {
|
| #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
|
| return '\\';
|
| @@ -330,7 +254,8 @@ uint32_t GetBits32(const uint8_t* pData, int bitpos, int nbits) {
|
| bitMask = (1 << std::min(bitOffset, nbits)) - 1;
|
| dstShift = nbits - bitOffset;
|
| }
|
| - uint32_t result = (uint32_t)(*dataPtr++ >> bitShift & bitMask) << dstShift;
|
| + uint32_t result =
|
| + static_cast<uint32_t>((*dataPtr++ >> bitShift & bitMask) << dstShift);
|
| while (dstShift >= 8) {
|
| dstShift -= 8;
|
| result |= *dataPtr++ << dstShift;
|
|
|