From dc5d9ba2908c2f7e9346e0d6d7f06011cf2ebdfc Mon Sep 17 00:00:00 2001 From: Huu Nguyen Date: Mon, 28 Sep 2015 20:22:02 -0400 Subject: Add two new gcc compilers to travis configuration --- .travis.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.travis.yml b/.travis.yml index cec0186..8dc7d12 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,8 @@ compiler: env: matrix: - COMPILER=g++-4.8 CCOMPILER=gcc-4.8 PUSH_COVERAGE=ON + - COMPILER=g++-4.9 CCOMPILER=gcc-4.9 + - COMPILER=g++-5 CCOMPILER=gcc-5 addons: apt: @@ -19,6 +21,8 @@ addons: - boost-latest packages: - g++-4.8 + - g++-4.9 + - g++-5 - libboost1.55-all-dev - python-pip -- cgit v1.2.3-54-g00ecf From d42888fa286ea18e8d599e0191198ea3cff24d9d Mon Sep 17 00:00:00 2001 From: Huu Nguyen Date: Mon, 28 Sep 2015 20:22:42 -0400 Subject: Add clang compiler to travis configuration --- .travis.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.travis.yml b/.travis.yml index 8dc7d12..e283093 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,16 +13,20 @@ env: - COMPILER=g++-4.8 CCOMPILER=gcc-4.8 PUSH_COVERAGE=ON - COMPILER=g++-4.9 CCOMPILER=gcc-4.9 - COMPILER=g++-5 CCOMPILER=gcc-5 + - COMPILER=clang++-3.6 CCOMPILER=clang-3.6 addons: apt: sources: - ubuntu-toolchain-r-test - boost-latest + - llvm-toolchain-precise + - llvm-toolchain-precise-3.6 packages: - g++-4.8 - g++-4.9 - g++-5 + - clang-3.6 - libboost1.55-all-dev - python-pip -- cgit v1.2.3-54-g00ecf From 810e7f45fe7566f377b23d2a193c9ef3f718423e Mon Sep 17 00:00:00 2001 From: Omer Katz Date: Fri, 29 Jul 2016 10:35:53 +0300 Subject: Enable ccache if found for faster builds. --- CMakeLists.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 07a058b..4e78d9e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,15 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") find_package(Tcmalloc) find_package(Threads) +find_program(CCACHE_FOUND ccache) +if(CCACHE_FOUND) + message("Found ccache ${CCACHE_FOUND}") + message("Using ccache to speed up compilation") + set(ENV{CCACHE_CPP2} "yes") + set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) + set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) +endif(CCACHE_FOUND) + if (NOT CMAKE_BUILD_TYPE) message(STATUS "No build type selected, default to Release") set(CMAKE_BUILD_TYPE "Release") -- cgit v1.2.3-54-g00ecf From 41268d1782f6d727ccdc76311b6e3d6c17f5d4d1 Mon Sep 17 00:00:00 2001 From: Omer Katz Date: Fri, 29 Jul 2016 10:36:18 +0300 Subject: Update .travis.yml --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index cec0186..8d1e47d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,7 @@ language: cpp sudo: false +cache: ccache notifications: irc: "chat.freenode.net##crow" -- cgit v1.2.3-54-g00ecf From 492e93b8312cb9e17b1bcaf10c89522767e56ba5 Mon Sep 17 00:00:00 2001 From: Omer Katz Date: Fri, 29 Jul 2016 10:37:02 +0300 Subject: Run compilation and tests with 2 jobs. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index cec0186..c4c48dc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,7 +32,7 @@ before_script: - cmake --version - cmake .. -script: make && ctest +script: make -j2 && ctest -j2 after_success: - cd .. -- cgit v1.2.3-54-g00ecf From 26c4d5ddef6920043ae40a9d80ca31f3b820bad5 Mon Sep 17 00:00:00 2001 From: Taylor King Date: Sun, 9 Oct 2016 12:05:23 -0400 Subject: implement .keys() --- amalgamate/crow_all.h | 19 ++++++++++++++++++- include/crow/json.h | 19 ++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/amalgamate/crow_all.h b/amalgamate/crow_all.h index 41b06ff..7922ab9 100644 --- a/amalgamate/crow_all.h +++ b/amalgamate/crow_all.h @@ -4698,6 +4698,24 @@ namespace crow return (*o)[str]; } + std::vector keys() const { + std::vector result; + switch (t_) { + case type::Null: return result; + case type::False: return result; + case type::True: return result; + case type::Number: return result; + case type::String: return result; + case type::List: return result; + case type::Object: { + for (auto& kv:*o) { + result.push_back(kv.first); + } + return result; + } + } + } + size_t estimate_length() const { switch(t_) @@ -4738,7 +4756,6 @@ namespace crow return 1; } - friend void dump_internal(const wvalue& v, std::string& out); friend std::string dump(const wvalue& v); }; diff --git a/include/crow/json.h b/include/crow/json.h index 891fedf..53ed45f 100644 --- a/include/crow/json.h +++ b/include/crow/json.h @@ -1316,6 +1316,24 @@ namespace crow return (*o)[str]; } + std::vector keys() const { + std::vector result; + switch (t_) { + case type::Null: return result; + case type::False: return result; + case type::True: return result; + case type::Number: return result; + case type::String: return result; + case type::List: return result; + case type::Object: { + for (auto& kv:*o) { + result.push_back(kv.first); + } + return result; + } + } + } + size_t estimate_length() const { switch(t_) @@ -1356,7 +1374,6 @@ namespace crow return 1; } - friend void dump_internal(const wvalue& v, std::string& out); friend std::string dump(const wvalue& v); }; -- cgit v1.2.3-54-g00ecf From 5921ccd0ed20a6be58e358a6fc5c89a7acc099e6 Mon Sep 17 00:00:00 2001 From: Anders Åslund Date: Sat, 15 Oct 2016 20:26:12 +0200 Subject: Fix linking error on OSX Fix websocket example --- examples/CMakeLists.txt | 8 +++++++- examples/websocket/example_ws.cpp | 4 ++-- examples/websocket/templates/ws.html | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index ef65f02..fac0abb 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -19,7 +19,13 @@ endif() add_executable(example_websocket websocket/example_ws.cpp) target_link_libraries(example_websocket ${Boost_LIBRARIES}) -target_link_libraries(example_websocket ${CMAKE_THREAD_LIBS_INIT} ssl crypto) +target_link_libraries(example_websocket ${CMAKE_THREAD_LIBS_INIT} ${OPENSSL_LIBRARIES}) +add_custom_command(OUTPUT ws.html + COMMAND ${CMAKE_COMMAND} -E + copy ${PROJECT_SOURCE_DIR}/websocket/templates/ws.html ${CMAKE_CURRENT_BINARY_DIR}/ws.html + DEPENDS ${PROJECT_SOURCE_DIR}/websocket/templates/ws.html + ) +add_custom_target(example_ws_copy ALL DEPENDS ws.html) add_executable(example example.cpp) #target_link_libraries(example crow) diff --git a/examples/websocket/example_ws.cpp b/examples/websocket/example_ws.cpp index ec3603c..0bd2022 100644 --- a/examples/websocket/example_ws.cpp +++ b/examples/websocket/example_ws.cpp @@ -6,6 +6,7 @@ int main() { crow::SimpleApp app; + crow::mustache::set_base("."); std::mutex mtx;; std::unordered_set users; @@ -33,8 +34,7 @@ int main() CROW_ROUTE(app, "/") ([]{ - auto page = crow::mustache::load("ws.html"); - return page.render(); + return crow::mustache::load("ws.html").render(); }); app.port(40080) diff --git a/examples/websocket/templates/ws.html b/examples/websocket/templates/ws.html index f6e7281..5320113 100644 --- a/examples/websocket/templates/ws.html +++ b/examples/websocket/templates/ws.html @@ -11,7 +11,7 @@