annotate base/System.cpp @ 127:514ebb0c5c6c

* add mod/modf and princarg/princargf to system header (for now)
author Chris Cannam
date Mon, 26 Jun 2006 16:08:01 +0000
parents ac89a106f155
children
rev   line source
Chris@49 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@0 2
Chris@0 3 /*
Chris@52 4 Sonic Visualiser
Chris@52 5 An audio file viewer and annotation editor.
Chris@52 6 Centre for Digital Music, Queen Mary, University of London.
Chris@52 7 This file copyright 2006 Chris Cannam.
Chris@0 8
Chris@52 9 This program is free software; you can redistribute it and/or
Chris@52 10 modify it under the terms of the GNU General Public License as
Chris@52 11 published by the Free Software Foundation; either version 2 of the
Chris@52 12 License, or (at your option) any later version. See the file
Chris@52 13 COPYING included with this distribution for more information.
Chris@0 14 */
Chris@0 15
Chris@0 16 #include "System.h"
Chris@0 17
Chris@98 18 #ifndef _WIN32
Chris@101 19 #include <signal.h>
Chris@98 20 #endif
Chris@98 21
Chris@98 22 #include <iostream>
Chris@98 23
Chris@0 24 #ifdef _WIN32
Chris@0 25
Chris@0 26 extern "C" {
Chris@0 27
Chris@103 28 void usleep(unsigned long usec)
Chris@103 29 {
Chris@105 30 ::Sleep(usec / 1000);
Chris@103 31 }
Chris@103 32
Chris@0 33 void gettimeofday(struct timeval *tv, void *tz)
Chris@0 34 {
Chris@0 35 union {
Chris@0 36 long long ns100;
Chris@0 37 FILETIME ft;
Chris@0 38 } now;
Chris@0 39
Chris@105 40 ::GetSystemTimeAsFileTime(&now.ft);
Chris@0 41 tv->tv_usec = (long)((now.ns100 / 10LL) % 1000000LL);
Chris@0 42 tv->tv_sec = (long)((now.ns100 - 116444736000000000LL) / 10000000LL);
Chris@0 43 }
Chris@0 44
Chris@0 45 }
Chris@0 46
Chris@0 47 #endif
Chris@98 48
Chris@98 49 ProcessStatus
Chris@98 50 GetProcessStatus(int pid)
Chris@98 51 {
Chris@101 52 #ifdef _WIN32
Chris@103 53 HANDLE handle = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid);
Chris@101 54 if (!handle) {
Chris@101 55 return ProcessNotRunning;
Chris@101 56 } else {
Chris@101 57 CloseHandle(handle);
Chris@101 58 return ProcessRunning;
Chris@101 59 }
Chris@101 60 #else
Chris@101 61 if (kill(getpid(), 0) == 0) {
Chris@101 62 if (kill(pid, 0) == 0) {
Chris@101 63 return ProcessRunning;
Chris@101 64 } else {
Chris@101 65 return ProcessNotRunning;
Chris@101 66 }
Chris@101 67 } else {
Chris@98 68 return UnknownProcessStatus;
Chris@98 69 }
Chris@98 70 #endif
Chris@98 71 }
Chris@98 72
Chris@127 73 double mod(double x, double y) { return x - (y * floor(x / y)); }
Chris@127 74 float modf(float x, float y) { return x - (y * floorf(x / y)); }
Chris@127 75
Chris@127 76 double princarg(double a) { return mod(a + M_PI, -2 * M_PI) + M_PI; }
Chris@127 77 float princargf(float a) { return modf(a + M_PI, -2 * M_PI) + M_PI; }
Chris@127 78