tizen 2.3.1 release
[external/ragel.git] / ragel / inputdata.h
index ad774b4..045be56 100644 (file)
 #define _INPUT_DATA
 
 #include "gendata.h"
+#include <iostream>
+#include <sstream>
+
+struct Parser;
+struct ParseData;
+
+struct InputItem
+{
+       enum Type {
+               HostData,
+               Write,
+       };
+
+       Type type;
+       std::ostringstream data;
+       std::string name;
+       ParseData *pd;
+       Vector<char *> writeArgs;
+
+       InputLoc loc;
+
+       InputItem *prev, *next;
+};
+
+struct Parser;
+
+typedef AvlMap<const char*, Parser*, CmpStr> ParserDict;
+typedef AvlMapEl<const char*, Parser*> ParserDictEl;
+typedef DList<Parser> ParserList;
+typedef DList<InputItem> InputItemList;
+typedef Vector<const char *> ArgsVector;
 
 struct InputData
 {
-       InputData( const char *inputFileName, bool outputActive, bool wantComplete ) : 
-               inputFileName(inputFileName),
+       InputData() : 
+               inputFileName(0),
+               outputFileName(0),
+               inStream(0),
                outStream(0),
-               outputActive(outputActive),
-               wantComplete(wantComplete)
+               outFilter(0),
+               dotGenParser(0)
        {}
 
        /* The name of the root section, this does not change during an include. */
        const char *inputFileName;
-       ostream *outStream;
-       bool outputActive;
-       bool wantComplete;
+       const char *outputFileName;
+
+       /* Io globals. */
+       std::istream *inStream;
+       std::ostream *outStream;
+       output_filter *outFilter;
+
+       Parser *dotGenParser;
 
-       CodeGenMap codeGenMap;
+       ParserDict parserDict;
+       ParserList parserList;
+       InputItemList inputItems;
+
+       ArgsVector includePaths;
+
+       void verifyWritesHaveData();
 
        void writeOutput();
-       void generateSpecificReduced();
+       void makeOutputStream();
        void openOutput();
-       void openOutput2();
        void generateReduced();
        void prepareMachineGen();
+       void terminateAllParsers();
 
-       void dotDefaultFileName( const char *inputFile );
        void cdDefaultFileName( const char *inputFile );
        void javaDefaultFileName( const char *inputFile );
        void rubyDefaultFileName( const char *inputFile );
        void csharpDefaultFileName( const char *inputFile );
+
+       void writeLanguage( std::ostream &out );
+       void writeXML( std::ostream &out );
 };
 
 #endif