49 lines
1.5 KiB
Plaintext
49 lines
1.5 KiB
Plaintext
:sig
|
|
DValue* unit_call(String file_name, String function_name, DValue* 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 : DValue* 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 `DValue*` 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 DValue* ...` 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:
|
|
|
|
|
|
Calling a named component handler through `unit_call()`:
|
|
|
|
|
|
Calling a page render handler through `unit_call()`:
|
|
|
|
|
|
:example
|
|
unit_call("examples/sample_unit.uce", "doc_greet");
|