1*beea8b97Schristos /* $NetBSD: dict.h,v 1.4 2011/02/12 23:21:32 christos Exp $ */ 2231558cbSagc 3231558cbSagc /* Copyright (c) 2010 The NetBSD Foundation, Inc. 4231558cbSagc * All rights reserved. 5231558cbSagc * 6231558cbSagc * This code is derived from software contributed to The NetBSD Foundation 7231558cbSagc * by Mateusz Kocielski. 8231558cbSagc * 9231558cbSagc * Redistribution and use in source and binary forms, with or without 10231558cbSagc * modification, are permitted provided that the following conditions 11231558cbSagc * are met: 12231558cbSagc * 1. Redistributions of source code must retain the above copyright 13231558cbSagc * notice, this list of conditions and the following disclaimer. 14231558cbSagc * 2. Redistributions in binary form must reproduce the above copyright 15231558cbSagc * notice, this list of conditions and the following disclaimer in the 16231558cbSagc * documentation and/or other materials provided with the distribution. 17231558cbSagc * 3. All advertising materials mentioning features or use of this software 18231558cbSagc * must display the following acknowledgement: 19231558cbSagc * This product includes software developed by the NetBSD 20231558cbSagc * Foundation, Inc. and its contributors. 21231558cbSagc * 4. Neither the name of The NetBSD Foundation nor the names of its 22231558cbSagc * contributors may be used to endorse or promote products derived 23231558cbSagc * from this software without specific prior written permission. 24231558cbSagc * 25231558cbSagc * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 26231558cbSagc * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 27231558cbSagc * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 28231558cbSagc * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 29231558cbSagc * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 30231558cbSagc * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 31231558cbSagc * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 32231558cbSagc * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 33231558cbSagc * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 34231558cbSagc * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35231558cbSagc * POSSIBILITY OF SUCH DAMAGE. 36231558cbSagc */ 37231558cbSagc 38231558cbSagc 39231558cbSagc #ifndef _DICT_H_ 40231558cbSagc #define _DICT_H_ 41231558cbSagc 4219c14409Schristos #include <stdbool.h> 43*beea8b97Schristos #include <stdlib.h> 4419c14409Schristos 456b638291Sagc typedef enum { 46231558cbSagc DICT_OK = 0, 47231558cbSagc DICT_NOMEM, 48231558cbSagc DICT_KEYNOTFOUND, 49231558cbSagc DICT_KEYEXISTS, 50231558cbSagc DICT_KEYINVALID, 51231558cbSagc DICT_VALBAD 526b638291Sagc } saslc__dict_result_t; 53231558cbSagc 54231558cbSagc /* dictionary type */ 55231558cbSagc typedef struct saslc__dict_t saslc__dict_t; 56231558cbSagc 57231558cbSagc /* interface */ 58231558cbSagc saslc__dict_t *saslc__dict_create(void); 5919c14409Schristos void saslc__dict_destroy(saslc__dict_t *); 60231558cbSagc const char *saslc__dict_get(saslc__dict_t *, const char *); 61231558cbSagc size_t saslc__dict_get_len(saslc__dict_t *, const char *); 6219c14409Schristos saslc__dict_result_t saslc__dict_insert(saslc__dict_t *, const char *, 6319c14409Schristos const char *); 646b638291Sagc saslc__dict_result_t saslc__dict_remove(saslc__dict_t *, const char *); 65231558cbSagc 66231558cbSagc #endif /* ! _DICT_H_ */ 67