|
An asset resolver context allows clients to provide additional data to the resolver for use during resolution. More...
#include <resolverContext.h>
Public Member Functions | |
ArResolverContext () | |
Construct an empty asset resolver context. | |
template<class ... Objects, typename std::enable_if< Ar_AllValidForContext< Objects... >::value >::type * = nullptr> | |
ArResolverContext (const Objects &... objs) | |
Construct a resolver context using the given objects objs . | |
AR_API | ArResolverContext (const std::vector< ArResolverContext > &ctxs) |
Construct a resolver context using the ArResolverContexts in ctxs . | |
bool | IsEmpty () const |
Returns whether this resolver context is empty. | |
template<class ContextObj > | |
const ContextObj * | Get () const |
Returns pointer to the context object of the given type held in this resolver context. | |
AR_API std::string | GetDebugString () const |
Returns a debug string representing the contained context objects. | |
Operators | |
AR_API bool | operator== (const ArResolverContext &rhs) const |
bool | operator!= (const ArResolverContext &rhs) const |
AR_API bool | operator< (const ArResolverContext &rhs) const |
Friends | |
size_t | hash_value (const ArResolverContext &context) |
Returns hash value for this asset resolver context. | |
template<class HashState > | |
void | TfHashAppend (HashState &h, const std::shared_ptr< _Untyped > &context) |
An asset resolver context allows clients to provide additional data to the resolver for use during resolution.
Clients may provide this data via context objects of their own (subject to restrictions below). An ArResolverContext is simply a wrapper around these objects that allows it to be treated as a single type. Note that an ArResolverContext may not hold multiple context objects with the same type.
A client-defined context object must provide the following:
Note that the user may define a free function:
std::string ArGetDebugString(const Context& ctx); (Where Context is the type of the user's path resolver context.)
This is optional; a default generic implementation has been predefined. This function should return a string representation of the context to be utilized for debugging purposes(such as in TF_DEBUG statements).
The ArIsContextObject template must also be specialized for this object to declare that it can be used as a context object. This is to avoid accidental use of an unexpected object as a context object. The AR_DECLARE_RESOLVER_CONTEXT macro can be used to do this as a convenience.
Definition at line 107 of file resolverContext.h.
|
inline |
Construct an empty asset resolver context.
Definition at line 111 of file resolverContext.h.
|
inline |
Construct a resolver context using the given objects objs
.
Each argument must either be an ArResolverContext or a registered context object. See class documentation for requirements on context objects.
If an argument is a context object, it will be added to the constructed ArResolverContext. If an argument is an ArResolverContext, all of the context objects it holds will be added to the constructed ArResolverContext.
Arguments are ordered from strong-to-weak. If a context object is encountered with the same type as a previously-added object, the previously-added object will remain and the other context object will be ignored.
Definition at line 134 of file resolverContext.h.
|
explicit |
Construct a resolver context using the ArResolverContexts in ctxs
.
All of the context objects held by each ArResolverContext in ctxs
will be added to the constructed ArResolverContext.
Arguments are ordered from strong-to-weak. If a context object is encountered with the same type as a previously-added object, the previously-added object will remain and the other context object will be ignored.
|
inline |
Returns pointer to the context object of the given type held in this resolver context.
Returns NULL if this resolver context is not holding an object of the requested type.
Definition at line 161 of file resolverContext.h.
AR_API std::string GetDebugString | ( | ) | const |
Returns a debug string representing the contained context objects.
|
inline |
Returns whether this resolver context is empty.
Definition at line 152 of file resolverContext.h.
|
inline |
Definition at line 180 of file resolverContext.h.
|
friend |
Returns hash value for this asset resolver context.
Definition at line 191 of file resolverContext.h.
|
friend |
Definition at line 303 of file resolverContext.h.