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