00001
00140 #ifndef INC_MI32_MISYSTEM_H
00141 #define INC_MI32_MISYSTEM_H
00142
00143 #ifndef INC_MI32_MISTRING_H
00144 #include <mi32/mistring.h>
00145 #endif
00146
00147 #ifndef INC_MI32_DELEGATE_H
00148 #include <mi32/delegate.h>
00149 #endif
00150
00151 #ifdef MISYSTEMDLL
00152 #define CLASSLIBEXPORT MI_DLLCLASSEXPORT
00153 #else
00154 #define CLASSLIBEXPORT MI_DLLCLASSIMPORT
00155 #endif
00156
00157 class FILEPATH;
00158
00160 class CLASSLIBEXPORT MISYSTEM {
00161 public:
00162 typedef UINT64 THREAD_ID;
00163
00164 enum EXECUTEFLAGS {
00165 EXECUTEFLAG_None = 0x0000,
00166 EXECUTEFLAG_WaitUntilFinished = 0x0001,
00167 EXECUTEFLAG_ShowConsole = 0x0002,
00168 EXECUTEFLAG_NoWaitForInit = 0x0004
00169 };
00170
00171 enum PLATFORM {
00172 PLATFORM_Unknown = 0,
00173
00174 PLATFORM_Win32_PreNT = 0x000100,
00175 PLATFORM_Win95 = (PLATFORM_Win32_PreNT | 0x01),
00176 PLATFORM_Win98 = (PLATFORM_Win32_PreNT | 0x02),
00177 PLATFORM_WinME = (PLATFORM_Win32_PreNT | 0x03),
00178
00179 PLATFORM_Win32_NT = 0x001000,
00180 PLATFORM_WinNT = (PLATFORM_Win32_NT | 0x01),
00181 PLATFORM_Win2000 = (PLATFORM_Win32_NT | 0x02),
00182 PLATFORM_WinXP = (PLATFORM_Win32_NT | 0x03),
00183 PLATFORM_WinServer2003 = (PLATFORM_Win32_NT | 0x04),
00184 PLATFORM_WinVista = (PLATFORM_Win32_NT | 0x05),
00185 PLATFORM_WinServer2008 = (PLATFORM_Win32_NT | 0x06),
00186 PLATFORM_Win7 = (PLATFORM_Win32_NT | 0x07),
00187 PLATFORM_WinServer2008_R2 = (PLATFORM_Win32_NT | 0x08),
00188
00189 PLATFORM_Unix = 0x002000,
00190 PLATFORM_MacOSX = (PLATFORM_Unix | 0x01),
00191 PLATFORM_LinuxX86 = (PLATFORM_Unix | 0x02),
00192 PLATFORM_UnixSun = (PLATFORM_Unix | 0x03),
00193 PLATFORM_UnixSGI = (PLATFORM_Unix | 0x04),
00194 PLATFORM_UnixIBM = (PLATFORM_Unix | 0x05),
00195 };
00196
00197 enum PROCESSRESULT {
00198 PROCESSRESULT_Finished = 0,
00199 PROCESSRESULT_ExitError,
00200 PROCESSRESULT_ExternalStop,
00201 PROCESSRESULT_DiedCoreDump,
00202 PROCESSRESULT_DiedNoCoreDump
00203 };
00204
00206 enum RUNMODE {
00207 RUNMODE_User,
00208 RUNMODE_Job
00209 };
00210
00212 class DISABLE_SUSPEND {
00213 public:
00215 DISABLE_SUSPEND ()
00216 { MISYSTEM::SetSuspendDisabled(true); }
00218 ~DISABLE_SUSPEND ()
00219 { MISYSTEM::SetSuspendDisabled(false); }
00220 };
00221
00224 static void DisableCrashWindow ();
00225
00230 static ERRVALUE ExecuteProcess (
00231 const MISTRING& Process,
00232 EXECUTEFLAGS ExeFlags = EXECUTEFLAG_None,
00233 FastDelegate<void(PTRUINT, PROCESSRESULT)> DelegateOnProcessEnd = 0,
00234 PTRUINT* ProcessID = 0
00235 );
00236
00244 static const MISTRINGLIST& GetCurrentLanguageSet ();
00245
00248 static MISTRING GetCurrentUserName ();
00249
00252 static THREAD_ID GetCurrentThreadID ();
00253
00256 static MISTRING GetEnvironmentValue (
00257 const char *name
00258 );
00259
00263 static MISTRING GetHostDetails ();
00264
00267 static MISTRING GetHostName ();
00268
00273 static int GetNumLogicalProcessors ();
00274
00278 static int GetNumPhysicalProcessors ();
00279
00282 static INT64 GetPhysicalMemoryAvailable ();
00283
00286 static INT64 GetPhysicalMemoryTotal ();
00287
00289 static PLATFORM GetPlatform ();
00290
00292 static UINT32 GetProcessID ();
00293
00295 static RUNMODE GetRunMode ();
00296
00300 static CHAR_ENCODING GetSystemEncoding ();
00301
00304 static const char* GetSystemLanguage ();
00305
00307 static UINT32 GetTickCount ();
00308
00310 static UINT32 GetTicksPerSecond ();
00311
00315 static double GetTimerValue ();
00316
00320 static int GetUserThreadLimit (
00321 bool IncludeLogicalCores
00322 );
00323
00327 static INT64 GetVirtualMemoryAvailable ();
00328
00332 static INT64 GetVirtualMemoryTotal ();
00333
00335 static void Initialize ();
00336
00339 static bool IsMainThread ();
00340
00342 static void KillProcess (int ProcessID);
00343
00346 static const char* LookupISO639_1Code (
00347 const char* iso639_2code
00348 );
00349
00353 static const char* LookupISO639_2Code (
00354 const char* iso639_1code
00355 );
00356
00358 static void SetAsMainThread ();
00359
00362 static void SetCurrentLanguageSet (
00363 const MISTRINGLIST& iso639
00364 );
00365
00369 static ERRVALUE SetCurrentWorkingDirectory (
00370 const FILEPATH& filepath
00371 );
00372
00374 static void SetEnvironmentValue (
00375 const char *name,
00376 const char *value
00377 );
00378
00380 static void SetRunMode (
00381 RUNMODE runmode
00382 );
00383
00388 static void SetSuspendDisabled (
00389 bool disable
00390 );
00391
00394 static void SetUserThreadLimit (
00395 int MaxThreads
00396 );
00397
00399 static void Sleep (
00400 double delay
00401 );
00402
00404 static bool Supports64BitFileSystem ();
00405
00408 static ERRVALUE TranslateSystemError (
00409 ERRVALUE DftErrCode,
00410 INT32& SystemError
00411 );
00412
00413 #ifdef WIN32
00417 static bool WindowsIsUnicode ();
00418
00419
00423 static void* GetMainHINSTANCE();
00424
00426 static void SetMainHINSTANCE(void*);
00427 #endif
00428
00430 static void Uninitialize ();
00431
00432 private:
00433 #ifndef GENERATING_DOXYGEN_OUTPUT
00434 MISYSTEM ();
00435 #endif
00436 };
00437
00438 #ifndef GENERATING_DOXYGEN_OUTPUT
00439 DEFINE_ENUM_OP_BITWISE(MISYSTEM::EXECUTEFLAGS)
00440 #endif
00441
00442 #undef CLASSLIBEXPORT
00443
00444 #endif // INC_MI32_MISYSTEM_H