14#ifndef OSGDB_FILENAMEUTILS
15#define OSGDB_FILENAMEUTILS 1
87 inline bool operator() (
const std::string& lhs,
const std::string& rhs)
const
89 std::string::size_type size_lhs = lhs.size();
90 std::string::size_type size_rhs = rhs.size();
91 std::string::size_type pos_lhs = 0;
92 std::string::size_type pos_rhs = 0;
93 while(pos_lhs<size_lhs && pos_rhs<size_rhs)
95 char c_lhs = lhs[pos_rhs];
96 char c_rhs = rhs[pos_rhs];
97 bool numeric_lhs = lhs[pos_lhs]>=
'0' && lhs[pos_lhs]<=
'9';
98 bool numeric_rhs = rhs[pos_rhs]>=
'0' && rhs[pos_rhs]<=
'9';
99 if (numeric_lhs && numeric_rhs)
101 std::string::size_type start_lhs = pos_lhs;
103 while(pos_lhs<size_lhs && (lhs[pos_lhs]>=
'0' && lhs[pos_lhs]<=
'9')) ++pos_lhs;
105 std::string::size_type start_rhs = pos_rhs;
107 while(pos_rhs<size_rhs && (rhs[pos_rhs]>=
'0' && rhs[pos_rhs]<=
'9')) ++pos_rhs;
109 if (pos_lhs<pos_rhs)
return true;
110 else if (pos_rhs<pos_lhs)
return false;
112 while(start_lhs<pos_lhs && start_rhs<pos_rhs)
114 if (lhs[start_lhs]<rhs[start_rhs])
return true;
115 if (lhs[start_lhs]>rhs[start_rhs])
return false;
122 if (c_lhs<c_rhs)
return true;
123 else if (c_rhs<c_lhs)
return false;
130 return pos_lhs<pos_rhs;
137#define stringcopyfixedsize(DEST, SRC) stringcopy(DEST, SRC, sizeof(DEST));
The osgDB library provides support for reading and writing scene graphs, providing a plugin framework...
Definition Archive:24
OSGDB_EXPORT std::string getNameLessAllExtensions(const std::string &fileName)
Gets file path without all extensions (Ex: /a/b/c.Ext => /a/b/c ; file.ext1.ext2 => file).
OSGDB_EXPORT void stringcopy(char *dest, const char *src, size_t length)
OSGDB_EXPORT std::string getLowerCaseFileExtension(const std::string &filename)
Gets the lowercase extension without dot (Ex: /a/b/c.Ext => ext).
OSGDB_EXPORT bool containsServerAddress(const std::string &filename)
OSGDB_EXPORT std::string getFileExtensionIncludingDot(const std::string &filename)
Gets the extension including dot (Ex: /a/b/c.Ext => .Ext).
OSGDB_EXPORT char getNativePathSeparator()
Get the path separator for the current platform.
OSGDB_EXPORT std::string getRealPath(const std::string &path)
Removes .
OSGDB_EXPORT std::string getStrippedName(const std::string &fileName)
Gets file name without last extension (Ex: /a/b/c.Ext => c ; file.ext1.ext2 => file....
const char UNIX_PATH_SEPARATOR
Definition FileNameUtils:57
OSGDB_EXPORT std::string convertToLowerCase(const std::string &fileName)
OSGDB_EXPORT std::string getFileExtension(const std::string &filename)
Gets the extension without dot (Ex: /a/b/c.Ext => Ext).
OSGDB_EXPORT std::string convertFileNameToWindowsStyle(const std::string &fileName)
Converts forward slashes (/) to back slashes ().
OSGDB_EXPORT std::string convertFileNameToUnixStyle(const std::string &fileName)
Converts back slashes () to forward slashes (/).
OSGDB_EXPORT bool isAbsolutePath(const std::string &path)
Tests if path is absolute, as !getPathRoot(path).empty().
const char WINDOWS_PATH_SEPARATOR
Definition FileNameUtils:58
OSGDB_EXPORT std::string getPathRoot(const std::string &path)
Gets root part of a path ("/" or "C:"), or an empty string if none found.
OSGDB_EXPORT std::string getServerProtocol(const std::string &filename)
OSGDB_EXPORT std::string getNameLessExtension(const std::string &fileName)
Gets file path without last extension (Ex: /a/b/c.Ext => /a/b/c ; file.ext1.ext2 => file....
OSGDB_EXPORT std::string convertFileNameToNativeStyle(const std::string &fileName)
Convert the path to contain only the current platform's path separators.
OSGDB_EXPORT std::string getPathRelative(const std::string &from, const std::string &to)
If 'to' is in a subdirectory of 'from' then this function returns the subpath, otherwise it just retu...
OSGDB_EXPORT std::string getServerFileName(const std::string &filename)
OSGDB_EXPORT std::string getSimpleFileName(const std::string &fileName)
Gets file name with extension (Ex: /a/b/c.Ext => c.Ext).
OSGDB_EXPORT bool isFileNameNativeStyle(const std::string &fileName)
Check if the path contains only the current platform's path separators.
OSGDB_EXPORT bool equalCaseInsensitive(const std::string &lhs, const std::string &rhs)
OSGDB_EXPORT void getPathElements(const std::string &path, std::vector< std::string > &out_elements)
Splits a path into elements between separators (including Windows' root, if any).
OSGDB_EXPORT std::string concatPaths(const std::string &left, const std::string &right)
Concatenates two paths.
OSGDB_EXPORT std::string getFilePath(const std::string &filename)
Gets the parent path from full name (Ex: /a/b/c.Ext => /a/b).
OSGDB_EXPORT std::string getServerAddress(const std::string &filename)
Functor for helping sort filename in alphabetical and numerical order when using in conjunction with ...
Definition FileNameUtils:86
bool operator()(const std::string &lhs, const std::string &rhs) const
Definition FileNameUtils:87
#define OSGDB_EXPORT
Definition Export:39