Skip to content

ArgTarget

Description

Per-target tag produced by the ARG_TARGET macro. Carries the kind enum and an opaque pointer to the variable the parser will write into. Generated at compile time – caller never builds this by hand.

Usage example (Cross-references)

Usage examples (Cross-references)
            ArgKind kind;
            void   *target;
        } ArgTarget;
    
        ///
        /// TAGS: ArgParse, Register, Internal
        ///
        void arg_register(ArgParse *self, ArgRole role, Zstr short_name, Zstr long_name, Zstr help, ArgTarget target);
    
        ///
        _Generic(                                                                                                          \
            (t),                                                                                                           \
            Zstr *: ((ArgTarget) {ARG_KIND_ZSTR, (void *)(t)}),                                                            \
            char **: ((ArgTarget) {ARG_KIND_ZSTR, (void *)(t)}),                                                           \
            Str *: ((ArgTarget) {ARG_KIND_STR, (void *)(t)}),                                                              \
            (t),                                                                                                           \
            Zstr *: ((ArgTarget) {ARG_KIND_ZSTR, (void *)(t)}),                                                            \
            char **: ((ArgTarget) {ARG_KIND_ZSTR, (void *)(t)}),                                                           \
            Str *: ((ArgTarget) {ARG_KIND_STR, (void *)(t)}),                                                              \
            bool *: ((ArgTarget) {ARG_KIND_BOOL, (void *)(t)}),                                                            \
            Zstr *: ((ArgTarget) {ARG_KIND_ZSTR, (void *)(t)}),                                                            \
            char **: ((ArgTarget) {ARG_KIND_ZSTR, (void *)(t)}),                                                           \
            Str *: ((ArgTarget) {ARG_KIND_STR, (void *)(t)}),                                                              \
            bool *: ((ArgTarget) {ARG_KIND_BOOL, (void *)(t)}),                                                            \
            u8 *: ((ArgTarget) {ARG_KIND_U8, (void *)(t)}),                                                                \
            char **: ((ArgTarget) {ARG_KIND_ZSTR, (void *)(t)}),                                                           \
            Str *: ((ArgTarget) {ARG_KIND_STR, (void *)(t)}),                                                              \
            bool *: ((ArgTarget) {ARG_KIND_BOOL, (void *)(t)}),                                                            \
            u8 *: ((ArgTarget) {ARG_KIND_U8, (void *)(t)}),                                                                \
            u16 *: ((ArgTarget) {ARG_KIND_U16, (void *)(t)}),                                                              \
            Str *: ((ArgTarget) {ARG_KIND_STR, (void *)(t)}),                                                              \
            bool *: ((ArgTarget) {ARG_KIND_BOOL, (void *)(t)}),                                                            \
            u8 *: ((ArgTarget) {ARG_KIND_U8, (void *)(t)}),                                                                \
            u16 *: ((ArgTarget) {ARG_KIND_U16, (void *)(t)}),                                                              \
            u32 *: ((ArgTarget) {ARG_KIND_U32, (void *)(t)}),                                                              \
            bool *: ((ArgTarget) {ARG_KIND_BOOL, (void *)(t)}),                                                            \
            u8 *: ((ArgTarget) {ARG_KIND_U8, (void *)(t)}),                                                                \
            u16 *: ((ArgTarget) {ARG_KIND_U16, (void *)(t)}),                                                              \
            u32 *: ((ArgTarget) {ARG_KIND_U32, (void *)(t)}),                                                              \
            u64 *: ((ArgTarget) {ARG_KIND_U64, (void *)(t)}),                                                              \
            u8 *: ((ArgTarget) {ARG_KIND_U8, (void *)(t)}),                                                                \
            u16 *: ((ArgTarget) {ARG_KIND_U16, (void *)(t)}),                                                              \
            u32 *: ((ArgTarget) {ARG_KIND_U32, (void *)(t)}),                                                              \
            u64 *: ((ArgTarget) {ARG_KIND_U64, (void *)(t)}),                                                              \
            i16 *: ((ArgTarget) {ARG_KIND_I16, (void *)(t)}),                                                              \
            u16 *: ((ArgTarget) {ARG_KIND_U16, (void *)(t)}),                                                              \
            u32 *: ((ArgTarget) {ARG_KIND_U32, (void *)(t)}),                                                              \
            u64 *: ((ArgTarget) {ARG_KIND_U64, (void *)(t)}),                                                              \
            i16 *: ((ArgTarget) {ARG_KIND_I16, (void *)(t)}),                                                              \
            i32 *: ((ArgTarget) {ARG_KIND_I32, (void *)(t)}),                                                              \
            u32 *: ((ArgTarget) {ARG_KIND_U32, (void *)(t)}),                                                              \
            u64 *: ((ArgTarget) {ARG_KIND_U64, (void *)(t)}),                                                              \
            i16 *: ((ArgTarget) {ARG_KIND_I16, (void *)(t)}),                                                              \
            i32 *: ((ArgTarget) {ARG_KIND_I32, (void *)(t)}),                                                              \
            i64 *: ((ArgTarget) {ARG_KIND_I64, (void *)(t)}),                                                              \
            u64 *: ((ArgTarget) {ARG_KIND_U64, (void *)(t)}),                                                              \
            i16 *: ((ArgTarget) {ARG_KIND_I16, (void *)(t)}),                                                              \
            i32 *: ((ArgTarget) {ARG_KIND_I32, (void *)(t)}),                                                              \
            i64 *: ((ArgTarget) {ARG_KIND_I64, (void *)(t)}),                                                              \
            f32 *: ((ArgTarget) {ARG_KIND_F32, (void *)(t)}),                                                              \
            i16 *: ((ArgTarget) {ARG_KIND_I16, (void *)(t)}),                                                              \
            i32 *: ((ArgTarget) {ARG_KIND_I32, (void *)(t)}),                                                              \
            i64 *: ((ArgTarget) {ARG_KIND_I64, (void *)(t)}),                                                              \
            f32 *: ((ArgTarget) {ARG_KIND_F32, (void *)(t)}),                                                              \
            f64 *: ((ArgTarget) {ARG_KIND_F64, (void *)(t)}),                                                              \
            i32 *: ((ArgTarget) {ARG_KIND_I32, (void *)(t)}),                                                              \
            i64 *: ((ArgTarget) {ARG_KIND_I64, (void *)(t)}),                                                              \
            f32 *: ((ArgTarget) {ARG_KIND_F32, (void *)(t)}),                                                              \
            f64 *: ((ArgTarget) {ARG_KIND_F64, (void *)(t)}),                                                              \
            default: ((ArgTarget) {ARG_KIND_INVALID, NULL})                                                                \
            i64 *: ((ArgTarget) {ARG_KIND_I64, (void *)(t)}),                                                              \
            f32 *: ((ArgTarget) {ARG_KIND_F32, (void *)(t)}),                                                              \
            f64 *: ((ArgTarget) {ARG_KIND_F64, (void *)(t)}),                                                              \
            default: ((ArgTarget) {ARG_KIND_INVALID, NULL})                                                                \
        )
            f32 *: ((ArgTarget) {ARG_KIND_F32, (void *)(t)}),                                                              \
            f64 *: ((ArgTarget) {ARG_KIND_F64, (void *)(t)}),                                                              \
            default: ((ArgTarget) {ARG_KIND_INVALID, NULL})                                                                \
        )
    // ---------------------------------------------------------------------------
    
    void arg_register(ArgParse *self, ArgRole role, Zstr short_name, Zstr long_name, Zstr help, ArgTarget target) {
        if (!self)
            LOG_FATAL("arg_register: NULL parser");
Last updated on