mirror of
https://github.com/odin-lang/Odin.git
synced 2025-12-28 17:04:34 +00:00
51 lines
1006 B
Odin
51 lines
1006 B
Odin
package flags
|
|
|
|
import "core:os"
|
|
|
|
Parse_Error_Reason :: enum {
|
|
None,
|
|
// An extra positional argument was given, and there is no `varg` field.
|
|
Extra_Positional,
|
|
// The underlying type does not support the string value it is being set to.
|
|
Bad_Value,
|
|
// No flag was given by the user.
|
|
No_Flag,
|
|
// No value was given by the user.
|
|
No_Value,
|
|
// The flag on the struct is missing.
|
|
Missing_Flag,
|
|
// The type itself isn't supported.
|
|
Unsupported_Type,
|
|
}
|
|
|
|
// Raised during parsing, naturally.
|
|
Parse_Error :: struct {
|
|
reason: Unified_Parse_Error_Reason,
|
|
message: string,
|
|
}
|
|
|
|
// Raised during parsing.
|
|
// Provides more granular information than what just a string could hold.
|
|
Open_File_Error :: struct {
|
|
filename: string,
|
|
errno: os.Errno,
|
|
mode: int,
|
|
perms: int,
|
|
}
|
|
|
|
// Raised during parsing.
|
|
Help_Request :: distinct bool
|
|
|
|
|
|
// Raised after parsing, during validation.
|
|
Validation_Error :: struct {
|
|
message: string,
|
|
}
|
|
|
|
Error :: union {
|
|
Parse_Error,
|
|
Open_File_Error,
|
|
Help_Request,
|
|
Validation_Error,
|
|
}
|