home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 22 gnu / 22-gnu.zip / less2912.zip / option.h < prev    next >
C/C++ Source or Header  |  1995-02-01  |  3KB  |  68 lines

  1. /*
  2.  * Copyright (c) 1984,1985,1989,1994,1995  Mark Nudelman
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice in the documentation and/or other materials provided with 
  12.  *    the distribution.
  13.  *
  14.  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
  15.  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  16.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
  17.  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE
  18.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
  19.  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
  20.  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 
  21.  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
  22.  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
  23.  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 
  24.  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  25.  */
  26.  
  27.  
  28. #define    END_OPTION_STRING    ('$')
  29.  
  30. /*
  31.  * Types of options.
  32.  */
  33. #define    BOOL        01    /* Boolean option: 0 or 1 */
  34. #define    TRIPLE        02    /* Triple-valued option: 0, 1 or 2 */
  35. #define    NUMBER        04    /* Numeric option */
  36. #define    STRING        010    /* String-valued option */
  37. #define    NOVAR        020    /* No associated variable */
  38. #define    REPAINT        040    /* Repaint screen after toggling option */
  39. #define    NO_TOGGLE    0100    /* Option cannot be toggled with "-" cmd */
  40. #define    HL_REPAINT    0200    /* Repaint hilites after toggling option */
  41. #define    NO_QUERY    0400    /* Option cannot be queried with "_" cmd */
  42.  
  43. #define    OTYPE        (BOOL|TRIPLE|NUMBER|STRING|NOVAR)
  44.  
  45. /*
  46.  * Argument to a handling function tells what type of activity:
  47.  */
  48. #define    INIT    0    /* Initialization (from command line) */
  49. #define    QUERY    1    /* Query (from _ or - command) */
  50. #define    TOGGLE    2    /* Change value (from - command) */
  51.  
  52. /* Flag to toggle_option to specify how to "toggle" */
  53. #define    OPT_NO_TOGGLE    0
  54. #define    OPT_TOGGLE    1
  55. #define    OPT_UNSET    2
  56. #define    OPT_SET        3
  57.  
  58. struct option
  59. {
  60.     char oletter;        /* The controlling letter (a-z) */
  61.     int otype;        /* Type of the option */
  62.     int odefault;        /* Default value */
  63.     int *ovar;        /* Pointer to the associated variable */
  64.     void (*ofunc)();    /* Pointer to special handling function */
  65.     char *odesc[3];        /* Description of each value */
  66. };
  67.  
  68.