diff options
Diffstat (limited to 'wrapper/structures.h')
-rw-r--r-- | wrapper/structures.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/wrapper/structures.h b/wrapper/structures.h new file mode 100644 index 0000000..fd53d09 --- /dev/null +++ b/wrapper/structures.h @@ -0,0 +1,60 @@ +/* Copyright (C) 2009 Luke Shumaker + + This file is part of rvs. + + rvs 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 2, or (at your + option) any later version. + + rvs 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 rvs; see the file COPYING. + If not, write to the Free Software Foundation, + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ +#ifndef FILE_structures_h_SEEN +#define FILE_structures_h_SEEN + +#include "string.h" + +/*----------------------------structures----------------------------*/ + +/* a generic binary tree emulating a n-ary tree via linked list */ +struct tree_list +{ + void *node; + struct tree_list *child;/* left leaf */ + struct tree_list *next; /* right leaf */ +}; + +/* a generic binary tree */ +struct tree_node +{ + void *node; + struct tree_node *left; + struct tree_node *right; +}; + +/*----------------------------functions-----------------------------*/ + +/* find a node with `name'. in the current layer of tree_list */ +struct tree_list * +ds_tree_list_find (struct tree_list *node, char *name) +{ + if (strcmp(node->node,name) == 0) + return node; + else { + if (node->next==NULL) + return NULL; + else + return ds_tree_list_find(node->next,name); + } +} + +#endif + |