home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / INCLUDE / SEDDECL.H < prev    next >
C/C++ Source or Header  |  1990-10-18  |  23KB  |  696 lines

  1. /*
  2.     seddecl.h
  3.  
  4.     % public header for sed object
  5.  
  6.     written by stephen ng.
  7.     rewritten repeatedly by Joe DeSantis until ...
  8.  
  9.     C-scape 3.2
  10.     Copyright (c) 1986-1989, by Oakland Group, Inc.
  11.     ALL RIGHTS RESERVED.
  12.  
  13.     Revision History:
  14.     -----------------
  15.     11/13/86 sng    Changed sed_GoEnd for new variable length fields.
  16.     11/15/86 jmd    added sed_IsProtectedField() Macro.
  17.     11/18/86 jmd     replaced sed_Up, Down, Left,  and RightField()
  18.     11/25/86 jmd    removed references to toggled_in_exit
  19.     11/25/86 jmd    added sed label
  20.     12/08/86 jmd    moved mdisplay into sed_struct
  21.      1/22/87 jmd    added new borders.
  22.      3/09/87 jmd    added xoffset to sed_struct.
  23.      3/28/87 jmd    added cursor_state and active flag to sed_struct
  24.      9/01/87 jmd     added NO_PROTO option
  25.      9/03/87 jmd     moved color #define's to csutils1.h
  26.      9/14/87 jmd     made sed_SetRecord a macro
  27.      9/23/87 jmd     moved field_funcs definition
  28.     11/18/87 jmd     changed names of some low-level funcs
  29.      4/05/88 jmd     added special function to sed
  30.      4/08/88 jmd     removed fieldcount from sed
  31.      4/10/88 jmd     added field moves and deletes
  32.      4/11/88 jmd    added scrollable fields (changed GetLastFieldCol)
  33.      4/30/88 jmd    added menu scratch pad
  34.      5/09/88 jdc    added parens to some macros
  35.      5/31/88 jmd    added sed_DrawText
  36.      6/23/88 jmd    converted generic pointers to VOID*
  37.      6/29/88 jmd    added windows
  38.      7/07/88 jmd    removed row and col
  39.      7/09/88 jmd    added new borders
  40.      8/09/88 jmd    revised to use new object stuff
  41.      8/12/88 jmd    added explode flag
  42.      8/17/88 jmd    changed explode flag to explode func
  43.      9/12/88 jmd    added _arg macros
  44.      9/19/88 jmd    added field name support
  45.     10/08/88 jmd    added Flags for sed_Draw
  46.     10/19/88 jdc    added sed bob
  47.     11/14/88 jmd    added newest border scheme
  48.                     sed_SetBorder is now a macro
  49.     11/15/88 jmd    added prompt redirection, fixed sed_SetFieldName
  50.     11/19/88 jmd    added mouse stuff
  51.     11/28/88 jmd    reorganized headers
  52.     12/02/88 jmd    added nextwin
  53.     12/08/88 jmd    removed voffset, added sed_ReallyOpen
  54.     12/16/88 jmd    added currfield, made some macros into functions
  55.                     added sed_GetCurrFieldData
  56.  
  57.      2/02/89 jdc    added move_method typedef
  58.      2/08/89 jdc    removed sed_MarkField() (now menu_MarkField())
  59.  
  60.      3/24/89 jmd    removed back attr, added Aux function
  61.      3/29/89 jmd    converted seds to 'pure' objects
  62.      3/31/89 jmd     added the sed_GetTextbuf() macro
  63.      4/06/89 jmd    made ctype a cursortype, spc_func a boolean
  64.      4/11/89 jmd    added single field paint optimization
  65.      4/13/89 jmd    put field array into sed_xd as well
  66.      4/23/89 jdc    added sedmou_Pulldown to mouhandler list
  67.      4/26/89 jmd    added Aux support
  68.      4/29/89 jdc    added attr support to sed_GetTB (now a macro)
  69.      5/10/89 gam     added sed_Center
  70.      5/12/89 jmd     changed bord_Open to win_SetBorder
  71.      5/23/89 jmd    added sed_GetAncestor
  72.      5/29/89 jmd    simplified paint flags
  73.      6/06/89 gam    added aux_func "last" message
  74.      6/20/89 jmd    fixed sed_UpdateFields macro, removed sed_Clear
  75.      6/22/89 jmd    added set border feature
  76.      6/26/89 jmd    changed mouse operation (again)
  77.      7/15/89 ted    Converted '_func' prototypes from typedef to macro.
  78.      7/15/89 ted    Changed disp_SetNextWin to win_SetNextWin.
  79.      8/06/89 ted    Removed explode function stuff to window layer.
  80.      8/11/89 jmd    Moved SD paint flags to win level and renamed
  81.      8/23/89 jmd    Added cache flag
  82.      9/05/89 jmd    Fixed bob_GetSed macro
  83.  
  84.     11/27/89 ted    Removed obsolete references to SEDBM_ & WINBOBM_ msgs.
  85.     12/10/89 jmd    added new aux messages: SED_GO
  86.     12/12/89 jmd    added field hiliting stuff, sed (object) name macros
  87.     12/17/89 jdc    fixed SetFieldHiChar macro
  88.     12/21/89 jmd    moved bob owner stuff up to OWL
  89.      1/04/90 jmd    removed jump window
  90.      1/24/90 jmd    added SED_GETVALUE message for future C-cell interaction
  91.      1/24/90 ted    added sedmou_ClickField & sedmev_greedyclip prototypes.
  92.      2/03/90 jmd    added new aux messages: SED_CLOSE
  93.      2/14/90 jdc    played with aux functions some more
  94.      3/17/90 jmd    added new aux messages: SED_PREFEXIT, SED_POSTFEXIT
  95.      3/28/90 jmd    ansi-fied
  96.      4/23/90 jmd    changed class to winclass
  97.      4/25/90 jmd    moved generic data pointer to window object
  98.      5/08/90 jmd    added underscores to func macros for vms compiler
  99.      7/29/90 jmd    move aux to obj, made sed_DoAux a macro
  100.      8/04/90 jmd    redefined aux messages
  101.      8/13/90 jmd    added sed_IsFieldName
  102.      8/13/90 ted    changed references from sed_SetMouseCode to kb_Stuff.
  103.      8/13/90 mla    changed mcode to code in sed_SetMouseCode macro
  104.      8/24/90 mla    removed proto for sd_setnamevar
  105.                     added sed_SetNameVar, sed_SetNameVarValue, sed_SetVarValue
  106.      8/26/90 jdc    removed the macro sed_SetNameVar!
  107.     10/18/90 jmd    added SED_POSTFENTER message
  108. */
  109.  
  110. #define CSCAPE_3        /* The C-scape version number */
  111. #define CSCAPE            /* The C-scape product name */
  112.  
  113. typedef win_type sed_type;
  114.  
  115. /*** move_method ***/
  116. #define move_func(fname)            boolean fname(sed_type _sed, int _row, int _col)
  117. typedef move_func ((*move_method));
  118.  
  119. /*** special funcs ***/
  120. #define spc_func(fname)                boolean fname(sed_type _sed, int _scancode)
  121. typedef spc_func ((*spc_fptr));
  122.  
  123. /* The screen editor object xdata type. */
  124. typedef struct _sedxd {
  125.  
  126.     win_xd            wd;                        /* win superclass xdata */
  127.  
  128.     /** state information **/
  129.     int                   fieldno;
  130.     int                fieldpos;
  131.     int             yoffset;
  132.     int             xoffset;
  133.  
  134.     field_type        currfield;                /* the current field */
  135.  
  136.     unsigned          exit_toggle:1;
  137.     unsigned          active:1;
  138.     unsigned          cache:1;
  139.  
  140.     /** cursor information **/
  141.     cursortype        ctype;                    /* cursor type */
  142.     int             row;                    /* cursor pos (teds) */
  143.     int             col;
  144.  
  145.     /** permanent information **/
  146.     menu_type       menu;
  147.     xarray            fa;                         /* the menu's field xarray */
  148.  
  149.     /** window information **/
  150.     win_type        prompt_win;      /* window to which border prompts are sent */
  151.  
  152.     /** paint flag **/
  153.     int                paint_flag;                /* paint optimize flag */
  154.  
  155.     /** colors **/
  156.     byte            reg;                    /* regular fields */
  157.     byte            sel;                    /* selected fields */
  158.  
  159.     byte            hireg;                    /* highlighted regular fields */
  160.     byte            hisel;                    /* highlighted selected fields */
  161.  
  162.     /** misc. information **/
  163.  
  164.     int                baton;                    /* the baton */
  165.     int                label;                    /* numeric label (for help) */
  166.  
  167.     /* special function */
  168.     spc_fptr        special;
  169.  
  170.     /* ted cursor move method function */
  171.     move_method        move;
  172.  
  173. } sed_xd;
  174.  
  175. #define sed_getxd(sed)                    ((sed_xd *) win_getxd(sed))
  176.  
  177. /* -------------------------------------------------------------------------- */
  178. /*** sedwin object stuff ***/
  179.  
  180. extern class_func        (sedwin_Class);
  181. extern classinit_func    (sedwin_MouseInit);
  182. extern classinit_func    (sedwin_LoadInit);
  183. extern classinit_func    (sedwin_SaveInit);
  184.  
  185. #define sedwin_ClassInit()        sedwin_MouseInit()
  186.  
  187. /*** Sed Window messages ***/
  188. #define SEDWM_LASTMSG     (WINM_LASTMSG + 22)
  189.  
  190. /*** sed bob object stuff ***/
  191. #define bob_GetSed(bob)                (bob_IsSed(bob) ? (bob) : NULL)
  192. #define sed_CreateBob(sed, flag)    win_CreateBob(sed, flag)
  193. #define sed_GetAncestor(sed)        bob_GetAncestor(sed)
  194.  
  195. /*** values returned by field motion functions ***/
  196. #define    SED_MOVED         22
  197. #define SED_STUCK        1
  198. #define SED_INVALID        0
  199.  
  200. /*** baton values ***/
  201. #define SED_FIRST       -21
  202. #define SED_ABORT       -22
  203.  
  204. /*** sed Aux function messages ***/
  205. #define    SED_PRESENTER        1000
  206. #define    SED_POSTSENTER        1001
  207. #define    SED_PRESEXIT        1002
  208. #define    SED_POSTSEXIT        1003
  209.  
  210. #define    SED_PREFENTER         1004
  211. #define    SED_PREFEXIT           1005
  212. #define    SED_POSTFEXIT          1006
  213. #define    SED_POSTFENTER         1007
  214.  
  215. /* for backwards compat */
  216. #define SED_FEXIT        SED_POSTFEXIT
  217. #define SED_FENTER        SED_PREFENTER
  218.  
  219. /*** mouse handlers ***/
  220.  
  221. /* SDMOUCKF.C */
  222. extern mouhandler_func (sedmou_ClickField);
  223.  
  224. /* SDMOUCLK.C */
  225. extern mouhandler_func (sedmou_Click);
  226.  
  227. /* SDMOUFRM.C */
  228. extern mouhandler_func (sedmou_Framer);
  229.  
  230. /* SDMOUGCK.C */
  231. extern mouhandler_func (sedmou_GreedyClick);
  232.  
  233. /* SDMOUGTK.C */
  234. extern mouhandler_func (sedmou_GreedyTrack);
  235.  
  236. /* SDMOUPUL.C */
  237. extern mouhandler_func (sedmou_Pulldown);
  238.  
  239. /* SDMOUTRK.C */
  240. extern mouhandler_func (sedmou_Track);
  241.  
  242. /* SDMOUDRG.C */
  243. extern mouhandler_func (sedmou_Drag);
  244.  
  245. /* SDMEVACC.C */
  246. extern int        sedmev_acceptoffer(sed_type sed, mev_struct *mev, boolean goanyway);
  247. extern int        sedmev_greedyclip(sed_type sed, mev_struct *mev);
  248.  
  249. /* -------------------------------------------------------------------------- */
  250. /* Function prototypes */
  251.  
  252. /* SD1STFLD.C */
  253. extern int        sed_GotoFirstField(sed_type sed);
  254.  
  255. /* SDALLOC.C */
  256. extern boolean  sd_alloc(sed_type sed, boolean dobobs);
  257.  
  258. /* SDCENTER.C */
  259. extern void        sed_Center(sed_type sed);
  260.  
  261. /* SDCURS.C */
  262. extern void        sed_SetCursorType(sed_type sed, cursortype ctype);
  263. extern cursortype sed_GetCursorType(sed_type sed);
  264.  
  265. /* SDDECCHR.C */
  266. extern boolean  sed_DecChar(sed_type sed);
  267.  
  268. /* SDDECFLD.C */
  269. extern int        sed_DecField(sed_type sed);
  270.  
  271. /* SDDELFLD.C */
  272. extern void        sed_DeleteField(sed_type sed, int fieldno);
  273.  
  274. /* SDDELROW.C */
  275. extern void        sed_DeleteRows(sed_type sed, int row, int count);
  276.  
  277. /* SDDISP.C */
  278. extern void        sed_Draw(sed_type sed, unsigned mode);
  279. extern void        sd_refresh_field(sed_type sed, int fieldno);
  280.  
  281. /* SDDSEXIT.C */
  282. extern void        sed_DoSexits(sed_type sed);
  283.  
  284. /* SDFINDF.C */
  285. extern int        sd_findfield(sed_type sed, ocbox *boxp, int pref, int prot);
  286.  
  287. /* SDGETBHW.C */
  288. extern int        sed_GetBorderHeight(sed_type sed);
  289. extern int        sed_GetBorderWidth(sed_type sed);
  290.  
  291. /* SDGETCLR.C */
  292. extern void        sed_GetColors(sed_type sed, byte *fore, byte *back, byte *high);
  293.  
  294. /* SDGETCOR.C */
  295. extern void        sed_GetCorners(sed_type sed, int *ul_row, int *ul_col, int *lr_row, int *lr_col);
  296. extern void        sed_GetBordCorners(sed_type sed, int *ul_row, int *ul_col, int *lr_row, int *lr_col);
  297.  
  298. /* SDGETFRC.C */
  299. extern int        sed_GetFieldRow(sed_type sed, int fieldno);
  300. extern int        sed_GetFieldCol(sed_type sed, int fieldno);
  301. extern int        sed_GetFieldLastCol(sed_type sed, int fieldno);
  302.  
  303. /* SDGETHW.C */
  304. extern int        sed_GetHeight(sed_type sed);
  305. extern int        sed_GetWidth(sed_type sed);
  306.  
  307. /* SDGETPOS.C */
  308. extern void        sed_GetPosition(sed_type sed, int *rowmin, int *colmin);
  309.  
  310. /* SDGETSIZ.C */
  311. extern void        sed_GetSize(sed_type sed, int *hgt, int *wid);
  312.  
  313. /* SDGETTB.C */
  314. extern unsigned int _sed_gettb(sed_type sed, char *buf, unsigned buf_len, int mode, byte *attr);
  315.  
  316. /* SDGFLD.C */
  317. extern int        sed_MoveGField(sed_type sed, int direction);
  318.  
  319. /* SDGO.C */
  320. extern void        sed_DoFieldFenter(sed_type sed, int fld);
  321. extern void        sed_DoFieldFkey(sed_type sed, int fld);
  322. extern boolean  sed_DoFieldFexit(sed_type sed, int fld);
  323. extern void        sed_DoFieldSenter(sed_type sed, int fld);
  324. extern void        sed_DoFieldSexit(sed_type sed, int fld);
  325. extern boolean  sed_DoSpecial(sed_type sed, int key);
  326.  
  327. /* SDGOHOME.C */
  328. extern void        sed_GoHome(sed_type sed);
  329. extern void        sed_GoEnd(sed_type sed);
  330.  
  331. /* SDGRID.C */
  332. extern int        sed_GotoGridField(sed_type sed, int row, int col);
  333. extern int        sed_GetGridField(sed_type sed, int row, int col);
  334. extern int        sed_GetGridRow(sed_type sed, int fieldno);
  335.  
  336. /* SDGTFCLR.C */
  337. extern void        sed_GetFieldColors(sed_type sed, int fieldno, byte *reg, byte *sel);
  338.  
  339. /* SDGTOCHR.C */
  340. extern void        sed_GotoChar(sed_type sed, int fieldpos);
  341.  
  342. /* SDGTOFLD.C */
  343. extern int        sed_GotoField(sed_type sed, int fieldno);
  344.  
  345. /* SDINCCHR.C */
  346. extern boolean  sed_IncChar(sed_type sed);
  347.  
  348. /* SDINCFLD.C */
  349. extern int        sed_IncField(sed_type sed);
  350.  
  351. /* SDINSROW.C */
  352. extern boolean  sed_InsertRows(sed_type sed, int row, int count);
  353.  
  354. /* SDISFNAM.C */
  355. extern boolean    sed_IsFieldName(sed_type sed, int fieldno, char *name);
  356.  
  357. /* SDLSTFLD.C */
  358. extern int        sed_GotoLastField(sed_type sed);
  359.  
  360. /* SDMOVFLD.C */
  361. extern void        sed_MoveField(sed_type sed, int fieldno, int row, int col);
  362.  
  363. /* SDNAME.C */
  364. extern int        sed_GotoNameField(sed_type sed, char *name);
  365.  
  366. /* SDNAMVAR.C */
  367. extern VOID   *sed_GetNameVar(sed_type sed, char *name);
  368. extern boolean sed_SetNameVar(sed_type sed, char *name, VOID *var);
  369. extern boolean sed_SetNameVarValue(sed_type sed, char *name, VOID *var);
  370. extern boolean sed_SetVarValue(sed_type sed, int fld, VOID *var);
  371.  
  372. /* SDOPEN.C */
  373. extern sed_type sed_ReallyOpen(menu_type menu, class_fptr winclass);
  374. extern boolean  sed_Init(obj_type sed, menu_type menu);
  375. extern void        sed_RewindTB(sed_type sed);
  376. extern field_type sed_GetField(sed_type sed, int fld);
  377.  
  378. /* SDOVRWRT.C */
  379. extern char        sed_Overwrite(sed_type sed, int scancode);
  380.  
  381. /* SDPGDN.C */
  382. extern int        sed_PageDown(sed_type sed);
  383.  
  384. /* SDPGLT.C */
  385. extern int        sed_PageLeft(sed_type sed);
  386.  
  387. /* SDPGRT.C */
  388. extern int        sed_PageRight(sed_type sed);
  389.  
  390. /* SDPGUP.C */
  391. extern int        sed_PageUp(sed_type sed);
  392.  
  393. /* SDPULLLT.C */
  394. extern char        sed_PullLeft(sed_type sed);
  395.  
  396. /* SDPULLRT.C */
  397. extern char        sed_PullRight(sed_type sed);
  398.  
  399. /* SDPUSHLT.C */
  400. extern char        sed_PushLeft(sed_type sed, int scancode);
  401.  
  402. /* SDPUSHRT.C */
  403. extern char        sed_PushRight(sed_type sed, int scancode);
  404.  
  405. /* SDRPTFLD.C */
  406. extern void        sed_RepaintField(sed_type sed, int fieldno);
  407.  
  408. /* SDSCRLDN.C */
  409. extern int        sed_ScrollDown(sed_type sed, int lines);
  410.  
  411. /* SDSCRLLT.C */
  412. extern int        sed_ScrollLeft(sed_type sed, int lines);
  413.  
  414. /* SDSCRLRT.C */
  415. extern int        sed_ScrollRight(sed_type sed, int lines);
  416.  
  417. /* SDSCRLUP.C */
  418. extern int        sed_ScrollUp(sed_type sed, int lines);
  419.  
  420. /* SDSETCLR.C */
  421. extern void        sed_SetColors(sed_type sed, byte reg, byte back, byte sel);
  422.  
  423. /* SDSETFW.C */
  424. extern void        sed_SetFieldWidth(sed_type sed, int fieldno, int width);
  425.  
  426. /* SDSETHGT.C */
  427. extern void        sed_SetHeight(sed_type sed, int height);
  428.  
  429. /* SDSETMOU.C */
  430. extern void        sed_SetMouse(sed_type sed, mouhandler_fptr mhandler);
  431.  
  432. /* SDSETTB.C */         
  433. extern boolean  sed_SetTB(sed_type sed, char *text, unsigned len);
  434.  
  435. /* SDSETWID.C */
  436. extern void        sed_SetWidth(sed_type sed, int width);
  437.  
  438. /* SDSRCH.C */
  439. extern int        sed_SearchMerge(sed_type sed, char c);
  440.  
  441. /* SDWIN.C */
  442. extern boolean  bob_IsSed(bob_type bob);
  443.  
  444. /* SDXFLDS.C */
  445. extern void        sed_ExchangeFields(sed_type sed, int f1, int f2);
  446.  
  447. /* -------------------------------------------------------------------------- */
  448.  
  449. /* macros */
  450.  
  451. #define sed_Alloc(sed)                sd_alloc(sed, TRUE)
  452.  
  453. #define    sed_Go(sed)                    win_Go(sed)
  454. #define    sed_Close(sed)                win_Close(sed)
  455.  
  456. #define    sed_DoAux(sed, msg, indata, outdata) \
  457.         obj_DoAux(sed, msg, indata, outdata)
  458.  
  459. #define    sed_SetAux(sed, aux)    obj_SetAux(sed, aux)
  460.  
  461. #define    sed_Open(menu)                sed_ReallyOpen(menu, sedwin_Class)
  462.  
  463. #define    sed_Top(sed)                win_Top(sed)
  464. #define    sed_PutUnder(sed, over)        win_PutUnder(sed, over)
  465.  
  466. #define sed_SetPosition(sed, row, col)    bord_SetPosition(sed, row, col)
  467.  
  468. #define sed_GetWin(sed)                (sed)
  469.  
  470. #define sed_SetNextWin(sed, win)    win_SetNextWin(sed, win)
  471.  
  472. /* Note: sed_SetMouseCode is now obsolete. */
  473. #define sed_SetMouseCode(sed, code)    kb_Stuff(code)
  474.  
  475. /* sed_Push does nothing (for 2.0 users) */
  476. #define    sed_Push(sed)
  477.  
  478. #define    sed_Pop(sed)                win_UnEmploy(sed)
  479.  
  480. #define sed_GetTB(sed, buf, len, mode) \
  481.     _sed_gettb(sed, buf, len, mode, NULL)
  482.  
  483. #define sed_GetAttrTB(sed, buf, len, mode, attr) \
  484.     _sed_gettb(sed, buf, len, mode, attr)
  485.  
  486. #define    sed_Repaint(sed)         sed_Draw(sed, WPD_FIELDS | WPD_TEXT | WPD_BORDER | WPD_SENTER)
  487. #define    sed_Update(sed)             sed_Draw(sed, WPD_FIELDS | WPD_TEXT | WPD_BORDER)
  488. #define    sed_RepaintFields(sed)     sed_Draw(sed, WPD_FIELDS | WPD_SENTER)
  489. #define sed_DoSenters(sed)      sed_Draw(sed, WPD_SENTER)
  490. #define    sed_RepaintBorder(sed)     sed_Draw(sed, WPD_BORDER)
  491. #define sed_RepaintText(sed)      sed_Draw(sed, WPD_TEXT)
  492. #define    sed_UpdateFields(sed)    sed_Draw(sed, WPD_FIELDS)
  493.  
  494. #define sed_UpdateField(sed, fieldno) sd_refresh_field(sed, fieldno)
  495. #define sed_UpdateCurrField(sed)        sd_refresh_field(sed, sed_GetFieldNo(sed))
  496.  
  497. #define sed_SetShadow(sed, s)          win_SetShadow(sed, s)
  498. #define sed_SetShadowAttr(sed, a)      win_SetShadowAttr(sed, a)
  499.  
  500. #define sed_UpField(sed)     sed_MoveGField(sed, OAK_UP)
  501. #define sed_DownField(sed)     sed_MoveGField(sed, OAK_DOWN)
  502. #define sed_RightField(sed) sed_MoveGField(sed, OAK_RIGHT)
  503. #define sed_LeftField(sed)     sed_MoveGField(sed, OAK_LEFT)
  504.  
  505. #define sed_SwapFields(sed, fn1, fn2) \
  506.     menu_SwapFields(sed_GetMenu(sed), (fn1), (fn2))
  507.  
  508. #define sed_ClearTB(sed)            menu_ClearTB(sed_GetMenu(sed))
  509. #define sed_SetData(sed, d)          win_SetData(sed, d)
  510. #define sed_GetData(sed)             win_GetData(sed)
  511.  
  512. #define sed_ToggleExit(sed)          ((sed_getxd(sed))->exit_toggle = TRUE)
  513. #define sed_SetBaton(sed,c)          ((sed_getxd(sed))->baton = (c))
  514. #define sed_SetLabel(sed,n)          ((sed_getxd(sed))->label = (n))
  515. #define sed_SetSpecial(sed, fun)     ((sed_getxd(sed))->special = (fun))
  516. #define sd_setaux(sed, fun)             ((sed_getxd(sed))->aux = (fun))
  517.  
  518. #define sed_SetExplode(sed, xfunc)    win_SetExplode(sed, xfunc)
  519. #define sed_GetBob(sed)                   (sed)
  520.  
  521. #define sed_GetYoffset(sed)         ((sed_getxd(sed))->yoffset)
  522. #define sed_GetXoffset(sed)         ((sed_getxd(sed))->xoffset)
  523.  
  524. #define    sed_IsActive(sed)            ((sed_getxd(sed))->active == TRUE)
  525. #define    sed_GetActive(sed)            ((sed_getxd(sed))->active)
  526. #define    sed_SetActive(sed, mode)    ((sed_getxd(sed))->active = (mode))
  527.  
  528. #define    sed_GetExit(sed)            ((sed_getxd(sed))->exit_toggle)
  529. #define    sed_SetExit(sed, mode)        ((sed_getxd(sed))->exit_toggle = (mode))
  530.  
  531. #define sed_GetScratchPad(sed)         menu_GetScratchPad(sed_GetMenu(sed))
  532. #define sed_GetScratchSize(sed)        menu_GetScratchSize(sed_GetMenu(sed))
  533.  
  534. #define sed_GetRecordPos(sed)          ((sed_getxd(sed))->fieldpos)
  535.  
  536. #define sed_GetFieldNo(sed)         ((sed_getxd(sed))->fieldno)
  537. #define sed_GetMenu(sed)             ((sed_getxd(sed))->menu)
  538. #define sed_GetFieldCount(sed)         (menu_GetFieldCount(sed_GetMenu(sed)))
  539. #define sed_GetTextbuf(sed)     menu_GetTextbuf(sed_GetMenu(sed))
  540.  
  541. #define sed_GetBaton(sed)         ((sed_getxd(sed))->baton)
  542. #define sed_GetLabel(sed)         ((sed_getxd(sed))->label)
  543.  
  544. #define sed_GetMenuHeight(sed)    menu_GetHeight(sed_GetMenu(sed))
  545. #define sed_GetMenuWidth(sed)    menu_GetWidth(sed_GetMenu(sed))
  546.  
  547. /*** field macros ***/
  548.  
  549. #define sed_GetCurrField(sed)         ((sed_getxd(sed))->currfield)
  550.  
  551. #define sed_SetRecord(sed, string, fieldno) \
  552.     field_SetString(sed_GetField(sed, fieldno), string)
  553.  
  554. #define sed_SetCurrRecord(sed, string)     \
  555.     field_SetString(sed_GetCurrField(sed), (string))
  556.  
  557. #define sed_SetFieldData(sed, fieldno, datano, data) \
  558.     field_SetData(sed_GetField(sed, fieldno), datano, data)
  559.  
  560. #define sed_SetVar(sed, fieldno, var) \
  561.     field_SetVar(sed_GetField(sed, fieldno), var)
  562.  
  563. #define sed_SetFuncs(sed, fieldno, funcs) \
  564.     field_SetFuncs(sed_GetField(sed, fieldno), funcs)
  565.  
  566. #define    sed_MarkField(sed, fldno, reg, sel) \
  567.     menu_MarkField(sed_GetMenu(sed), fldno, reg, sel)
  568.  
  569. #define    sed_UnMarkField(sed, fieldno) \
  570.     field_SetMarked(sed_GetField(sed, fieldno), FALSE)
  571.  
  572. #define sed_ProtectField(sed, fieldno) \
  573.     field_SetProtected(sed_GetField(sed, fieldno), TRUE)
  574.  
  575. #define sed_UnProtectField(sed, fieldno) \
  576.     field_SetProtected(sed_GetField(sed, fieldno), FALSE)
  577.  
  578. #define sed_GetRecord(sed, fieldno) \
  579.     field_GetRecord(sed_GetField(sed, fieldno))
  580.  
  581. #define sed_GetMerge(sed, fieldno) \
  582.     field_GetMerge(sed_GetField(sed, fieldno))
  583.  
  584. #define sed_GetMergePos(sed) \
  585.     field_GetR2M(sed_GetCurrField(sed), sed_GetRecordPos(sed))
  586.  
  587. #define sed_GetCurrMerge(sed)     field_GetMerge(sed_GetCurrField(sed))
  588. #define sed_GetCurrRecord(sed)     field_GetRecord(sed_GetCurrField(sed))
  589. #define sed_GetCurrVar(sed)        field_GetVar(sed_GetCurrField(sed))
  590.  
  591. #define sed_GetFuncs(sed, n)       field_GetFuncs(sed_GetField(sed, n))
  592. #define sed_GetVar(sed, n)        field_GetVar(sed_GetField(sed, n))
  593. #define sed_GetVarSize(sed, n)     menu_GetVarSize(sed_GetMenu(sed), n)
  594.  
  595. #define sed_GetFieldData(sed, fieldno, datano) \
  596.     field_GetData(sed_GetField(sed, fieldno), datano)
  597.  
  598. #define sed_GetCurrFieldData(sed, datano) \
  599.     field_GetData(sed_GetCurrField(sed), datano)
  600.  
  601. #define sed_IsHome(sed) \
  602.     (field_PrevChar(sed_GetCurrField(sed), sed_GetRecordPos(sed)) == AT_END)
  603.  
  604. #define sed_IsEnd(sed) \
  605.     (field_NextChar(sed_GetCurrField(sed), sed_GetRecordPos(sed)) == AT_END)
  606.  
  607. #define sed_GetGridCol(sed, fieldno) \
  608.     field_GetGCol(sed_GetField(sed, fieldno))
  609.  
  610. #define sed_GetCurrChar(sed) \
  611.     (sed_GetCurrRecord(sed)[sed_GetRecordPos(sed)])
  612.  
  613. #define sed_GetChar(sed, pos)                 (sed_GetCurrRecord(sed)[pos])
  614. #define sed_GetFieldChar(sed, fieldno, pos) (sed_GetRecord(sed, fieldno)[pos])
  615.  
  616. #define sed_IsProtectedField(sed, fieldno) \
  617.     field_GetProtected(sed_GetField(sed, fieldno))
  618.  
  619. #define sed_IsMarkedField(sed, fieldno) \
  620.     field_GetMarked(sed_GetField(sed, fieldno))
  621.  
  622. #define sed_GetFieldDataCount(sed, fieldno) \
  623.     field_GetDataCount(sed_GetField(sed, fieldno))
  624.  
  625. #define sed_GetRecordLen(sed, fieldno) \
  626.     field_GetRecordLen(sed_GetField(sed, fieldno))
  627.  
  628. #define sed_GetCurrRecordLen(sed) \
  629.     field_GetRecordLen(sed_GetCurrField(sed))
  630.  
  631. #define sed_GetMergeLen(sed, fieldno) \
  632.     field_GetMergeLen(sed_GetField(sed, fieldno))
  633.  
  634. #define sed_GetFieldWidth(sed, fieldno) \
  635.     field_GetWidth(sed_GetField(sed, fieldno))
  636.  
  637. #define sed_GetFieldXoffset(sed, fieldno) \
  638.     field_GetXoffset(sed_GetField(sed, fieldno))
  639.  
  640. #define sed_GetFieldBob(sed, fieldno)            \
  641.     field_GetBob(sed_GetField(sed, fieldno))
  642.  
  643. #define sed_SetFieldBob(sed, fldno, bob)    \
  644.     menu_SetFieldBob(sed_GetMenu(sed), fldno, bob)
  645.  
  646. /*** name macros ***/
  647.  
  648. #define sed_GetNameNo(sed, name)         \
  649.     menu_GetNameNo(sed_GetMenu(sed), name)
  650.  
  651. #define sed_GetFieldName(sed, fieldno)     \
  652.     menu_GetFieldName(sed_GetMenu(sed), fieldno)
  653.  
  654. #define sed_SetFieldName(sed, fld, name) \
  655.     menu_SetFieldName(sed_GetMenu(sed), fld, name)
  656.  
  657. /*** sed border macros ***/
  658.  
  659. #define sed_SetBorder(sed, func)    win_SetBorder(sed, func)
  660.  
  661. #define    sed_SendBorderMsg(sed, msg, indata, outdata)    \
  662.     bord_SendMsg(sed, msg, indata, outdata)
  663.  
  664. #define sed_BorderPrompt(sed, prompt)  \
  665.     bord_SendMsg((sed_getxd(sed))->prompt_win, BDM_PROMPT, (VOID *) prompt, NULL)
  666.  
  667. #define sed_SetBorderTitle(sed, title)    \
  668.     bord_SendMsg(sed, BDM_SETTITLE, title, NULL)
  669.  
  670. #define sed_RedirectPrompt(oldsed, newsed) \
  671.     ((sed_getxd(oldsed))->prompt_win = (newsed))
  672.  
  673. #define sed_SetBorderColor(sed, color)     bord_SetAttr(sed, color)
  674. #define sed_GetBorderColor(sed)            bord_GetAttr(sed)
  675.  
  676. #define sed_GetBorderFunc(sed)            win_GetBorderFunc(sed)
  677.  
  678. #define sed_BorderExists(sed)            (win_GetBorderFunc(sed) != FNULL)
  679.  
  680. #define sed_SetBorderFeature(sed, f)    bord_SetFeature(sed, f)
  681.  
  682. #define sed_FindField(sed, box, pref)    sd_findfield(sed, box, pref, FALSE)
  683.  
  684. #define sed_SetHiColors(s, hreg, hsel)    \
  685.         ((sed_getxd(s))->hireg = (hreg), (sed_getxd(s))->hisel = (hsel))
  686.  
  687. #define sed_SetFieldHiChar(sed, fld, no) \
  688.         menu_SetHiChar(sed_GetMenu(sed), fld, no)
  689.  
  690. #define sed_GetHiSelAttr(sed)            ((sed_getxd(sed))->hisel)
  691. #define sed_GetHiRegAttr(sed)            ((sed_getxd(sed))->hireg)
  692.  
  693. #define sed_GetName(sed)                obj_GetName(sed)
  694. #define sed_SetName(sed, n)                obj_SetName(sed, n)
  695. #define sed_Find(n)                        obj_Find(n)
  696.