diff --git a/3rdparty/cpprestsdk/samples/SearchFile/searchfile.cpp b/3rdparty/cpprestsdk/samples/SearchFile/searchfile.cpp deleted file mode 100644 index 22d21ad493a45e145191f14bf205364433f193d1..0000000000000000000000000000000000000000 --- a/3rdparty/cpprestsdk/samples/SearchFile/searchfile.cpp +++ /dev/null @@ -1,218 +0,0 @@ -/*** -* ==++== -* -* Copyright (c) Microsoft Corporation. All rights reserved. -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -* -* ==--== -* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ -* -* searchfile.cpp - Simple cmd line application that uses a variety of streams features to search a file, -* store the results, and write results back to a new file. -* -* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -****/ - -#include "cpprest/filestream.h" -#include "cpprest/containerstream.h" -#include "cpprest/producerconsumerstream.h" - -using namespace utility; -using namespace concurrency::streams; - -/// -/// A convenient helper function to loop asychronously until a condition is met. -/// -pplx::task _do_while_iteration(std::function(void)> func) -{ - pplx::task_completion_event ev; - func().then([=](bool guard) - { - ev.set(guard); - }); - return pplx::create_task(ev); -} -pplx::task _do_while_impl(std::function(void)> func) -{ - return _do_while_iteration(func).then([=](bool guard) -> pplx::task - { - if(guard) - { - return ::_do_while_impl(func); - } - else - { - return pplx::task_from_result(false); - } - }); -} -pplx::task do_while(std::function(void)> func) -{ - return _do_while_impl(func).then([](bool){}); -} - -/// -/// Structure used to store individual line results. -/// -typedef std::vector matched_lines; -namespace Concurrency { namespace streams { -/// -/// Parser implementation for 'matched_lines' type. -/// -template -class type_parser -{ -public: - static pplx::task parse(streambuf buffer) - { - basic_istream in(buffer); - auto lines = std::make_shared(); - return do_while([=]() - { - container_buffer line; - return in.read_line(line).then([=](const size_t bytesRead) - { - if(bytesRead == 0 && in.is_eof()) - { - return false; - } - else - { - lines->push_back(std::move(line.collection())); - return true; - } - }); - }).then([=]() - { - return matched_lines(std::move(*lines)); - }); - } -}; -}} -/// -/// Function to create in data from a file and search for a given string writing all lines containing the string to memory_buffer. -/// -static pplx::task find_matches_in_file(const string_t &fileName, const std::string &searchString, basic_ostream results) -{ - return file_stream::open_istream(fileName).then([=](basic_istream inFile) - { - auto lineNumber = std::make_shared(1); - return ::do_while([=]() - { - container_buffer inLine; - return inFile.read_line(inLine).then([=](size_t bytesRead) - { - if(bytesRead == 0 && inFile.is_eof()) - { - return pplx::task_from_result(false); - } - - else if(inLine.collection().find(searchString) != std::string::npos) - { - results.print("line "); - results.print((*lineNumber)++); - return results.print(":").then([=](size_t) - { - container_buffer outLine(std::move(inLine.collection())); - return results.write(outLine, outLine.collection().size()); - }).then([=](size_t) - { - return results.print("\r\n"); - }).then([=](size_t) - { - return true; - }); - } - - else - { - ++(*lineNumber); - return pplx::task_from_result(true); - } - }); - }).then([=]() - { - // Close the file and results stream. - return inFile.close() && results.close(); - }); - }); -} - -/// -/// Function to write out results from matched_lines type to file -/// -static pplx::task write_matches_to_file(const string_t &fileName, matched_lines results) -{ - // Create a shared pointer to the matched_lines structure to copying repeatedly. - auto sharedResults = std::make_shared(std::move(results)); - - return file_stream::open_ostream(fileName, std::ios::trunc).then([=](basic_ostream outFile) - { - auto currentIndex = std::make_shared(0); - return ::do_while([=]() - { - if(*currentIndex >= sharedResults->size()) - { - return pplx::task_from_result(false); - } - - container_buffer lineData((*sharedResults)[(*currentIndex)++]); - outFile.write(lineData, lineData.collection().size()); - return outFile.print("\r\n").then([](size_t) - { - return true; - }); - }).then([=]() - { - return outFile.close(); - }); - }); -} - -#ifdef _WIN32 -int wmain(int argc, wchar_t *args[]) -#else -int main(int argc, char *args[]) -#endif -{ - if(argc != 4) - { - printf("Usage: SearchFile.exe input_file search_string output_file\n"); - return -1; - } - const string_t inFileName = args[1]; - const std::string searchString = utility::conversions::to_utf8string(args[2]); - const string_t outFileName = args[3]; - producer_consumer_buffer lineResultsBuffer; - - // Find all matches in file. - basic_ostream outLineResults(lineResultsBuffer); - find_matches_in_file(inFileName, searchString, outLineResults) - - // Write matches into custom data structure. - .then([&]() - { - basic_istream inLineResults(lineResultsBuffer); - return inLineResults.extract(); - }) - - // Write out stored match data to a new file. - .then([&](matched_lines lines) - { - return write_matches_to_file(outFileName, std::move(lines)); - }) - - // Wait for everything to complete. - .wait(); - - return 0; -} \ No newline at end of file