1*0e209d39SAndroid Build Coastguard Worker // © 2016 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 ******************************************************************************* 5*0e209d39SAndroid Build Coastguard Worker * Copyright (C) 2008-2013, International Business Machines Corporation and 6*0e209d39SAndroid Build Coastguard Worker * others. All Rights Reserved. 7*0e209d39SAndroid Build Coastguard Worker ******************************************************************************* 8*0e209d39SAndroid Build Coastguard Worker * 9*0e209d39SAndroid Build Coastguard Worker * 10*0e209d39SAndroid Build Coastguard Worker * File GENDER.H 11*0e209d39SAndroid Build Coastguard Worker * 12*0e209d39SAndroid Build Coastguard Worker * Modification History:* 13*0e209d39SAndroid Build Coastguard Worker * Date Name Description 14*0e209d39SAndroid Build Coastguard Worker * 15*0e209d39SAndroid Build Coastguard Worker ******************************************************************************** 16*0e209d39SAndroid Build Coastguard Worker */ 17*0e209d39SAndroid Build Coastguard Worker 18*0e209d39SAndroid Build Coastguard Worker #ifndef _GENDER 19*0e209d39SAndroid Build Coastguard Worker #define _GENDER 20*0e209d39SAndroid Build Coastguard Worker 21*0e209d39SAndroid Build Coastguard Worker /** 22*0e209d39SAndroid Build Coastguard Worker * \file 23*0e209d39SAndroid Build Coastguard Worker * \brief C++ API: GenderInfo computes the gender of a list. 24*0e209d39SAndroid Build Coastguard Worker */ 25*0e209d39SAndroid Build Coastguard Worker 26*0e209d39SAndroid Build Coastguard Worker #include "unicode/utypes.h" 27*0e209d39SAndroid Build Coastguard Worker 28*0e209d39SAndroid Build Coastguard Worker #if U_SHOW_CPLUSPLUS_API 29*0e209d39SAndroid Build Coastguard Worker 30*0e209d39SAndroid Build Coastguard Worker #if !UCONFIG_NO_FORMATTING 31*0e209d39SAndroid Build Coastguard Worker 32*0e209d39SAndroid Build Coastguard Worker #include "unicode/locid.h" 33*0e209d39SAndroid Build Coastguard Worker #include "unicode/ugender.h" 34*0e209d39SAndroid Build Coastguard Worker #include "unicode/uobject.h" 35*0e209d39SAndroid Build Coastguard Worker 36*0e209d39SAndroid Build Coastguard Worker class GenderInfoTest; 37*0e209d39SAndroid Build Coastguard Worker 38*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_BEGIN 39*0e209d39SAndroid Build Coastguard Worker 40*0e209d39SAndroid Build Coastguard Worker /** \internal Forward Declaration */ 41*0e209d39SAndroid Build Coastguard Worker void U_CALLCONV GenderInfo_initCache(UErrorCode &status); 42*0e209d39SAndroid Build Coastguard Worker 43*0e209d39SAndroid Build Coastguard Worker /** 44*0e209d39SAndroid Build Coastguard Worker * GenderInfo computes the gender of a list as a whole given the gender of 45*0e209d39SAndroid Build Coastguard Worker * each element. 46*0e209d39SAndroid Build Coastguard Worker * @stable ICU 50 47*0e209d39SAndroid Build Coastguard Worker */ 48*0e209d39SAndroid Build Coastguard Worker class U_I18N_API GenderInfo : public UObject { 49*0e209d39SAndroid Build Coastguard Worker public: 50*0e209d39SAndroid Build Coastguard Worker 51*0e209d39SAndroid Build Coastguard Worker /** 52*0e209d39SAndroid Build Coastguard Worker * Provides access to the predefined GenderInfo object for a given 53*0e209d39SAndroid Build Coastguard Worker * locale. 54*0e209d39SAndroid Build Coastguard Worker * 55*0e209d39SAndroid Build Coastguard Worker * @param locale The locale for which a <code>GenderInfo</code> object is 56*0e209d39SAndroid Build Coastguard Worker * returned. 57*0e209d39SAndroid Build Coastguard Worker * @param status Output param set to success/failure code on exit, which 58*0e209d39SAndroid Build Coastguard Worker * must not indicate a failure before the function call. 59*0e209d39SAndroid Build Coastguard Worker * @return The predefined <code>GenderInfo</code> object pointer for 60*0e209d39SAndroid Build Coastguard Worker * this locale. The returned object is immutable, so it is 61*0e209d39SAndroid Build Coastguard Worker * declared as const. Caller does not own the returned 62*0e209d39SAndroid Build Coastguard Worker * pointer, so it must not attempt to free it. 63*0e209d39SAndroid Build Coastguard Worker * @stable ICU 50 64*0e209d39SAndroid Build Coastguard Worker */ 65*0e209d39SAndroid Build Coastguard Worker static const GenderInfo* U_EXPORT2 getInstance(const Locale& locale, UErrorCode& status); 66*0e209d39SAndroid Build Coastguard Worker 67*0e209d39SAndroid Build Coastguard Worker /** 68*0e209d39SAndroid Build Coastguard Worker * Determines the gender of a list as a whole given the gender of each 69*0e209d39SAndroid Build Coastguard Worker * of the elements. 70*0e209d39SAndroid Build Coastguard Worker * 71*0e209d39SAndroid Build Coastguard Worker * @param genders the gender of each element in the list. 72*0e209d39SAndroid Build Coastguard Worker * @param length the length of gender array. 73*0e209d39SAndroid Build Coastguard Worker * @param status Output param set to success/failure code on exit, which 74*0e209d39SAndroid Build Coastguard Worker * must not indicate a failure before the function call. 75*0e209d39SAndroid Build Coastguard Worker * @return the gender of the whole list. 76*0e209d39SAndroid Build Coastguard Worker * @stable ICU 50 77*0e209d39SAndroid Build Coastguard Worker */ 78*0e209d39SAndroid Build Coastguard Worker UGender getListGender(const UGender* genders, int32_t length, UErrorCode& status) const; 79*0e209d39SAndroid Build Coastguard Worker 80*0e209d39SAndroid Build Coastguard Worker /** 81*0e209d39SAndroid Build Coastguard Worker * Destructor. 82*0e209d39SAndroid Build Coastguard Worker * 83*0e209d39SAndroid Build Coastguard Worker * @stable ICU 50 84*0e209d39SAndroid Build Coastguard Worker */ 85*0e209d39SAndroid Build Coastguard Worker virtual ~GenderInfo(); 86*0e209d39SAndroid Build Coastguard Worker 87*0e209d39SAndroid Build Coastguard Worker private: 88*0e209d39SAndroid Build Coastguard Worker int32_t _style; 89*0e209d39SAndroid Build Coastguard Worker 90*0e209d39SAndroid Build Coastguard Worker /** 91*0e209d39SAndroid Build Coastguard Worker * Copy constructor. One object per locale invariant. Clients 92*0e209d39SAndroid Build Coastguard Worker * must never copy GenderInfo objects. 93*0e209d39SAndroid Build Coastguard Worker */ 94*0e209d39SAndroid Build Coastguard Worker GenderInfo(const GenderInfo& other) = delete; 95*0e209d39SAndroid Build Coastguard Worker 96*0e209d39SAndroid Build Coastguard Worker /** 97*0e209d39SAndroid Build Coastguard Worker * Assignment operator. Not applicable to immutable objects. 98*0e209d39SAndroid Build Coastguard Worker */ 99*0e209d39SAndroid Build Coastguard Worker GenderInfo& operator=(const GenderInfo&) = delete; 100*0e209d39SAndroid Build Coastguard Worker 101*0e209d39SAndroid Build Coastguard Worker GenderInfo(); 102*0e209d39SAndroid Build Coastguard Worker 103*0e209d39SAndroid Build Coastguard Worker static const GenderInfo* getNeutralInstance(); 104*0e209d39SAndroid Build Coastguard Worker 105*0e209d39SAndroid Build Coastguard Worker static const GenderInfo* getMixedNeutralInstance(); 106*0e209d39SAndroid Build Coastguard Worker 107*0e209d39SAndroid Build Coastguard Worker static const GenderInfo* getMaleTaintsInstance(); 108*0e209d39SAndroid Build Coastguard Worker 109*0e209d39SAndroid Build Coastguard Worker static const GenderInfo* loadInstance(const Locale& locale, UErrorCode& status); 110*0e209d39SAndroid Build Coastguard Worker 111*0e209d39SAndroid Build Coastguard Worker friend class ::GenderInfoTest; 112*0e209d39SAndroid Build Coastguard Worker friend void U_CALLCONV GenderInfo_initCache(UErrorCode &status); 113*0e209d39SAndroid Build Coastguard Worker }; 114*0e209d39SAndroid Build Coastguard Worker 115*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_END 116*0e209d39SAndroid Build Coastguard Worker 117*0e209d39SAndroid Build Coastguard Worker #endif /* #if !UCONFIG_NO_FORMATTING */ 118*0e209d39SAndroid Build Coastguard Worker 119*0e209d39SAndroid Build Coastguard Worker #endif /* U_SHOW_CPLUSPLUS_API */ 120*0e209d39SAndroid Build Coastguard Worker 121*0e209d39SAndroid Build Coastguard Worker #endif // _GENDER 122*0e209d39SAndroid Build Coastguard Worker //eof 123