From 4aaf11069f9d14173014fe16fc00d48cf1c9fcd8 Mon Sep 17 00:00:00 2001 From: Kevin Kreiser Date: Mon, 20 Jun 2016 09:35:38 -0400 Subject: [PATCH] Adds rapidjson dependency Change-Id: Ib6e971f92bdb3bf4c408fd2bbfe0d12e053028b5 --- .gitmodules | 6 +-- CMakeLists.txt | 21 +++++--- add_deps.sh | 3 ++ packaging/deps.tar.gz | Bin 0 -> 69193 bytes packaging/maps-plugin-mapzen.spec | 3 ++ rapidjson | 1 - .../{mapzen_jsonparser.c => mapzen_jsonparser.cpp} | 55 ++++++++++++++++++++- .../{mapzen_jsonparser.h => mapzen_jsonparser.hpp} | 0 src/mapzen/mapzen_queue.c | 3 +- src/mapzen/mapzen_restcurl.c | 2 +- src/mapzen/{mapzen_route.c => mapzen_route.cpp} | 8 +-- src/mapzen/{mapzen_route.h => mapzen_route.hpp} | 2 +- 12 files changed, 84 insertions(+), 20 deletions(-) create mode 100755 add_deps.sh create mode 100644 packaging/deps.tar.gz delete mode 160000 rapidjson rename src/mapzen/{mapzen_jsonparser.c => mapzen_jsonparser.cpp} (80%) rename src/mapzen/{mapzen_jsonparser.h => mapzen_jsonparser.hpp} (100%) rename src/mapzen/{mapzen_route.c => mapzen_route.cpp} (92%) rename src/mapzen/{mapzen_route.h => mapzen_route.hpp} (87%) diff --git a/.gitmodules b/.gitmodules index 21ec3ff..c415963 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ -[submodule "rapidjson"] - path = rapidjson - url = https://github.com/miloyip/rapidjson +[submodule "inc/rapidjson"] + path = inc/rapidjson + url = https://github.com/miloyip/rapidjson.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 0373c39..a906efc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,7 +36,7 @@ SET(PREFIX ${CMAKE_INSTALL_PREFIX}) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fvisibility=hidden -fPIC -Wall -Werror") SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -Wall -fPIC -std=c++0x -fvisibility=hidden") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -Wall -fPIC -std=c++11 -fvisibility=hidden") SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") @@ -45,13 +45,15 @@ ADD_DEFINITIONS("-DTIZEN_DEBUG") SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=${LIBDIR}") -# Main Include file +# Includes SET(INC_DIR inc + src/mapzen + external/rapidjson/include ) INCLUDE_DIRECTORIES( - ${INC_DIR} + ${INC_DIR} ) #This file must be corrected @@ -59,9 +61,16 @@ INCLUDE_DIRECTORIES( # Source Lists SET(SRCS # Maps API - src/mapzen_utils.cpp - src/mapzen_plugin.cpp - src/mapzen_api.cpp + src/mapzen_plugin.c + src/mapzen/mapzen_api.c + src/mapzen/mapzen_geocode.c + src/mapzen/mapzen_jsonparser.cpp + src/mapzen/mapzen_place.c + src/mapzen/mapzen_queue.c + src/mapzen/mapzen_restcurl.c + src/mapzen/mapzen_revgeocode.c + src/mapzen/mapzen_route.cpp + src/mapzen/mapzen_util.c ) ADD_LIBRARY(${pkg_name} SHARED ${SRCS}) diff --git a/add_deps.sh b/add_deps.sh new file mode 100755 index 0000000..7ca178f --- /dev/null +++ b/add_deps.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +tar pczf packaging/deps.tar.gz --anchored external/rapidjson/include diff --git a/packaging/deps.tar.gz b/packaging/deps.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..681052ea670c9d3635dbef12bf3aac82157adaab GIT binary patch literal 69193 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�Xl|me~TY9X{dee&$ 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 literal 0 HcmV?d00001 diff --git a/packaging/maps-plugin-mapzen.spec b/packaging/maps-plugin-mapzen.spec index d6bc1e8..f0e38f0 100644 --- a/packaging/maps-plugin-mapzen.spec +++ b/packaging/maps-plugin-mapzen.spec @@ -5,11 +5,13 @@ Release: 1 Group: Location/Libraries License: Apache-2.0 Source0: %{name}-%{version}.tar.gz +Source1: deps.tar.gz ExclusiveArch: %ix86 x86_64 %arm aarch64 BuildRequires: cmake BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(libcurl) BuildRequires: pkgconfig(capi-maps-service) BuildRequires: capi-maps-service-plugin-devel BuildRequires: pkgconfig(capi-network-connection) @@ -47,6 +49,7 @@ This package provides Plugin APIs for Mapzen. %prep %setup -q +%setup -q -T -D -a 1 %build %if 0%{?tizen_build_binary_release_type_eng} diff --git a/rapidjson b/rapidjson deleted file mode 160000 index 3d5848a..0000000 --- a/rapidjson +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3d5848a7cd3367c5cb451c6493165b7745948308 diff --git a/src/mapzen/mapzen_jsonparser.c b/src/mapzen/mapzen_jsonparser.cpp similarity index 80% rename from src/mapzen/mapzen_jsonparser.c rename to src/mapzen/mapzen_jsonparser.cpp index 62142a8..34a847d 100644 --- a/src/mapzen/mapzen_jsonparser.c +++ b/src/mapzen/mapzen_jsonparser.cpp @@ -14,21 +14,72 @@ * limitations under the License. */ +#include + #include #include "rapidjson/rapidjson.h" -#include "mapzen_jsonparser.h" +#include "mapzen_jsonparser.hpp" #include "mapzen_queue.h" #include "mapzen_debug.h" #include "mapzen_util.h" +#include +#include + #define ROUTE_UNIT_CONVERSION_MILE_TO_M(x) (1609.34 * (x)) #define ROUTE_UNIT_CONVERSION_MILE_TO_KM(x) (1.60934 * (x)) #define ROUTE_UNIT_CONVERSION_MILE_TO_FT(x) (5280 * (x)) #define ROUTE_UNIT_CONVERSION_MILE_TO_YD(x) (1760 * (x)) -static route_unit __route_unit = ROUTE_UNIT_M; +static route_unit __route_unit = UNIT_M; static int __maneuver_index = 0; static coords_s __destination_point; +constexpr double kPolylinePrecision = 1E6; +constexpr double kInvPolylinePrecision = 1.0 / kPolylinePrecision; + + +//TODO: port this to c? or port the whole project to c++ or add all the proper externs +void decode_shape(const std::string& encoded, + std::vector& output) +{ + // what byte are we looking at + size_t i = 0; + + // Handy lambda to turn a few bytes of an encoded string into an integer + auto deserialize = [&encoded, &i](const int previous) { + // Grab each 5 bits and mask it in where it belongs using the shift + int byte, shift = 0, result = 0; + do { + byte = static_cast(encoded[i++]) - 63; + result |= (byte & 0x1f) << shift; + shift += 5; + } while (byte >= 0x20); + + // Undo the left shift from above or the bit flipping and add + // to previous since its an offset + return previous + (result & 1 ? ~(result >> 1) : (result >> 1)); + }; + + // Iterate over all characters of the encoded shape string + int last_lon = 0, last_lat = 0; + while (i < encoded.length()) + { + // Decode the coordinates, lat first + int lat = deserialize(last_lat); + int lon = deserialize(last_lon); + + // Shift the decimal point 5 places to the left and add to the output + maps_coordinates_s ll; + ll.latitude = static_cast(lat) * kInvPolylinePrecision; + ll.longitude = static_cast(lon) * kInvPolylinePrecision; + output.emplace_back(std::move(ll)); + + // Remember the last one we encountered + last_lat = lat; + last_lon = lon; + } +} + static mapzen_error_e __convert_status(int status) { diff --git a/src/mapzen/mapzen_jsonparser.h b/src/mapzen/mapzen_jsonparser.hpp similarity index 100% rename from src/mapzen/mapzen_jsonparser.h rename to src/mapzen/mapzen_jsonparser.hpp diff --git a/src/mapzen/mapzen_queue.c b/src/mapzen/mapzen_queue.c index da8364a..e4b08c0 100644 --- a/src/mapzen/mapzen_queue.c +++ b/src/mapzen/mapzen_queue.c @@ -19,12 +19,11 @@ #include "mapzen_queue.h" #include "mapzen_geocode.h" #include "mapzen_revgeocode.h" -#include "mapzen_route.h" +#include "mapzen_route.hpp" #include "mapzen_place.h" #include "mapzen_restcurl.h" #include "mapzen_util.h" #include "mapzen_debug.h" -#include pthread_mutex_t __requestLock; static GAsyncQueue *responseQueue = NULL; diff --git a/src/mapzen/mapzen_restcurl.c b/src/mapzen/mapzen_restcurl.c index 8d41417..9530345 100644 --- a/src/mapzen/mapzen_restcurl.c +++ b/src/mapzen/mapzen_restcurl.c @@ -21,7 +21,7 @@ #include #include "mapzen_restcurl.h" #include "mapzen_types.h" -#include "mapzen_jsonparser.h" +#include "mapzen_jsonparser.hpp" #include "mapzen_debug.h" #define RESTCURL_USE_MULTI_CURL diff --git a/src/mapzen/mapzen_route.c b/src/mapzen/mapzen_route.cpp similarity index 92% rename from src/mapzen/mapzen_route.c rename to src/mapzen/mapzen_route.cpp index b1d24ef..1f72746 100644 --- a/src/mapzen/mapzen_route.c +++ b/src/mapzen/mapzen_route.cpp @@ -17,7 +17,7 @@ #include #include #include -#include "mapzen_route.h" +#include "mapzen_route.hpp" #include "mapzen_types.h" #include "mapzen_server_private.h" #include "mapzen_debug.h" @@ -27,7 +27,7 @@ #define ROUTE_URL "https://valhalla.mapzen.com/route?api_key=%s&json=" -int query_route(gchar *maps_key, coords_s startPoint, coords_s endPoint, costing costing, feature_penalties avoids, route_driving_style style, GList *waypoints, gpointer user_data) +int query_route(gchar *maps_key, coords_s startPoint, coords_s endPoint, route_type type, route_feature_avoids avoids, route_driving_style style, GList *waypoints, gpointer user_data) { char url[1024] = ""; char tmpStr[512]; @@ -39,7 +39,7 @@ int query_route(gchar *maps_key, coords_s startPoint, coords_s endPoint, costing STRCPY(url, tmpStr); - STRCAT(url, '"directions_options":{"units":"mi"}'); /* Keeping default as miles and conversion will be done later */ + /*STRCAT(url, '"directions_options":{"units":"mi"}'); Keeping default as miles and conversion will be done later if (costing == COSTING_AUTO) STRCAT(url, '"costing":"auto"'); @@ -113,7 +113,7 @@ int query_route(gchar *maps_key, coords_s startPoint, coords_s endPoint, costing } else { snprintf(tmpStr, sizeof(tmpStr), '"locations":[{"lat":%f,"lon":%f},{"lat":%f,"lon":%f}]', startPoint.latitude, startPoint.longitude, endPoint.latitude, endPoint.longitude); STRCAT(url, tmpStr); - } + }*/ //TODO: url encode (curl_escape) the json part of the request diff --git a/src/mapzen/mapzen_route.h b/src/mapzen/mapzen_route.hpp similarity index 87% rename from src/mapzen/mapzen_route.h rename to src/mapzen/mapzen_route.hpp index 810e0b2..2e9ec0f 100644 --- a/src/mapzen/mapzen_route.h +++ b/src/mapzen/mapzen_route.hpp @@ -20,6 +20,6 @@ #include "mapzen_api.h" #include "mapzen_types.h" -int query_route(gchar *maps_key, coords_s startPoint, coords_s endPoint, costing costing, feature_penalties avoids, route_driving_style style, GList *waypoints, gpointer user_data); +int query_route(gchar *maps_key, coords_s startPoint, coords_s endPoint, route_type type, route_feature_avoids avoids, route_driving_style style, GList *waypoints, gpointer user_data); #endif /* _MAPZEN_ROUTE_H_ */ -- 2.7.4