HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
property.h
Go to the documentation of this file.
1 //
2 // Copyright 2025 Pixar
3 //
4 // Licensed under the terms set forth in the LICENSE.txt file available at
5 // https://openusd.org/license.
6 //
7 #ifndef PXR_EXEC_ESF_PROPERTY_H
8 #define PXR_EXEC_ESF_PROPERTY_H
9 
10 /// \file
11 
12 #include "pxr/pxr.h"
13 
14 #include "pxr/exec/esf/api.h"
16 #include "pxr/exec/esf/object.h"
17 
18 #include "pxr/usd/sdf/path.h"
19 
21 
22 class EsfJournal;
23 
24 /// Property abstraction for scene adapter implementations.
25 ///
26 /// The property abstraction closely resembles the read-only interface of
27 /// UsdProperty.
28 ///
29 /// The public methods of this class are called by the exec network compiler.
30 /// Each method takes an argument of type EsfJournal* which captures the
31 /// conditions for recompilation.
32 ///
34 {
35 public:
36  ESF_API ~EsfPropertyInterface() override;
37 
38  /// \see UsdProperty::GetBaseName
39  ESF_API TfToken GetBaseName(EsfJournal *journal) const;
40 
41  /// \see UsdProperty::GetNamespace
42  ESF_API TfToken GetNamespace(EsfJournal *journal) const;
43 
44 protected:
45  /// This constructor may only be called by the scene adapter implementation.
47 
48 private:
49  // These methods must be implemented by the scene adapter implementation.
50  virtual TfToken _GetBaseName() const = 0;
51  virtual TfToken _GetNamespace() const = 0;
52 };
53 
54 /// Holds an implementation of EsfPropertyInterface in a fixed-size buffer.
55 ///
56 /// The buffer is large enough to fit an implementation that wraps a
57 /// UsdProperty. The size is specified as an integer literal to prevent
58 /// introducing Usd as a dependency.
59 ///
61  : public EsfFixedSizePolymorphicHolder<EsfPropertyInterface, 48>
62 {
63 public:
65 };
66 
68 
69 #endif
#define PXR_NAMESPACE_OPEN_SCOPE
Definition: pxr.h:73
GLsizei const GLchar *const * path
Definition: glcorearb.h:3341
#define ESF_API_TYPE
Definition: api.h:26
Definition: token.h:70
Definition: path.h:280
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
EsfPropertyInterface(const SdfPath &path)
This constructor may only be called by the scene adapter implementation.
Definition: property.h:46
#define ESF_API
Definition: api.h:25