mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-14 03:37:16 +01:00
317 lines
13 KiB
C++
317 lines
13 KiB
C++
|
#ifndef _LIBRARY_SYSENV_HPP_
|
||
|
#define _LIBRARY_SYSENV_HPP_
|
||
|
|
||
|
// ------------------------------------------------------------------------------------------------
|
||
|
#include "Base/Shared.hpp"
|
||
|
#include "Base/Buffer.hpp"
|
||
|
|
||
|
// ------------------------------------------------------------------------------------------------
|
||
|
namespace SqMod {
|
||
|
|
||
|
/* ------------------------------------------------------------------------------------------------
|
||
|
* This class provides access to environment variables and some general system information.
|
||
|
*/
|
||
|
struct SysEnv
|
||
|
{
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Default constructor. (disabled)
|
||
|
*/
|
||
|
SysEnv() = delete;
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Copy constructor. (disabled)
|
||
|
*/
|
||
|
SysEnv(const SysEnv &) = delete;
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Move constructor. (disabled)
|
||
|
*/
|
||
|
SysEnv(SysEnv &&) = delete;
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Destructor. (disabled)
|
||
|
*/
|
||
|
~SysEnv() = delete;
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Copy assignment operator. (disabled)
|
||
|
*/
|
||
|
SysEnv & operator = (const SysEnv &) = delete;
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Move assignment operator. (disabled)
|
||
|
*/
|
||
|
SysEnv & operator = (SysEnv &&) = delete;
|
||
|
|
||
|
public:
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Returns true if an environment variable with the given name is defined.
|
||
|
*/
|
||
|
static bool Has(CCStr name);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Returns true if an environment variable with the given name is defined.
|
||
|
*/
|
||
|
static bool Has(const String & name);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Returns the value of the environment variable with the given name.
|
||
|
* If the environment variable is undefined, returns fallback value instead.
|
||
|
*/
|
||
|
static void Get(Buffer & b, CCStr name, CCStr fallback);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Returns the value of the environment variable with the given name.
|
||
|
*/
|
||
|
static Buffer Get(CCStr name)
|
||
|
{
|
||
|
return Get(name, nullptr);
|
||
|
}
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Returns the value of the environment variable with the given name.
|
||
|
*/
|
||
|
static Buffer Get(const String & name)
|
||
|
{
|
||
|
return Get(name.c_str(), nullptr);
|
||
|
}
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Returns the value of the environment variable with the given name.
|
||
|
* If the environment variable is undefined, returns fallback value instead.
|
||
|
*/
|
||
|
static Buffer Get(CCStr name, CCStr fallback);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Returns the value of the environment variable with the given name.
|
||
|
* If the environment variable is undefined, returns fallback value instead.
|
||
|
*/
|
||
|
static Buffer Get(CCStr name, const String & fallback)
|
||
|
{
|
||
|
return Get(name, fallback.c_str());
|
||
|
}
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Returns the value of the environment variable with the given name.
|
||
|
* If the environment variable is undefined, returns fallback value instead.
|
||
|
*/
|
||
|
static Buffer Get(const String & name, CCStr fallback)
|
||
|
{
|
||
|
return Get(name.c_str(), fallback);
|
||
|
}
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Returns the value of the environment variable with the given name.
|
||
|
* If the environment variable is undefined, returns fallback value instead.
|
||
|
*/
|
||
|
static Buffer Get(const String & name, const String & fallback)
|
||
|
{
|
||
|
return Get(name.c_str(), fallback.c_str());
|
||
|
}
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Sets the environment variable with the given name to the given value.
|
||
|
*/
|
||
|
static bool Set(CCStr name, CCStr value);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Sets the environment variable with the given name to the given value.
|
||
|
*/
|
||
|
static bool Set(const String & name, const String & value);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Returns the operating system name.
|
||
|
*/
|
||
|
static String OSName();
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Returns the operating system name in a more "user-friendly" way. This only affects Windows.
|
||
|
*/
|
||
|
static String OSDisplayName();
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Returns the operating system version.
|
||
|
*/
|
||
|
static String OSVersion();
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Returns the operating system architecture.
|
||
|
*/
|
||
|
static String OSArchitecture();
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Returns the node (or host) name.
|
||
|
*/
|
||
|
static String NodeName();
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Returns the number of processors installed in the system. If the number of processors
|
||
|
* cannot be determined, returns 1.
|
||
|
*/
|
||
|
static Uint32 ProcessorCount();
|
||
|
|
||
|
protected:
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Make sure that the path in the specified buffer contains a trailing slash.
|
||
|
*/
|
||
|
static void TerminatePath(Buffer & b);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Expands all environment variables contained in the string.
|
||
|
*/
|
||
|
static void ExpandVars(Buffer & b, CCStr pos, CCStr end);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Expands all environment variables contained in the path. Uses the Unix variable style.
|
||
|
*/
|
||
|
static void ExpandPath(Buffer & b, CCStr pos, CCStr end);
|
||
|
|
||
|
public:
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Expands all environment variables contained in the string.
|
||
|
*/
|
||
|
static void ExpandVars(Buffer & b, CCStr str);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Expands all environment variables contained in the string.
|
||
|
*/
|
||
|
static void ExpandVars(Buffer & b, const String & str);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Expands all environment variables contained in the string.
|
||
|
*/
|
||
|
static Buffer ExpandVars(CCStr str);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Expands all environment variables contained in the string.
|
||
|
*/
|
||
|
static Buffer ExpandVars(const String & str);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Expands all environment variables contained in the path. Uses the Unix variable style.
|
||
|
*/
|
||
|
static void ExpandPath(Buffer & b, CCStr path);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Expands all environment variables contained in the path. Uses the Unix variable style.
|
||
|
*/
|
||
|
static void ExpandPath(Buffer & b, const String & path);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Expands all environment variables contained in the path. Uses the Unix variable style.
|
||
|
*/
|
||
|
static Buffer ExpandPath(CCStr path);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Expands all environment variables contained in the path. Uses the Unix variable style.
|
||
|
*/
|
||
|
static Buffer ExpandPath(const String & path);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the current working directory within the specified buffer.
|
||
|
*/
|
||
|
static void WorkingDir(Buffer & b);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the current working directory within a buffer and return it.
|
||
|
*/
|
||
|
static Buffer WorkingDir();
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the user's home directory within the specified buffer.
|
||
|
*/
|
||
|
static void HomeDir(Buffer & b);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the user's home directory within a buffer and return it.
|
||
|
*/
|
||
|
static Buffer HomeDir();
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the user's config directory within the specified buffer.
|
||
|
*/
|
||
|
static void ConfigHomeDir(Buffer & b);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the user's config directory within a buffer and return it.
|
||
|
*/
|
||
|
static Buffer ConfigHomeDir();
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the user's data directory within the specified buffer.
|
||
|
*/
|
||
|
static void DataHomeDir(Buffer & b);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the user's data directory within a buffer and return it.
|
||
|
*/
|
||
|
static Buffer DataHomeDir();
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the user's temporary directory within the specified buffer.
|
||
|
*/
|
||
|
static void TempHomeDir(Buffer & b);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the user's temporary directory within a buffer and return it.
|
||
|
*/
|
||
|
static Buffer TempHomeDir();
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the user's cache directory within the specified buffer.
|
||
|
*/
|
||
|
static void CacheHomeDir(Buffer & b);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the user's cache directory within a buffer and return it.
|
||
|
*/
|
||
|
static Buffer CacheHomeDir();
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the temporary directory within the specified buffer.
|
||
|
*/
|
||
|
static void TempDir(Buffer & b);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the temporary directory within a buffer and return it.
|
||
|
*/
|
||
|
static Buffer TempDir();
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the systemwide config directory within the specified buffer.
|
||
|
*/
|
||
|
static void ConfigDir(Buffer & b);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the systemwide config directory within a buffer and return it.
|
||
|
*/
|
||
|
static Buffer ConfigDir();
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the system directory within the specified buffer.
|
||
|
*/
|
||
|
static void SystemDir(Buffer & b);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the system directory within a buffer and return it.
|
||
|
*/
|
||
|
static Buffer SystemDir();
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the null directory within the specified buffer.
|
||
|
*/
|
||
|
static void NullDir(Buffer & b);
|
||
|
|
||
|
/* --------------------------------------------------------------------------------------------
|
||
|
* Obtain the null directory within a buffer and return it.
|
||
|
*/
|
||
|
static Buffer NullDir();
|
||
|
};
|
||
|
|
||
|
} // Namespace:: SqMod
|
||
|
|
||
|
#endif // _LIBRARY_SYSENV_HPP_
|