xref: /aosp_15_r20/external/icu/libicu/cts_headers/unicode/gender.h (revision 0e209d3975ff4a8c132096b14b0e9364a753506e)
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