1 /** 2 * collectd - src/liboconfig/oconfig.h 3 * Copyright (C) 2006-2009 Florian Forster 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the "Software"), 7 * to deal in the Software without restriction, including without limitation 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 * and/or sell copies of the Software, and to permit persons to whom the 10 * Software is furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be included in 13 * all copies or substantial portions of the Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21 * DEALINGS IN THE SOFTWARE. 22 * 23 * Authors: 24 * Florian Forster <octo at collectd.org> 25 */ 26 27 #ifndef OCONFIG_H 28 #define OCONFIG_H 1 29 30 #include <stdio.h> 31 32 /* 33 * Types 34 */ 35 #define OCONFIG_TYPE_STRING 0 36 #define OCONFIG_TYPE_NUMBER 1 37 #define OCONFIG_TYPE_BOOLEAN 2 38 39 struct oconfig_value_s { 40 union { 41 char *string; 42 double number; 43 int boolean; 44 } value; 45 int type; 46 }; 47 typedef struct oconfig_value_s oconfig_value_t; 48 49 struct oconfig_item_s; 50 typedef struct oconfig_item_s oconfig_item_t; 51 struct oconfig_item_s { 52 char *key; 53 oconfig_value_t *values; 54 int values_num; 55 56 oconfig_item_t *parent; 57 oconfig_item_t *children; 58 int children_num; 59 }; 60 61 /* 62 * Functions 63 */ 64 oconfig_item_t *oconfig_parse_file(const char *file); 65 66 oconfig_item_t *oconfig_clone(const oconfig_item_t *ci); 67 68 void oconfig_free(oconfig_item_t *ci); 69 70 #endif /* OCONFIG_H */ 71