Merge pull request #348 from michael-loki/string_view_abseil

Use string_view for string_view
This commit is contained in:
Jeff 2019-02-26 17:40:17 -05:00 committed by GitHub
commit 9578d10b8b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 29 additions and 23 deletions

View File

@ -89,12 +89,12 @@ namespace abyss
auto idx = line.find_first_of(' ');
if(idx == string_view::npos)
return false;
Header.Method = line.substr(0, idx);
Header.Method = std::string(line.substr(0, idx));
line = line.substr(idx + 1);
idx = line.find_first_of(' ');
if(idx == string_view::npos)
return false;
Header.Path = line.substr(0, idx);
Header.Path = std::string(line.substr(0, idx));
m_State = eReadHTTPHeaders;
return true;
}

View File

@ -36,7 +36,7 @@ target_include_directories(${UTIL_LIB} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../inc
# cut back on fluff
if (NOT WIN32)
target_link_libraries(${UTIL_LIB} PUBLIC absl::optional absl::variant cppbackport)
target_link_libraries(${UTIL_LIB} PUBLIC absl::optional absl::variant absl::strings absl::hash cppbackport)
endif(NOT WIN32)
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")

View File

@ -15,7 +15,7 @@ namespace llarp
parser.IterAll([&](const llarp::ConfigParser::String_t& name,
const llarp::ConfigParser::Section_t& section) {
llarp::service::Config::section_t values;
values.first = name;
values.first.assign(name.begin(), name.end());
for(const auto& item : section)
values.second.emplace_back(item.first, item.second);
services.emplace_back(values);

View File

@ -10,9 +10,11 @@ namespace llarp
{
struct ConfigParser
{
using String_t = llarp::string_view;
using Section_t = std::unordered_multimap< String_t, String_t >;
using Config_impl_t = std::unordered_map< String_t, Section_t >;
using String_t = llarp::string_view;
using Section_t =
std::unordered_multimap< String_t, String_t, string_view_hash >;
using Config_impl_t =
std::unordered_map< String_t, Section_t, string_view_hash >;
/// clear parser
void
Clear();

View File

@ -1,6 +1,8 @@
#ifndef LLARP_UTIL_JSON_HPP
#define LLARP_UTIL_JSON_HPP
#include <util/string_view.hpp>
#include <rapidjson/document.h>
#include <rapidjson/writer.h>
@ -79,11 +81,6 @@ namespace llarp
using Writer = rapidjson::Writer< Stream >;
} // namespace json
#if __cplusplus >= 201703L
using string_view = std::string_view;
#else
using string_view = std::string;
#endif
namespace json
{
struct IParser

View File

@ -6,7 +6,9 @@
#include <string>
namespace llarp
{
using string_view = std::string_view;
using string_view = std::string_view;
using string_view_hash = std::hash< string_view >;
static std::string
string_view_string(const string_view& v)
{
@ -14,15 +16,17 @@ namespace llarp
}
} // namespace llarp
#else
#include <string>
#include <absl/hash/hash.h>
#include <absl/strings/string_view.h>
namespace llarp
{
using string_view = std::string;
using string_view = absl::string_view;
using string_view_hash = absl::Hash< string_view >;
static std::string
string_view_string(const string_view& v)
{
return v;
return std::string(v);
};
} // namespace llarp
#endif

View File

@ -6,7 +6,8 @@ struct TestINIParser : public ::testing::Test
{
llarp::ConfigParser parser;
void TearDown()
void
TearDown()
{
parser.Clear();
}
@ -21,7 +22,7 @@ TEST_F(TestINIParser, TestParseOneSection)
{
llarp::ConfigParser::Section_t sect;
// this is an anti pattern don't write this kind of code with configpaser
auto assertVisit = [&sect](const auto & section) -> bool {
auto assertVisit = [&sect](const auto& section) -> bool {
sect = section;
return true;
};
@ -34,7 +35,7 @@ TEST_F(TestINIParser, TestParseOneSection)
#if __cplusplus >= 201703L
ASSERT_STREQ(llarp::string_view_string(itr->second).c_str(), "val");
#else
ASSERT_STREQ(itr->second.c_str(), "val");
ASSERT_EQ(itr->second, "val");
#endif
}
@ -42,7 +43,7 @@ TEST_F(TestINIParser, TestParseSectionDuplicateKeys)
{
ASSERT_TRUE(parser.LoadString("[test]\nkey1=val1\nkey1=val2"));
size_t num = 0;
auto visit =[&num](const auto & section) -> bool {
auto visit = [&num](const auto& section) -> bool {
num = section.count("key1");
return true;
};
@ -52,5 +53,7 @@ TEST_F(TestINIParser, TestParseSectionDuplicateKeys)
TEST_F(TestINIParser, TestParseInvalid)
{
ASSERT_FALSE(parser.LoadString("srged5ghe5\nf34wtge5\nw34tgfs4ygsd5yg=4;\n#g4syhgd5\n"));
ASSERT_FALSE(
parser.LoadString("srged5ghe5\nf34wtge5\nw34tgfs4ygsd5yg=4;\n#"
"g4syhgd5\n"));
}