mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Update fmt.odin
Update example to use set/register procs.
This commit is contained in:
+11
-9
@@ -53,23 +53,20 @@ User_Formatter :: #type proc(fi: ^Info, arg: any, verb: rune) -> bool
|
|||||||
// m := cast(^SomeType)arg.data
|
// m := cast(^SomeType)arg.data
|
||||||
// switch verb {
|
// switch verb {
|
||||||
// case 'v', 'd':
|
// case 'v', 'd':
|
||||||
// fmt.fmt_int(fi, u64(m.value), true, 32, verb)
|
// fmt.fmt_int(fi, u64(m.value), true, 64, verb)
|
||||||
// case:
|
// case:
|
||||||
// return false
|
// return false
|
||||||
// }
|
// }
|
||||||
// return true
|
// return true
|
||||||
// }
|
// }
|
||||||
// //
|
|
||||||
// main :: proc() {
|
// main :: proc() {
|
||||||
// // Ensure the fmt._user_formatters map is initialized
|
// // Ensure the fmt._user_formatters map is initialized
|
||||||
// if fmt._user_formatters == nil {
|
// fmt.set_user_formatters(new(map[typeid]fmt.User_Formatter))
|
||||||
// fmt._user_formatters = new(map[typeid]fmt.User_Formatter)
|
// err := fmt.register_user_formatter(type_info_of(SomeType).id, User_Formatter)
|
||||||
// }
|
// assert(err == .None)
|
||||||
// // Register the custom formatter directly to the _user_formatters map
|
|
||||||
// fmt._user_formatters[type_info_of(SomeType).id] = User_Formatter
|
|
||||||
// // Use the custom formatter
|
// // Use the custom formatter
|
||||||
// x := SomeType{42}
|
// x := SomeType{42}
|
||||||
// fmt.println("My custom type value: ", x)
|
// fmt.println("Custom type value: ", x)
|
||||||
// }
|
// }
|
||||||
|
|
||||||
Register_User_Formatter_Error :: enum {
|
Register_User_Formatter_Error :: enum {
|
||||||
@@ -90,7 +87,12 @@ _user_formatters: ^map[typeid]User_Formatter
|
|||||||
// NOTE: Must be called before using register_user_formatter.
|
// NOTE: Must be called before using register_user_formatter.
|
||||||
//
|
//
|
||||||
set_user_formatters :: proc(m: ^map[typeid]User_Formatter) {
|
set_user_formatters :: proc(m: ^map[typeid]User_Formatter) {
|
||||||
_user_formatters = m
|
if _user_formatters==nil {
|
||||||
|
_user_formatters = m
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
panic("set_user_formatters must not be called more than once.")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Registers a user-defined formatter for a specific typeid
|
// Registers a user-defined formatter for a specific typeid
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in New Issue
Block a user