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