home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / INCLUDE / FLDDECL.H < prev    next >
C/C++ Source or Header  |  1990-05-08  |  6KB  |  187 lines

  1. /*
  2.     flddecl.h
  3.  
  4.     % public header for field objects
  5.  
  6.     C-scape 3.2
  7.     Copyright (c) 1986, 1987, by Oakland Group, Inc.
  8.     ALL RIGHTS RESERVED.
  9.  
  10.     Revision History:
  11.     -----------------
  12.     11/16/86 sng    Modified to handle variable-length fields.
  13.      9/01/87 jmd     added NO_PROTO option
  14.      9/23/87 jmd     added field_funcs definition
  15.      3/07/88 jmd    Added mergeless fields.
  16.      4/10/88 jmd    Added some new macros.
  17.      4/11/88 jmd    added scrollable fields
  18.      5/11/88 jmd    added push/pull funcs
  19.      6/01/88 jmd     removed anachronisms
  20.      6/23/88 jmd    converted generic pointers to VOID*
  21.      8/20/88 jmd    add bob object support
  22.      8/23/88 jmd     added field_funcs_struct definition
  23.      9/19/88 jmd    added field name support
  24.     10/14/88 jdc    added varsize to field_funcs_struct
  25.     10/23/88 jmd    changed name of varsize defines
  26.     11/28/88 jmd    reorganized headers
  27.  
  28.      4/11/89 jmd    renamed protect to avoid Zortech conflict
  29.                     prototyped fieldfunc struct
  30.      7/15/89 ted    Converted '_func' prototypes from typedef to macro.
  31.      9/06/89 jmd/gam added user bit to field struct
  32.  
  33.     12/01/89 jmd    added bhits for highlighted char (not used yet)
  34.      3/28/90 jmd    ansi-fied
  35.      5/08/90 jmd    added underscores to func macros for vms compiler
  36. */
  37.  
  38. #define AT_END (-1)
  39. #define    MAX_FIELD_LEN    1000
  40.  
  41. /* field functions */
  42. #define fenter_func(fname)            void fname(obj_type _sed)
  43. typedef fenter_func ((*fenter_fptr));
  44.  
  45. #define fexit_func(fname)             boolean fname(obj_type _sed)
  46. typedef fexit_func ((*fexit_fptr));
  47.  
  48. #define fkey_func(fname)            void fname(obj_type _sed)
  49. typedef fkey_func ((*fkey_fptr));
  50.  
  51. #define senter_func(fname)            void fname(obj_type _sed, int _fldno)
  52. typedef senter_func ((*senter_fptr));
  53.  
  54. #define sexit_func(fname)            void fname(obj_type _sed, int _fldno)
  55. typedef sexit_func ((*sexit_fptr));
  56.  
  57. /* field function structure */
  58. typedef struct field_funcs {
  59.     fenter_fptr    fentry;         /* field entry function    */
  60.     fexit_fptr    fexit;            /* field exit function    */
  61.     fkey_fptr    fkey;             /* field key function    */
  62.     senter_fptr    sentry;             /* sed entry function    */
  63.     sexit_fptr    sexit;            /* sed exit function    */
  64.  
  65.     SIZE_T    varsize;
  66.  
  67. } field_funcs_struct, *field_funcs_ptr;
  68.  
  69. #define VAR_INVALID        (SIZE_T) 0xfff0
  70. #define    VAR_STRING        (SIZE_T) 0xfff1
  71. #define VAR_TED            (SIZE_T) 0xfff2
  72.  
  73. /* rules for varsize:
  74.  
  75.     menu_GetVarSize() traps the following values:
  76.  
  77.         VAR_INVALID:        gives a cscape error
  78.         VAR_STRING :        returns the field's length
  79.         VAR_TED       :        returns ted_GetMaxSize if possible, or tb_GetSize
  80.  
  81.     otherwise varsize is returned directly
  82. */
  83.  
  84. /* The field type. */
  85. typedef struct field_struct {
  86.  
  87.     /** innards **/
  88.     int          *r2m;                /* record to merge map    */
  89.     int           mergelen;            /* length of merge        */
  90.     int           reclen;              /* length of record        */
  91.     char         *record;            /* record                */
  92.     char         *merge;                 /* merge                */
  93.  
  94.     /** outards (sic) **/
  95.     field_funcs_ptr    funcs;             /* field functions        */
  96.     VOID          *var;                  /* field variable        */
  97.  
  98.     bob_type     bob;                /* field's attached bob object */
  99.  
  100.     int             nameno;            /* handle to field name */
  101.  
  102.     int             dcount;              /* number of data pointers        */
  103.     VOID        **data;                 /* generic data pointer array  */
  104.  
  105.     int           row;                    /* location of field    */
  106.     int           col;
  107.     byte         reg;                /* marked colors         */
  108.     byte         sel;
  109.     int             left;                /* neighboring fieldnos */
  110.     int             right;
  111.     int            gcol;                /* grid column number     */
  112.  
  113.     int             width;                /* displayed width of the field */
  114.     int             xoffset;            /* xoffset of the displayed field */
  115.  
  116.     /** flags **/
  117.     unsigned       prot:1;             /* protection flag        */
  118.     unsigned      marked:1;             /* marked flag            */
  119.     unsigned      ubit:1;             /* user bit (for those special times) */
  120.  
  121.     unsigned      hicharon:1;          /* highlighted character enabled flag */
  122.     unsigned      hicharno:4;          /* highlighted character selector */
  123.  
  124. } *field_type;
  125.  
  126. /**** Functions *****/
  127.  
  128. /* FIELD.C */
  129. extern void     field_SetString(field_type f, char *string);
  130. extern void     field_SetChar(field_type f, int recpos, char c);
  131. extern boolean  field_SetData(field_type field, int datano, VOID *data);
  132. extern VOID    *field_GetData(field_type field, int datano);
  133.  
  134. extern int      field_FirstChar(field_type field);
  135. extern int      field_LastChar(field_type field);
  136. extern int      field_NextChar(field_type field, int fieldpos);
  137. extern int      field_PrevChar(field_type field, int fieldpos);
  138. extern void     field_SetHiChar(field_type f, int mergepos);
  139.  
  140. /* FLDGETB.C */
  141. extern boolean  field_GetBox(field_type field, ocbox *boxp);
  142.  
  143. /**** Macros *****/
  144.  
  145. #define field_SetVar(field, vari)         ((field)->var = (vari))
  146. #define field_SetFuncs(field, funks)     ((field)->funcs = (funks))
  147. #define field_SetProtected(field, flag) ((field)->prot = (flag))
  148. #define field_SetMarked(field, flag)     ((field)->marked = (flag))
  149. #define field_SetUbit(field, b)         ((field)->ubit = (b))
  150. #define field_SetXoffset(field, x)         ((field)->xoffset = (x))
  151.  
  152. #define field_GetRecord(f)         ((f)->record)
  153. #define field_GetMerge(f)          (((f)->merge == NULL) ? (f)->record : (f)->merge)
  154. #define field_GetR2M(f, m)      (((f)->merge == NULL) ? (m) : (f)->r2m[m])
  155.  
  156. #define field_GetProtected(field)    ((field)->prot)
  157. #define field_GetMarked(field)        ((field)->marked)
  158. #define field_GetUbit(field)        ((field)->ubit)
  159.  
  160. #define field_GetCol(field)            ((field)->col)
  161. #define field_GetLastCol(field)        ((field)->col + (field)->width - 1)
  162.  
  163. #define field_GetDataCount(field)    ((field)->dcount)
  164. #define field_GetRecordLen(field)    ((field)->reclen)
  165. #define field_GetMergeLen(field)    ((field)->mergelen)
  166. #define field_GetFuncs(field)        ((field)->funcs)
  167. #define field_GetVar(field)            ((field)->var)
  168. #define    field_GetVarSize(field)        ((field)->funcs->varsize)
  169. #define field_GetRow(field)            ((field)->row)
  170. #define field_GetRegAttr(field)        ((field)->reg)
  171. #define field_GetSelAttr(field)        ((field)->sel)
  172. #define field_GetGCol(field)        ((field)->gcol)
  173. #define field_GetRight(field)        ((field)->right)
  174. #define field_GetLeft(field)        ((field)->left)
  175.  
  176. #define field_GetWidth(field)        ((field)->width)
  177. #define field_GetXoffset(field)        ((field)->xoffset)
  178.  
  179. #define field_GetBob(field)            ((field)->bob)
  180. #define field_SetBob(field, b)        ((field)->bob = (b))
  181.  
  182. #define field_GetNameNo(field)        ((field)->nameno)
  183. #define field_SetNameNo(field, n)    ((field)->nameno = (n))
  184.  
  185. #define field_IsHiCharOn(field)        ((field)->hicharon)
  186. #define field_GetHiChar(field)         ((field)->hicharno)
  187.