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