7 #ifndef PXR_USD_SDF_VARIABLE_EXPRESSION_AST_H
8 #define PXR_USD_SDF_VARIABLE_EXPRESSION_AST_H
21 namespace SdfVariableExpressionASTNodes
57 static_assert(std::is_base_of_v<Node, T>);
58 return dynamic_cast<T*
>(
this);
64 static_assert(std::is_base_of_v<Node, T>);
65 return dynamic_cast<const T*
>(
this);
82 NodeList(std::vector<std::unique_ptr<Node>>&& nodes);
119 std::vector<std::unique_ptr<Node>> _nodes;
135 bool, int64_t, std::string
150 : _value(std::forward<
T>(
value))
153 Node* _Clone() const final;
171 const std::string&
GetName()
const {
return _name; }
179 _name(std::move(varName))
182 Node* _Clone() const final;
206 : _elems(std::move(elems))
209 Node* _Clone() const final;
225 const std::string&
GetName()
const {
return _functionName; }
239 : _functionName(std::move(functionName))
240 , _functionArgs(std::move(functionArgs))
243 Node* _Clone() const final;
246 std::
string _functionName;
259 SDF_API SdfVariableExpressionAST();
263 SDF_API explicit SdfVariableExpressionAST(
const std::string& expr);
271 SDF_API SdfVariableExpressionAST(
const SdfVariableExpressionAST& rhs);
275 SdfVariableExpressionAST&
operator=(
const SdfVariableExpressionAST& rhs);
277 SdfVariableExpressionAST(SdfVariableExpressionAST&& rhs) =
default;
278 SdfVariableExpressionAST&
279 operator=(SdfVariableExpressionAST&& rhs) =
default;
286 SDF_API const std::vector<std::string>& GetErrors()
const;
311 std::unique_ptr<SdfVariableExpressionASTNodes::Node> _node;
312 std::vector<std::string> _errors;
SDF_API SdfVariableExpression::Builder GetExpressionBuilder() const
SDF_API std::vector< Node * > GetNodes()
Return list of nodes in this collection.
const NodeList & GetArguments() const
*get result *(waiting if necessary)*A common idiom is to fire a bunch of sub tasks at the and then *wait for them to all complete We provide a helper class
SDF_API void Remove(size_t i)
#define PXR_NAMESPACE_OPEN_SCOPE
GLsizei const GLfloat * value
const std::string & GetName() const
friend class _NodeCreator
SDF_API std::unique_ptr< Node > Clone() const
SDF_API void Insert(size_t i, const Node &node)
const std::string & GetName() const
const NodeList & GetElements() const
SDF_API void Append(const Node &node)
Append a copy of node to the end of this collection.
void SetValue(const LiteralValue &value)
SDF_API NodeList Clone() const
Copy all nodes in this collection to a new collection.
GLuint const GLchar * name
virtual SdfVariableExpression::Builder _GetExpressionBuilder() const =0
void SetName(const std::string &name)
SDF_API void Clear()
Clear all nodes.
std::variant< std::monostate, bool, int64_t, std::string > LiteralValue
LeafData & operator=(const LeafData &)=delete
SDF_API void Set(size_t i, const Node &node)
virtual Node * _Clone() const =0
SDF_API SdfVariableExpression GetExpression() const
#define PXR_NAMESPACE_CLOSE_SCOPE
const LiteralValue & GetValue() const
void SetName(const std::string &name)
NodeList & GetArguments()