Home | History | Annotate | Line # | Download | only in dist
      1 /*	$NetBSD: const.h,v 1.1 2017/04/10 02:28:23 phil Exp $ */
      2 
      3 /*
      4  * Copyright (C) 1991-1994, 1997, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
      5  * Copyright (C) 2016-2017 Philip A. Nelson.
      6  * All rights reserved.
      7  *
      8  * Redistribution and use in source and binary forms, with or without
      9  * modification, are permitted provided that the following conditions
     10  * are met:
     11  *
     12  * 1. Redistributions of source code must retain the above copyright
     13  *    notice, this list of conditions and the following disclaimer.
     14  * 2. Redistributions in binary form must reproduce the above copyright
     15  *    notice, this list of conditions and the following disclaimer in the
     16  *    documentation and/or other materials provided with the distribution.
     17  * 3. The names Philip A. Nelson and Free Software Foundation may not be
     18  *    used to endorse or promote products derived from this software
     19  *    without specific prior written permission.
     20  *
     21  * THIS SOFTWARE IS PROVIDED BY PHILIP A. NELSON ``AS IS'' AND ANY EXPRESS OR
     22  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     23  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     24  * IN NO EVENT SHALL PHILIP A. NELSON OR THE FREE SOFTWARE FOUNDATION BE
     25  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     26  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     27  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     30  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
     31  * THE POSSIBILITY OF SUCH DAMAGE.
     32  */
     33 
     34 /* const.h: Constants for bc. */
     35 
     36 /* Define INT_MAX and LONG_MAX if not defined.  Assuming 32 bits... */
     37 
     38 #ifndef INT_MAX
     39 #define INT_MAX 0x7FFFFFFF
     40 #endif
     41 #ifndef LONG_MAX
     42 #define LONG_MAX 0x7FFFFFFF
     43 #endif
     44 
     45 
     46 /* Define constants in some reasonable size.  The next 4 constants are
     47    POSIX constants. */
     48 
     49 #ifdef BC_BASE_MAX
     50   /* <limits.h> on a POSIX.2 system may have defined these.  Override. */
     51 # undef BC_BASE_MAX
     52 # undef BC_SCALE_MAX
     53 # undef BC_STRING_MAX
     54 # undef BC_DIM_MAX
     55 #endif
     56 
     57 #define BC_BASE_MAX   INT_MAX
     58 #define BC_SCALE_MAX  INT_MAX
     59 #define BC_STRING_MAX INT_MAX
     60 
     61 
     62 /* Definitions for arrays. */
     63 
     64 #define BC_DIM_MAX   16777215     /* this should be NODE_SIZE^NODE_DEPTH-1 */
     65 
     66 #define   NODE_SIZE        64     /* Must be a power of 2. */
     67 #define   NODE_MASK      0x3f     /* Must be NODE_SIZE-1. */
     68 #define   NODE_SHIFT        6     /* Number of 1 bits in NODE_MASK. */
     69 #define   NODE_DEPTH        4
     70 
     71 
     72 /* Other BC limits defined but not part of POSIX. */
     73 
     74 #define BC_LABEL_GROUP 64
     75 #define BC_LABEL_LOG    6
     76 #define BC_START_SIZE  1024	/* Initial code body size. */
     77 
     78 /* Maximum number of variables, arrays and functions and the
     79    allocation increment for the dynamic arrays. */
     80 
     81 #define MAX_STORE   32767
     82 #define STORE_INCR     32
     83 
     84 /* Other interesting constants. */
     85 
     86 #define FALSE 0
     87 #define TRUE  1
     88 
     89 /* for use with lookup (). */
     90 #define SIMPLE   0
     91 #define ARRAY    1
     92 #define FUNCT    2
     93 #define FUNCTDEF 3
     94 
     95 #ifdef __STDC__
     96 #define CONST const
     97 #define VOID  void
     98 #else
     99 #define CONST
    100 #define VOID
    101 #endif
    102