view src/dmargs.h @ 2401:263093248f26

Change dmPrintWrap() API and move the string argument last.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 12 Jan 2020 19:32:29 +0200
parents 01c6a5261962
children b7cd5dd0b82e
line wrap: on
line source

/*
 * Simple commandline argument processing functions
 * Programmed and designed by Matti 'ccr' Hamalainen
 * (C) Copyright 2002-2020 Tecnic Software productions (TNSP)
 *
 * Please read file 'COPYING' for information on license and distribution.
 */
/// @file
/// @brief Simple commandline argument processing functions
#ifndef DMARGS_H
#define DMARGS_H

#include "dmlib.h"

#ifdef __cplusplus
extern "C" {
#endif

/** @def Option argument flags
 */
#define OPT_NONE             (0)    ///< Simple option with no arguments
#define OPT_ARGREQ           (1)    ///< Option requires an argument
#define OPT_ARGMASK          (1)    ///< Mask for option argument flags

/** @def Option processing flags
 */
#define OPTH_BAILOUT         0x0001 ///< Bail out on errors
#define OPTH_ONLY_OPTS       0x0010 ///< Handle only options
#define OPTH_ONLY_OTHER      0x0020 ///< Handle only "non-options"
#define OPTH_ONLY_MASK       0x00f0 ///< Mask


/** Option argument structure
 */
typedef struct
{
    int id;           ///< Option ID (should be unique for each option)
    char o_short;     ///< Short option name (one character, can be 0 for none)
    char *o_long;     ///< Long option name (can be NULL for none)
#ifdef DM_USE_OPT_ARG
    char *o_arg;      ///< Option argument name (can be NULL for none/default)
#endif
    char *desc;       ///< Option description
    int flags;        ///< Flags (see OPT_*)
} DMOptArg;


BOOL     dmArgsProcess(int argc, char *argv[],
         const DMOptArg *opts, const int nopts,
         BOOL (*handle_option)(int id, char *, char *),
         BOOL (*handle_other)(char *), const int flags);

void     dmArgsPrintHelp(FILE *fh, const DMOptArg *opts,
         const int nopts, const int flags);

void     dmPrintWrap(FILE *fh, const int spad, const int rpad,
         const int width, const char *str);

#ifdef __cplusplus
}
#endif
#endif // DMARGS_H