X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=include%2Fctsupport.h;h=dbf7dec7529c0b7a07e1db8a010428d46d5876d8;hb=e98a8a9d72a7b919debbbc9d1b0f237fe71c0fb3;hp=9a9ca835303e465999a1d1f3534f141c18cdb1e6;hpb=5c6b29ab4885308cc3381af6e0a68f4804956d2e;p=ctsim.git diff --git a/include/ctsupport.h b/include/ctsupport.h index 9a9ca83..dbf7dec 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.18 2000/12/29 15:45:06 kevin Exp $ +** $Id: ctsupport.h,v 1.24 2001/02/02 00:46:38 kevin Exp $ ** ** ** This program is free software; you can redistribute it and/or modify @@ -44,8 +44,15 @@ #include #include #include -#include -#include +#include +#include +#include + +#if defined(MSVC) || HAVE_SSTREAM +#include +#else +#include +#endif #define TRUE 1 #define FALSE 0 @@ -64,7 +71,7 @@ /*----------------------------------------------------------------------*/ -#define ERR_TRACE -1 +#define ERR_TRACE -1 #define ERR_WARNING 0 #define ERR_SEVERE 1 #define ERR_FATAL 2 @@ -184,12 +191,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); } - -inline double dmax (double a, double 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 )); } @@ -237,7 +262,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); +void vectorNumericStatistics (std::vector vec, const int nPoints, double& min, double& max, double& mean, double& mode, double& median, double& stddev); /*----------------------------------------------------------------------*/