aboutsummaryrefslogtreecommitdiffstats
path: root/LibOVR/Src/Kernel/OVR_String_PathUtil.cpp
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2015-03-28 01:43:35 +0100
committerSven Gothel <[email protected]>2015-03-28 01:43:35 +0100
commit4207f9c279e832e3afcb3f5fc6cd8d84cb4cfe4c (patch)
treecf3671058d55b47ab6cb6f36f369928606137628 /LibOVR/Src/Kernel/OVR_String_PathUtil.cpp
parentc29cd1a2fbff6282bab956ad61661ac9d48c4e6e (diff)
Bump OculusVR RIFT SDK to 0.5.0.1vanilla_0.5.0.1
Diffstat (limited to 'LibOVR/Src/Kernel/OVR_String_PathUtil.cpp')
-rw-r--r--LibOVR/Src/Kernel/OVR_String_PathUtil.cpp211
1 files changed, 0 insertions, 211 deletions
diff --git a/LibOVR/Src/Kernel/OVR_String_PathUtil.cpp b/LibOVR/Src/Kernel/OVR_String_PathUtil.cpp
deleted file mode 100644
index 95f3de9..0000000
--- a/LibOVR/Src/Kernel/OVR_String_PathUtil.cpp
+++ /dev/null
@@ -1,211 +0,0 @@
-/************************************************************************************
-
-Filename : OVR_String_PathUtil.cpp
-Content : String filename/url helper function
-Created : September 19, 2012
-Notes :
-
-Copyright : Copyright 2014 Oculus VR, LLC All Rights reserved.
-
-Licensed under the Oculus VR Rift SDK License Version 3.2 (the "License");
-you may not use the Oculus VR Rift SDK except in compliance with the License,
-which is provided at the time of installation or download, or which
-otherwise accompanies this software in either electronic or hard copy form.
-
-You may obtain a copy of the License at
-
-http://www.oculusvr.com/licenses/LICENSE-3.2
-
-Unless required by applicable law or agreed to in writing, the Oculus VR SDK
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-************************************************************************************/
-
-#include "OVR_String.h"
-#include "OVR_UTF8Util.h"
-
-namespace OVR {
-
-//--------------------------------------------------------------------
-// ***** Path-Scanner helper function
-
-// Scans file path finding filename start and extension start, fills in their addess.
-void ScanFilePath(const char* url, const char** pfilename, const char** pext)
-{
- const char* urlStart = url;
- const char *filename = 0;
- const char *lastDot = 0;
-
- uint32_t charVal = UTF8Util::DecodeNextChar(&url);
-
- while (charVal != 0)
- {
- if ((charVal == '/') || (charVal == '\\'))
- {
- filename = url;
- lastDot = 0;
- }
- else if (charVal == '.')
- {
- lastDot = url - 1;
- }
-
- charVal = UTF8Util::DecodeNextChar(&url);
- }
-
- if (pfilename)
- {
- // It was a naked filename
- if (urlStart && (*urlStart != '.') && *urlStart)
- *pfilename = urlStart;
- else
- *pfilename = filename;
- }
-
- if (pext)
- {
- *pext = lastDot;
- }
-}
-
-// Scans till the end of protocol. Returns first character past protocol,
-// 0 if not found.
-// - protocol: 'file://', 'http://'
-const char* ScanPathProtocol(const char* url)
-{
- uint32_t charVal = UTF8Util::DecodeNextChar(&url);
- uint32_t charVal2;
-
- while (charVal != 0)
- {
- // Treat a colon followed by a slash as absolute.
- if (charVal == ':')
- {
- charVal2 = UTF8Util::DecodeNextChar(&url);
- charVal = UTF8Util::DecodeNextChar(&url);
- if ((charVal == '/') && (charVal2 == '\\'))
- return url;
- }
- charVal = UTF8Util::DecodeNextChar(&url);
- }
- return 0;
-}
-
-
-//--------------------------------------------------------------------
-// ***** String Path API implementation
-
-bool String::HasAbsolutePath(const char* url)
-{
- // Absolute paths can star with:
- // - protocols: 'file://', 'http://'
- // - windows drive: 'c:\'
- // - UNC share name: '\\share'
- // - unix root '/'
-
- // On the other hand, relative paths are:
- // - directory: 'directory/file'
- // - this directory: './file'
- // - parent directory: '../file'
- //
- // For now, we don't parse '.' or '..' out, but instead let it be concatenated
- // to string and let the OS figure it out. This, however, is not good for file
- // name matching in library/etc, so it should be improved.
-
- if (!url || !*url)
- return true; // Treat empty strings as absolute.
-
- uint32_t charVal = UTF8Util::DecodeNextChar(&url);
-
- // Fist character of '/' or '\\' means absolute url.
- if ((charVal == '/') || (charVal == '\\'))
- return true;
-
- while (charVal != 0)
- {
- // Treat a colon followed by a slash as absolute.
- if (charVal == ':')
- {
- charVal = UTF8Util::DecodeNextChar(&url);
- // Protocol or windows drive. Absolute.
- if ((charVal == '/') || (charVal == '\\'))
- return true;
- }
- else if ((charVal == '/') || (charVal == '\\'))
- {
- // Not a first character (else 'if' above the loop would have caught it).
- // Must be a relative url.
- break;
- }
-
- charVal = UTF8Util::DecodeNextChar(&url);
- }
-
- // We get here for relative paths.
- return false;
-}
-
-
-bool String::HasExtension(const char* path)
-{
- const char* ext = 0;
- ScanFilePath(path, 0, &ext);
- return ext != 0;
-}
-bool String::HasProtocol(const char* path)
-{
- return ScanPathProtocol(path) != 0;
-}
-
-
-String String::GetPath() const
-{
- const char* filename = 0;
- ScanFilePath(ToCStr(), &filename, 0);
-
- // Technically we can have extra logic somewhere for paths,
- // such as enforcing protocol and '/' only based on flags,
- // but we keep it simple for now.
- return String(ToCStr(), filename ? (filename-ToCStr()) : GetSize());
-}
-
-String String::GetProtocol() const
-{
- const char* protocolEnd = ScanPathProtocol(ToCStr());
- return String(ToCStr(), protocolEnd ? (protocolEnd-ToCStr()) : 0);
-}
-
-String String::GetFilename() const
-{
- const char* filename = 0;
- ScanFilePath(ToCStr(), &filename, 0);
- return String(filename);
-}
-String String::GetExtension() const
-{
- const char* ext = 0;
- ScanFilePath(ToCStr(), 0, &ext);
- return String(ext);
-}
-
-void String::StripExtension()
-{
- const char* ext = 0;
- ScanFilePath(ToCStr(), 0, &ext);
- if (ext)
- {
- *this = String(ToCStr(), ext-ToCStr());
- }
-}
-
-void String::StripProtocol()
-{
- const char* protocol = ScanPathProtocol(ToCStr());
- if (protocol)
- AssignString(protocol, OVR_strlen(protocol));
-}
-
-} // OVR