MaterialX 1.38.2
GenUserData.h
Go to the documentation of this file.
1//
2// TM & (c) 2017 Lucasfilm Entertainment Company Ltd. and Lucasfilm Ltd.
3// All rights reserved. See LICENSE.txt for license.
4//
5
6#ifndef MATERIALX_GENUSERDATA_H
7#define MATERIALX_GENUSERDATA_H
8
11
13
14namespace MaterialX
15{
16
17class GenUserData;
18
20using GenUserDataPtr = std::shared_ptr<GenUserData>;
21
23using ConstGenUserDataPtr = std::shared_ptr<const GenUserData>;
24
27class MX_GENSHADER_API GenUserData : public std::enable_shared_from_this<GenUserData>
28{
29 public:
30 virtual ~GenUserData() { }
31
34 {
35 return shared_from_this();
36 }
37
40 {
41 return shared_from_this();
42 }
43
45 template<class T> shared_ptr<T> asA()
46 {
47 return std::dynamic_pointer_cast<T>(getSelf());
48 }
49
51 template<class T> shared_ptr<const T> asA() const
52 {
53 return std::dynamic_pointer_cast<const T>(getSelf());
54 }
55
56 protected:
57 GenUserData() { }
58};
59
60} // namespace MaterialX
61
62#endif // MATERIALX_GENCONTEXT_H
std::shared_ptr< const GenUserData > ConstGenUserDataPtr
Shared pointer to a constant GenUserData.
Definition: GenUserData.h:23
std::shared_ptr< GenUserData > GenUserDataPtr
Shared pointer to a GenUserData.
Definition: GenUserData.h:20
Macros for declaring imported and exported symbols.
Base class for custom user data needed during shader generation.
Definition: GenUserData.h:28
shared_ptr< const T > asA() const
Return this object cast to a templated type.
Definition: GenUserData.h:51
ConstGenUserDataPtr getSelf() const
Return a shared pointer for this object.
Definition: GenUserData.h:39
shared_ptr< T > asA()
Return this object cast to a templated type.
Definition: GenUserData.h:45
GenUserDataPtr getSelf()
Return a shared pointer for this object.
Definition: GenUserData.h:33