KSeExpr 6.0.0.0
ExprSpecType.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2011-2019 Disney Enterprises, Inc.
2// SPDX-License-Identifier: LicenseRef-Apache-2.0
3// SPDX-FileCopyrightText: 2020 L. E. Segovia <amy@amyspark.me>
4// SPDX-License-Identifier: GPL-3.0-or-later
5
6#pragma once
7
8#include <KSeExpr/Curve.h>
9#include <KSeExpr/Vec.h>
10#include <cstdio>
11#include <sstream>
12#include <vector>
13
17 int endPos;
18
21 , endPos(endPos)
22 {
23 }
24
25 virtual ~ExprSpecNode() = default;
26
28 ExprSpecNode &operator=(const ExprSpecNode &) = default;
29 ExprSpecNode(const ExprSpecNode &) = default;
31};
32
34 double v;
35
36 ExprSpecScalarNode(int startPos, int endPos, double scalar)
38 , v(scalar)
39 {
40 }
41};
42
47 {
48 v = KSeExpr::Vec3d(dynamic_cast<ExprSpecScalarNode *>(x)->v, dynamic_cast<ExprSpecScalarNode *>(y)->v, dynamic_cast<ExprSpecScalarNode *>(z)->v);
49 }
50};
51
53 std::vector<ExprSpecNode *> nodes;
58
59 void add(ExprSpecNode *node)
60 {
61 startPos = std::min(node->startPos, startPos);
62 endPos = std::max(node->endPos, endPos);
63 nodes.push_back(node);
64 }
65};
66
68 std::string v;
69 ExprSpecStringNode(int startPos, int endPos, const char *s)
71 , v(s)
72 {
73 }
74};
75
84
93
Vec< double, 3, false > Vec3d
Definition Vec.h:352
ExprSpecNode * args
ExprSpecCCurveNode(ExprSpecNode *args)
ExprSpecColorSwatchNode(ExprSpecNode *args)
ExprSpecCurveNode(ExprSpecNode *args)
ExprSpecNode * args
void add(ExprSpecNode *node)
std::vector< ExprSpecNode * > nodes
ExprSpecListNode(int startPos, int endPos)
Mini parse tree node... Only represents literals, and lists of literals.
ExprSpecNode(ExprSpecNode &&)=default
ExprSpecNode & operator=(ExprSpecNode &&)=default
ExprSpecNode(int startPos, int endPos)
virtual ~ExprSpecNode()=default
ExprSpecNode(const ExprSpecNode &)=default
ExprSpecNode & operator=(const ExprSpecNode &)=default
ExprSpecScalarNode(int startPos, int endPos, double scalar)
ExprSpecStringNode(int startPos, int endPos, const char *s)
KSeExpr::Vec3d v
ExprSpecVectorNode(int startPos, int endPos, ExprSpecNode *x, ExprSpecNode *y, ExprSpecNode *z)