X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fctsupport.h;h=4b42791df6b770ad0d93d3fc95c88dae17563c44;hp=ac3ffe0732ccdbfbd4f675d0770c626df206e40c;hb=4f15a69a3150f180bd93fcbe1c87dbaca92a77ad;hpb=55426f4170ed9dc777c3cec3741e4a59e6eebd38 diff --git a/include/ctsupport.h b/include/ctsupport.h index ac3ffe0..4b42791 100644 --- a/include/ctsupport.h +++ b/include/ctsupport.h @@ -7,9 +7,9 @@ ** Date Started: Dec. 83 ** ** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg +** Copyright (c) 1983-2001 Kevin Rosenberg ** -** $Id: ctsupport.h,v 1.9 2000/12/06 15:17:51 kevin Exp $ +** $Id: ctsupport.h,v 1.26 2003/03/23 18:37:42 kevin Exp $ ** ** ** This program is free software; you can redistribute it and/or modify @@ -33,24 +33,34 @@ #include "config.h" #endif -#ifdef _WIN32 -#define snprintf _snprintf +#ifdef MSVC +#include "msvc_compat.h" #endif #define STR_MAX_LEN 255 #define STR_SIZE STR_MAX_LEN+1 -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#if defined(MSVC) || HAVE_SSTREAM +#include +#else +#include +#endif + +#ifndef TRUE #define TRUE 1 +#endif +#ifndef FALSE #define FALSE 0 +#endif #define OK TRUE -#define ERROR FALSE -#define YES TRUE -#define NO FALSE /*----------------------------------------------------------------------*/ @@ -65,25 +75,7 @@ /*----------------------------------------------------------------------*/ -struct time_st { - int hour, minute, second, ms; -}; - -struct date_st { - int year, month, date, dow; -}; - -struct timedate_st { - struct time_st t; - struct date_st d; -}; - -typedef struct time_st TIME; -typedef struct date_st DATE; -typedef struct timedate_st TIMEDATE; - -/*----------------------------------------------------------------------*/ - +#define ERR_TRACE -1 #define ERR_WARNING 0 #define ERR_SEVERE 1 #define ERR_FATAL 2 @@ -92,7 +84,7 @@ typedef struct timedate_st TIMEDATE; /* codes for open command */ -#if MICROSOFT +#ifdef MSVC #define OPEN_RDONLY O_RDONLY /* other system use standard codes */ #define OPEN_WRONLY O_WRONLY /* for binary */ #define OPEN_RDWR O_RDWR @@ -104,7 +96,7 @@ typedef struct timedate_st TIMEDATE; /*----------------------------------------------------------------------*/ -#ifndef O_BINARY +#if !defined(O_BINARY) && !defined(MSVC) #define O_BINARY (0) #endif @@ -114,7 +106,7 @@ typedef struct timedate_st TIMEDATE; /*----------------------------------------------------------------------*/ -#if defined(MICROSOFT) || ! defined(SIZEOF_INT) +#if defined(MSVC) || ! defined(SIZEOF_INT) #define SIZEOF_INT 4 #define SIZEOF_LONG 4 #define SIZEOF_SHORT 2 @@ -167,27 +159,9 @@ char *str_upper(char *str); /* syserror.cpp */ void sys_error(int severity, const char *msg, ...); -void sys_verror(int severity, const char *msg, va_list arg); +void sys_verror (std::string& strOutput, int severity, const char *msg, va_list arg); void sys_error_level(int severity); - -/* timedate.cpp */ -DATE *td_get_date(DATE *d); -TIME *td_get_time(TIME *t); -double td_current_sec(void); -double td_time_to_sec(TIME *t); -TIME *td_time_sub(const TIME *t1, const TIME *t2, TIME *tdiff); -TIME *td_time_add(const TIME *t1, const TIME *t2, TIME *tsum); -TIME *td_time_copy(TIME *to, const TIME *from); -TIME *td_time_norm(TIME *t); -void td_get_tmdt(TIMEDATE *td); -const char *td_str_tmdt(const TIMEDATE *td); -const char *td_str_time(const TIME *t); -const char *td_str_stime(const TIME *t); -const char *td_str_date(const DATE *d); -char *td_str_cdate(DATE *d); -char *td_month_name(int n); -char *td_day_name(int n); - +extern unsigned long int g_lSysErrorMaxCount; // Math Section @@ -222,9 +196,30 @@ template inline T nearest (double x) { return (x > 0 ? static_cast(x+0.5) : static_cast(x-0.5)); } -inline int imax (int a, int b) -{ return (a >= b ? a : b); } - +template +inline T maxValue (T x, T y) +{ return (x > y ? x : y); } + +inline bool isEven (int n) +{ return (n % 2) == 0; } + +inline bool isOdd (int n) +{ return (n % 2) != 0; } + +#if 0 +inline bool isEven (long n) +{ return (n % 2) == 0; } + +inline bool isOdd (long n) +{ return (n % 2) != 0; } +#endif + +inline int imax (int a, int b) +{ return (a >= b ? a : b); } + +inline double dmax (double a, double b) +{ return (a >= b ? a : b); } + template inline T clamp (T value, T lowerBounds, T upperBounds) { return (value >= upperBounds ? upperBounds : (value <= lowerBounds ? lowerBounds : value )); } @@ -272,6 +267,7 @@ void scale2d (double x[], double y[], int pts, double xfact, double yfact); // mathfuncs.cpp double normalizeAngle (double theta); double integrateSimpson (const double xmin, const double xmax, const double *y, const int np); +void vectorNumericStatistics (std::vector vec, const int nPoints, double& min, double& max, double& mean, double& mode, double& median, double& stddev); /*----------------------------------------------------------------------*/ @@ -308,8 +304,8 @@ unsigned int cio_kb_waitc(const char *astr, int beep); // ASCII Section #define BACKSPACE 8 -#define LF 0x0A -#define CR 0x0D +// #define LF 0x0A +// #define CR 0x0D #define BELL 0x07 #define SQUOTE '\'' @@ -345,4 +341,4 @@ unsigned int cio_kb_waitc(const char *astr, int beep); #define PERIOD '.' #define VERTBAR '|' -#endif /* #ifndef ASCII_H */ +#endif /* #ifndef CTSUPPORT_H */