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 #ifndef U_HIDE_DRAFT_API 23 24 #include "unicode/locid.h" 25 #include "unicode/ugender.h" 26 #include "unicode/uobject.h" 27 28 class GenderInfoTest; 29 30 U_NAMESPACE_BEGIN 31 32 /** 33 * GenderInfo computes the gender of a list as a whole given the gender of 34 * each element. 35 * @draft ICU 50 36 */ 37 class U_I18N_API GenderInfo : public UObject { 38 public: 39 40 /** 41 * Provides access to the predefined GenderInfo object for a given 42 * locale. 43 * 44 * @param locale The locale for which a <code>GenderInfo</code> object is 45 * returned. 46 * @param status Output param set to success/failure code on exit, which 47 * must not indicate a failure before the function call. 48 * @return The predefined <code>GenderInfo</code> object pointer for 49 * this locale. The returned object is immutable, so it is 50 * declared as const. Caller does not own the returned 51 * pointer, so it must not attempt to free it. 52 * @draft ICU 50 53 */ 54 static const GenderInfo* U_EXPORT2 getInstance(const Locale& locale, UErrorCode& status); 55 56 /** 57 * Determines the gender of a list as a whole given the gender of each 58 * of the elements. 59 * 60 * @param genders the gender of each element in the list. 61 * @param length the length of gender array. 62 * @param status Output param set to success/failure code on exit, which 63 * must not indicate a failure before the function call. 64 * @return the gender of the whole list. 65 * @draft ICU 50 66 */ 67 UGender getListGender(const UGender* genders, int32_t length, UErrorCode& status) const; 68 69 /** 70 * Destructor. 71 * 72 * @draft ICU 50 73 */ 74 virtual ~GenderInfo(); 75 76 private: 77 int32_t _style; 78 79 /** 80 * Copy constructor. One object per locale invariant. Clients 81 * must never copy GenderInfo objects. 82 */ 83 GenderInfo(const GenderInfo& other); 84 85 /** 86 * Assignment operator. Not applicable to immutable objects. 87 */ 88 GenderInfo& operator=(const GenderInfo&); 89 90 GenderInfo(); 91 92 static const GenderInfo* getNeutralInstance(); 93 94 static const GenderInfo* getMixedNeutralInstance(); 95 96 static const GenderInfo* getMaleTaintsInstance(); 97 98 static const GenderInfo* loadInstance(const Locale& locale, UErrorCode& status); 99 friend class ::GenderInfoTest; 100 }; 101 102 U_NAMESPACE_END 103 104 #endif /* U_HIDE_DRAFT_API */ 105 #endif /* #if !UCONFIG_NO_FORMATTING */ 106 107 #endif // _GENDER 108 //eof 109