HDK
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
notice.h
Go to the documentation of this file.
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
46
/// \class ArNotice
47
///
48
class
ArNotice
49
{
50
public
:
51
/// \class ResolverNotice
52
/// Base class for all ArResolver-related notices.
53
class
ResolverNotice
54
:
public
TfNotice
55
{
56
public
:
57
AR_API
virtual
~ResolverNotice
();
58
protected
:
59
AR_API
ResolverNotice
();
60
};
61
62
/// \class ResolverChanged
63
/// Notice sent when asset paths may resolve to a different path than
64
/// before due to a change in the resolver.
65
class
ResolverChanged
66
:
public
ResolverNotice
67
{
68
public
:
69
/// Create a notice indicating that the results of asset resolution
70
/// might have changed, regardless of what ArResolverContext object
71
/// is bound.
72
AR_API
73
ResolverChanged
();
74
75
/// Create a notice using \p affectsFn to determine the
76
/// ArResolverContext objects that are affected by this resolver
77
/// change. If \p affectsFn returns true, it means the results of asset
78
/// resolution when the given ArResolverContext is bound might have
79
/// changed.
80
AR_API
81
ResolverChanged
(
82
const
std::function<
bool
(
const
ArResolverContext
&)>& affectsFn);
83
84
/// Create a notice indicating that the results of asset resolution when
85
/// any ArResolverContext containing \p contextObj is bound might have
86
/// changed.
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
105
/// Returns true if the results of asset resolution when \p ctx
106
/// is bound may be affected by this resolver change.
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
Definition:
notice.h:93
ArResolverContext::Get
const ContextObj * Get() const
Definition:
resolverContext.h:178
ArNotice::ResolverChanged::ResolverChanged
AR_API ResolverChanged()
value
GLsizei const GLfloat * value
Definition:
glcorearb.h:824
ArNotice::ResolverNotice::~ResolverNotice
virtual AR_API ~ResolverNotice()
ArNotice::ResolverChanged::ResolverChanged
ResolverChanged(const ContextObj &contextObj)
Definition:
notice.h:91
AR_API
#define AR_API
Definition:
api.h:40
ArNotice::ResolverNotice
Definition:
notice.h:53
ArNotice::ResolverChanged::AffectsContext
AR_API bool AffectsContext(const ArResolverContext &ctx) const
resolverContext.h
api.h
pxr.h
ArNotice::ResolverChanged::~ResolverChanged
virtual AR_API ~ResolverChanged()
ArNotice::ResolverChanged
Definition:
notice.h:65
PXR_NAMESPACE_OPEN_SCOPE
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition:
path.h:1432
notice.h
ArNotice::ResolverNotice::ResolverNotice
AR_API ResolverNotice()
ArNotice
Definition:
notice.h:48
PXR_NAMESPACE_CLOSE_SCOPE
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition:
pxr.h:91
ArResolverContext
Definition:
resolverContext.h:124
Ar_ContextIsHolding
PXR_NAMESPACE_OPEN_SCOPE bool Ar_ContextIsHolding(const ContextObj &contextObj, const ArResolverContext &ctx)
Definition:
notice.h:39
type
type
Definition:
core.h:1059
pxr
usd
ar
notice.h
Generated on Tue Dec 17 2024 03:40:33 for HDK by
1.8.6