Click
Loading...
Searching...
No Matches
variableenv.hh
1// -*- c-basic-offset: 4; related-file-name: "../../lib/variableenv.cc" -*-
2#ifndef CLICK_VARIABLEENVIRONMENT_HH
3#define CLICK_VARIABLEENVIRONMENT_HH
4#include <click/string.hh>
5#include <click/vector.hh>
6CLICK_DECLS
7class StringAccum;
8
9class VariableExpander { public:
10
11 VariableExpander() { }
12 virtual ~VariableExpander() { }
13
14 virtual int expand(const String &var, String &expansion, int vartype, int depth) const = 0;
15
16};
17
18class VariableEnvironment : public VariableExpander { public:
19
20 VariableEnvironment(VariableEnvironment *parent);
21
22 int depth() const { return _depth; }
23 int size() const { return _names.size(); }
24
25 bool defines(const String &name) const;
26 const String &name(int i) const { return _names[i]; }
27 const Vector<String> &values() const { return _values; }
28 const String &value(int i) const { return _values[i]; }
29 const String &value(const String &name, bool &found) const;
30
31 void clear() { _names.clear(); _values.clear(); }
32
33 VariableEnvironment *parent_of(int depth) const;
34 bool define(const String &name, const String &value, bool override);
35 int expand(const String &var, String &expansion, int vartype, int depth) const;
36
37 private:
38
39 Vector<String> _names;
40 Vector<String> _values;
41 int _depth;
42 VariableEnvironment *_parent;
43
44};
45
46String cp_expand(const String &str, const VariableExpander &env,
47 bool expand_quote = false, int depth = 0);
48
49CLICK_ENDDECLS
50#endif
Efficiently build up Strings from pieces.
Definition straccum.hh:28
A string of characters.
Definition string.hh:22
Vector template.
Definition vector.hh:111
Click's String class.
Click's vector container template.