tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

gender.h (3426B)


      1 // © 2016 and later: Unicode, Inc. and others.
      2 // License & terms of use: http://www.unicode.org/copyright.html
      3 /*
      4 *******************************************************************************
      5 * Copyright (C) 2008-2013, International Business Machines Corporation and
      6 * others. All Rights Reserved.
      7 *******************************************************************************
      8 *
      9 *
     10 * File GENDER.H
     11 *
     12 * Modification History:*
     13 *   Date        Name        Description
     14 *
     15 ********************************************************************************
     16 */
     17 
     18 #ifndef _GENDER
     19 #define _GENDER
     20 
     21 /**
     22 * \file
     23 * \brief C++ API: GenderInfo computes the gender of a list.
     24 */
     25 
     26 #include "unicode/utypes.h"
     27 
     28 #if U_SHOW_CPLUSPLUS_API
     29 
     30 #if !UCONFIG_NO_FORMATTING
     31 
     32 #include "unicode/locid.h"
     33 #include "unicode/ugender.h"
     34 #include "unicode/uobject.h"
     35 
     36 class GenderInfoTest;
     37 
     38 U_NAMESPACE_BEGIN
     39 
     40 /** \internal Forward Declaration  */
     41 void U_CALLCONV GenderInfo_initCache(UErrorCode &status);
     42 
     43 /**
     44 * GenderInfo computes the gender of a list as a whole given the gender of
     45 * each element.
     46 * @stable ICU 50
     47 */
     48 class U_I18N_API GenderInfo : public UObject {
     49 public:
     50 
     51    /**
     52     * Provides access to the predefined GenderInfo object for a given
     53     * locale.
     54     *
     55     * @param locale  The locale for which a <code>GenderInfo</code> object is
     56     *                returned.
     57     * @param status  Output param set to success/failure code on exit, which
     58     *                must not indicate a failure before the function call.
     59     * @return        The predefined <code>GenderInfo</code> object pointer for
     60     *                this locale. The returned object is immutable, so it is
     61     *                declared as const. Caller does not own the returned
     62     *                pointer, so it must not attempt to free it.
     63     * @stable ICU 50
     64     */
     65    static const GenderInfo* U_EXPORT2 getInstance(const Locale& locale, UErrorCode& status);
     66 
     67    /**
     68     * Determines the gender of a list as a whole given the gender of each
     69     * of the elements.
     70     * 
     71     * @param genders the gender of each element in the list.
     72     * @param length the length of gender array.
     73     * @param status  Output param set to success/failure code on exit, which
     74     *                must not indicate a failure before the function call.
     75     * @return        the gender of the whole list.
     76     * @stable ICU 50
     77     */
     78    UGender getListGender(const UGender* genders, int32_t length, UErrorCode& status) const;
     79 
     80    /**
     81     * Destructor.
     82     *
     83     * @stable ICU 50
     84     */
     85    virtual ~GenderInfo();
     86 
     87 private:
     88    int32_t _style;
     89 
     90    /**
     91     * Copy constructor. One object per locale invariant. Clients
     92     * must never copy GenderInfo objects.
     93     */
     94    GenderInfo(const GenderInfo& other) = delete;
     95 
     96    /**
     97      * Assignment operator. Not applicable to immutable objects.
     98      */
     99    GenderInfo& operator=(const GenderInfo&) = delete;
    100 
    101    GenderInfo();
    102 
    103    static const GenderInfo* getNeutralInstance();
    104 
    105    static const GenderInfo* getMixedNeutralInstance();
    106 
    107    static const GenderInfo* getMaleTaintsInstance();
    108 
    109    static const GenderInfo* loadInstance(const Locale& locale, UErrorCode& status);
    110 
    111    friend class ::GenderInfoTest;
    112    friend void U_CALLCONV GenderInfo_initCache(UErrorCode &status);
    113 };
    114 
    115 U_NAMESPACE_END
    116 
    117 #endif /* #if !UCONFIG_NO_FORMATTING */
    118 
    119 #endif /* U_SHOW_CPLUSPLUS_API */
    120 
    121 #endif // _GENDER
    122 //eof