home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 6 File / 06-File.zip / less373.zip / option.h < prev    next >
C/C++ Source or Header  |  2002-01-14  |  2KB  |  63 lines

  1. /*
  2.  * Copyright (C) 1984-2000  Mark Nudelman
  3.  *
  4.  * You may distribute under the terms of either the GNU General Public
  5.  * License or the Less License, as specified in the README file.
  6.  *
  7.  * For more information about less, or for information on how to 
  8.  * contact the author, see the README file.
  9.  */
  10.  
  11.  
  12. #define    END_OPTION_STRING    ('$')
  13.  
  14. /*
  15.  * Types of options.
  16.  */
  17. #define    BOOL        01    /* Boolean option: 0 or 1 */
  18. #define    TRIPLE        02    /* Triple-valued option: 0, 1 or 2 */
  19. #define    NUMBER        04    /* Numeric option */
  20. #define    STRING        010    /* String-valued option */
  21. #define    NOVAR        020    /* No associated variable */
  22. #define    REPAINT        040    /* Repaint screen after toggling option */
  23. #define    NO_TOGGLE    0100    /* Option cannot be toggled with "-" cmd */
  24. #define    HL_REPAINT    0200    /* Repaint hilites after toggling option */
  25. #define    NO_QUERY    0400    /* Option cannot be queried with "_" cmd */
  26.  
  27. #define    OTYPE        (BOOL|TRIPLE|NUMBER|STRING|NOVAR)
  28.  
  29. /*
  30.  * Argument to a handling function tells what type of activity:
  31.  */
  32. #define    INIT    0    /* Initialization (from command line) */
  33. #define    QUERY    1    /* Query (from _ or - command) */
  34. #define    TOGGLE    2    /* Change value (from - command) */
  35.  
  36. /* Flag to toggle_option to specify how to "toggle" */
  37. #define    OPT_NO_TOGGLE    0
  38. #define    OPT_TOGGLE    1
  39. #define    OPT_UNSET    2
  40. #define    OPT_SET        3
  41. #define OPT_NO_PROMPT    0100
  42.  
  43. /* Error code from findopt_name */
  44. #define OPT_AMBIG       1
  45.  
  46. struct optname
  47. {
  48.     char *oname;            /* Long (GNU-style) option name */
  49.     struct optname *onext;  /* List of synonymous option names */
  50. };
  51.  
  52. struct option
  53. {
  54.     char oletter;        /* The controlling letter (a-z) */
  55.     struct optname *onames; /* Long (GNU-style) option name */
  56.     int otype;        /* Type of the option */
  57.     int odefault;        /* Default value */
  58.     int *ovar;        /* Pointer to the associated variable */
  59.     void (*ofunc)();    /* Pointer to special handling function */
  60.     char *odesc[3];        /* Description of each value */
  61. };
  62.  
  63.