blob: de81fa6c6033412b3ea64843932116bfc791e571 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
// file : build2/test/script/script -*- C++ -*-
// copyright : Copyright (c) 2014-2016 Code Synthesis Ltd
// license : MIT; see accompanying LICENSE file
#ifndef BUILD2_TEST_SCRIPT_SCRIPT
#define BUILD2_TEST_SCRIPT_SCRIPT
#include <build2/types>
#include <build2/utility>
#include <build2/variable>
namespace build2
{
class target;
namespace test
{
namespace script
{
class script
{
public:
script (target& tt, target& st)
: test_target (tt), script_target (st) {}
public:
target& test_target; // Target we are testing.
target& script_target; // Target of the testscript file.
public:
// Note that if we pass the variable name as a string, then it will
// be looked up in the wrong pool.
//
variable_pool var_pool;
variable_map vars;
// Lookup the variable starting from this scope, continuing with outer
// scopes, then the target being tested, then the testscript target,
// and then outer buildfile scopes (including testscript-type/pattern
// specific).
//
lookup
find (const variable&) const;
// Return a value suitable for assignment. If the variable does not
// exist in this scope's map, then a new one with the NULL value is
// added and returned. Otherwise the existing value is returned.
//
value&
assign (const variable& var) {return vars.assign (var);}
// Return a value suitable for append/prepend. If the variable does
// not exist in this scope's map, then outer scopes are searched for
// the same variable. If found then a new variable with the found
// value is added to this scope and returned. Otherwise this function
// proceeds as assign() above.
//
value&
append (const variable&);
};
}
}
}
#endif // BUILD2_TEST_SCRIPT_SCRIPT
|