/*
 ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл
 лл                                                                         лл
 лл                    Copyright (C) 1999 Symantec Corp.                    лл
 лл                           All Rights Reserved                           лл
 лл                                                                         лл
 лл      Information in this file is proprietary and confidential, and      лл
 лл        may not be copied, reproduced or distributed in any manner       лл
 лл     without the express written permission of Symantec Corp             лл
 лл                                                                         лл
 ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл
*/

#ifndef _INC_CALLBACK
   #define _INC_CALLBACK

#ifndef  _INC_DDIR
   #include "ddirdlx.h"
#endif

typedef struct  tagPW_CALLBACK_STRUCT
{
   MAKEPROC FlushCommW;
   MAKEPROC ReadCommW;
   MAKEPROC WriteCommW;
   MAKEPROC GetCommErrorW;
   MAKEPROC GetCommErrorX;
   MAKEPROC SetCommBreakW;
   MAKEPROC ClearCommBreakW;
   MAKEPROC SetCommStateW;
   MAKEPROC GetCommStateW;
   MAKEPROC EscapeCommFunctionW;
   MAKEPROC UngetCommCharW;

   MAKEPROC EndXfer;                   // End of xfer
   MAKEPROC FeedDisplay;               // Feed gif viewer a byte
   MAKEPROC startgif;                  // Start gif viewer
   MAKEPROC ShowXferBox;               // Display file xfer status box
   MAKEPROC TimeToGo;                  // Update time of xfer in xfer status box
   MAKEPROC StatusLineDirect;          // Status line function call

   MAKEPROC AddToTXBuf;
   MAKEPROC RecordModeChange;
   MAKEPROC RecordModeChar;
   MAKEPROC SetOverSprayColor;
   MAKEPROC NewPage;
   MAKEPROC DisplayStatusMessage;
   MAKEPROC GetSelectionEOLString;
   MAKEPROC GetLButtonDClickAction;
   MAKEPROC SetMouseString;

   MAKEPROC flclear;
   MAKEPROC fleof;
   MAKEPROC flerror;
   MAKEPROC flflush;
   MAKEPROC flgetc;
   MAKEPROC flgetc0;
   MAKEPROC flgets;
   MAKEPROC flputc;
   MAKEPROC flputs;
   MAKEPROC flread;
   MAKEPROC flrewind;
   MAKEPROC flseek;
   MAKEPROC fltell;
   MAKEPROC flwrite;
   MAKEPROC ProcessFileName;
}  PW_CALLBACK_STRUCT ;

typedef PW_CALLBACK_STRUCT FAR * LPPW_CALLBACK_STRUCT ;

/*
лппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппл
л Exported callback functions with associated typedefs for casting.    л
лммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммл
*/

#ifdef  __cplusplus
extern "C" {
#endif

EXPORTED int     CALLBACK     P_SetCommStateW            ( DCB FAR *dcbw );
EXPORTED int     CALLBACK     P_GetCommStateW            ( COMM_HANDLE hCid, DCB FAR *dcbw );
EXPORTED int     CALLBACK     P_ReadCommW                ( COMM_HANDLE hCid, LPSTR lptr, int cnt );
EXPORTED int     CALLBACK     P_WriteCommW               ( COMM_HANDLE hCid, LPSTR lptr, int cnt );
EXPORTED int     CALLBACK     P_GetCommErrorW            ( COMM_HANDLE hCid);
EXPORTED int     CALLBACK     P_GetCommErrorX            ( COMM_HANDLE hCid, COMSTAT FAR *lpcs);
EXPORTED int     CALLBACK     P_SetCommBreakW            ( COMM_HANDLE hCid );
EXPORTED int     CALLBACK     P_ClearCommBreakW          ( COMM_HANDLE hCid );
EXPORTED int     CALLBACK     P_FlushCommW               ( COMM_HANDLE hCid, int which );
EXPORTED int     CALLBACK     P_EscapeCommFunctionW      ( COMM_HANDLE hCid, int j);

typedef int     (CALLBACK     *T_SetCommStateW)          ( DCB FAR *dcbw );
typedef int     (CALLBACK     *T_GetCommStateW)          ( COMM_HANDLE hCid, DCB FAR *dcbw );
typedef int     (CALLBACK     *T_ReadCommW)              ( COMM_HANDLE hCid, LPSTR lptr, int cnt );
typedef int     (CALLBACK     *T_WriteCommW)             ( COMM_HANDLE hCid, LPSTR lptr, int cnt );
typedef int     (CALLBACK     *T_GetCommErrorW)          ( COMM_HANDLE hCid );
typedef int     (CALLBACK     *T_GetCommErrorX)          ( COMM_HANDLE hCid, COMSTAT FAR *lpcs);
typedef int     (CALLBACK     *T_SetCommBreakW)          ( COMM_HANDLE hCid );
typedef int     (CALLBACK     *T_ClearCommBreakW)        ( COMM_HANDLE hCid );
typedef int     (CALLBACK     *T_FlushCommW)             ( COMM_HANDLE hCid, int which );
typedef int     (CALLBACK     *T_EscapeCommFunctionW)    ( COMM_HANDLE hCid, int j);

EXPORTED void    CALLBACK     P_EndXfer                  ( void);
EXPORTED BOOL    CALLBACK     P_FeedDisplay              ( BYTE);
EXPORTED void    CALLBACK     P_ShowXferBox              ( int);
EXPORTED BOOL    CALLBACK     P_checkforgif              ( LPSTR);
EXPORTED void    CALLBACK     P_startgif                 ( void);
EXPORTED int     CALLBACK     P_gifstate                 ( int);
EXPORTED void    CALLBACK     P_StatusLineDirect         ( LPSTR );
EXPORTED void    CALLBACK     P_TimeToGo                 ( void);
EXPORTED void    CALLBACK     P_XferFail                 ( void);
EXPORTED void    CALLBACK     P_XferSuccess              ( void);

typedef void    (CALLBACK     *T_EndXfer)                ( void);
typedef BOOL    (CALLBACK     *T_FeedDisplay)            ( BYTE);
typedef void    (CALLBACK     *T_ShowXferBox)            ( int);
typedef void    (CALLBACK     *T_startgif)               ( void);
typedef void    (CALLBACK     *T_StatusLineDirect)       ( LPSTR);
typedef void    (CALLBACK     *T_TimeToGo)               ( void);

EXPORTED int     CALLBACK     P_AddToTXBuf               ( LPSTR, int, unsigned char, unsigned char);
EXPORTED void    CALLBACK     P_RecordModeChar           ( unsigned char);
EXPORTED void    CALLBACK     P_RecordModeChange         ( void);
EXPORTED void    CALLBACK     P_SetOverSprayColor        ( COLORREF);
EXPORTED void    CALLBACK     P_NewPage                  ( void);
EXPORTED void    CALLBACK     P_DisplayStatusMessage     ( LPSTR, BOOL );
EXPORTED LPSTR   CALLBACK     P_GetSelectionEOLString    ( void);
EXPORTED int     CALLBACK     P_GetLButtonDClickAction   ( void);
EXPORTED int     CALLBACK     P_SetMouseString           ( int, LPSTR, int);

typedef int     (CALLBACK     *T_AddToTXBuf)             ( LPSTR, int, unsigned char, unsigned char);
typedef int     (CALLBACK     *T_chkrxwhen)              ( int ch);
typedef void    (CALLBACK     *T_RecordModeChar)         ( unsigned char);
typedef void    (CALLBACK     *T_RecordModeChange)       ( void);
typedef void    (CALLBACK     *T_SetOverSprayColor)      ( COLORREF);
typedef void    (CALLBACK     *T_NewPage)                ( void);
typedef void    (CALLBACK     *T_DisplayStatusMessage)   ( LPSTR, BOOL );
typedef LPSTR   (CALLBACK     *T_GetSelectionEOLString)  ( void);
typedef int     (CALLBACK     *T_GetLButtonDClickAction) ( void);
typedef int     (CALLBACK     *T_SetMouseString)         ( int, LPSTR, int);

EXPORTED int     CALLBACK     P_flflush                  ( FBPTR);
EXPORTED int     CALLBACK     P_flseek                   ( FBPTR, long, int);
EXPORTED VOID    CALLBACK     P_flrewind                 ( FBPTR);
EXPORTED long    CALLBACK     P_fltell                   ( FBPTR);
EXPORTED VOID    CALLBACK     P_flclear                  ( FBPTR);                             // Like fclearerr
EXPORTED int     CALLBACK     P_fleof                    ( FBPTR);
EXPORTED int     CALLBACK     P_flerror                  ( FBPTR);
EXPORTED int     CALLBACK     P_flgetc                   ( FBPTR);
EXPORTED int     CALLBACK     P_flgetc0                  ( FBPTR);
EXPORTED int     CALLBACK     P_flputc                   ( int, FBPTR);
EXPORTED UINT    CALLBACK     P_flread                   ( VOID FAR *, UINT, UINT, FBPTR);
EXPORTED UINT    CALLBACK     P_flwrite                  ( VOID FAR *, UINT, UINT, FBPTR);
EXPORTED unsigned char FAR* CALLBACK P_flgets            ( unsigned char FAR *, int, FBPTR);
EXPORTED int     CALLBACK     P_flputs                   ( unsigned char FAR *, FBPTR);

typedef int     (CALLBACK     *T_flflush)                ( FBPTR);
typedef int     (CALLBACK     *T_flseek)                 ( FBPTR, long, int);
typedef VOID    (CALLBACK     *T_flrewind)               ( FBPTR);
typedef long    (CALLBACK     *T_fltell)                 ( FBPTR);
typedef VOID    (CALLBACK     *T_flclear)                ( FBPTR);                              // Like fclearerr
typedef int     (CALLBACK     *T_fleof)                  ( FBPTR);
typedef int     (CALLBACK     *T_flerror)                ( FBPTR);
typedef int     (CALLBACK     *T_flgetc)                 ( FBPTR);
typedef int     (CALLBACK     *T_flgetc0)                ( FBPTR);
typedef int     (CALLBACK     *T_flputc)                 ( int, FBPTR);
typedef UINT    (CALLBACK     *T_flread)                 ( unsigned char FAR *, UINT, UINT, FBPTR);
typedef UINT    (CALLBACK     *T_flwrite)                ( unsigned char FAR *, UINT, UINT, FBPTR);
typedef unsigned char FAR*(CALLBACK* T_flgets)           ( unsigned char FAR *, int, FBPTR);
typedef int     (CALLBACK    *T_flputs)                  ( unsigned char FAR *, FBPTR);

EXPORTED int     CALLBACK     P_ProcessFileName          ( LPSTR ptr, BOOL Unique, BOOL OpenFile, LPSTR FullPath, LPSTR FullName);
typedef int     (CALLBACK     *LPGETCOPYRIGHTLOCATION)   ( LPSTR *, LPSTR *);
typedef char*   (CALLBACK     *LPGETLPSTR)               ( void);

/*
ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл
лл                                                                   лл
лл Functions Exported but not in the callback structure              лл
лл                                                                   лл
ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл
*/

EXPORTED void        CALLBACK pwUpdateConnectLog(LPSTR lpszStatus, LPSTR lpszElapsed);
EXPORTED int         CALLBACK P_flclose(FBPTR temp);
EXPORTED LPVOID      CALLBACK P_ReadNamedStruct(int Table, int index);
EXPORTED long        CALLBACK P_PWGetSystemTime( void);
EXPORTED BOOL        CALLBACK P_FileRxTX(int rcv, LPSTR ptr);
EXPORTED BOOL        CALLBACK P_FLFileRxTX(int rcv, LPSTR ptr);
EXPORTED void        CALLBACK P_LastError(int i);
EXPORTED void        CALLBACK P_StatusLine(WORD StringID, LPSTR pName);
EXPORTED char FAR*   CALLBACK P_TranslateString(char FAR *InString, UINT8 XlateType, UINT8 DisplayType, UINT16 MaxLength);
EXPORTED void        CALLBACK P_TerminalDisplay(LPSTR,int,BOOL,int);
EXPORTED void        CALLBACK P_DeletePartialFile(void);
EXPORTED HWND        CALLBACK P_wwwDisplayStatus(LPSTR);

typedef int (FAR PASCAL* LPFN_GRXCALLBACK)(int, LPSTR, int, int);
EXPORTED BOOL        CALLBACK P_GRXQueueEmpty(void);
EXPORTED int         CALLBACK P_GRXGet(LPSTR lpStr, LPSTR lpSrc, int n);
EXPORTED int         CALLBACK P_GRXRegisterString(LPSTR lpString, int Count, BYTE bFlags, DWORD dwTime, LPFN_GRXCALLBACK f);
EXPORTED int         CALLBACK P_GRXRegisterSpecialString(LPSTR lpString, int Count, LPSTR lpSpecial, BYTE bFlags,DWORD dwTime, LPFN_GRXCALLBACK f);
EXPORTED void        CALLBACK P_GRXUnregisterString(int i);
EXPORTED void        CALLBACK P_GRXEnableString(int index, BOOL bEnable);
EXPORTED int         CALLBACK P_GRXGetNumAvailable(void);
EXPORTED void        CALLBACK P_GatherAndMatchInputStream(BYTE Filter);

EXPORTED LONG        CALLBACK P_SelectComboEntry( HWND hCtl, WPARAM select, WPARAM gettext, LPSTR szName );

EXPORTED BOOL        CALLBACK P_GetCDState(void);

EXPORTED HINSTANCE   CALLBACK P_GetInstanceHandle(void);

EXPORTED LPDEVMODE   CALLBACK P_GetPWDevMode(void);
EXPORTED LPDEVNAMES  CALLBACK P_GetPWDevNames(void);
EXPORTED int         CALLBACK P_LocalEchoAddToQueue( LPSTR, int, BYTE);
EXPORTED BOOL        CALLBACK P_SendRec( WORD type, int showxfer, int xferindex, LPSTR fileptr, LPSTR IndMainframeFilename);
EXPORTED void        CALLBACK P_UpdateRowColDisplay( LPPOINT lpptNewPos );
EXPORTED int         CALLBACK P_GetPWPrinterSetup(PRINTERSET FAR* lpPRINTERSET );

EXPORTED int         CALLBACK P_PWDialogBox(HINSTANCE, LPCSTR, HWND, DLGPROC);
EXPORTED int         CALLBACK P_PWDialogBoxParam(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM);
EXPORTED BOOL        CALLBACK P_CreateAndVerifyDir( HWND hDlg, int id, LPSTR lptr );

EXPORTED double      CALLBACK P_getfree(LPSTR freepath);
EXPORTED void        CALLBACK PwSetdial_entry(int val);
EXPORTED void        CALLBACK CheckDLPAutoDownLoadString(void);

#ifdef _INC_PD
EXPORTED PROTOSET *  CALLBACK PWGetPROTOSET(void);
#endif

#ifdef  __cplusplus
}
#endif

#endif // _INC_CALLBACK
