X-Git-Url: https://git.deb.at/w?a=blobdiff_plain;f=intl%2Fplural-exp.h;h=d6cb8c51b65debd4a6283b5da38f9d2b418afdab;hb=ee5170ade20748797fdde09e370fbb07e585fc9a;hp=49e2c5bfc66f8b4609b06f575c31bc4078418b25;hpb=f3c64248f69b12b759775cbc7e0e01c13fae274f;p=pkg%2Fabook.git diff --git a/intl/plural-exp.h b/intl/plural-exp.h index 49e2c5b..d6cb8c5 100644 --- a/intl/plural-exp.h +++ b/intl/plural-exp.h @@ -1,5 +1,5 @@ /* Expression parsing and evaluation for plural form selection. - Copyright (C) 2000-2003 Free Software Foundation, Inc. + Copyright (C) 2000-2003, 2005-2007 Free Software Foundation, Inc. Written by Ulrich Drepper , 2000. This program is free software; you can redistribute it and/or modify it @@ -14,7 +14,7 @@ You should have received a copy of the GNU Library General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef _PLURAL_EXP_H @@ -28,36 +28,42 @@ # define attribute_hidden #endif +#ifdef __cplusplus +extern "C" { +#endif + + +enum expression_operator +{ + /* Without arguments: */ + var, /* The variable "n". */ + num, /* Decimal number. */ + /* Unary operators: */ + lnot, /* Logical NOT. */ + /* Binary operators: */ + mult, /* Multiplication. */ + divide, /* Division. */ + module, /* Modulo operation. */ + plus, /* Addition. */ + minus, /* Subtraction. */ + less_than, /* Comparison. */ + greater_than, /* Comparison. */ + less_or_equal, /* Comparison. */ + greater_or_equal, /* Comparison. */ + equal, /* Comparison for equality. */ + not_equal, /* Comparison for inequality. */ + land, /* Logical AND. */ + lor, /* Logical OR. */ + /* Ternary operators: */ + qmop /* Question mark operator. */ +}; /* This is the representation of the expressions to determine the plural form. */ struct expression { int nargs; /* Number of arguments. */ - enum operator - { - /* Without arguments: */ - var, /* The variable "n". */ - num, /* Decimal number. */ - /* Unary operators: */ - lnot, /* Logical NOT. */ - /* Binary operators: */ - mult, /* Multiplication. */ - divide, /* Division. */ - module, /* Modulo operation. */ - plus, /* Addition. */ - minus, /* Subtraction. */ - less_than, /* Comparison. */ - greater_than, /* Comparison. */ - less_or_equal, /* Comparison. */ - greater_or_equal, /* Comparison. */ - equal, /* Comparison for equality. */ - not_equal, /* Comparison for inequality. */ - land, /* Logical AND. */ - lor, /* Logical OR. */ - /* Ternary operators: */ - qmop /* Question mark operator. */ - } operation; + enum expression_operator operation; union { unsigned long int num; /* Number value for `num'. */ @@ -106,13 +112,18 @@ extern void FREE_EXPRESSION (struct expression *exp) extern int PLURAL_PARSE (void *arg); extern struct expression GERMANIC_PLURAL attribute_hidden; extern void EXTRACT_PLURAL_EXPRESSION (const char *nullentry, - struct expression **pluralp, + const struct expression **pluralp, unsigned long int *npluralsp) internal_function; -#if !defined (_LIBC) && !defined (IN_LIBINTL) -extern unsigned long int plural_eval (struct expression *pexp, +#if !defined (_LIBC) && !defined (IN_LIBINTL) && !defined (IN_LIBGLOCALE) +extern unsigned long int plural_eval (const struct expression *pexp, unsigned long int n); #endif + +#ifdef __cplusplus +} +#endif + #endif /* _PLURAL_EXP_H */