Imported Upstream version 51.1
[platform/upstream/icu.git] / source / i18n / unicode / gender.h
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