r309: plotfile changes
[ctsim.git] / include / ctsupport.h
index 5558150baaa25674f6d85079964cb1b770f7e008..cea4f14dc7e86e6211326f400aed3dc22be65030 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: ctsupport.h,v 1.6 2000/07/29 19:50:08 kevin Exp $
+**  $Id: ctsupport.h,v 1.15 2000/12/20 20:08:48 kevin Exp $
 **
 **
 **  This program is free software; you can redistribute it and/or modify
 #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 <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <cstdarg>
+#include <vector>\r
+#include <algorithm>\r
 
 #define TRUE   1
 #define FALSE  0
 #define OK     TRUE
-#define ERROR  FALSE
-#define YES    TRUE
-#define NO     FALSE
 
 /*----------------------------------------------------------------------*/
 
 
 /*----------------------------------------------------------------------*/
 
-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_WARNING    0
 #define ERR_SEVERE     1
 #define ERR_FATAL      2
@@ -92,7 +72,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 +84,7 @@ typedef struct timedate_st TIMEDATE;
 
 /*----------------------------------------------------------------------*/
 
-#ifndef O_BINARY
+#if !defined(O_BINARY) && !defined(MSVC)
 #define O_BINARY (0)
 #endif
 
@@ -114,7 +94,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
@@ -170,28 +150,9 @@ void sys_error(int severity, const char *msg, ...);
 void sys_verror(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);
-
-
 // Math Section
 
-#include <math.h>
+#include <cmath>
 
 #define PI      3.14159265358979323846
 #define HALFPI  1.57079632679489661923 /* PI divided by 2 */
@@ -222,6 +183,12 @@ template<class T>
 inline T nearest (double x)
 { return (x > 0 ? static_cast<T>(x+0.5) : static_cast<T>(x-0.5)); }
 
+inline int imax (int a, int b)\r
+{ return (a >= b ? a : b); }\r
+\r
+inline double dmax (double a, double b)\r
+{ return (a >= b ? a : b); }\r
+\r
 template<class T>
 inline T clamp (T value, T lowerBounds, T upperBounds)
 { return (value >= upperBounds ? upperBounds : (value <= lowerBounds ? lowerBounds : value )); }
@@ -248,11 +215,11 @@ inline void minmax_array (const T* array, const int n, T& min, T& max)
 //////////////////////////////////////////////////////////////
 
 // clip.cpp 
-int clip_rect (double& x1, double& y1, double& x2, double& y2, const double rect[4]);
-int clip_segment (double& x1, double& y1, double& x2, double& y2, const double u, const double v);
-int clip_sector (double& x1, double& y1, double& x2, double& y2, const double u, const double v);
-int clip_circle (double& x1, double& y1, double& x2, double& y2, const double cx, const double cy, const double radius, double t1, double t2);
-int clip_triangle (double& x1, double& y1, double& x2, double& y2, const double u, const double v, const int clip_xaxis);
+bool clip_rect (double& x1, double& y1, double& x2, double& y2, const double rect[4]);
+bool clip_segment (double& x1, double& y1, double& x2, double& y2, const double u, const double v);
+bool clip_sector (double& x1, double& y1, double& x2, double& y2, const double u, const double v);
+bool clip_circle (double& x1, double& y1, double& x2, double& y2, const double cx, const double cy, const double radius, double t1, double t2);
+bool clip_triangle (double& x1, double& y1, double& x2, double& y2, const double u, const double v, const int clip_xaxis);
 
 
 // xform.cpp 
@@ -269,6 +236,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<double> vec, double& min, double& max, double& mean, double& mode, double& median, double& stddev);\r
 
 
 /*----------------------------------------------------------------------*/
@@ -342,4 +310,4 @@ unsigned int cio_kb_waitc(const char *astr, int beep);
 #define PERIOD   '.'
 #define VERTBAR   '|'
 
-#endif /* #ifndef ASCII_H */
+#endif /* #ifndef CTSUPPORT_H */