:sig DTree* unit_call(String file_name, String function_name, DTree* call_param = null) :params file_name : UCE file to load and execute function_name : name of the function to invoke call_param : optional, call parameter return value : DTree* returned from function :see >ob unit_load unit_render unit_info 1_RENDER 1_COMPONENT :content Calls an exported function inside another UCE file. Use `unit_call()` when you need structured data exchange between units rather than rendered HTML output. The callee must expose an `EXPORT` function whose name matches `function_name`. Arguments are passed through `call_param`, and the return value is a `DTree*` owned by the callee. `unit_call()` also understands the request-bound UCE entrypoint names: - `RENDER` - `RENDER:NAME` - `COMPONENT` - `COMPONENT:NAME` - `ONCE` - `INIT` When `function_name` matches one of those macro-style entrypoints, `unit_call()` does not look for a plain `EXPORT DTree* ...` function. Instead, it translates the name to the generated C++ symbol, uses the current `Request` context, and passes `call_param` into `context.props`, matching the normal component invocation model. For `RENDER...` and `COMPONENT...`, the unit's `ONCE(Request& context)` hook is still honored automatically before the selected handler runs. Example: ```cpp // export a function EXPORT DTree* test_func(DTree* call_param) { print("HELLO FROM TEST FUNCTION"); return(0); } // use that function in another file unit_call("call_file_funcs.uce", "test_func"); ``` Calling a named component handler through `unit_call()`: ```cpp DTree props; props["title"] = "Diagnostics"; props["body"] = "Ready"; unit_call("components/card.uce", "COMPONENT:BODY", &props); ``` Calling a page render handler through `unit_call()`: ```cpp DTree props; props["section"] = "summary"; unit_call("reports/summary.uce", "RENDER", &props); ``` Related: - PHP: `include`, `require`, or calling a function from an included module, especially when returning arrays or objects instead of rendering a view - JavaScript / Node.js: importing a module and calling an exported function, or dynamically loading a module and passing structured arguments