Uri|Optimize|Refactor: Various de::Uri refactorings
Reimplemented Uri's resolved() algorithm, making use of QStringRef and C++ exceptions. The revised expression parser addresses most of the design and suboptimal performance issues in the previous iteration and is also more tolerant of syntax errors (e.g, missing closing brackets no longer result in fatal error (though a warning is logged)).
Began switching the rest of de::Uri's API to use de::String rather than ddstring_t. As a C wrapper API is still necessary, the path() and scheme() methods return ddstring_t pointers presently. (it may be necessary to cache the composed path as ddstring_t in addition to the resolved path).
Also fixed a bug in ResourceNamespace::addSearchPath() resulting in search paths being resolved unnecessarily.
Uri|Optimize|Refactor: Various de::Uri refactorings
Reimplemented Uri's resolved() algorithm, making use of QStringRef
and C++ exceptions. The revised expression parser addresses most
of the design and suboptimal performance issues in the previous
iteration and is also more tolerant of syntax errors (e.g, missing
closing brackets no longer result in fatal error (though a warning
is logged)).
Began switching the rest of de::Uri's API to use de::String rather
than ddstring_t. As a C wrapper API is still necessary, the path()
and scheme() methods return ddstring_t pointers presently. (it may
be necessary to cache the composed path as ddstring_t in addition
to the resolved path).
Also fixed a bug in ResourceNamespace::addSearchPath() resulting
in search paths being resolved unnecessarily.