| // Copyright 2026 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef TOOLS_GN_FFI_SESSION_H_ |
| #define TOOLS_GN_FFI_SESSION_H_ |
| |
| #include <span> |
| |
| class Err; |
| class ParseNode; |
| struct Session; |
| class Scope; |
| class Value; |
| |
| struct ParseNodePtr; |
| |
| // Executes the starlark file and loads the requested variables. |
| // Example: session_load( |
| // session, |
| // Value(":foo.scl"), |
| // {"foo", "bar"} |
| // scope for //dir/BUILD.gn, |
| // ParseNodePtr{parse_node}, |
| // err |
| // ) |
| // |
| // In this example, we execute the file //dir/foo.scl. |
| // We then get the variables foo and bar and insert them into the dest_scope. |
| // Unlike `import`, all imported variables *must* be used. |
| bool session_load(const Session& session, |
| const Value& label, |
| std::span<const Value> keys, |
| Scope& dest_scope, |
| ParseNodePtr parse_node, |
| Err& err); |
| |
| #endif // TOOLS_GN_FFI_SESSION_H_ |