Skip to content

Commit

Permalink
libcore: Minor improvements (utility methods)
Browse files Browse the repository at this point in the history
  • Loading branch information
skyjake committed Jul 6, 2016
1 parent 7a10e98 commit c29619d
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 3 deletions.
2 changes: 2 additions & 0 deletions doomsday/sdk/libcore/include/de/data/arrayvalue.h
Expand Up @@ -208,6 +208,8 @@ class DENG2_PUBLIC ArrayValue : public Value
Value const &element(dint index) const;
Value const &operator [] (dint index) const;

String asTextUsingInfoSyntax() const;

private:
Elements::iterator indexToIterator(dint index);
Elements::const_iterator indexToIterator(dint index) const;
Expand Down
10 changes: 9 additions & 1 deletion doomsday/sdk/libcore/include/de/filesys/packageloader.h
Expand Up @@ -115,7 +115,15 @@ class DENG2_PUBLIC PackageLoader

FileSystem::FoundFiles loadedPackagesAsFilesInPackageOrder() const;

StringList loadedPackagesInOrder() const;
enum IdentifierType { NonVersioned, Versioned };

/**
* Returns a list of the currently loaded package IDs. The identifiers include
* version suffixes so that the packages can be unambigously located.
*
* @return Versioned package IDs.
*/
StringList loadedPackagesInOrder(IdentifierType type = Versioned) const;

/**
* Retrieves a specific loaded package. The package must already be loaded
Expand Down
18 changes: 18 additions & 0 deletions doomsday/sdk/libcore/src/data/arrayvalue.cpp
Expand Up @@ -386,6 +386,24 @@ Value const &ArrayValue::operator [] (dint index) const
return element(index);
}

String ArrayValue::asTextUsingInfoSyntax() const
{
StringList values;
for (Value const *value : elements())
{
String text = value->asText();
text.replace("\"", "''");
values << String("\"%1\"").arg(text);
}
QString out;
QTextStream os(&out);
os.setCodec("UTF-8");
os << "<"
<< String::join(values, ", ")
<< ">";
return out;
}

Value::Text ArrayValue::typeId() const
{
return "Array";
Expand Down
14 changes: 12 additions & 2 deletions doomsday/sdk/libcore/src/filesys/packageloader.cpp
Expand Up @@ -469,13 +469,23 @@ FS::FoundFiles PackageLoader::loadedPackagesAsFilesInPackageOrder() const
return sorted;
}

StringList PackageLoader::loadedPackagesInOrder() const
StringList PackageLoader::loadedPackagesInOrder(IdentifierType idType) const
{
QList<Package *> pkgs = d->loadedInOrder();
StringList ids;
for (auto p : pkgs)
{
ids << p->identifier();
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(meta.gets("version"));
}
else
{
// Unspecified version.
ids << meta.gets("ID");
}
}
return ids;
}
Expand Down

0 comments on commit c29619d

Please sign in to comment.