From 1411c018c70a1843841a44ed0fec66c3b54dfd5a Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Thu, 6 Nov 2014 18:16:15 +0100 Subject: [PATCH] fallback stdin input when parameter not set --- aconversions2/src/aconversion.cpp | 2 +- aderivation2/src/aderivation.cpp | 12 ++++++------ adeterminize2/src/adeterminize.cpp | 3 +++ adiff2/src/adiff.cpp | 8 ++++++-- aintegral2/src/aintegral.cpp | 12 ++++++------ arun2/src/arun.cpp | 4 ++++ astat2/src/astat.cpp | 6 +++++- astringology2/src/astringology.cpp | 4 ++++ makefile | 19 +++++++++++++++---- 9 files changed, 50 insertions(+), 20 deletions(-) diff --git a/aconversions2/src/aconversion.cpp b/aconversions2/src/aconversion.cpp index 664821f562..cccc2e9902 100644 --- a/aconversions2/src/aconversion.cpp +++ b/aconversions2/src/aconversion.cpp @@ -124,7 +124,7 @@ int main(int argc, char* argv[]) std::string input( istreambuf_iterator<char>( cin ), ( istreambuf_iterator<char>( ) ) ); SaxParseInterface::parseMemory( input, tokens ); - if(alib::api<exception::AlibException>::first(tokens)) throw alib::api<exception::AlibException>::parse(tokens); + if(alib::api<exception::AlibException>::first(tokens)) throw alib::DataFactory::fromTokens<exception::AlibException>(tokens); ConversionHandler conv( tokens, target, algorithm, cout ); conv.convert( ); diff --git a/aderivation2/src/aderivation.cpp b/aderivation2/src/aderivation.cpp index bd08316c48..c1bfb1bb92 100644 --- a/aderivation2/src/aderivation.cpp +++ b/aderivation2/src/aderivation.cpp @@ -30,6 +30,8 @@ int main(int argc, char** argv) { } else { sax::SaxParseInterface::parseFile(string.getValue(), stringTokens); } + } else { + sax::SaxParseInterface::parseStdin(stringTokens); } std::list<sax::Token> regexpTokens; @@ -39,14 +41,12 @@ int main(int argc, char** argv) { } else { sax::SaxParseInterface::parseFile(regexp.getValue(), regexpTokens); } + } else { + sax::SaxParseInterface::parseStdin(regexpTokens); } - { - regexp::RegExp regexp = alib::DataFactory::fromTokens<regexp::RegExp>(regexpTokens); - string::LinearString string = alib::DataFactory::fromTokens<string::LinearString>(stringTokens); - alib::DataFactory::toStdout(regexp::RegExpDerivation::derivation(regexp, string)); - return 0; - } + alib::DataFactory::toStdout(regexp::RegExpDerivation::derivation(alib::DataFactory::fromTokens<regexp::RegExp>(regexpTokens), alib::DataFactory::fromTokens<string::LinearString>(stringTokens))); + return 0; } catch(const exception::AlibException& exception) { alib::DataFactory::toStdout(exception); return 1; diff --git a/adeterminize2/src/adeterminize.cpp b/adeterminize2/src/adeterminize.cpp index 24bd0e23d9..49b0d77c53 100644 --- a/adeterminize2/src/adeterminize.cpp +++ b/adeterminize2/src/adeterminize.cpp @@ -37,6 +37,9 @@ int main(int argc, char** argv) { } catch (const exception::AlibException& e) { alib::DataFactory::toStdout(e); return 1; + } catch(const TCLAP::ArgException& exception) { + std::cout << exception.error() << std::endl; + return 2; } catch (...) { return 127; } diff --git a/adiff2/src/adiff.cpp b/adiff2/src/adiff.cpp index 7a64bae4df..3e63c36f18 100644 --- a/adiff2/src/adiff.cpp +++ b/adiff2/src/adiff.cpp @@ -34,6 +34,8 @@ int main(int argc, char** argv) { } else { sax::SaxParseInterface::parseFile(input1.getValue(), tokens1); } + } else { + sax::SaxParseInterface::parseStdin(tokens1); } std::list<sax::Token> tokens2; @@ -43,6 +45,8 @@ int main(int argc, char** argv) { } else { sax::SaxParseInterface::parseFile(input2.getValue(), tokens2); } + } else { + sax::SaxParseInterface::parseStdin(tokens2); } if (tokens1.empty() || tokens2.empty()) @@ -64,8 +68,8 @@ int main(int argc, char** argv) { std::cout << "Only automata and grammars can be differenciated." << std::endl; - if(alib::api<exception::AlibException>::first(tokens1)) std::cout << alib::api<exception::AlibException>::parse(tokens1).getCause() << std::endl; - if(alib::api<exception::AlibException>::first(tokens2)) std::cout << alib::api<exception::AlibException>::parse(tokens2).getCause() << std::endl; + if(alib::api<exception::AlibException>::first(tokens1)) std::cout << alib::DataFactory::fromTokens<exception::AlibException>(tokens1).getCause() << std::endl; + if(alib::api<exception::AlibException>::first(tokens2)) std::cout << alib::DataFactory::fromTokens<exception::AlibException>(tokens2).getCause() << std::endl; return 2; } catch (const exception::AlibException& e) { diff --git a/aintegral2/src/aintegral.cpp b/aintegral2/src/aintegral.cpp index 2af07d69b8..dd2d74e696 100644 --- a/aintegral2/src/aintegral.cpp +++ b/aintegral2/src/aintegral.cpp @@ -30,6 +30,8 @@ int main(int argc, char** argv) { } else { sax::SaxParseInterface::parseFile(string.getValue(), stringTokens); } + } else { + sax::SaxParseInterface::parseStdin(stringTokens); } std::list<sax::Token> regexpTokens; @@ -39,14 +41,12 @@ int main(int argc, char** argv) { } else { sax::SaxParseInterface::parseFile(regexp.getValue(), regexpTokens); } + } else { + sax::SaxParseInterface::parseStdin(regexpTokens); } - { - regexp::RegExp regexp = alib::DataFactory::fromTokens<regexp::RegExp>(regexpTokens); - string::LinearString string = alib::DataFactory::fromTokens<string::LinearString>(stringTokens); - alib::DataFactory::toStdout(regexp::RegExpIntegral::integral(regexp, string)); - return 0; - } + alib::DataFactory::toStdout(regexp::RegExpIntegral::integral(alib::DataFactory::fromTokens<regexp::RegExp>(regexpTokens), alib::DataFactory::fromTokens<string::LinearString>(stringTokens))); + return 0; } catch(const exception::AlibException& exception) { alib::DataFactory::toStdout(exception); return 1; diff --git a/arun2/src/arun.cpp b/arun2/src/arun.cpp index 20660413f8..dfe6c9d39d 100644 --- a/arun2/src/arun.cpp +++ b/arun2/src/arun.cpp @@ -42,6 +42,8 @@ int main(int argc, char* argv[]) { } else { sax::SaxParseInterface::parseFile(input.getValue(), inputTokens); } + } else { + sax::SaxParseInterface::parseStdin(inputTokens); } std::list<sax::Token> automatonTokens; @@ -51,6 +53,8 @@ int main(int argc, char* argv[]) { } else { sax::SaxParseInterface::parseFile(automaton.getValue(), automatonTokens); } + } else { + sax::SaxParseInterface::parseStdin(automatonTokens); } if( type.getValue() == "occurrences") { diff --git a/astat2/src/astat.cpp b/astat2/src/astat.cpp index e9973ffc02..3b2dffd084 100644 --- a/astat2/src/astat.cpp +++ b/astat2/src/astat.cpp @@ -109,7 +109,11 @@ int main(int argc, char* argv[]) { std::list<sax::Token> tokens; if(file.isSet()) { - sax::SaxParseInterface::parseFile(file.getValue(), tokens); + if(file.getValue() == "-") { + sax::SaxParseInterface::parseStdin(tokens); + } else { + sax::SaxParseInterface::parseFile(file.getValue(), tokens); + } } else { sax::SaxParseInterface::parseStdin(tokens); } diff --git a/astringology2/src/astringology.cpp b/astringology2/src/astringology.cpp index 4f1a2ce66c..35c67edbab 100644 --- a/astringology2/src/astringology.cpp +++ b/astringology2/src/astringology.cpp @@ -42,6 +42,8 @@ int main(int argc, char* argv[]) { } else { sax::SaxParseInterface::parseFile(subject.getValue(), subjectTokens); } + } else { + sax::SaxParseInterface::parseStdin(subjectTokens); } std::list<sax::Token> patternTokens; @@ -51,6 +53,8 @@ int main(int argc, char* argv[]) { } else { sax::SaxParseInterface::parseFile(pattern.getValue(), patternTokens); } + } else { + sax::SaxParseInterface::parseStdin(patternTokens); } if( algorithm.getValue() == "exactMatch") { diff --git a/makefile b/makefile index 4a99548705..901c4a0edf 100644 --- a/makefile +++ b/makefile @@ -21,6 +21,21 @@ SUBDIRS_BINS = acat2 \ astringology2 \ atrim2 \ + +ifneq (3.81, $(firstword $(sort $(MAKE_VERSION) 3.81))) +$(error version $(MAKE_VERSION) is not supported. You need at least 3.82 is needed for make to work) +endif + +TCLAP_EXISTS = $(shell g++ -c -o /dev/null -xc++ - <<< \\\#include\ \<tclap/CmdLine.h\> 2>/dev/null; echo $$?) +ifneq (0, $(TCLAP_EXISTS)) +$(error You need tclap installed) +endif + +TCLAP_EXISTS = $(shell g++ -c -o /dev/null -xc++ - <<< \\\#include\ \<cppunit/Test.h\> 2>/dev/null; echo $$?) +ifneq (0, $(TCLAP_EXISTS)) +$(error You need tclap installed) +endif + SUBDIRS_WITH_MAKE = $(dir $(wildcard */makefile)) .PHONY: $(addsuffix .all-debug , $(CORE_LIB) $(SUBDIRS_LIBS) $(SUBDIRS_BINS)) \ @@ -33,10 +48,6 @@ SUBDIRS_WITH_MAKE = $(dir $(wildcard */makefile)) all-release build-release build-test-release unit-test-release clean-release \ debug release clean doc all -# ifneq (3.82, $(firstword $(sort $(MAKE_VERSION) 3.81))) -# $(error version at least 3.82 is needed for make to work) -# endif - all: @echo "What to do master?" -- GitLab