/*
 * config.h
 */
#ifndef _clish_config_h
#define _clish_config_h

#include "lub/types.h"

typedef struct clish_config_s clish_config_t;

/* Possible CONFIG operations */
typedef enum {
	CLISH_CONFIG_NONE,
	CLISH_CONFIG_SET,
	CLISH_CONFIG_UNSET,
	CLISH_CONFIG_DUMP
} clish_config_op_t;

/*=====================================
 * COMMAND INTERFACE
 *===================================== */
/*-----------------
 * meta functions
 *----------------- */
clish_config_t *clish_config_new(void);
/*-----------------
 * methods
 *----------------- */
void clish_config_delete(clish_config_t *instance);
void clish_config_dump(const clish_config_t *instance);

/*-----------------
 * attributes
 *----------------- */
void clish_config__set_op(clish_config_t *instance, clish_config_op_t op);
clish_config_op_t clish_config__get_op(const clish_config_t *instance);
void clish_config__set_priority(clish_config_t *instance, unsigned short priority);
unsigned short clish_config__get_priority(const clish_config_t *instance);
void clish_config__set_pattern(clish_config_t *instance, const char *pattern);
char *clish_config__get_pattern(const clish_config_t *instance);
void clish_config__set_file(clish_config_t *instance, const char *file);
char *clish_config__get_file(const clish_config_t *instance);
void clish_config__set_splitter(clish_config_t *instance, bool_t splitter);
bool_t clish_config__get_splitter(const clish_config_t *instance);
void clish_config__set_seq(clish_config_t *instance, const char *seq_num);
const char *clish_config__get_seq(const clish_config_t *instance);
bool_t clish_config__get_unique(const clish_config_t *instance);
void clish_config__set_unique(clish_config_t *instance, bool_t unique);
void clish_config__set_depth(clish_config_t *instance, const char *depth);
const char *clish_config__get_depth(const clish_config_t *instance);

#endif				/* _clish_config_h */