From 14c00f46c7357adb04ce7b3abfd1866878da149e Mon Sep 17 00:00:00 2001 From: fwcd Date: Fri, 8 Mar 2019 15:13:02 +0100 Subject: [PATCH] Define common windows data types in win_data_types_cross_platform.h and change #define HRESULT to a typedef in winerror_cross_platform.h Add cross-platform includes in ratpak.h and define __in_opt in sal_cross_platform.h Define FAILED macro in winerror_cross_platform.h Implement Number::isZero using a traditional for loop since the functional version does not compile with Clang Add more data type declarations and common macros Modify calculator engine includes to use pch.h on Windows and pch_cross_platform.h on other platforms Add other cross platform headers to pch_cross_platform.h --- src/CalcManager/CEngine/CalcInput.cpp | 5 ++++ src/CalcManager/CEngine/CalcUtils.cpp | 5 ++++ src/CalcManager/CEngine/History.cpp | 5 ++++ src/CalcManager/CEngine/Number.cpp | 14 ++++++++++- src/CalcManager/CEngine/Rational.cpp | 5 ++++ src/CalcManager/CEngine/RationalMath.cpp | 5 ++++ src/CalcManager/CEngine/calc.cpp | 5 ++++ src/CalcManager/CEngine/scicomm.cpp | 6 +++++ src/CalcManager/CEngine/scidisp.cpp | 6 +++++ src/CalcManager/CEngine/scifunc.cpp | 6 +++++ src/CalcManager/CEngine/sciset.cpp | 5 ++++ src/CalcManager/Header Files/CalcEngine.h | 5 ++++ src/CalcManager/Ratpack/ratpak.h | 7 ++++++ src/CalcManager/pch_cross_platform.h | 3 +++ src/CalcManager/sal_cross_platform.h | 1 + .../win_data_types_cross_platform.h | 23 +++++++++++++++++++ src/CalcManager/winerror_cross_platform.h | 4 +++- 17 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 src/CalcManager/win_data_types_cross_platform.h diff --git a/src/CalcManager/CEngine/CalcInput.cpp b/src/CalcManager/CEngine/CalcInput.cpp index 01ecddcc..df5439b3 100644 --- a/src/CalcManager/CEngine/CalcInput.cpp +++ b/src/CalcManager/CEngine/CalcInput.cpp @@ -1,7 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +#ifdef _WIN32 +#include "pch.h" +#else #include "pch_cross_platform.h" +#endif + #include "Header Files/CalcEngine.h" using namespace std; diff --git a/src/CalcManager/CEngine/CalcUtils.cpp b/src/CalcManager/CEngine/CalcUtils.cpp index 04882a4f..ce5eb73a 100644 --- a/src/CalcManager/CEngine/CalcUtils.cpp +++ b/src/CalcManager/CEngine/CalcUtils.cpp @@ -1,7 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +#ifdef _WIN32 +#include "pch.h" +#else #include "pch_cross_platform.h" +#endif + #include "Header Files/CalcEngine.h" #include "Header Files/CalcUtils.h" diff --git a/src/CalcManager/CEngine/History.cpp b/src/CalcManager/CEngine/History.cpp index 56d1fc18..6c86ea68 100644 --- a/src/CalcManager/CEngine/History.cpp +++ b/src/CalcManager/CEngine/History.cpp @@ -1,7 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +#ifdef _WIN32 +#include "pch.h" +#else #include "pch_cross_platform.h" +#endif + #include "Header Files/CalcEngine.h" #include "Command.h" #include "CalculatorVector.h" diff --git a/src/CalcManager/CEngine/Number.cpp b/src/CalcManager/CEngine/Number.cpp index 7590e6d1..dd57685f 100644 --- a/src/CalcManager/CEngine/Number.cpp +++ b/src/CalcManager/CEngine/Number.cpp @@ -1,6 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. +#ifdef _WIN32 +#include "pch.h" +#else #include "pch_cross_platform.h" +#endif + #include "Header Files/Number.h" using namespace std; @@ -59,6 +64,13 @@ namespace CalcEngine bool Number::IsZero() const { - return all_of(m_mantissa.begin(), m_mantissa.end(), [](auto &&i) { return i == 0; }); + for (auto const& digit : Mantissa()) + { + if (digit != 0) + { + return false; + } + } + return true; } } diff --git a/src/CalcManager/CEngine/Rational.cpp b/src/CalcManager/CEngine/Rational.cpp index 64288ede..bcfed0e5 100644 --- a/src/CalcManager/CEngine/Rational.cpp +++ b/src/CalcManager/CEngine/Rational.cpp @@ -1,6 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. +#ifdef _WIN32 +#include "pch.h" +#else #include "pch_cross_platform.h" +#endif + #include "Header Files/Rational.h" using namespace std; diff --git a/src/CalcManager/CEngine/RationalMath.cpp b/src/CalcManager/CEngine/RationalMath.cpp index cda098b3..cf5f3e49 100644 --- a/src/CalcManager/CEngine/RationalMath.cpp +++ b/src/CalcManager/CEngine/RationalMath.cpp @@ -1,7 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +#ifdef _WIN32 +#include "pch.h" +#else #include "pch_cross_platform.h" +#endif + #include "Header Files/RationalMath.h" using namespace std; diff --git a/src/CalcManager/CEngine/calc.cpp b/src/CalcManager/CEngine/calc.cpp index c79c5964..92a551e2 100644 --- a/src/CalcManager/CEngine/calc.cpp +++ b/src/CalcManager/CEngine/calc.cpp @@ -1,7 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +#ifdef _WIN32 +#include "pch.h" +#else #include "pch_cross_platform.h" +#endif + #include "Header Files/CalcEngine.h" #include "CalculatorResource.h" diff --git a/src/CalcManager/CEngine/scicomm.cpp b/src/CalcManager/CEngine/scicomm.cpp index e5984453..2db42f70 100644 --- a/src/CalcManager/CEngine/scicomm.cpp +++ b/src/CalcManager/CEngine/scicomm.cpp @@ -12,7 +12,13 @@ * * Author: \****************************************************************************/ + +#ifdef _WIN32 +#include "pch.h" +#else #include "pch_cross_platform.h" +#endif + #include "Header Files/CalcEngine.h" #include "Header Files/CalcUtils.h" diff --git a/src/CalcManager/CEngine/scidisp.cpp b/src/CalcManager/CEngine/scidisp.cpp index f495b803..de4fd715 100644 --- a/src/CalcManager/CEngine/scidisp.cpp +++ b/src/CalcManager/CEngine/scidisp.cpp @@ -12,7 +12,13 @@ * * Author: \****************************************************************************/ + +#ifdef _WIN32 +#include "pch.h" +#else #include "pch_cross_platform.h" +#endif + #include "Header Files/CalcEngine.h" using namespace std; diff --git a/src/CalcManager/CEngine/scifunc.cpp b/src/CalcManager/CEngine/scifunc.cpp index b094e5d0..15bd19eb 100644 --- a/src/CalcManager/CEngine/scifunc.cpp +++ b/src/CalcManager/CEngine/scifunc.cpp @@ -16,7 +16,13 @@ /*** ***/ /*** ***/ /**************************************************************************/ + +#ifdef _WIN32 +#include "pch.h" +#else #include "pch_cross_platform.h" +#endif + #include "Header Files/CalcEngine.h" using namespace std; diff --git a/src/CalcManager/CEngine/sciset.cpp b/src/CalcManager/CEngine/sciset.cpp index 44a4f644..9ae245d6 100644 --- a/src/CalcManager/CEngine/sciset.cpp +++ b/src/CalcManager/CEngine/sciset.cpp @@ -1,7 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +#ifdef _WIN32 +#include "pch.h" +#else #include "pch_cross_platform.h" +#endif + #include "Header Files/CalcEngine.h" using namespace CalcEngine; diff --git a/src/CalcManager/Header Files/CalcEngine.h b/src/CalcManager/Header Files/CalcEngine.h index 0ad8252f..48597f1c 100644 --- a/src/CalcManager/Header Files/CalcEngine.h +++ b/src/CalcManager/Header Files/CalcEngine.h @@ -14,6 +14,11 @@ * \****************************************************************************/ +#ifndef _WIN32 +#include "win_data_types_cross_platform.h" +#include "sal_cross_platform.h" +#endif + #include "CCommand.h" #include "EngineStrings.h" #include "../Command.h" diff --git a/src/CalcManager/Ratpack/ratpak.h b/src/CalcManager/Ratpack/ratpak.h index 75ac28de..82947971 100644 --- a/src/CalcManager/Ratpack/ratpak.h +++ b/src/CalcManager/Ratpack/ratpak.h @@ -17,6 +17,13 @@ // //----------------------------------------------------------------------------- +#ifndef _WIN32 +#include "win_data_types_cross_platform.h" +#include "sal_cross_platform.h" +#endif + +#include +#include #include "CalcErr.h" static constexpr uint32_t BASEXPWR = 31L;// Internal log2(BASEX) diff --git a/src/CalcManager/pch_cross_platform.h b/src/CalcManager/pch_cross_platform.h index d7f50364..5c0c7138 100644 --- a/src/CalcManager/pch_cross_platform.h +++ b/src/CalcManager/pch_cross_platform.h @@ -12,4 +12,7 @@ // #include #include // #include + #include "winerror_cross_platform.h" +#include "win_data_types_cross_platform.h" +#include "sal_cross_platform.h" diff --git a/src/CalcManager/sal_cross_platform.h b/src/CalcManager/sal_cross_platform.h index 42b51ef7..cc650f17 100644 --- a/src/CalcManager/sal_cross_platform.h +++ b/src/CalcManager/sal_cross_platform.h @@ -7,3 +7,4 @@ #define _In_ #define _Out_ #define _Inout_ +#define __in_opt diff --git a/src/CalcManager/win_data_types_cross_platform.h b/src/CalcManager/win_data_types_cross_platform.h new file mode 100644 index 00000000..daa99bd6 --- /dev/null +++ b/src/CalcManager/win_data_types_cross_platform.h @@ -0,0 +1,23 @@ +#pragma once + +#include + +typedef uint64_t ULONGLONG; +typedef int INT; +typedef char CHAR; +typedef long LONG; +typedef unsigned int UINT_PTR; +typedef unsigned long ULONG_PTR; +typedef unsigned int ULONG32; +typedef unsigned long DWORD; +typedef unsigned long ULONG; +typedef unsigned short USHORT; +typedef wchar_t WCHAR; +typedef unsigned short WORD; +typedef UINT_PTR WPARAM; +typedef ULONG_PTR DWORD_PTR; + +#define LOWORD(dw) ((WORD)(((DWORD_PTR)(dw)) & 0xffff)) +#define HIWORD(dw) ((WORD)((((DWORD_PTR)(dw)) >> 16) & 0xffff)) +#define LODWORD(qw) ((DWORD)(qw)) +#define HIDWORD(qw) ((DWORD)(((qw) >> 32) & 0xffffffff)) diff --git a/src/CalcManager/winerror_cross_platform.h b/src/CalcManager/winerror_cross_platform.h index faa66de3..6961e77f 100644 --- a/src/CalcManager/winerror_cross_platform.h +++ b/src/CalcManager/winerror_cross_platform.h @@ -2,7 +2,8 @@ #include -#define HRESULT int32_t +typedef int32_t HRESULT; + #define E_ACCESSDENIED 0x80070005 #define E_FAIL 0x80004005 #define E_INVALIDARG 0x80070057 @@ -14,3 +15,4 @@ #define S_FALSE 0x1 #define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0) +#define FAILED(hr) (((HRESULT)(hr)) < 0)