Fix build with GCC

Include alternate headers when building on Win32 with a compiler other than
MSVC

Re-add constexpr modifier to wstring_view declarations

Add _Frees_ptr_opt_ to cross-platform source annotation header

Update CMake version to 3.8

Revert traditional for-loop in Number::isZero to functional version

This reverts commit 49a291d9198045bdde2e16a7f7ef1b30f48c6103.
This commit is contained in:
Michal Malý 2019-03-09 08:50:32 +01:00 committed by fwcd
commit f6bc9d48f0
7 changed files with 15 additions and 15 deletions

View file

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 2.6) cmake_minimum_required(VERSION 3.8)
project(calculator CXX) project(calculator CXX)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)

View file

@ -59,13 +59,6 @@ namespace CalcEngine
bool Number::IsZero() const bool Number::IsZero() const
{ {
for (auto const& digit : Mantissa()) return all_of(m_mantissa.begin(), m_mantissa.end(), [](auto &&i) { return i == 0; });
{
if (digit != 0)
{
return false;
}
}
return true;
} }
} }

View file

@ -18,8 +18,8 @@ static constexpr int32_t DEFAULT_RADIX = 10;
static constexpr wchar_t DEFAULT_DEC_SEPARATOR = L'.'; static constexpr wchar_t DEFAULT_DEC_SEPARATOR = L'.';
static constexpr wchar_t DEFAULT_GRP_SEPARATOR = L','; static constexpr wchar_t DEFAULT_GRP_SEPARATOR = L',';
static const wstring_view DEFAULT_GRP_STR = L"3;0"; static constexpr wstring_view DEFAULT_GRP_STR = L"3;0";
static const wstring_view DEFAULT_NUMBER_STR = L"0"; static constexpr wstring_view DEFAULT_NUMBER_STR = L"0";
// Read strings for keys, errors, trig types, etc. // Read strings for keys, errors, trig types, etc.
// These will be copied from the resources to local memory. // These will be copied from the resources to local memory.

View file

@ -21,8 +21,8 @@ using namespace CalcEngine;
constexpr int MAX_EXPONENT = 4; constexpr int MAX_EXPONENT = 4;
constexpr uint32_t MAX_GROUPING_SIZE = 16; constexpr uint32_t MAX_GROUPING_SIZE = 16;
const wstring_view c_decPreSepStr = L"[+-]?(\\d*)["; constexpr wstring_view c_decPreSepStr = L"[+-]?(\\d*)[";
const wstring_view c_decPostSepStr = L"]?(\\d*)(?:e[+-]?(\\d*))?$"; constexpr wstring_view c_decPostSepStr = L"]?(\\d*)(?:e[+-]?(\\d*))?$";
/****************************************************************************\ /****************************************************************************\

View file

@ -219,7 +219,7 @@
#define SIDS_ERR_INPUT_OVERFLOW L"119" #define SIDS_ERR_INPUT_OVERFLOW L"119"
#define SIDS_ERR_OUTPUT_OVERFLOW L"120" #define SIDS_ERR_OUTPUT_OVERFLOW L"120"
__declspec(selectany) std::wstring g_sids[] = DECLSPEC_SELECTANY std::wstring g_sids[] =
{ {
std::wstring(SIDS_PLUS_MINUS), std::wstring(SIDS_PLUS_MINUS),
std::wstring(SIDS_C), std::wstring(SIDS_C),

View file

@ -25,7 +25,7 @@
#include <array> #include <array>
#include <string_view> #include <string_view>
#ifdef _WIN32 #if defined(_WIN32) && defined(_MSC_VER)
#include <windows.h> #include <windows.h>
#include <winerror.h> #include <winerror.h>
@ -41,4 +41,10 @@
#include "win_data_types_cross_platform.h" #include "win_data_types_cross_platform.h"
#include "sal_cross_platform.h" #include "sal_cross_platform.h"
#ifdef __GNUC__
#define DECLSPEC_SELECTANY __attribute__((selectany))
#else
#define DECLSPEC_SELECTANY __declspec(selectany)
#endif
#endif #endif

View file

@ -8,3 +8,4 @@
#define _Out_ #define _Out_
#define _Inout_ #define _Inout_
#define __in_opt #define __in_opt
#define _Frees_ptr_opt_