Annotation of OpenXM_contrib/pari/src/language/anal.h, Revision 1.1.1.1
1.1 maekawa 1: /*************************************************************************/
2: /* */
3: /* Declarations specific to the analyzer */
4: /* */
5: /*************************************************************************/
6: /* $Id: anal.h,v 1.1.1.1 1999/09/16 13:48:02 karim Exp $ */
7:
8: typedef struct default_type {
9: char *name;
10: void *fun;
11: } default_type;
12:
13: typedef struct gp_args {
14: int nloc, narg;
15: GEN *arg;
16: } gp_args;
17:
18: typedef struct module {
19: entree *func;
20: char **help;
21: } module;
22:
23: entree *do_alias(entree *ep);
24: int is_identifier(char *s);
25: entree *is_entry_intern(char *s, entree **table, long *hash);
26: long is_keyword_char(char c);
27: char *readstring(char *src, char *s);
28: long loop_break();
29: long did_break();
30: void print_prefixed_text(char *s, char *prefix, char *str);
31:
32: void term_color(int c);
33: char *term_get_color(int c);
34:
35: void push_val(entree *ep, GEN a);
36: void pop_val(entree *ep);
37:
38: extern long prec;
39: extern GEN gnil;
40:
41: extern char *current_function;
42: extern GEN (*gp_history_fun)(long, long, char *, char *);
43: extern int (*whatnow_fun)(char *, int);
44: extern void *foreignHandler;
45: extern GEN (*foreignExprHandler)(char*);
46: extern char foreignExprSwitch;
47: extern entree * (*foreignAutoload)(char*, long);
48: extern void (*foreignFuncFree)(entree *);
49:
50: /* Variables containing the list of PARI functions */
51: extern int functions_tblsz; /* hashcodes table size */
52: extern module *pari_modules; /* list of functions modules */
53: extern entree **functions_hash; /* functions hashtable */
54: extern entree **members_hash; /* members hashtable */
55: extern char *helpmessages_basic[];
56: extern entree functions_basic[];
57:
58: /* Variables containing the list of specific GP functions */
59: extern char *helpmessages_gp[];
60: extern entree functions_gp[];
61: extern entree gp_member_list[];
62: extern char *helpmessages_highlevel[];
63: extern entree functions_highlevel[];
64: extern int gp_colors[];
65: extern int disable_color,added_newline;
66:
67: /* Variables containing the list of old PARI fonctions (up to 1.39.15) */
68: extern module *pari_oldmodules; /* list of functions modules */
69: extern entree **funct_old_hash; /* hashtable */
70: extern char *oldhelpmessage[], *helpmessages_oldgp[];
71: extern entree oldfonctions[], functions_oldgp[];
72:
73: /* backward compatibility */
74: extern long compatible;
75: enum { NONE, WARN, OLDFUN, OLDALL };
76: #define new_fun_set (compatible == NONE || compatible == WARN)
77:
78: /* return type for GP functions */
79: enum { RET_GEN, RET_INT, RET_VOID };
80:
81: /* are we under emacs ? (might change output) */
82: extern int under_emacs;
83:
84: /* entrees */
85: #define Epstatic 0x100
86: #define EpVALENCE(ep) ((ep)->valence & 0xFF)
87: #define EpSTATIC(ep) ((ep)->valence & 0x100)
88: #define EpSETSTATIC(ep) ((ep)->valence |= 0x100)
89: #define PARAMSHIFT 9
90: #define EpNPARAM(ep) ((ep)->valence >> PARAMSHIFT)
91: #define EpPREDEFINED(ep) (EpVALENCE(ep) < EpUSER)
92:
93: #define EpINSTALL 200
94: #define EpMEMBER 105
95: #define EpGVAR 104
96: #define EpVAR 103
97: #define EpALIAS 102
98: #define EpNEW 101
99: #define EpUSER 100
100:
101: #define NOT_CREATED_YET (entree *)1 /* for check_new_fun */
102: #define initial_value(ep) ((ep)+1)
103:
104: #define is_entry(s) (is_entry_intern(s,functions_hash,NULL))
105:
106: /* blocs */
107: #define BL_HEAD 3
108: #define bl_base(x) ((x) - BL_HEAD)
109: #define bl_next(x) (((GEN)x)[-3])
110: #define bl_prev(x) (((GEN)x)[-2])
111: #define bl_num(x) (((GEN)x)[-1])
112:
113: /* break */
114: enum { br_NONE, br_BREAK, br_NEXT, br_RETURN }; /* break status */
115:
116: /* formatted printing */
117: #ifndef LONG_IS_64BIT
118: # define VOIR_STRING1 "[&=%08lx] "
119: # define VOIR_STRING2 "%08lx "
120: # define VOIR_STRING3 " %08lx : "
121: #else
122: # define VOIR_STRING1 "[&=%08x%08x] "
123: # define VOIR_STRING2 "%08x%08x "
124: # define VOIR_STRING3 " %08x%08x : "
125: #endif
126:
127: /* signals */
128: #define INIT_JMPm 1
129: #define INIT_SIGm 2
130: #define INIT_JMP (init_opts & INIT_JMPm)
131: #define INIT_SIG (init_opts & INIT_SIGm)
132: #define INIT_JMP_on (init_opts |= INIT_JMPm)
133: #define INIT_SIG_on (init_opts |= INIT_SIGm)
134: #define INIT_JMP_off (init_opts &= ~INIT_JMPm)
135: #define INIT_SIG_off (init_opts &= ~INIT_SIGm)
136:
137: /* gp_colors */
138: void decode_color(int n, int *c);
139: #define c_NONE 0xffffUL
140: enum { c_ERR, c_HIST, c_PROMPT, c_INPUT, c_OUTPUT, c_HELP, c_TIME, c_LAST };
141:
142: /* general printing */
143: #define print_text(s) print_prefixed_text((s),NULL,NULL);
144:
145: /* infiles */
146: #define MAX_BUFFER 64
147: #define mf_IN 1
148: #define mf_PIPE 2
149: #define mf_FALSE 4
150:
151: /* for filtre */
152: #define f_COMMENT 0
153: #define f_INIT 1
154: #define f_KEEPCASE 2
155: #define f_READL 4
156: #define f_REG 8
157: #define f_ENDFILE 16
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>