Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ZARGS(3)			  CZMQ Manual			      ZARGS(3)

NAME
       zargs - Class for Platform independent command line argument parsing
       helpers

SYNOPSIS
       //  This	is a draft class, and may change without notice. It is disabled	in
       //  stable builds by default. If	you use	this in	applications, please ask
       //  for it to be	pushed to stable state.	Use --enable-drafts to enable.
       #ifdef CZMQ_BUILD_DRAFT_API
       //  *** Draft method, for development use, may change without warning ***
       //  Create a new	zargs from command line	arguments.
       CZMQ_EXPORT zargs_t *
	   zargs_new (int argc,	char **argv);

       //  *** Draft method, for development use, may change without warning ***
       //  Destroy zargs instance.
       CZMQ_EXPORT void
	   zargs_destroy (zargs_t **self_p);

       //  *** Draft method, for development use, may change without warning ***
       //  Return program name (argv[0])
       CZMQ_EXPORT const char *
	   zargs_progname (zargs_t *self);

       //  *** Draft method, for development use, may change without warning ***
       //  Return number of positional arguments
       CZMQ_EXPORT size_t
	   zargs_arguments (zargs_t *self);

       //  *** Draft method, for development use, may change without warning ***
       //  Return first	positional argument or NULL
       CZMQ_EXPORT const char *
	   zargs_first (zargs_t	*self);

       //  *** Draft method, for development use, may change without warning ***
       //  Return next positional argument or NULL
       CZMQ_EXPORT const char *
	   zargs_next (zargs_t *self);

       //  *** Draft method, for development use, may change without warning ***
       //  Return first	named parameter	value, or NULL if there	are no named
       //  parameters, or value	for which zargs_param_empty (arg) returns true.
       CZMQ_EXPORT const char *
	   zargs_param_first (zargs_t *self);

       //  *** Draft method, for development use, may change without warning ***
       //  Return next named parameter value, or NULL if there are no named
       //  parameters, or value	for which zargs_param_empty (arg) returns true.
       CZMQ_EXPORT const char *
	   zargs_param_next (zargs_t *self);

       //  *** Draft method, for development use, may change without warning ***
       //  Return current parameter name, or NULL if there are no named	parameters.
       CZMQ_EXPORT const char *
	   zargs_param_name (zargs_t *self);

       //  *** Draft method, for development use, may change without warning ***
       //  Return value	of named parameter or NULL is it has no	value (or was not specified)
       CZMQ_EXPORT const char *
	   zargs_get (zargs_t *self, const char	*name);

       //  *** Draft method, for development use, may change without warning ***
       //  Return value	of one of parameter(s) or NULL is it has no value (or was not specified)
       CZMQ_EXPORT const char *
	   zargs_getx (zargs_t *self, const char *name,	...);

       //  *** Draft method, for development use, may change without warning ***
       //  Returns true	if named parameter was specified on command line
       CZMQ_EXPORT bool
	   zargs_has (zargs_t *self, const char	*name);

       //  *** Draft method, for development use, may change without warning ***
       //  Returns true	if named parameter(s) was specified on command line
       CZMQ_EXPORT bool
	   zargs_hasx (zargs_t *self, const char *name,	...);

       //  *** Draft method, for development use, may change without warning ***
       //  Print an instance of	zargs.
       CZMQ_EXPORT void
	   zargs_print (zargs_t	*self);

       //  *** Draft method, for development use, may change without warning ***
       //  Self	test of	this class.
       CZMQ_EXPORT void
	   zargs_test (bool verbose);

       #endif // CZMQ_BUILD_DRAFT_API
       Please add '@interface' section in './../src/zargs.c'.

DESCRIPTION
       zargs - Platform	independent command line argument parsing helpers

       Platform	independent command line argument parsing helpers

       There are two kind of elements provided by this class foo
       --named-parameter --parameter with_value	positional arguments -a
       gain-parameter zargs keeps poision only for arguments, parameters are
       to be accessed like hash.

       It DOES:	* provide easy to use CLASS compatible API for accessing argv
       * is platform independent * provide getopt_long style --	argument,
       which delimits parameters from arguments	* makes	parameters positon
       independent

       It does NOT * change argv * provide a "declarative" way to define
       command line interface

       In future it SHALL * hide several formats of command line to one
       (-Idir, --include=dir, --include	dir are	the same from API pov)

       Please add @discuss section in ./../src/zargs.c.

EXAMPLE
       From zargs_test method.

	   //  Simple create/destroy test

	   char	*argv1[] = {"progname",	"--named1", "-n1", "val1", "positional1", "--with", "value", "--with2=value2", "-W3value3", "--", "--thisis", "considered", "positional", NULL};

	   zargs_t *self = zargs_new (13, argv1);
	   assert (self);

	   assert (streq (zargs_progname (self), "progname"));
	   assert (streq (zargs_first (self), "positional1"));
	   assert (streq (zargs_next (self), "--thisis"));
	   assert (streq (zargs_next (self), "considered"));
	   assert (streq (zargs_next (self), "positional"));
	   assert (!zargs_next (self));

	   assert (zargs_has (self, "--named1"));
	   assert (zargs_has (self, "-n1"));
	   assert (!zargs_has (self, "--not at all"));

	   assert (!(zargs_get (self, "--named1")));
	   assert (streq (zargs_get (self, "-n1"), "val1"));

	   // common usages - test for -h/--help
	   bool	has_help = zargs_hasx (self, "--help", "-h", NULL);
	   assert (!has_help);

	   zargs_destroy (&self);

AUTHORS
       The czmq	manual was written by the authors in the AUTHORS file.

RESOURCES
       Main web	site:

       Report bugs to the email	<zeromq-dev@lists.zeromq.org[1]>

COPYRIGHT
       Copyright (c) the Contributors as noted in the AUTHORS file. This file
       is part of CZMQ,	the high-level C binding for 0MQ:
       http://czmq.zeromq.org. This Source Code	Form is	subject	to the terms
       of the Mozilla Public License, v. 2.0. If a copy	of the MPL was not
       distributed with	this file, You can obtain one at
       http://mozilla.org/MPL/2.0/. LICENSE included with the czmq
       distribution.

NOTES
	1. zeromq-dev@lists.zeromq.org
	   mailto:zeromq-dev@lists.zeromq.org

CZMQ 4.2.1			  11/01/2025			      ZARGS(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=zargs&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help