| // Copyright 2023 The Fuchsia 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 SRC_DEVELOPER_DEBUG_ZXDB_EXPR_RESOLVE_FUNCTION_H_ | |
| #define SRC_DEVELOPER_DEBUG_ZXDB_EXPR_RESOLVE_FUNCTION_H_ | |
| #include "src/developer/debug/zxdb/expr/eval_callback.h" | |
| #include "src/developer/debug/zxdb/expr/expr_value.h" | |
| #include "src/developer/debug/zxdb/expr/parsed_identifier.h" | |
| #include "src/lib/fxl/memory/ref_ptr.h" | |
| namespace zxdb { | |
| struct FunctionCallInfo; | |
| // Tries to resolve and extract the given function name to a Function symbol. | |
| // | |
| // There are several cases that currently return an error, but will be | |
| // implemented eventually: | |
| // * |fn_name| resolves to multiple locations | |
| // * |params| is not empty | |
| // These features are being tracked in https://fxbug.dev/42132103. | |
| // | |
| // An error is also returned in the case where |fn_name| resolves to no | |
| // locations or the function has been inlined. | |
| void ResolveFunction(const fxl::RefPtr<EvalContext>& eval_context, const ParsedIdentifier& fn_name, | |
| const std::vector<ExprValue>& params, | |
| fit::callback<void(ErrOr<FunctionCallInfo>)> cb); | |
| } // namespace zxdb | |
| #endif // SRC_DEVELOPER_DEBUG_ZXDB_EXPR_RESOLVE_FUNCTION_H_ |