view cfgparser.h @ 2264:7851375ea156

increased precission of s_xinc s_xinc2 (needed for the mmx2 bugfix) moved mmx variables to top to avoid alignment issues mmx2 code should work fine now if and only if the input width is %16=0 and the output width is %32=0 reordered some code (5% faster with a simply -benchmark) first line bug fixed (i hope i didnt introduce any new bugs with that ...) changed a lot of the vertical scale setup code, i hope i fixed something and didnt mess it up :) a few known bugs left (rightmost line is wrong) MMX2 code will only be used for upscaling & acceptable widthˇ­s 16bit dithering can be disabled
author michael
date Thu, 18 Oct 2001 22:27:13 +0000
parents 13aeaa05ac5e
children b97a9e3fdb63
line wrap: on
line source

/*
 * command line and config file parser
 */

#ifndef __CONFIG_H
#define __CONFIG_H

#define CONF_TYPE_FLAG		0
#define CONF_TYPE_INT		1
#define CONF_TYPE_FLOAT		2
#define CONF_TYPE_STRING	3
#define CONF_TYPE_FUNC		4
#define CONF_TYPE_FUNC_PARAM	5
#define CONF_TYPE_PRINT		6
#define CONF_TYPE_FUNC_FULL	7


#define ERR_NOT_AN_OPTION	-1
#define ERR_MISSING_PARAM	-2
#define ERR_OUT_OF_RANGE	-3
#define ERR_FUNC_ERR		-4



#define CONF_MIN		(1<<0)
#define CONF_MAX		(1<<1)
#define CONF_RANGE		(CONF_MIN|CONF_MAX)
#define CONF_NOCFG		(1<<2)
#define CONF_NOCMD		(1<<3)

struct config {
	char *name;
	void *p;
	unsigned int type :3;
	unsigned int flags:4;
	float min,max;
};

typedef int (*cfg_func_arg_param_t)(struct config *, char *, char *);
typedef int (*cfg_func_param_t)(struct config *, char *);
typedef int (*cfg_func_t)(struct config *);

/* parse_config_file returns:
 * 	-1 on error (can't malloc, invalid option...)
 * 	 0 if can't open configfile
 * 	 1 on success
 */
int parse_config_file(struct config *conf, char *conffile);

/* parse_command_line returns:
 * 	-1 on error (invalid option...)
 * 	 0 if there was no filename on command line
 * 	 >=1 if there were filenames
 */
int parse_command_line(struct config *conf, int argc, char **argv, char **envp, char ***filenames);

#endif /* __CONFIG_H */