/*   ncbimain.h
* ===========================================================================
*
*                            PUBLIC DOMAIN NOTICE                          
*               National Center for Biotechnology Information
*                                                                          
*  This software/database is a "United States Government Work" under the   
*  terms of the United States Copyright Act.  It was written as part of    
*  the author's official duties as a United States Government employee and 
*  thus cannot be copyrighted.  This software/database is freely available 
*  to the public for use. The National Library of Medicine and the U.S.    
*  Government have not placed any restriction on its use or reproduction.  
*                                                                          
*  Although all reasonable efforts have been taken to ensure the accuracy  
*  and reliability of the software and data, the NLM and the U.S.          
*  Government do not and cannot warrant the performance or results that    
*  may be obtained by using this software or data. The NLM and the U.S.    
*  Government disclaim all warranties, express or implied, including       
*  warranties of performance, merchantability or fitness for any particular
*  purpose.                                                                
*                                                                          
*  Please cite the author in any work or product based on this material.   
*
* ===========================================================================
*
* File Name:  ncbimain.h
*
* Author:  Gish, Kans, Ostell, Schuler
*
* Version Creation Date:   7/7/91
*
* $Revision: 2.1 $
*
* File Description: 
*   	prototypes for portable string routines
*
* Modifications:  
* --------------------------------------------------------------------------
* Date     Name        Description of modification
* -------  ----------  -----------------------------------------------------
* 7/7/91   Kans        Multiple configuration files, get and set functions
* 04-15-93 Schuler     Changed _cdecl to LIBCALL
*
*
* ==========================================================================
*/

#ifndef _NCBIMAIN_
#define _NCBIMAIN_

#ifdef __cplusplus
extern "C" {
#endif

typedef struct mainargs {
  char *prompt;            /* prompt for field */
  char *defaultvalue;      /* default */
  char *from;              /* range or datalink type */
  char *to;
  Nlm_Boolean	optional;
  Nlm_Char	tag;               /* argument on command line */
  Nlm_Int1	type;              /* type of value */
  Nlm_FloatHi	floatvalue;
  Nlm_Int4	intvalue;
  CharPtr	strvalue;
} Nlm_Arg, * Nlm_ArgPtr;      /* (*) not PNTR for MS Windows */
					/* type is:
						 0 = not set (invalid)
						 1 = Boolean
						 2 = Int
						 3 = Float
						 4 = String
						 5 = file in
						 6 = file out
						 7 = datalink input (type in from)
						 8 = datalink output
					  */
#define Args Nlm_Arg
#define ArgPtr Nlm_ArgPtr
#define ARG_BOOLEAN 1
#define ARG_INT 2
#define ARG_FLOAT 3
#define ARG_STRING 4
#define ARG_FILE_IN 5
#define ARG_FILE_OUT 6
#define ARG_DATA_IN 7
#define ARG_DATA_OUT 8

extern Nlm_Int2 Nlm_Main PROTO((void));
extern Nlm_Boolean Nlm_GetArgs PROTO((Nlm_CharPtr progname, Nlm_Int2 numargs, Nlm_ArgPtr ap));
extern Nlm_Boolean LIBCALL Nlm_FindPath PROTO((Nlm_CharPtr file, Nlm_CharPtr section, Nlm_CharPtr type, Nlm_CharPtr buf, Nlm_Int2 buflen));
extern Nlm_Int2 LIBCALL Nlm_GetAppParam PROTO((Nlm_CharPtr file, Nlm_CharPtr section, Nlm_CharPtr type, Nlm_CharPtr dflt, Nlm_CharPtr buf, Nlm_Int2 buflen));
extern Nlm_Boolean LIBCALL Nlm_SetAppParam PROTO((Nlm_CharPtr file, Nlm_CharPtr section, Nlm_CharPtr type, Nlm_CharPtr value));
extern void LIBCALL Nlm_FreeConfigStruct PROTO((void));

#define Main Nlm_Main
#define GetArgs Nlm_GetArgs
#define FindPath Nlm_FindPath
#define GetAppParam Nlm_GetAppParam
#define SetAppParam Nlm_SetAppParam
#define FreeConfigStruct Nlm_FreeConfigStruct

#ifdef __cplusplus
}
#endif

#endif
