summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@colm.net>2020-03-22 14:22:25 +0200
committerAdrian Thurston <thurston@colm.net>2020-03-22 14:22:25 +0200
commit351a7945df73ce5e44e2c9eaaa048f6e59d907b1 (patch)
tree6211d27d20bdc06c18904b2d99767fa7a3a75571
parentd5b745ef0f7a5b42674918ac204973c582de2297 (diff)
downloadcolm-351a7945df73ce5e44e2c9eaaa048f6e59d907b1.tar.gz
inputdata.h is an easy remove from libfsm
-rw-r--r--libfsm/Makefile.am2
-rw-r--r--libfsm/allocgen.cc1
-rw-r--r--libfsm/asm.cc1
-rw-r--r--libfsm/binvar.cc2
-rw-r--r--libfsm/codegen.cc1
-rw-r--r--libfsm/codegen.h3
-rw-r--r--libfsm/dot.cc7
-rw-r--r--libfsm/flatvar.cc2
-rw-r--r--libfsm/gendata.cc1
-rw-r--r--libfsm/gotoexp.cc1
-rw-r--r--libfsm/gotoloop.cc1
-rw-r--r--libfsm/idbase.h7
-rw-r--r--libfsm/inputdata.h365
-rw-r--r--libfsm/ipgoto.cc1
-rw-r--r--libfsm/switchvar.cc1
15 files changed, 10 insertions, 386 deletions
diff --git a/libfsm/Makefile.am b/libfsm/Makefile.am
index 5e870bdb..33fd6ed6 100644
--- a/libfsm/Makefile.am
+++ b/libfsm/Makefile.am
@@ -16,7 +16,7 @@ libfsminclude_HEADERS = \
libfsm_la_CPPFLAGS = -I$(top_srcdir)/aapl
dist_libfsm_la_SOURCES = \
- parsedata.h parsetree.h inputdata.h codegen.h \
+ parsedata.h parsetree.h codegen.h \
actloop.h actexp.h \
tables.h \
binary.h bingoto.h binbreak.h binvar.h \
diff --git a/libfsm/allocgen.cc b/libfsm/allocgen.cc
index 9f3fbe51..02278bfa 100644
--- a/libfsm/allocgen.cc
+++ b/libfsm/allocgen.cc
@@ -24,7 +24,6 @@
#include "parsedata.h"
#include "fsmgraph.h"
#include "gendata.h"
-#include "inputdata.h"
/*
* Code generators.
diff --git a/libfsm/asm.cc b/libfsm/asm.cc
index ca9f5d65..ecfe1c0f 100644
--- a/libfsm/asm.cc
+++ b/libfsm/asm.cc
@@ -30,7 +30,6 @@
#include "bstmap.h"
#include "gendata.h"
#include "parsedata.h"
-#include "inputdata.h"
#include <sstream>
using std::ostream;
diff --git a/libfsm/binvar.cc b/libfsm/binvar.cc
index addec681..27e40c03 100644
--- a/libfsm/binvar.cc
+++ b/libfsm/binvar.cc
@@ -22,8 +22,6 @@
#include "binvar.h"
#include "parsedata.h"
-#include "inputdata.h"
-
void BinVar::LOCATE_TRANS()
{
diff --git a/libfsm/codegen.cc b/libfsm/codegen.cc
index ae6ceb06..db8cc60a 100644
--- a/libfsm/codegen.cc
+++ b/libfsm/codegen.cc
@@ -24,7 +24,6 @@
#include "ragel.h"
#include "redfsm.h"
#include "gendata.h"
-#include "inputdata.h"
#include "parsedata.h"
#include <sstream>
#include <string>
diff --git a/libfsm/codegen.h b/libfsm/codegen.h
index 904c839f..e1a7877b 100644
--- a/libfsm/codegen.h
+++ b/libfsm/codegen.h
@@ -29,6 +29,7 @@
#include "common.h"
#include "gendata.h"
#include "vector.h"
+#include "idbase.h"
using std::string;
using std::ostream;
@@ -165,7 +166,7 @@ public:
virtual void statsSummary();
protected:
- friend TableArray;
+ friend struct TableArray;
typedef Vector<TableArray*> ArrayVector;
ArrayVector arrayVector;
diff --git a/libfsm/dot.cc b/libfsm/dot.cc
index edd4225b..f41ebc27 100644
--- a/libfsm/dot.cc
+++ b/libfsm/dot.cc
@@ -23,7 +23,6 @@
#include "ragel.h"
#include "dot.h"
#include "gendata.h"
-#include "inputdata.h"
#include "parsedata.h"
using std::istream;
@@ -391,9 +390,3 @@ void GraphvizDotGen::write( )
"}\n";
}
-void InputData::writeDot( ostream &out )
-{
- ParseData *pd = dotGenPd;
- GraphvizDotGen dotGen( this, pd->fsmCtx, pd->sectionGraph, pd->sectionName, pd->machineId, out );
- dotGen.write();
-}
diff --git a/libfsm/flatvar.cc b/libfsm/flatvar.cc
index b747afcd..40902940 100644
--- a/libfsm/flatvar.cc
+++ b/libfsm/flatvar.cc
@@ -21,9 +21,7 @@
*/
#include "flatvar.h"
-
#include "parsedata.h"
-#include "inputdata.h"
void FlatVar::LOCATE_TRANS()
{
diff --git a/libfsm/gendata.cc b/libfsm/gendata.cc
index a11f3ce7..2a518e7a 100644
--- a/libfsm/gendata.cc
+++ b/libfsm/gendata.cc
@@ -24,7 +24,6 @@
#include "ragel.h"
#include "parsedata.h"
#include "fsmgraph.h"
-#include "inputdata.h"
#include <string.h>
#include <iostream>
diff --git a/libfsm/gotoexp.cc b/libfsm/gotoexp.cc
index dea9029c..fe695401 100644
--- a/libfsm/gotoexp.cc
+++ b/libfsm/gotoexp.cc
@@ -26,7 +26,6 @@
#include "gendata.h"
#include "bstmap.h"
#include "parsedata.h"
-#include "inputdata.h"
std::ostream &GotoExp::EXEC_FUNCS()
{
diff --git a/libfsm/gotoloop.cc b/libfsm/gotoloop.cc
index 41a8cd8a..1db3f2cd 100644
--- a/libfsm/gotoloop.cc
+++ b/libfsm/gotoloop.cc
@@ -26,7 +26,6 @@
#include "bstmap.h"
#include "gendata.h"
#include "parsedata.h"
-#include "inputdata.h"
std::ostream &GotoLoop::ACTION_SWITCH()
{
diff --git a/libfsm/idbase.h b/libfsm/idbase.h
new file mode 100644
index 00000000..a34837a8
--- /dev/null
+++ b/libfsm/idbase.h
@@ -0,0 +1,7 @@
+#ifndef _IDBASE_H
+#define _IDBASE_H
+
+void translatedHostData( ostream &out, const std::string &data );
+
+#endif
+
diff --git a/libfsm/inputdata.h b/libfsm/inputdata.h
deleted file mode 100644
index 689f9078..00000000
--- a/libfsm/inputdata.h
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- * Copyright 2008-2018 Adrian Thurston <thurston@colm.net>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef _INPUT_DATA
-#define _INPUT_DATA
-
-#include "gendata.h"
-#include <iostream>
-#include <sstream>
-#include <vector>
-
-struct ParseData;
-struct Parser6;
-struct CondSpace;
-struct CondAp;
-struct ActionTable;
-struct Section;
-struct LangFuncs;
-
-void translatedHostData( ostream &out, const string &data );
-
-struct InputItem
-{
- InputItem()
- :
- section(0),
- pd(0),
- parser(0),
- processed(false)
- {}
-
- enum Type {
- HostData,
- EndSection,
- Write,
- };
-
- Type type;
- std::ostringstream data;
- std::string name;
- Section *section;
- ParseData *pd;
- Parser6 *parser;
- std::vector<std::string> writeArgs;
-
- InputLoc loc;
- bool processed;
-
- InputItem *prev, *next;
-};
-
-struct IncItem
-{
- IncItem()
- :
- section(0)
- {}
-
- Section *section;
- InputLoc loc;
- long start, end;
- size_t length;
- IncItem *prev, *next;
-};
-
-
-typedef AvlMap<std::string, ParseData*, CmpString> ParseDataDict;
-typedef AvlMapEl<std::string, ParseData*> ParseDataDictEl;
-typedef DList<ParseData> ParseDataList;
-
-/* This exists for ragel-6 parsing. */
-typedef AvlMap<const char*, Parser6*, CmpStr> ParserDict;
-typedef AvlMapEl<const char*, Parser6*> ParserDictEl;
-typedef DList<Parser6> ParserList;
-
-typedef DList<InputItem> InputItemList;
-typedef DList<IncItem> IncItemList;
-typedef Vector<const char *> ArgsVector;
-
-struct Section
-{
- Section( std::string sectionName )
- :
- sectionName(sectionName),
- lastReference(0)
- {}
-
- std::string sectionName;
-
- /* Pointer to the last input item to reference this parse data struct. Once
- * we pass over this item we are free to clear away the parse tree. */
- InputItem *lastReference;
-
- Section *prev, *next;
-};
-
-typedef AvlMap<std::string, Section*, CmpString> SectionDict;
-typedef AvlMapEl<std::string, Section*> SectionDictEl;
-typedef DList<Section> SectionList;
-
-struct FnMachine
-{
- FnMachine( const string &fileName, const string &machine )
- : fileName( fileName ), machine( machine ) {}
-
- string fileName;
- string machine;
-};
-
-struct CmpFnMachine
-{
- static inline int compare( const FnMachine &k1, const FnMachine &k2 )
- {
- int r = strcmp( k1.fileName.c_str(), k2.fileName.c_str() );
- if ( r != 0 )
- return r;
- else {
- r = strcmp( k1.machine.c_str(), k2.machine.c_str() );
- if ( r != 0 )
- return r;
- }
- return 0;
- }
-};
-
-struct IncludeRec
- : public AvlTreeEl<IncludeRec>
-{
- IncludeRec( const string &fileName, const string &machine )
- : key( fileName, machine ), data(0) {}
-
- ~IncludeRec()
- {
- if ( data != 0 )
- delete[] data;
- }
-
- FnMachine key;
-
- const FnMachine &getKey()
- { return key; }
-
- std::string foundFileName;
-
- char *data;
- int len;
-
-};
-
-struct InputData
-:
- public FsmGbl
-{
- InputData( const HostLang *hostLang,
- struct colm_sections *frontendSections, struct colm_sections *rlhcSections )
- :
- FsmGbl(hostLang),
- frontendSections(frontendSections),
- rlhcSections(rlhcSections),
- inputFileName(0),
- outputFileName(0),
- nextMachineId(0),
- inStream(0),
- outStream(0),
- outFilter(0),
- curItem(0),
- lastFlush(0),
- codeStyle(GenBinaryLoop),
- dotGenPd(0),
- machineSpec(0),
- machineName(0),
- generateDot(false),
- noLineDirectives(false),
- maxTransitions(LONG_MAX),
- numSplitPartitions(0),
- rlhc(false),
- rlhcShowCmd(false),
- noIntermediate(false),
- frontendSpecified(false),
- backendSpecified(false),
- featureSpecified(false),
- saveTemps(false),
- condsCheckDepth(-1),
- transSpanDepth(6),
- stateLimit(0),
- checkBreadth(0),
- varBackend(false),
- histogramFn(0),
- histogram(0),
- input(0),
- forceVar(false),
- noFork(false),
- utf8BomPresent(false)
- {}
-
- ~InputData();
-
- void usage();
- void version();
- void showFrontends();
- void showBackends();
-
- struct colm_sections *frontendSections;
- struct colm_sections *rlhcSections;
- std::string dirName;
-
- /* The name of the root section, this does not change during an include. */
- const char *inputFileName;
- const char *outputFileName;
-
- string comm;
-
- int nextMachineId;
-
- std::string origOutputFileName;
- std::string genOutputFileName;
-
- /* Io globals. */
- std::istream *inStream;
- std::ostream *outStream;
- output_filter *outFilter;
-
- ParseDataDict parseDataDict;
- ParseDataList parseDataList;
- InputItemList inputItems;
- InputItem *curItem;
- InputItem *lastFlush;
-
- /* Ragel-6 frontend. */
- ParserDict parserDict;
- ParserList parserList;
-
- SectionDict sectionDict;
- SectionList sectionList;
-
- ArgsVector includePaths;
-
- bool isBreadthLabel( const string &label );
- ArgsVector breadthLabels;
-
- /* Target language and output style. */
- CodeStyle codeStyle;
-
- ParseData *dotGenPd;
-
- const char *machineSpec;
- const char *machineName;
-
- bool generateDot;
-
- bool noLineDirectives;
-
- long maxTransitions;
- int numSplitPartitions;
-
- bool rlhc;
- bool rlhcShowCmd;
- bool noIntermediate;
-
- bool frontendSpecified;
- RagelFrontend frontend;
-
- bool backendSpecified;
-
- bool featureSpecified;
-
- bool saveTemps;
- long condsCheckDepth;
- long transSpanDepth;
- long stateLimit;
- bool checkBreadth;
-
- bool varBackend;
-
- const char *histogramFn;
- double *histogram;
-
- const char *input;
-
- Vector<const char**> streamFileNames;
-
- bool forceVar;
- bool noFork;
-
- /* Did the input file have a byte order mark? */
- bool utf8BomPresent;
-
- void verifyWriteHasData( InputItem *ii );
- void verifyWritesHaveData();
-
- void makeTranslateOutputFileName();
- void flushRemaining();
- void makeFirstInputItem();
- void writeOutput();
- void makeDefaultFileName();
- void createOutputStream();
- void openOutput();
- void closeOutput();
- void generateReduced();
- void prepareSingleMachine();
- void prepareAllMachines();
-
- void writeOutput( InputItem *ii );
- void writeLanguage( std::ostream &out );
-
- bool checkLastRef( InputItem *ii );
-
- void parseKelbt();
- void processDot();
- void processCodeEarly();
-
- void writeDot( std::ostream &out );
-
- void loadHistogram();
- void defaultHistogram();
-
- void parseArgs( int argc, const char **argv );
- void checkArgs();
- void terminateParser( Parser6 *parser );
- void terminateAllParsers();
-
- void processKelbt();
- void processColm();
- bool processReduce();
- bool process();
- bool parseReduce();
-
- char *readInput( const char *inputFileName );
-
- const char **makeIncludePathChecks( const char *curFileName, const char *fileName );
- std::ifstream *tryOpenInclude( const char **pathChecks, long &found );
- int main( int argc, const char **argv );
-
- int runFrontend( int argc, const char **argv );
- int runRlhc( int argc, const char **argv );
-
- typedef int (InputData::*IdProcess)( int argc, const char **argv );
-
- int runJob( const char *what, IdProcess idProcess,
- int argc, const char **argv );
-
- int rlhcMain( int argc, const char **argv );
-};
-
-
-#endif
diff --git a/libfsm/ipgoto.cc b/libfsm/ipgoto.cc
index 4b8af3d6..3718ea91 100644
--- a/libfsm/ipgoto.cc
+++ b/libfsm/ipgoto.cc
@@ -26,7 +26,6 @@
#include "gendata.h"
#include "bstmap.h"
#include "parsedata.h"
-#include "inputdata.h"
#include <sstream>
diff --git a/libfsm/switchvar.cc b/libfsm/switchvar.cc
index b19f28db..5382bc04 100644
--- a/libfsm/switchvar.cc
+++ b/libfsm/switchvar.cc
@@ -22,7 +22,6 @@
#include "switchvar.h"
#include "parsedata.h"
-#include "inputdata.h"
void SwitchVar::LOCATE_COND()
{