mirror of
https://github.com/odin-lang/Odin.git
synced 2025-12-28 17:04:34 +00:00
44 lines
1.1 KiB
Odin
44 lines
1.1 KiB
Odin
package flags
|
|
|
|
import "base:runtime"
|
|
|
|
/*
|
|
Handle setting custom data types.
|
|
|
|
Inputs:
|
|
- data: A raw pointer to the field where the data will go.
|
|
- data_type: Type information on the underlying field.
|
|
- unparsed_value: The unparsed string that the flag is being set to.
|
|
- args_tag: The `args` tag from the struct's field.
|
|
|
|
Returns:
|
|
- error: An error message, or an empty string if no error occurred.
|
|
- handled: A boolean indicating if the setter handles this type.
|
|
- alloc_error: If an allocation error occurred, return it here.
|
|
*/
|
|
Custom_Type_Setter :: #type proc(
|
|
data: rawptr,
|
|
data_type: typeid,
|
|
unparsed_value: string,
|
|
args_tag: string,
|
|
) -> (
|
|
error: string,
|
|
handled: bool,
|
|
alloc_error: runtime.Allocator_Error,
|
|
)
|
|
|
|
@(private)
|
|
global_custom_type_setter: Custom_Type_Setter
|
|
|
|
/*
|
|
Set the global custom type setter.
|
|
|
|
Note that only one can be active at a time.
|
|
|
|
Inputs:
|
|
- setter: The type setter. Pass `nil` to disable any previously set setter.
|
|
*/
|
|
register_type_setter :: proc "contextless" (setter: Custom_Type_Setter) {
|
|
global_custom_type_setter = setter
|
|
}
|