/usr/include/dparser/dsymtab.h is in mcrl2 201210.1-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | /*
Copyright 2002-2004 John Plevyak, All Rights Reserved
*/
#ifndef _dsymtab_H_
#define _dsymtab_H_
#ifndef D_UserSym
#define D_UserSym unsigned int
#endif
struct D_SymHash;
struct D_Scope;
typedef struct D_Sym {
char *name;
int len;
unsigned int hash;
struct D_Scope *scope;
struct D_Sym *update_of;
struct D_Sym *next;
D_UserSym user;
} D_Sym;
#define D_SCOPE_INHERIT 0
#define D_SCOPE_RECURSIVE 1
#define D_SCOPE_PARALLEL 2
#define D_SCOPE_SEQUENTIAL 3
typedef struct D_Scope {
unsigned int kind:2;
unsigned int owned_by_user:1; /* don't automatically delete */
unsigned int depth;
D_Sym *ll;
struct D_SymHash *hash;
D_Sym *updates;
struct D_Scope *search; /* scope to start search */
struct D_Scope *dynamic; /* dynamic scope (e.g. methods) */
struct D_Scope *up; /* enclosing scope */
struct D_Scope *up_updates; /* prior scope in speculative parse */
struct D_Scope *down; /* enclosed scopes (for FREE) */
struct D_Scope *down_next; /* next enclosed scope */
} D_Scope;
D_Scope *new_D_Scope(D_Scope *parent);
D_Scope *enter_D_Scope(D_Scope *current, D_Scope *scope);
D_Scope *commit_D_Scope(D_Scope *scope);
D_Scope *equiv_D_Scope(D_Scope *scope);
D_Scope *global_D_Scope(D_Scope *scope);
D_Scope *scope_D_Scope(D_Scope *current, D_Scope *scope);
void free_D_Scope(D_Scope *st, int force);
D_Sym *new_D_Sym(D_Scope *st, char *name, char *end, int sizeof_D_Sym);
#define NEW_D_SYM(_st, _name, _end) new_D_Sym(_st, _name, _end, sizeof(D_Sym))
void free_D_Sym(D_Sym *sym);
D_Sym *find_D_Sym(D_Scope *st, char *name, char *end);
D_Sym *find_global_D_Sym(D_Scope *st, char *name, char *end);
/* use for first update in a production to update scope */
D_Sym *update_D_Sym(D_Sym *sym, D_Scope **st, int sizeof_D_Sym);
#define UPDATE_D_SYM(_sym, _st) update_D_Sym(_sym, _st, sizeof(D_Sym))
/* use for first subsequent updates in a production */
D_Sym *update_additional_D_Sym(D_Scope *st, D_Sym *sym, int sizeof_D_Sym);
#define UPDATE_ADDITIONAL_D_SYM(_st, _sym) update_additional_D_Sym(_st, _sym, sizeof(D_Sym))
D_Sym *current_D_Sym(D_Scope *st, D_Sym *sym);
D_Sym *find_D_Sym_in_Scope(D_Scope *st, D_Scope *cur, char *name, char *end);
D_Sym *next_D_Sym_in_Scope(D_Scope **st, D_Sym **sym);
void print_scope(D_Scope *st);
#endif
|