Cleaned up code

release/4.3a0
dellaert 2016-05-06 09:24:02 -07:00
parent a05857f56b
commit 272303bc90
2 changed files with 28 additions and 64 deletions

View File

@ -4,59 +4,44 @@
#define BOOST_SPIRIT_USE_PHOENIX_V3 1 #define BOOST_SPIRIT_USE_PHOENIX_V3 1
#include <gtsam_unstable/linear/QPSParser.h> #include <gtsam_unstable/linear/QPSParser.h>
#include <gtsam_unstable/linear/QPSParserException.h>
#include <gtsam_unstable/linear/RawQP.h>
#include <boost/spirit/include/qi.hpp> #include <boost/spirit/include/qi.hpp>
#include <boost/lambda/lambda.hpp> #include <boost/lambda/lambda.hpp>
#include <boost/phoenix/bind.hpp> #include <boost/phoenix/bind.hpp>
#include <boost/spirit/include/classic.hpp> #include <boost/spirit/include/classic.hpp>
namespace bf = boost::fusion;
namespace qi = boost::spirit::qi;
namespace gtsam { namespace gtsam {
typedef boost::spirit::qi::grammar<boost::spirit::basic_istream_iterator<char>> base_grammar; typedef qi::grammar<boost::spirit::basic_istream_iterator<char>> base_grammar;
struct QPSParser::MPSGrammar: base_grammar { struct QPSParser::MPSGrammar: base_grammar {
typedef std::vector<char> Chars;
RawQP * rqp_; RawQP * rqp_;
boost::function<void(bf::vector<Chars, Chars, Chars> const&)> setName;
boost::function<void(bf::vector<Chars, char, Chars, Chars, Chars> const &)> addRow;
boost::function<
void(bf::vector<Chars, Chars, Chars, Chars, Chars, double, Chars> const &)> rhsSingle;
boost::function< boost::function<
void( void(
boost::fusion::vector<std::vector<char>, std::vector<char>, bf::vector<Chars, Chars, Chars, Chars, Chars, double, Chars, Chars,
std::vector<char>> const&)> setName; Chars, double>)> rhsDouble;
boost::function<
void(bf::vector<Chars, Chars, Chars, Chars, Chars, double, Chars>)> colSingle;
boost::function< boost::function<
void( void(
boost::fusion::vector<std::vector<char>, char, std::vector<char>, bf::vector<Chars, Chars, Chars, Chars, double, Chars, Chars, Chars,
std::vector<char>, std::vector<char>> const &)> addRow; double> const &)> colDouble;
boost::function<
void(bf::vector<Chars, Chars, Chars, Chars, Chars, double, Chars> const &)> addQuadTerm;
boost::function< boost::function<
void( void(
boost::fusion::vector<std::vector<char>, std::vector<char>, bf::vector<Chars, Chars, Chars, Chars, Chars, Chars, Chars, double> const &)> addBound;
std::vector<char>, std::vector<char>, std::vector<char>, double,
std::vector<char> > const &)> rhsSingle;
boost::function< boost::function<
void( void(bf::vector<Chars, Chars, Chars, Chars, Chars, Chars, Chars> const &)> addBoundFr;
boost::fusion::vector<std::vector<char>, std::vector<char>,
std::vector<char>, std::vector<char>, std::vector<char>, double,
std::vector<char>, std::vector<char>, std::vector<char>, double>)> rhsDouble;
boost::function<
void(
boost::fusion::vector<std::vector<char>, std::vector<char>,
std::vector<char>, std::vector<char>, std::vector<char>, double,
std::vector<char>>)> colSingle;
boost::function<
void(
boost::fusion::vector<std::vector<char>, std::vector<char>,
std::vector<char>, std::vector<char>, double, std::vector<char>,
std::vector<char>, std::vector<char>, double> const &)> colDouble;
boost::function<
void(
boost::fusion::vector<std::vector<char>, std::vector<char>,
std::vector<char>, std::vector<char>, std::vector<char>, double,
std::vector<char>> const &)> addQuadTerm;
boost::function<
void(
boost::fusion::vector<std::vector<char>, std::vector<char>,
std::vector<char>, std::vector<char>, std::vector<char>,
std::vector<char>, std::vector<char>, double> const &)> addBound;
boost::function<
void(
boost::fusion::vector<std::vector<char>, std::vector<char>,
std::vector<char>, std::vector<char>, std::vector<char>,
std::vector<char>, std::vector<char>> const &)> addBoundFr;
MPSGrammar(RawQP * rqp) : MPSGrammar(RawQP * rqp) :
base_grammar(start), rqp_(rqp), setName( base_grammar(start), rqp_(rqp), setName(
boost::bind(&RawQP::setName, rqp, ::_1)), addRow( boost::bind(&RawQP::setName, rqp, ::_1)), addRow(
@ -103,28 +88,11 @@ struct QPSParser::MPSGrammar: base_grammar {
>> end]; >> end];
} }
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char>, char()> character; qi::rule<boost::spirit::basic_istream_iterator<char>, char()> character;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char>, qi::rule<boost::spirit::basic_istream_iterator<char>, Chars()> word, title;
std::vector<char>()> word; qi::rule<boost::spirit::basic_istream_iterator<char> > row, end, col_single,
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char>, col_double, rhs_single, rhs_double, ranges, bound, bound_fr, bounds, quad,
std::vector<char>()> title; quad_l, rows, cols, rhs, name, start;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > row;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > end;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > col_single;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > col_double;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > rhs_single;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > rhs_double;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > ranges;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > bound;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > bound_fr;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > bounds;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > quad;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > quad_l;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > rows;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > cols;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > rhs;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > name;
boost::spirit::qi::rule<boost::spirit::basic_istream_iterator<char> > start;
}; };
QP QPSParser::Parse() { QP QPSParser::Parse() {
@ -136,8 +104,6 @@ QP QPSParser::Parse() {
if (!parse(begin, last, MPSGrammar(&rawData)) || begin != last) { if (!parse(begin, last, MPSGrammar(&rawData)) || begin != last) {
throw QPSParserException(); throw QPSParserException();
} else {
// std::cout << "Parse Successful." << std::endl;
} }
return rawData.makeQP(); return rawData.makeQP();

View File

@ -8,8 +8,6 @@
#pragma once #pragma once
#include <gtsam_unstable/linear/QP.h> #include <gtsam_unstable/linear/QP.h>
#include <gtsam_unstable/linear/QPSParserException.h>
#include <gtsam_unstable/linear/RawQP.h>
#include <fstream> #include <fstream>
namespace gtsam { namespace gtsam {