/* $Id: conf.h 13 2011-04-20 15:41:43Z mmamonski $ */
/*
* PSNC DRMAA 2.0 utilities library
* Copyright (C) 2012 Poznan Supercomputing and Networking Center
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#ifndef __DRMAA_UTILS__CONF_H
#define __DRMAA_UTILS__CONF_H
#ifdef HAVE_CONFIG_H
# include
#endif
#include
typedef enum {
FSD_CONF_INTEGER,
FSD_CONF_STRING,
FSD_CONF_DICT
} fsd_conf_type_t;
struct fsd_conf_option_s {
fsd_conf_type_t type;
union {
int integer;
char *string;
fsd_conf_dict_t *dict;
} val;
};
/**
* Read configuration.
*/
fsd_conf_dict_t *
fsd_conf_read(
fsd_conf_dict_t *configuration,
const char *filename, bool must_exist,
const char *content, size_t content_len
);
fsd_conf_dict_t *
fsd_conf_load( const char *filename );
fsd_conf_option_t *
fsd_conf_option_create( fsd_conf_type_t type, void *value );
void
fsd_conf_option_destroy( fsd_conf_option_t *option );
fsd_conf_option_t *
fsd_conf_option_merge( fsd_conf_option_t *lhs, fsd_conf_option_t *rhs );
void
fsd_conf_option_dump( fsd_conf_option_t *option );
fsd_conf_dict_t *
fsd_conf_dict_create(void);
void
fsd_conf_dict_destroy( fsd_conf_dict_t *dict );
fsd_conf_option_t *
fsd_conf_dict_get( fsd_conf_dict_t *dict, const char *key );
void
fsd_conf_dict_set(
fsd_conf_dict_t *dict, const char *key, fsd_conf_option_t *value
);
fsd_conf_dict_t *
fsd_conf_dict_merge( fsd_conf_dict_t *lhs, fsd_conf_dict_t *rhs );
void
fsd_conf_dict_dump( fsd_conf_dict_t *dict );
/*
* Versions of functions above which do not raise exceptions.
* Needed in conf_tab.y
*/
fsd_conf_option_t *
fsd_conf_option_create_noraise( fsd_conf_type_t type, void *value );
fsd_conf_dict_t *
fsd_conf_dict_create_noraise(void);
int
fsd_conf_dict_set_noraise(
fsd_conf_dict_t *dict, const char *key, fsd_conf_option_t *value );
#endif /* __DRMAA_UTILS__CONF_H */