Metropoli BBS
VIEWER: tcxlent.h MODE: TEXT (ASCII)
/*=====[ The TesSeRact(TM) CXL User Interface Development System ]======*
 | Copyright (c) 1987-1990, Innovative Data Concepts. All Rights Reserved
 |
 | This Library is part of IDC's TesSeRact Development Tools product
 | line. For information about other IDC products, call 1-215-884-3373.
 *----------------------------------------------------------------------*
 | <TCXLent.h> : Public definitions and prototypes for TCXL Data-entry
 | system (User level).
 *----------------------------------------------------------------------*
 | PGS : $Id: tcxlent.h 5.51 90/10/01 00:00:00 MLM Release Locker: MLM $
 | $Log:	tcxlent.h $
 | Revision 5.51  90/10/01  00:00:00  MLM
 | TCXL 5.51
 | 
 *======================================================================*/
#ifndef  _TCXLent_
#  define   _TCXLent_ 1
#  ifndef   _TCXLwin_
#    include <TCXLwin.h>   /* window definitions */
#  endif
                              /*- EntFld() field feature bits -*/
#define  FLD_NUL     0x0000   /* no special features defined   */
#define  FLD_LWR     0x0001   /* convert to lowercase          */
#define  FLD_UPR     0x0002   /* convert to uppercase          */
#define  FLD_MIX     0x0004   /* convert to mixed case         */
#define  FLD_PAS     0x0008   /* do not echo typed-in chars    */
#define  FLD_NUM     0x0010   /* numeric field                 */
#define  FLD_CUR     0x0020   /* currency field                */
#define  FLD_NWR     0x0040   /* no auto-wrap to next field    */
#define  FLD_LJS     0x0080   /* left justify                  */
#define  FLD_RJS     0x0100   /* right justify                 */
#define  FLD_TRM     0x0200   /* trim end spaces               */
                              /*- EntFld() field edit-modes ---*/
#define  FLD_INI     0x00     /* initial mode                  */
#define  FLD_CHG     0x01     /* change mode                   */
#define  FLD_CND     0x02     /* conditional-update mode       */
                              /*- field movement bits ---------*/
#define  FDF_MOV     0x0F     /* movement                      */
#define  FDF_BEG     0x01     /* to first field                */
#define  FDF_END     0x02     /* to last field                 */
#define  FDF_UP      0x04     /* to previous field             */
#define  FDF_DWN     0x08     /* to next field                 */

/*------------------[ Data objects and access macros ]------------------*/

TYP   struct   Edf   EdfT,  *EdfP;
TYP   struct   Fdf   FdfT,  *FdfP;

struct   Edf            /*-[ Entry-form object ]---------*/
{  FdfP     etop;       /* 00|00 : head FdfT             */
   FdfP     efld;       /* 02|04 : current FdfT          */
   WfipCP   eget;       /* 04|08 : alternate getkey()    */
   WrdP     etrm;       /* 06|0C : terminating key       */
   ChrP     efmt;       /* 08|10 : format pointer        */
   ChrP     ebfr;       /* 0A|14 : buffer pointer        */
   ChrP     ebas;       /* 0C|18 : buffer base           */
   ChrP     esep;       /* 0E|1C : word-separators       */
   VposT    epos;       /* 10|20 : window-position       */
   BytT     elen;       /* 12|22 ; buffer-length         */
   BytT     edec;       /* 13|23 : decimal position      */
   BytT     ectl;       /* 14|24 : field-control flags   */
   AtrT     efat;       /* 15|25 : field attribute       */
   AtrT     etat;       /* 16|26 : text attribute        */
   BytT     efut;       /* 17|27 : reserved for future   */
};                      /* 18|28 ]-----------------------*/

GBL   EdfP  CDC   _EntCtl;    /*- Global entry-form pointer ------------*/
#define  EdfTop(e)   ((e)->etop)                   /* head FdfT         */
#define  EdfFld(e)   ((e)->efld)                   /* current FdfT      */
#define  EdfGet(e)   ((e)->eget)                   /* get function      */
#define  EdfTrm(e)   ((e)->etrm)                   /* terminating key   */
#define  EdfFmt(e)   ((e)->efmt)                   /* format pointer    */
#define  EdfBfr(e)   ((e)->ebfr)                   /* buffer pointer    */
#define  EdfBas(e)   ((e)->ebas)                   /* buffer base       */
#define  EdfSep(e)   ((e)->esep)                   /* word separators   */
#define  EdfPos(e)   ((e)->epos)                   /* window position   */
#define  EdfPosW(e)  (VposW(EdfPos(e)))            /*    word           */
#define  EdfPosC(e)  (VposC(EdfPos(e)))            /*    col            */
#define  EdfPosR(e)  (VposR(EdfPos(e)))            /*    row            */
#define  EdfLen(e)   ((e)->elen)                   /* field-length      */
#define  EdfDec(e)   ((e)->edec)                   /* decimal-position  */
#define  EdfCtl(e)   ((e)->ectl)                   /* entry-control     */
#define  EdfFat(e)   ((e)->efat)                   /* field attribute   */
#define  EdfTat(e)   ((e)->etat)                   /* text attribute    */

struct   Fdf            /*-[ Field-definition object ]---*/
{  FdfP     fprv;       /* 00|00 : previous FdfT         */
   FdfP     fnxt;       /* 02|04 : next FdfT             */
   ChrP     fstr;       /* 04|08 : input string          */
   ChrP     fbfr;       /* 06|0C : buffer                */
   ChrP     ffmt;       /* 08|10 : format string         */
   IfcpCP   fval;       /* 0A|14 : "valid" function      */
   VfvCP    fbef;       /* 0C|18 : "before" function     */
   VfvCP    faft;       /* 0E|1C : "after"  function     */
   KeyT     fkey;       /* 10|20 : hot-key               */
   WrdT     fmsk;       /* 12|22 : feature mask          */
   TagT     ftag;       /* 14|24 : tag ID                */
   TagT     fhlp;       /* 16|26 : help category         */
   VposT    fpos;       /* 18|28 : input position        */
   BytT     fctl;       /* 1A|2A : control flags         */
   BytT     flen;       /* 1B|2B : length of buffer      */
   BytT     fdec;       /* 1C|2C : decimal position      */
   BytT     ffut;       /* 1D|2D : reserved for future   */
};                      /* 1E|2E ]-----------------------*/
#define  FdfPrv(f)   ((f)->fprv)                   /* previous FdfT     */
#define  FdfNxt(f)   ((f)->fnxt)                   /* next FdfT         */
#define  FdfStr(f)   ((f)->fstr)                   /* receiving string  */
#define  FdfBfr(f)   ((f)->fbfr)                   /* buffer pointer    */
#define  FdfFmt(f)   ((f)->ffmt)                   /* format string     */
#define  FdfVal(f)   ((f)->fval)                   /* "valid" function  */
#define  FdfBef(f)   ((f)->fbef)                   /* "before" function */
#define  FdfAft(f)   ((f)->faft)                   /* "after"  function */
#define  FdfKey(f)   ((f)->fkey)                   /* hotkey            */
#define  FdfMsk(f)   ((f)->fmsk)                   /* feature mask      */
#define  FdfTag(f)   ((f)->ftag)                   /* tag ID            */
#define  FdfHlp(f)   ((f)->fhlp)                   /* help category     */
#define  FdfPos(f)   ((f)->fpos)                   /* position          */
#define  FdfPosW(f)  (VposW(FdfPos(f)))            /*    word           */
#define  FdfPosC(f)  (VposC(FdfPos(f)))            /*    col            */
#define  FdfPosR(f)  (VposR(FdfPos(f)))            /*    row            */
#define  FdfCtl(f)   ((f)->fctl)                   /* control flags     */
#define  FdfMov(f)   (0 != (FdfCtl(f) & FDF_MOV))  /*    movement       */
#define  FdfBeg(f)   (0 != (FdfCtl(f) & FDF_BEG))  /*    to first       */
#define  FdfEnd(f)   (0 != (FdfCtl(f) & FDF_END))  /*    to last        */
#define  FdfUp(f)    (0 != (FdfCtl(f) & FDF_UP))   /*    to previous    */
#define  FdfDwn(f)   (0 != (FdfCtl(f) & FDF_DWN))  /*    to next        */
#define  FdfLen(f)   ((f)->flen)                   /* buffer length     */
#define  FdfDec(f)   ((f)->fdec)                   /* decimal position  */

/*------------------------[ Function prototypes ]-----------------------*/

#ifdef __cplusplus            /* no mangling, please */
   extern "C" {
#endif
                                       /*- Entry-form ------------------*/
IntT  CTYP  EntDef(IntT fa, IntT ta);  /* Define entry form             */
IntT  CTYP  EntFld(IntT wr, IntT wc,   /* Define entry field            */
   ChrP ps, ChrP fs, IntT fm, TagT id, IntT md, IfcpCP vf, TagT ht);
IntT  CTYP  EntKey(WfipCP gk,          /* Set alternate getkey() and    */
   WrdP tk);                           /*    termination key            */
IntT  CTYP  EntSep(ChrP ws);           /* Set word-separator string     */
IntT  CTYP  EntShow(NOARG);            /* Display, process entry form   */
                                       /*- Entry-field -----------------*/
FdfP        FldCur(NOARG);             /* Current active field          */
IntT  CTYP  FldFun(VfvCP bf,           /* Assign "before" and "after"   */
   VfvCP af);                          /*    functions                  */
IntT  CTYP  FldKey(KeyT hk);           /* Assign hot-key                */
FdfP  CTYP  FldLoc(TagT id);           /* Find entry field <id>         */
#define  FldCur()    (EdfFld(_EntCtl))
#ifdef __cplusplus
   }
#endif
#endif   /* _TCXLent_ : End of TCXLent.h */

[ RETURN TO DIRECTORY ]