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 
monitor
void monitor(void *F, int mode)
Definition: febase.cc:67
VoiceName
const char * VoiceName()
Definition: fevoices.cc:57
VoiceBackTrack
void VoiceBackTrack()
Definition: fevoices.cc:68
Voice::buffer
char * buffer
Definition: fevoices.h:69
noeof_asstring
@ noeof_asstring
Definition: fevoices.h:37
feInitStdin
Voice * feInitStdin(Voice *pp)
Definition: fevoices.cc:656
BT_none
@ BT_none
Definition: fevoices.h:20
Voice::Next
void Next()
Definition: fevoices.cc:85
noeof_t
noeof_t
Definition: fevoices.h:34
Voice::Typ
feBufferTypes Typ()
Definition: fevoices.cc:102
BT_execute
@ BT_execute
Definition: fevoices.h:25
noeof_procname
@ noeof_procname
Definition: fevoices.h:41
contBuffer
BOOLEAN contBuffer(feBufferTypes typ)
Definition: fevoices.cc:295
BT_proc
@ BT_proc
Definition: fevoices.h:22
Voice::curr_lineno
int curr_lineno
Definition: fevoices.h:75
BT_file
@ BT_file
Definition: fevoices.h:24
procinfo
Definition: subexpr.h:53
currentVoice
Voice * currentVoice
Definition: fevoices.cc:48
Voice::filename
char * filename
Definition: fevoices.h:63
Voice::ifsw
char ifsw
Definition: fevoices.h:79
noeof_bracket
@ noeof_bracket
Definition: fevoices.h:39
reporter.h
BT_example
@ BT_example
Definition: fevoices.h:23
myynewbuffer
void * myynewbuffer()
Definition: scanner.cc:2316
my_yylinebuf
char my_yylinebuf[80]
Definition: febase.cc:43
BT_else
@ BT_else
Definition: fevoices.h:27
BI_buffer
@ BI_buffer
Definition: fevoices.h:31
feBufferInputs
feBufferInputs
Definition: fevoices.h:28
BOOLEAN
int BOOLEAN
Definition: auxiliary.h:85
Voice::pi
procinfo * pi
Definition: fevoices.h:64
structs.h
Voice::typ
feBufferTypes typ
Definition: fevoices.h:84
exitVoice
BOOLEAN exitVoice()
Definition: fevoices.cc:332
sNoName_fe
const char sNoName_fe[]
Definition: fevoices.cc:56
exitBuffer
BOOLEAN exitBuffer(feBufferTypes typ)
Definition: fevoices.cc:227
Voice::next
Voice * next
Definition: fevoices.h:61
Voice::prev
Voice * prev
Definition: fevoices.h:62
BI_stdin
@ BI_stdin
Definition: fevoices.h:30
Voice::start_lineno
int start_lineno
Definition: fevoices.h:74
BT_break
@ BT_break
Definition: fevoices.h:21
noeof_brace
@ noeof_brace
Definition: fevoices.h:36
pp
CanonicalForm pp(const CanonicalForm &)
CanonicalForm pp ( const CanonicalForm & f )
Definition: cf_gcd.cc:248
noeof_block
@ noeof_block
Definition: fevoices.h:38
myyoldbuffer
void myyoldbuffer(void *oldb)
Definition: scanner.cc:2323
Voice::oldb
void * oldb
Definition: fevoices.h:65
feBufferTypes
feBufferTypes
Definition: fevoices.h:16
newFile
BOOLEAN newFile(char *fname)
Definition: fevoices.cc:120
Voice::Voice
Voice()
Definition: fevoices.h:86
Voice
Definition: fevoices.h:58
noeof_string
@ noeof_string
Definition: fevoices.h:42
Voice::files
FILE * files
Definition: fevoices.h:67
NULL
#define NULL
Definition: omList.c:10
BT_if
@ BT_if
Definition: fevoices.h:26
feResource.h
s
const CanonicalForm int s
Definition: facAbsFact.cc:55
Voice::ftellptr
long ftellptr
Definition: fevoices.h:71
noeof_comment
@ noeof_comment
Definition: fevoices.h:40
BI_file
@ BI_file
Definition: fevoices.h:32
newBuffer
void newBuffer(char *s, feBufferTypes t, procinfo *pname=NULL, int start_lineno=0)
Definition: fevoices.cc:157
Voice::fptr
long fptr
Definition: fevoices.h:70
Voice::sw
feBufferInputs sw
Definition: fevoices.h:76
yylineno
int yylineno
Definition: febase.cc:40