14 #ifndef OSGDB_FILENAMEUTILS
15 #define OSGDB_FILENAMEUTILS 1
17 #include <osgDB/Export>
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;
OSGDB_EXPORT bool containsServerAddress(const std::string &filename)
OSGDB_EXPORT std::string getFileExtensionIncludingDot(const std::string &filename)
OSGDB_EXPORT std::string getLowerCaseFileExtension(const std::string &filename)
bool operator()(const std::string &lhs, const std::string &rhs) const
OSGDB_EXPORT std::string convertFileNameToNativeStyle(const std::string &fileName)
OSGDB_EXPORT std::string getFileExtension(const std::string &filename)
OSGDB_EXPORT std::string convertFileNameToWindowsStyle(const std::string &fileName)
OSGDB_EXPORT char getNativePathSeparator()
OSGDB_EXPORT std::string convertFileNameToUnixStyle(const std::string &fileName)
OSGDB_EXPORT bool isFileNameNativeStyle(const std::string &fileName)
const char UNIX_PATH_SEPARATOR
const char WINDOWS_PATH_SEPARATOR
OSGDB_EXPORT void getPathElements(const std::string &path, std::vector< std::string > &out_elements)
OSGDB_EXPORT std::string getServerFileName(const std::string &filename)
OSGDB_EXPORT std::string getPathRelative(const std::string &from, const std::string &to)
OSGDB_EXPORT std::string getRealPath(const std::string &path)
OSGDB_EXPORT bool equalCaseInsensitive(const std::string &lhs, const std::string &rhs)
OSGDB_EXPORT std::string getServerAddress(const std::string &filename)
OSGDB_EXPORT bool isAbsolutePath(const std::string &path)
OSGDB_EXPORT std::string getServerProtocol(const std::string &filename)
OSGDB_EXPORT std::string getStrippedName(const std::string &fileName)
OSGDB_EXPORT std::string getFilePath(const std::string &filename)
OSGDB_EXPORT std::string concatPaths(const std::string &left, const std::string &right)
OSGDB_EXPORT std::string getPathRoot(const std::string &path)
OSGDB_EXPORT std::string getSimpleFileName(const std::string &fileName)
OSGDB_EXPORT std::string getNameLessAllExtensions(const std::string &fileName)
OSGDB_EXPORT std::string convertToLowerCase(const std::string &fileName)
OSGDB_EXPORT std::string getNameLessExtension(const std::string &fileName)