/* OpenDoors Online Software Programming Toolkit
 * (C) Copyright 1991 - 1999 by Brian Pirie.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *
 *        File: ODCore.h
 *
 * Description: Global functions and variables provide by the odcore.c
 *              module. These core facilities are used throughout OpenDoors,
 *              and are required regardless of what OpenDoors features that
 *              a given program uses.
 *
 *   Revisions: Date          Ver   Who  Change
 *              ---------------------------------------------------------------
 *              Nov 16, 1995  6.00  BP   Created.
 *              Nov 17, 1995  6.00  BP   Use new input queue mechanism.
 *              Dec 24, 1995  6.00  BP   Added abtGreyBlock.
 *              Dec 30, 1995  6.00  BP   Added ODCALL for calling convention.
 *              Jan 01, 1996  6.00  BP   Changed TEXT_SIZE to 49.
 *              Feb 19, 1996  6.00  BP   Changed version number to 6.00.
 *              Mar 03, 1996  6.10  BP   Begin version 6.10.
 *              Sep 01, 1996  6.10  BP   Update output area on od_set_per...().
 */

#ifndef _INC_ODCORE
#define _INC_ODCORE


/* Include other header files that have definitions neede by this one. */
#include "ODInQue.h"
#include "ODCom.h"
#include "ODPlat.h"
#include "ODScrn.h"


/* OpenDoors global initialized flag. */
extern BOOL bODInitialized;

/* Global serial port object handle. */
extern tPortHandle hSerialPort;

/* Global input queue object handle. */
extern tODInQueueHandle hODInputQueue;

/* Reentrancy control. */
extern BOOL bIsCallbackActive;
extern BOOL bShellChatActive;

/* Global working space. */
#define OD_GLOBAL_WORK_STRING_SIZE  1025
extern char szODWorkString[OD_GLOBAL_WORK_STRING_SIZE];

/* Global instance of the text information structure for general use. */
extern tODScrnTextInfo ODTextInfo;

/* Logfile function hooks. */
extern BOOL (*pfLogWrite)(INT);
extern void (*pfLogClose)(INT);

/* od_colour_config() support for od_printf(). */
extern char chColorCheck;
extern char *pchColorEndPos;

/* Status line information. */
extern BYTE btCurrentStatusLine;
extern OD_PERSONALITY_CALLBACK *pfCurrentPersonality;
extern char szDesiredPersonality[33];
typedef BOOL ODCALL SET_PERSONALITY_FUNC(char *pszName);
extern SET_PERSONALITY_FUNC *pfSetPersonality;

/* Commonly used character sequences. */
extern char abtBlackBlock[2];
extern char abtGreyBlock[2];
extern char szBackspaceWithDelete[4];

/* Current output area on screen. */
extern BYTE btOutputTop;
extern BYTE btOutputBottom;


/* Core functions used throughout OpenDoors. */
void ODWaitDrain(tODMilliSec MaxWait);
void ODStoreTextInfo(void);
void ODRestoreTextInfo(void);
void ODStringToName(char *pszToConvert);
BOOL ODPagePrompt(BOOL *pbPausing);


/* Number of built-in configuration file options. */
#define TEXT_SIZE 49

/* Number of user-defined info file options. */
#define LINES_SIZE 25


#endif /* _INC_ODCORE */