diff --git a/.editorconfig b/.editorconfig
index f3416ab7..a2008871 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -5,7 +5,6 @@ root = true
[*]
indent_style = space
indent_size = 4
-end_of_line = crlf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
diff --git a/src/.editorconfig b/src/.editorconfig
deleted file mode 100644
index 602092c6..00000000
--- a/src/.editorconfig
+++ /dev/null
@@ -1,10 +0,0 @@
-root = true
-
-[*.{xaml,cpp,h}]
-charset = utf-8-bom
-indent_style = space
-indent_size = 4
-
-[*.{cpp,h}]
-insert_final_newline = true
-trim_trailing_whitespace = true
diff --git a/src/CalcManager/CEngine/CalcUtils.cpp b/src/CalcManager/CEngine/CalcUtils.cpp
index 4aa8311d..fe488009 100644
--- a/src/CalcManager/CEngine/CalcUtils.cpp
+++ b/src/CalcManager/CEngine/CalcUtils.cpp
@@ -3,6 +3,7 @@
#include "pch.h"
#include "Header Files/CalcEngine.h"
+#include "Header Files/CalcUtils.h"
bool IsOpInRange(WPARAM op, uint32_t x, uint32_t y)
{
diff --git a/src/CalcManager/CEngine/History.cpp b/src/CalcManager/CEngine/History.cpp
index 278e4a54..8dda170e 100644
--- a/src/CalcManager/CEngine/History.cpp
+++ b/src/CalcManager/CEngine/History.cpp
@@ -2,18 +2,25 @@
// Licensed under the MIT License.
#include "pch.h"
-#pragma once
#include "Header Files/CalcEngine.h"
#include "Command.h"
#include "CalculatorVector.h"
#include "ExpressionCommand.h"
-#include "CalcException.h"
constexpr int ASCII_0 = 48;
using namespace std;
using namespace CalcEngine;
+namespace {
+ void IFT(HRESULT hr)
+ {
+ if (FAILED(hr))
+ {
+ throw hr;
+ }
+ }
+}
void CHistoryCollector::ReinitHistory()
{
m_lastOpStartIndex = -1;
diff --git a/src/CalcManager/CEngine/scicomm.cpp b/src/CalcManager/CEngine/scicomm.cpp
index 46fb54fa..b5eebc08 100644
--- a/src/CalcManager/CEngine/scicomm.cpp
+++ b/src/CalcManager/CEngine/scicomm.cpp
@@ -26,28 +26,30 @@
using namespace std;
using namespace CalcEngine;
-// NPrecedenceOfOp
-//
-// Returns a virtual number for precedence for the operator. We expect binary operator only, otherwise the lowest number
-// 0 is returned. Higher the number, higher the precedence of the operator.
-INT NPrecedenceOfOp(int nopCode)
-{
- static BYTE rgbPrec[] = { 0,0, IDC_OR,0, IDC_XOR,0, IDC_AND,1,
- IDC_ADD,2, IDC_SUB,2, IDC_RSHF,3, IDC_LSHF,3,
- IDC_MOD,3, IDC_DIV,3, IDC_MUL,3, IDC_PWR,4, IDC_ROOT, 4 };
- int iPrec;
+namespace {
+ // NPrecedenceOfOp
+ //
+ // returns a virtual number for precedence for the operator. We expect binary operator only, otherwise the lowest number
+ // 0 is returned. Higher the number, higher the precedence of the operator.
+ INT NPrecedenceOfOp(int nopCode)
+ {
+ static BYTE rgbPrec[] = { 0,0, IDC_OR,0, IDC_XOR,0, IDC_AND,1,
+ IDC_ADD,2, IDC_SUB,2, IDC_RSHF,3, IDC_LSHF,3,
+ IDC_MOD,3, IDC_DIV,3, IDC_MUL,3, IDC_PWR,4, IDC_ROOT, 4 };
+ int iPrec;
- iPrec = 0;
- while ((iPrec < ARRAYSIZE(rgbPrec)) && (nopCode != rgbPrec[iPrec]))
- {
- iPrec += 2;
- }
- if (iPrec >= ARRAYSIZE(rgbPrec))
- {
iPrec = 0;
- }
- return rgbPrec[iPrec + 1];
+ while ((iPrec < ARRAYSIZE(rgbPrec)) && (nopCode != rgbPrec[iPrec]))
+ {
+ iPrec += 2;
+ }
+ if (iPrec >= ARRAYSIZE(rgbPrec))
+ {
+ iPrec = 0;
+ }
+ return rgbPrec[iPrec + 1];
+ }
}
// HandleErrorCommand
diff --git a/src/CalcManager/CalcException.h b/src/CalcManager/CalcException.h
deleted file mode 100644
index e63b1837..00000000
--- a/src/CalcManager/CalcException.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-class CalcException : public std::exception
-{
-public:
- CalcException(HRESULT hr)
- {
- m_hr = hr;
- }
- HRESULT GetException()
- {
- return m_hr;
- }
-private:
- HRESULT m_hr;
-};
-
-void IFT(HRESULT hr)
-{
- if (FAILED(hr))
- {
- CalcException exception(hr);
- throw(exception);
- }
-}
diff --git a/src/CalcManager/CalcManager.vcxproj.filters b/src/CalcManager/CalcManager.vcxproj.filters
index 9be2a455..2ca11666 100644
--- a/src/CalcManager/CalcManager.vcxproj.filters
+++ b/src/CalcManager/CalcManager.vcxproj.filters
@@ -119,7 +119,6 @@
RatPack
-
Header Files
@@ -162,4 +161,4 @@
Header Files
-
\ No newline at end of file
+
diff --git a/src/CalcManager/Ratpack/conv.cpp b/src/CalcManager/Ratpack/conv.cpp
index 60ba7555..ff7b18d5 100644
--- a/src/CalcManager/Ratpack/conv.cpp
+++ b/src/CalcManager/Ratpack/conv.cpp
@@ -61,7 +61,7 @@ void* zmalloc(size_t a)
//
//-----------------------------------------------------------------------------
-void _dupnum(_In_ PNUMBER dest, _In_ PNUMBER src)
+void _dupnum(_In_ PNUMBER dest, _In_ const NUMBER * const src)
{
memcpy(dest, src, (int)(sizeof(NUMBER) + ((src)->cdigit)*(sizeof(MANTTYPE))));
}
diff --git a/src/CalcManager/Ratpack/ratconst.h b/src/CalcManager/Ratpack/ratconst.h
index d208b33c..be24b002 100644
--- a/src/CalcManager/Ratpack/ratconst.h
+++ b/src/CalcManager/Ratpack/ratconst.h
@@ -1,480 +1,482 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_num_one= {
+#pragma once
+
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_num_one= {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_num_two= {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_num_two= {
1,
1,
0,
{ 2,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_num_five= {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_num_five= {
1,
1,
0,
{ 5,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_num_six= {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_num_six= {
1,
1,
0,
{ 6,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_num_ten= {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_num_ten= {
1,
1,
0,
{ 10,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_smallest = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_smallest = {
1,
1,
0,
{ 1,}
};
-NUMBER init_q_rat_smallest = {
+inline const NUMBER init_q_rat_smallest = {
1,
4,
0,
{ 0, 190439170, 901055854, 10097,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_negsmallest = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_negsmallest = {
-1,
1,
0,
{ 1,}
};
-NUMBER init_q_rat_negsmallest = {
+inline const NUMBER init_q_rat_negsmallest = {
1,
4,
0,
{ 0, 190439170, 901055854, 10097,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_pt_eight_five = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_pt_eight_five = {
1,
1,
0,
{ 85,}
};
-NUMBER init_q_pt_eight_five = {
+inline const NUMBER init_q_pt_eight_five = {
1,
1,
0,
{ 100,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_six = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_six = {
1,
1,
0,
{ 6,}
};
-NUMBER init_q_rat_six = {
+inline const NUMBER init_q_rat_six = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_two = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_two = {
1,
1,
0,
{ 2,}
};
-NUMBER init_q_rat_two = {
+inline const NUMBER init_q_rat_two = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_zero = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_zero = {
1,
1,
0,
{ 0,}
};
-NUMBER init_q_rat_zero = {
+inline const NUMBER init_q_rat_zero = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_one = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_one = {
1,
1,
0,
{ 1,}
};
-NUMBER init_q_rat_one = {
+inline const NUMBER init_q_rat_one = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_neg_one = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_neg_one = {
-1,
1,
0,
{ 1,}
};
-NUMBER init_q_rat_neg_one = {
+inline const NUMBER init_q_rat_neg_one = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_half = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_half = {
1,
1,
0,
{ 1,}
};
-NUMBER init_q_rat_half = {
+inline const NUMBER init_q_rat_half = {
1,
1,
0,
{ 2,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_ten = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_ten = {
1,
1,
0,
{ 10,}
};
-NUMBER init_q_rat_ten = {
+inline const NUMBER init_q_rat_ten = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_pi = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_pi = {
1,
6,
0,
{ 125527896, 283898350, 1960493936, 1672850762, 1288168272, 8,}
};
-NUMBER init_q_pi = {
+inline const NUMBER init_q_pi = {
1,
6,
0,
{ 1288380402, 1120116153, 1860424692, 1944118326, 1583591604, 2,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_two_pi = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_two_pi = {
1,
6,
0,
{ 251055792, 567796700, 1773504224, 1198217877, 428852897, 17,}
};
-NUMBER init_q_two_pi = {
+inline const NUMBER init_q_two_pi = {
1,
6,
0,
{ 1288380402, 1120116153, 1860424692, 1944118326, 1583591604, 2,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_pi_over_two = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_pi_over_two = {
1,
6,
0,
{ 125527896, 283898350, 1960493936, 1672850762, 1288168272, 8,}
};
-NUMBER init_q_pi_over_two = {
+inline const NUMBER init_q_pi_over_two = {
1,
6,
0,
{ 429277156, 92748659, 1573365737, 1740753005, 1019699561, 5,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_one_pt_five_pi = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_one_pt_five_pi = {
1,
6,
0,
{ 1241201312, 270061909, 1051574664, 1924965045, 1340320627, 70,}
};
-NUMBER init_q_one_pt_five_pi = {
+inline const NUMBER init_q_one_pt_five_pi = {
1,
6,
0,
{ 1579671539, 1837970263, 1067644340, 523549916, 2119366659, 14,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_e_to_one_half = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_e_to_one_half = {
1,
6,
0,
{ 256945612, 216219427, 223516738, 477442596, 581063757, 23,}
};
-NUMBER init_q_e_to_one_half = {
+inline const NUMBER init_q_e_to_one_half = {
1,
6,
0,
{ 1536828363, 698484484, 1127331835, 224219346, 245499408, 14,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_exp = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_exp = {
1,
6,
0,
{ 943665199, 1606559160, 1094967530, 1759391384, 1671799163, 1123581,}
};
-NUMBER init_q_rat_exp = {
+inline const NUMBER init_q_rat_exp = {
1,
6,
0,
{ 879242208, 2022880100, 617392930, 1374929092, 1367479163, 413342,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_ln_ten = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_ln_ten = {
1,
6,
0,
{ 2086268922, 165794492, 1416063951, 1851428830, 1893239400, 65366841,}
};
-NUMBER init_q_ln_ten = {
+inline const NUMBER init_q_ln_ten = {
1,
6,
0,
{ 26790652, 564532679, 783998273, 216030448, 1564709968, 28388458,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_ln_two = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_ln_two = {
1,
6,
0,
{ 1789230241, 1057927868, 715399197, 908801241, 1411265331, 3,}
};
-NUMBER init_q_ln_two = {
+inline const NUMBER init_q_ln_two = {
1,
6,
0,
{ 1559869847, 1930657510, 1228561531, 219003871, 593099283, 5,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rad_to_deg = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rad_to_deg = {
1,
6,
0,
{ 2127722024, 1904928383, 2016479213, 2048947859, 1578647346, 492,}
};
-NUMBER init_q_rad_to_deg = {
+inline const NUMBER init_q_rad_to_deg = {
1,
6,
0,
{ 125527896, 283898350, 1960493936, 1672850762, 1288168272, 8,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rad_to_grad = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rad_to_grad = {
1,
6,
0,
{ 2125526288, 684931327, 570267400, 129125085, 1038224725, 547,}
};
-NUMBER init_q_rad_to_grad = {
+inline const NUMBER init_q_rad_to_grad = {
1,
6,
0,
{ 125527896, 283898350, 1960493936, 1672850762, 1288168272, 8,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_qword = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_qword = {
1,
3,
0,
{ 2147483647, 2147483647, 3,}
};
-NUMBER init_q_rat_qword = {
+inline const NUMBER init_q_rat_qword = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_dword = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_dword = {
1,
2,
0,
{ 2147483647, 1,}
};
-NUMBER init_q_rat_dword = {
+inline const NUMBER init_q_rat_dword = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_max_long = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_max_long = {
1,
1,
0,
{ 2147483647,}
};
-NUMBER init_q_rat_max_long = {
+inline const NUMBER init_q_rat_max_long = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_min_long = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_min_long = {
-1,
2,
0,
{ 0, 1,}
};
-NUMBER init_q_rat_min_long = {
+inline const NUMBER init_q_rat_min_long = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_word = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_word = {
1,
1,
0,
{ 65535,}
};
-NUMBER init_q_rat_word = {
+inline const NUMBER init_q_rat_word = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_byte = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_byte = {
1,
1,
0,
{ 255,}
};
-NUMBER init_q_rat_byte = {
+inline const NUMBER init_q_rat_byte = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_400 = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_400 = {
1,
1,
0,
{ 400,}
};
-NUMBER init_q_rat_400 = {
+inline const NUMBER init_q_rat_400 = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_360 = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_360 = {
1,
1,
0,
{ 360,}
};
-NUMBER init_q_rat_360 = {
+inline const NUMBER init_q_rat_360 = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_200 = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_200 = {
1,
1,
0,
{ 200,}
};
-NUMBER init_q_rat_200 = {
+inline const NUMBER init_q_rat_200 = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_180 = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_180 = {
1,
1,
0,
{ 180,}
};
-NUMBER init_q_rat_180 = {
+inline const NUMBER init_q_rat_180 = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_max_exp = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_max_exp = {
1,
1,
0,
{ 100000,}
};
-NUMBER init_q_rat_max_exp = {
+inline const NUMBER init_q_rat_max_exp = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_min_exp = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_min_exp = {
-1,
1,
0,
{ 100000,}
};
-NUMBER init_q_rat_min_exp = {
+inline const NUMBER init_q_rat_min_exp = {
1,
1,
0,
{ 1,}
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_max_fact = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_max_fact = {
1,
1,
0,
{ 3249, }
};
-NUMBER init_q_rat_max_fact = {
+inline const NUMBER init_q_rat_max_fact = {
1,
1,
0,
{ 1, }
};
-// Autogenerated by _dumprawrat in support.c
-NUMBER init_p_rat_min_fact = {
+// Autogenerated by _dumprawrat in support.cpp
+inline const NUMBER init_p_rat_min_fact = {
-1,
1,
0,
{ 1000, }
};
-NUMBER init_q_rat_min_fact = {
+inline const NUMBER init_q_rat_min_fact = {
1,
1,
0,
diff --git a/src/CalcManager/Ratpack/ratpak.h b/src/CalcManager/Ratpack/ratpak.h
index 693380bc..3ae06734 100644
--- a/src/CalcManager/Ratpack/ratpak.h
+++ b/src/CalcManager/Ratpack/ratpak.h
@@ -411,7 +411,7 @@ extern void tanrat( _Inout_ PRAT *px, uint32_t radix, int32_t precision);
// angle type
extern void tananglerat( _Inout_ PRAT *px, ANGLE_TYPE angletype, uint32_t radix, int32_t precision);
-extern void _dupnum(_In_ PNUMBER dest, _In_ PNUMBER src);
+extern void _dupnum(_In_ PNUMBER dest, _In_ const NUMBER * const src);
extern void _destroynum( _In_ PNUMBER pnum );
extern void _destroyrat( _In_ PRAT prat );
diff --git a/src/CalcManager/Ratpack/support.cpp b/src/CalcManager/Ratpack/support.cpp
index e36b15ab..f3b00d2f 100644
--- a/src/CalcManager/Ratpack/support.cpp
+++ b/src/CalcManager/Ratpack/support.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
//----------------------------------------------------------------------------
@@ -31,8 +31,8 @@ static int cbitsofprecision = 0;
#define READRAWNUM(v)
#define DUMPRAWRAT(v) _dumprawrat(#v,v, wcout)
#define DUMPRAWNUM(v) fprintf( stderr, \
-"// Autogenerated by _dumprawrat in support.c\n" ); \
- fprintf( stderr, "NUMBER init_" #v "= {\n" ); \
+"// Autogenerated by _dumprawrat in support.cpp\n" ); \
+ fprintf( stderr, "inline const NUMBER init_" #v "= {\n" ); \
_dumprawnum(v, wcout); \
fprintf( stderr, "};\n" )
diff --git a/src/CalcManager/UnitConverter.h b/src/CalcManager/UnitConverter.h
index 3f323c35..4e130d12 100644
--- a/src/CalcManager/UnitConverter.h
+++ b/src/CalcManager/UnitConverter.h
@@ -51,7 +51,7 @@ namespace UnitConversionManager
// null checks.
//
// unitId, name, abbreviation, isConversionSource, isConversionTarget, isWhimsical
- const Unit EMPTY_UNIT = Unit{ -1, L"", L"", true, true, false };
+ inline const Unit EMPTY_UNIT = Unit{ -1, L"", L"", true, true, false };
struct Category
{
diff --git a/src/CalcViewModel/Common/AppResourceProvider.cpp b/src/CalcViewModel/Common/AppResourceProvider.cpp
index d7982827..45d3a31c 100644
--- a/src/CalcViewModel/Common/AppResourceProvider.cpp
+++ b/src/CalcViewModel/Common/AppResourceProvider.cpp
@@ -1,8 +1,6 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
-#pragma once
-
#include "pch.h"
#include "AppResourceProvider.h"
diff --git a/src/CalcViewModel/Common/CopyPasteManager.cpp b/src/CalcViewModel/Common/CopyPasteManager.cpp
index 3b621c2b..eac22694 100644
--- a/src/CalcViewModel/Common/CopyPasteManager.cpp
+++ b/src/CalcViewModel/Common/CopyPasteManager.cpp
@@ -129,7 +129,7 @@ String^ CopyPasteManager::ValidatePasteExpression(String^ pastedText, ViewMode m
if (pastedText->Length() > MaxPasteableLength)
{
// return NoOp to indicate don't paste anything.
- TraceLogger::GetInstance().LogInvalidInputPasted(L"PastedExpressionSizeGreaterThanMaxAllowed", L"MoreThanMaxInput", mode, programmerNumberBase, bitLengthType);
+ TraceLogger::GetInstance().LogInvalidPastedInputOccurred(L"PastedExpressionSizeGreaterThanMaxAllowed", mode, programmerNumberBase, bitLengthType);
return StringReference(PasteErrorString);
}
@@ -164,7 +164,7 @@ String^ CopyPasteManager::ValidatePasteExpression(String^ pastedText, ViewMode m
// validate each operand with patterns for different modes
if (!ExpressionRegExMatch(operands, mode, modeType, programmerNumberBase, bitLengthType))
{
- TraceLogger::GetInstance().LogInvalidInputPasted(L"InvalidExpressionForPresentMode", pastedText->Data(), mode, programmerNumberBase, bitLengthType);
+ TraceLogger::GetInstance().LogInvalidPastedInputOccurred(L"InvalidExpressionForPresentMode", mode, programmerNumberBase, bitLengthType);
return StringReference(PasteErrorString);
}
@@ -193,7 +193,7 @@ vector CopyPasteManager::ExtractOperands(const wstring& pasteExpression
if (operands.size() >= MaxOperandCount)
{
- TraceLogger::GetInstance().LogInvalidInputPasted(L"OperandCountGreaterThanMaxCount", pasteExpression.c_str(), mode, programmerNumberBase, bitLengthType);
+ TraceLogger::GetInstance().LogInvalidPastedInputOccurred(L"OperandCountGreaterThanMaxCount", mode, programmerNumberBase, bitLengthType);
operands.clear();
return operands;
}
@@ -207,7 +207,7 @@ vector CopyPasteManager::ExtractOperands(const wstring& pasteExpression
// to disallow pasting of 1e+12345 as 1e+1234, max exponent that can be pasted is 9999.
if (expLength > MaxExponentLength)
{
- TraceLogger::GetInstance().LogInvalidInputPasted(L"ExponentLengthGreaterThanMaxLength", pasteExpression.c_str(), mode, programmerNumberBase, bitLengthType);
+ TraceLogger::GetInstance().LogInvalidPastedInputOccurred(L"ExponentLengthGreaterThanMaxLength", mode, programmerNumberBase, bitLengthType);
operands.clear();
return operands;
}
diff --git a/src/CalcViewModel/Common/TraceLogger.cpp b/src/CalcViewModel/Common/TraceLogger.cpp
index afcaaeba..bbf6e605 100644
--- a/src/CalcViewModel/Common/TraceLogger.cpp
+++ b/src/CalcViewModel/Common/TraceLogger.cpp
@@ -1,8 +1,6 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
-#pragma once
-
#include "pch.h"
#include "TraceLogger.h"
#include "NetworkManager.h"
@@ -59,7 +57,7 @@ namespace CalculatorApp
constexpr auto EVENT_NAME_MEMORY_FLYOUT_OPEN_BEGIN = L"MemoryFlyoutOpenBegin";
constexpr auto EVENT_NAME_MEMORY_FLYOUT_OPEN_END = L"MemoryFlyoutOpenEnd";
constexpr auto EVENT_NAME_MEMORY_CLEAR_ALL = L"MemoryClearAll";
- constexpr auto EVENT_NAME_INVALID_INPUT_PASTED = L"InvalidInputPasted";
+ constexpr auto EVENT_NAME_INVALID_PASTED_INPUT_OCCURRED = L"InvalidPastedInputOccurred";
constexpr auto EVENT_NAME_VALID_INPUT_PASTED = L"ValidInputPasted";
constexpr auto EVENT_NAME_BITFLIP_PANE_CLICKED = L"BitFlipPaneClicked";
constexpr auto EVENT_NAME_BITFLIP_BUTTONS_USED = L"BitFlipToggleButtonUsed";
@@ -81,6 +79,9 @@ namespace CalculatorApp
constexpr auto EVENT_NAME_EXCEPTION = L"Exception";
+ constexpr auto PDT_PRIVACY_DATA_TAG = L"PartA_PrivTags";
+ constexpr auto PDT_PRODUCT_AND_SERVICE_USAGE = 0x0000'0000'0200'0000u;
+
#ifdef SEND_TELEMETRY
// c.f. WINEVENT_KEYWORD_RESERVED_63-56 0xFF00000000000000 // Bits 63-56 - channel keywords
// c.f. WINEVENT_KEYWORD_* 0x00FF000000000000 // Bits 55-48 - system-reserved keywords
@@ -641,17 +642,17 @@ namespace CalculatorApp
LogTelemetryEvent(EVENT_NAME_SINGLE_MEMORY_USED, fields);
}
- void TraceLogger::LogInvalidInputPasted(wstring_view reason, wstring_view pastedExpression, ViewMode mode, int programmerNumberBase, int bitLengthType)
+ void TraceLogger::LogInvalidPastedInputOccurred(wstring_view reason, ViewMode mode, int programmerNumberBase, int bitLengthType)
{
if (!GetTraceLoggingProviderEnabled()) return;
LoggingFields fields{};
fields.AddString(L"Mode", NavCategory::GetFriendlyName(mode)->Data());
fields.AddString(L"Reason", reason);
- fields.AddString(L"PastedExpression", pastedExpression);
fields.AddString(L"ProgrammerNumberBase", GetProgrammerType(programmerNumberBase).c_str());
fields.AddString(L"BitLengthType", GetProgrammerType(bitLengthType).c_str());
- LogTelemetryEvent(EVENT_NAME_INVALID_INPUT_PASTED, fields);
+ fields.AddUInt64(PDT_PRIVACY_DATA_TAG, PDT_PRODUCT_AND_SERVICE_USAGE);
+ LogTelemetryEvent(EVENT_NAME_INVALID_PASTED_INPUT_OCCURRED, fields);
}
void TraceLogger::LogValidInputPasted(ViewMode mode) const
diff --git a/src/CalcViewModel/Common/TraceLogger.h b/src/CalcViewModel/Common/TraceLogger.h
index f00f3b6e..2b659047 100644
--- a/src/CalcViewModel/Common/TraceLogger.h
+++ b/src/CalcViewModel/Common/TraceLogger.h
@@ -64,7 +64,7 @@ namespace CalculatorApp
void LogMemoryFlyoutOpenBegin(unsigned int) const;
void LogDebug(std::wstring_view debugData);
void LogMemoryFlyoutOpenEnd(unsigned int) const;
- void LogInvalidInputPasted(std::wstring_view reason, std::wstring_view pastedExpression, CalculatorApp::Common::ViewMode mode, int ProgrammerNumberBase, int bitLengthType);
+ void LogInvalidPastedInputOccurred(std::wstring_view reason, CalculatorApp::Common::ViewMode mode, int ProgrammerNumberBase, int bitLengthType);
void LogValidInputPasted(CalculatorApp::Common::ViewMode mode) const;
void UpdateFunctionUsage(int func);
void LogFunctionUsage(int);
diff --git a/src/Calculator.sln b/src/Calculator.sln
index 2a6989f1..2d36a93f 100644
--- a/src/Calculator.sln
+++ b/src/Calculator.sln
@@ -9,7 +9,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CalcManager", "CalcManager\
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3A5DF651-B8A1-45CA-9135-964A6FC7F5D1}"
ProjectSection(SolutionItems) = preProject
- .editorconfig = .editorconfig
nuget.config = nuget.config
EndProjectSection
EndProject
diff --git a/src/Calculator/Views/UnitConverter.xaml b/src/Calculator/Views/UnitConverter.xaml
index 7afc660d..05736331 100644
--- a/src/Calculator/Views/UnitConverter.xaml
+++ b/src/Calculator/Views/UnitConverter.xaml
@@ -506,13 +506,8 @@
FlowDirection="{x:Bind LayoutDirection}"
IsActive="{Binding Value1Active, Mode=TwoWay}"
KeyDown="OnValueKeyDown"
- RenderTransformOrigin="0.5,0.5"
Selected="OnValueSelected"
- TabIndex="1">
-
-
-
-
+ TabIndex="1"/>
-
-
-
-
+ TabIndex="3"/>
IsStandard = true;
- String^ input[] = { L"123", L"12345", L"123+456", L"1,234", L"1 2 3", L"\n\r1,234\n", L"\n 1+\n2 ", L"1\"2" };
+ String^ inputs[] = { L"123", L"12345", L"123+456", L"1,234", L"1 2 3", L"\n\r1,234\n", L"\n 1+\n2 ", L"1\"2" };
- START_LOOP(input)
+ for (String^ &input : inputs)
+ {
// paste number in standard mode and then validate the pastability of displayed number for other modes
- scvm->OnPaste(input[size], ViewMode::Standard);
+ scvm->OnPaste(input, ViewMode::Standard);
VERIFY_ARE_EQUAL(ValidateStandardPasteExpression(scvm->DisplayValue), scvm->DisplayValue);
VERIFY_ARE_EQUAL(ValidateScientificPasteExpression(scvm->DisplayValue), scvm->DisplayValue);
VERIFY_ARE_EQUAL(ValidateProgrammerHexQwordPasteExpression(scvm->DisplayValue), scvm->DisplayValue);
- END_LOOP
+ }
}
diff --git a/src/CalculatorUnitTests/Mocks/CurrencyHttpClient.cpp b/src/CalculatorUnitTests/Mocks/CurrencyHttpClient.cpp
index 56b6fd27..85395c56 100644
--- a/src/CalculatorUnitTests/Mocks/CurrencyHttpClient.cpp
+++ b/src/CalculatorUnitTests/Mocks/CurrencyHttpClient.cpp
@@ -1,8 +1,6 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
-#pragma once
-
#include "pch.h"
#include "CurrencyHttpClient.h"