t2ex/t2ex_source/include/t2ex/search.h | bare source | permlink (0.01 seconds) |
1: /* 2: *---------------------------------------------------------------------- 3: * T2EX Software Package 4: * 5: * Copyright 2012 by Ken Sakamura. 6: * This software is distributed under the latest version of T-License 2.x. 7: *---------------------------------------------------------------------- 8: * 9: * Released by T-Engine Forum(http://www.t-engine.org/) at 2012/12/12. 10: * Modified by TRON Forum(http://www.tron.org/) at 2015/06/04. 11: * 12: *---------------------------------------------------------------------- 13: */ 14: /* 15: * This software package is available for use, modification, 16: * and redistribution in accordance with the terms of the attached 17: * T-License 2.x. 18: * If you want to redistribute the source code, you need to attach 19: * the T-License 2.x document. 20: * There's no obligation to publish the content, and no obligation 21: * to disclose it to the TRON Forum if you have modified the 22: * software package. 23: * You can also distribute the modified source code. In this case, 24: * please register the modification to T-Kernel traceability service. 25: * People can know the history of modifications by the service, 26: * and can be sure that the version you have inherited some 27: * modification of a particular version or not. 28: * 29: * http://trace.tron.org/tk/?lang=en 30: * http://trace.tron.org/tk/?lang=ja 31: * 32: * As per the provisions of the T-License 2.x, TRON Forum ensures that 33: * the portion of the software that is copyrighted by Ken Sakamura or 34: * the TRON Forum does not infringe the copyrights of a third party. 35: * However, it does not make any warranty other than this. 36: * DISCLAIMER: TRON Forum and Ken Sakamura shall not be held 37: * responsible for any consequences or damages caused directly or 38: * indirectly by the use of this software package. 39: * 40: * The source codes in bsd_source.tar.gz in this software package are 41: * derived from NetBSD or OpenBSD and not covered under T-License 2.x. 42: * They need to be changed or redistributed according to the 43: * representation of each source header. 44: */ 45: 46: /* 47: * @(#)search.h 48: * 49: */ 50: 51: #ifndef _SEARCH_H_ 52: #define _SEARCH_H_ 53: 54: #include <basic.h> 55: 56: typedef struct { 57: char *key; 58: void *data; 59: } ENTRY; 60: 61: typedef enum { 62: FIND, 63: ENTER 64: } ACTION; 65: 66: typedef enum { 67: preorder, 68: postorder, 69: endorder, 70: leaf 71: } VISIT; 72: 73: struct hsearch_data { 74: void *htable; 75: int htablesize; 76: }; 77: 78: #ifdef __cplusplus 79: extern "C" { 80: #endif 81: 82: IMPORT int hcreate_r(size_t nel, struct hsearch_data *htab); 83: IMPORT void hdestroy_r(struct hsearch_data* htab); 84: IMPORT int hsearch_r(ENTRY item, ACTION action, ENTRY **result, struct hsearch_data *htab); 85: IMPORT void insque(void *element, void *pred); 86: IMPORT void remque(void *element); 87: IMPORT void *lfind(const void *key, const void *base, size_t *nelp, size_t width, int (*compar)(const void *, const void *)); 88: IMPORT void *lsearch(const void *key, void *base, size_t *nelp, size_t width, int (*compar)(const void *, const void *)); 89: IMPORT void *tdelete(const void *key, void **rootp, int(*compar)(const void *, const void *)); 90: IMPORT void *tfind(const void *key, void *const *rootp, int(*compar)(const void *, const void *)); 91: IMPORT void *tsearch(const void *key, void **rootp, int(*compar)(const void *, const void *)); 92: IMPORT void twalk(const void *root, void (*action)(const void *, VISIT, int )); 93: 94: #ifdef __cplusplus 95: } 96: #endif 97: #endif /* _SEARCH_H_ */ 98: