diff --git a/.gitignore b/.gitignore index 2100dfc1..eedef8ad 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ bld/ [Bb]in/ [Oo]bj/ [Ll]og/ +[Cc]make_build/ # Visual Studio 2015 cache/options directory .vs/ @@ -291,4 +292,10 @@ __pycache__/ Generated Files/ !/build/config/TRexDefs/** !src/Calculator/TemporaryKey.pfx -!src/CalculatorUnitTests/CalculatorUnitTests_TemporaryKey.pfx \ No newline at end of file +!src/CalculatorUnitTests/CalculatorUnitTests_TemporaryKey.pfx + +# macOS specific +.DS_Store + +# VSCode +.vscode diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..2728e702 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 2.6) +project(calculator) +set(CMAKE_CXX_STANDARD 11) + +add_subdirectory(src) diff --git a/README.md b/README.md index d967b175..46181c37 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,17 @@ Calculator ships regularly with new features and bug fixes. You can get the late - Currency conversion based on data retrieved from [Bing](https://www.bing.com). ## Getting started + +### On macOS +Prerequisites: +- CMake +- macOS + +- Create a new directory named `cmake_build` in the repository folder +- Run `cmake .. -GXcode` from `cmake_build` +- Run `cmake --build cmake_build` from the repository folder to build the project + +### On Windows Prerequisites: - Your computer must be running Windows 10, version 1803 or newer. - Install the latest version of [Visual Studio](https://developer.microsoft.com/en-us/windows/downloads) (the free community edition is sufficient). diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..b754a766 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(CalcManager) diff --git a/src/CalcManager/CEngine/CalcInput.cpp b/src/CalcManager/CEngine/CalcInput.cpp index 45e553b9..01ecddcc 100644 --- a/src/CalcManager/CEngine/CalcInput.cpp +++ b/src/CalcManager/CEngine/CalcInput.cpp @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -#include "pch.h" +#include "pch_cross_platform.h" #include "Header Files/CalcEngine.h" using namespace std; diff --git a/src/CalcManager/CEngine/CalcUtils.cpp b/src/CalcManager/CEngine/CalcUtils.cpp index 7980e4e0..04882a4f 100644 --- a/src/CalcManager/CEngine/CalcUtils.cpp +++ b/src/CalcManager/CEngine/CalcUtils.cpp @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -#include "pch.h" +#include "pch_cross_platform.h" #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 ca276a41..56d1fc18 100644 --- a/src/CalcManager/CEngine/History.cpp +++ b/src/CalcManager/CEngine/History.cpp @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -#include "pch.h" +#include "pch_cross_platform.h" #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 4bf83a33..7590e6d1 100644 --- a/src/CalcManager/CEngine/Number.cpp +++ b/src/CalcManager/CEngine/Number.cpp @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -#include "pch.h" +#include "pch_cross_platform.h" #include "Header Files/Number.h" using namespace std; diff --git a/src/CalcManager/CEngine/Rational.cpp b/src/CalcManager/CEngine/Rational.cpp index fd86b72a..64288ede 100644 --- a/src/CalcManager/CEngine/Rational.cpp +++ b/src/CalcManager/CEngine/Rational.cpp @@ -1,6 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -#include "pch.h" +#include "pch_cross_platform.h" #include "Header Files/Rational.h" using namespace std; diff --git a/src/CalcManager/CEngine/RationalMath.cpp b/src/CalcManager/CEngine/RationalMath.cpp index 37dc7926..cda098b3 100644 --- a/src/CalcManager/CEngine/RationalMath.cpp +++ b/src/CalcManager/CEngine/RationalMath.cpp @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -#include "pch.h" +#include "pch_cross_platform.h" #include "Header Files/RationalMath.h" using namespace std; diff --git a/src/CalcManager/CEngine/calc.cpp b/src/CalcManager/CEngine/calc.cpp index 9d1ca9de..c79c5964 100644 --- a/src/CalcManager/CEngine/calc.cpp +++ b/src/CalcManager/CEngine/calc.cpp @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -#include "pch.h" +#include "pch_cross_platform.h" #include "Header Files/CalcEngine.h" #include "CalculatorResource.h" diff --git a/src/CalcManager/CEngine/scicomm.cpp b/src/CalcManager/CEngine/scicomm.cpp index f17938bf..e5984453 100644 --- a/src/CalcManager/CEngine/scicomm.cpp +++ b/src/CalcManager/CEngine/scicomm.cpp @@ -12,7 +12,7 @@ * * Author: \****************************************************************************/ -#include "pch.h" +#include "pch_cross_platform.h" #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 849fe863..f495b803 100644 --- a/src/CalcManager/CEngine/scidisp.cpp +++ b/src/CalcManager/CEngine/scidisp.cpp @@ -12,7 +12,7 @@ * * Author: \****************************************************************************/ -#include "pch.h" +#include "pch_cross_platform.h" #include "Header Files/CalcEngine.h" using namespace std; diff --git a/src/CalcManager/CEngine/scifunc.cpp b/src/CalcManager/CEngine/scifunc.cpp index a1007c1c..b094e5d0 100644 --- a/src/CalcManager/CEngine/scifunc.cpp +++ b/src/CalcManager/CEngine/scifunc.cpp @@ -16,7 +16,7 @@ /*** ***/ /*** ***/ /**************************************************************************/ -#include "pch.h" +#include "pch_cross_platform.h" #include "Header Files/CalcEngine.h" using namespace std; diff --git a/src/CalcManager/CEngine/scioper.cpp b/src/CalcManager/CEngine/scioper.cpp index b09083c4..b5aeff3d 100644 --- a/src/CalcManager/CEngine/scioper.cpp +++ b/src/CalcManager/CEngine/scioper.cpp @@ -1,7 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -#include "pch.h" #include "Header Files/CalcEngine.h" using namespace CalcEngine; diff --git a/src/CalcManager/CEngine/sciset.cpp b/src/CalcManager/CEngine/sciset.cpp index 5495748e..44a4f644 100644 --- a/src/CalcManager/CEngine/sciset.cpp +++ b/src/CalcManager/CEngine/sciset.cpp @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -#include "pch.h" +#include "pch_cross_platform.h" #include "Header Files/CalcEngine.h" using namespace CalcEngine; diff --git a/src/CalcManager/CMakeLists.txt b/src/CalcManager/CMakeLists.txt new file mode 100644 index 00000000..7766e95c --- /dev/null +++ b/src/CalcManager/CMakeLists.txt @@ -0,0 +1,16 @@ +add_library(CalculatorEngine + CEngine/calc.cpp + CEngine/CalcInput.cpp + CEngine/CalcUtils.cpp + CEngine/History.cpp + CEngine/Number.cpp + CEngine/Rational.cpp + CEngine/RationalMath.cpp + CEngine/scicomm.cpp + CEngine/scidisp.cpp + CEngine/scifunc.cpp + CEngine/scioper.cpp + CEngine/sciset.cpp +) +target_compile_options(CalculatorEngine PRIVATE "-fms-extensions") +target_include_directories(CalculatorEngine PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/src/CalcManager/CalculatorVector.h b/src/CalcManager/CalculatorVector.h index a4de434d..4c2eb1f9 100644 --- a/src/CalcManager/CalculatorVector.h +++ b/src/CalcManager/CalculatorVector.h @@ -4,6 +4,13 @@ #pragma once #include "Ratpack/CalcErr.h" +#include +#include + +#ifndef _WIN32 +#include "winerror_cross_platform.h" +#include "sal_cross_platform.h" +#endif template class CalculatorVector diff --git a/src/CalcManager/pch_cross_platform.cpp b/src/CalcManager/pch_cross_platform.cpp new file mode 100644 index 00000000..1a84488d --- /dev/null +++ b/src/CalcManager/pch_cross_platform.cpp @@ -0,0 +1 @@ +#include "pch_cross_platform.h" diff --git a/src/CalcManager/pch_cross_platform.h b/src/CalcManager/pch_cross_platform.h new file mode 100644 index 00000000..d7f50364 --- /dev/null +++ b/src/CalcManager/pch_cross_platform.h @@ -0,0 +1,15 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +// #include +#include +// #include +#include "winerror_cross_platform.h" diff --git a/src/CalcManager/sal_cross_platform.h b/src/CalcManager/sal_cross_platform.h new file mode 100644 index 00000000..42b51ef7 --- /dev/null +++ b/src/CalcManager/sal_cross_platform.h @@ -0,0 +1,9 @@ +#pragma once + +// Empty macro definitions for source annotations + +#define _In_opt_ +#define _Out_opt_ +#define _In_ +#define _Out_ +#define _Inout_ diff --git a/src/CalcManager/winerror_cross_platform.h b/src/CalcManager/winerror_cross_platform.h new file mode 100644 index 00000000..faa66de3 --- /dev/null +++ b/src/CalcManager/winerror_cross_platform.h @@ -0,0 +1,16 @@ +#pragma once + +#include + +#define HRESULT int32_t +#define E_ACCESSDENIED 0x80070005 +#define E_FAIL 0x80004005 +#define E_INVALIDARG 0x80070057 +#define E_OUTOFMEMORY 0x8007000E +#define E_POINTER 0x80004003 +#define E_UNEXPECTED 0x8000FFFF +#define E_BOUNDS 0x8000000B +#define S_OK 0x0 +#define S_FALSE 0x1 + +#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)