Skip to content

Commit

Permalink
libcore: Continuing removal of Qt dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
skyjake committed Sep 1, 2019
1 parent 2f4fc94 commit b3e7240
Show file tree
Hide file tree
Showing 9 changed files with 71 additions and 43 deletions.
3 changes: 3 additions & 0 deletions doomsday/libs/core/include/de/data/string.h
Expand Up @@ -229,6 +229,7 @@ class DE_PUBLIC String : public IByteArray
/// Returns the last character of the string.
Char last() const;

bool contains(char c) const;
bool contains(const char *cStr) const;
int count(char ch) const;

Expand Down Expand Up @@ -270,6 +271,8 @@ class DE_PUBLIC String : public IByteArray
void remove(BytePos start, dsize count);
List<String> split(const char *separator) const;
List<String> split(Char ch) const;
List<String> split(const String &separator) const { return split(separator.c_str()); }
List<String> split(const RegExp &regExp) const;

String operator+(const char *) const;
String operator+(const CString &) const;
Expand Down
7 changes: 3 additions & 4 deletions doomsday/libs/core/src/data/record.cpp
Expand Up @@ -746,9 +746,8 @@ Variable &Record::set(const String &name, Block const &value)
var.value<BlockValue>().block() = value;
return var;
}
Variable &Record::set(const String &name, ArrayValue *value)

Variable &Record::set(const CString &name, const Record &value)
Variable &Record::set(const String &name, const Record &value)
{
DENG2_GUARD(d);

Expand All @@ -762,7 +761,7 @@ Variable &Record::set(const CString &name, const Record &value)
return var;
}

Variable &Record::set(const CString &name, ArrayValue *value)
Variable &Record::set(const String &name, ArrayValue *value)
{
DE_GUARD(d);

Expand Down Expand Up @@ -821,7 +820,7 @@ Variable &Record::appendMultipleUniqueWords(const String &name, const String &wo
{
for (const String &word : words.split(separator))
{
if (!word.empty())
if (word)
{
appendUniqueWord(name, word, separator);
}
Expand Down
23 changes: 23 additions & 0 deletions doomsday/libs/core/src/data/string.cpp
Expand Up @@ -164,6 +164,15 @@ CString String::toCString() const
return {begin(), end()};
}

bool String::contains(char c) const
{
for (const char *i = constBegin_String(&_str), *end = constEnd_String(&_str); i != end; ++i)
{
if (*i == c) return true;
}
return false;
}

bool String::contains(const char *cStr) const
{
return indexOfCStr_String(&_str, cStr) != iInvalidPos;
Expand Down Expand Up @@ -234,6 +243,20 @@ List<String> String::split(Char ch) const
return split(mb.bytes);
}

List<String> String::split(const RegExp &regExp) const
{
List<String> parts;
const char *pos = constBegin_String(&_str);
for (RegExpMatch m; regExp.match(*this, m); pos = m.end())
{
// The part before the matched separator.
parts << String(pos, m.begin());
}
// The final part.
parts << String(pos, constEnd_String(&_str));
return parts;
}

String String::operator+(const std::string &s) const
{
return *this + CString(s);
Expand Down
2 changes: 1 addition & 1 deletion doomsday/libs/core/src/filesys/package.cpp
Expand Up @@ -389,7 +389,7 @@ bool Package::matchTags(File const &packageFile, String const &tagRegExp)

StringList Package::tags(String const &tagsString)
{
return filter(tagsString.split(" "), [](const String &s){ return !s.empty(); });
return filter(tagsString.split(" "), [](const String &s) { return bool(s); });
}

StringList Package::requires(File const &packageFile)
Expand Down
33 changes: 18 additions & 15 deletions doomsday/libs/core/src/filesys/packageloader.cpp
Expand Up @@ -508,7 +508,7 @@ void PackageLoader::unloadAll()

while (!d->loaded.isEmpty())
{
unload(d->loaded.begin().key());
unload(d->loaded.begin()->first);
}
}

Expand All @@ -522,13 +522,13 @@ bool PackageLoader::isLoaded(String const &packageId) const
{
// Split ID, check version too if specified.
auto const id_ver = Package::split(packageId);
auto found = d->loaded.constFind(id_ver.first);
if (found == d->loaded.constEnd())
auto found = d->loaded.find(id_ver.first);
if (found == d->loaded.end())
{
return false;
}
return (!id_ver.second.isValid() /* no valid version provided in argumnet */ ||
id_ver.second == found.value()->version());
id_ver.second == found->second->version());
}

bool PackageLoader::isLoaded(File const &file) const
Expand All @@ -546,16 +546,16 @@ PackageLoader::LoadedPackages const &PackageLoader::loadedPackages() const
return d->loaded;
}

QList<Package *> PackageLoader::loadedPackagesInOrder() const
List<Package *> PackageLoader::loadedPackagesInOrder() const
{
return d->loadedInOrder();
}

FS::FoundFiles PackageLoader::loadedPackagesAsFilesInPackageOrder() const
{
QList<Package *> pkgs = d->loadedInOrder();
List<Package *> pkgs = d->loadedInOrder();
FS::FoundFiles sorted;
for (auto p : pkgs)
for (auto &p : pkgs)
{
sorted.push_back(const_cast<File *>(&p->sourceFile()));
}
Expand All @@ -564,15 +564,15 @@ FS::FoundFiles PackageLoader::loadedPackagesAsFilesInPackageOrder() const

StringList PackageLoader::loadedPackageIdsInOrder(IdentifierType idType) const
{
QList<Package *> pkgs = d->loadedInOrder();
List<Package *> pkgs = d->loadedInOrder();
StringList ids;
for (auto p : pkgs)
{
Record const &meta = Package::metadata(p->file());
Version const pkgVersion(meta.gets("version"));
if (idType == Versioned && pkgVersion.isValid()) // nonzero
{
ids << String("%1_%2").arg(meta.gets("ID")).arg(pkgVersion.fullNumber());
ids << String::format("%s_%s", meta.gets("ID").c_str(), pkgVersion.fullNumber().c_str());
}
else
{
Expand Down Expand Up @@ -646,9 +646,9 @@ StringList PackageLoader::loadedFromCommandLine() const
StringList PackageLoader::findAllPackages() const
{
StringList all;
for (QString typeName : QStringList({ DE_TYPE_NAME(Folder),
for (const char *typeName : {DE_TYPE_NAME(Folder),
DE_TYPE_NAME(ArchiveFolder),
DE_TYPE_NAME(LinkFile) }))
DE_TYPE_NAME(LinkFile)})
{
d->listPackagesInIndex(App::fileSystem().indexFor(typeName), all);
}
Expand Down Expand Up @@ -681,12 +681,15 @@ PackageLoader &PackageLoader::get()
return App::packageLoader();
}

PackageLoader::IdentifierList::IdentifierList(String const &spaceSeparatedIds)
PackageLoader::IdentifierList::IdentifierList(const String &spaceSeparatedIds)
{
static const QRegularExpression anySpace("\\s");
for (auto const &qs : spaceSeparatedIds.split(anySpace, String::SkipEmptyParts))
static RegExp anySpace("\\s");
for (const String &qs : spaceSeparatedIds.split(anySpace))
{
ids.append(qs);
if (qs)
{
ids << qs;
}
}
}

Expand Down
36 changes: 18 additions & 18 deletions doomsday/libs/core/src/filesys/remote/remotefeedrelay.cpp
Expand Up @@ -30,22 +30,21 @@
#include "de/Version"
#include "de/charsymbols.h"

#include <QNetworkAccessManager>
#include <QNetworkDiskCache>
#include <QNetworkReply>
#include <QRegularExpression>
#include <QStandardPaths>

#include <QFile>
//#include <QNetworkAccessManager>
//#include <QNetworkDiskCache>
//#include <QNetworkReply>
//#include <QRegularExpression>
//#include <QStandardPaths>
//#include <QFile>

namespace de {
namespace filesys {

DE_PIMPL(RemoteFeedRelay)
{
std::unique_ptr<QNetworkAccessManager> network;
QList<Link::Constructor> linkConstructors;
QHash<String, filesys::Link *> repositories; // owned
List<Link::Constructor> linkConstructors;
Hash<String, filesys::Link *> repositories; // owned

Impl(Public *i) : Base(i)
{
Expand All @@ -60,7 +59,7 @@ DE_PIMPL(RemoteFeedRelay)

~Impl()
{
qDeleteAll(repositories.values());
repositories.deleteAll();
}

DE_PIMPL_AUDIENCE(Status)
Expand Down Expand Up @@ -109,20 +108,20 @@ void RemoteFeedRelay::removeRepository(String const &address)

Link *RemoteFeedRelay::repository(String const &address) const
{
auto found = d->repositories.constFind(address);
if (found != d->repositories.constEnd())
auto found = d->repositories.find(address);
if (found != d->repositories.end())
{
return found.value();
return found->second;
}
return nullptr;
}

StringList RemoteFeedRelay::repositories() const
{
StringList repos;
foreach (String a, d->repositories.keys())
for (const auto &a : d->repositories)
{
repos << a;
repos << a->first;
}
return repos;
}
Expand All @@ -139,16 +138,17 @@ bool RemoteFeedRelay::isConnected(String const &address) const
PackagePaths RemoteFeedRelay::locatePackages(StringList const &packageIds) const
{
PackagePaths located;
foreach (auto *repo, d->repositories)
for (auto &r : d->repositories)
{
auto *repo = r.second;
if (repo->state() == Link::Ready)
{
auto const paths = repo->locatePackages(packageIds);
for (auto i = paths.begin(); i != paths.end(); ++i)
{
if (!located.contains(i.key()))
if (!located.contains(i->first))
{
located.insert(i.key(), i.value());
located.insert(i->first, i->second);
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions doomsday/libs/core/src/net/socket.cpp
Expand Up @@ -482,8 +482,8 @@ void Socket::open(String const &domainNameWithOptionalPort,
duint16 port = defaultPort;
if (str.contains(':'))
{
int pos = str.lastIndexOf(':');
port = duint16(str.mid(pos + 1).toInt());
auto pos = str.lastIndexOf(':');
port = duint16(str.substr(pos + 1).toInt());
if (!port) port = defaultPort;
str = str.left(pos);
}
Expand Down
4 changes: 2 additions & 2 deletions doomsday/libs/core/src/scriptsys/bindings_core.cpp
Expand Up @@ -155,9 +155,9 @@ static Value *Function_File_Locate(Context &ctx, Function::ArgumentValues const

static Value *Function_File_Read(Context &ctx, Function::ArgumentValues const &)
{
QScopedPointer<BlockValue> data(new BlockValue);
std::unique_ptr<BlockValue> data(new BlockValue);
constFileInstance(ctx) >> *data;
return data.take();
return data.release();
}

static Value *Function_File_ReadUtf8(Context &ctx, Function::ArgumentValues const &)
Expand Down
2 changes: 1 addition & 1 deletion doomsday/libs/core/src/scriptsys/context.cpp
Expand Up @@ -84,7 +84,7 @@ DE_PIMPL(Context)
/// The local namespace of this context.
Record *names;

QScopedPointer<Value> nativeSelf;
std::unique_ptr<Value> nativeSelf;

Variable throwaway;

Expand Down

0 comments on commit b3e7240

Please sign in to comment.