Merge pull request #292 from mapbox/boost-regex

Boost regex
This commit is contained in:
Dane Springmeyer
2014-05-30 18:17:18 -07:00
5 changed files with 15 additions and 6 deletions

View File

@@ -6,11 +6,12 @@ implemented in C++11, currently targeting iOS, OS X, and Ubuntu Linux.
# Depends
- Modern C++ compiler that supports `-std=c++11`
- Boost headers
- `libpng`
- `libuv`
- `libcurl` (depends on OpenSSL; Linux only)
- `glfw3`
- Boost
- `libcurl` (depends on OpenSSL; Linux only)
- `libboost_regex` (Linux only)
- Python (for build only)
- Node.js (for build only)

View File

@@ -43,7 +43,7 @@
'link_settings': {
'libraries': [
'<@(glfw3_libraries)',
'<@(curl_libraries)',
'<@(curl_libraries)'
],
},
}],

View File

@@ -191,6 +191,7 @@
'libraries': [
'<@(png_libraries)',
'<@(uv_libraries)',
'-lboost_regex'
]
}]
]

View File

@@ -95,6 +95,7 @@ source Linux.sh
if [ ! -f out/build-cpp11-libstdcpp-gcc-x86_64/lib/libssl.a ] ; then ./scripts/build_openssl.sh ; fi
if [ ! -f out/build-cpp11-libstdcpp-gcc-x86_64/lib/libcurl.a ] ; then ./scripts/build_curl.sh ; fi
if [ ! -d out/build-cpp11-libstdcpp-gcc-x86_64/include/boost ] ; then ./scripts/build_boost.sh `pwd`/../../src/ `pwd`/../../include/ `pwd`/../../linux/ `pwd`/../../common/ ; fi
if [ ! -d out/build-cpp11-libstdcpp-gcc-x86_64/lib/libboost_regex.a ] ; then ./scripts/build_boost.sh --with-regex ; fi
cd ../../
./configure \

View File

@@ -16,7 +16,13 @@
#include <llmr/util/std.hpp>
#include <llmr/util/utf.hpp>
#ifdef __linux__
#include <boost/regex.hpp>
namespace regex_impl = boost;
#else
#include <regex>
namespace regex_impl = std;
#endif
using namespace llmr;
@@ -184,8 +190,8 @@ std::unique_ptr<Bucket> TileParser::createTextBucket(const VectorTileLayer &laye
tile.textVertexBuffer, tile.triangleElementsBuffer, bucket_desc, placement);
util::utf8_to_utf32 ucs4conv;
std::regex token_regex("\\{\\{(\\w+)\\}\\}");
const auto tokens_end = std::sregex_token_iterator();
regex_impl::regex token_regex("\\{\\{(\\w+)\\}\\}");
const auto tokens_end = regex_impl::sregex_token_iterator();
std::vector<std::pair<std::u32string, pbf>> labels;
@@ -205,7 +211,7 @@ std::unique_ptr<Bucket> TileParser::createTextBucket(const VectorTileLayer &laye
source_string.reserve(field.size());
bool token = false;
for (auto token_it = std::sregex_token_iterator(field.begin(), field.end(), token_regex, {-1, 1}); token_it != tokens_end; ++token_it, token = !token) {
for (auto token_it = regex_impl::sregex_token_iterator(field.begin(), field.end(), token_regex, {-1, 1}); token_it != tokens_end; ++token_it, token = !token) {
if (!token_it->matched) {
continue;
}