/usr/include/avifile-0.7/avm_args.h is in libavifile-0.7-dev 1:0.7.48~20090503.ds-19+b1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109  | #ifndef AVM_ARGS_H
#define AVM_ARGS_H
#include "avm_default.h"
AVM_BEGIN_NAMESPACE;
class AVMEXPORT Args
{
public:
    class Option {
    public:
	enum Type {
	    NONE =	   '#',
	    HELP =	   'h',	// use default help text and options
	    CODEC =	   'c',	// show available codec options (char*)
	    OPTIONS =	   'O',	// @value is pointer to another Options array
	    SUBOPTIONS =   'o',	// @value is pointer to SubOptions array
				// these options are separated by ':'
	    BOOL =	   'b',	// true flag when option is present (default is false)
	    DOUBLE =	   'd',	// double from given range (max == min -> unlimited)
	    INT =	   'i',	// integer from given range (max == min -> unlimited)
	    STRING =	   's',	// any string could be given
	    SELECTSTRING = 'x',	// string from the list
	    REGBOOL =	   'B',
	    REGDOUBLE =    'D',
	    REGINT =	   'I',
	    REGSTRING =    'S'
	};
	Option(const char* o, const void* v = 0, int32_t mi = 0, int32_t ma = 0)
	    : opts(o), value(v), min(mi), max(ma) {}
	Option(const char* o, const bool* b)
	    : opts(o), value(b) {}
	const char* getLongOption() const { return opts + 1; }
	const char* getShortOption() const { return findString(1); }
	const char* getHelp() const { return findString(2); }
	int32_t getInt() const { return (value) ? *(const int32_t*)value : 0; }
	int32_t getMin() const { return min; }
	int32_t getMax() const { return max; }
	bool getBool() const { return (value) ? *(const bool*)value : false; }
	double getDouble() const { return (value) ? *(const double*)value : 0.; }
	const char* getString() const { return (const char*)value; }
	const Option* getOptions() const { return (const Option*)value; }
	Type getType() const { return (Type) opts[0]; }
	bool is(Type t) const { return (t == getType()); }
	bool isInRange(int32_t v) const { return (getMin() == getMax())
	    || (getMin() <= v && v <= getMax()); }
	int setBool(bool b) const { return (value) ? *(bool*)value = b, 0 : -1; }
	int setDouble(double d) const { return (value) ? *(double*)value = d, 0 : -1; }
	int setInt(int32_t i) const { return (value) ? *(int32_t*)value = i, 0 : -1; }
	int setString(char* s) const { return (value) ? *(char**)value = s, 0 :  -1; }
    private:
	// go through adjanced zero ended strings
	const char* findString(int cnt) const {
	    const char* r = opts;
	    while (cnt--)
		while (*r++)
		    ;
	    return r;
	}
	const char* opts;	// 'Type' long-option-str \0  short-option-str \0 help-str
	const void* value;	// storage pointer for value
				// for SUB/OPTIONS contains subarray with Options
				// for REG+  contains pointer to default value
	union {
	    struct {
		int32_t min;	// min integer value
		int32_t max;	// max integer value
	    };
	    const char* defstr;	// list of string options
	};
    };
    Args(const Option* options, int* argc, char** argv,
	 const char* help = 0, const char* regname = 0);
    ~Args();
    // could be used to parse CodecInfo arguments
    static void ParseCodecInfo(const char* str);
protected:
    int findOpt(int olong = 0);
    const Option* opts;
    int* argc;
    char** argv;
    const char* help;
    const char* regname;
    int idx;
};
#ifdef __GNUC__
#define ARGSOPTION(a, b, c, d, args...) \
    Args::Option(a b "\0" c "\0" d, ## args)
#else
#define ARGSOPTION(a, b, c, d, ...) \
    Args::Option(a b "\0" c "\0" d, __VA_ARGS__)
#endif
AVM_END_NAMESPACE;
#endif /* AVM_ARGS_H */
 |