Skip to content

ArgFlag

Description

Register a boolean toggle. No value consumed; presence sets the target to true. Target must be bool *.

Usage example (from documentation)

  bool verbose = false;
  ArgFlag(&p, "-v", "--verbose", &verbose, "verbose logging");

Success

Appends an ARG_ROLE_FLAG spec; the bool target is set to true only if the option appears.

Failure

LOG_FATAL if parser is NULL, if target is not a bool *, or if both short_ and long_ are NULL.

Usage example (Cross-references)

Usage examples (Cross-references)
        }
        if (role == ARG_ROLE_FLAG && target.kind != ARG_KIND_BOOL) {
            LOG_FATAL("arg_register: ArgFlag '{}' requires a bool* target", long_name ? long_name : short_name);
        }
        if (role == ARG_ROLE_COUNT && target.kind != ARG_KIND_U8 && target.kind != ARG_KIND_U16 &&
    
        bool verbose = false;
        ArgFlag(&p, "-v", "--verbose", &verbose, "verbose");
    
        char  *argv[] = {(char *)"prog", (char *)"--verbose"};
    
        bool verbose = false;
        ArgFlag(&p, "-v", "--verbose", &verbose, "verbose");
    
        char  *argv[] = {(char *)"prog"};
        ArgPositional(&p, "source", &src, "from");
        ArgPositional(&p, "dest", &dst, "to");
        ArgFlag(&p, "-v", "--verbose", &verbose, "v");
    
        char  *argv[] = {(char *)"cp", (char *)"a.txt", (char *)"-v", (char *)"b.txt"};
    
        bool v = false;
        ArgFlag(&p, "-v", "--verbose", &v, "");
    
        char  *argv[] = {(char *)"prog", (char *)"--bogus"};
        ArgParse         p = ArgParseInit("prog", NULL, &a);
        bool             v = false;
        ArgFlag(&p, "-v", "--verbose", &v, "v");
        char  *argv[] = {(char *)"prog", (char *)"--verbose=1"};
        ArgRun rc     = ArgParseRun(&p, 2, argv);
        ArgRequired(&p, "-l", "--listen", &listen, "host:port");
        ArgOptional(&p, NULL, "--timeout", &timeout, "secs");
        ArgFlag(&p, "-v", "--verbose", &verbose, "be loud");
    
        Zstr expected =
    
        bool quiet = false;
        ArgFlag(&p, "-q", NULL, &quiet, "quiet");
    
        Zstr expected =
            names[i][6] = (char)('0' + i % 10);
            names[i][7] = '\0';
            ArgFlag(&p, NULL, names[i], &flags[i], "f");
        }
        ArgParse         p = ArgParseInit("prog", NULL, &a);
        bool             f = false;
        ArgFlag(&p, "-v", "--verbose", &f, "v");
        Str  help = StrInit(&a);
        bool got  = capture_help_file(&p, &help);
        bool             aa = false;
        Zstr             bb = NULL;
        ArgFlag(&p, "-a", "--a", &aa, "AAA");
        ArgRequired(&p, NULL, "--a-very-long-option-name", &bb, "BBB");
        Str  help = StrInit(&a);
        bool aflag = false;
        bool bflag = false;
        ArgFlag(&p, "-a", "--aaa", &aflag, "a");
        ArgFlag(&p, "-b", "--bbb", &bflag, "b");
        bool bflag = false;
        ArgFlag(&p, "-a", "--aaa", &aflag, "a");
        ArgFlag(&p, "-b", "--bbb", &bflag, "b");
    
        char  *argv[] = {(char *)"prog", (char *)"-b"};
        bool f = false;
        bool g = false;
        ArgFlag(&p, "-f", "--fff", &f, "f");
        ArgFlag(&p, "-g", "--ggg", &g, "g");
        bool g = false;
        ArgFlag(&p, "-f", "--fff", &f, "f");
        ArgFlag(&p, "-g", "--ggg", &g, "g");
    
        char  *argv[] = {(char *)"prog", (char *)"-fg"};
    
        bool f = false;
        ArgFlag(&p, "-f", "--fff", &f, "f");
    
        char  *argv[] = {(char *)"prog", (char *)"-ff"};
    
        bool v = false;
        ArgFlag(&p, "-v", NULL, &v, "v"); // short-only: long_name == NULL
    
        char  *argv[] = {(char *)"prog", (char *)"-v"};
    
        bool v = false;
        ArgFlag(&p, NULL, NULL, &v, "v"); // neither short nor long -> LOG_FATAL
    
        // Unreachable on real code (LOG_FATAL above longjmps out).
        ArgRequired(&p, "-l", "--listen", &listen, "host:port to listen on");
        ArgOptional(&p, NULL, "--timeout", &timeout, "connection timeout");
        ArgFlag(&p, "-v", "--verbose", &verbose, "verbose logging");
        ArgPositional(&p, "hostname", &hostname, "name to resolve");
Last updated on