Home | History | Annotate | Download | only in unicode
      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