xref: /aosp_15_r20/external/selinux/libsepol/include/sepol/policydb/symtab.h (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
1*2d543d20SAndroid Build Coastguard Worker 
2*2d543d20SAndroid Build Coastguard Worker /* Author : Stephen Smalley, <[email protected]> */
3*2d543d20SAndroid Build Coastguard Worker 
4*2d543d20SAndroid Build Coastguard Worker /* FLASK */
5*2d543d20SAndroid Build Coastguard Worker 
6*2d543d20SAndroid Build Coastguard Worker /*
7*2d543d20SAndroid Build Coastguard Worker  * A symbol table (symtab) maintains associations between symbol
8*2d543d20SAndroid Build Coastguard Worker  * strings and datum values.  The type of the datum values
9*2d543d20SAndroid Build Coastguard Worker  * is arbitrary.  The symbol table type is implemented
10*2d543d20SAndroid Build Coastguard Worker  * using the hash table type (hashtab).
11*2d543d20SAndroid Build Coastguard Worker  */
12*2d543d20SAndroid Build Coastguard Worker 
13*2d543d20SAndroid Build Coastguard Worker #ifndef _SEPOL_POLICYDB_SYMTAB_H_
14*2d543d20SAndroid Build Coastguard Worker #define _SEPOL_POLICYDB_SYMTAB_H_
15*2d543d20SAndroid Build Coastguard Worker 
16*2d543d20SAndroid Build Coastguard Worker #include <sepol/policydb/hashtab.h>
17*2d543d20SAndroid Build Coastguard Worker 
18*2d543d20SAndroid Build Coastguard Worker #ifdef __cplusplus
19*2d543d20SAndroid Build Coastguard Worker extern "C" {
20*2d543d20SAndroid Build Coastguard Worker #endif
21*2d543d20SAndroid Build Coastguard Worker 
22*2d543d20SAndroid Build Coastguard Worker /* The symtab_datum struct stores the common information for
23*2d543d20SAndroid Build Coastguard Worker  * all symtab datums. It should the first element in every
24*2d543d20SAndroid Build Coastguard Worker  * struct that will be used in a symtab to allow the specific
25*2d543d20SAndroid Build Coastguard Worker  * datum types to be freely cast to this type.
26*2d543d20SAndroid Build Coastguard Worker  *
27*2d543d20SAndroid Build Coastguard Worker  * The values start at 1 - 0 is never a valid value.
28*2d543d20SAndroid Build Coastguard Worker  */
29*2d543d20SAndroid Build Coastguard Worker typedef struct symtab_datum {
30*2d543d20SAndroid Build Coastguard Worker 	uint32_t value;
31*2d543d20SAndroid Build Coastguard Worker } symtab_datum_t;
32*2d543d20SAndroid Build Coastguard Worker 
33*2d543d20SAndroid Build Coastguard Worker typedef struct {
34*2d543d20SAndroid Build Coastguard Worker 	hashtab_t table;	/* hash table (keyed on a string) */
35*2d543d20SAndroid Build Coastguard Worker 	uint32_t nprim;		/* number of primary names in table */
36*2d543d20SAndroid Build Coastguard Worker } symtab_t;
37*2d543d20SAndroid Build Coastguard Worker 
38*2d543d20SAndroid Build Coastguard Worker extern int symtab_init(symtab_t *, unsigned int size);
39*2d543d20SAndroid Build Coastguard Worker extern void symtab_destroy(symtab_t *);
40*2d543d20SAndroid Build Coastguard Worker 
41*2d543d20SAndroid Build Coastguard Worker #ifdef __cplusplus
42*2d543d20SAndroid Build Coastguard Worker }
43*2d543d20SAndroid Build Coastguard Worker #endif
44*2d543d20SAndroid Build Coastguard Worker 
45*2d543d20SAndroid Build Coastguard Worker #endif				/* _SYMTAB_H_ */
46*2d543d20SAndroid Build Coastguard Worker 
47*2d543d20SAndroid Build Coastguard Worker /* FLASK */
48