ossp-pkg/val/val.h
1.2
/*
** val - OSSP Value Library
** Copyright (c) 2002 Ralf S. Engelschall <rse@engelschall.com>
** Copyright (c) 2002 The OSSP Project <http://www.ossp.org/>
** Copyright (c) 2002 Cable & Wireless Deutschland <http://www.cw.com/de/>
**
** This file is part of OSSP val, a Value library which
** can be found at http://www.ossp.org/pkg/val/.
**
** Permission to use, copy, modify, and distribute this software for
** any purpose with or without fee is hereby granted, provided that
** the above copyright notice and this permission notice appear in all
** copies.
**
** THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
** IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
** USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
** OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
** SUCH DAMAGE.
**
** val.h: library API
*/
#ifndef __VAL_H__
#define __VAL_H__
#include <stdarg.h>
enum {
VAL_TYPE_VAL = 1<<0,
VAL_TYPE_PTR = 1<<1,
VAL_TYPE_CHAR = 1<<2,
VAL_TYPE_SHORT = 1<<3,
VAL_TYPE_INT = 1<<4,
VAL_TYPE_LONG = 1<<5,
VAL_TYPE_FLOAT = 1<<6,
VAL_TYPE_DOUBLE = 1<<7
};
typedef enum {
VAL_OK,
VAL_ERR_ARG,
VAL_ERR_USE,
VAL_ERR_MEM,
VAL_ERR_SYS
} val_rc_t;
struct val_s;
typedef struct val_s val_t;
typedef val_rc_t (*val_cb_t)(void *, const char *, int, const char *, void *);
val_rc_t val_create (val_t **);
val_rc_t val_destroy (val_t *);
val_rc_t val_reg (val_t *, const char *, int, const char *, void *);
val_rc_t val_set (val_t *, const char *, ...);
val_rc_t val_get (val_t *, const char *, ...);
val_rc_t val_vset (val_t *, const char *, va_list);
val_rc_t val_vget (val_t *, const char *, va_list);
val_rc_t val_apply (val_t *, const char *, int, val_cb_t, void *);
#endif /* __VAL_H__ */