view th_args.h @ 137:0f43a94516f4

Improve argument handling module.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 25 Sep 2014 03:37:08 +0300
parents 286b2249c5d2
children f81c6dc7bd0f
line wrap: on
line source

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

#include "th_util.h"
#include <stdio.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Option flags
 */
#define OPT_NONE       (0)    // Simple option with no arguments
#define OPT_ARGREQ     (1)    // Option requires an argument
#define OPT_ARGMASK    (3)    // Mask for option argument 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


typedef struct
{
    int id;
    char optShort;
    char *optLong;
    char *desc;
    int flags;
} optarg_t;


BOOL th_args_process(int argc, char *argv[],
     optarg_t argList[], int argListN,
     BOOL (*handleOpt)(int, char *, char *),
     BOOL (*handleFile)(char *), int flags);

void th_args_help(FILE *, optarg_t optList[], int optListN);

#ifdef __cplusplus
}
#endif
#endif // TH_ARGS