| Index: third_party/openvr/src/src/vrcommon/pathtools_public.h
|
| diff --git a/third_party/openvr/src/src/vrcommon/pathtools_public.h b/third_party/openvr/src/src/vrcommon/pathtools_public.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..594903b4aec0df3f2e2b77166eddbfa6f6f3e794
|
| --- /dev/null
|
| +++ b/third_party/openvr/src/src/vrcommon/pathtools_public.h
|
| @@ -0,0 +1,129 @@
|
| +//========= Copyright Valve Corporation ============//
|
| +#pragma once
|
| +
|
| +#include <string>
|
| +#include <stdint.h>
|
| +
|
| +/** Returns the path (including filename) to the current executable */
|
| +std::string Path_GetExecutablePath();
|
| +
|
| +/** Returns the path of the current working directory */
|
| +std::string Path_GetWorkingDirectory();
|
| +
|
| +/** Sets the path of the current working directory. Returns true if this was successful. */
|
| +bool Path_SetWorkingDirectory( const std::string & sPath );
|
| +
|
| +/** returns the path (including filename) of the current shared lib or DLL */
|
| +std::string Path_GetThisModulePath();
|
| +
|
| +/** Returns the specified path without its filename.
|
| +* If slash is unspecified the native path separator of the current platform
|
| +* will be used. */
|
| +std::string Path_StripFilename( const std::string & sPath, char slash = 0 );
|
| +
|
| +/** returns just the filename from the provided full or relative path. */
|
| +std::string Path_StripDirectory( const std::string & sPath, char slash = 0 );
|
| +
|
| +/** returns just the filename with no extension of the provided filename.
|
| +* If there is a path the path is left intact. */
|
| +std::string Path_StripExtension( const std::string & sPath );
|
| +
|
| +/** returns just extension of the provided filename (if any). */
|
| +std::string Path_GetExtension( const std::string & sPath );
|
| +
|
| +/** Returns true if the path is absolute */
|
| +bool Path_IsAbsolute( const std::string & sPath );
|
| +
|
| +/** Makes an absolute path from a relative path and a base path */
|
| +std::string Path_MakeAbsolute( const std::string & sRelativePath, const std::string & sBasePath, char slash = 0 );
|
| +
|
| +/** Fixes the directory separators for the current platform.
|
| +* If slash is unspecified the native path separator of the current platform
|
| +* will be used. */
|
| +std::string Path_FixSlashes( const std::string & sPath, char slash = 0 );
|
| +
|
| +/** Returns the path separator for the current platform */
|
| +char Path_GetSlash();
|
| +
|
| +/** Jams two paths together with the right kind of slash */
|
| +std::string Path_Join( const std::string & first, const std::string & second, char slash = 0 );
|
| +std::string Path_Join( const std::string & first, const std::string & second, const std::string & third, char slash = 0 );
|
| +std::string Path_Join( const std::string & first, const std::string & second, const std::string & third, const std::string &fourth, char slash = 0 );
|
| +std::string Path_Join(
|
| + const std::string & first,
|
| + const std::string & second,
|
| + const std::string & third,
|
| + const std::string & fourth,
|
| + const std::string & fifth,
|
| + char slash = 0 );
|
| +
|
| +
|
| +/** Removes redundant <dir>/.. elements in the path. Returns an empty path if the
|
| +* specified path has a broken number of directories for its number of ..s.
|
| +* If slash is unspecified the native path separator of the current platform
|
| +* will be used. */
|
| +std::string Path_Compact( const std::string & sRawPath, char slash = 0 );
|
| +
|
| +//** Removed trailing slashes */
|
| +std::string Path_RemoveTrailingSlash( const std::string & sRawPath, char slash = 0 );
|
| +
|
| +/** returns true if the specified path exists and is a directory */
|
| +bool Path_IsDirectory( const std::string & sPath );
|
| +
|
| +/** returns true if the specified path represents an app bundle */
|
| +bool Path_IsAppBundle( const std::string & sPath );
|
| +
|
| +/** returns true if the the path exists */
|
| +bool Path_Exists( const std::string & sPath );
|
| +
|
| +/** Helper functions to find parent directories or subdirectories of parent directories */
|
| +std::string Path_FindParentDirectoryRecursively( const std::string &strStartDirectory, const std::string &strDirectoryName );
|
| +std::string Path_FindParentSubDirectoryRecursively( const std::string &strStartDirectory, const std::string &strDirectoryName );
|
| +
|
| +/** Path operations to read or write text/binary files */
|
| +unsigned char * Path_ReadBinaryFile( const std::string &strFilename, int *pSize );
|
| +uint32_t Path_ReadBinaryFile( const std::string &strFilename, unsigned char *pBuffer, uint32_t unSize );
|
| +bool Path_WriteBinaryFile( const std::string &strFilename, unsigned char *pData, unsigned nSize );
|
| +std::string Path_ReadTextFile( const std::string &strFilename );
|
| +bool Path_WriteStringToTextFile( const std::string &strFilename, const char *pchData );
|
| +bool Path_WriteStringToTextFileAtomic( const std::string &strFilename, const char *pchData );
|
| +
|
| +/** Returns a file:// url for paths, or an http or https url if that's what was provided */
|
| +std::string Path_FilePathToUrl( const std::string & sRelativePath, const std::string & sBasePath );
|
| +
|
| +/** Strips off file:// off a URL and returns the path. For other kinds of URLs an empty string is returned */
|
| +std::string Path_UrlToFilePath( const std::string & sFileUrl );
|
| +
|
| +/** Returns the root of the directory the system wants us to store user documents in */
|
| +std::string GetUserDocumentsPath();
|
| +
|
| +#ifndef MAX_UNICODE_PATH
|
| + #define MAX_UNICODE_PATH 32767
|
| +#endif
|
| +
|
| +#ifndef MAX_UNICODE_PATH_IN_UTF8
|
| + #define MAX_UNICODE_PATH_IN_UTF8 (MAX_UNICODE_PATH * 4)
|
| +#endif
|
| +
|
| +//-----------------------------------------------------------------------------
|
| +#if defined(WIN32)
|
| +#define DYNAMIC_LIB_EXT ".dll"
|
| +#ifdef _WIN64
|
| +#define PLATSUBDIR "win64"
|
| +#else
|
| +#define PLATSUBDIR "win32"
|
| +#endif
|
| +#elif defined(OSX)
|
| +#define DYNAMIC_LIB_EXT ".dylib"
|
| +#define PLATSUBDIR "osx32"
|
| +#elif defined(LINUX)
|
| +#define DYNAMIC_LIB_EXT ".so"
|
| +#if defined( LINUX32 )
|
| +#define PLATSUBDIR "linux32"
|
| +#else
|
| +#define PLATSUBDIR "linux64"
|
| +#endif
|
| +#else
|
| +#warning "Unknown platform for PLATSUBDIR"
|
| +#define PLATSUBDIR "unknown_platform"
|
| +#endif
|
|
|