// © 2020 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html #include "unicode/utypes.h" #if !UCONFIG_NO_FORMATTING #ifndef __UNITS_DATA_H__ #define __UNITS_DATA_H__ #include <limits> #include "charstr.h" #include "cmemory.h" #include "unicode/stringpiece.h" #include "unicode/uobject.h" U_NAMESPACE_BEGIN namespace units { /** * Encapsulates "convertUnits" information from units resources, specifying how * to convert from one unit to another. * * Information in this class is still in the form of strings: symbolic constants * need to be interpreted. Rationale: symbols can cancel out for higher * precision conversion - going from feet to inches should cancel out the * `ft_to_m` constant. */ class U_I18N_API ConversionRateInfo : public UMemory { … }; } // namespace units // Export explicit template instantiations of MaybeStackArray, MemoryPool and // MaybeStackVector. This is required when building DLLs for Windows. (See // datefmt.h, collationiterator.h, erarules.h and others for similar examples.) // // Note: These need to be outside of the units namespace, or Clang will generate // a compile error. #if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN template class U_I18N_API MaybeStackArray<units::ConversionRateInfo*, 8>; template class U_I18N_API MemoryPool<units::ConversionRateInfo, 8>; template class U_I18N_API MaybeStackVector<units::ConversionRateInfo, 8>; #endif namespace units { /** * Returns ConversionRateInfo for all supported conversions. * * @param result Receives the set of conversion rates. * @param status Receives status. */ void U_I18N_API getAllConversionRates(MaybeStackVector<ConversionRateInfo> &result, UErrorCode &status); /** * Contains all the supported conversion rates. */ class U_I18N_API ConversionRates { … }; // Encapsulates unitPreferenceData information from units resources, specifying // a sequence of output unit preferences. struct U_I18N_API UnitPreference : public UMemory { … }; /** * Metadata about the preferences in UnitPreferences::unitPrefs_. * * This class owns all of its data. * * UnitPreferenceMetadata lives in the anonymous namespace, because it should * only be useful to internal code and unit testing code. */ class U_I18N_API UnitPreferenceMetadata : public UMemory { … }; } // namespace units // Export explicit template instantiations of MaybeStackArray, MemoryPool and // MaybeStackVector. This is required when building DLLs for Windows. (See // datefmt.h, collationiterator.h, erarules.h and others for similar examples.) // // Note: These need to be outside of the units namespace, or Clang will generate // a compile error. #if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN template class U_I18N_API MaybeStackArray<units::UnitPreferenceMetadata*, 8>; template class U_I18N_API MemoryPool<units::UnitPreferenceMetadata, 8>; template class U_I18N_API MaybeStackVector<units::UnitPreferenceMetadata, 8>; template class U_I18N_API MaybeStackArray<units::UnitPreference*, 8>; template class U_I18N_API MemoryPool<units::UnitPreference, 8>; template class U_I18N_API MaybeStackVector<units::UnitPreference, 8>; #endif namespace units { /** * Unit Preferences information for various locales and usages. */ class U_I18N_API UnitPreferences { … }; } // namespace units U_NAMESPACE_END #endif //__UNITS_DATA_H__ #endif /* #if !UCONFIG_NO_FORMATTING */