Skip to content

Commit

Permalink
Documentation|Added|ResourceClass: Added apidoc for ResourceClass
Browse files Browse the repository at this point in the history
  • Loading branch information
danij-deng committed Nov 16, 2012
1 parent f4c8ec1 commit 3399f08
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 13 deletions.
55 changes: 44 additions & 11 deletions doomsday/engine/api/resourceclass.h
Expand Up @@ -34,6 +34,8 @@ extern "C" {
* Resource Class Identifier.
*
* @ingroup base
*
* @todo Refactor away. These identifiers are no longer needed.
*/
typedef enum resourceclassid_e {
RC_NULL = -2, ///< Not a real class, used internally during resource locator init.
Expand Down Expand Up @@ -66,7 +68,8 @@ enum resourcetypeid_e;
namespace de
{
/**
* ResourceClass.
* ResourceClass encapsulates the properties and logics belonging to a logical
* class of resource (e.g., Graphic, Model, Sound, etc...)
*
* @ingroup base
*/
Expand All @@ -76,31 +79,61 @@ namespace de
typedef QList<resourcetypeid_e> Types;

public:
String name_;

String defaultNamespace_;

/// Recognized resource types (in order of importance, left to right).
Types searchTypeOrder;

ResourceClass(String _name, String _defaultNamespace)
: name_(_name), defaultNamespace_(_defaultNamespace)
{}

virtual ~ResourceClass() {};

String const& name() const {
/// Return the symbolic name of this resource class.
String const& name() const
{
return name_;
}

String const& defaultNamespace() const {
/// Return the symbolic name of the default namespace for this class of resource.
String const& defaultNamespace() const
{
return defaultNamespace_;
}

ResourceClass& addResourceType(resourcetypeid_e rtype) {
/// Return the number of resource types for this class.
int resourceTypeCount() const
{
return searchTypeOrder.count();
}

/**
* Add a new type of resource to this class. Earlier types have priority.
*
* @param rtype Identifier of the resourceType to add.
* @return This instance.
*/
ResourceClass& addResourceType(resourcetypeid_e rtype)
{
searchTypeOrder.push_back(rtype);
return *this;
}

/**
* Provides access to the resource type list for efficient iteration.
*
* @return List of resource types of this class.
*/
Types const& resourceTypes() const
{
return searchTypeOrder;
}

private:
/// Symbolic name for this class.
String name_;

/// Symbolic name of the default namespace.
String defaultNamespace_;

/// Recognized resource types (in order of importance, left to right).
Types searchTypeOrder;
};

/**
Expand Down
4 changes: 2 additions & 2 deletions doomsday/engine/src/sys_reslocator.cpp
Expand Up @@ -161,7 +161,7 @@ static bool findResource2(int flags, resourceclassid_t classId, String searchPat
}

ResourceClass const& rclass = resourceClass(classId);
if(rclass.searchTypeOrder[0] == RT_NONE) return false;
if(!rclass.resourceTypeCount()) return false;

/*
* Try some different name patterns (i.e., resource types) known to us.
Expand All @@ -172,7 +172,7 @@ static bool findResource2(int flags, resourceclassid_t classId, String searchPat

path2.reserve(path2.length() + 5 /*max expected extension length*/);

DENG2_FOR_EACH_CONST(ResourceClass::Types, typeIt, rclass.searchTypeOrder)
DENG2_FOR_EACH_CONST(ResourceClass::Types, typeIt, rclass.resourceTypes())
{
ResourceType const& rtype = resourceType(*typeIt);
DENG2_FOR_EACH_CONST(QStringList, i, rtype.knownFileNameExtensions)
Expand Down

0 comments on commit 3399f08

Please sign in to comment.