]> git.ipfire.org Git - thirdparty/squid.git/blob - src/esi/Assign.h
Maintenance: automate header guards 2/3 (#1655)
[thirdparty/squid.git] / src / esi / Assign.h
1 /*
2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9 /* DEBUG: section 86 ESI processing */
10
11 #ifndef SQUID_SRC_ESI_ASSIGN_H
12 #define SQUID_SRC_ESI_ASSIGN_H
13
14 #include "esi/Element.h"
15 #include "esi/VarState.h"
16 #include "SquidString.h"
17
18 /** This is a variable that is itself an expression */
19 class ESIVariableExpression : public ESIVarState::Variable
20 {
21 public:
22 ~ESIVariableExpression() override;
23 ESIVariableExpression (String const &value);
24 void eval (ESIVarState &state, char const *, char const *) const override;
25
26 private:
27 String expression;
28 };
29
30 class ESIContext;
31
32 class ESIAssign : public ESIElement
33 {
34 MEMPROXY_CLASS(ESIAssign);
35
36 public:
37 ESIAssign (esiTreeParentPtr, int, const char **, ESIContext *);
38 ESIAssign (ESIAssign const &);
39 ESIAssign &operator=(ESIAssign const &);
40 ~ESIAssign() override;
41 esiProcessResult_t process (int dovars) override;
42 void render(ESISegment::Pointer) override;
43 bool addElement(ESIElement::Pointer) override;
44 void provideData (ESISegment::Pointer data, ESIElement * source) override;
45 Pointer makeCacheable() const override;
46 Pointer makeUsable(esiTreeParentPtr, ESIVarState &) const override;
47 void finish() override;
48
49 private:
50 void evaluateVariable();
51 esiTreeParentPtr parent;
52 ESIVarState *varState;
53 String name;
54 ESIVariableExpression * value;
55 ESIElement::Pointer variable;
56 String unevaluatedVariable;
57 };
58
59 #endif /* SQUID_SRC_ESI_ASSIGN_H */
60