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"