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)
        const char *long_name,
        const char *help,
        ArgTarget   target
    ) {
        if (!self)
            ArgKind kind;
            void   *target;
        } ArgTarget;
    
        ///
            const char *long_name,
            const char *help,
            ArgTarget   target
        );
        _Generic(                                                                                                          \
            (t),                                                                                                           \
            const char **: ((ArgTarget) {ARG_KIND_ZSTR, (void *)(t)}),                                                     \
            char **: ((ArgTarget) {ARG_KIND_ZSTR, (void *)(t)}),                                                           \
            Str *: ((ArgTarget) {ARG_KIND_STR, (void *)(t)}),                                                              \
            (t),                                                                                                           \
            const char **: ((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)}),                                                            \
            const char **: ((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})                                                                \
        )
Last updated on