blob: b1c2540df98d91e6a05a19f71a0b8527dc0b1455 [file] [log] [blame]
/**************************************************************/
/* ********************************************************** */
/* * * */
/* * MISCELLANEOUS * */
/* * * */
/* * $Module: MISC * */
/* * * */
/* * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 * */
/* * MPI fuer Informatik * */
/* * * */
/* * This program is free software; you can redistribute * */
/* * it and/or modify it under the terms of the GNU * */
/* * General Public License as published by the Free * */
/* * Software Foundation; either version 2 of the License, * */
/* * or (at your option) any later version. * */
/* * * */
/* * This program 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 General Public * */
/* * License for more details. * */
/* * * */
/* * You should have received a copy of the GNU General * */
/* * Public License along with this program; if not, write * */
/* * to the Free Software Foundation, Inc., 59 Temple * */
/* * Place, Suite 330, Boston, MA 02111-1307 USA * */
/* * * */
/* * * */
/* $Revision$ * */
/* $State$ * */
/* $Date$ * */
/* $Author$ * */
/* * * */
/* * Contact: * */
/* * Christoph Weidenbach * */
/* * MPI fuer Informatik * */
/* * Stuhlsatzenhausweg 85 * */
/* * 66123 Saarbruecken * */
/* * Email: weidenb@mpi-sb.mpg.de * */
/* * Germany * */
/* * * */
/* ********************************************************** */
/**************************************************************/
/* $RCSfile$ */
#ifndef _MISC_
#define _MISC_
/**************************************************************/
/* Includes */
/**************************************************************/
#define __USE_FIXED_PROTOTYPES__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <limits.h>
#include <stdarg.h>
/**************************************************************/
/* More basic types and macros */
/**************************************************************/
#if defined(TRUE)
#undef TRUE
#endif
#if defined(FALSE)
#undef FALSE
#endif
#ifndef SEEK_END
#define SEEK_END 2
#endif
#define misc_ERROROUT stderr
#define misc_USERERROROUT stderr
typedef enum { FALSE=0, TRUE=1 } BOOL;
#define misc_VERSION "V 2.1"
typedef void* POINTER;
typedef unsigned int NAT;
/* Limits for EARL data types */
#define NAT_MAX UINT_MAX
/**************************************************************/
/* Inline Functions */
/**************************************************************/
#define misc_ReportStandardErrorMessage(Stream) fputs("\n Please report this error via email to spass@mpi-sb.mpg.de including\n the SPASS version, input problem, options, operating system.\n",Stream)
static __inline__ void misc_Error(void)
{
fflush(misc_USERERROROUT);
fflush(stdout);
fflush(stderr);
exit(EXIT_FAILURE);
}
static __inline__ void misc_DumpCore(void)
{
fputs("\n\n", misc_ERROROUT);
fflush(misc_ERROROUT);
fflush(stdout);
fflush(stderr);
abort();
}
static __inline__ void misc_PrintChar(NAT Number, char Character)
{
NAT Counter;
for (Counter = 1; Counter <= Number; Counter++)
putchar(Character);
}
static __inline__ BOOL misc_SmallerThan(int i, int j)
{
return (BOOL)(i < j);
}
#define misc_StartErrorReport() { fflush(stdout); fprintf(misc_ERROROUT,"\n\tError in file %s at line %d\n",__FILE__,__LINE__); }
#define misc_FinishErrorReport() { misc_ReportStandardErrorMessage(misc_ERROROUT); misc_DumpCore(); }
#define misc_StartUserErrorReport() fflush(stdout)
#define misc_FinishUserErrorReport() misc_Error()
/**************************************************************/
/* Functions */
/**************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
void misc_ErrorReport(const char * , ...);
void misc_UserErrorReport(const char * , ...);
void misc_DumpCoreOut(const char*);
int misc_ReturnValue(void);
int misc_Max(int, int);
FILE* misc_OpenFile(const char*, const char*);
void misc_CloseFile(FILE*, const char*);
#ifdef __cplusplus
}
#endif
#endif