]> granicus.if.org Git - re2c/commitdiff
Now input stream is simple 'FILE *'.
authorUlya Trofimovich <skvadrik@gmail.com>
Thu, 26 Feb 2015 12:32:55 +0000 (12:32 +0000)
committerUlya Trofimovich <skvadrik@gmail.com>
Thu, 26 Feb 2015 12:32:55 +0000 (12:32 +0000)
This is first part of campaign to remove 'stream_lc.h'.

re2c/code.cc
re2c/main.cc
re2c/scanner.h

index d76dcb9d38fa18c9607c3a88a4b67e5eabbd69fd..2414f7bd6034dfc9faf102f7c9dc84161d63db82 100644 (file)
@@ -2418,10 +2418,11 @@ ScannerState::ScannerState()
 {
 }
 
-Scanner::Scanner(std::istream& i, OutputFile & o)
-       : ScannerState(), in(i), out(o)
-{
-}
+Scanner::Scanner (FILE * i, OutputFile & o)
+       : ScannerState ()
+       , in (i)
+       , out (o)
+{}
 
 char *Scanner::fill(char *cursor, uint need)
 {
@@ -2470,8 +2471,8 @@ char *Scanner::fill(char *cursor, uint need)
                        bot = buf;
                }
                /* Append to buffer. */
-               in.read(lim, need);
-               if ((cnt = in.gcount()) != need)
+               cnt = fread (lim, 1, need, in);
+               if (cnt != need)
                {
                        eof = &lim[cnt];
                        *eof++ = '\0';
index 8d0e665015a381194a5982d2ed4f9a542d0a6e13..89b0d0690ce2b263682b97dcc3ab48847199bc8f 100644 (file)
@@ -428,8 +428,7 @@ int main(int argc, char *argv[])
        }
 
        // set up the source stream
-       re2c::ifstream_lc source;
-
+       FILE * source = NULL;
        if (sourceFileName[0] == '-' && sourceFileName[1] == '\0')
        {
                if (fFlag)
@@ -438,9 +437,13 @@ int main(int argc, char *argv[])
                        return 1;
                }
                sourceFileName = "<stdin>";
-               source.open(stdin);
+               source = stdin;
+       }
+       else
+       {
+               source = fopen (sourceFileName, "rb");
        }
-       else if (!source.open(sourceFileName).is_open())
+       if (source == NULL)
        {
                cerr << "re2c: error: cannot open " << sourceFileName << "\n";
                return 1;
@@ -470,5 +473,6 @@ int main(int argc, char *argv[])
        // output generated code
        output.emit ();
 
+       fclose (source);
        return 0;
 }
index 5c1674bb08c88c957d541e8064deb031c88e27c7..1327e5f816d55a84d80367b3600dbe230525ae15 100644 (file)
@@ -2,7 +2,6 @@
 #ifndef _scanner_h
 #define        _scanner_h
 
-#include <iosfwd>
 #include <string>
 
 #include "globals.h"
@@ -27,7 +26,7 @@ class Scanner:
        public line_number, private ScannerState
 {
 private:
-       std::istream&   in;
+       FILE * in;
        OutputFile & out;
 
 private:
@@ -37,7 +36,7 @@ private:
        void set_sourceline(char *& cursor);
 
 public:
-       Scanner(std::istream&, OutputFile &);
+       Scanner(FILE *, OutputFile &);
        ~Scanner();
 
        enum ParseMode {