Core/Misc: update g3dlite lib (#2904)

* Core/Misc: update g3dlite lib

* update

Co-authored-by: Francesco Borzì <borzifrancesco@gmail.com>
This commit is contained in:
Viste
2020-07-30 13:35:45 +03:00
committed by GitHub
parent 91bbbf08eb
commit fcaf91b8b2
183 changed files with 13258 additions and 8022 deletions

View File

@@ -31,53 +31,72 @@ void parseCommaSeparated(const std::string s, Array<std::string>& array, bool st
/** Finds the index of the first '\\' or '/' character, starting at index \a start.
\sa G3D::findLastSlash, G3D::isSlash
*/
inline int findSlash(const std::string& f, int start = 0) {
int i = f.find('/', start);
int j = f.find('\\', start);
if (((i != -1) && (i < j)) || (j == -1)) {
inline size_t findSlash(const std::string& f, size_t start = 0) {
size_t i = f.find('/', start);
size_t j = f.find('\\', start);
if ((i != std::string::npos) && (i < j)) {
return i;
} else {
return j;
}
}
/** \brief Returns the larger string index, ignoring std::string::npos. */
inline size_t maxNotNPOS(size_t i, size_t j) {
if (i == std::string::npos) {
return j;
} else if (j == std::string::npos) {
return i;
} else {
return max(i, j);
}
}
/** Finds the index of the first '\\' or '/' character, starting at index \a start (if \a start is -1, starts at the end of the string).
\sa G3D::findSlash, G3D::isSlash
*/
inline int findLastSlash(const std::string& f, int start = -1) {
if (start == -1) {
inline size_t findLastSlash(const std::string& f, size_t start = std::string::npos) {
if (start == std::string::npos) {
start = f.length() - 1;
}
int i = f.rfind('/', start);
int j = f.rfind('\\', start);
return max(i, j);
size_t i = f.rfind('/', start);
size_t j = f.rfind('\\', start);
return maxNotNPOS(i, j);
}
/** Returns a string which is \a s, with all instances of \a pattern replaced */
std::string replace(const std::string& s, const std::string& pattern, const std::string& replacement);
/** Returns true if \a s is a valid C++ identifier */
bool isValidIdentifier(const std::string& s);
/**
Returns true if the test string begins with the pattern string.
\brief Returns true if the test string begins with the pattern string.
*/
bool beginsWith(
const std::string& test,
bool beginsWith
(const std::string& test,
const std::string& pattern);
/**
Returns true if the test string ends with the pattern string.
\brief Returns true if the test string ends with the pattern string.
*/
bool endsWith(
const std::string& test,
bool endsWith
(const std::string& test,
const std::string& pattern);
/**
Produces a new string that is the input string
\brief Produces a new string that is the input string
wrapped at a certain number of columns (where
the line is broken at the latest space before the
column limit.) Platform specific NEWLINEs
are inserted to wrap.
\sa G3D::GFont::wordWrapCut, G3D::TextOutput::Settings::WordWrapMode
*/
std::string wordWrap(
const std::string& input,
std::string wordWrap
(const std::string& input,
int numCols);
/**
@@ -161,6 +180,17 @@ inline bool isQuote(const unsigned char c) {
return (c == '\'') || (c == '\"');
}
/** Number of new lines in the given string */
inline int countNewlines(const std::string& s) {
int c = 0;
for (int i = 0; i < (int)s.size(); ++i) {
if (s[i] == '\n') {
++c;
}
}
return c;
}
}; // namespace
#endif