1 | #ifndef LIBPARSE_H |
---|
2 | #define LIBPARSE_H |
---|
3 | /**************************************** |
---|
4 | * Computer Algebra System SINGULAR * |
---|
5 | ****************************************/ |
---|
6 | /* |
---|
7 | * ABSTRACT: lib parsing |
---|
8 | */ |
---|
9 | typedef enum { OLD_LIBSTYLE, NEW_LIBSTYLE } lib_style_types; |
---|
10 | typedef enum { LOAD_LIB, GET_INFO } lp_modes; |
---|
11 | |
---|
12 | #ifdef STANDALONE_PARSER |
---|
13 | |
---|
14 | |
---|
15 | #define idhdl void* |
---|
16 | #define leftv void* |
---|
17 | #define package void* |
---|
18 | #define BOOLEAN int |
---|
19 | |
---|
20 | typedef enum { LANG_NONE, LANG_TOP, LANG_SINGULAR, LANG_C, LANG_MIX, LANG_MAX} language_defs; |
---|
21 | // LANG_TOP : Toplevel package only |
---|
22 | // LANG_SINGULAR: |
---|
23 | // LANG_C : |
---|
24 | // |
---|
25 | |
---|
26 | class proc_singular |
---|
27 | { |
---|
28 | public: |
---|
29 | long proc_start; // position where proc is starting |
---|
30 | long def_end; // position where proc header is ending |
---|
31 | long help_start; // position where help is starting |
---|
32 | long help_end; // position where help is starting |
---|
33 | long body_start; // position where proc-body is starting |
---|
34 | long body_end; // position where proc-body is ending |
---|
35 | long example_start; // position where example is starting |
---|
36 | long proc_end; // position where proc is ending |
---|
37 | int proc_lineno; |
---|
38 | int body_lineno; |
---|
39 | int example_lineno; |
---|
40 | char *body; |
---|
41 | long help_chksum; |
---|
42 | }; |
---|
43 | |
---|
44 | struct proc_object |
---|
45 | { |
---|
46 | //public: |
---|
47 | BOOLEAN (*function)(leftv res, leftv v); |
---|
48 | }; |
---|
49 | union uprocinfodata |
---|
50 | { |
---|
51 | public: |
---|
52 | proc_singular s; // data of Singular-procedure |
---|
53 | struct proc_object o; // pointer to binary-function |
---|
54 | }; |
---|
55 | |
---|
56 | typedef union uprocinfodata procinfodata; |
---|
57 | |
---|
58 | class procinfo; |
---|
59 | typedef procinfo * procinfov; |
---|
60 | |
---|
61 | class procinfo |
---|
62 | { |
---|
63 | public: |
---|
64 | char *libname; |
---|
65 | char *procname; |
---|
66 | package pack; |
---|
67 | language_defs language; |
---|
68 | short ref; |
---|
69 | char is_static; // if set, proc not accessible for user |
---|
70 | char trace_flag; |
---|
71 | procinfodata data; |
---|
72 | }; |
---|
73 | #endif |
---|
74 | |
---|
75 | procinfo *iiInitSingularProcinfo(procinfo* pi, const char *libname, |
---|
76 | const char *procname, int line, long pos, BOOLEAN pstatic=FALSE); |
---|
77 | |
---|
78 | int yylplex(const char *libname, const char *libfile, lib_style_types *lib_style, |
---|
79 | idhdl pl, BOOLEAN autoexport=FALSE, lp_modes=LOAD_LIB); |
---|
80 | |
---|
81 | void reinit_yylp(); |
---|
82 | |
---|
83 | extern char * text_buffer; |
---|
84 | |
---|
85 | # define YYLP_ERR_NONE 0 |
---|
86 | # define YYLP_DEF_BR2 1 |
---|
87 | # define YYLP_BODY_BR2 2 |
---|
88 | # define YYLP_BODY_BR3 3 |
---|
89 | # define YYLP_BODY_TMBR2 4 |
---|
90 | # define YYLP_BODY_TMBR3 5 |
---|
91 | # define YYLP_EX_BR2 6 |
---|
92 | # define YYLP_EX_BR3 7 |
---|
93 | # define YYLP_BAD_CHAR 8 |
---|
94 | # define YYLP_MISSQUOT 9 |
---|
95 | # define YYLP_MISS_BR1 10 |
---|
96 | # define YYLP_MISS_BR2 11 |
---|
97 | # define YYLP_MISS_BR3 12 |
---|
98 | |
---|
99 | # ifdef STANDALONE_PARSER |
---|
100 | #ifndef unix |
---|
101 | extern FILE* myfopen(char *path, char *mode); |
---|
102 | extern size_t myfread(void *ptr, size_t size, size_t nmemb, FILE *stream); |
---|
103 | #else |
---|
104 | #define myfopen fopen |
---|
105 | #define myfread fread |
---|
106 | #endif |
---|
107 | # endif |
---|
108 | |
---|
109 | #endif /* LIBPARSE_H */ |
---|
110 | |
---|
111 | |
---|