diff options
Diffstat (limited to 'intl/plural-exp.h')
-rw-r--r-- | intl/plural-exp.h | 65 |
1 files changed, 38 insertions, 27 deletions
diff --git a/intl/plural-exp.h b/intl/plural-exp.h index dc590d374..d6cb8c51b 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, 2005 Free Software Foundation, Inc. + Copyright (C) 2000-2003, 2005-2007 Free Software Foundation, Inc. Written by Ulrich Drepper <[email protected]>, 2000. This program is free software; you can redistribute it and/or modify it @@ -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) && !defined (IN_LIBGLOCALE) -extern unsigned long int plural_eval (struct expression *pexp, +extern unsigned long int plural_eval (const struct expression *pexp, unsigned long int n); #endif + +#ifdef __cplusplus +} +#endif + #endif /* _PLURAL_EXP_H */ |