[BACK]Return to expr.h CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gmp / demos / expr

Annotation of OpenXM_contrib/gmp/demos/expr/expr.h, Revision 1.1

1.1     ! ohara       1: /* Header for expression evaluation.
        !             2:
        !             3: Copyright 2000, 2001, 2002 Free Software Foundation, Inc.
        !             4:
        !             5: This file is part of the GNU MP Library.
        !             6:
        !             7: The GNU MP Library is free software; you can redistribute it and/or modify
        !             8: it under the terms of the GNU Lesser General Public License as published by
        !             9: the Free Software Foundation; either version 2.1 of the License, or (at your
        !            10: option) any later version.
        !            11:
        !            12: The GNU MP Library is distributed in the hope that it will be useful, but
        !            13: WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
        !            14: or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
        !            15: License for more details.
        !            16:
        !            17: You should have received a copy of the GNU Lesser General Public License
        !            18: along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
        !            19: the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
        !            20: MA 02111-1307, USA.
        !            21: */
        !            22:
        !            23:
        !            24: #ifndef __EXPR_H__
        !            25: #define __EXPR_H__
        !            26:
        !            27: #define MPEXPR_RESULT_OK            0
        !            28: #define MPEXPR_RESULT_BAD_VARIABLE  1
        !            29: #define MPEXPR_RESULT_BAD_TABLE     2
        !            30: #define MPEXPR_RESULT_PARSE_ERROR   3
        !            31: #define MPEXPR_RESULT_NOT_UI        4
        !            32:
        !            33:
        !            34: /* basic types */
        !            35: #define MPEXPR_TYPE_NARY(n)       ((n) * 0x0100)
        !            36: #define MPEXPR_TYPE_MASK_ARGCOUNT MPEXPR_TYPE_NARY(0xF)
        !            37: #define MPEXPR_TYPE_0ARY          MPEXPR_TYPE_NARY(0)
        !            38: #define MPEXPR_TYPE_UNARY         MPEXPR_TYPE_NARY(1)
        !            39: #define MPEXPR_TYPE_BINARY        MPEXPR_TYPE_NARY(2)
        !            40: #define MPEXPR_TYPE_TERNARY       MPEXPR_TYPE_NARY(3)
        !            41:
        !            42: /* options for all */
        !            43: #define MPEXPR_TYPE_LAST_UI       0x0010
        !            44: #define MPEXPR_TYPE_RESULT_INT    0x0020
        !            45: #define MPEXPR_TYPE_MASK_ARGSTYLE 0x0030
        !            46:
        !            47: #define MPEXPR_TYPE_UNARY_UI     (MPEXPR_TYPE_UNARY   | MPEXPR_TYPE_LAST_UI)
        !            48: #define MPEXPR_TYPE_I_UNARY      (MPEXPR_TYPE_UNARY   | MPEXPR_TYPE_RESULT_INT)
        !            49: #define MPEXPR_TYPE_I_UNARY_UI   (MPEXPR_TYPE_I_UNARY | MPEXPR_TYPE_LAST_UI)
        !            50: #define MPEXPR_TYPE_BINARY_UI    (MPEXPR_TYPE_BINARY  | MPEXPR_TYPE_LAST_UI)
        !            51: #define MPEXPR_TYPE_I_BINARY     (MPEXPR_TYPE_BINARY  | MPEXPR_TYPE_RESULT_INT)
        !            52: #define MPEXPR_TYPE_I_BINARY_UI  (MPEXPR_TYPE_I_BINARY| MPEXPR_TYPE_LAST_UI)
        !            53: #define MPEXPR_TYPE_TERNARY_UI   (MPEXPR_TYPE_TERNARY | MPEXPR_TYPE_LAST_UI)
        !            54: #define MPEXPR_TYPE_I_TERNARY    (MPEXPR_TYPE_TERNARY | MPEXPR_TYPE_RESULT_INT)
        !            55: #define MPEXPR_TYPE_I_TERNARY_UI (MPEXPR_TYPE_I_TERNARY|MPEXPR_TYPE_LAST_UI)
        !            56:
        !            57: /* 0ary with options */
        !            58: #define MPEXPR_TYPE_CONSTANT      (MPEXPR_TYPE_0ARY | 0x0040)
        !            59:
        !            60: /* unary options */
        !            61: #define MPEXPR_TYPE_PREFIX        0x0040
        !            62:
        !            63: /* binary options */
        !            64: #define MPEXPR_TYPE_RIGHTASSOC    0x0040
        !            65: #define MPEXPR_TYPE_PAIRWISE      0x0080
        !            66:
        !            67: #define MPEXPR_TYPE_MASK_SPECIAL  0x000F
        !            68:
        !            69: /* unary specials */
        !            70: #define MPEXPR_TYPE_NEW_TABLE     (MPEXPR_TYPE_UNARY | 0x001)
        !            71: #define MPEXPR_TYPE_DONE          (MPEXPR_TYPE_UNARY | 0x002)
        !            72: #define MPEXPR_TYPE_VARIABLE      (MPEXPR_TYPE_UNARY | 0x003)
        !            73: #define MPEXPR_TYPE_LOGICAL_NOT   (MPEXPR_TYPE_UNARY | 0x004)
        !            74: #define MPEXPR_TYPE_CLOSEPAREN    (MPEXPR_TYPE_UNARY | 0x005)
        !            75: #define MPEXPR_TYPE_OPENPAREN     (MPEXPR_TYPE_CLOSEPAREN | MPEXPR_TYPE_PREFIX)
        !            76:
        !            77: /* binary specials */
        !            78: #define MPEXPR_TYPE_LOGICAL_AND   (MPEXPR_TYPE_BINARY | 0x001)
        !            79: #define MPEXPR_TYPE_LOGICAL_OR    (MPEXPR_TYPE_BINARY | 0x002)
        !            80: #define MPEXPR_TYPE_ARGSEP        (MPEXPR_TYPE_BINARY | 0x003)
        !            81: #define MPEXPR_TYPE_QUESTION      (MPEXPR_TYPE_BINARY | 0x004)
        !            82: #define MPEXPR_TYPE_COLON         (MPEXPR_TYPE_BINARY | 0x005)
        !            83: #define MPEXPR_TYPE_MAX           (MPEXPR_TYPE_BINARY | 0x006)
        !            84: #define MPEXPR_TYPE_MIN           (MPEXPR_TYPE_BINARY | 0x007)
        !            85: #define MPEXPR_TYPE_MASK_CMP      0x008
        !            86: #define MPEXPR_TYPE_MASK_CMP_LT   0x001
        !            87: #define MPEXPR_TYPE_MASK_CMP_EQ   0x002
        !            88: #define MPEXPR_TYPE_MASK_CMP_GT   0x004
        !            89: #define MPEXPR_TYPE_CMP_LT       (MPEXPR_TYPE_BINARY | MPEXPR_TYPE_MASK_CMP \
        !            90:                                   | MPEXPR_TYPE_MASK_CMP_LT)
        !            91: #define MPEXPR_TYPE_CMP_EQ       (MPEXPR_TYPE_BINARY | MPEXPR_TYPE_MASK_CMP \
        !            92:                                   | MPEXPR_TYPE_MASK_CMP_EQ)
        !            93: #define MPEXPR_TYPE_CMP_GT       (MPEXPR_TYPE_BINARY | MPEXPR_TYPE_MASK_CMP \
        !            94:                                   | MPEXPR_TYPE_MASK_CMP_GT)
        !            95: #define MPEXPR_TYPE_CMP_LE       (MPEXPR_TYPE_CMP_LT | MPEXPR_TYPE_MASK_CMP_EQ)
        !            96: #define MPEXPR_TYPE_CMP_NE       (MPEXPR_TYPE_CMP_LT | MPEXPR_TYPE_MASK_CMP_GT)
        !            97: #define MPEXPR_TYPE_CMP_GE       (MPEXPR_TYPE_CMP_GT | MPEXPR_TYPE_MASK_CMP_EQ)
        !            98:
        !            99: /* parse options */
        !           100: #define MPEXPR_TYPE_WHOLEWORD      0x1000
        !           101: #define MPEXPR_TYPE_OPERATOR       0x2000
        !           102:
        !           103:
        !           104: typedef void (*mpexpr_fun_t) __GMP_PROTO ((void));
        !           105:
        !           106: struct mpexpr_operator_t {
        !           107:   __gmp_const char  *name;
        !           108:   mpexpr_fun_t      fun;
        !           109:   int               type;
        !           110:   int               precedence;
        !           111: };
        !           112:
        !           113:
        !           114: int mpf_expr_a __GMP_PROTO ((__gmp_const struct mpexpr_operator_t *table,
        !           115:                         mpf_ptr res, int base, unsigned long prec,
        !           116:                         __gmp_const char *e, size_t elen,
        !           117:                         mpf_srcptr var[26]));
        !           118: int mpf_expr __GMP_PROTO ((mpf_ptr res, int base, __gmp_const char *e, ...));
        !           119:
        !           120: int mpq_expr_a __GMP_PROTO ((__gmp_const struct mpexpr_operator_t *table,
        !           121:                         mpq_ptr res, int base,
        !           122:                         __gmp_const char *e, size_t elen,
        !           123:                         mpq_srcptr var[26]));
        !           124: int mpq_expr __GMP_PROTO ((mpq_ptr res, int base, __gmp_const char *e, ...));
        !           125:
        !           126: int mpz_expr_a __GMP_PROTO ((__gmp_const struct mpexpr_operator_t *table,
        !           127:                         mpz_ptr res, int base,
        !           128:                         __gmp_const char *e, size_t elen,
        !           129:                         mpz_srcptr var[26]));
        !           130: int mpz_expr __GMP_PROTO ((mpz_ptr res, int base, __gmp_const char *e, ...));
        !           131:
        !           132: /* when mpfr.h has been included */
        !           133: #ifdef GMP_RNDZ
        !           134: int mpfr_expr_a __GMP_PROTO ((__gmp_const struct mpexpr_operator_t *table,
        !           135:                          mpfr_ptr res, int base, unsigned long prec,
        !           136:                          __gmp_const char *e, size_t elen,
        !           137:                          mpfr_srcptr var[26]));
        !           138: int mpfr_expr __GMP_PROTO ((mpfr_ptr res, int base, __gmp_const char *e, ...));
        !           139: #endif
        !           140:
        !           141: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>