mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-06-27 20:47:11 +02:00
Untested update to the new plugin API.
Various other changes to the plugin as well.
This commit is contained in:
316
source/Library/System/Environment.hpp
Normal file
316
source/Library/System/Environment.hpp
Normal file
@ -0,0 +1,316 @@
|
||||
#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_
|
Reference in New Issue
Block a user