Loading...
Searching...
No Matches
adapterRegistry.h
Go to the documentation of this file.
1//
2// Copyright 2016 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_IMAGING_USD_IMAGING_ADAPTER_REGISTRY_H
25#define PXR_USD_IMAGING_USD_IMAGING_ADAPTER_REGISTRY_H
26
28
29#include "pxr/pxr.h"
30#include "pxr/usdImaging/usdImaging/api.h"
33#include "pxr/base/tf/token.h"
34#include "pxr/base/tf/type.h"
35
36#include <unordered_map>
37
38PXR_NAMESPACE_OPEN_SCOPE
39
40
42using UsdImagingPrimAdapterSharedPtr = std::shared_ptr<UsdImagingPrimAdapter>;
43
45using UsdImagingAPISchemaAdapterSharedPtr =
46 std::shared_ptr<UsdImagingAPISchemaAdapter>;
47
48#define USD_IMAGING_ADAPTER_KEY_TOKENS \
49 ((instanceAdapterKey, "__instanceAdapter")) \
50 ((drawModeAdapterKey, "__drawModeAdapter")) \
51
52TF_DECLARE_PUBLIC_TOKENS(UsdImagingAdapterKeyTokens,
53 USDIMAGING_API,
54 USD_IMAGING_ADAPTER_KEY_TOKENS);
55
62class UsdImagingAdapterRegistry : public TfSingleton<UsdImagingAdapterRegistry>
63{
66
67 typedef std::unordered_map<TfToken,TfType,TfToken::HashFunctor> _TypeMap;
68 _TypeMap _typeMap;
69 TfTokenVector _adapterKeys;
70 _TypeMap _apiSchemaTypeMap;
71 TfTokenVector _apiSchemaAdapterKeys;
72
73 typedef std::vector<TfType> _TypeVector;
74 _TypeVector _keylessApiSchemaAdapterTypes;
75
76 template <typename T, typename factoryT>
77 std::shared_ptr<T> _ConstructAdapter(
78 TfToken const& adapterKey, const _TypeMap &tm);
79
80 template <typename T, typename factoryT>
81 std::shared_ptr<T> _ConstructAdapter(
82 TfToken const& adapterKey, const TfType &adapterType);
83
84public:
85
93 USDIMAGING_API
95
96 USDIMAGING_API
97 static UsdImagingAdapterRegistry& GetInstance() {
99 }
100
103 USDIMAGING_API
104 bool HasAdapter(TfToken const& adapterKey);
105
110 USDIMAGING_API
111 UsdImagingPrimAdapterSharedPtr ConstructAdapter(TfToken const& adapterKey);
112
115 USDIMAGING_API
117
120 USDIMAGING_API
121 bool HasAPISchemaAdapter(TfToken const& adapterKey);
122
126 USDIMAGING_API
127 UsdImagingAPISchemaAdapterSharedPtr ConstructAPISchemaAdapter(
128 TfToken const& adapterKey);
129
133 USDIMAGING_API
135
136 using ApiSchemaAdapters = std::vector<UsdImagingAPISchemaAdapterSharedPtr>;
137
140 USDIMAGING_API
142
143};
144
145USDIMAGING_API_TEMPLATE_CLASS(TfSingleton<UsdImagingAdapterRegistry>);
146
147PXR_NAMESPACE_CLOSE_SCOPE
148
149#endif //PXR_USD_IMAGING_USD_IMAGING_ADAPTER_REGISTRY_H
Manage a single instance of an object (see.
Definition: singleton.h:122
static T & GetInstance()
Return a reference to an object of type T, creating it if necessary.
Definition: singleton.h:137
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:88
TfType represents a dynamic runtime type.
Definition: type.h:65
Base class for all API schema adapters.
Registry of PrimAdapter plug-ins.
USDIMAGING_API const TfTokenVector & GetAdapterKeys()
Returns the set of adapter keys this class responds to; i.e.
USDIMAGING_API bool HasAPISchemaAdapter(TfToken const &adapterKey)
Returns true if an api schema adapter has been registered to handle the given adapterKey.
static USDIMAGING_API bool AreExternalPluginsEnabled()
Returns true if external plugins are enabled.
USDIMAGING_API UsdImagingAPISchemaAdapterSharedPtr ConstructAPISchemaAdapter(TfToken const &adapterKey)
Returns a new instance of the UsdImagingAPISchemaAdapter that has been registered to handle the given...
USDIMAGING_API const TfTokenVector & GetAPISchemaAdapterKeys()
Returns the set of api schema adapter keys this class responds to; i.e.
USDIMAGING_API UsdImagingPrimAdapterSharedPtr ConstructAdapter(TfToken const &adapterKey)
Returns a new instance of the UsdImagingPrimAdapter that has been registered to handle the given adap...
USDIMAGING_API ApiSchemaAdapters ConstructKeylessAPISchemaAdapters()
Constructs instances of "keyless" api schema adapters which are intended to run for every prim.
USDIMAGING_API bool HasAdapter(TfToken const &adapterKey)
Returns true if an adapter has been registered to handle the given adapterKey.
Base class for all PrimAdapters.
Definition: primAdapter.h:71
Manage a single instance of an object.
This file defines some macros that are useful for declaring and using static TfTokens.
#define TF_DECLARE_PUBLIC_TOKENS(...)
Macro to define public tokens.
Definition: staticTokens.h:98
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:457