datanode.h

00001 /* MLPACK 0.2
00002  *
00003  * Copyright (c) 2008, 2009 Alexander Gray,
00004  *                          Garry Boyer,
00005  *                          Ryan Riegel,
00006  *                          Nikolaos Vasiloglou,
00007  *                          Dongryeol Lee,
00008  *                          Chip Mappus, 
00009  *                          Nishant Mehta,
00010  *                          Hua Ouyang,
00011  *                          Parikshit Ram,
00012  *                          Long Tran,
00013  *                          Wee Chin Wong
00014  *
00015  * Copyright (c) 2008, 2009 Georgia Institute of Technology
00016  *
00017  * This program is free software; you can redistribute it and/or
00018  * modify it under the terms of the GNU General Public License as
00019  * published by the Free Software Foundation; either version 2 of the
00020  * License, or (at your option) any later version.
00021  *
00022  * This program is distributed in the hope that it will be useful, but
00023  * WITHOUT ANY WARRANTY; without even the implied warranty of
00024  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00025  * General Public License for more details.
00026  *
00027  * You should have received a copy of the GNU General Public License
00028  * along with this program; if not, write to the Free Software
00029  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
00030  * 02110-1301, USA.
00031  */
00040 #ifndef FX_DATANODE_H
00041 #define FX_DATANODE_H
00042 
00043 #include "fastlib/base/common.h"
00044 
00045 EXTERN_C_BEGIN
00046 
00071 struct datanode {
00073   int mod_type;
00075   int val_type;
00077   const char *meta;
00079   char *key;
00081   char *val;
00083   struct datanode *first_child;
00085   struct datanode *last_child;
00087   struct datanode *next;
00089   struct datanode *parent;
00090 };
00091 
00100 void datanode_init(struct datanode *node, const char *key);
00108 void datanode_destroy(struct datanode *node);
00109 
00121 struct datanode *datanode_lookup_expert(struct datanode *node, char *path,
00122                                         int create);
00144 struct datanode *datanode_lookup(struct datanode *node, const char *path,
00145                                  int create);
00160 int datanode_exists(struct datanode *node, const char *path);
00179 void datanode_copy(struct datanode *dest, struct datanode *src,
00180                    int overwrite);
00181 
00207 void datanode_write(struct datanode *node, FILE *stream,
00208                     const char *type_char);
00225 void datanode_read(struct datanode *node, FILE *stream,
00226                    const char *type_char, int overwrite);
00227 
00228 EXTERN_C_END
00229 
00230 #endif /* FX_DATANODE_H */
Generated on Mon Jan 24 12:04:37 2011 for FASTlib by  doxygen 1.6.3