1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef TOOLS_GN_SCOPE_PER_FILE_PROVIDER_H_
6 #define TOOLS_GN_SCOPE_PER_FILE_PROVIDER_H_
8 #include "base/basictypes.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "tools/gn/scope.h"
11 #include "tools/gn/source_file.h"
13 // ProgrammaticProvider for a scope to provide it with per-file built-in
15 class ScopePerFileProvider
: public Scope::ProgrammaticProvider
{
17 ScopePerFileProvider(Scope
* scope
);
18 virtual ~ScopePerFileProvider();
20 // ProgrammaticProvider implementation.
21 virtual const Value
* GetProgrammaticValue(
22 const base::StringPiece
& ident
) OVERRIDE
;
25 const Value
* GetCurrentToolchain();
26 const Value
* GetDefaultToolchain();
27 const Value
* GetPythonPath();
28 const Value
* GetRootBuildDir();
29 const Value
* GetRootGenDir();
30 const Value
* GetRootOutDir();
31 const Value
* GetTargetGenDir();
32 const Value
* GetTargetOutDir();
34 // All values are lazily created.
35 scoped_ptr
<Value
> current_toolchain_
;
36 scoped_ptr
<Value
> default_toolchain_
;
37 scoped_ptr
<Value
> python_path_
;
38 scoped_ptr
<Value
> root_build_dir_
;
39 scoped_ptr
<Value
> root_gen_dir_
;
40 scoped_ptr
<Value
> root_out_dir_
;
41 scoped_ptr
<Value
> target_gen_dir_
;
42 scoped_ptr
<Value
> target_out_dir_
;
44 DISALLOW_COPY_AND_ASSIGN(ScopePerFileProvider
);
47 #endif // TOOLS_GN_SCOPE_PER_FILE_PROVIDER_H_