Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / muscle / globalswin32.cpp
diff --git a/website/archive/binaries/mac/src/muscle/globalswin32.cpp b/website/archive/binaries/mac/src/muscle/globalswin32.cpp
new file mode 100644 (file)
index 0000000..c690108
--- /dev/null
@@ -0,0 +1,100 @@
+#include "muscle.h"\r
+\r
+#if    WIN32\r
+#include <windows.h>\r
+#include <crtdbg.h>\r
+#include <psapi.h>\r
+#include <float.h>\r
+#include <stdio.h>\r
+\r
+void DebugPrintf(const char *szFormat, ...)\r
+       {\r
+       va_list ArgList;\r
+       char szStr[4096];\r
+\r
+       va_start(ArgList, szFormat);\r
+       vsprintf(szStr, szFormat, ArgList);\r
+\r
+       OutputDebugString(szStr);\r
+       }\r
+\r
+double GetNAN()\r
+       {\r
+       static unsigned long nan[2]={0xffffffff, 0x7fffffff};\r
+       double dNAN = *( double* )nan;\r
+       assert(_isnan(dNAN));\r
+       return dNAN;\r
+       }\r
+\r
+double g_dNAN = GetNAN();\r
+\r
+void chkmem(const char szMsg[])\r
+       {\r
+       if (!_CrtCheckMemory())\r
+               Quit("chkmem(%s)", szMsg);\r
+       }\r
+\r
+void Break()\r
+       {\r
+       if (IsDebuggerPresent())\r
+               DebugBreak();\r
+       }\r
+\r
+const char *GetCmdLine()\r
+       {\r
+       return GetCommandLine();\r
+       }\r
+\r
+static unsigned uPeakMemUseBytes;\r
+\r
+double GetRAMSizeMB()\r
+       {\r
+       MEMORYSTATUS MS;\r
+       GlobalMemoryStatus(&MS);\r
+       return MS.dwAvailPhys/1e6;\r
+       }\r
+\r
+double GetMemUseMB()\r
+       {\r
+       HANDLE hProc = GetCurrentProcess();\r
+       PROCESS_MEMORY_COUNTERS PMC;\r
+       BOOL bOk = GetProcessMemoryInfo(hProc, &PMC, sizeof(PMC));\r
+       assert(bOk);\r
+       //printf("GetMemUseMB()\n");\r
+       //printf("%12u  PageFaultCount\n", (unsigned) PMC.PageFaultCount);\r
+       //printf("%12u  PagefileUsage\n", (unsigned) PMC.PagefileUsage);\r
+       //printf("%12u  PeakPagefileUsage\n", (unsigned) PMC.PeakPagefileUsage);\r
+       //printf("%12u  WorkingSetSize\n", (unsigned) PMC.WorkingSetSize);\r
+       //printf("%12u  PeakWorkingSetSize\n", (unsigned) PMC.PeakWorkingSetSize);\r
+       //printf("%12u  QuotaPagedPoolUsage\n", (unsigned) PMC.QuotaPagedPoolUsage);\r
+       //printf("%12u  QuotaPeakPagedPoolUsage\n", (unsigned) PMC.QuotaPeakPagedPoolUsage);\r
+       //printf("%12u  QuotaNonPagedPoolUsage\n", (unsigned) PMC.QuotaNonPagedPoolUsage);\r
+       //printf("%12u  QuotaPeakNonPagedPoolUsage\n", (unsigned) PMC.QuotaPeakNonPagedPoolUsage);\r
+       unsigned uBytes = (unsigned) PMC.WorkingSetSize;\r
+       if (uBytes > uPeakMemUseBytes)\r
+               uPeakMemUseBytes = uBytes;\r
+       return (uBytes + 500000.0)/1000000.0;\r
+       }\r
+\r
+double GetPeakMemUseMB()\r
+       {\r
+       return (uPeakMemUseBytes + 500000.0)/1000000.0;\r
+       }\r
+\r
+void CheckMemUse()\r
+       {\r
+// Side-effect: sets peak usage in uPeakMemUseBytes\r
+       GetMemUseMB();\r
+       }\r
+\r
+double GetCPUGHz()\r
+       {\r
+       double dGHz = 2.5;\r
+       const char *e = getenv("CPUGHZ");\r
+       if (0 != e)\r
+               dGHz = atof(e);\r
+       if (dGHz < 0.1 || dGHz > 1000.0)\r
+               Quit("Invalid value '%s' for environment variable CPUGHZ", e);\r
+       return dGHz;\r
+       }\r
+#endif // WIN32\r