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"
31 #include "pxr/base/tf/singleton.h"
33 #include "pxr/base/tf/token.h"
34 #include "pxr/base/tf/type.h"
35 
36 #include <unordered_map>
37 
38 PXR_NAMESPACE_OPEN_SCOPE
39 
40 
42 using UsdImagingPrimAdapterSharedPtr = std::shared_ptr<UsdImagingPrimAdapter>;
43 
45 using UsdImagingAPISchemaAdapterSharedPtr =
46  std::shared_ptr<UsdImagingAPISchemaAdapter>;
47 
48 #define USD_IMAGING_ADAPTER_KEY_TOKENS \
49  ((instanceAdapterKey, "__instanceAdapter")) \
50  ((drawModeAdapterKey, "__drawModeAdapter")) \
51 
52 TF_DECLARE_PUBLIC_TOKENS(UsdImagingAdapterKeyTokens,
53  USDIMAGING_API,
54  USD_IMAGING_ADAPTER_KEY_TOKENS);
55 
62 class 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  template <typename T, typename factoryT>
74  std::shared_ptr<T> _ConstructAdapter(
75  TfToken const& adapterKey, const _TypeMap &tm);
76 
77 public:
78 
86  USDIMAGING_API
87  static bool AreExternalPluginsEnabled();
88 
89  USDIMAGING_API
92  }
93 
96  USDIMAGING_API
97  bool HasAdapter(TfToken const& adapterKey);
98 
103  USDIMAGING_API
104  UsdImagingPrimAdapterSharedPtr ConstructAdapter(TfToken const& adapterKey);
105 
108  USDIMAGING_API
109  const TfTokenVector& GetAdapterKeys();
110 
113  USDIMAGING_API
114  bool HasAPISchemaAdapter(TfToken const& adapterKey);
115 
119  USDIMAGING_API
120  UsdImagingAPISchemaAdapterSharedPtr ConstructAPISchemaAdapter(
121  TfToken const& adapterKey);
122 
126  USDIMAGING_API
128 
129 
130 };
131 
132 USDIMAGING_API_TEMPLATE_CLASS(TfSingleton<UsdImagingAdapterRegistry>);
133 
134 PXR_NAMESPACE_CLOSE_SCOPE
135 
136 #endif //PXR_USD_IMAGING_USD_IMAGING_ADAPTER_REGISTRY_H
Manage a single instance of an object.
Manage a single instance of an object (see.
Definition: singleton.h:122
USDIMAGING_API const TfTokenVector & GetAPISchemaAdapterKeys()
Returns the set of api schema adapter keys this class responds to; i.e.
Base class for all API schema adapters.
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:87
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:67
USDIMAGING_API UsdImagingPrimAdapterSharedPtr ConstructAdapter(TfToken const &adapterKey)
Returns a new instance of the UsdImagingPrimAdapter that has been registered to handle the given adap...
#define TF_DECLARE_PUBLIC_TOKENS(...)
Macro to define public tokens.
Definition: staticTokens.h:118
USDIMAGING_API const TfTokenVector & GetAdapterKeys()
Returns the set of adapter keys this class responds to; i.e.
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:442
static T & GetInstance()
Return a reference to an object of type T, creating it if necessary.
Definition: singleton.h:137
USDIMAGING_API UsdImagingAPISchemaAdapterSharedPtr ConstructAPISchemaAdapter(TfToken const &adapterKey)
Returns a new instance of the UsdImagingAPISchemaAdapter that has been registered to handle the given...
This file defines some macros that are useful for declaring and using static TfTokens.
Registry of PrimAdapter plug-ins.
static USDIMAGING_API bool AreExternalPluginsEnabled()
Returns true if external plugins are enabled.
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...
USDIMAGING_API bool HasAPISchemaAdapter(TfToken const &adapterKey)
Returns true if an api schema adapter has been registered to handle the given adapterKey.