diff --git a/libwccl/CMakeLists.txt b/libwccl/CMakeLists.txt index 662d94d5bdb1c125433b1b425db3824a48f24477..3958d8b7d5ca9d1244307c941635db74cdc8e541 100644 --- a/libwccl/CMakeLists.txt +++ b/libwccl/CMakeLists.txt @@ -43,7 +43,6 @@ SET(libwccl_STAT_SRC sentencecontext.cpp values/bool.cpp values/position.cpp - values/positionref.cpp values/strset.cpp values/tset.cpp values/value.cpp diff --git a/libwccl/parser/grammar.g b/libwccl/parser/grammar.g index 9af1b3db183600d9da86df2a51504ae56c17b327..c4770a0d282ec31551de0fc72da14d5d1acd77dd 100644 --- a/libwccl/parser/grammar.g +++ b/libwccl/parser/grammar.g @@ -11,7 +11,6 @@ header { #include <libwccl/values/tset.h> #include <libwccl/values/strset.h> #include <libwccl/values/position.h> - #include <libwccl/values/positionref.h> // sentence context #include <libwccl/sentencecontext.h> diff --git a/libwccl/sentencecontext.cpp b/libwccl/sentencecontext.cpp index 68f9c6dad53fa4761f78109a76524161c50b590d..def13b52730ac221a8c18a20228305f374dcd131 100644 --- a/libwccl/sentencecontext.cpp +++ b/libwccl/sentencecontext.cpp @@ -24,20 +24,9 @@ int SentenceContext::get_abs_position(const Position &position) const return translate_special_position(position.get_value()); } -int SentenceContext::get_abs_position(const PositionRef &position) const -{ - int p = translate_special_position(position.get_base()->get_value()); - return p + position.get_offset(); -} - int SentenceContext::get_rel_position(const Position &position) const { return get_abs_position(position) - position_; } -int SentenceContext::get_rel_position(const PositionRef &position) const -{ - return get_abs_position(position) - position_; -} - } /* end ns Wccl */ diff --git a/libwccl/sentencecontext.h b/libwccl/sentencecontext.h index db837963ac6ae6b75c04c4b8037ea155bff1f2ff..fc69166557eef345fb3aae2ad5643c9daed9ebb7 100644 --- a/libwccl/sentencecontext.h +++ b/libwccl/sentencecontext.h @@ -2,7 +2,7 @@ #define LIBWCCL_SENTENCECONTEXT_H #include <libcorpus2/sentence.h> -#include <libwccl/values/positionref.h> +#include <libwccl/values/position.h> #include <boost/shared_ptr.hpp> namespace Wccl { @@ -104,12 +104,8 @@ public: int get_abs_position(const Position& position) const; - int get_abs_position(const PositionRef& position) const; - int get_rel_position(const Position& position) const; - int get_rel_position(const PositionRef& position) const; - int translate_special_position(int pos) const { switch (pos) { case Position::Begin: diff --git a/libwccl/values/positionref.cpp b/libwccl/values/positionref.cpp deleted file mode 100644 index f0c24c01fcd899a56211e82bc6fed88db9d8c36c..0000000000000000000000000000000000000000 --- a/libwccl/values/positionref.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include <libwccl/values/positionref.h> -#include <sstream> - -namespace Wccl { - - -std::string PositionRef::to_raw_string() const -{ - std::stringstream ss; - ss << base_->get_value(); - if (offset_ >=0) { - ss << "+"; - } - ss << offset_; - return ss.str(); -} - -} /* end ns Wccl */ diff --git a/libwccl/values/positionref.h b/libwccl/values/positionref.h deleted file mode 100644 index 30de6cc8073675410877f09163211350282b0218..0000000000000000000000000000000000000000 --- a/libwccl/values/positionref.h +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef LIBWCCL_VALUES_POSITIONREF_H -#define LIBWCCL_VALUES_POSITIONREF_H - -#include <libwccl/values/position.h> -#include <boost/make_shared.hpp> - -namespace Wccl { - -class PositionRef -{ -public: - - explicit PositionRef(const boost::shared_ptr<Position>& base, - int offset = 0) - : base_(base), offset_(offset) - { - assert(base_); - } - - explicit PositionRef(int base, int offset = 0) - : base_(boost::make_shared<Position>(base)), offset_(offset) - { - } - - std::string to_raw_string() const; - - const boost::shared_ptr<Position>& get_base() const { - return base_; - } - - int get_offset() const { - return offset_; - } - - void set_offset(int offset) { - offset_ = offset; - } - - /** - * Returns true if underlying Position is Nowhere, - * or underlying Position is Begin and offset is less than zero, - * or underlying Position is End and offset is greater than zero. - * False otherwise. - * This function does not take into account any actual sentence - * boundaries. - */ - bool points_nowhere() const { - //We probably could allow null dereference (shouldn't logically - //happen so if it does, it's bad) but let's be defensive - //and assume null base is like nowhere. - return (base_.get() == NULL) || - (base_->get_value() == Position::Nowhere) || - (base_->get_value() == Position::Begin && offset_ < 0) || - (base_->get_value() == Position::End && offset_ > 0); - } - - bool equals(const PositionRef& other) const { - return points_nowhere() ? other.points_nowhere() - : offset_ == other.offset_ && base_->equals(*other.base_); - } - -private: - boost::shared_ptr<Position> base_; - - int offset_; -}; - -} /* end ns Wccl */ - -#endif // LIBWCCL_VALUES_POSITIONREF_H diff --git a/libwccl/variables.h b/libwccl/variables.h index f6024dc2516bb04ae79ae28c62e27c3d58b683d1..917515d8745924b776fc3f19bdd46374299e2b59 100644 --- a/libwccl/variables.h +++ b/libwccl/variables.h @@ -4,7 +4,6 @@ #include <libwccl/values/bool.h> #include <libwccl/exception.h> #include <libwccl/values/position.h> -#include <libwccl/values/positionref.h> #include <libwccl/values/strset.h> #include <libwccl/values/tset.h> #include <iostream> diff --git a/tests/context.cpp b/tests/context.cpp index 9c15a817405cae7189d5ae17452ed47c8f86f156..4359dc678d8b21314475bc63e2560a5bd93b9d73 100644 --- a/tests/context.cpp +++ b/tests/context.cpp @@ -138,89 +138,5 @@ BOOST_FIXTURE_TEST_CASE(pos_no, Fpos) } -BOOST_FIXTURE_TEST_CASE(posref0, Fpos) -{ - PositionRef p(0, 1); - BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1); - BOOST_CHECK_EQUAL(sc.get_rel_position(p), 1); - sc.advance(); - BOOST_CHECK_EQUAL(sc.get_abs_position(p), 2); - BOOST_CHECK_EQUAL(sc.get_rel_position(p), 1); - sc.advance(); - BOOST_CHECK(!sc.is_inside(sc.get_abs_position(p))); -} - -BOOST_FIXTURE_TEST_CASE(posref1m1, Fpos) -{ - PositionRef p(1, -1); - BOOST_CHECK_EQUAL(sc.get_abs_position(p), 0); - BOOST_CHECK_EQUAL(sc.get_rel_position(p), 0); - sc.advance(); - BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1); - BOOST_CHECK_EQUAL(sc.get_rel_position(p), 0); - sc.advance(); - BOOST_CHECK_EQUAL(sc.get_abs_position(p), 2); - BOOST_CHECK_EQUAL(sc.get_rel_position(p), 0); - sc.advance(); - BOOST_CHECK(!sc.is_inside(sc.get_abs_position(p))); -} - -BOOST_FIXTURE_TEST_CASE(posref1_1, Fpos) -{ - PositionRef p(-1, 1); - BOOST_CHECK_EQUAL(sc.get_abs_position(p), 0); - BOOST_CHECK_EQUAL(sc.get_rel_position(p), 0); - sc.advance(); - BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1); - BOOST_CHECK_EQUAL(sc.get_rel_position(p), 0); - sc.advance(); - BOOST_CHECK_EQUAL(sc.get_abs_position(p), 2); - BOOST_CHECK_EQUAL(sc.get_rel_position(p), 0); - sc.advance(); - BOOST_CHECK(!sc.is_inside(sc.get_abs_position(p))); -} - -BOOST_FIXTURE_TEST_CASE(posref_begin, Fpos) -{ - PositionRef p(Position::Begin, 1); - BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1); - BOOST_CHECK_EQUAL(sc.get_rel_position(p), 1); - sc.advance(); - BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1); - BOOST_CHECK_EQUAL(sc.get_rel_position(p), 0); - sc.advance(); - BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1); - BOOST_CHECK_EQUAL(sc.get_rel_position(p), -1); - sc.advance(); - BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1); - BOOST_CHECK_EQUAL(sc.get_rel_position(p), -2); -} - -BOOST_FIXTURE_TEST_CASE(posref_end, Fpos) -{ - PositionRef p(Position::End, -1); - BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1); - BOOST_CHECK_EQUAL(sc.get_rel_position(p), 1); - sc.advance(); - BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1); - BOOST_CHECK_EQUAL(sc.get_rel_position(p), 0); - sc.advance(); - BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1); - BOOST_CHECK_EQUAL(sc.get_rel_position(p), -1); - sc.advance(); - BOOST_CHECK_EQUAL(sc.get_abs_position(p), 1); - BOOST_CHECK_EQUAL(sc.get_rel_position(p), -2); -} - -BOOST_FIXTURE_TEST_CASE(posref_no, Fpos) -{ - PositionRef p(Position::Nowhere, 1); - BOOST_CHECK(!sc.is_inside(sc.get_abs_position(p))); - sc.advance(); - BOOST_CHECK(!sc.is_inside(sc.get_abs_position(p))); - sc.advance(); - BOOST_CHECK(!sc.is_inside(sc.get_abs_position(p))); -} - BOOST_AUTO_TEST_SUITE_END()