Macros | Functions | Variables
fevoices.cc File Reference
#include <kernel/mod2.h>
#include <omalloc/omalloc.h>
#include <misc/options.h>
#include <reporter/reporter.h>
#include <kernel/oswrapper/feread.h>
#include <Singular/fevoices.h>
#include <Singular/subexpr.h>
#include <Singular/ipshell.h>
#include <Singular/sdb.h>
#include <stdlib.h>
#include <stdio.h>
#include <misc/mylimits.h>
#include <stdarg.h>
#include <sys/stat.h>
#include <ctype.h>
#include <unistd.h>

Go to the source code of this file.

Macros

#define fePutChar(c)   fputc((unsigned char)(c),stdout)
 
#define INITIAL_PRINT_BUFFER   24*1024L
 
#define MAX_FILE_BUFFER   4*4096
 
#define STDIN_FILENO   0
 

Functions

const char * VoiceName ()
 
void VoiceBackTrack ()
 
BOOLEAN newFile (char *fname, FILE *f)
 
void newBuffer (char *s, feBufferTypes t, procinfo *pi, int lineno)
 
BOOLEAN exitBuffer (feBufferTypes typ)
 
BOOLEAN contBuffer (feBufferTypes typ)
 
BOOLEAN exitVoice ()
 
static void feShowPrompt (void)
 
static int fePrintEcho (char *anf, char *)
 
int feReadLine (char *b, int l)
 
VoicefeInitStdin (Voice *pp)
 

Variables

char fe_promptstr [] =" "
 
FILE * File_Profiling =NULL
 
static char * feBuffer =(char *)omAlloc(INITIAL_PRINT_BUFFER)
 
int blocknest
 
int yy_noeof =0
 
int yy_blocklineno
 
VoicecurrentVoice = NULL
 
const char * sNoName_fe ="_"
 

Macro Definition Documentation

#define fePutChar (   c)    fputc((unsigned char)(c),stdout)

Definition at line 33 of file fevoices.cc.

#define INITIAL_PRINT_BUFFER   24*1024L

Definition at line 41 of file fevoices.cc.

#define MAX_FILE_BUFFER   4*4096

Definition at line 45 of file fevoices.cc.

#define STDIN_FILENO   0

Definition at line 649 of file fevoices.cc.

Function Documentation

BOOLEAN contBuffer ( feBufferTypes  typ)

Definition at line 301 of file fevoices.cc.

302 {
303  //printf("contBuffer: %d(%s),(%x)\n",
304  // typ,BT_name[typ], currentVoice);
305  if (typ == BT_break) // valid inside for, while. may skip if, else
306  {
307  // first check for valid buffer type
309  loop
310  {
311  if ((p->typ != BT_if)
312  &&(p->typ != BT_else))
313  {
314  if (p->typ == BT_break /*typ*/)
315  {
316  while (p != currentVoice)
317  {
318  exitVoice();
319  }
321  currentVoice->fptr=0;
322  return FALSE;
323  }
324  else return TRUE;
325  }
326  if (p->prev==NULL) break;
327  p=p->prev;
328  }
329  }
330  return TRUE;
331 }
long fptr
Definition: fevoices.h:69
int yylineno
Definition: febase.cc:45
loop
Definition: myNF.cc:98
#define FALSE
Definition: auxiliary.h:140
return P p
Definition: myNF.cc:203
#define TRUE
Definition: auxiliary.h:144
Definition: fevoices.h:57
int start_lineno
Definition: fevoices.h:71
Definition: fevoices.h:24
BOOLEAN exitVoice()
Definition: fevoices.cc:338
feBufferTypes typ
Definition: fevoices.h:81
Voice * prev
Definition: fevoices.h:61
#define NULL
Definition: omList.c:10
Voice * currentVoice
Definition: fevoices.cc:57
BOOLEAN exitBuffer ( feBufferTypes  typ)

Definition at line 233 of file fevoices.cc.

234 {
235  //printf("exitBuffer: %d(%s),(%x)\n",
236  // typ,BT_name[typ], currentVoice);
237  //Voice *p=currentVoice;
238  //Print("-----------------\ncurr:");
239  //do
240  //{
241  //Print("voice fn:%s\n",p->filename);
242  //p=p->prev;
243  //}
244  //while (p!=NULL);
245  //Print("----------------\n");
246  if (typ == BT_break) // valid inside for, while. may skip if, else
247  {
248  /*4 first check for valid buffer type, skip if/else*/
250  loop
251  {
252  if ((p->typ != BT_if)
253  &&(p->typ != BT_else))
254  {
255  if (p->typ == BT_break /*typ*/)
256  {
257  while (p != currentVoice)
258  {
259  exitVoice();
260  }
261  exitVoice();
262  return FALSE;
263  }
264  else return TRUE;
265  }
266  if (p->prev==NULL) break;
267  p=p->prev;
268  }
269  /*4 break not inside a for/while: return an error*/
270  if (/*typ*/ BT_break != currentVoice->typ) return 1;
271  return exitVoice();
272  }
273 
274  if ((typ == BT_proc)
275  || (typ == BT_example))
276  {
277  Voice *p=currentVoice;
278  loop
279  {
280  if ((p->typ == BT_proc)
281  || (p->typ == BT_example))
282  {
283  while (p != currentVoice)
284  {
285  exitVoice();
286  }
287  exitVoice();
288  return FALSE;
289  }
290  if (p->prev==NULL) break;
291  p=p->prev;
292  }
293  }
294  /*4 return not inside a proc: return an error*/
295  return TRUE;
296 }
loop
Definition: myNF.cc:98
#define FALSE
Definition: auxiliary.h:140
return P p
Definition: myNF.cc:203
#define TRUE
Definition: auxiliary.h:144
Definition: fevoices.h:57
Definition: fevoices.h:24
BOOLEAN exitVoice()
Definition: fevoices.cc:338
feBufferTypes typ
Definition: fevoices.h:81
Voice * prev
Definition: fevoices.h:61
#define NULL
Definition: omList.c:10
Voice * currentVoice
Definition: fevoices.cc:57
BOOLEAN exitVoice ( )

Definition at line 338 of file fevoices.cc.

339 {
340  //printf("exitVoice: %d(%s),(%x)\n",
341  // currentVoice->typ,BT_name[currentVoice->typ], currentVoice);
342  //{
343  //Voice *p=currentVoice;
344  //Print("-----------------\ncurr:");
345  //do
346  //{
347  //Print("voice fn:%s\n",p->filename);
348  //p=p->prev;
349  //}
350  //while (p!=NULL);
351  //Print("----------------\n");
352  //}
353  if (currentVoice!=NULL)
354  {
355  if (currentVoice->oldb!=NULL)
356  {
359  }
361  {
363  }
364  if (currentVoice->prev!=NULL)
365  {
366  //printf("exitVoice typ %d(%s)\n",
367  // currentVoice->typ,BT_name[currentVoice->typ]);
368  if (currentVoice->typ==BT_if)
369  {
370  currentVoice->prev->ifsw=2;
371  }
372  else
373  {
374  currentVoice->prev->ifsw=0;
375  }
376  if ((currentVoice->sw == BI_file)
377  && (currentVoice->files!=NULL))
378  {
379  fclose(currentVoice->files);
380  }
381  if (currentVoice->filename!=NULL)
382  {
385  }
386  if (currentVoice->buffer!=NULL)
387  {
390  }
393  }
395  delete currentVoice;
396  currentVoice=p;
397  }
398  return currentVoice==NULL;
399 }
int yylineno
Definition: febase.cc:45
char * buffer
Definition: fevoices.h:68
return P p
Definition: myNF.cc:203
char * filename
Definition: fevoices.h:62
void * ADDRESS
Definition: auxiliary.h:161
Definition: fevoices.h:57
Voice * next
Definition: fevoices.h:60
int curr_lineno
Definition: fevoices.h:72
char ifsw
Definition: fevoices.h:76
Definition: fevoices.h:24
Voice * feInitStdin(Voice *pp)
Definition: fevoices.cc:651
#define omFree(addr)
Definition: omAllocDecl.h:261
feBufferTypes typ
Definition: fevoices.h:81
Voice * prev
Definition: fevoices.h:61
void * oldb
Definition: fevoices.h:64
void myyoldbuffer(void *oldb)
Definition: scanner.cc:2326
#define NULL
Definition: omList.c:10
Voice * currentVoice
Definition: fevoices.cc:57
FILE * files
Definition: fevoices.h:66
feBufferInputs sw
Definition: fevoices.h:73
Voice* feInitStdin ( Voice pp)

Definition at line 651 of file fevoices.cc.

652 {
653  Voice *p = new Voice;
654  p->files = stdin;
655  p->sw = (isatty(STDIN_FILENO)) ? BI_stdin : BI_file;
656  if ((pp!=NULL) && (pp->files==stdin))
657  {
658  p->files=freopen("/dev/tty","r",stdin);
659  //stdin=p->files;
660  p->sw = BI_stdin;
661  }
662  p->filename = omStrDup("STDIN");
663  p->start_lineno = 1;
666  return p;
667 }
return P p
Definition: myNF.cc:203
char * filename
Definition: fevoices.h:62
Definition: fevoices.h:57
int start_lineno
Definition: fevoices.h:71
#define STDIN_FILENO
Definition: fevoices.cc:649
#define NULL
Definition: omList.c:10
FILE * files
Definition: fevoices.h:66
void omMarkAsStaticAddr(void *addr)
feBufferInputs sw
Definition: fevoices.h:73
#define omStrDup(s)
Definition: omAllocDecl.h:263
static int fePrintEcho ( char *  anf,
char *   
)
static

Definition at line 413 of file fevoices.cc.

414 {
415  char *ss=strrchr(anf,'\n');
416  int len_s;
417  if (ss==NULL)
418  {
419  len_s=strlen(anf);
420  }
421  else
422  {
423  len_s=ss-anf+1;
424  }
425  // my_yylinebuf:
426  int mrc=si_min(len_s,79)-1;
427  strcpy(my_yylinebuf,anf+(len_s-1)-mrc);
428  if (my_yylinebuf[mrc] == '\n') my_yylinebuf[mrc] = '\0';
429  mrc--;
430  // handle echo:
431  if (((si_echo>myynest)
432  && ((currentVoice->typ==BT_proc)
434  || (currentVoice->typ==BT_file)
435  || (currentVoice->typ==BT_none)
436  )
437  && (strncmp(anf,";return();",10)!=0)
438  )
441  {
443  {
444  if (currentVoice->filename==NULL)
445  Print("(none) %3d%c ",yylineno,prompt_char);
446  else
448  }
449  {
450  fwrite(anf,1,len_s,stdout);
451  mflush();
452  }
453  if (traceit&TRACE_SHOW_LINE)
454  {
455  while(fgetc(stdin)!='\n');
456  }
457  }
458  else if (traceit&TRACE_SHOW_LINENO)
459  {
460  Print("{%d}",yylineno);
461  mflush();
462  }
463  else if (traceit&TRACE_PROFILING)
464  {
465  if (File_Profiling==NULL)
466  File_Profiling=fopen("smon.out","a");
467  if (File_Profiling==NULL)
468  traceit &= (~TRACE_PROFILING);
469  else
470  {
471  if (currentVoice->filename==NULL)
472  fprintf(File_Profiling,"(none) %d\n",yylineno);
473  else
474  fprintf(File_Profiling,"%s %d\n",currentVoice->filename,yylineno);
475  }
476  }
477 #ifdef HAVE_SDB
478  if ((blocknest==0)
479  && (currentVoice->pi!=NULL)
480  && (currentVoice->pi->trace_flag!=0))
481  {
482  sdb(currentVoice, anf, len_s);
483  }
484 #endif
485  prompt_char = '.';
486  return len_s;
487 }
#define TRACE_SHOW_LINENO
Definition: reporter.h:28
int yylineno
Definition: febase.cc:45
#define Print
Definition: emacs.cc:83
static int si_min(const int a, const int b)
Definition: auxiliary.h:167
char * filename
Definition: fevoices.h:62
char prompt_char
Definition: febase.cc:44
int blocknest
Definition: scanner.cc:581
FILE * File_Profiling
Definition: fevoices.cc:38
int traceit
Definition: febase.cc:47
void sdb(Voice *currentVoice, const char *currLine, int len)
Definition: sdb.cc:201
#define mflush()
Definition: reporter.h:55
int myynest
Definition: febase.cc:46
char my_yylinebuf[80]
Definition: febase.cc:48
#define TRACE_SHOW_LINE
Definition: reporter.h:30
procinfo * pi
Definition: fevoices.h:63
feBufferTypes typ
Definition: fevoices.h:81
#define TRACE_SHOW_LINE1
Definition: reporter.h:35
#define NULL
Definition: omList.c:10
Voice * currentVoice
Definition: fevoices.cc:57
#define TRACE_PROFILING
Definition: reporter.h:47
char trace_flag
Definition: subexpr.h:61
int si_echo
Definition: febase.cc:41
int feReadLine ( char *  b,
int  l 
)

Definition at line 489 of file fevoices.cc.

490 {
491  char *s=NULL;
492  int offset = 0; /* will not be used if s==NULL*/
493  // try to read from the buffer into b, max l chars
494  if (currentVoice!=NULL)
495  {
496  if((currentVoice->buffer!=NULL)
497  && (currentVoice->buffer[currentVoice->fptr]!='\0'))
498  {
499  NewBuff:
500  register int i=0;
501  long startfptr=currentVoice->fptr;
502  long tmp_ptr=currentVoice->fptr;
503  l--;
504  loop
505  {
506  register char c=
507  b[i]=currentVoice->buffer[tmp_ptr/*currentVoice->fptr*/];
508  i++;
509  if (yy_noeof==noeof_block)
510  {
511  if (c<' ') yylineno++;
512  else if (c=='}') break;
513  }
514  else
515  {
516  if ((c<' ') ||
517  (c==';') ||
518  (c==')')
519  )
520  break;
521  }
522  if (i>=l) break;
523  tmp_ptr++;/*currentVoice->fptr++;*/
524  if(currentVoice->buffer[tmp_ptr/*currentVoice->fptr*/]=='\0') break;
525  }
526  currentVoice->fptr=tmp_ptr;
527  b[i]='\0';
528  if (currentVoice->sw==BI_buffer)
529  {
530  if (startfptr==0)
531  {
532  char *anf=currentVoice->buffer;
533  const char *ss=strchr(anf,'\n');
534  long len;
535  if (ss==NULL) len=strlen(anf);
536  else len=ss-anf;
537  char *s=(char *)omAlloc(len+2);
538  strncpy(s,anf,len+2);
539  s[len+1]='\0';
540  fePrintEcho(s,b);
541  omFree((ADDRESS)s);
542  }
543  else if (/*(startfptr>0) &&*/
544  (currentVoice->buffer[startfptr-1]=='\n'))
545  {
546  char *anf=currentVoice->buffer+startfptr;
547  const char *ss=strchr(anf,'\n');
548  long len;
549  if (ss==NULL) len=strlen(anf);
550  else len=ss-anf;
551  char *s=(char *)omAlloc(len+2);
552  strncpy(s,anf,len+2);
553  s[len+1]='\0';
554  yylineno++;
555  fePrintEcho(s,b);
556  omFree((ADDRESS)s);
557  }
558  }
559  currentVoice->fptr++;
560  return i;
561  }
562  // no buffer there or e-o-buffer or eoln:
563  if (currentVoice->sw!=BI_buffer)
564  {
565  currentVoice->fptr=0;
566  if (currentVoice->buffer==NULL)
567  {
570  }
571  }
572  offset=0;
573  NewRead:
574  yylineno++;
575  if (currentVoice->sw==BI_stdin)
576  {
577  feShowPrompt();
579  &(currentVoice->buffer[offset]),
580  omSizeOfAddr(currentVoice->buffer)-1-offset);
581  //int i=0;
582  //if (s!=NULL)
583  // while((s[i]!='\0') /*&& (i<MAX_FILE_BUFFER)*/) {s[i] &= (char)127;i++;}
584  }
585  else if (currentVoice->sw==BI_file)
586  {
587  s=fgets(currentVoice->buffer+offset,(MAX_FILE_BUFFER-1-sizeof(ADDRESS))-offset,
589  }
590  //else /* BI_buffer */ s==NULL => return 0
591  // done by the default return
592  }
593  if (s!=NULL)
594  {
595  // handle prot:
596  if (feProt&SI_PROT_I)
597  {
598  fputs(s,feProtFile);
599  }
600  int rc=fePrintEcho(s,b)+1;
601  //s[strlen(s)+1]='\0'; add an second \0 at the end of the string
602  s[rc]='\0';
603  // handel \\ :
604  rc-=3;
605  if ((s[rc]=='\\')&&(currentVoice->sw!=BI_buffer))
606  {
607  s[rc]='\0';
608  offset+=rc;
609  if (offset<(int)omSizeOfAddr(currentVoice->buffer)) goto NewRead;
610  }
611  goto NewBuff;
612  }
613  /* else if (s==NULL) */
614  {
615  const char *err;
616  switch(yy_noeof)
617  {
618  case noeof_brace:
619  case noeof_block:
620  err="{...}";
621  break;
622  case noeof_asstring:
623  err="till `.`";
624  break;
625  case noeof_string:
626  err="string";
627  break;
628  case noeof_bracket:
629  err="(...)";
630  break;
631  case noeof_procname:
632  err="proc";
633  break;
634  case noeof_comment:
635  err="/*...*/";
636  break;
637  default:
638  return 0;
639  }
640  Werror("premature end of file while reading %s",err);
641  return 0;
642  }
643 }
char fe_promptstr[]
Definition: fevoices.cc:37
long fptr
Definition: fevoices.h:69
FILE * feProtFile
Definition: reporter.cc:57
int yy_noeof
Definition: fevoices.cc:55
const CanonicalForm int s
Definition: facAbsFact.cc:55
char *(* fe_fgets_stdin)(const char *pr, char *s, int size)
Definition: feread.cc:33
int yylineno
Definition: febase.cc:45
char * buffer
Definition: fevoices.h:68
static void feShowPrompt(void)
Definition: fevoices.cc:405
loop
Definition: myNF.cc:98
size_t omSizeOfAddr(const void *addr)
Definition: omAllocSystem.c:97
void * ADDRESS
Definition: auxiliary.h:161
#define omAlloc(size)
Definition: omAllocDecl.h:210
int feProt
Definition: reporter.cc:56
#define SI_PROT_I
Definition: reporter.h:50
#define omFree(addr)
Definition: omAllocDecl.h:261
static int fePrintEcho(char *anf, char *)
Definition: fevoices.cc:413
int i
Definition: cfEzgcd.cc:123
#define NULL
Definition: omList.c:10
#define MAX_FILE_BUFFER
Definition: fevoices.cc:45
Voice * currentVoice
Definition: fevoices.cc:57
FILE * files
Definition: fevoices.h:66
void omMarkAsStaticAddr(void *addr)
feBufferInputs sw
Definition: fevoices.h:73
int offset
Definition: libparse.cc:1091
const poly b
Definition: syzextra.cc:213
void Werror(const char *fmt,...)
Definition: reporter.cc:199
int l
Definition: cfEzgcd.cc:94
static void feShowPrompt ( void  )
static

Definition at line 405 of file fevoices.cc.

406 {
408 }
char fe_promptstr[]
Definition: fevoices.cc:37
char prompt_char
Definition: febase.cc:44
void newBuffer ( char *  s,
feBufferTypes  t,
procinfo pi,
int  lineno 
)

Definition at line 171 of file fevoices.cc.

172 {
173  currentVoice->Next();
174  //Print(":Buffer%d(%s):%s(%x)\n",
175  // t,BT_name[t],pname,currentVoice);
176  if (pi!=NULL)
177  {
178  long l=strlen(pi->procname);
179  if (pi->libname!=NULL) l+=strlen(pi->libname);
180  currentVoice->filename = (char *)omAlloc(l+3);
181  *currentVoice->filename='\0';
182  if (pi->libname!=NULL) strcat(currentVoice->filename,pi->libname);
183  strcat(currentVoice->filename,"::");
184  strcat(currentVoice->filename,pi->procname);
185  currentVoice->pi = pi;
186  }
187  else
188  {
191  }
192  currentVoice->buffer = s;
194  currentVoice->typ = t;
195  switch (t)
196  {
197  case BT_execute:
198  yylineno-=2;
199  break;
200  case BT_proc:
201  case BT_example:
203  yylineno = lineno+1;
204  break;
205  case BT_if:
206  case BT_else:
207  case BT_break:
209  break;
210  //case BT_file:
211  default:
212  yylineno = 1;
213  break;
214  }
215  //Print("start body (%s) at line %d\n",BT_name[t],yylineno);
217  //printf("start buffer typ %d\n",t);
218  //Voice *p=currentVoice;
219  //Print("-----------------\ncurr:");
220  //do
221  //{
222  //Print("voice fn:%s\n",p->filename);
223  //p=p->prev;
224  //}
225  //while (p!=NULL);
226  //Print("----------------\n");
227 }
const CanonicalForm int s
Definition: facAbsFact.cc:55
int yylineno
Definition: febase.cc:45
char * buffer
Definition: fevoices.h:68
void Next()
Definition: fevoices.cc:94
char * filename
Definition: fevoices.h:62
void * myynewbuffer()
Definition: scanner.cc:2319
#define omAlloc(size)
Definition: omAllocDecl.h:210
int start_lineno
Definition: fevoices.h:71
char * procname
Definition: subexpr.h:56
Definition: fevoices.h:24
char * libname
Definition: subexpr.h:55
procinfo * pi
Definition: fevoices.h:63
feBufferTypes typ
Definition: fevoices.h:81
Voice * prev
Definition: fevoices.h:61
#define pi
Definition: libparse.cc:1143
void * oldb
Definition: fevoices.h:64
int yy_blocklineno
Definition: fevoices.cc:56
#define NULL
Definition: omList.c:10
Voice * currentVoice
Definition: fevoices.cc:57
feBufferInputs sw
Definition: fevoices.h:73
int l
Definition: cfEzgcd.cc:94
#define omStrDup(s)
Definition: omAllocDecl.h:263
BOOLEAN newFile ( char *  fname,
FILE *  f 
)

Definition at line 129 of file fevoices.cc.

130 {
131  currentVoice->Next();
132  //Print(":File%d(%s):%s(%x)\n",
133  // currentVoice->typ,BT_name[currentVoice->typ],fname,currentVoice);
134  currentVoice->filename = omStrDup(fname);
136  if (strcmp(fname,"STDIN") == 0)
137  {
138  currentVoice->files = stdin;
141  }
142  else
143  {
144  currentVoice->sw = BI_file; /* needed by exitVoice below */
145  if (f!=NULL)
146  currentVoice->files = f;
147  else
148  {
149  currentVoice->files = feFopen(fname,"r",NULL,TRUE);
150  if (currentVoice->files==NULL)
151  {
152  exitVoice();
153  return TRUE;
154  }
155  }
157  }
159  //Voice *p=currentVoice;
160  //Print("-----------------\ncurr:");
161  //do
162  //{
163  //Print("voice fn:%s\n",p->filename);
164  //p=p->prev;
165  //}
166  //while (p!=NULL);
167  //Print("----------------\n");
168  return FALSE;
169 }
int yylineno
Definition: febase.cc:45
void Next()
Definition: fevoices.cc:94
#define FALSE
Definition: auxiliary.h:140
char * filename
Definition: fevoices.h:62
#define TRUE
Definition: auxiliary.h:144
int start_lineno
Definition: fevoices.h:71
BOOLEAN exitVoice()
Definition: fevoices.cc:338
FILE * feFopen(const char *path, const char *mode, char *where, short useWerror, short path_only)
Definition: feFopen.cc:46
FILE * f
Definition: checklibs.c:7
#define NULL
Definition: omList.c:10
Voice * currentVoice
Definition: fevoices.cc:57
FILE * files
Definition: fevoices.h:66
void omMarkAsStaticAddr(void *addr)
feBufferInputs sw
Definition: fevoices.h:73
#define omStrDup(s)
Definition: omAllocDecl.h:263
void VoiceBackTrack ( )

Definition at line 77 of file fevoices.cc.

78 {
80  while (p->prev!=NULL)
81  {
82  p=p->prev;
83  char *s=p->filename;
84  if (s==NULL)
85  PrintS("-- called from ? --\n");
86  else
87  Print("-- called from %s --\n",s);
88  }
89 }
const CanonicalForm int s
Definition: facAbsFact.cc:55
#define Print
Definition: emacs.cc:83
return P p
Definition: myNF.cc:203
char * filename
Definition: fevoices.h:62
Definition: fevoices.h:57
void PrintS(const char *s)
Definition: reporter.cc:294
Voice * prev
Definition: fevoices.h:61
#define NULL
Definition: omList.c:10
Voice * currentVoice
Definition: fevoices.cc:57
const char* VoiceName ( )

Definition at line 66 of file fevoices.cc.

67 {
68  if ((currentVoice!=NULL)
69  && (currentVoice->filename!=NULL))
70  return currentVoice->filename;
71  return sNoName_fe;
72 }
char * filename
Definition: fevoices.h:62
#define NULL
Definition: omList.c:10
Voice * currentVoice
Definition: fevoices.cc:57
const char * sNoName_fe
Definition: fevoices.cc:65

Variable Documentation

int blocknest

Definition at line 581 of file scanner.cc.

Voice* currentVoice = NULL

Definition at line 57 of file fevoices.cc.

char fe_promptstr[] =" "

Definition at line 37 of file fevoices.cc.

char* feBuffer =(char *)omAlloc(INITIAL_PRINT_BUFFER)
static

Definition at line 47 of file fevoices.cc.

FILE* File_Profiling =NULL

Definition at line 38 of file fevoices.cc.

const char* sNoName_fe ="_"

Definition at line 65 of file fevoices.cc.

int yy_blocklineno

Definition at line 56 of file fevoices.cc.

int yy_noeof =0

Definition at line 55 of file fevoices.cc.