summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2017-06-26 03:58:09 (GMT)
committerTobias Markmann <tm@ayena.de>2017-06-26 09:13:57 (GMT)
commit38b577abe56c76805e2f2bebb5194bee28359145 (patch)
treecb05fdfd725936c1fbe42e9245220befeadc8f6f /SwifTools
parent96528818b201c5a250701b58bb9c4d11048b237e (diff)
downloadswift-38b577abe56c76805e2f2bebb5194bee28359145.zip
swift-38b577abe56c76805e2f2bebb5194bee28359145.tar.bz2
Use size_t instead of int in SpellParser::PositionPair
Use of int required a lot of casts when using the indices with std::string methods. Furthermore code used -1 as error code, which should have used std::optional for invalid PoistionPair instnaces. Test-Information: All tests pass on Debian Stretch with clang-3.9. Change-Id: Ic5c44ed606deb58b6123d654f25fc50f047dfbc8
Diffstat (limited to 'SwifTools')
-rw-r--r--SwifTools/MacOSXChecker.mm2
-rw-r--r--SwifTools/SpellParser.h2
-rw-r--r--SwifTools/UnitTest/SpellParserTest.cpp24
3 files changed, 14 insertions, 14 deletions
diff --git a/SwifTools/MacOSXChecker.mm b/SwifTools/MacOSXChecker.mm
index 519f06c..aefe3e7 100644
--- a/SwifTools/MacOSXChecker.mm
+++ b/SwifTools/MacOSXChecker.mm
@@ -42,38 +42,38 @@ void MacOSXChecker::setActiveLanguage(const std::string& /*language*/) {
assert(false);
}
std::string MacOSXChecker::activeLanguage() const {
assert(false);
}
std::vector<std::string> MacOSXChecker::supportedLanguages() const {
assert(false);
}
void MacOSXChecker::getSuggestions(const std::string& word, std::vector<std::string>& list) {
NSSpellChecker* spellChecker = [NSSpellChecker sharedSpellChecker];
NSString* wordString = [[NSString alloc] initWithUTF8String: word.c_str()];
NSArray* suggestions = [spellChecker guessesForWordRange:NSMakeRange(0, [wordString length]) inString:wordString language:nil inSpellDocumentWithTag:0];
for(unsigned int i = 0; i < [suggestions count]; ++i) {
list.push_back(std::string([[suggestions objectAtIndex:i] UTF8String]));
}
[wordString release];
}
void MacOSXChecker::checkFragment(const std::string& fragment, PositionPairList& misspelledPositions) {
NSSpellChecker* spellChecker = [NSSpellChecker sharedSpellChecker];
size_t nextLocation = 0;
NSRange range;
NSString *fragmentString = [[NSString alloc] initWithUTF8String: fragment.c_str()];
do {
range = [spellChecker checkSpellingOfString:fragmentString startingAt:static_cast<long>(nextLocation)];
if (range.location != NSNotFound) {
if (range.location < nextLocation)
break;
- misspelledPositions.push_back(PositionPair(static_cast<int>(range.location), static_cast<int>(range.location + range.length)));
+ misspelledPositions.push_back(PositionPair(range.location, range.location + range.length));
nextLocation = range.location + range.length + 1;
}
} while (range.location != NSNotFound);
[fragmentString release];
}
}
diff --git a/SwifTools/SpellParser.h b/SwifTools/SpellParser.h
index 5b057c9..3c1cf8b 100644
--- a/SwifTools/SpellParser.h
+++ b/SwifTools/SpellParser.h
@@ -1,36 +1,36 @@
/*
* Copyright (c) 2011 Vlad Voicu
* Licensed under the Simplified BSD license.
* See Documentation/Licenses/BSD-simplified.txt for more information.
*/
/*
* Copyright (c) 2016 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
#pragma once
#include <vector>
#include <boost/algorithm/string.hpp>
#include <boost/tuple/tuple.hpp>
namespace Swift {
enum token_ids
{
ID_WWW = 1,
ID_HTTP = 2,
ID_WORD = 3,
ID_CHAR = 4
};
- typedef boost::tuple<int, int> PositionPair;
+ typedef boost::tuple<size_t, size_t> PositionPair;
typedef std::vector<PositionPair > PositionPairList;
class SpellParser{
public:
void check(const std::string& fragment, PositionPairList& wordPositions);
};
}
diff --git a/SwifTools/UnitTest/SpellParserTest.cpp b/SwifTools/UnitTest/SpellParserTest.cpp
index ccfd7e5..bf974ec 100644
--- a/SwifTools/UnitTest/SpellParserTest.cpp
+++ b/SwifTools/UnitTest/SpellParserTest.cpp
@@ -7,52 +7,52 @@
/*
* Copyright (c) 2016 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
#include <memory>
#include <boost/algorithm/string.hpp>
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <SwifTools/SpellParser.h>
using namespace Swift;
class SpellParserTest : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(SpellParserTest);
CPPUNIT_TEST(testSimpleCheckFragment);
CPPUNIT_TEST(testWWWCheckFragment);
CPPUNIT_TEST_SUITE_END();
public:
SpellParserTest() {
}
void tearDown() {
position_.clear();
}
void testSimpleCheckFragment() {
parser_->check("fragment test", position_);
- int size = position_.size();
- CPPUNIT_ASSERT_EQUAL(2, size);
- CPPUNIT_ASSERT_EQUAL(0, boost::get<0>(position_.front()));
- CPPUNIT_ASSERT_EQUAL(8, boost::get<1>(position_.front()));
- CPPUNIT_ASSERT_EQUAL(9, boost::get<0>(position_.back()));
- CPPUNIT_ASSERT_EQUAL(13, boost::get<1>(position_.back()));
+ auto size = position_.size();
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), size);
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), boost::get<0>(position_.front()));
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(8), boost::get<1>(position_.front()));
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(9), boost::get<0>(position_.back()));
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(13), boost::get<1>(position_.back()));
}
void testWWWCheckFragment() {
parser_->check("www.link.com fragment test", position_);
- int size = position_.size();
- CPPUNIT_ASSERT_EQUAL(2, size);
- CPPUNIT_ASSERT_EQUAL(13, boost::get<0>(position_.front()));
- CPPUNIT_ASSERT_EQUAL(21, boost::get<1>(position_.front()));
- CPPUNIT_ASSERT_EQUAL(22, boost::get<0>(position_.back()));
- CPPUNIT_ASSERT_EQUAL(26, boost::get<1>(position_.back()));
+ auto size = position_.size();
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), size);
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(13), boost::get<0>(position_.front()));
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(21), boost::get<1>(position_.front()));
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(22), boost::get<0>(position_.back()));
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(26), boost::get<1>(position_.back()));
}
private:
const std::unique_ptr<SpellParser> parser_ = std::unique_ptr<SpellParser>(new SpellParser());
PositionPairList position_;
};
CPPUNIT_TEST_SUITE_REGISTRATION(SpellParserTest);