1*0e209d39SAndroid Build Coastguard Worker // © 2018 and later: Unicode, Inc. and others. 2*0e209d39SAndroid Build Coastguard Worker // License & terms of use: http://www.unicode.org/copyright.html 3*0e209d39SAndroid Build Coastguard Worker 4*0e209d39SAndroid Build Coastguard Worker #include "unicode/utypes.h" 5*0e209d39SAndroid Build Coastguard Worker 6*0e209d39SAndroid Build Coastguard Worker #if !UCONFIG_NO_FORMATTING 7*0e209d39SAndroid Build Coastguard Worker #ifndef __NUMPARSE_SCIENTIFIC_H__ 8*0e209d39SAndroid Build Coastguard Worker #define __NUMPARSE_SCIENTIFIC_H__ 9*0e209d39SAndroid Build Coastguard Worker 10*0e209d39SAndroid Build Coastguard Worker #include "numparse_types.h" 11*0e209d39SAndroid Build Coastguard Worker #include "numparse_decimal.h" 12*0e209d39SAndroid Build Coastguard Worker #include "numparse_symbols.h" 13*0e209d39SAndroid Build Coastguard Worker #include "unicode/numberformatter.h" 14*0e209d39SAndroid Build Coastguard Worker 15*0e209d39SAndroid Build Coastguard Worker using icu::number::impl::Grouper; 16*0e209d39SAndroid Build Coastguard Worker 17*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_BEGIN 18*0e209d39SAndroid Build Coastguard Worker namespace numparse::impl { 19*0e209d39SAndroid Build Coastguard Worker 20*0e209d39SAndroid Build Coastguard Worker class ScientificMatcher : public NumberParseMatcher, public UMemory { 21*0e209d39SAndroid Build Coastguard Worker public: 22*0e209d39SAndroid Build Coastguard Worker ScientificMatcher() = default; // WARNING: Leaves the object in an unusable state 23*0e209d39SAndroid Build Coastguard Worker 24*0e209d39SAndroid Build Coastguard Worker ScientificMatcher(const DecimalFormatSymbols& dfs, const Grouper& grouper); 25*0e209d39SAndroid Build Coastguard Worker 26*0e209d39SAndroid Build Coastguard Worker bool match(StringSegment& segment, ParsedNumber& result, UErrorCode& status) const override; 27*0e209d39SAndroid Build Coastguard Worker 28*0e209d39SAndroid Build Coastguard Worker bool smokeTest(const StringSegment& segment) const override; 29*0e209d39SAndroid Build Coastguard Worker 30*0e209d39SAndroid Build Coastguard Worker UnicodeString toString() const override; 31*0e209d39SAndroid Build Coastguard Worker 32*0e209d39SAndroid Build Coastguard Worker private: 33*0e209d39SAndroid Build Coastguard Worker UnicodeString fExponentSeparatorString; 34*0e209d39SAndroid Build Coastguard Worker DecimalMatcher fExponentMatcher; 35*0e209d39SAndroid Build Coastguard Worker IgnorablesMatcher fIgnorablesMatcher; 36*0e209d39SAndroid Build Coastguard Worker UnicodeString fCustomMinusSign; 37*0e209d39SAndroid Build Coastguard Worker UnicodeString fCustomPlusSign; 38*0e209d39SAndroid Build Coastguard Worker }; 39*0e209d39SAndroid Build Coastguard Worker 40*0e209d39SAndroid Build Coastguard Worker } // namespace numparse::impl 41*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_END 42*0e209d39SAndroid Build Coastguard Worker 43*0e209d39SAndroid Build Coastguard Worker #endif //__NUMPARSE_SCIENTIFIC_H__ 44*0e209d39SAndroid Build Coastguard Worker #endif /* #if !UCONFIG_NO_FORMATTING */ 45