|
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 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 GenderInfo_initCache(UErrorCode &status); |
|
104 }; |
|
105 |
|
106 U_NAMESPACE_END |
|
107 |
|
108 #endif /* #if !UCONFIG_NO_FORMATTING */ |
|
109 |
|
110 #endif // _GENDER |
|
111 //eof |