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
wrapTypeHelpers.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_BASE_TF_WRAP_TYPE_HELPERS_H
25
#define PXR_BASE_TF_WRAP_TYPE_HELPERS_H
26
27
#include "
pxr/pxr.h
"
28
29
#include "
pxr/base/tf/api.h
"
30
#include "
pxr/base/tf/pyObjWrapper.h
"
31
#include "
pxr/base/tf/type.h
"
32
#include <hboost/python/class.hpp>
33
#include <hboost/python/def_visitor.hpp>
34
35
PXR_NAMESPACE_OPEN_SCOPE
36
37
// Private implementation namespace; public types are exposed below.
38
namespace
TfType_WrapHelpers {
39
40
using namespace
hboost::python;
41
42
struct
_PythonClass
: def_visitor<_PythonClass>
43
{
44
friend
class
def_visitor_access;
45
46
private
:
47
template
<
class
CLS,
class
T>
48
void
_Visit(CLS &
c
,
T
*)
const
{
49
if
(
TfType
t
= TfType::Find<T>())
50
t
.DefinePythonClass(c);
51
}
52
53
public
:
54
template
<
class
CLS>
55
void
visit
(CLS &c)
const
{
56
// Use function template resolution to wrap the type
57
// appropriately depending on whether it is a polymorphic
58
// wrapper<> type.
59
typedef
typename
CLS::wrapped_type
Type
;
60
_Visit(c, detail::unwrap_wrapper((Type*)0));
61
}
62
};
63
64
}
// namespace TfType_WrapHelpers
65
66
67
/// \struct TfTypePythonClass
68
/// A hboost.python visitor that associates the Python class object created by
69
/// the wrapping with the TfType of the C++ type being wrapped.
70
///
71
/// Example use:
72
/// \code
73
/// class_<Foo, ...>("Foo", ...)
74
/// .def( TfTypePythonClass() )
75
/// \endcode
76
///
77
struct
TfTypePythonClass
:
public
TfType_WrapHelpers::_PythonClass
{};
78
79
/// A helper for wrapping C++ types.
80
/// This method defines a TfType for the given python class object, and also
81
/// recursively defines TfTypes for all the Python bases if necessary.
82
TF_API
TfType
TfType_DefinePythonTypeAndBases
(
const
hboost::python::object
& classObj );
83
84
PXR_NAMESPACE_CLOSE_SCOPE
85
86
#endif // PXR_BASE_TF_WRAP_TYPE_HELPERS_H
TF_API
#define TF_API
Definition:
api.h:40
SOP_AttribCreate_2_0Enums::Type
Type
Definition:
SOP_AttribCreate-2.0.proto.h:90
TfType_WrapHelpers::_PythonClass::visit
void visit(CLS &c) const
Definition:
wrapTypeHelpers.h:55
TfTypePythonClass
Definition:
wrapTypeHelpers.h:77
Tf_MakePyConstructor::object
bp::object object
Definition:
makePyConstructor.h:189
TfType_WrapHelpers::_PythonClass
Definition:
wrapTypeHelpers.h:42
TfType_DefinePythonTypeAndBases
TF_API TfType TfType_DefinePythonTypeAndBases(const hboost::python::object &classObj)
pxr.h
api.h
OBJ_MatchTransform::T
t
GLdouble t
Definition:
glad.h:2397
pyObjWrapper.h
PXR_NAMESPACE_OPEN_SCOPE
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition:
path.h:1432
PXR_NAMESPACE_CLOSE_SCOPE
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition:
pxr.h:91
nanovdb::io::c
c
Definition:
IO.h:328
TfType
Definition:
type.h:64
type.h
pxr
base
tf
wrapTypeHelpers.h
Generated on Fri Nov 8 2024 03:40:53 for HDK by
1.8.6