~ubuntu-branches/ubuntu/trusty/opensm/trusty-proposed

« back to all changes in this revision

Viewing changes to include/opensm/st.h

  • Committer: Bazaar Package Importer
  • Author(s): Benoit Mortier
  • Date: 2009-10-21 11:31:00 UTC
  • Revision ID: james.westby@ubuntu.com-20091021113100-40r3ajbveyk8tp14
Tags: upstream-3.2.6-20090317
ImportĀ upstreamĀ versionĀ 3.2.6-20090317

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
 
3
 * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.
 
4
 * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
 
5
 *
 
6
 * This software is available to you under a choice of one of two
 
7
 * licenses.  You may choose to be licensed under the terms of the GNU
 
8
 * General Public License (GPL) Version 2, available from the file
 
9
 * COPYING in the main directory of this source tree, or the
 
10
 * OpenIB.org BSD license below:
 
11
 *
 
12
 *     Redistribution and use in source and binary forms, with or
 
13
 *     without modification, are permitted provided that the following
 
14
 *     conditions are met:
 
15
 *
 
16
 *      - Redistributions of source code must retain the above
 
17
 *        copyright notice, this list of conditions and the following
 
18
 *        disclaimer.
 
19
 *
 
20
 *      - Redistributions in binary form must reproduce the above
 
21
 *        copyright notice, this list of conditions and the following
 
22
 *        disclaimer in the documentation and/or other materials
 
23
 *        provided with the distribution.
 
24
 *
 
25
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 
26
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
27
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 
28
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 
29
 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 
30
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 
31
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 
32
 * SOFTWARE.
 
33
 *
 
34
 */
 
35
 
 
36
/* @(#) st.h 5.1 89/12/14 */
 
37
 
 
38
#ifndef ST_INCLUDED
 
39
#define ST_INCLUDED
 
40
 
 
41
#include <stdlib.h>
 
42
 
 
43
#ifdef __cplusplus
 
44
#  define BEGIN_C_DECLS extern "C" {
 
45
#  define END_C_DECLS   }
 
46
#else                           /* !__cplusplus */
 
47
#  define BEGIN_C_DECLS
 
48
#  define END_C_DECLS
 
49
#endif                          /* __cplusplus */
 
50
 
 
51
BEGIN_C_DECLS
 
52
#define st_ptr_t unsigned long
 
53
typedef st_ptr_t st_data_t;
 
54
 
 
55
#define ST_DATA_T_DEFINED
 
56
 
 
57
typedef struct st_table st_table;
 
58
 
 
59
struct st_hash_type {
 
60
        int (*compare) (void *, void *);
 
61
        st_ptr_t(*hash) (void *);
 
62
};
 
63
 
 
64
struct st_table {
 
65
        struct st_hash_type *type;
 
66
        int num_bins;
 
67
        int num_entries;
 
68
        struct st_table_entry **bins;
 
69
};
 
70
 
 
71
#define st_is_member(table,key) st_lookup(table,key,(st_data_t *)0)
 
72
 
 
73
enum st_retval { ST_CONTINUE, ST_STOP, ST_DELETE };
 
74
 
 
75
st_table *st_init_table(struct st_hash_type *);
 
76
st_table *st_init_table_with_size(struct st_hash_type *, size_t);
 
77
st_table *st_init_numtable(void);
 
78
st_table *st_init_numtable_with_size(size_t);
 
79
st_table *st_init_strtable(void);
 
80
st_table *st_init_strtable_with_size(size_t);
 
81
int st_delete(st_table *, st_data_t *, st_data_t *);
 
82
int st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t);
 
83
int st_insert(st_table *, st_data_t, st_data_t);
 
84
int st_lookup(st_table *, st_data_t, st_data_t *);
 
85
void st_foreach(st_table *,
 
86
                int (*)(st_data_t key, st_data_t val, st_data_t arg),
 
87
                st_data_t);
 
88
void st_add_direct(st_table *, st_data_t, st_data_t);
 
89
void st_free_table(st_table *);
 
90
void st_cleanup_safe(st_table *, st_data_t);
 
91
st_table *st_copy(st_table *);
 
92
 
 
93
#define ST_NUMCMP       ((int (*)()) 0)
 
94
#define ST_NUMHASH      ((int (*)()) -2)
 
95
 
 
96
#define st_numcmp       ST_NUMCMP
 
97
#define st_numhash      ST_NUMHASH
 
98
 
 
99
/* int st_strhash(void); */
 
100
 
 
101
END_C_DECLS
 
102
#endif                          /* ST_INCLUDED */