void UnitConverterDataLoader::GetConversionData()

in src/CalcViewModel/DataLoaders/UnitConverterDataLoader.cpp [772:952]


void UnitConverterDataLoader::GetConversionData(_In_ unordered_map<ViewMode, unordered_map<int, double>>& categoryToUnitConversionMap)
{
    /*categoryId, UnitId, factor*/
    static const vector<UnitData> unitDataList = { { ViewMode::Area, UnitConverterUnits::Area_Acre, 4046.8564224 },
                                                   { ViewMode::Area, UnitConverterUnits::Area_SquareMeter, 1 },
                                                   { ViewMode::Area, UnitConverterUnits::Area_SquareFoot, 0.09290304 },
                                                   { ViewMode::Area, UnitConverterUnits::Area_SquareYard, 0.83612736 },
                                                   { ViewMode::Area, UnitConverterUnits::Area_SquareMillimeter, 0.000001 },
                                                   { ViewMode::Area, UnitConverterUnits::Area_SquareCentimeter, 0.0001 },
                                                   { ViewMode::Area, UnitConverterUnits::Area_SquareInch, 0.00064516 },
                                                   { ViewMode::Area, UnitConverterUnits::Area_SquareMile, 2589988.110336 },
                                                   { ViewMode::Area, UnitConverterUnits::Area_SquareKilometer, 1000000 },
                                                   { ViewMode::Area, UnitConverterUnits::Area_Hectare, 10000 },
                                                   { ViewMode::Area, UnitConverterUnits::Area_Hand, 0.012516104 },
                                                   { ViewMode::Area, UnitConverterUnits::Area_Paper, 0.06032246 },
                                                   { ViewMode::Area, UnitConverterUnits::Area_SoccerField, 10869.66 },
                                                   { ViewMode::Area, UnitConverterUnits::Area_Castle, 100000 },
                                                   { ViewMode::Area, UnitConverterUnits::Area_Pyeong, 400.0 / 121.0 },

                                                   { ViewMode::Data, UnitConverterUnits::Data_Bit, 0.000000125 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Byte, 0.000001 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Kilobyte, 0.001 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Megabyte, 1 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Gigabyte, 1000 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Terabyte, 1000000 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Petabyte, 1000000000 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Exabytes, 1000000000000 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Zetabytes, 1000000000000000 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Yottabyte, 1000000000000000000 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Kilobit, 0.000125 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Megabit, 0.125 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Gigabit, 125 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Terabit, 125000 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Petabit, 125000000 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Exabits, 125000000000 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Zetabits, 125000000000000 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Yottabit, 125000000000000000 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Gibibits, 134.217728 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Gibibytes, 1073.741824 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Kibibits, 0.000128 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Kibibytes, 0.001024 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Mebibits, 0.131072 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Mebibytes, 1.048576 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Pebibits, 140737488.355328 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Pebibytes, 1125899906.842624 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Tebibits, 137438.953472 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Tebibytes, 1099511.627776 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Exbibits, 144115188075.855872 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Exbibytes, 1152921504606.846976 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Zebibits, 147573952589676.412928 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Zebibytes, 1180591620717411.303424 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Yobibits, 151115727451828646.838272 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_Yobibytes, 1208925819614629174.706176 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_FloppyDisk, 1.474560 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_CD, 734.003200 },
                                                   { ViewMode::Data, UnitConverterUnits::Data_DVD, 5046.586573 },

                                                   { ViewMode::Energy, UnitConverterUnits::Energy_Calorie, 4.184 },
                                                   { ViewMode::Energy, UnitConverterUnits::Energy_Kilocalorie, 4184 },
                                                   { ViewMode::Energy, UnitConverterUnits::Energy_BritishThermalUnit, 1055.056 },
                                                   { ViewMode::Energy, UnitConverterUnits::Energy_Kilojoule, 1000 },
                                                   { ViewMode::Energy, UnitConverterUnits::Energy_ElectronVolt, 0.0000000000000000001602176565 },
                                                   { ViewMode::Energy, UnitConverterUnits::Energy_Joule, 1 },
                                                   { ViewMode::Energy, UnitConverterUnits::Energy_FootPound, 1.3558179483314 },
                                                   { ViewMode::Energy, UnitConverterUnits::Energy_Battery, 9000 },
                                                   { ViewMode::Energy, UnitConverterUnits::Energy_Banana, 439614 },
                                                   { ViewMode::Energy, UnitConverterUnits::Energy_SliceOfCake, 1046700 },

                                                   { ViewMode::Length, UnitConverterUnits::Length_Inch, 0.0254 },
                                                   { ViewMode::Length, UnitConverterUnits::Length_Foot, 0.3048 },
                                                   { ViewMode::Length, UnitConverterUnits::Length_Yard, 0.9144 },
                                                   { ViewMode::Length, UnitConverterUnits::Length_Mile, 1609.344 },
                                                   { ViewMode::Length, UnitConverterUnits::Length_Micron, 0.000001 },
                                                   { ViewMode::Length, UnitConverterUnits::Length_Millimeter, 0.001 },
                                                   { ViewMode::Length, UnitConverterUnits::Length_Nanometer, 0.000000001 },
                                                   { ViewMode::Length, UnitConverterUnits::Length_Centimeter, 0.01 },
                                                   { ViewMode::Length, UnitConverterUnits::Length_Meter, 1 },
                                                   { ViewMode::Length, UnitConverterUnits::Length_Kilometer, 1000 },
                                                   { ViewMode::Length, UnitConverterUnits::Length_NauticalMile, 1852 },
                                                   { ViewMode::Length, UnitConverterUnits::Length_Paperclip, 0.035052 },
                                                   { ViewMode::Length, UnitConverterUnits::Length_Hand, 0.18669 },
                                                   { ViewMode::Length, UnitConverterUnits::Length_JumboJet, 76 },

                                                   { ViewMode::Power, UnitConverterUnits::Power_BritishThermalUnitPerMinute, 17.58426666666667 },
                                                   { ViewMode::Power, UnitConverterUnits::Power_FootPoundPerMinute, 0.0225969658055233 },
                                                   { ViewMode::Power, UnitConverterUnits::Power_Watt, 1 },
                                                   { ViewMode::Power, UnitConverterUnits::Power_Kilowatt, 1000 },
                                                   { ViewMode::Power, UnitConverterUnits::Power_Horsepower, 745.69987158227022 },
                                                   { ViewMode::Power, UnitConverterUnits::Power_LightBulb, 60 },
                                                   { ViewMode::Power, UnitConverterUnits::Power_Horse, 745.7 },
                                                   { ViewMode::Power, UnitConverterUnits::Power_TrainEngine, 2982799.486329081 },

                                                   { ViewMode::Time, UnitConverterUnits::Time_Day, 86400 },
                                                   { ViewMode::Time, UnitConverterUnits::Time_Second, 1 },
                                                   { ViewMode::Time, UnitConverterUnits::Time_Week, 604800 },
                                                   { ViewMode::Time, UnitConverterUnits::Time_Year, 31557600 },
                                                   { ViewMode::Time, UnitConverterUnits::Time_Millisecond, 0.001 },
                                                   { ViewMode::Time, UnitConverterUnits::Time_Microsecond, 0.000001 },
                                                   { ViewMode::Time, UnitConverterUnits::Time_Minute, 60 },
                                                   { ViewMode::Time, UnitConverterUnits::Time_Hour, 3600 },

                                                   { ViewMode::Volume, UnitConverterUnits::Volume_CupUS, 236.588237 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_PintUS, 473.176473 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_PintUK, 568.26125 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_QuartUS, 946.352946 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_QuartUK, 1136.5225 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_GallonUS, 3785.411784 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_GallonUK, 4546.09 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_Liter, 1000 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_TeaspoonUS, 4.92892159375 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_TablespoonUS, 14.78676478125 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_CubicCentimeter, 1 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_CubicYard, 764554.857984 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_CubicMeter, 1000000 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_Milliliter, 1 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_CubicInch, 16.387064 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_CubicFoot, 28316.846592 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_FluidOunceUS, 29.5735295625 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_FluidOunceUK, 28.4130625 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_TeaspoonUK, 5.91938802083333333333 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_TablespoonUK, 17.7581640625 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_CoffeeCup, 236.5882 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_Bathtub, 378541.2 },
                                                   { ViewMode::Volume, UnitConverterUnits::Volume_SwimmingPool, 3750000000 },

                                                   { ViewMode::Weight, UnitConverterUnits::Weight_Kilogram, 1 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_Hectogram, 0.1 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_Decagram, 0.01 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_Gram, 0.001 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_Pound, 0.45359237 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_Ounce, 0.028349523125 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_Milligram, 0.000001 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_Centigram, 0.00001 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_Decigram, 0.0001 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_LongTon, 1016.0469088 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_Tonne, 1000 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_Stone, 6.35029318 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_Carat, 0.0002 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_ShortTon, 907.18474 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_Snowflake, 0.000002 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_SoccerBall, 0.4325 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_Elephant, 4000 },
                                                   { ViewMode::Weight, UnitConverterUnits::Weight_Whale, 90000 },

                                                   { ViewMode::Speed, UnitConverterUnits::Speed_CentimetersPerSecond, 1 },
                                                   { ViewMode::Speed, UnitConverterUnits::Speed_FeetPerSecond, 30.48 },
                                                   { ViewMode::Speed, UnitConverterUnits::Speed_KilometersPerHour, 27.777777777777777777778 },
                                                   { ViewMode::Speed, UnitConverterUnits::Speed_Knot, 51.44 },
                                                   { ViewMode::Speed, UnitConverterUnits::Speed_Mach, 34030 },
                                                   { ViewMode::Speed, UnitConverterUnits::Speed_MetersPerSecond, 100 },
                                                   { ViewMode::Speed, UnitConverterUnits::Speed_MilesPerHour, 44.7 },
                                                   { ViewMode::Speed, UnitConverterUnits::Speed_Turtle, 8.94 },
                                                   { ViewMode::Speed, UnitConverterUnits::Speed_Horse, 2011.5 },
                                                   { ViewMode::Speed, UnitConverterUnits::Speed_Jet, 24585 },

                                                   { ViewMode::Angle, UnitConverterUnits::Angle_Degree, 1 },
                                                   { ViewMode::Angle, UnitConverterUnits::Angle_Radian, 57.29577951308233 },
                                                   { ViewMode::Angle, UnitConverterUnits::Angle_Gradian, 0.9 },

                                                   { ViewMode::Pressure, UnitConverterUnits::Pressure_Atmosphere, 1 },
                                                   { ViewMode::Pressure, UnitConverterUnits::Pressure_Bar, 0.9869232667160128 },
                                                   { ViewMode::Pressure, UnitConverterUnits::Pressure_KiloPascal, 0.0098692326671601 },
                                                   { ViewMode::Pressure, UnitConverterUnits::Pressure_MillimeterOfMercury, 0.0013155687145324 },
                                                   { ViewMode::Pressure, UnitConverterUnits::Pressure_Pascal, 9.869232667160128e-6 },
                                                   { ViewMode::Pressure, UnitConverterUnits::Pressure_PSI, 0.068045961016531 } };

    // Populate the hash map and return;
    for (UnitData unitdata : unitDataList)
    {
        if (categoryToUnitConversionMap.find(unitdata.categoryId) == categoryToUnitConversionMap.end())
        {
            unordered_map<int, double> conversionData;
            conversionData.insert(pair<int, double>(unitdata.unitId, unitdata.factor));
            categoryToUnitConversionMap.insert(pair<ViewMode, unordered_map<int, double>>(unitdata.categoryId, conversionData));
        }
        else
        {
            categoryToUnitConversionMap.at(unitdata.categoryId).insert(pair<int, double>(unitdata.unitId, unitdata.factor));
        }
    }
}