These functions are often present, but not reliably portable.
They are not defined in ANSI C and were non-standard defined in older
versions of Microsoft C.
These are better replaced with Common::String.toLowercase() and
Common::String.toUppercase() if needed.
These functions are often present, but not reliably portable.
They are not defined in ANSI C and while they are likely present in
the stdlib.h, the exact behaviour especialy for invalid inputs can
vary.
Replacing usage of these functions in engines with Common::String::format()
is recommended.
This would have caught the recent Hopkins regression. It also warns
about a few other things at the moment, so that has to be looked into at
some point.
This change should be safe as our escape system doesn't mess with case.
In addition, we compare underlying strings to check equality so hashing
its content should work too.
Extended the StringTokenizer and U32StringTokenizer
classes with functions that provide the caller with a list
of all delimiters surrounding the last processed token.
We used to use a bitfield there, which was restricting the total
number of flags to 32 (unless we switch to uint64, which is suboptimal).
Moreover, with the introduction of the global debug flags, we have
even fewer bits to flip, and this shared nature was restricting
the introduction of more global debug channels.
The goal for the bitfield was to make it possible to put a debug message into
more than one channel. But this feature was practically not used by the engines.
This was removed by the previous commits.
This commit turns the debug channels into a hashmap and puts the global channel
IDs after 100000.
There is no absolute need to renumber the existing debug channels, but
I could follow with an engine or two.
Also add a compatibility shim which acts like a String.
In addition, simplify path related code to avoid stringification when
it's not needed.
Use the native path separator to display paths inside filesystem.