#include "unicode/utypes.h"
#if !UCONFIG_NO_FORMATTING
#define UNISTR_FROM_STRING_EXPLICIT
#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
#include "measunit_impl.h"
#include "resource.h"
#include "uarrsort.h"
#include "uassert.h"
#include "ucln_in.h"
#include "umutex.h"
#include "unicode/bytestrie.h"
#include "unicode/bytestriebuilder.h"
#include "unicode/localpointer.h"
#include "unicode/stringpiece.h"
#include "unicode/stringtriebuilder.h"
#include "unicode/ures.h"
#include "unicode/ustringtrie.h"
#include "uresimp.h"
#include "util.h"
#include <cstdlib>
U_NAMESPACE_BEGIN
namespace {
constexpr UErrorCode kUnitIdentifierSyntaxError = …;
constexpr int32_t kPrefixOffset = …;
static_assert …;
static_assert …;
constexpr int32_t kCompoundPartOffset = …;
static_assert …;
static_assert …;
enum CompoundPart { … };
constexpr int32_t kInitialCompoundPartOffset = …;
enum InitialCompoundPart { … };
constexpr int32_t kPowerPartOffset = …;
enum PowerPart { … };
constexpr int32_t kSimpleUnitOffset = …;
const struct UnitPrefixStrings { … } gUnitPrefixStrings[] = …;
class SimpleUnitIdentifiersSink : public icu::ResourceSink { … };
class CategoriesSink : public icu::ResourceSink { … };
icu::UInitOnce gUnitExtrasInitOnce { … };
const char **gSimpleUnits = …;
int32_t *gSimpleUnitCategories = …;
char *gSerializedUnitExtrasStemTrie = …;
const char16_t **gCategories = …;
int32_t gCategoriesCount = …;
char *gSerializedUnitCategoriesTrie = …;
UBool U_CALLCONV cleanupUnitExtras() { … }
void U_CALLCONV initUnitExtras(UErrorCode& status) { … }
class Token { … };
class Parser { … };
int32_t U_CALLCONV
compareSingleUnits(const void* , const void* left, const void* right) { … }
int32_t getUnitCategoryIndex(BytesTrie &trie, StringPiece baseUnitIdentifier, UErrorCode &status) { … }
}
U_CAPI int32_t U_EXPORT2
umeas_getPrefixPower(UMeasurePrefix unitPrefix) { … }
U_CAPI int32_t U_EXPORT2
umeas_getPrefixBase(UMeasurePrefix unitPrefix) { … }
CharString U_I18N_API getUnitQuantity(const MeasureUnitImpl &baseMeasureUnitImpl, UErrorCode &status) { … }
SingleUnitImpl SingleUnitImpl::forMeasureUnit(const MeasureUnit& measureUnit, UErrorCode& status) { … }
MeasureUnit SingleUnitImpl::build(UErrorCode& status) const { … }
const char *SingleUnitImpl::getSimpleUnitID() const { … }
void SingleUnitImpl::appendNeutralIdentifier(CharString &result, UErrorCode &status) const UPRV_NO_SANITIZE_UNDEFINED { … }
int32_t SingleUnitImpl::getUnitCategoryIndex() const { … }
MeasureUnitImpl::MeasureUnitImpl(const SingleUnitImpl &singleUnit, UErrorCode &status) { … }
MeasureUnitImpl MeasureUnitImpl::forIdentifier(StringPiece identifier, UErrorCode& status) { … }
const MeasureUnitImpl& MeasureUnitImpl::forMeasureUnit(
const MeasureUnit& measureUnit, MeasureUnitImpl& memory, UErrorCode& status) { … }
MeasureUnitImpl MeasureUnitImpl::forMeasureUnitMaybeCopy(
const MeasureUnit& measureUnit, UErrorCode& status) { … }
void MeasureUnitImpl::takeReciprocal(UErrorCode& ) { … }
MeasureUnitImpl MeasureUnitImpl::copyAndSimplify(UErrorCode &status) const { … }
bool MeasureUnitImpl::appendSingleUnit(const SingleUnitImpl &singleUnit, UErrorCode &status) { … }
MaybeStackVector<MeasureUnitImplWithIndex>
MeasureUnitImpl::extractIndividualUnitsWithIndices(UErrorCode &status) const { … }
void MeasureUnitImpl::serialize(UErrorCode &status) { … }
MeasureUnit MeasureUnitImpl::build(UErrorCode& status) && { … }
MeasureUnit MeasureUnit::forIdentifier(StringPiece identifier, UErrorCode& status) { … }
UMeasureUnitComplexity MeasureUnit::getComplexity(UErrorCode& status) const { … }
UMeasurePrefix MeasureUnit::getPrefix(UErrorCode& status) const { … }
MeasureUnit MeasureUnit::withPrefix(UMeasurePrefix prefix, UErrorCode& status) const UPRV_NO_SANITIZE_UNDEFINED { … }
int32_t MeasureUnit::getDimensionality(UErrorCode& status) const { … }
MeasureUnit MeasureUnit::withDimensionality(int32_t dimensionality, UErrorCode& status) const { … }
MeasureUnit MeasureUnit::reciprocal(UErrorCode& status) const { … }
MeasureUnit MeasureUnit::product(const MeasureUnit& other, UErrorCode& status) const { … }
LocalArray<MeasureUnit> MeasureUnit::splitToSingleUnitsImpl(int32_t& outCount, UErrorCode& status) const { … }
U_NAMESPACE_END
#endif