view src/dmargs.h @ 2208:90ec1ec89c56

Revamp the palette handling in lib64gfx somewhat, add helper functions to lib64util for handling external palette file options and add support for specifying one of the "internal" palettes or external (.act) palette file to gfxconv and 64vw.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 14 Jun 2019 05:01:12 +0300
parents ddec147d1f90
children c801995cbb13
line wrap: on
line source

/*
 * Simple commandline argument processing functions
 * Programmed and designed by Matti 'ccr' Hamalainen
 * (C) Copyright 2002-2018 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)
    char *o_long;     ///< Long option name
    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 *, const DMOptArg *opts,
     const int nopts, const int flags);

#ifdef __cplusplus
}
#endif
#endif // DMARGS_H