154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/*
254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius*****************************************************************************************
38393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius* Copyright (C) 2010-2013, International Business Machines
454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius* Corporation and others. All Rights Reserved.
554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius*****************************************************************************************
654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius*/
754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#ifndef UGENDER_H
954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UGENDER_H
1054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
1154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#include "unicode/utypes.h"
1254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
1354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#if !UCONFIG_NO_FORMATTING
1454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
1554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#include "unicode/localpointer.h"
1654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
1754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
1854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * \file
1954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * \brief C API: The purpose of this API is to compute the gender of a list as a
2054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * whole given the gender of each element.
2154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius *
2254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
2354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
2454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
2554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Genders
2659d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50
2754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
2854dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusenum UGender {
2954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    /**
3054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius     * Male gender.
3159d709d503bab6e2b61931737e662dd293b40578ccornelius     * @stable ICU 50
3254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius     */
3354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    UGENDER_MALE,
3454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    /**
3554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius     * Female gender.
3659d709d503bab6e2b61931737e662dd293b40578ccornelius     * @stable ICU 50
3754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius     */
3854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    UGENDER_FEMALE,
3954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    /**
4054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius     * Neutral gender.
4159d709d503bab6e2b61931737e662dd293b40578ccornelius     * @stable ICU 50
4254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius     */
4354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    UGENDER_OTHER
4454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius};
4554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
4659d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50
4754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
4854dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliustypedef enum UGender UGender;
4954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
5054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
5154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Opaque UGenderInfo object for use in C programs.
5259d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50
5354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
5454dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstruct UGenderInfo;
5554dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliustypedef struct UGenderInfo UGenderInfo;
5654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
5754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
5854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Opens a new UGenderInfo object given locale.
5954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param locale The locale for which the rules are desired.
6059d709d503bab6e2b61931737e662dd293b40578ccornelius * @param status UErrorCode pointer
6154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @return A UGenderInfo for the specified locale, or NULL if an error occurred.
6259d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50
6354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
6459d709d503bab6e2b61931737e662dd293b40578ccorneliusU_STABLE const UGenderInfo* U_EXPORT2
6554dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusugender_getInstance(const char *locale, UErrorCode *status);
6654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
6754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
6854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
6954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Given a list, returns the gender of the list as a whole.
7054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param genderInfo pointer that ugender_getInstance returns.
7154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param genders the gender of each element in the list.
7254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param size the size of the list.
7354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param status A pointer to a UErrorCode to receive any errors.
7454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @return The gender of the list.
7559d709d503bab6e2b61931737e662dd293b40578ccornelius * @stable ICU 50
7654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
7759d709d503bab6e2b61931737e662dd293b40578ccorneliusU_STABLE UGender U_EXPORT2
7854dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusugender_getListGender(const UGenderInfo* genderinfo, const UGender *genders, int32_t size, UErrorCode *status);
7954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
8054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#endif /* #if !UCONFIG_NO_FORMATTING */
8154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
8254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#endif
83