home *** CD-ROM | disk | FTP | other *** search
/ Mega Top 1 / os2_top1.zip / os2_top1 / DEMO / RIM22 / MACROS / MACRO.H < prev    next >
C/C++ Source or Header  |  1994-02-04  |  30KB  |  790 lines

  1. /*
  2. ** Macro header: macro.h
  3. **
  4. ** Copyright (C) 1993 Brian L. Smith
  5. ** Copyright (C) 1993 RimStar Technology, Inc.
  6. ** All rights reserved internationally.
  7. **    Last revision: Oct. 22, 1993
  8. */
  9.  
  10. /*
  11. ** NOTE: The 'C' Macro compiler uses the following sizes for built-in types
  12. **        char  -  8 bit signed
  13. **        int    - 16 bit signed
  14. **        long    - 32 bit signed
  15. **         short - 16 bit signed
  16. **        float & double - unsupported
  17. **    bit field declarations in a structure are treated as ints ( ie. they are not really supported.)
  18. **
  19. **    C runtime functions however do support 32 bit args where applicable, eg. malloc, strncpy.
  20. */
  21.  
  22. #ifndef MACRO_H_INCLUDED
  23.     #define MACRO_H_INCLUDED
  24.  
  25.     typedef unsigned long    size_t;
  26.     typedef signed short        SHORT, *PSHORT;
  27.     typedef unsigned short    USHORT, BOOL, *PUSHORT;
  28.     typedef signed long        LONG, *PLONG;
  29.     typedef unsigned long    ULONG, *PULONG;
  30.     typedef char                *PSZ;
  31.     typedef void                *PVOID;
  32.  
  33.     typedef ULONG  HANDLE;
  34.     typedef HANDLE HBUFFER;
  35.     typedef HANDLE HEVENT;
  36.     typedef HANDLE HFILE;
  37.     typedef HANDLE HINI;
  38.     typedef HANDLE HKEYBOARD;
  39.     typedef HANDLE HMARK;
  40.     typedef HANDLE HWINDOW;
  41.     typedef HANDLE HWND;
  42.  
  43.     #ifndef NULL
  44.      #define NULL    0
  45.     #endif
  46.     #ifndef TRUE
  47.      #define TRUE (1)
  48.     #endif
  49.     #ifndef FALSE
  50.      #define FALSE (0)
  51.     #endif
  52.  
  53.     /* PopupMsgBox settings */
  54.     /* button types */
  55.     #define MB_OK                        0x0000
  56.     #define MB_OKCANCEL                0x0001
  57.     #define MB_RETRYCANCEL            0x0002
  58.     #define MB_ABORTRETRYIGNORE     0x0003
  59.     #define MB_YESNO                    0x0004
  60.     #define MB_YESNOCANCEL            0x0005
  61.     #define MB_CANCEL                    0x0006
  62.     #define MB_ENTER                    0x0007
  63.     #define MB_ENTERCANCEL            0x0008
  64.  
  65.      /* icon type */
  66.     #define MB_NOICON                0x0000
  67.     #define MB_ICONQUESTION        0x0010
  68.     #define MB_ICONEXCLAMATION    0x0020
  69.     #define MB_ICONASTERISK        0x0030
  70.     #define MB_ICONHAND            0x0040
  71.     #define MB_ICONWORKING        0x0050
  72.     #define MB_QUERY                MB_ICONQUESTION
  73.     #define MB_WARNING            MB_ICONEXCLAMATION
  74.     #define MB_INFORMATION        MB_ICONASTERISK
  75.     #define MB_CRITICAL            MB_ICONHAND
  76.     #define MB_ERROR                MB_ICONHAND
  77.  
  78.      /* default button */
  79.     #define MB_DEFBUTTON1        0x0000
  80.     #define MB_DEFBUTTON2        0x0100
  81.     #define MB_DEFBUTTON3        0x0200
  82.  
  83.      /* modal flags */
  84.     #define MB_APPLMODAL            0x0000
  85.     #define MB_SYSTEMMODAL        0x1000
  86.     #define MB_NONMODAL            0x5000    /* not in OS/2 version */
  87.     #define MB_PRIMARYMODAL        0x6000    /* not in OS/2 version */
  88.     #define MB_HELP                0x2000
  89.     #define MB_MOVEABLE            0x4000
  90.  
  91.     #define MBID_OK            1
  92.     #define MBID_CANCEL        2
  93.     #define MBID_ABORT        3
  94.     #define MBID_RETRY        4
  95.     #define MBID_IGNORE        5
  96.     #define MBID_YES            6
  97.     #define MBID_NO            7
  98.     #define MBID_ENTER        9
  99.     #define MBID_ERROR        -1
  100.  
  101.     /* System flags (SysQueryFlags / SysSetFlags) */
  102.     #define    SYSTEM_SW_OPENFILE    0x00000001L
  103.     #define    SYSTEM_SW_ERROR        0x00000002L
  104.     #define    SYSTEM_SW_BROWSE        0x00000004L
  105.     #define    SYSTEM_USE_TABS        0x00000008L
  106.     #define    SYSTEM_KEEP_DIR        0x00000010L
  107.     #define    SYSTEM_BACKUP            0x00000020L
  108.     #define    SYSTEM_AUTOSAVE        0x00000040L
  109.     #define    SYSTEM_SAVESTATE        0x00000080L
  110.     #define    SYSTEM_CTRLZ            0x00000100L
  111.     #define    SYSTEM_ONE_EXE            0x00000200L
  112.     #define    SYSTEM_INSERT            0x00000400L
  113.     #define    SYSTEM_KEEP_UNDO        0x00000800L
  114.     #define    SYSTEM_TOOLBAR            0x00001000L
  115.     #define    SYSTEM_TOOLBAR_H        0x00002000L
  116.     #define    SYSTEM_KEEP_TILED        0x00004000L
  117.     #define    SYSTEM_KEEP_CASCADED 0x00008000L
  118.     #define    SYSTEM_TILE_TALL        0x00010000L
  119.     #define    SYSTEM_READ_ONLY        0x00020000L
  120.     #define    SYSTEM_RAW                0x00040000L
  121.     #define    SYSTEM_SOUNDS            0x00080000L
  122.     #define    SYSTEM_FILE_DETECT    0x00100000L
  123.  
  124.     /* Buffer flags (BufQueryFlags / BufSetFlags) */
  125.     #define  BUFFER_TYPE                0x0000000FL    /* mask to get BUFTYPE */
  126.     #define  BUFFER_SCRAPTYPE        0x000000F8L /* mask to get scrap type */
  127.     #define  BUFFER_LOCKED            0x00004000L
  128.     #define  BUFFER_PRINT_IP        0x00008000L
  129.     #define  BUFFER_READ_ONLY      0x00020000L
  130.     #define  BUFFER_RAW                0x00040000L
  131.     #define  BUFFER_MODIFIED        0x00080000L
  132.  
  133.     /* Buffer types (BufCreateBuffer, BufEditFile) */
  134.     #define BUFTYPE_NORMAL             0x00000001L
  135.     #define BUFTYPE_TEMP                0x00000002L
  136.     #define BUFTYPE_SYSTEM             0x00000004L
  137.     #define BUFTYPE_SCRAP              0x00000008L
  138.  
  139.     /* Srap buffer types */
  140.     #define SCRAPTYPE_NORMAL         0x00000018L
  141.     #define SCRAPTYPE_COLUMN        0x00000028L
  142.     #define SCRAPTYPE_LINE             0x00000038L
  143.     #define SCRAPTYPE_EXCLUSIVE    0x00000048L
  144.  
  145.     /* Selection types */
  146.     #define SELECT_NORMAL        (1)
  147.     #define SELECT_COLUMN        (2)
  148.     #define SELECT_LINE            (3)
  149.     #define SELECT_EXCLUSIVE    (4)
  150.  
  151.     typedef struct _pselection_t SELECTION, *PSELECTION;
  152.     struct _pselection_t {
  153.         SHORT        type;
  154.         HBUFFER    hb;
  155.         LONG        s_line;
  156.         LONG        s_column;
  157.         LONG        e_line;
  158.         LONG        e_column;
  159.     };
  160.  
  161.  
  162.     typedef struct _rawkey RAWKEY, *PRAWKEY;
  163.     #pragma pack(1)
  164.     struct _rawkey {
  165.         unsigned    short    key;        /* high byte has shift key modifiers - low byte has scan code    */
  166.         unsigned char     ascii;    /* ascii representation if any                                            */
  167.         unsigned    char    repeat;    /* repeat count - 1 unless editor falls behind in processing    */
  168.     };
  169.  
  170.     typedef struct _binding BINDING, *PBINDING;
  171.     struct _binding {
  172.         ULONG        reserved1;        /* leave strictly alone */
  173.         USHORT    reserved2;        /* leave strictly alone */
  174.         USHORT    cKeys;            /* number of keystrokes in following array */
  175.         PSZ        pszFunction;    /* function string used in KbdBind */
  176.         USHORT    key[1];            /* array of keystrokes ( key portion of RAWKEY ) */
  177.     };
  178.     #pragma pack()
  179.  
  180.  
  181.     /* Shift key modifiers - high byte of key */
  182.     #define KC_SHIFT    0x0800
  183.     #define KC_CTRL    0x1000
  184.     #define KC_ALT        0x2000
  185.  
  186.  
  187.     typedef struct _sys_font_attrs    FONTATTRIB, *PFONTATTRIB;
  188.     struct _sys_font_attrs {
  189.     SHORT    cxChar,
  190.             cyChar,
  191.             cyDesc;
  192.     };
  193.  
  194.     /*
  195.     ** PROGINFO is used to pass the required information to ExecAssoc
  196.     ** If NULL is passed to ExecAssoc the editor uses the associations
  197.     ** contained in the configuration file (maintained using the File
  198.     ** Extensions Association dialog box) based on the file extension
  199.     ** of the current buffer. The ulFlags member currently supports:
  200.     ** 0 = create window for program output buffer
  201.     ** 1 = do not create window for program buffer
  202.     */
  203.     typedef struct progInfo_ PROGINFO, *PPROGINFO;
  204.     struct progInfo_ {
  205.         ULONG    reserved;        /* reserved for internal use                                              */
  206.         PSZ      pszTitle;        /* title of program - used to create output buffer's name    */
  207.         PSZ      pszPath;            /* path & filename of executable to run                            */
  208.         PSZ      pszDir;            /* working directory defaults to current buffer's directory */
  209.         PSZ      pszArgs;            /* arguments to pass to program                                          */
  210.         PSZ    pszRegExp;        /* Regular expression used for default error msg processing */
  211.         ULONG    ulFlags;            /* flags which control output window creation                    */
  212.     };
  213.  
  214.     typedef struct _UserStringDlg USERSTRINGDLG, *PUSERSTRINGDLG;
  215.     struct _UserStringDlg {
  216.         ULONG        cbStruct;    /* sizeof this structure */
  217.         PSZ        pszTitle;    /* Title of dialog box   */
  218.         PSZ        pszPrompt;    /* Prompt text                 */
  219.         USHORT    cbText;        /* len of pszText buffer */
  220.         PSZ        pszText;        /* Buffer to place input */
  221.     };
  222.  
  223.     /* Functions which are built into the editor */
  224.  
  225.     extern void     BufBackspace( void );
  226.     extern SHORT     BufCopyToScrap( SHORT append );
  227.     extern HBUFFER BufCreateBuffer( char *buf_name, char *pathname, ULONG ulCreateFlags );
  228.     extern SHORT     BufCutToScrap( SHORT append );
  229.     extern USHORT     BufCopyWordToString(char *, USHORT cBytes );
  230.     extern SHORT     BufDeleteBuffer( HBUFFER );
  231.     extern SHORT     BufDeleteBufferWithConfirm( HBUFFER );
  232.     extern SHORT     BufDeleteChar( ULONG count );
  233.     extern SHORT     BufDeleteCharOrSelection( void );
  234.     extern SHORT     BufDeleteCurrentBuffer( void );
  235.     extern SHORT     BufDeleteLeft( ULONG count );
  236.     extern SHORT     BufDeleteLine( ULONG count);
  237.     extern SHORT     BufDeletePrevChar( ULONG count );
  238.     extern SHORT     BufDeleteSel( void );
  239.     extern SHORT     BufDeleteToEOL( void );
  240.     extern SHORT     BufDeleteToSOL( void );
  241.     extern void     BufDeleteWhitespace( void );
  242.     extern SHORT    BufEditFile( char *pathname, ULONG ulCreateFlags );
  243.     extern HBUFFER BufFindBuffer( char *pathname, SHORT inclSysBufs );
  244.     extern SHORT     BufIndentColumn( LONG start, LONG end );
  245.     extern SHORT     BufInsertChar( int ch );
  246.     extern SHORT     BufInsertFile( char *pathname );
  247.     extern SHORT     BufInsertNewline( void );
  248.     extern void     BufInsertString( char * );
  249.     extern SHORT    BufLoadFile(HBUFFER hb, char *pathname, ULONG ulFlags);
  250.     extern void     BufNewFile( void );
  251.     extern SHORT     BufNewlineIndent( void );
  252.     extern void     BufNextBuffer( void );
  253.     extern SHORT     BufPasteScrap( HBUFFER hbScrap );
  254.     extern SHORT     BufPrevBuffer( void );
  255.     extern LONG     BufQueryBufferSize( void );
  256.     extern int         BufQueryChar( LONG offset );
  257.     extern LONG     BufQueryColumn( void );
  258.     extern HBUFFER BufQueryCurrentBuffer( void );
  259.     extern LONG        BufQueryDistanceToTab( void );
  260.     extern char *    BufQueryFilename( void );
  261.     extern LONG        BufQueryFilesize( void );
  262.     extern ULONG    BufQueryFlags( /* HBUFFER hb (optional) */ );
  263.     extern BOOL        BufQueryIsTabstop( LONG column );
  264.     extern LONG     BufQueryLine( void );
  265.     extern LONG     BufQueryLineLength( void );
  266.     extern SHORT     BufQueryModified( HBUFFER );
  267.     extern HBUFFER BufQueryNextBuffer( HBUFFER, SHORT inclSys );
  268.     extern LONG        BufQueryNextTab( LONG column );
  269.     extern LONG     BufQueryOffset( void );
  270.     extern LONG     BufQueryPastEOL( void );
  271.     extern void     BufQueryPosition( LONG *line, LONG *column );
  272.     extern HBUFFER BufQueryPrevBuffer( HBUFFER, SHORT inclSys );
  273.     extern LONG        BufQueryPrevTab( LONG column );
  274.     extern char *  BufRead( LONG cBytes );
  275.     extern void        BufRefreshWindows(HBUFFER);
  276.     extern SHORT     BufSetCurrentBuffer( HBUFFER );
  277.     extern char *    BufSetFlags( ULONG mask, ULONG newFlags );
  278.     extern void     BufSetMaxTabColumn( LONG );
  279.     extern SHORT     BufSetModified( SHORT );
  280.     extern void     BufSetTabs( char *pszTabStops );
  281.     extern HBUFFER BufSwitchBuffer( HBUFFER );
  282.     extern SHORT     BufToggleModified( void );
  283.     extern SHORT    BufTransfer(HBUFFER src, LONG s_line, LONG s_column, LONG e_line, LONG e_column );
  284.     extern SHORT    BufTransferBytes(HBUFFER src, LONG offset, LONG cBytes );
  285.     extern SHORT     BufWrite( HBUFFER );
  286.     extern SHORT     BufWriteSel( void );
  287.     extern SHORT     BufZapBuffer( HBUFFER );
  288.  
  289.     extern SHORT ChgDir(char *dir );
  290.     extern SHORT ChgDirOfFile( char *pathname );
  291.  
  292.     extern void DlgBufferList( void );
  293.     extern void DlgConfigAssoc( void );
  294.     extern void DlgConfigColors( void );
  295.     extern void DlgConfigCursors( void );
  296.     extern void DlgConfigFonts( void );
  297.     extern void DlgConfigGlobals( void );
  298.     extern void DlgGotoLine( void );
  299.     extern void DlgOpenFile( void );
  300.     extern void DlgRenameBuffer( void );
  301.     extern SHORT DlgUserString( PUSERSTRINGDLG );
  302.     extern void DlgVersion( void );
  303.  
  304.  
  305.     extern void ErrJumpToError( void );
  306.     extern void ErrNextError( void );
  307.     extern void ErrPrevError( void );
  308.  
  309.     extern SHORT  EventDeregisterEvent( HEVENT );
  310.     extern SHORT  EventDisableEvent( HEVENT );
  311.     extern SHORT  EventEnableEvent( HEVENT );
  312.     extern HEVENT EventRegisterEvent( USHORT usID, USHORT fsFlags, char *function, PVOID pUserData);
  313.     extern SHORT  EventTriggerEvent( USHORT usID, PVOID data );
  314.     /*
  315.     ** Event handlers should have this prototype:
  316.     **        SHORT event_handler ( USHORT usEventID, PVOID pData, PVOID pUserData );
  317.     **
  318.     ** pData is what is passed by EventTriggerEvent (see manual for what predefined events pass)
  319.     ** pUserData is data which has been registered to be passed to a specific event handler
  320.     **    pUserData is set using the last arg to EventRegisterEvent()
  321.     ** Each event handler registered for a particular event will be passed the same pData when
  322.     ** an event is triggered; pUserData will be non-null only if that specific event handler
  323.     ** was registered with a non-null pUserData argument to EventRegisterEvent.
  324.     */
  325.  
  326.     extern SHORT ExecAssoc( PROGINFO *pInfo );
  327.     extern void  ExecKillProcess( void );
  328.     extern void  ExecFunction( char *funcStr );
  329.     extern ULONG ExecProgram( PSZ pszProgpath, PSZ pszArgs, PSZ pszFunction,
  330.                                       PVOID pData, LONG hfStdin, LONG hfStdout, LONG hfStderr );
  331.  
  332.     extern SHORT ExecSession(PSZ         pszTitle,     /* Program title - for title bar                             */
  333.                                      PSZ         pszProgpath, /* path & filename of executable                             */
  334.                                      PSZ         pszArgs,         /* command line to pass to pgm                                */
  335.                                      PSZ         pszEnv,         /* environment string                                            */
  336.                                      USHORT     fgbg,             /* start in foreground/background                            */
  337.                                      USHORT    sessionType, /* type of session windowed, full-screen, PM, etc.    */
  338.                                      USHORT    pgmCtrl,         /* start visible/minimized/maximized etc.                 */
  339.                                      USHORT    xPos,             /* if pgmCtrl high bit set x pos of window                */
  340.                                      USHORT    yPos,             /* y pos of window                                                 */
  341.                                      USHORT    cx,             /* width of window                                                 */
  342.                                      USHORT    cy,             /* height of window                                                */
  343.                                      PSZ        pszErrBuf,     /* if exec fails - buffer to place possible reason    */
  344.                                      ULONG    errBufLen);     /* length of error buffer                                        */
  345.  
  346.     extern void ExitEditor( void );
  347.     extern void ExportClipboard( void );
  348.  
  349.     extern char *GetCurrentDir( PSZ buffer, USHORT cBytes );
  350.  
  351.     extern void HelpExtended( void );
  352.     extern void HelpForHelp( void );
  353.     extern void HelpIndex( void );
  354.     extern void HelpKeys( void );
  355.     extern void HelpQueryInfHelp( void );
  356.     extern void HelpQueryQuickHelp( void );
  357.  
  358.     extern void ImportClipboard( void );
  359.  
  360.     extern SHORT         KbdBind( char *keyStr, char *fname );
  361.     extern void            KbdBufferFlush( void );
  362.     extern PRAWKEY        KbdBufferQueryKey( void );
  363.     extern PRAWKEY        KbdBufferGetKey( void );
  364.     extern SHORT        KbdBufferPush( PRAWKEY );
  365.     extern SHORT        KbdBufferInsert( PRAWKEY );
  366.     extern void            KbdBufferUngetKey( USHORT nKeys );
  367.     extern HKEYBOARD     KbdCreateKeyboard( void );
  368.     extern void         KbdDestroyKeyboard( HKEYBOARD );
  369.     extern SHORT         KbdIsKeyboard( HKEYBOARD);
  370.     extern char *        KbdKeysToString( PUSHORT ausKeys, SHORT nItems );
  371.     extern SHORT         KbdMacroLoad( char *pathname );
  372.     extern SHORT         KbdMacroPause( void );
  373.     extern SHORT         KbdMacroPlay( void );
  374.     extern SHORT         KbdMacroRecord( void );
  375.     extern SHORT         KbdMacroSave( char *pathname );
  376.     extern HKEYBOARD     KbdPop( void );
  377.     extern SHORT         KbdPush( HKEYBOARD );
  378.     extern PBINDING    KbdQueryBinding( char *function, PBINDING pBind );
  379.     extern char *        KbdQueryFunction( PUSHORT ausKeys, SHORT nItems );
  380.     extern char *        KbdQueryLastFunction( void );
  381.     extern HKEYBOARD     KbdQueryBufferKeyboard( );
  382.     extern HKEYBOARD     KbdQueryCurrentKeyboard( );
  383.     extern HKEYBOARD     KbdQueryWindowKeyboard( );
  384.     extern HKEYBOARD     KbdSetBufferKeyboard( HKEYBOARD );
  385.     extern HKEYBOARD     KbdSetCurrentKeyboard( HKEYBOARD );
  386.     extern HKEYBOARD     KbdSetWindowKeyboard( HKEYBOARD );
  387.     extern PUSHORT        KbdStringToKeys( char *s );
  388.  
  389.     extern void         LibAutoload(char *filename, char *, ... );
  390.     extern void         LibAutoloadData(char *filename, char *, ... );
  391.     extern void         LibExecFunction( char *function );
  392.     extern SHORT         LibQueryFunction( char *function );
  393.     extern SHORT        LibLoadMacro(char *pathname);
  394.  
  395.     extern SHORT MarkAdjustSel( void );
  396.     extern HMARK MarkAllocGlobal(USHORT usID);
  397.     extern HMARK MarkAllocLocal(USHORT usID);
  398.     extern SHORT MarkBeginSel( SHORT type );
  399.     extern SHORT MarkColumn( void );
  400.     extern void  MarkCreateSel( PSELECTION );
  401.     extern SHORT MarkEndSel( void );
  402.     extern SHORT MarkExclusive( void );
  403.     extern SHORT MarkFree(HMARK);
  404.     extern USHORT MarkFreeAllGlobals(void);
  405.     extern USHORT MarkFreeAllLocals(void);
  406.     extern SHORT MarkGoto(HMARK);
  407.     extern BOOL  MarkIsMark(HMARK);
  408.     extern SHORT MarkLine( void );
  409.     extern SHORT MarkNormal( void );
  410.     extern void     MarkPopPos(SHORT move, USHORT count);
  411.     extern HMARK MarkPushPos(void);
  412.     extern HMARK MarkQueryGlobalFromID(USHORT id);
  413.     extern BOOL  MarkQueryIsSelOpen(void);
  414.     extern HMARK MarkQueryLocalFromID(USHORT id);
  415.     extern HMARK MarkQueryPosFromID(USHORT id);
  416.     extern SHORT MarkQuerySel(PSELECTION pSel, SHORT adjust);
  417.     extern SHORT MarkQuerySelType(void);
  418.     extern SHORT MarkQuerySelWouldAdjust(void);
  419.     extern void     MarkRemoveAllSel(void);
  420.     extern SHORT MarkRemoveSel(void);
  421.     extern HMARK MarkResetMark(HMARK);
  422.     extern SHORT MarkResumeSel(void);
  423.     extern SHORT MarkSetID(HMARK hMark, USHORT id);
  424.     extern SHORT MarkSetMark(HMARK hMark, LONG new_line, LONG new_col);
  425.     extern SHORT MarkSetSelType(SHORT type);
  426.     extern SHORT MarkSwapSel( void );
  427.  
  428.     extern SHORT MnuInsertItem(HWND hwndParentMenu,
  429.                                         USHORT subMenuID,
  430.                                         SHORT pos,
  431.                                         USHORT afAttrib,
  432.                                         USHORT id,
  433.                                         PSZ pszText,
  434.                                         PSZ pszHelp);
  435.     extern HWND  MnuInsertSubMenu(HWND hwndParentMenu,
  436.                                             HWND hwndSubMenu,
  437.                                             SHORT pos,
  438.                                             USHORT id,
  439.                                             PSZ pszText,
  440.                                             PSZ pszHelp);
  441.     extern BOOL     MnuSetItemAttr(HWND hwndMenu,
  442.                                          USHORT idItem,
  443.                                          BOOL fIncludeSubMenus,
  444.                                          USHORT usMask,
  445.                                          USHORT usData);
  446.     extern void     MnuSetItemText(USHORT idItem, PSZ text, PSZ accel);
  447.  
  448.     extern SHORT MovAbs( LONG line, LONG column );
  449.     extern SHORT MovBottomWin( void );
  450.     extern SHORT MovDown( LONG count );
  451.     extern SHORT MovEOF( void );
  452.     extern SHORT MovEOL( void );
  453.     extern SHORT MovEndBrief( void );
  454.     extern SHORT MovLeft( LONG count );
  455.     extern SHORT MovNextChar( LONG count );
  456.     extern SHORT MovUp( LONG count );
  457.     extern SHORT MovPageDown( void );
  458.     extern SHORT MovPageUp( void );
  459.     extern SHORT MovPrevChar( LONG count );
  460.     extern SHORT MovPrevTabPos( void );
  461.     extern SHORT MovRel( LONG line_offset, LONG col_offset );
  462.     extern SHORT MovRight( LONG count );
  463.     extern SHORT MovSOF( void );
  464.     extern SHORT MovSOL( void );
  465.     extern LONG  MovSOT( void );    /* returns column moved to */
  466.     extern SHORT MovStartBrief( void );
  467.     extern SHORT MovToLine( LONG line );
  468.     extern void  MovToMouse( void );
  469.     extern SHORT MovTopWin( void );
  470.     extern void  MovWordLeft( void );
  471.     extern void  MovWordRight( void );
  472.  
  473.     extern Nothing( void );
  474.  
  475.     extern SHORT PopupMsg( char *msg, char *title);
  476.     extern SHORT PopupMsgBox( char *msg, char *title, ULONG ulFlags );
  477.  
  478.     /*
  479.     ** These 'Pos' function do not retain undo information.
  480.     ** they just move you to the desired location.
  481.     ** They are faster than their 'Mov' versions, so if you don't want to retain undo
  482.     ** information while you are moving around, these are better choice.
  483.     */
  484.     extern LONG     PosAbs(LONG new_line, LONG new_col);
  485.     extern LONG     PosEOF(void);
  486.     extern LONG     PosEOL(void);
  487.     extern LONG     PosSOF(void);
  488.     extern LONG     PosSOL(void);
  489.     extern LONG     PosSOT(void);
  490.     extern SHORT PosNextChar(LONG count);
  491.     extern SHORT PosPrevChar(LONG count);
  492.     extern LONG     PosRel(LONG line_offset, LONG col_offset);
  493.     extern LONG     PosToOffset( LONG offset );
  494.  
  495.     extern SHORT Print( void );
  496.  
  497.     extern SHORT Redo( void );
  498.     extern SHORT RedoAll( void );
  499.     extern SHORT RedoModification( void );
  500.  
  501.     extern SHORT ReplaceForward( void );
  502.     extern SHORT ReplaceBackward( void );
  503.     extern SHORT ReplaceAgain( void );
  504.  
  505.     extern SHORT SearchForward( void );
  506.     extern SHORT SearchBackward( void );
  507.     extern SHORT SearchAgain( void );
  508.  
  509.     extern void     SbBrowseDefs( void );
  510.     extern void     SbBrowseRefs( void );
  511.     extern void     SbBrowseSymbolsDefinedInModule( void );
  512.     extern void     SbBrowseSymbolAtCursor( void );
  513.     extern SHORT SbFindNext( void );
  514.     extern SHORT SbFindPrev( void );
  515.     extern SHORT SbGotoDef( void );
  516.     extern SHORT SbGotoThisDef( PSZ pszSymbol );
  517.     extern void  SbJumpBack( void );
  518.     extern SHORT SbLoadDatabase( /* PSZ dbPathname (optional), SHORT replace (optional)*/);
  519.     extern SHORT SbUnloadDatabase(void);
  520.  
  521.     extern SHORT SelfInsert( void );
  522.  
  523.  
  524.     #define RE_SYNTAX_UNIX  0
  525.     #define RE_SYNTAX_BRIEF 1
  526.     /* if syntax is not specified UNIX syntax is used */
  527.     extern SHORT SrchFwd(char *pattern, SHORT re, SHORT case_s, SHORT block, LONG *total_length, SHORT syntax);
  528.     extern SHORT SrchBack(char *pattern, SHORT re, SHORT case_s, SHORT block, LONG *total_length, SHORT syntax);
  529.     extern LONG  SrchString(char *pattern, char *str, LONG *length, SHORT re, SHORT case_s, SHORT sytax);
  530.     extern LONG  Translate(char *pattern, char *replacement, SHORT global, SHORT re, SHORT case_s, SHORT block, SHORT dir, SHORT syntax);
  531.  
  532.     extern void             SysBeep( ULONG frequency, ULONG duration );
  533.     extern char           *SysQueryCaller( void );
  534.     extern ULONG            SysQueryFlags(void);
  535.     extern PFONTATTRIB    SysQueryFontSize(void);
  536.     extern void             SysSaveAll( void );
  537.     extern SHORT             SysSaveAndExit( void );
  538.     extern SHORT            SysSetFlags(ULONG ulMask, ULONG ulNewSettings);
  539.     extern SHORT             SysSetHourglass( SHORT on_off);
  540.  
  541.     extern void  ToggleBackups( void );
  542.     extern void  ToggleInsert( void );
  543.     extern void  ToggleKeepTiled( void );
  544.     extern void  ToggleKeepCascaded( void );
  545.     extern void  ToggleTabs( void );
  546.  
  547.     extern SHORT    Undo( void );
  548.     extern SHORT    UndoAll( void );
  549.     extern SHORT    UndoModification( void );
  550.  
  551.     extern SHORT    WinAttachBuffer( HBUFFER );
  552.     extern SHORT    WinAttachBufferToWindow( HBUFFER, HWINDOW );
  553.     extern void        WinCascade( void );
  554.     extern SHORT     WinDeleteCurrentWindow( void);
  555.     extern SHORT     WinDeleteWindow( HWINDOW );
  556.     extern void      WinDeleteWindowAndBuffer( void );
  557.     extern HWINDOW WinLoadFileInWindow( char *pathname, HWINDOW window);
  558.     extern HWINDOW    WinNewWindow( void );
  559.     extern void        WinNextWindow( void );
  560.     extern HWINDOW    WinQueryCurrentWindow( void );
  561.     extern void        WinQueryCursor( SHORT *x, SHORT *y );
  562.     extern HWINDOW    WinQueryNextWindow( void );
  563.     extern HWINDOW    WinQueryPrevWindow( void );
  564.     extern void        WinPrevWindow( void );
  565.     extern SHORT    WinScrollBottom( void );
  566.     extern SHORT    WinScrollCenter( void );
  567.     extern SHORT    WinScrollDown( LONG count );
  568.     extern SHORT    WinScrollH( LONG count );
  569.     extern SHORT    WinScrollLeft( LONG count);
  570.     extern SHORT    WinScrollRight( LONG count );
  571.     extern SHORT    WinScrollTop( void );
  572.     extern SHORT    WinScrollUp( LONG count );
  573.     extern SHORT    WinScrollV( LONG count );
  574.     extern ULONG    WinSendMsg( HWND, USHORT, ULONG, ULONG );
  575.     extern SHORT    WinSetWindow( HWINDOW );
  576.     extern LONG        WinSetY( LONG new_y );
  577.     /* PM CUA */
  578.     extern void        WinMaximize(void);
  579.     extern void        WinMinimize(void);
  580.     extern void        WinMove(void);
  581.     extern void        WinRestore(void);
  582.     extern void        WinSize( void );
  583.     extern void        WinSysMenu( void );
  584.     extern void        WinMainHide( void );
  585.     extern void        WinMainMaximize( void );
  586.     extern void        WinMainMinimize( void );
  587.     extern void        WinMainMove( void );
  588.     extern void        WinMainRestore( void );
  589.     extern void        WinMainSize( void );
  590.     extern void        WinMainSysMenu( void );
  591.  
  592.     #define TILE_ACROSS    0
  593.     #define TILE_DOWN        1
  594.     extern void WinTile( SHORT orientation );
  595.     extern void WinTileAcross( void );
  596.     extern void WinTileDown( void );
  597.     extern void WinTileWindows( void );
  598.     extern void WinUpdateWindow( void );
  599.  
  600.     extern char * ltrim( char * );
  601.     extern char * rtrim( char * );
  602.  
  603.     /* 'C' Runtime library interface */
  604.     extern void abort(void);    /* Aborts macro execution & returns to top level of editor */
  605.     extern int  atoi(char *);
  606.     extern long atol(char *);
  607.     extern char *itoa(int value, char *buffer, int radix);
  608.     extern char *ltoa(long value, char *buffer, int radix);
  609.     extern void *calloc( size_t, size_t );
  610.     extern char *complete_path(char *pathname);
  611.     extern void free( void * );
  612.     extern char *getenv( char * );
  613.     extern void *malloc( size_t );
  614.     extern void *realloc( void *, size_t );
  615.     extern void *memcpy( void *, void *, size_t );
  616.     extern void *memset( void *, short, size_t );
  617.  
  618.     #define _MAX_DRIVE    3
  619.     #define _MAX_DIR        256
  620.     #define _MAX_FNAME    256
  621.     #define _MAX_EXT        256
  622.     #define _MAX_PATH        260
  623.     extern void splitpath( char *pathname, char *drive, char *dir, char *fname, char *ext );
  624.  
  625.     extern long sprintf(char *buf, char *fmt, ...); /* up to ten more args allowed */
  626.     extern char * strcat( char *, char * );
  627.     extern char * strchr( char *, int );
  628.     extern short  strcmp( char *, char * );
  629.     extern short  stricmp( char *, char * );
  630.     extern char * strcpy( char *, char * );
  631.     extern size_t strcspn( char *, char * );
  632.     extern char * strdup( char * );
  633.     extern size_t strlen( char * );
  634.     extern char * strlwr( char * );
  635.     extern char * strncat( char *, char*, size_t );
  636.     extern short  strncmp( char *, char *, size_t );
  637.     extern short  strnicmp( char *, char *, size_t );
  638.     extern char * strncpy( char *, char *, size_t );
  639.     extern char * strpbrk( char *, char * );
  640.     extern char * strrchr( char *, int);
  641.     extern size_t strspn( char *, char * );
  642.     extern char * strstr( char *, char * );
  643.     extern long    strtol( char *, int );
  644.     extern unsigned long strtoul( char *, int );
  645.     extern char * strupr( char * );
  646.  
  647.     #ifdef INCL_IO
  648.  
  649.         #define O_WRONLY        0x0001L
  650.         #define O_RDWR            0x0002L
  651.         #define O_RDONLY        0x0004L
  652.         #define O_APPEND        0x0008L
  653.         #define O_NOINHERIT    0x0080L
  654.         #define O_CREAT        0x0100L
  655.         #define O_TRUNC        0x0200L
  656.         #define O_EXCL            0x0400L
  657.         #define O_TEXT            0x4000L
  658.         #define O_BINARY        0x8000L
  659.  
  660.         #define SH_DENYRW        0x0010L    /* deny read or write access to others */
  661.         #define SH_DENYWR        0x0020L    /* deny write access to others */
  662.         #define SH_DENYRD        0x0030L    /* deny read access to others */
  663.         #define SH_DENYNO        0x0040L    /* allow others to read or write */
  664.  
  665.         #define SEEK_SET        0x0000L    /* seek relative to start of file */
  666.         #define SEEK_CUR        0x0001L    /* seek relative to current position */
  667.         #define SEEK_END        0x0002L    /* seek relative to EOF */
  668.  
  669.         extern long errno;
  670.  
  671.         #define EACCES            0x0018L    /* access denied */
  672.         #define EBADF            0x002BL    /* bad file handle */
  673.         #define EEXIST            0x0010L    /* file already exists */
  674.         #define EMFILE            0x0019L    /* out of file handles */
  675.         #define EINVAL            0x0024L    /* invalid argument(s) passed */
  676.         #define ENOCMD            0x001AL    /* could not find command processor */
  677.         #define ENOENT            0x0017L    /* file not found */
  678.         #define ENOMEM            0x000DL    /* insufficient memory */
  679.         #define ENOSPC            0x002DL    /* disk is full */
  680.         #define ERANGE            0x0002L    /* path is longer than length of buffer passed */
  681.         #define EOSERR            0x003CL    /* operating system error occurred */
  682.  
  683.         #pragma pack(2)
  684.         struct stat {
  685.             short                st_dev;        /* Drive number */
  686.             unsigned short    st_ino;
  687.             unsigned short    st_mode;        /* see below */
  688.             short                st_nlink;
  689.             short                st_uid;
  690.             short                st_gid;
  691.             short                st_rdev;
  692.             unsigned short    __pad;
  693.             long                st_size;        /* size of file */
  694.             long                st_atime;    /* last access time */
  695.             long                st_mtime;    /* last modification time */
  696.             long                st_ctime;    /* create time */
  697.         };
  698.         #pragma pack()
  699.         /* values for st_mode */
  700.         #define S_IEXEC    0x0040    /* has execute/search permission */
  701.         #define S_IWRITE    0x0080    /* has write permission */
  702.         #define S_IREAD    0x0100    /* has read permission */
  703.         #define S_IFCHR    0x2000    /* a character device */
  704.         #define S_IFDIR    0x4000    /* a directory */
  705.         #define S_IFREG    0x8000    /* a regular file */
  706.  
  707.         extern long access(char *pathname, int mode);
  708.         extern long chdir(char *pathname);
  709.         extern long chdrive(int drive);
  710.         extern long chmod(char *pathname, long pmode);
  711.         extern long chsize(long hf, long size);
  712.         extern long close(long hf);
  713.         extern long creat(char *pathname, long pmode);
  714.         extern long eof(long hf);
  715.         extern long filelength(long hf);
  716.         extern long fstat(long hf, struct stat *buffer);
  717.         extern char *getcwd(char *pathname);
  718.         extern int  getdrive(void);
  719.         extern long lseek(long hf, long offset, long origin);
  720.         extern long mkdir(char *pathname);
  721.         extern long open(char *pathname, long oflags, long pmode);
  722.         extern long read(long hf, void *pBuffer, size_t cBytes);
  723.         extern long remove(char *pathname);
  724.         extern long rmdir(char *pathname);
  725.         extern long searchenv(char *name, char *env_var, char *pathbuf);
  726.         extern long sopen(char *pathname, long oflags, long sflags, long pmode);
  727.         extern long stat(char *pathname, struct stat *buffer);
  728.         extern long tell(long hf);
  729.         extern long write(long hf, void *pBuffer, size_t cBytes);
  730.     #endif
  731.  
  732.     #define __HEX            0x0001U        /* hexadecimal */
  733.     #define __DIGIT        0x0002U        /* decimal      */
  734.     #define __SPACE        0x0004U        /* space         */
  735.     #define __WHITESPACE 0x0008U        /* whitespace  */
  736.     #define __PUNCT         0x0010U        /* punctuation */
  737.     #define __CTRL            0x0020U        /* control      */
  738.     #define __LOWER        0x0040U        /* lowercase    */
  739.     #define __UPPER        0x0080U        /* uppercase    */
  740.     #define __ALPHA        0x0100U        /* alphabetic  */
  741.  
  742.     #define __UPR_NDX    257
  743.     #define __LWR_NDX    514
  744.     extern unsigned short _ctype[];
  745.     #define isalnum(c)    ( _ctype[(c)] & (__ALPHA | __DIGIT) )
  746.     #define isalpha(c)    ( _ctype[(c)] & __ALPHA )
  747.     #define iscntrl(c)    ( _ctype[(c)] & __CTRL )
  748.     #define isdigit(c)    ( _ctype[(c)] & __DIGIT )
  749.     #define isgraph(c)    ( _ctype[(c)] & (__PUNCT | __ALPHA | __DIGIT) )
  750.     #define islower(c)    ( _ctype[(c)] & __LOWER )
  751.     #define isprint(c)    ( _ctype[(c)] & (__PUNCT | __ALPHA | __DIGIT | __SPACE) )
  752.     #define ispunct(c)    ( _ctype[(c)] & __PUNCT )
  753.     #define isspace(c)    ( _ctype[(c)] & __WHITESPACE )
  754.     #define isupper(c)    ( _ctype[(c)] & __UPPER )
  755.     #define isxdigit(c)    ( _ctype[(c)] & __HEX )
  756.     #define tolower(c)    (short)( _ctype[(c) + __LWR_NDX] )
  757.     #define toupper(c)    (short)( _ctype[(c) + __UPR_NDX] )
  758.     #define _tolower(c)    ( (c) + 'a' - 'A' )
  759.     #define _toupper(c)    ( (c) + 'A' - 'a' )
  760.     #define isascii(c)    ( (unsigned short)(c) < 0x80 )
  761.     #define iscsymf(c)    ( isalpha( c ) || (c) == '_' )
  762.     #define iscsym(c)        ( isalnum( c ) || (c) == '_' )
  763.     #define toascii(c)    ( (c) & 0x7f )
  764.  
  765.  #ifdef INCL_MENU
  766.   #include "menu.h"
  767.  #endif
  768.  #ifdef INCL_EVENT
  769.   #include "event.h"
  770.  #endif
  771.  #ifdef INCL_MOUSE
  772.   #include "mouse.h"
  773.  #endif
  774.  
  775.  #ifdef WINDOWS
  776.   extern int printf( char *fmt, ... );
  777.   extern PSZ PromptGetString( PSZ prompt, PSZ buffer, USHORT count );
  778.   extern void PromptSetText( PSZ prompt );
  779.   extern void PromptSetEditText( PSZ text );
  780.   extern PSZ PromptGetText( PSZ buf, LONG buflen );
  781.   extern PSZ PromptGetEditText( PSZ buf, LONG buflen );
  782.  #endif /* WINDOWS */
  783. #endif /* MACRO_H_INCLUDED */
  784.  
  785.  
  786.  
  787. /*
  788. ** End macro header: macro.h
  789. */
  790.