Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
notice.h
1
//
2
// Copyright 2021 Pixar
3
//
4
// Licensed under the Apache License, Version 2.0 (the "Apache License")
5
// with the following modification; you may not use this file except in
6
// compliance with the Apache License and the following modification to it:
7
// Section 6. Trademarks. is deleted and replaced with:
8
//
9
// 6. Trademarks. This License does not grant permission to use the trade
10
// names, trademarks, service marks, or product names of the Licensor
11
// and its affiliates, except as required to comply with Section 4(c) of
12
// the License and to reproduce the content of the NOTICE file.
13
//
14
// You may obtain a copy of the Apache License at
15
//
16
// http://www.apache.org/licenses/LICENSE-2.0
17
//
18
// Unless required by applicable law or agreed to in writing, software
19
// distributed under the Apache License with the above modification is
20
// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21
// KIND, either express or implied. See the Apache License for the specific
22
// language governing permissions and limitations under the Apache License.
23
//
24
#ifndef PXR_USD_AR_NOTICE_H
25
#define PXR_USD_AR_NOTICE_H
26
27
#include "
pxr/pxr.h
"
28
29
#include "pxr/usd/ar/api.h"
30
#include "
pxr/usd/ar/resolverContext.h
"
31
32
#include "
pxr/base/tf/notice.h
"
33
34
#include <functional>
35
36
PXR_NAMESPACE_OPEN_SCOPE
37
38
template
<
class
ContextObj>
39
bool
Ar_ContextIsHolding(
40
const
ContextObj& contextObj,
const
ArResolverContext
& ctx)
41
{
42
const
ContextObj* testObj = ctx.
Get
<ContextObj>();
43
return
testObj && *testObj == contextObj;
44
}
45
48
class
ArNotice
49
{
50
public
:
53
class
ResolverNotice
54
:
public
TfNotice
55
{
56
public
:
57
AR_API
virtual
~
ResolverNotice
();
58
protected
:
59
AR_API
ResolverNotice
();
60
};
61
65
class
ResolverChanged
66
:
public
ResolverNotice
67
{
68
public
:
72
AR_API
73
ResolverChanged
();
74
80
AR_API
81
ResolverChanged
(
82
const
std::function<
bool
(
const
ArResolverContext
&)>& affectsFn);
83
87
template
<
88
class
ContextObj,
89
typename
std::enable_if<ArIsContextObject<ContextObj>::value>::type*
90
=
nullptr
>
91
ResolverChanged
(
92
const
ContextObj& contextObj)
93
// XXX: Ideally this would just use a lambda and forward it to
94
// the other c'tor. Both of those cause issues in MSVC 2015; the
95
// first causes an unspecified type error and the second causes
96
// odd linker errors.
97
: _affects(std::bind(&Ar_ContextIsHolding<ContextObj>, contextObj,
98
std::placeholders::_1))
99
{
100
}
101
102
AR_API
103
virtual
~ResolverChanged();
104
107
AR_API
108
bool
AffectsContext
(
const
ArResolverContext
& ctx)
const
;
109
110
private
:
111
std::function<bool(const ArResolverContext&)> _affects;
112
};
113
114
};
115
116
PXR_NAMESPACE_CLOSE_SCOPE
117
118
#endif
TfNotice
The base class for objects used to notify interested parties (listeners) when events have occurred...
Definition:
notice.h:93
ArNotice::ResolverNotice
Base class for all ArResolver-related notices.
Definition:
notice.h:53
resolverContext.h
ArNotice::ResolverChanged::ResolverChanged
AR_API ResolverChanged()
Create a notice indicating that the results of asset resolution might have changed, regardless of what ArResolverContext object is bound.
pxr.h
ArNotice::ResolverChanged::ResolverChanged
ResolverChanged(const ContextObj &contextObj)
Create a notice indicating that the results of asset resolution when any ArResolverContext containing...
Definition:
notice.h:91
ArNotice::ResolverChanged
Notice sent when asset paths may resolve to a different path than before due to a change in the resol...
Definition:
notice.h:65
notice.h
ArResolverContext
An asset resolver context allows clients to provide additional data to the resolver for use during re...
Definition:
resolverContext_v1.h:92
ArResolverContext::Get
const Context * Get() const
Return pointer to the context object held in this asset resolver context if the context is holding an...
Definition:
resolverContext_v1.h:120
ArNotice::ResolverChanged::AffectsContext
AR_API bool AffectsContext(const ArResolverContext &ctx) const
Returns true if the results of asset resolution when ctx is bound may be affected by this resolver ch...
pxr
usd
ar
notice.h
Generated on Thu Jul 15 2021 00:08:57 by
1.8.5