diff --git a/snippets/cmake.snippets b/snippets/cmake.snippets index 54b956629..309c7b636 100644 --- a/snippets/cmake.snippets +++ b/snippets/cmake.snippets @@ -1,16 +1,29 @@ snippet init - cmake_minimum_required(VERSION ${1:2.8.2}) - project(${2:ProjectName}) + cmake_minimum_required(VERSION 3.10) + set(PROJECT_NAME example_poject) + project(${PROJECT_NAME} CXX) - find_package(${3:library}) + set(LIB_NAME example) + add_library(${LIB_NAME} SHARED) + target_sources(${LIB_NAME} PRIVATE example.cpp) - include_directories(${$3_INCLUDE_DIRS}) +snippet init_test + ################ Test ############################################### + find_package(GTest REQUIRED) + include(CTest) - add_subdirectory(${0:src}) + SET(TEST_NAME example_test) + add_executable(${TEST_NAME} example_test.cpp) + + include_directories(${GTEST_INCLUDE_DIR}) + message(STATUS "including directories: ${GTEST_INCLUDE_DIR}") + + target_link_libraries(${TEST_NAME} PRIVATE ${GTEST_BOTH_LIBRARIES} pthread) + message(STATUS "linking with libraries ${GTEST_BOTH_LIBRARIES}" pthread) + + gtest_discover_tests(${TEST_NAME}) - add_executable($2) - target_link_libraries($2 ${$3_LIBRARIES}) snippet proj project(${0:Name}) diff --git a/snippets/cpp.snippets b/snippets/cpp.snippets index f39d743e8..6e9eacd16 100644 --- a/snippets/cpp.snippets +++ b/snippets/cpp.snippets @@ -1,91 +1,75 @@ extends c -## -## Preprocessor -# #include <...> -snippet incc - #include <${1:iostream}> -snippet binc - #include -## -## STL Collections -# std::array -snippet array - std::array<${1:T}, ${2:N}> ${3}; -# std::vector -snippet vector - std::vector<${1:T}> ${2}; -# std::deque -snippet deque - std::deque<${1:T}> ${2}; -# std::forward_list -snippet flist - std::forward_list<${1:T}> ${2}; -# std::list -snippet list - std::list<${1:T}> ${2}; -# std::set -snippet set - std::set<${1:T}> ${2}; -# std::map -snippet map - std::map<${1:Key}, ${2:T}> ${3}; -# std::multiset -snippet mset - std::multiset<${1:T}> ${2}; -# std::multimap -snippet mmap - std::multimap<${1:Key}, ${2:T}> ${3}; -# std::unordered_set -snippet uset - std::unordered_set<${1:T}> ${2}; -# std::unordered_map -snippet umap - std::unordered_map<${1:Key}, ${2:T}> ${3}; -# std::unordered_multiset -snippet umset - std::unordered_multiset<${1:T}> ${2}; -# std::unordered_multimap -snippet ummap - std::unordered_multimap<${1:Key}, ${2:T}> ${3}; -# std::stack -snippet stack - std::stack<${1:T}> ${2}; -# std::queue -snippet queue - std::queue<${1:T}> ${2}; -# std::priority_queue -snippet pqueue - std::priority_queue<${1:T}> ${2}; -## -## STL smart pointers -# std::shared_ptr -snippet msp - std::shared_ptr<${1:T}> ${2} = std::make_shared<$1>(${3}); -snippet amsp - auto ${1} = std::make_shared<${2:T}>(${3}); -# std::unique_ptr -snippet mup - std::unique_ptr<${1:T}> ${2} = std::make_unique<$1>(${3}); -snippet amup - auto ${1} = std::make_unique<${2:T}>(${3}); -## -## Access Modifiers -# private -snippet pri - private -# protected -snippet pro - protected -# public -snippet pub - public -# friend -snippet fr - friend -# mutable -snippet mu - mutable +# init a main function file +snippet init + #include + using namespace std; + int main(int argc, char **argv) + { + std::cout << "hello world" << std::endl; + return 0; + } + +snippet init_lib + #include + int my_func(int argc, char **argv) + { + std::cout << "hello world" << std::endl; + return 0; + } + +snippet init_test + #include + + TEST(Fixture, Template) + { + EXPECT_EQ(1,2) << "failed test"; + } + // for using gmack, use snippet gmock + // cheetsheet: https://google.github.io/googletest/gmock_cheat_sheet.html + // cookbook: https://google.github.io/googletest/gmock_cook_book.html + + + + +# write file using fstream +snippet write_stream + #include + ofstream MyFile("filename.txt"); + MyFile << "Files can be tricky."; + MyFile.close(); + +# read file using fstream +snippet read_stream_by_line + #include + #include + ifstream MyReadFile("filename.txtA;") + while(getline(MyReadFile, myText)) { + std::cout << myText; + } + MyReadFile.close(); + +snippet get_cmd_output + // if you want stderr, just do a redirect + #include + #include + std::string GetStdoutFromCommand(std::string cmd) { + std::string data; + FILE * stream; + const int max_buffer = 256; + char buffer[max_buffer]; + stream = popen(cmd.c_str(), "r"); + if (stream) { + while (!feof(stream)) { + if (fgets(buffer, max_buffer, stream) != nullptr) { + data.append(buffer); + } + } + pclose(stream); + } + return data; + } + ## ## Class # class @@ -154,51 +138,7 @@ snippet ans namespace { ${0} } -## -## Input/Output -# std::cout -snippet cout - std::cout << ${1} << std::endl; -# std::cin -snippet cin - std::cin >> ${1}; -## -## Casts -# static -snippet sca - static_cast<${1:unsigned}>(${2:expr})${3} -# dynamic -snippet dca - dynamic_cast<${1:unsigned}>(${2:expr})${3} -# reinterpret -snippet rca - reinterpret_cast<${1:unsigned}>(${2:expr})${3} -# const -snippet cca - const_cast<${1:unsigned}>(${2:expr})${3} -## Iteration -# for i -snippet fori - for (int ${2:i} = 0; $2 < ${1:count}; $2${3:++}) { - ${4} - } -# foreach -snippet fore - for (${1:auto} ${2:i} : ${3:container}) { - ${4} - } -# iterator -snippet iter - for (${1:std::vector}<${2:type}>::${3:const_iterator} ${4:i} = ${5:container}.begin(); $4 != $5.end(); ++$4) { - ${6} - } - -# auto iterator -snippet itera - for (auto ${1:i} = ${2:container}.begin(); $1 != $2.end(); ++$1) { - ${3:std::cout << *$1 << std::endl;} - } ## ## Lambdas # lamda (one line) diff --git a/snippets/sh.snippets b/snippets/sh.snippets index 2ce67ec4f..0c6f6a8e8 100644 --- a/snippets/sh.snippets +++ b/snippets/sh.snippets @@ -104,3 +104,18 @@ snippet fun function ${1:function_name}() { ${0:#function_body} } + +snippet user_confirm + function user_confirm() + { + local msg=$1 + while true; do + read -p "$msg[Yy/Nn]" yn + case $yn in + [Yy]* ) return 0; break;; + [Nn]* ) return 1; break;; + * ) echo "Please answer yes[Yy] or no[Nn].";; + esac + done + } +