diff options
Diffstat (limited to 'intl/plural-exp.h')
| -rw-r--r-- | intl/plural-exp.h | 83 | 
1 files changed, 46 insertions, 37 deletions
| diff --git a/intl/plural-exp.h b/intl/plural-exp.h index dc590d3..cc3fcf6 100644 --- a/intl/plural-exp.h +++ b/intl/plural-exp.h @@ -1,21 +1,19 @@  /* 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 <drepper@cygnus.com>, 2000. -   This program is free software; you can redistribute it and/or modify it -   under the terms of the GNU Library General Public License as published -   by the Free Software Foundation; either version 2, or (at your option) -   any later version. +   This program is free software: you can redistribute it and/or modify +   it under the terms of the GNU Lesser General Public License as published by +   the Free Software Foundation; either version 2.1 of the License, or +   (at your option) any later version.     This program is distributed in the hope that it will be useful,     but WITHOUT ANY WARRANTY; without even the implied warranty of -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -   Library General Public License for more details. +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +   GNU Lesser General Public License for more details. -   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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -   USA.  */ +   You should have received a copy of the GNU Lesser General Public License +   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */  #ifndef _PLURAL_EXP_H  #define _PLURAL_EXP_H @@ -28,36 +26,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 +110,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 */ | 
