12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 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(setter: Custom_Type_Setter) {
- global_custom_type_setter = setter
- }
|