]> git.ipfire.org Git - thirdparty/squid.git/blob - src/esi/Assign.h
Cleanup: Simplify MEMPROXY_CLASS_* macros
[thirdparty/squid.git] / src / esi / Assign.h
1 /*
2 * Copyright (C) 1996-2014 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_ESIASSIGN_H
12 #define SQUID_ESIASSIGN_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();
23 ESIVariableExpression (String const &value);
24 virtual void eval (ESIVarState &state, char const *, char const *) const;
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();
41 esiProcessResult_t process (int dovars);
42 void render(ESISegment::Pointer);
43 bool addElement(ESIElement::Pointer);
44 void provideData (ESISegment::Pointer data, ESIElement * source);
45 Pointer makeCacheable() const;
46 Pointer makeUsable(esiTreeParentPtr, ESIVarState &) const;
47 void finish();
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_ESIASSIGN_H */