Initial snark14m import
[snark14.git] / src / snark / getwrd.cpp
1 /*
2  ***********************************************************
3  $SNARK_Header: S N A R K  1 4 - A PICTURE RECONSTRUCTION PROGRAM $
4  $HeadURL: svn://dig.cs.gc.cuny.edu/snark/trunk/src/snark/getwrd.cpp $
5  $LastChangedRevision: 80 $
6  $Date: 2014-07-01 21:01:54 -0400 (Tue, 01 Jul 2014) $
7  $Author: agulati $
8  ***********************************************************
9
10  GETWRD RETURNS AS ITS VALUE THE FIRST FOUR LETTERS  OF THE NEXT
11  STRING OF ALPHA CHARACTERS IN THE INPUT RECORD
12  CALLS FUNCTION 'GETNXT'.  RETURNS EOL = .TRUE. WHEN END OF LINE
13  IS REACHED.
14  REVISED BY G. FRIEDER AND M. MCKAY, JULY 1981
15  */
16
17 #include <cstdio>
18 #include <cctype>
19
20 #include "blkdta.h"
21 //#include "alphab.h"
22
23 #include "wrdpack.h"
24
25 #include "inputfile.h"
26
27 //BOOLEAN isalph(CHAR letter);   
28
29 // removed old (2-parameter) version of getwrd. Lajos, Dec 16, 2004
30 INTEGER InputFile_class::getwrd(BOOLEAN NewLine, BOOLEAN* eol, const INTEGER *expect, int nexpect)
31 {
32         BOOLEAN ew;
33
34         INTEGER word, i;
35         CHAR nxtchr;
36
37         word = CHAR2INT(' ', ' ', ' ', ' ');
38         *eol = FALSE;
39
40         if (NewLine)
41                 getnxt(FALSE);
42
43         while (true)
44         {
45                 // SCAN TILL THE FIRST ALPHA CHARACTER IS HIT
46                 do
47                 {
48                         if (++ptr > DATASIZ)     // bug 190 - swr - 12/09/05
49                         { // ALPHA CHARACTER NOT FOUND
50                                 *eol = TRUE;
51                                 return CHAR2INT(' ', ' ', ' ', ' ');
52                         }
53                         nxtchr = data[ptr];
54                 } while (!(isalpha(nxtchr)));
55
56                 // THE FIRST ALPHA HAS BEEN FOUND,  STRING THE FIRST FOUR LETTERS
57                 ptr++;
58                 ptr--;
59
60                 ew = wrdpack(data, &ptr, &word);
61
62                 // SKIP ANY CHARACTER AFTER THE FIRST FOUR TILL A BLANK IS HIT
63
64                 if (!ew)
65                 {
66                         do
67                                 ptr++;
68                         while (data[ptr] != ' ');
69                 };
70
71                 // RETURN IF EXPECTED WORD HAS BEEN FOUND
72                 for (i = 0; i < nexpect; i++)
73                 {
74                         if (word == expect[i])
75                                 return word;
76                 }
77         }
78 }
79