My Project  UNKNOWN_GIT_VERSION
fevoices.h
Go to the documentation of this file.
1 #ifndef FEVOICES_H
2 #define FEVOICES_H
3 /****************************************
4  * * Computer Algebra System SINGULAR *
5  * ****************************************/
6 /*
7  * * ABSTRACT: class Voice
8  * */
9 
10 #include "reporter/reporter.h"
11 
12 #include "resources/feResource.h"
13 
14 #include "kernel/structs.h"
15 
17 {
18  BT_none = 0, // entry level
19  BT_break = 1, // while, for
20  BT_proc, // proc
21  BT_example, // example
22  BT_file, // <"file"
23  BT_execute, // execute
24  BT_if, // if
25  BT_else // else
26 };
27 
29 {
30  BI_stdin = 1,
33 };
34 enum noeof_t
35 {
43 }; /* for scanner.l */
44 
45 extern int yylineno;
46 extern char my_yylinebuf[80];
47 extern const char sNoName_fe[];
48 
49 #ifdef __cplusplus
50 
51 /* the C++-part: */
52 
53 // LANG_TOP : Toplevel package only
54 // LANG_SINGULAR:
55 // LANG_C :
56 //
57 
58 class Voice
59 {
60  public:
63  char * filename; // file name or proc name
64  procinfo * pi; // proc info
65  void * oldb; // internal scanner buffer
66  // for files only:
67  FILE * files; // file handle
68  // for buffers only:
69  char * buffer; // buffer pointer
70  long fptr; // current position in buffer
71  long ftellptr; // with glibc 2.22, file position gets lost
72  // in sig_chld_hdl (ssi:ffork link), see examples/waitall.sing
73 
74  int start_lineno; // lineno, to restore in recursion
75  int curr_lineno; // current lineno
76  feBufferInputs sw; // BI_stdin: read from STDIN
77  // BI_buffer: buffer
78  // BI_file: files
79  char ifsw; // if-switch:
80  /*1 ifsw==0: no if statement, else is invalid
81  * ==1: if (0) processed, execute else
82  * ==2: if (1) processed, else allowed but not executed
83  */
84  feBufferTypes typ; // buffer type: see BT_..
85 
86  Voice() { memset(this,0,sizeof(*this));}
88  void Next();
89 } ;
90 
91 extern Voice *currentVoice;
92 
94 
95 const char * VoiceName();
96 void VoiceBackTrack();
100 void monitor(void *F, int mode); /* FILE*, int */
101 BOOLEAN newFile(char* fname);
102 void newBuffer(char* s, feBufferTypes t, procinfo *pname = NULL, int start_lineno = 0);
103 void * myynewbuffer();
104 void myyoldbuffer(void * oldb);
105 
106 #endif
107 #endif
108 
long fptr
Definition: fevoices.h:70
BOOLEAN newFile(char *fname)
Definition: fevoices.cc:120
const CanonicalForm int s
Definition: facAbsFact.cc:55
BOOLEAN contBuffer(feBufferTypes typ)
Definition: fevoices.cc:295
BOOLEAN exitVoice()
Definition: fevoices.cc:332
char * buffer
Definition: fevoices.h:69
void Next()
Definition: fevoices.cc:85
feBufferTypes Typ()
Definition: fevoices.cc:102
char * filename
Definition: fevoices.h:63
void * myynewbuffer()
Definition: scanner.cc:2316
void monitor(void *F, int mode)
Definition: febase.cc:67
Definition: fevoices.h:58
Voice * next
Definition: fevoices.h:61
int curr_lineno
Definition: fevoices.h:75
char my_yylinebuf[80]
Definition: febase.cc:43
const char * VoiceName()
Definition: fevoices.cc:57
void VoiceBackTrack()
Definition: fevoices.cc:68
noeof_t
Definition: fevoices.h:34
int start_lineno
Definition: fevoices.h:74
char ifsw
Definition: fevoices.h:79
Definition: fevoices.h:24
procinfo * pi
Definition: fevoices.h:64
CanonicalForm pp(const CanonicalForm &)
CanonicalForm pp ( const CanonicalForm & f )
Definition: cf_gcd.cc:248
feBufferTypes typ
Definition: fevoices.h:84
feBufferInputs
Definition: fevoices.h:28
Voice * prev
Definition: fevoices.h:62
void * oldb
Definition: fevoices.h:65
int yylineno
Definition: febase.cc:40
feBufferTypes
Definition: fevoices.h:16
void myyoldbuffer(void *oldb)
Definition: scanner.cc:2323
#define NULL
Definition: omList.c:10
const char sNoName_fe[]
Definition: fevoices.cc:56
BOOLEAN exitBuffer(feBufferTypes typ)
Definition: fevoices.cc:227
FILE * files
Definition: fevoices.h:67
Voice * feInitStdin(Voice *pp)
Definition: fevoices.cc:656
feBufferInputs sw
Definition: fevoices.h:76
Voice()
Definition: fevoices.h:86
long ftellptr
Definition: fevoices.h:71
Voice * currentVoice
Definition: fevoices.cc:48
int BOOLEAN
Definition: auxiliary.h:85
void newBuffer(char *s, feBufferTypes t, procinfo *pname=NULL, int start_lineno=0)
Definition: fevoices.cc:157