Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions extension/module/module.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,16 @@ runtime::Error Module::load_method(
return runtime::Error::Ok;
}

ET_NODISCARD runtime::Result<Method*> Module::method(
const std::string& method_name) {
ET_CHECK_OR_RETURN_ERROR(
methods_.count(method_name) > 0,
InvalidArgument,
"no such method in program: %s",
method_name.c_str());
return methods_[method_name].method.get();
}

runtime::Result<MethodMeta> Module::method_meta(
const std::string& method_name) {
ET_CHECK_OK_OR_RETURN_ERROR(load());
Expand Down
12 changes: 12 additions & 0 deletions extension/module/module.h
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,18 @@ class Module {
return load_method(method_name, nullptr, event_tracer);
}

/**
* Get a method by it's name. Not recommended to use this method directly as
* an end user. It's exposed to allow for composability of module in apis that
* operate on method.
*
* @param[in] method_name The name of the method to get.
*
* @returns A Result object containing either a pointer to the requested
* method or an error to indicate failure.
*/
ET_NODISCARD runtime::Result<Method*> method(const std::string& method_name);

/**
* Load the 'forward' method from the program and set up memory management if
* needed. The loaded method is cached to reuse the next time it's executed.
Expand Down
Loading