// Widely used definitions. // // File: basic.cc // Author: course // Version: 2 // #include "basic.h" #include // Set_new_handler. #ifndef _INCLUDE_HPUX_SOURCE #include // Tv_sec and tv_usec. #include // Struct rusage. extern "C" { int getrusage (int, struct rusage *); } // The CPU time function: // // Returns amount of CPU time used so far by this // program, in seconds. // double cputime(void) { struct rusage resources; getrusage (RUSAGE_SELF, &resources); return ( (double) resources.ru_utime.tv_sec + 1.0e-6 * (double) resources.ru_utime.tv_usec ); } #else // if _INCLUDE_HPUX_SOURCE #include #include // The CPU time function: // // Returns amount of CPU time used so far by this // program, in seconds. // double cputime(void) { struct tms tms_buffer; times (&tms_buffer); static double clock_period = 1.0 / sysconf (_SC_CLK_TCK); return tms_buffer.tms_utime * clock_period; } #endif // Handler to be called when out of memory if // out-of-memory error enabled. // void out_of_memory_handler (void) { error ("Out of Memory"); } // Enable or disable the calling of error by memory // allocation if out of memory. Enable calling error // if enable_flag true; disable if false. // void enable_out_of_memory_error (bool enable_flag) { if (enable_flag) set_new_handler (&out_of_memory_handler); else set_new_handler (0); }