From 477331dd9ac45411821ce602677d581367c43246 Mon Sep 17 00:00:00 2001 From: Sasza Stanczew Date: Thu, 25 Apr 2024 09:39:28 +0200 Subject: [PATCH] AdvC++ - pierwszy commit --- AdvancedCppV2/.gitignore | 32 + AdvancedCppV2/LICENSE | 19 + AdvancedCppV2/Presentation/agenda.md | 26 + AdvancedCppV2/Presentation/compilation.md | 46 + .../exercises/complex/CMakeLists.txt | 14 + .../Presentation/exercises/complex/README.md | 16 + .../exercises/complex/complex.cpp | 1 + .../exercises/complex/soulutions/complex.cpp | 6 + .../exercises/converter/CMakeLists.txt | 14 + .../exercises/converter/README.md | 18 + .../exercises/converter/converter.cpp | 59 + .../converter/solution/converter.cpp | 84 + .../exercises/exampleProject/CMakeLists.txt | 14 + .../exercises/exampleProject/README.md | 10 + .../exampleProject/exampleProject.cpp | 7 + .../exercises/list/CMakeLists.txt | 14 + .../Presentation/exercises/list/README.md | 25 + .../Presentation/exercises/list/list.cpp | 68 + .../exercises/list/solution/list.cpp | 76 + .../exercises/list/solution/list2.cpp | 181 + .../Presentation/exercises/map/CMakeLists.txt | 14 + .../Presentation/exercises/map/README.md | 55 + .../Presentation/exercises/map/map.cpp | 4 + .../exercises/map/soultions/map1.cpp | 44 + .../exercises/map/soultions/map2.cpp | 54 + .../exercises/map/soultions/map3.cpp | 56 + .../exercises/map/soultions/map4.cpp | 125 + .../exercises/map/soultions/map5.cpp | 134 + .../exercises/resource/CMakeLists.txt | 14 + .../Presentation/exercises/resource/README.md | 19 + .../exercises/resource/resource.cpp | 32 + .../exercises/resource/solution/resource.cpp | 32 + .../exercises/resourceFactory/CMakeLists.txt | 14 + .../exercises/resourceFactory/README.md | 20 + .../resourceFactory/resourceFactory.cpp | 65 + .../soultions/resourceFactory.cpp | 77 + .../exercises/searcher/CMakeLists.txt | 14 + .../Presentation/exercises/searcher/README.md | 11 + .../exercises/searcher/files/fileA.cpp | 1 + .../exercises/searcher/files/fileA.hpp | 1 + .../exercises/searcher/files/fileB.cpp | 1 + .../exercises/searcher/files/fileB.hpp | 1 + .../exercises/searcher/files/fileC.cpp | 1 + .../exercises/searcher/files/fileC.hpp | 1 + .../exercises/searcher/searcher.cpp | 26 + .../exercises/searcher/solution/searcher.cpp | 37 + .../exercises/someClass/CMakeLists.txt | 14 + .../exercises/someClass/README.md | 10 + .../exercises/someClass/someclass.cpp | 7 + .../someClass/soultions/someclass.cpp | 16 + .../exercises/streamer/CMakeLists.txt | 14 + .../Presentation/exercises/streamer/README.md | 31 + .../exercises/streamer/solution/streamer.cpp | 29 + .../exercises/streamer/solution/streamer2.cpp | 71 + .../exercises/streamer/streamer.cpp | 23 + .../exercises/students/CMakeLists.txt | 14 + .../Presentation/exercises/students/README.md | 22 + .../exercises/students/solution/students.cpp | 49 + .../exercises/students/students.cpp | 34 + .../Presentation/img/cyclic_dependencies.gif | Bin 0 -> 191477 bytes .../Presentation/img/cyclicinverted.png | Bin 0 -> 34465 bytes AdvancedCppV2/Presentation/img/kosz.png | Bin 0 -> 9272 bytes AdvancedCppV2/Presentation/img/kot.jpg | Bin 0 -> 37922 bytes AdvancedCppV2/Presentation/img/memory.png | Bin 0 -> 22795 bytes .../Presentation/img/sharedptr10inverted.png | Bin 0 -> 23242 bytes .../Presentation/img/sharedptr11inverted.png | Bin 0 -> 12053 bytes .../Presentation/img/sharedptr1inverted.png | Bin 0 -> 41138 bytes .../Presentation/img/sharedptr2inverted.png | Bin 0 -> 24549 bytes .../Presentation/img/sharedptr3inverted.png | Bin 0 -> 18054 bytes .../Presentation/img/sharedptr4inverted.png | Bin 0 -> 15314 bytes .../Presentation/img/sharedptr5inverted.png | Bin 0 -> 17505 bytes .../Presentation/img/sharedptr6inverted.png | Bin 0 -> 20305 bytes .../Presentation/img/sharedptr7inverted.png | Bin 0 -> 17847 bytes .../Presentation/img/sharedptr8inverted.png | Bin 0 -> 37125 bytes .../Presentation/img/sharedptr9inverted.png | Bin 0 -> 25771 bytes .../Presentation/img/uniqueptrinverted.png | Bin 0 -> 31010 bytes .../Presentation/img/weakptrinverted.png | Bin 0 -> 59294 bytes AdvancedCppV2/Presentation/index.html | 236 + AdvancedCppV2/Presentation/introduction.md | 59 + AdvancedCppV2/Presentation/moder_cpp_cpp11.md | 358 + AdvancedCppV2/Presentation/moder_cpp_cpp14.md | 256 + .../Presentation/moder_cpp_cpp17_constexpr.md | 425 ++ .../moder_cpp_cpp17_filesystem.md | 341 + .../Presentation/moder_cpp_cpp17_folding.md | 280 + .../Presentation/moder_cpp_cpp17_intro.md | 11 + .../moder_cpp_cpp17_small_features.md | 244 + .../Presentation/moder_cpp_cpp20_intro.md | 15 + .../Presentation/moder_cpp_cpp20_modules.md | 142 + .../Presentation/moder_cpp_cpp20_ranges.md | 396 ++ .../moder_cpp_cpp20_small_features.md | 1082 +++ AdvancedCppV2/Presentation/moder_cpp_intro.md | 39 + AdvancedCppV2/Presentation/recap.md | 8 + .../Presentation/smart_pointers_auto_ptr.md | 10 + .../smart_pointers_best_practices.md | 196 + .../Presentation/smart_pointers_efficiency.md | 181 + .../smart_pointers_implementation_details.md | 122 + .../Presentation/smart_pointers_shared_ptr.md | 189 + .../Presentation/smart_pointers_smart_ptrs.md | 21 + .../Presentation/smart_pointers_summary.md | 18 + .../Presentation/smart_pointers_unique_ptr.md | 434 ++ .../Presentation/smart_pointers_weak_ptr.md | 213 + .../Presentation/template_deduction_guides.md | 373 + AdvancedCppV2/Presentation/templates_basic.md | 257 + AdvancedCppV2/Presentation/templates_class.md | 99 + .../Presentation/templates_knowledge_check.md | 95 + .../Presentation/templates_partial_spec.md | 66 + .../Presentation/templates_specjalization.md | 146 + .../Presentation/templates_typetraits.md | 66 + .../Presentation/templates_variable.md | 66 + AdvancedCppV2/README.md | 16 + AdvancedCppV2/bower.json | 24 + AdvancedCppV2/css/print/paper.css | 203 + AdvancedCppV2/css/print/pdf.css | 165 + AdvancedCppV2/css/reset.css | 30 + AdvancedCppV2/css/reveal.css | 1606 +++++ AdvancedCppV2/css/reveal.scss | 1777 +++++ AdvancedCppV2/css/theme/README.md | 21 + AdvancedCppV2/css/theme/beige.css | 277 + AdvancedCppV2/css/theme/black.css | 273 + AdvancedCppV2/css/theme/blood.css | 296 + AdvancedCppV2/css/theme/coders.css | 308 + AdvancedCppV2/css/theme/coders_white.css | 294 + AdvancedCppV2/css/theme/league.css | 279 + AdvancedCppV2/css/theme/moon.css | 277 + AdvancedCppV2/css/theme/night.css | 271 + AdvancedCppV2/css/theme/serif.css | 273 + AdvancedCppV2/css/theme/simple.css | 276 + AdvancedCppV2/css/theme/sky.css | 280 + AdvancedCppV2/css/theme/solarized.css | 277 + AdvancedCppV2/css/theme/source/beige.scss | 39 + AdvancedCppV2/css/theme/source/black.scss | 49 + AdvancedCppV2/css/theme/source/blood.scss | 78 + AdvancedCppV2/css/theme/source/league.scss | 34 + AdvancedCppV2/css/theme/source/moon.scss | 57 + AdvancedCppV2/css/theme/source/night.scss | 34 + AdvancedCppV2/css/theme/source/serif.scss | 35 + AdvancedCppV2/css/theme/source/simple.scss | 43 + AdvancedCppV2/css/theme/source/sky.scss | 46 + AdvancedCppV2/css/theme/source/solarized.scss | 63 + AdvancedCppV2/css/theme/source/white.scss | 49 + AdvancedCppV2/css/theme/template/mixins.scss | 29 + .../css/theme/template/settings.scss | 45 + AdvancedCppV2/css/theme/template/theme.scss | 325 + AdvancedCppV2/css/theme/white.css | 273 + AdvancedCppV2/demo.html | 425 ++ AdvancedCppV2/gruntfile.js | 189 + AdvancedCppV2/img/altkom_logo.png | Bin 0 -> 14919 bytes AdvancedCppV2/img/altkom_logo2.png | Bin 0 -> 157271 bytes AdvancedCppV2/img/cpp_logo.png | Bin 0 -> 46138 bytes AdvancedCppV2/img/mateusz.png | Bin 0 -> 3489728 bytes AdvancedCppV2/js/reveal.js | 6191 +++++++++++++++++ AdvancedCppV2/lib/css/monokai.css | 71 + AdvancedCppV2/lib/css/zenburn.css | 80 + AdvancedCppV2/lib/font/league-gothic/LICENSE | 2 + .../lib/font/league-gothic/league-gothic.css | 10 + .../lib/font/league-gothic/league-gothic.eot | Bin 0 -> 25696 bytes .../lib/font/league-gothic/league-gothic.ttf | Bin 0 -> 64256 bytes .../lib/font/league-gothic/league-gothic.woff | Bin 0 -> 30764 bytes .../lib/font/rajdhani/Rajdhani-Bold.ttf | Bin 0 -> 373192 bytes .../lib/font/rajdhani/Rajdhani-Light.ttf | Bin 0 -> 357516 bytes .../lib/font/rajdhani/Rajdhani-Medium.ttf | Bin 0 -> 357884 bytes .../lib/font/rajdhani/Rajdhani-Regular.ttf | Bin 0 -> 352088 bytes .../lib/font/rajdhani/Rajdhani-SemiBold.ttf | Bin 0 -> 363500 bytes AdvancedCppV2/lib/font/rajdhani/rajdhani.css | 20 + .../lib/font/source-sans-pro/LICENSE | 45 + .../source-sans-pro-italic.eot | Bin 0 -> 75720 bytes .../source-sans-pro-italic.ttf | Bin 0 -> 238084 bytes .../source-sans-pro-italic.woff | Bin 0 -> 98556 bytes .../source-sans-pro-regular.eot | Bin 0 -> 88070 bytes .../source-sans-pro-regular.ttf | Bin 0 -> 288008 bytes .../source-sans-pro-regular.woff | Bin 0 -> 114324 bytes .../source-sans-pro-semibold.eot | Bin 0 -> 89897 bytes .../source-sans-pro-semibold.ttf | Bin 0 -> 284640 bytes .../source-sans-pro-semibold.woff | Bin 0 -> 115648 bytes .../source-sans-pro-semibolditalic.eot | Bin 0 -> 75706 bytes .../source-sans-pro-semibolditalic.ttf | Bin 0 -> 240944 bytes .../source-sans-pro-semibolditalic.woff | Bin 0 -> 98816 bytes .../font/source-sans-pro/source-sans-pro.css | 39 + AdvancedCppV2/lib/js/html5shiv.js | 7 + AdvancedCppV2/lib/js/promise.js | 2 + AdvancedCppV2/package.json | 44 + AdvancedCppV2/plugin/highlight/highlight.js | 303 + AdvancedCppV2/plugin/markdown/example.html | 134 + AdvancedCppV2/plugin/markdown/example.md | 36 + AdvancedCppV2/plugin/markdown/markdown.js | 446 ++ AdvancedCppV2/plugin/markdown/marked.js | 6 + AdvancedCppV2/plugin/math/math.js | 92 + AdvancedCppV2/plugin/multiplex/client.js | 13 + AdvancedCppV2/plugin/multiplex/index.js | 64 + AdvancedCppV2/plugin/multiplex/master.js | 34 + AdvancedCppV2/plugin/multiplex/package.json | 19 + AdvancedCppV2/plugin/notes-server/client.js | 65 + AdvancedCppV2/plugin/notes-server/index.js | 69 + AdvancedCppV2/plugin/notes-server/notes.html | 585 ++ AdvancedCppV2/plugin/notes/notes.html | 854 +++ AdvancedCppV2/plugin/notes/notes.js | 178 + AdvancedCppV2/plugin/print-pdf/print-pdf.js | 67 + AdvancedCppV2/plugin/search/search.js | 206 + AdvancedCppV2/plugin/zoom-js/zoom.js | 277 + .../test/assets/external-script-a.js | 1 + .../test/assets/external-script-b.js | 1 + .../test/assets/external-script-c.js | 1 + .../test/assets/external-script-d.js | 1 + .../test/examples/assets/beeping.txt | 2 + .../test/examples/assets/beeping.wav | Bin 0 -> 422472 bytes AdvancedCppV2/test/examples/assets/image1.png | Bin 0 -> 21991 bytes AdvancedCppV2/test/examples/assets/image2.png | Bin 0 -> 10237 bytes AdvancedCppV2/test/examples/barebones.html | 41 + .../test/examples/embedded-media.html | 53 + AdvancedCppV2/test/examples/math.html | 205 + .../test/examples/slide-backgrounds.html | 143 + .../test/examples/slide-transitions.html | 100 + AdvancedCppV2/test/qunit-2.5.0.css | 436 ++ AdvancedCppV2/test/qunit-2.5.0.js | 5188 ++++++++++++++ AdvancedCppV2/test/simple.md | 12 + .../test/test-dependencies-async.html | 78 + AdvancedCppV2/test/test-dependencies.html | 54 + AdvancedCppV2/test/test-grid-navigation.html | 74 + .../test/test-iframe-backgrounds.html | 104 + AdvancedCppV2/test/test-iframes.html | 108 + .../test-markdown-element-attributes.html | 132 + .../test/test-markdown-element-attributes.js | 44 + .../test/test-markdown-external.html | 37 + AdvancedCppV2/test/test-markdown-external.js | 20 + AdvancedCppV2/test/test-markdown-options.html | 40 + AdvancedCppV2/test/test-markdown-options.js | 27 + .../test/test-markdown-slide-attributes.html | 127 + .../test/test-markdown-slide-attributes.js | 44 + AdvancedCppV2/test/test-markdown.html | 51 + AdvancedCppV2/test/test-markdown.js | 11 + AdvancedCppV2/test/test-pdf.html | 82 + AdvancedCppV2/test/test-pdf.js | 12 + AdvancedCppV2/test/test-plugins.html | 105 + AdvancedCppV2/test/test-state.html | 139 + AdvancedCppV2/test/test.html | 85 + AdvancedCppV2/test/test.js | 614 ++ 236 files changed, 35528 insertions(+) create mode 100644 AdvancedCppV2/.gitignore create mode 100644 AdvancedCppV2/LICENSE create mode 100644 AdvancedCppV2/Presentation/agenda.md create mode 100644 AdvancedCppV2/Presentation/compilation.md create mode 100644 AdvancedCppV2/Presentation/exercises/complex/CMakeLists.txt create mode 100644 AdvancedCppV2/Presentation/exercises/complex/README.md create mode 100644 AdvancedCppV2/Presentation/exercises/complex/complex.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/complex/soulutions/complex.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/converter/CMakeLists.txt create mode 100644 AdvancedCppV2/Presentation/exercises/converter/README.md create mode 100644 AdvancedCppV2/Presentation/exercises/converter/converter.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/converter/solution/converter.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/exampleProject/CMakeLists.txt create mode 100644 AdvancedCppV2/Presentation/exercises/exampleProject/README.md create mode 100644 AdvancedCppV2/Presentation/exercises/exampleProject/exampleProject.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/list/CMakeLists.txt create mode 100644 AdvancedCppV2/Presentation/exercises/list/README.md create mode 100644 AdvancedCppV2/Presentation/exercises/list/list.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/list/solution/list.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/list/solution/list2.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/map/CMakeLists.txt create mode 100644 AdvancedCppV2/Presentation/exercises/map/README.md create mode 100644 AdvancedCppV2/Presentation/exercises/map/map.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/map/soultions/map1.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/map/soultions/map2.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/map/soultions/map3.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/map/soultions/map4.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/map/soultions/map5.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/resource/CMakeLists.txt create mode 100644 AdvancedCppV2/Presentation/exercises/resource/README.md create mode 100644 AdvancedCppV2/Presentation/exercises/resource/resource.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/resource/solution/resource.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/resourceFactory/CMakeLists.txt create mode 100644 AdvancedCppV2/Presentation/exercises/resourceFactory/README.md create mode 100644 AdvancedCppV2/Presentation/exercises/resourceFactory/resourceFactory.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/resourceFactory/soultions/resourceFactory.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/searcher/CMakeLists.txt create mode 100644 AdvancedCppV2/Presentation/exercises/searcher/README.md create mode 100644 AdvancedCppV2/Presentation/exercises/searcher/files/fileA.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/searcher/files/fileA.hpp create mode 100644 AdvancedCppV2/Presentation/exercises/searcher/files/fileB.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/searcher/files/fileB.hpp create mode 100644 AdvancedCppV2/Presentation/exercises/searcher/files/fileC.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/searcher/files/fileC.hpp create mode 100644 AdvancedCppV2/Presentation/exercises/searcher/searcher.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/searcher/solution/searcher.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/someClass/CMakeLists.txt create mode 100644 AdvancedCppV2/Presentation/exercises/someClass/README.md create mode 100644 AdvancedCppV2/Presentation/exercises/someClass/someclass.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/someClass/soultions/someclass.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/streamer/CMakeLists.txt create mode 100644 AdvancedCppV2/Presentation/exercises/streamer/README.md create mode 100644 AdvancedCppV2/Presentation/exercises/streamer/solution/streamer.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/streamer/solution/streamer2.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/streamer/streamer.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/students/CMakeLists.txt create mode 100644 AdvancedCppV2/Presentation/exercises/students/README.md create mode 100644 AdvancedCppV2/Presentation/exercises/students/solution/students.cpp create mode 100644 AdvancedCppV2/Presentation/exercises/students/students.cpp create mode 100644 AdvancedCppV2/Presentation/img/cyclic_dependencies.gif create mode 100644 AdvancedCppV2/Presentation/img/cyclicinverted.png create mode 100644 AdvancedCppV2/Presentation/img/kosz.png create mode 100644 AdvancedCppV2/Presentation/img/kot.jpg create mode 100644 AdvancedCppV2/Presentation/img/memory.png create mode 100644 AdvancedCppV2/Presentation/img/sharedptr10inverted.png create mode 100644 AdvancedCppV2/Presentation/img/sharedptr11inverted.png create mode 100644 AdvancedCppV2/Presentation/img/sharedptr1inverted.png create mode 100644 AdvancedCppV2/Presentation/img/sharedptr2inverted.png create mode 100644 AdvancedCppV2/Presentation/img/sharedptr3inverted.png create mode 100644 AdvancedCppV2/Presentation/img/sharedptr4inverted.png create mode 100644 AdvancedCppV2/Presentation/img/sharedptr5inverted.png create mode 100644 AdvancedCppV2/Presentation/img/sharedptr6inverted.png create mode 100644 AdvancedCppV2/Presentation/img/sharedptr7inverted.png create mode 100644 AdvancedCppV2/Presentation/img/sharedptr8inverted.png create mode 100644 AdvancedCppV2/Presentation/img/sharedptr9inverted.png create mode 100644 AdvancedCppV2/Presentation/img/uniqueptrinverted.png create mode 100644 AdvancedCppV2/Presentation/img/weakptrinverted.png create mode 100644 AdvancedCppV2/Presentation/index.html create mode 100644 AdvancedCppV2/Presentation/introduction.md create mode 100644 AdvancedCppV2/Presentation/moder_cpp_cpp11.md create mode 100644 AdvancedCppV2/Presentation/moder_cpp_cpp14.md create mode 100644 AdvancedCppV2/Presentation/moder_cpp_cpp17_constexpr.md create mode 100644 AdvancedCppV2/Presentation/moder_cpp_cpp17_filesystem.md create mode 100644 AdvancedCppV2/Presentation/moder_cpp_cpp17_folding.md create mode 100644 AdvancedCppV2/Presentation/moder_cpp_cpp17_intro.md create mode 100644 AdvancedCppV2/Presentation/moder_cpp_cpp17_small_features.md create mode 100644 AdvancedCppV2/Presentation/moder_cpp_cpp20_intro.md create mode 100644 AdvancedCppV2/Presentation/moder_cpp_cpp20_modules.md create mode 100644 AdvancedCppV2/Presentation/moder_cpp_cpp20_ranges.md create mode 100644 AdvancedCppV2/Presentation/moder_cpp_cpp20_small_features.md create mode 100644 AdvancedCppV2/Presentation/moder_cpp_intro.md create mode 100644 AdvancedCppV2/Presentation/recap.md create mode 100644 AdvancedCppV2/Presentation/smart_pointers_auto_ptr.md create mode 100644 AdvancedCppV2/Presentation/smart_pointers_best_practices.md create mode 100644 AdvancedCppV2/Presentation/smart_pointers_efficiency.md create mode 100644 AdvancedCppV2/Presentation/smart_pointers_implementation_details.md create mode 100644 AdvancedCppV2/Presentation/smart_pointers_shared_ptr.md create mode 100644 AdvancedCppV2/Presentation/smart_pointers_smart_ptrs.md create mode 100644 AdvancedCppV2/Presentation/smart_pointers_summary.md create mode 100644 AdvancedCppV2/Presentation/smart_pointers_unique_ptr.md create mode 100644 AdvancedCppV2/Presentation/smart_pointers_weak_ptr.md create mode 100644 AdvancedCppV2/Presentation/template_deduction_guides.md create mode 100644 AdvancedCppV2/Presentation/templates_basic.md create mode 100644 AdvancedCppV2/Presentation/templates_class.md create mode 100644 AdvancedCppV2/Presentation/templates_knowledge_check.md create mode 100644 AdvancedCppV2/Presentation/templates_partial_spec.md create mode 100644 AdvancedCppV2/Presentation/templates_specjalization.md create mode 100644 AdvancedCppV2/Presentation/templates_typetraits.md create mode 100644 AdvancedCppV2/Presentation/templates_variable.md create mode 100644 AdvancedCppV2/README.md create mode 100644 AdvancedCppV2/bower.json create mode 100644 AdvancedCppV2/css/print/paper.css create mode 100644 AdvancedCppV2/css/print/pdf.css create mode 100644 AdvancedCppV2/css/reset.css create mode 100644 AdvancedCppV2/css/reveal.css create mode 100644 AdvancedCppV2/css/reveal.scss create mode 100644 AdvancedCppV2/css/theme/README.md create mode 100644 AdvancedCppV2/css/theme/beige.css create mode 100644 AdvancedCppV2/css/theme/black.css create mode 100644 AdvancedCppV2/css/theme/blood.css create mode 100644 AdvancedCppV2/css/theme/coders.css create mode 100644 AdvancedCppV2/css/theme/coders_white.css create mode 100644 AdvancedCppV2/css/theme/league.css create mode 100644 AdvancedCppV2/css/theme/moon.css create mode 100644 AdvancedCppV2/css/theme/night.css create mode 100644 AdvancedCppV2/css/theme/serif.css create mode 100644 AdvancedCppV2/css/theme/simple.css create mode 100644 AdvancedCppV2/css/theme/sky.css create mode 100644 AdvancedCppV2/css/theme/solarized.css create mode 100644 AdvancedCppV2/css/theme/source/beige.scss create mode 100644 AdvancedCppV2/css/theme/source/black.scss create mode 100644 AdvancedCppV2/css/theme/source/blood.scss create mode 100644 AdvancedCppV2/css/theme/source/league.scss create mode 100644 AdvancedCppV2/css/theme/source/moon.scss create mode 100644 AdvancedCppV2/css/theme/source/night.scss create mode 100644 AdvancedCppV2/css/theme/source/serif.scss create mode 100644 AdvancedCppV2/css/theme/source/simple.scss create mode 100644 AdvancedCppV2/css/theme/source/sky.scss create mode 100644 AdvancedCppV2/css/theme/source/solarized.scss create mode 100644 AdvancedCppV2/css/theme/source/white.scss create mode 100644 AdvancedCppV2/css/theme/template/mixins.scss create mode 100644 AdvancedCppV2/css/theme/template/settings.scss create mode 100644 AdvancedCppV2/css/theme/template/theme.scss create mode 100644 AdvancedCppV2/css/theme/white.css create mode 100644 AdvancedCppV2/demo.html create mode 100644 AdvancedCppV2/gruntfile.js create mode 100644 AdvancedCppV2/img/altkom_logo.png create mode 100644 AdvancedCppV2/img/altkom_logo2.png create mode 100644 AdvancedCppV2/img/cpp_logo.png create mode 100644 AdvancedCppV2/img/mateusz.png create mode 100644 AdvancedCppV2/js/reveal.js create mode 100644 AdvancedCppV2/lib/css/monokai.css create mode 100644 AdvancedCppV2/lib/css/zenburn.css create mode 100644 AdvancedCppV2/lib/font/league-gothic/LICENSE create mode 100644 AdvancedCppV2/lib/font/league-gothic/league-gothic.css create mode 100644 AdvancedCppV2/lib/font/league-gothic/league-gothic.eot create mode 100644 AdvancedCppV2/lib/font/league-gothic/league-gothic.ttf create mode 100644 AdvancedCppV2/lib/font/league-gothic/league-gothic.woff create mode 100644 AdvancedCppV2/lib/font/rajdhani/Rajdhani-Bold.ttf create mode 100644 AdvancedCppV2/lib/font/rajdhani/Rajdhani-Light.ttf create mode 100644 AdvancedCppV2/lib/font/rajdhani/Rajdhani-Medium.ttf create mode 100644 AdvancedCppV2/lib/font/rajdhani/Rajdhani-Regular.ttf create mode 100644 AdvancedCppV2/lib/font/rajdhani/Rajdhani-SemiBold.ttf create mode 100644 AdvancedCppV2/lib/font/rajdhani/rajdhani.css create mode 100644 AdvancedCppV2/lib/font/source-sans-pro/LICENSE create mode 100644 AdvancedCppV2/lib/font/source-sans-pro/source-sans-pro-italic.eot create mode 100644 AdvancedCppV2/lib/font/source-sans-pro/source-sans-pro-italic.ttf create mode 100644 AdvancedCppV2/lib/font/source-sans-pro/source-sans-pro-italic.woff create mode 100644 AdvancedCppV2/lib/font/source-sans-pro/source-sans-pro-regular.eot create mode 100644 AdvancedCppV2/lib/font/source-sans-pro/source-sans-pro-regular.ttf create mode 100644 AdvancedCppV2/lib/font/source-sans-pro/source-sans-pro-regular.woff create mode 100644 AdvancedCppV2/lib/font/source-sans-pro/source-sans-pro-semibold.eot create mode 100644 AdvancedCppV2/lib/font/source-sans-pro/source-sans-pro-semibold.ttf create mode 100644 AdvancedCppV2/lib/font/source-sans-pro/source-sans-pro-semibold.woff create mode 100644 AdvancedCppV2/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot create mode 100644 AdvancedCppV2/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf create mode 100644 AdvancedCppV2/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff create mode 100644 AdvancedCppV2/lib/font/source-sans-pro/source-sans-pro.css create mode 100644 AdvancedCppV2/lib/js/html5shiv.js create mode 100644 AdvancedCppV2/lib/js/promise.js create mode 100644 AdvancedCppV2/package.json create mode 100644 AdvancedCppV2/plugin/highlight/highlight.js create mode 100644 AdvancedCppV2/plugin/markdown/example.html create mode 100644 AdvancedCppV2/plugin/markdown/example.md create mode 100644 AdvancedCppV2/plugin/markdown/markdown.js create mode 100644 AdvancedCppV2/plugin/markdown/marked.js create mode 100644 AdvancedCppV2/plugin/math/math.js create mode 100644 AdvancedCppV2/plugin/multiplex/client.js create mode 100644 AdvancedCppV2/plugin/multiplex/index.js create mode 100644 AdvancedCppV2/plugin/multiplex/master.js create mode 100644 AdvancedCppV2/plugin/multiplex/package.json create mode 100644 AdvancedCppV2/plugin/notes-server/client.js create mode 100644 AdvancedCppV2/plugin/notes-server/index.js create mode 100644 AdvancedCppV2/plugin/notes-server/notes.html create mode 100644 AdvancedCppV2/plugin/notes/notes.html create mode 100644 AdvancedCppV2/plugin/notes/notes.js create mode 100644 AdvancedCppV2/plugin/print-pdf/print-pdf.js create mode 100644 AdvancedCppV2/plugin/search/search.js create mode 100644 AdvancedCppV2/plugin/zoom-js/zoom.js create mode 100644 AdvancedCppV2/test/assets/external-script-a.js create mode 100644 AdvancedCppV2/test/assets/external-script-b.js create mode 100644 AdvancedCppV2/test/assets/external-script-c.js create mode 100644 AdvancedCppV2/test/assets/external-script-d.js create mode 100644 AdvancedCppV2/test/examples/assets/beeping.txt create mode 100644 AdvancedCppV2/test/examples/assets/beeping.wav create mode 100644 AdvancedCppV2/test/examples/assets/image1.png create mode 100644 AdvancedCppV2/test/examples/assets/image2.png create mode 100644 AdvancedCppV2/test/examples/barebones.html create mode 100644 AdvancedCppV2/test/examples/embedded-media.html create mode 100644 AdvancedCppV2/test/examples/math.html create mode 100644 AdvancedCppV2/test/examples/slide-backgrounds.html create mode 100644 AdvancedCppV2/test/examples/slide-transitions.html create mode 100644 AdvancedCppV2/test/qunit-2.5.0.css create mode 100644 AdvancedCppV2/test/qunit-2.5.0.js create mode 100644 AdvancedCppV2/test/simple.md create mode 100644 AdvancedCppV2/test/test-dependencies-async.html create mode 100644 AdvancedCppV2/test/test-dependencies.html create mode 100644 AdvancedCppV2/test/test-grid-navigation.html create mode 100644 AdvancedCppV2/test/test-iframe-backgrounds.html create mode 100644 AdvancedCppV2/test/test-iframes.html create mode 100644 AdvancedCppV2/test/test-markdown-element-attributes.html create mode 100644 AdvancedCppV2/test/test-markdown-element-attributes.js create mode 100644 AdvancedCppV2/test/test-markdown-external.html create mode 100644 AdvancedCppV2/test/test-markdown-external.js create mode 100644 AdvancedCppV2/test/test-markdown-options.html create mode 100644 AdvancedCppV2/test/test-markdown-options.js create mode 100644 AdvancedCppV2/test/test-markdown-slide-attributes.html create mode 100644 AdvancedCppV2/test/test-markdown-slide-attributes.js create mode 100644 AdvancedCppV2/test/test-markdown.html create mode 100644 AdvancedCppV2/test/test-markdown.js create mode 100644 AdvancedCppV2/test/test-pdf.html create mode 100644 AdvancedCppV2/test/test-pdf.js create mode 100644 AdvancedCppV2/test/test-plugins.html create mode 100644 AdvancedCppV2/test/test-state.html create mode 100644 AdvancedCppV2/test/test.html create mode 100644 AdvancedCppV2/test/test.js diff --git a/AdvancedCppV2/.gitignore b/AdvancedCppV2/.gitignore new file mode 100644 index 0000000..259148f --- /dev/null +++ b/AdvancedCppV2/.gitignore @@ -0,0 +1,32 @@ +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app diff --git a/AdvancedCppV2/LICENSE b/AdvancedCppV2/LICENSE new file mode 100644 index 0000000..d15cf3b --- /dev/null +++ b/AdvancedCppV2/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2020 Hakim El Hattab, http://hakim.se, and reveal.js contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/agenda.md b/AdvancedCppV2/Presentation/agenda.md new file mode 100644 index 0000000..ec1d320 --- /dev/null +++ b/AdvancedCppV2/Presentation/agenda.md @@ -0,0 +1,26 @@ + + +### Agenda + +* Cloning and building example project +* What's new since C++98 + * C++11 + * C++14 + * C++17 + * C++20 +* Smart pointers + - std::unique_ptr<> + - std::shared_ptr<> + - std::weak_ptr<> + - Best practices + - Implementation details + - Efficiency +* Templates + * Basics + * Typetraits + * Specializations + * Partial specializations + * Templates variable + * Deduction guides + + \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/compilation.md b/AdvancedCppV2/Presentation/compilation.md new file mode 100644 index 0000000..fc292fa --- /dev/null +++ b/AdvancedCppV2/Presentation/compilation.md @@ -0,0 +1,46 @@ +# Cloning and building example project + +___ + + +## Setup + +* Clone repository: https://github.com/nauka-programowania-MA/AdvancedCppV2 +* Go to exercises/exampleProject +* Compile it and run: + * mkdir build + * cd build + * cmake .. + * make -j4 (where 4 is available threads) + * ./ExampleProject +* Should print Hello World + +If you don't have linux, you can use replit + +* Click Create C++ +* Name it and confirm with button Create Repl. +* Click three dot on the rigt top screen and click upload folder +* Now find your directory with repo and upload it +* Congratulation, you can use linux shell wit sanitizers, cmake and valgridn support :) + + +___ + + +## replit + +If you decided to use replit please configure this file: `replit.nix`: + +```bash +{ pkgs }: { + deps = [ + pkgs.clang_12 + pkgs.ccls + pkgs.gdb + pkgs.gnumake + pkgs.vim + pkgs.valgrind + pkgs.cmake + ]; +} +``` \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/complex/CMakeLists.txt b/AdvancedCppV2/Presentation/exercises/complex/CMakeLists.txt new file mode 100644 index 0000000..1d92400 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/complex/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +project(Complex) + +set(SRC_LIST + complex.cpp +) + +add_executable(${PROJECT_NAME} ${SRC_LIST}) +target_compile_options(${PROJECT_NAME} PUBLIC -Wall -Werror -Wpedantic -Wextra) +target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR}) \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/complex/README.md b/AdvancedCppV2/Presentation/exercises/complex/README.md new file mode 100644 index 0000000..e4d70f3 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/complex/README.md @@ -0,0 +1,16 @@ +## Linux compilation + + > mkdir build + > cd build + > cmake -DCMAKE_BUILD_TYPE=Debug .. + > make + +## Exercise 1 + +Write a function that creates `std::complex` number from two provided numbers. If the types of numbers are different, it should create `std::complex` of the first parameter. Usage: + +```c++ +std::complex a = makeComplex(4, 5); // both ints +std::complex b = makeComplex(3.0, 2.0); // both doubles +std::complex c = makeComplex(1, 5.0); // int, double -> takes int +``` \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/complex/complex.cpp b/AdvancedCppV2/Presentation/exercises/complex/complex.cpp new file mode 100644 index 0000000..0931381 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/complex/complex.cpp @@ -0,0 +1 @@ +#include diff --git a/AdvancedCppV2/Presentation/exercises/complex/soulutions/complex.cpp b/AdvancedCppV2/Presentation/exercises/complex/soulutions/complex.cpp new file mode 100644 index 0000000..0e1461f --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/complex/soulutions/complex.cpp @@ -0,0 +1,6 @@ +#include + +template +std::complex makeComplex(T a, U b) { + return std::complex{a, static_cast(b)}; +} \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/converter/CMakeLists.txt b/AdvancedCppV2/Presentation/exercises/converter/CMakeLists.txt new file mode 100644 index 0000000..2337c43 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/converter/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +project(Converter) + +set(SRC_LIST + converter.cpp +) + +add_executable(${PROJECT_NAME} ${SRC_LIST}) +target_compile_options(${PROJECT_NAME} PUBLIC -Wall -Werror -Wpedantic -Wextra) +target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR}) \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/converter/README.md b/AdvancedCppV2/Presentation/exercises/converter/README.md new file mode 100644 index 0000000..eb46653 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/converter/README.md @@ -0,0 +1,18 @@ +## Linux compilation + + > mkdir build + > cd build + > cmake -DCMAKE_BUILD_TYPE=Debug .. + > make + +## Valgrind usage + + > valgrind valgrind_params path/to/binary binary_params, eg: + > valgrind --leak-check=full ./Converter + > or full output using command: valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --log-file=valgrind-out.txt ./Converter + +## Converter exapmle + +1. Compile and run Converter application and check memory leaks under valgrind +2. Fix code using std::unique_ptr and std::make_unique +3. Find other issues and fix them (use good practise etc...) diff --git a/AdvancedCppV2/Presentation/exercises/converter/converter.cpp b/AdvancedCppV2/Presentation/exercises/converter/converter.cpp new file mode 100644 index 0000000..8e7d424 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/converter/converter.cpp @@ -0,0 +1,59 @@ +#include +#include +#include + +class Resource { +public: + Resource(const std::string& str): str_(str) {} + + const std::string& str() const { + return str_; + } + +private: + std::string str_; +}; + +class Converter { +public: + virtual void Convert(Resource* resource) = 0; +}; + +class CurlyBracketConverter : public Converter { +public: + virtual void Convert(Resource* resource) { + std::cout << "{" << resource->str() << "}\n"; + } +}; + +class SquareBracketConverter : public Converter { +public: + virtual void Convert(Resource* resource) { + std::cout << "[" << resource->str() << "]\n"; + } +}; + +class Printer { +public: + Printer(Converter* converter): converter_(converter) {} + + void Print(Resource* resource) { + converter_->Convert(resource); + } + +private: + Converter* converter_; +}; + +int main() { + Resource* resource = new Resource("Ala has a cat"); + Printer printer(new SquareBracketConverter{}); + Printer printer2(new CurlyBracketConverter{}); + + printer.Print(resource); + printer2.Print(resource); + + delete resource; + + return 0; +} diff --git a/AdvancedCppV2/Presentation/exercises/converter/solution/converter.cpp b/AdvancedCppV2/Presentation/exercises/converter/solution/converter.cpp new file mode 100644 index 0000000..0677212 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/converter/solution/converter.cpp @@ -0,0 +1,84 @@ +#include +#include +#include + +class Resource { +public: + explicit Resource(const std::string& str): str_(str) {} + + const std::string& str() const { + return str_; + } + +private: + std::string str_; +}; + +class Converter { +public: + Converter() = default; + + // Rule of 5 + virtual ~Converter() = default; + Converter(const Converter& other) = default; + Converter(Converter&& other) = default; + Converter& operator=(const Converter& other) = default; + Converter& operator=(Converter&& other) = default; + + virtual void Convert(const std::unique_ptr& resource) const = 0; +}; + +class CurlyBracketConverter : public Converter { +public: + void Convert(const std::unique_ptr& resource) const override { + std::cout << "{" << resource->str() << "}\n"; + } +}; + +class SquareBracketConverter : public Converter { +public: + virtual void Convert(const std::unique_ptr& resource) const override{ + std::cout << "[" << resource->str() << "]\n"; + } +}; + +class Printer { +public: + explicit Printer(std::unique_ptr&& converter) noexcept : converter_(std::move(converter)) {} + + void Print(const std::unique_ptr& resource) const { + converter_->Convert(resource); + } + +private: + std::unique_ptr converter_; +}; + +struct Foo { + Foo(std::unique_ptr ptr); +}; + +struct Bar { + use(std::unique_ptr ptr); +}; + +struct MockFoo {}; + +TEST() { + std::unique_ptr mock; + MockFoo* mock_ptr = mock.get(); + Bar bar; + bar.use(std::move(mock)); + + EXPECT_CALL(mock_ptr, use); +} + +int main() { + auto resource = std::make_unique("Ala has a cat"); + Printer printer(std::make_unique()); + Printer printer2(std::make_unique()); + printer.Print(resource); + printer2.Print(resource); + + return 0; +} \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/exampleProject/CMakeLists.txt b/AdvancedCppV2/Presentation/exercises/exampleProject/CMakeLists.txt new file mode 100644 index 0000000..21e3c97 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/exampleProject/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +project(ExampleProject) + +set(SRC_LIST + exampleProject.cpp +) + +add_executable(${PROJECT_NAME} ${SRC_LIST}) +# target_compile_options(${PROJECT_NAME} PUBLIC -Wall -Werror -Wpedantic -Wextra) +target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR}) \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/exampleProject/README.md b/AdvancedCppV2/Presentation/exercises/exampleProject/README.md new file mode 100644 index 0000000..14082ac --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/exampleProject/README.md @@ -0,0 +1,10 @@ +## Linux compilation + + > mkdir build + > cd build + > cmake -DCMAKE_BUILD_TYPE=Debug .. + > make + +## Run program + +Run program ./ExampleProject and check output, which should be "Hello World"; diff --git a/AdvancedCppV2/Presentation/exercises/exampleProject/exampleProject.cpp b/AdvancedCppV2/Presentation/exercises/exampleProject/exampleProject.cpp new file mode 100644 index 0000000..4229ba4 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/exampleProject/exampleProject.cpp @@ -0,0 +1,7 @@ +#include +#include + +int main() { + const std::string str("Hello world!\n"); + std::cout << str << '\n'; +} diff --git a/AdvancedCppV2/Presentation/exercises/list/CMakeLists.txt b/AdvancedCppV2/Presentation/exercises/list/CMakeLists.txt new file mode 100644 index 0000000..752b75d --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/list/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +project(List) + +set(SRC_LIST + list.cpp +) + +add_executable(${PROJECT_NAME} ${SRC_LIST}) +target_compile_options(${PROJECT_NAME} PUBLIC -Wall -Werror -Wpedantic -Wextra) +target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR}) \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/list/README.md b/AdvancedCppV2/Presentation/exercises/list/README.md new file mode 100644 index 0000000..934b308 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/list/README.md @@ -0,0 +1,25 @@ +## Linux compilation + + > mkdir build + > cd build + > cmake -DCMAKE_BUILD_TYPE=Debug .. + > make + +## Valgrind usage + + > valgrind valgrind_params path/to/binary binary_params, eg: + > valgrind --leak-check=full ./List + > or full output using command: valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --log-file=valgrind-out.txt ./List + +## Resource exapmle + +Take a look at `list.cpp` file, where simple (and buggy) single-linked list is implemented. + +* `pushFront` method adds a new `Node` at the begining of the list. +* `findByValue` method iterates over the list and returns the first Node with matching `value` or `nullptr`. + +1. Compile and run List application +2. Fix memory leaks without introducing smart pointers +3. Fix memory leaks with smart pointers. What kind of pointers needs to be applied and why? +4. Add function to add a node at the end of the list (try to do this with time complexity O(1)) +5. Add function to delete node with provided value. diff --git a/AdvancedCppV2/Presentation/exercises/list/list.cpp b/AdvancedCppV2/Presentation/exercises/list/list.cpp new file mode 100644 index 0000000..15ad44b --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/list/list.cpp @@ -0,0 +1,68 @@ +#include + +class Node { +public: + Node(const int value, Node* next) + : next_(next), value_(value) {} + + explicit Node(const int v) + : Node(v, nullptr) {} + + const Node* next() const { return next_; } + int value() const { return value_; } + +private: + Node* next_; + int value_; +}; + +class List { +public: + void pushFront(int value) { + if (!head_) { + head_ = new Node(value); + return; + } + + head_ = new Node(value, head_); + } + + const Node* findByValue(const int value) const { + const auto* current = head_; + + while (current) { + if (current->value() == value) { + return current; + } + current = current->next(); + } + + return nullptr; + } + +private: + Node* head_ = nullptr; +}; + +int main() { + List list; + + list.pushFront(4); + list.pushFront(2); + list.pushFront(7); + list.pushFront(9); + + if (const auto* const node = list.findByValue(1)) { + std::cout << node->value() << '\n'; + } else { + std::cout << "can't find node with value 1\n"; + } + + if (const auto* const node = list.findByValue(7)) { + std::cout << node->value() << '\n'; + } else { + std::cout << "can't find node with value 7\n"; + } + + return 0; +} diff --git a/AdvancedCppV2/Presentation/exercises/list/solution/list.cpp b/AdvancedCppV2/Presentation/exercises/list/solution/list.cpp new file mode 100644 index 0000000..f9da679 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/list/solution/list.cpp @@ -0,0 +1,76 @@ +#include +#include +#include + +class Node { +public: + Node(const int value, std::unique_ptr next) + : next_(std::move(next)), value_(value) {} + + explicit Node(const int v) + : Node(v, nullptr) {} + + const Node* next() const { return next_.get(); } + int value() const { return value_; } + std::unique_ptr getNext() { return std::move(next_); } + +private: + std::unique_ptr next_; + int value_; +}; + +// 1 +// 2 -> 1 +// 3 -> 2 -> 1 +// 4 -> 3 -> 2 -> 1 + +class List { +public: + void pushFront(int value) { + if (!head_) { + head_ = std::make_unique(value); + return; + } + + head_ = std::make_unique(value, std::move(head_)); + } + + const Node* findByValue(const int value) const { + const auto* current = head_.get(); + + while (current) { + if (current->value() == value) { + return current; + } + current = current->next(); + } + + return nullptr; + } + +private: + std::unique_ptr head_; +}; + +int main() { + List list; + + list.pushFront(4); + list.pushFront(2); + list.pushFront(7); + list.pushFront(9); + + if (const auto* const node = list.findByValue(1)) { + std::cout << node->value() << '\n'; + } else { + std::cout << "can't find node with value 1\n"; + } + + if (const auto* const node = list.findByValue(7)) { + std::cout << node->value() << '\n'; + } else { + std::cout << "can't find node with value 7\n"; + } + + return 0; +} diff --git a/AdvancedCppV2/Presentation/exercises/list/solution/list2.cpp b/AdvancedCppV2/Presentation/exercises/list/solution/list2.cpp new file mode 100644 index 0000000..6f545ee --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/list/solution/list2.cpp @@ -0,0 +1,181 @@ +#include +#include +#include + +class Node { +public: + Node(const int value, std::unique_ptr next) + : next_(std::move(next)), value_(value) {} + + explicit Node(const int v) + : Node(v, nullptr) {} + + const Node* next() const { return next_.get(); } + Node* next() { return next_.get(); } + int value() const { return value_; } + void setNext(std::unique_ptr next) { next_ = std::move(next); } + std::unique_ptr getNext() { return std::move(next_); } + +private: + std::unique_ptr next_; + int value_; +}; + +// ht +// 1 +// h t +// 2 -> 1 +// h t +// 3 -> 2 -> 1 +// h t +// 4 -> 3 -> 2 -> 1 +// h t +// 4 -> 3 -> 2 -> 1 -> 5 +// +// 3 -> 2 -> 1 -> 5 +// 3 -> 1 -> 5 + +class List { +public: + void pushFront(int value) { + if (!head_) { + pushHead(value); + return; + } + + head_ = std::make_unique(value, std::move(head_)); + } + + void pushBack(int value) { + if (!tail_) { + pushHead(value); + return; + } + + tail_->setNext(std::make_unique(value)); + tail_ = tail_->next(); + } + + bool erase(int value) { + // Remove head + if (head_ && head_->value() == value) { + head_ = head_->getNext(); + if (!head_) { + tail_ = nullptr; + } + return true; + } + + if (auto* node = findPrevNode(value)) { + // Remove tail + if (node->next() == tail_) { + tail_ = node; + } + node->setNext(std::move(node->next()->getNext())); + return true; + } + + return false; + } + + const Node* findByValue(const int value) const { + const auto* current = head_.get(); + + while (current) { + if (current->value() == value) { + return current; + } + current = current->next(); + } + + return nullptr; + } + + void print() const { + const auto* current = head_.get(); + + while (current) { + std::cout << current->value() << ' '; + current = current->next(); + } + std::cout << '\n'; + } + +private: + // ht + // 1 + // h t + // 2 -> 1 + // h t + // 2 -> 1 -> 3 + // 2 -> 3 + void pushHead(int value) { + head_ = std::make_unique(value); + tail_ = head_.get(); + } + + Node* findPrevNode(const int value) const { + auto* current = head_.get(); + Node* prev = nullptr; + + while (current) { + if (current->value() == value) { + return prev; + } + prev = current; + current = current->next(); + } + + return nullptr; + } + + std::unique_ptr head_; + Node* tail_{nullptr}; +}; + +int main() { + List list; + + list.pushFront(4); + list.pushFront(2); + list.pushFront(7); + list.pushFront(9); + list.print(); + + if (const auto* const node = list.findByValue(1)) { + std::cout << node->value() << '\n'; + } else { + std::cout << "can't find node with value 1\n"; + } + + if (const auto* const node = list.findByValue(7)) { + std::cout << node->value() << '\n'; + } else { + std::cout << "can't find node with value 7\n"; + } + + list.pushBack(10); + list.print(); + list.pushBack(12); + list.pushFront(3); + list.pushFront(5); + list.pushBack(13); + list.print(); + + list.erase(2); + list.print(); + + list.erase(5); + list.print(); + + list.erase(13); + list.print(); + + list.erase(12); + list.print(); + + list.pushBack(40); + list.print(); + + return 0; +} diff --git a/AdvancedCppV2/Presentation/exercises/map/CMakeLists.txt b/AdvancedCppV2/Presentation/exercises/map/CMakeLists.txt new file mode 100644 index 0000000..52a7691 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/map/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +project(Map) + +set(SRC_LIST + map.cpp +) + +add_executable(${PROJECT_NAME} ${SRC_LIST}) +target_compile_options(${PROJECT_NAME} PUBLIC -Wall -Werror -Wpedantic -Wextra) +target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR}) \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/map/README.md b/AdvancedCppV2/Presentation/exercises/map/README.md new file mode 100644 index 0000000..f926fc2 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/map/README.md @@ -0,0 +1,55 @@ +## Linux compilation + + > mkdir build + > cd build + > cmake -DCMAKE_BUILD_TYPE=Debug .. + > make + +## Exercise 1 + +Write a template class `VectorMap` that represents an over-engineered `std::map`. + +Inside, it should hold 2 `std::vectors` of the same size, each with different types. The first vector should hold keys, the other one values. + +Elements at the same position in both vectors should create a pair like `1` and `'c'` below. + +```c++ +VectorMap map; +map.insert(1, 'c'); +map[1] = 'e'; // replaces value under 1 +std::cout << map[1]; // prints 'e' +map.at(2); // throw std::out_of_range +``` + +Implement the mentioned above `insert()`, `operator[]`, `at()` methods. + +Do not bother about duplicated keys for now. +You can also try to implement additional methods from the `std::map` interface 🙂 + +Use [cppreference](http://en.cppreference.com/w/cpp/container/map). + +## Exercise 2 - `static_assert` + +Add a constraint to our `VectorMap`. + +Do not allow to create an object when `ValueType` does not have a default constructor. + +Use `static_assert` and proper trait from [``](https://en.cppreference.com/w/cpp/types#Type_traits) library. + +Check if it works properly. + +## Exercise 3 - `isIntKey()` + +Write a function `isIntKey()` in `VectorMap`. It should return `true` when the KeyType is `int` and `false` otherwise. + +Check the [``](https://en.cppreference.com/w/cpp/types#Type_traits) library for some inspiration 🙂 + +# Exercie 4 + +Write a partial specialization of `VectorMap` for boolean keys. We can have only 2 values for boolean keys. There is no need to keep vectors inside. + +Implement properly all currently available functions. + +# Exercie 5 + +Write a variable template `is_int_key_v`. It should return a value of the `is_int_key` field in a given template type. \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/map/map.cpp b/AdvancedCppV2/Presentation/exercises/map/map.cpp new file mode 100644 index 0000000..23b74e9 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/map/map.cpp @@ -0,0 +1,4 @@ +#include +#include +#include +#include diff --git a/AdvancedCppV2/Presentation/exercises/map/soultions/map1.cpp b/AdvancedCppV2/Presentation/exercises/map/soultions/map1.cpp new file mode 100644 index 0000000..948ea21 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/map/soultions/map1.cpp @@ -0,0 +1,44 @@ +#include +#include +#include +#include + +template +class VectorMap { + std::vector keys_; + std::vector values_; + +public: + using K = Key; + using V = Value; + + void insert(const Key& k, const Value& v) { + keys_.emplace_back(k); + values_.emplace_back(v); + } + + Value& operator[](const Key& k); + Value& at(const Key& k); +}; + +template +Value& VectorMap::operator[](const Key& k) { + auto it = std::find(std::begin(keys_), std::end(keys_), k); + if (it == std::end(keys_)) { + keys_.emplace_back(k); + values_.emplace_back(Value{}); + return values_.back(); + } + auto dist = std::distance(keys_.begin(), it); + return values_[dist]; +} + +template +Value& VectorMap::at(const Key& k) { + auto it = std::find(std::begin(keys_), std::end(keys_), k); + if (it == std::end(keys_)) { + throw std::out_of_range("This key does not exist"); + } + auto dist = std::distance(keys_.begin(), it); + return values_[dist]; +} diff --git a/AdvancedCppV2/Presentation/exercises/map/soultions/map2.cpp b/AdvancedCppV2/Presentation/exercises/map/soultions/map2.cpp new file mode 100644 index 0000000..cd20dd2 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/map/soultions/map2.cpp @@ -0,0 +1,54 @@ +#include +#include +#include +#include + +template +class VectorMap { + std::vector keys_; + std::vector values_; + + static_assert(std::is_default_constructible::value, "Value should have the default constructor"); + static_assert(std::is_default_constructible_v, "Value should have the default constructor"); + +public: + using K = Key; + using V = Value; + void insert(const Key& k, const Value& v) { + keys_.emplace_back(k); + values_.emplace_back(v); + } + + static constexpr bool isIntKey() { + // if (std::is_integral_v) { + if (std::is_same_v) { + return true; + } + return false; + } + + Value& operator[](const Key& k); + Value& at(const Key& k); +}; + +template +Value& VectorMap::operator[](const Key& k) { + auto it = std::find(std::begin(keys_), std::end(keys_), k); + if (it == std::end(keys_)) { + keys_.emplace_back(k); + values_.emplace_back(Value{}); + return values_.back(); + } + auto dist = std::distance(keys_.begin(), it); + return values_[dist]; +} + +template +Value& VectorMap::at(const Key& k) { + auto it = std::find(std::begin(keys_), std::end(keys_), k); + if (it == std::end(keys_)) { + throw std::out_of_range("This key does not exist"); + } + auto dist = std::distance(keys_.begin(), it); + return values_[dist]; +} diff --git a/AdvancedCppV2/Presentation/exercises/map/soultions/map3.cpp b/AdvancedCppV2/Presentation/exercises/map/soultions/map3.cpp new file mode 100644 index 0000000..a0f966b --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/map/soultions/map3.cpp @@ -0,0 +1,56 @@ +#include +#include +#include +#include + +template +class VectorMap { + std::vector keys_; + std::vector values_; + + static_assert(std::is_default_constructible::value, "Value should have the default constructor"); + static_assert(std::is_default_constructible_v, "Value should have the default constructor"); + +public: + using K = Key; + using V = Value; + void insert(const Key& k, const Value& v) { + keys_.emplace_back(k); + values_.emplace_back(v); + } + + static constexpr bool isIntKey() { + // if (std::is_integral_v) { + if (std::is_same_v) { + return true; + } + return false; + } + + Value& operator[](const Key& k); + Value& at(const Key& k); + + static constexpr bool is_int_key = std::is_same_v; +}; + +template +Value& VectorMap::operator[](const Key& k) { + auto it = std::find(std::begin(keys_), std::end(keys_), k); + if (it == std::end(keys_)) { + keys_.emplace_back(k); + values_.emplace_back(Value{}); + return values_.back(); + } + auto dist = std::distance(keys_.begin(), it); + return values_[dist]; +} + +template +Value& VectorMap::at(const Key& k) { + auto it = std::find(std::begin(keys_), std::end(keys_), k); + if (it == std::end(keys_)) { + throw std::out_of_range("This key does not exist"); + } + auto dist = std::distance(keys_.begin(), it); + return values_[dist]; +} diff --git a/AdvancedCppV2/Presentation/exercises/map/soultions/map4.cpp b/AdvancedCppV2/Presentation/exercises/map/soultions/map4.cpp new file mode 100644 index 0000000..9c7a510 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/map/soultions/map4.cpp @@ -0,0 +1,125 @@ +#include +#include +#include +#include + +template +class VectorMap { + std::vector keys_; + std::vector values_; + + static_assert(std::is_default_constructible::value, "Value should have the default constructor"); + static_assert(std::is_default_constructible_v, "Value should have the default constructor"); + +public: + using K = Key; + using V = Value; + template + using iterator = typename std::vector::iterator; + + void insert(const Key& k, const Value& v) { + keys_.emplace_back(k); + values_.emplace_back(v); + } + + static constexpr bool isIntKey() { + // if (std::is_integral_v) { + if (std::is_same_v) { + return true; + } + return false; + } + + Value& operator[](const Key& k); + Value& at(const Key& k); + + static constexpr bool is_int_key = std::is_same_v; +}; + +template +Value& VectorMap::operator[](const Key& k) { + auto it = std::find(std::begin(keys_), std::end(keys_), k); + if (it == std::end(keys_)) { + keys_.emplace_back(k); + values_.emplace_back(Value{}); + return values_.back(); + } + auto dist = std::distance(keys_.begin(), it); + return values_[dist]; +} + +template +Value& VectorMap::at(const Key& k) { + auto it = std::find(std::begin(keys_), std::end(keys_), k); + if (it == std::end(keys_)) { + throw std::out_of_range("This key does not exist"); + } + auto dist = std::distance(keys_.begin(), it); + return values_[dist]; +} + + +template +class VectorMap { // specialization + static_assert(std::is_default_constructible::value, + "ValueType must have the default constructor"); + + ValueType t_; + ValueType f_; + +public: + static constexpr bool is_int_key = false; // type_traits #2 + + VectorMap() { + std::cout << "bool specialization used\n"; + } + + void insert(bool key, ValueType&& value) { + if (key) { + t_ = value; + } else { + f_ = value; + } + } + + ValueType& operator[](bool key) { + if (key) { + return t_; + } + return f_; + } + + ValueType& at(bool key) { + if (key) { + return t_; + } + return f_; + } +}; + +int main() { + VectorMap map; + // VectorMap::iterator k; + map.insert(1, 'c'); + std::cout << map[1] << '\n'; + map[1] = 'e'; // replaces value under 1 + std::cout << map[1] << '\n'; // prints 'e' + // map.at(2); // throw std::out_of_range + std::cout << std::boolalpha << map.isIntKey() << '\n'; + std::cout << std::boolalpha << map.is_int_key << '\n'; + + VectorMap map3; + std::cout << std::boolalpha << map3.isIntKey() << '\n'; + + VectorMap map4; + map4.insert(true, 3); + map4.insert(false, 0); + std::cout << map4[true] << '\n'; + map4[true] = 10; // replaces value under 1 + std::cout << map4[true] << '\n'; // prints 'e' + + std::vector v{1, 2, 3}; + find(begin(v), end(v), 2); + + return 0; +} \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/map/soultions/map5.cpp b/AdvancedCppV2/Presentation/exercises/map/soultions/map5.cpp new file mode 100644 index 0000000..4e3d4c9 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/map/soultions/map5.cpp @@ -0,0 +1,134 @@ +#include +#include +#include +#include + +template +class VectorMap { + std::vector keys_; + std::vector values_; + + static_assert(std::is_default_constructible::value, "Value should have the default constructor"); + static_assert(std::is_default_constructible_v, "Value should have the default constructor"); + +public: + using K = Key; + using V = Value; + template + using iterator = typename std::vector::iterator; + + void insert(const Key& k, const Value& v) { + keys_.emplace_back(k); + values_.emplace_back(v); + } + + static constexpr bool isIntKey() { + // if (std::is_integral_v) { + if (std::is_same_v) { + return true; + } + return false; + } + + Value& operator[](const Key& k); + Value& at(const Key& k); + + static constexpr bool is_int_key = std::is_same_v; +}; + +template +Value& VectorMap::operator[](const Key& k) { + auto it = std::find(std::begin(keys_), std::end(keys_), k); + if (it == std::end(keys_)) { + keys_.emplace_back(k); + values_.emplace_back(Value{}); + return values_.back(); + } + auto dist = std::distance(keys_.begin(), it); + return values_[dist]; +} + +template +Value& VectorMap::at(const Key& k) { + auto it = std::find(std::begin(keys_), std::end(keys_), k); + if (it == std::end(keys_)) { + throw std::out_of_range("This key does not exist"); + } + auto dist = std::distance(keys_.begin(), it); + return values_[dist]; +} + + +template +class VectorMap { // specialization + static_assert(std::is_default_constructible::value, + "ValueType must have the default constructor"); + + ValueType t_; + ValueType f_; + +public: + static constexpr bool is_int_key = false; // type_traits #2 + + VectorMap() { + std::cout << "bool specialization used\n"; + } + + void insert(bool key, ValueType&& value) { + if (key) { + t_ = value; + } else { + f_ = value; + } + } + + ValueType& operator[](bool key) { + if (key) { + return t_; + } + return f_; + } + + ValueType& at(bool key) { + if (key) { + return t_; + } + return f_; + } +}; + +template +constexpr bool is_int_key_v = T::is_int_key; + +template +constexpr bool is_int_key_v1 = VectorMap::is_int_key; + +int main() { + VectorMap map; + // VectorMap::iterator k; + map.insert(1, 'c'); + std::cout << map[1] << '\n'; + map[1] = 'e'; // replaces value under 1 + std::cout << map[1] << '\n'; // prints 'e' + // map.at(2); // throw std::out_of_range + std::cout << std::boolalpha << map.isIntKey() << '\n'; + std::cout << std::boolalpha << map.is_int_key << '\n'; + + VectorMap map3; + std::cout << std::boolalpha << map3.isIntKey() << '\n'; + + VectorMap map4; + map4.insert(true, 3); + map4.insert(false, 0); + std::cout << map4[true] << '\n'; + map4[true] = 10; // replaces value under 1 + std::cout << map4[true] << '\n'; // prints 'e' + std::cout << std::boolalpha << is_int_key_v << '\n'; + std::cout << std::boolalpha << is_int_key_v << '\n'; + std::cout << std::boolalpha << is_int_key_v << '\n'; + + std::vector v{1, 2, 3}; + find(begin(v), end(v), 2); + + return 0; +} \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/resource/CMakeLists.txt b/AdvancedCppV2/Presentation/exercises/resource/CMakeLists.txt new file mode 100644 index 0000000..78dd153 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/resource/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +project(Resource) + +set(SRC_LIST + resource.cpp +) + +add_executable(${PROJECT_NAME} ${SRC_LIST}) +target_compile_options(${PROJECT_NAME} PUBLIC -Wall -Werror -Wpedantic -Wextra) +target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR}) \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/resource/README.md b/AdvancedCppV2/Presentation/exercises/resource/README.md new file mode 100644 index 0000000..74cb103 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/resource/README.md @@ -0,0 +1,19 @@ +## Linux compilation + + > mkdir build + > cd build + > cmake -DCMAKE_BUILD_TYPE=Debug .. + > make + +## Valgrind usage + + > valgrind valgrind_params path/to/binary binary_params, eg: + > valgrind --leak-check=full ./Resource 5 + > or full output using command: valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --log-file=valgrind-out.txt ./Resource + +## Resource exapmle + +1. Compile and run Resource application and check memory leaks under valgrind +2. Fix memory leaks with a proper usage of delete operator +3. Refactor the solution to use `std::unique_ptr<>` +4. Use `std::make_unique` \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/resource/resource.cpp b/AdvancedCppV2/Presentation/exercises/resource/resource.cpp new file mode 100644 index 0000000..e0c201a --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/resource/resource.cpp @@ -0,0 +1,32 @@ +#include +#include +#include + +class Resource { +public: + void use(const char* N) { + std::cout << "Using resource. Passed " << *N << '\n'; + if (*N == 'd') { + throw std::logic_error("Passed d. d is prohibited."); + } + }; +}; + +int main(int argc, char* argv[]) { + if (argc != 2) { + std::cerr << "You need to pass 1 argument" << '\n'; + exit(-1); + } + + const char* arg = argv[1]; + Resource* rsc = nullptr; + + try { + rsc = new Resource(); + rsc->use(arg); + delete rsc; + } catch (std::logic_error& e) { + std::cout << e.what() << '\n'; + } + return 0; +} diff --git a/AdvancedCppV2/Presentation/exercises/resource/solution/resource.cpp b/AdvancedCppV2/Presentation/exercises/resource/solution/resource.cpp new file mode 100644 index 0000000..cb23290 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/resource/solution/resource.cpp @@ -0,0 +1,32 @@ +#include +#include +#include + +class Resource { +public: + void use(const char* N) { + std::cout << "Using resource. Passed " << *N << '\n'; + if (*N == 'd') { + throw std::logic_error("Passed d. d is prohibited."); + } + }; +}; + +int main(int argc, char* argv[]) { + if (argc != 2) { + std::cerr << "You need to pass 1 argument" << '\n'; + exit(-1); + } + + const char* arg = argv[1]; + std::unique_ptr rsc; + + try { + rsc = std::make_unique(); + rsc->use(arg); + } catch (std::logic_error& e) { + + } + + return 0; +} diff --git a/AdvancedCppV2/Presentation/exercises/resourceFactory/CMakeLists.txt b/AdvancedCppV2/Presentation/exercises/resourceFactory/CMakeLists.txt new file mode 100644 index 0000000..663bf30 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/resourceFactory/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +project(ResourceFactory) + +set(SRC_LIST + resourceFactory.cpp +) + +add_executable(${PROJECT_NAME} ${SRC_LIST}) +target_compile_options(${PROJECT_NAME} PUBLIC -Wall -Werror -Wpedantic -Wextra) +target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR}) \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/resourceFactory/README.md b/AdvancedCppV2/Presentation/exercises/resourceFactory/README.md new file mode 100644 index 0000000..c2581f2 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/resourceFactory/README.md @@ -0,0 +1,20 @@ +## Linux compilation + + > mkdir build + > cd build + > cmake -DCMAKE_BUILD_TYPE=Debug .. + > make + +## Valgrind usage + + > valgrind valgrind_params path/to/binary binary_params, eg: + > valgrind --leak-check=full ./ResourceFactory + > or full output using command: valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose --log-file=valgrind-out.txt ./ResourceFactory + +## Resource exapmle + +1. Compile and run ResourceFactory application +2. Put comments in places where you can spot some problems +3. How to remove elements from the collection (vector<Resource*> resources)? +4. Check memory leaks +5. Fix problems \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/resourceFactory/resourceFactory.cpp b/AdvancedCppV2/Presentation/exercises/resourceFactory/resourceFactory.cpp new file mode 100644 index 0000000..959f82f --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/resourceFactory/resourceFactory.cpp @@ -0,0 +1,65 @@ +#include +#include +#include + +struct Resource +{ + Resource(char* byte) : byte_(byte) {} + char* byte() const { return byte_; } + virtual std::string name() const = 0; + ~Resource() { delete byte_; } + +protected: + char* byte_ = nullptr; +}; + +struct ResourceA : Resource +{ + ResourceA(char* byte) : Resource(byte) {} + std::string name() const override { return std::string("ResourceA ").append(byte_); } +}; + +struct ResourceB : Resource +{ + ResourceB(char* byte) : Resource(byte) {} + std::string name() const override { return std::string("ResourceB ").append(byte_); } +}; + +struct ResourceFactory +{ + Resource* makeResourceA(char* byte) { return new ResourceA{byte}; } + Resource* makeResourceB(char* byte) { return new ResourceB{byte}; } +}; + +struct ResourceCollection +{ + void add(Resource* r) { resources.push_back(r); } + void clear() { resources.clear(); } + Resource* operator[](int index) { return resources[index]; } + void printAll() + { + for (const auto & res : resources) + { + std::cout << res->name() << std::endl; + } + } + +private: + std::vector resources; +}; + +int main() +{ + ResourceCollection collection; + ResourceFactory rf; + collection.add(rf.makeResourceA(new char{91})); + collection.add(rf.makeResourceB(new char{92})); + collection.printAll(); + + auto firstByte = collection[0]->byte(); + collection.clear(); + std::cout << *firstByte << std::endl; + + return 0; +} + diff --git a/AdvancedCppV2/Presentation/exercises/resourceFactory/soultions/resourceFactory.cpp b/AdvancedCppV2/Presentation/exercises/resourceFactory/soultions/resourceFactory.cpp new file mode 100644 index 0000000..2be86a1 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/resourceFactory/soultions/resourceFactory.cpp @@ -0,0 +1,77 @@ +#include +#include +#include +#include +#include + +struct Resource { + Resource(std::unique_ptr byte) + : byte_(std::move(byte)) {} + virtual ~Resource() = default; + // Rule of 5 + + char* byte() const { return byte_.get(); } + virtual std::string name() const = 0; + +protected: + std::unique_ptr byte_; +}; + +struct ResourceA : Resource { + ~ResourceA() override { + std::cout << "ResourceA D'tor\n"; + } + + ResourceA(std::unique_ptr byte) + : Resource(std::move(byte)) {} + std::string name() const override { return std::string("ResourceA ").append(1, *byte_); } +}; + +struct ResourceB : Resource { + ~ResourceB() override { + std::cout << "ResourceB D'tor\n"; + } + + ResourceB(std::unique_ptr byte) + : Resource(std::move(byte)) {} + std::string name() const override { return std::string("ResourceB ") + *byte_; } +}; + +struct ResourceFactory { + static std::unique_ptr makeResourceA(std::unique_ptr byte) { + return std::make_unique(std::move(byte)); + } + static std::unique_ptr makeResourceB(std::unique_ptr byte) { + return std::make_unique(std::move(byte)); + } +}; + +struct ResourceCollection { + void add(std::unique_ptr r) { resources.push_back(std::move(r)); } + void clear() { resources.clear(); } + Resource* operator[](int index) const { return resources[index].get(); } + void printAll() const { + for (const auto& res : resources) { + std::cout << res->name() << '\n'; + } + } + +private: + std::vector> resources; +}; + +int main() { + ResourceCollection collection; + collection.add(ResourceFactory::makeResourceA(std::make_unique(0x78))); + collection.add(ResourceFactory::makeResourceB(std::make_unique(0x79))); + collection.printAll(); + + auto* firstByte = collection[0]->byte(); + std::cout << *firstByte << '\n'; + + collection.clear(); + // Use already free memory! + //std::cout << *firstByte << '\n'; + + return 0; +} diff --git a/AdvancedCppV2/Presentation/exercises/searcher/CMakeLists.txt b/AdvancedCppV2/Presentation/exercises/searcher/CMakeLists.txt new file mode 100644 index 0000000..36f5eb9 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/searcher/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +project(Searcher) + +set(SRC_LIST + searcher.cpp +) + +add_executable(${PROJECT_NAME} ${SRC_LIST}) +target_compile_options(${PROJECT_NAME} PUBLIC -Wall -Werror -Wpedantic -Wextra) +target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR}) \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/searcher/README.md b/AdvancedCppV2/Presentation/exercises/searcher/README.md new file mode 100644 index 0000000..34e1bab --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/searcher/README.md @@ -0,0 +1,11 @@ +## Linux compilation + + > mkdir build + > cd build + > cmake -DCMAKE_BUILD_TYPE=Debug .. + > make + +## Exercise + +* Open project searcher +* Implement function `searchFiles` which returns all files containing `keyWord`. diff --git a/AdvancedCppV2/Presentation/exercises/searcher/files/fileA.cpp b/AdvancedCppV2/Presentation/exercises/searcher/files/fileA.cpp new file mode 100644 index 0000000..02a351d --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/searcher/files/fileA.cpp @@ -0,0 +1 @@ +Hello FileA \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/searcher/files/fileA.hpp b/AdvancedCppV2/Presentation/exercises/searcher/files/fileA.hpp new file mode 100644 index 0000000..2df259e --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/searcher/files/fileA.hpp @@ -0,0 +1 @@ +Hello FileA Ala ma kota \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/searcher/files/fileB.cpp b/AdvancedCppV2/Presentation/exercises/searcher/files/fileB.cpp new file mode 100644 index 0000000..0cfda48 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/searcher/files/fileB.cpp @@ -0,0 +1 @@ +Hello FileB ALA \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/searcher/files/fileB.hpp b/AdvancedCppV2/Presentation/exercises/searcher/files/fileB.hpp new file mode 100644 index 0000000..353e76f --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/searcher/files/fileB.hpp @@ -0,0 +1 @@ +Hello FileB ala \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/searcher/files/fileC.cpp b/AdvancedCppV2/Presentation/exercises/searcher/files/fileC.cpp new file mode 100644 index 0000000..048655a --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/searcher/files/fileC.cpp @@ -0,0 +1 @@ +Hello FileC ala kot i ala \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/searcher/files/fileC.hpp b/AdvancedCppV2/Presentation/exercises/searcher/files/fileC.hpp new file mode 100644 index 0000000..414da62 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/searcher/files/fileC.hpp @@ -0,0 +1 @@ +Hello FileC ala kot i Ala i nie ma kota \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/searcher/searcher.cpp b/AdvancedCppV2/Presentation/exercises/searcher/searcher.cpp new file mode 100644 index 0000000..9fe212c --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/searcher/searcher.cpp @@ -0,0 +1,26 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace fs = std::filesystem; +namespace rn = std::ranges; + +std::vector searchFiles(std::string_view keyWord, const fs::path& dirName) { + std::vector paths; + + // Write implementation here + + return paths; +} + +int main() { + std::cout << "Files which contains word Ala:\n"; + const auto& res = searchFiles("Ala", fs::current_path().string() + "/files"); + rn::copy(res, std::ostream_iterator(std::cout, "\n")); +} \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/searcher/solution/searcher.cpp b/AdvancedCppV2/Presentation/exercises/searcher/solution/searcher.cpp new file mode 100644 index 0000000..0679f8f --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/searcher/solution/searcher.cpp @@ -0,0 +1,37 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace fs = std::filesystem; +namespace rn = std::ranges; + +std::vector searchFiles(std::string_view keyWord, const fs::path& dirName) { + std::vector paths; + rn::transform(fs::directory_iterator(dirName), + fs::directory_iterator{}, + std::back_inserter(paths), + [](const auto& entry) { return entry.path(); }); + + std::vector res; + rn::copy_if(paths, std::back_inserter(res), [keyWord](const auto& path) { + std::ifstream file(path); + const auto end = std::istream_iterator{}; + return std::find_if(std::istream_iterator(file), + end, + [keyWord](const auto& str) { return str == keyWord; }) != end; + }); + + return res; +} + +int main() { + std::cout << "Files which contains word Ala:\n"; + const auto& res = searchFiles("Ala", fs::current_path().string() + "/files"); + rn::copy(res, std::ostream_iterator(std::cout, "\n")); +} \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/someClass/CMakeLists.txt b/AdvancedCppV2/Presentation/exercises/someClass/CMakeLists.txt new file mode 100644 index 0000000..490a553 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/someClass/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +project(Someclass) + +set(SRC_LIST + someclass.cpp +) + +add_executable(${PROJECT_NAME} ${SRC_LIST}) +target_compile_options(${PROJECT_NAME} PUBLIC -Wall -Werror -Wpedantic -Wextra) +target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR}) \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/someClass/README.md b/AdvancedCppV2/Presentation/exercises/someClass/README.md new file mode 100644 index 0000000..c80e261 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/someClass/README.md @@ -0,0 +1,10 @@ +## Linux compilation + + > mkdir build + > cd build + > cmake -DCMAKE_BUILD_TYPE=Debug .. + > make + +## Not exrecise + +This is only example of template \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/someClass/someclass.cpp b/AdvancedCppV2/Presentation/exercises/someClass/someclass.cpp new file mode 100644 index 0000000..3d5023e --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/someClass/someclass.cpp @@ -0,0 +1,7 @@ +#include + +int main() { + SomeClass sc; + std::cout << sc.getValue() << std::endl; + return 0; +} \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/someClass/soultions/someclass.cpp b/AdvancedCppV2/Presentation/exercises/someClass/soultions/someclass.cpp new file mode 100644 index 0000000..0cbf0f1 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/someClass/soultions/someclass.cpp @@ -0,0 +1,16 @@ +#include + +template +class SomeClass { +public: + T getValue() { return value; } +private: + T value = {}; + U* ptr = nullptr; +}; + +int main() { + SomeClass sc; + std::cout << sc.getValue() << std::endl; + return 0; +} \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/streamer/CMakeLists.txt b/AdvancedCppV2/Presentation/exercises/streamer/CMakeLists.txt new file mode 100644 index 0000000..5c09b8f --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/streamer/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +project(Streamer) + +set(SRC_LIST + streamer.cpp +) + +add_executable(${PROJECT_NAME} ${SRC_LIST}) +target_compile_options(${PROJECT_NAME} PUBLIC -Wall -Werror -Wpedantic -Wextra) +target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR}) \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/streamer/README.md b/AdvancedCppV2/Presentation/exercises/streamer/README.md new file mode 100644 index 0000000..f8e5992 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/streamer/README.md @@ -0,0 +1,31 @@ +## Linux compilation + + > mkdir build + > cd build + > cmake -DCMAKE_BUILD_TYPE=Debug .. + > make + +## Exercise 1 + +* Open project streamer +* Add two C'tor: + * first will take initializer_list + * second const StreamInfo& +* initialize vector in initialization list + +## Exercise 2 + +* Open project streamer +* Add aliases for ip adress, port and vlan. + +## Exercise 3 + +* Open project streamer +* Create Streamer interface + * Allow to add data to stream + * Allow to add/remove receivers + * start/stop stream + * validate data +* Create Mpeg2Streamer class +* Create MjpegStreamer class +* Make some implementations that will allow to compile code \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/streamer/solution/streamer.cpp b/AdvancedCppV2/Presentation/exercises/streamer/solution/streamer.cpp new file mode 100644 index 0000000..35d70cb --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/streamer/solution/streamer.cpp @@ -0,0 +1,29 @@ +#include +#include + +class Streamer { +public: + struct StreamInfo { + std::string sourceAddress_; + std::string destinationAddress_; + uint16_t sourcePort_; + uint16_t destinationPort_; + uint16_t vlan_; + }; + + Streamer(std::initializer_list info) + : info_(info) { + } + + Streamer(const StreamInfo& info) + : info_{info} { + } + +private: + std::vector info_; +}; + +int main() { + Streamer streamer({"192.168.0.0", "192.168.10.24", 5432, 5432, 12}); + Streamer streamer2{}; +} \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/streamer/solution/streamer2.cpp b/AdvancedCppV2/Presentation/exercises/streamer/solution/streamer2.cpp new file mode 100644 index 0000000..654d1e1 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/streamer/solution/streamer2.cpp @@ -0,0 +1,71 @@ +#include +#include + +template +struct StrongAlias { + // Other C'tors, for r-value etc... + StrongAlias(const T& value) + : value_(value) {} + + const T& operator*() const { return value_; } + T& operator*() { return value_; } + + // Need to add hash function and operator<< + auto operator<=>(const StrongAlias& other) const = default; + +private: + T value_; +}; + +using IpV4 = StrongAlias; +using IpV6 = StrongAlias; +using MacAddress = StrongAlias; + +class Streamer { +public: + using IpAddress = std::string; + using Port = uint16_t; + using Vlan = uint16_t; + + struct StreamInfo { + IpAddress sourceAddress_; + IpAddress destinationAddress_; + Port sourcePort_; + Port destinationPort_; + Vlan vlan_; + }; + + Streamer(std::initializer_list info) + : info_(info) { + } + + Streamer(const StreamInfo& info) + : info_{info} { + } + +private: + std::vector info_; +}; + +struct I {}; +struct A : I {}; +struct B : I {}; + +struct Foo { + Foo(I* inter): inter_(inter) {} + + I* inter_; +} + +int main() { + Streamer streamer({"192.168.0.0", "192.168.10.24", 5432, 5432, 12}); + Streamer streamer2{}; + + IpV4 ip{"192.168.0.1"}; + IpV4 ip2{"192.168.0.2"}; + + std::cout << std::boolalpha << (ip < ip2) << '\n'; + std::cout << std::boolalpha << (ip > ip2) << '\n'; + std::cout << std::boolalpha << (ip != ip2) << '\n'; + std::cout << std::boolalpha << (ip == ip2) << '\n'; +} \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/streamer/streamer.cpp b/AdvancedCppV2/Presentation/exercises/streamer/streamer.cpp new file mode 100644 index 0000000..aaa9c26 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/streamer/streamer.cpp @@ -0,0 +1,23 @@ +#include +#include + +class Streamer { +public: + struct StreamInfo { + std::string sourceAddress_; + std::string destinationAddress_; + uint16_t sourcePort_; + uint16_t destinationPort_; + uint16_t vlan_; + }; + + // Write C'tors here + +private: + std::vector info_; +}; + +int main() { + Streamer streamer({"192.168.0.0", "192.168.10.24", 5432, 5432, 12}); + Streamer streamer2{}; +} \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/students/CMakeLists.txt b/AdvancedCppV2/Presentation/exercises/students/CMakeLists.txt new file mode 100644 index 0000000..ddbe8c3 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/students/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +project(Students) + +set(SRC_LIST + students.cpp +) + +add_executable(${PROJECT_NAME} ${SRC_LIST}) +target_compile_options(${PROJECT_NAME} PUBLIC -Wall -Werror -Wpedantic -Wextra) +target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR}) \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/students/README.md b/AdvancedCppV2/Presentation/exercises/students/README.md new file mode 100644 index 0000000..193c733 --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/students/README.md @@ -0,0 +1,22 @@ +## Linux compilation + + > mkdir build + > cd build + > cmake -DCMAKE_BUILD_TYPE=Debug .. + > make + +## Exercise + +Open project `students`: + +* implement function `filterStudents`, +* Student should be disqualified whether his average is below `minAvergae`, +* Write an algorithm that prints students using ranges (do not implement friend operator<<) + +Output: + +```C++ +Name: Jane | index: 743561 | average: 4.44 +Name: Tom | index: 811111 | average: 4.36 +Name: Mike | index: 811111 | average: 4.45 +``` diff --git a/AdvancedCppV2/Presentation/exercises/students/solution/students.cpp b/AdvancedCppV2/Presentation/exercises/students/solution/students.cpp new file mode 100644 index 0000000..856366b --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/students/solution/students.cpp @@ -0,0 +1,49 @@ +#include +#include +#include +#include +#include +#include +#include + +namespace rn = std::ranges; + +struct Student { + int index_; + std::string name_; + double average_; +}; + +std::vector filterStudents(const std::vector>& students, double minAverage) { + std::vector result; + + rn::copy(students | + std::views::transform([](const auto& student) { return student.get(); }) | + std::views::filter([minAverage](const auto& student) { return student->average_ <= minAverage; }), + std::back_inserter(result)); + + return result; +} + +int main() { + std::vector> students; + students.push_back(std::make_unique(123456, "Jordan", 4.53)); + students.push_back(std::make_unique(654321, "Michael", 4.51)); + students.push_back(std::make_unique(246892, "John", 4.56)); + students.push_back(std::make_unique(743561, "Jane", 4.44)); + students.push_back(std::make_unique(811111, "Anna", 4.46)); + students.push_back(std::make_unique(811111, "Tom", 4.36)); + students.push_back(std::make_unique(811111, "Jerry", 4.56)); + students.push_back(std::make_unique(811111, "Mike", 4.45)); + + const auto res = filterStudents(students, 4.45); + rn::transform(res, + std::ostream_iterator(std::cout, "\n"), + [](const Student* student) { + std::ostringstream os; + os << "Name: " << student->name_ + << " | index: " << student->index_ + << " | average: " << student->average_; + return os.str(); + }); +} \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/exercises/students/students.cpp b/AdvancedCppV2/Presentation/exercises/students/students.cpp new file mode 100644 index 0000000..032a64d --- /dev/null +++ b/AdvancedCppV2/Presentation/exercises/students/students.cpp @@ -0,0 +1,34 @@ +#include +#include +#include +#include +#include +#include +#include + +namespace rn = std::ranges; + +struct Student { + int index_; + std::string name_; + double average_; +}; + +std::vector filterStudents(const std::vector>& students, double minAverage) { + // Implement method here +} + +int main() { + std::vector> students; + students.push_back(std::make_unique(123456, "Jordan", 4.53)); + students.push_back(std::make_unique(654321, "Michael", 4.51)); + students.push_back(std::make_unique(246892, "John", 4.56)); + students.push_back(std::make_unique(743561, "Jane", 4.44)); + students.push_back(std::make_unique(811111, "Anna", 4.46)); + students.push_back(std::make_unique(811111, "Tom", 4.36)); + students.push_back(std::make_unique(811111, "Jerry", 4.56)); + students.push_back(std::make_unique(811111, "Mike", 4.45)); + + const auto res = filterStudents(students, 4.45); + // Print result here using ranges (do not create friend operator<<) +} \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/img/cyclic_dependencies.gif b/AdvancedCppV2/Presentation/img/cyclic_dependencies.gif new file mode 100644 index 0000000000000000000000000000000000000000..d0c6e4afb12feac7545bea22f09b61b0601f1809 GIT binary patch literal 191477 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 literal 0 HcmV?d00001 diff --git a/AdvancedCppV2/Presentation/img/cyclicinverted.png b/AdvancedCppV2/Presentation/img/cyclicinverted.png new file mode 100644 index 0000000000000000000000000000000000000000..311cc8293215478d76e1efdd5fb149360756329d GIT binary patch literal 34465 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 literal 0 HcmV?d00001 diff --git a/AdvancedCppV2/Presentation/img/kot.jpg b/AdvancedCppV2/Presentation/img/kot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d656c64ad98a504bbe6febd66032048c631fe96e GIT binary patch literal 37922 zcmbTdbx<8mw?4WFA!y)*;BLX)o!}naEl41+k>Ieg0Kwg1oPmOnkcOLd>0O$xXE-=@yFyw#_=rFM8FmF8o5&!@O z?tQlZPWXQs%m>(yaG&525Rs7IJJkLI_y7Y7`{5%j9Nfo`@4Y?W?*l%f!(ouIihTN_ zYy?kkhsov>orORlTG@%EGI>tPZfx(1h=h%Ui--S}ikgO&j)Rknn}?TAOk6@zN?Jx% zRZU$(Q%hUN#Pp|``7aAg2S+Do7gsls-(UZLz@XrenAo`Zgv6v|aCS~^UVcGgQE^pu zO>JF$Lt|4{cTaC$|G?nT)bz~k-2B4g(k66kduMlV|KRZA^6L8L_U``S@n2jp0NDSA z^}opeAGpxpaeess5%weezqnvNxV#%I`bRi2)=wBB%J4>ZU&z^f5HLlfvno3gDcDuc zv5f5}k+3N_Hoso{3+=y<{l5d|`~M5s{{s6zxRwAYurTk72a6661`NemD|Qc=w0>aq;n@X8W2}UQ9lgrJ-)pkSkAvA=?0MjH5?s z#?3`s?_UY5+ zO7`>ggM61X9fvEZ!8&>gHw?s>(8eow<}m2B9{dco1KIZTs&KIxV~Pfd)f6&8ZFpL+K2KP+|mr5B{=J1DFhDTogD78yG! zMUw@;(?b4cuPaaLNzpuLnNQ^xZu#;AV0|k%`Q#_zRls=xXKEYxcpf4~@Dd@!FA zr}^vJaPfq!CE4C_ABvLWI~s;`{A>=0?F3EirSS5<0jl-TLaq98&c$T?#!PWOObOh; zQld=Yr|0GU;|RpyBXE5KT%&7R#;4_IFX%4i<^~yS`B0Pr@Jevw9G6@(ndFqm*gyKs zDzI=obd#eWerD|KZ3%pd{f3J(hwuLyD_9rr#bAqz#SI1|M?F!&Ep7Kt#S#>@tTEf4PVQr?}=QPoG31{{ld;=irODA&0=;_ct*lel{NVVtva%F}lKsKF2=61k$^6;Oi zgxSz;6|c+VNA7i)1nwE%0P*dEZ-C@nOBW$38ciHHK6wTRI+E7Ey^o z8!?1-D)#Rzm=jjE;0#S!Mnc{cdiobrSwgxi^`x;L6k?56qH4(`i0d0dQ;4f9feBES zP@SpO{Y<=k!WX{6Rk8QWO&69^`EUM%aal*Bgl0`^ZM%d;u5l^SR~#HO z7zs?ZKmYyozawD6?1k_Y`1EsxD!u`bUg8F_iVie%THB-D0l#@Q3E4=LKp}l{qqLV4Aw}BUEpo0rVCH^h=rL?YoL80hR1=afJtA`@4-9n}w{oK{%Hzgq9 zpgHK-6Tj-;1#vJY0_!TYTzmLW4XyG9hqDHeab84 z<4KB^W$;i=8YJUP{N?bkb5w+#CS+@+8>_3c$kGclnsn}N&BAS&I5RXM%o!u{$RIYe zl)I01(<$K-LHx`%`b_~Q4j&L#96P9C50BF_S_-qaC22L0&le#Z4Nh< z{kS0Z6$hOJZJ@%<=tFJwZm%;@dmQAn((x{c3WBd4+iKwmiDEm}z3|}GjSlH;{*WiZ zBKz9)>l9fct`ST}(9L#?w)}YmI2RrGhcp#dsmk=PFo!Z_Qv}(^EUFJR>MrSI=yqCBf$`B_ z6C{@}!PIr^GAJWmf`eCKb`4J12R15UkgRsz9gxsdJx^Sxn^Q$j#>_%$++@#y^M8Qn>;zA#_ zx=2qUXH~3u`-#7t=v7sZ-tvpS2i5s#1@fi7F0F0Oh3uB5;4nw6;R_APgXwxwflVCR z&5sxSq%yf)DV|kZQlgm&qNhHoE#*}nU2Vjz9iB|2NBiOclHQ|`$ zw99Un=F>0S=Zg%x7a(NrTJE#Ed_uRf4^_S0P{YC58(_XX5qjx?b^+qo|8RGrQS!T@ zZf=0C9}e*>Qs<#`nO19-mS@RAUoPj;%X>b$^sC7MAI+&$9@ay(2G{$(i$WhI7eR@Y z{vBQ9Ec6Ez*t>UsYcgXlU1ORss*BDIRv)+#EScx*((Harfr()>?RW$H0pFisumdR) zdqO(s9{uLpnggm3!BQ$E^T z)3=IQ3rb4KJ|u23{Q>WVXIgAATmQ;;!QG-b^}Bxq&^>}0?_<&acFp>u2rx`FKOFOL z%`PZQ*c0xGoS`ouowF=hCWVBgeRUq1E*kQXxG#N#dtPD+ zC$zOM3bw(0XA33^XvzlEMZl)ECSwK3N9cLh%hEt^Wrm1)sJ`W6`c@OLxd?P;Zt}`` zE!Dm5KevXf>|GR8Rx3%uJRI-0VBX&970g^@s^z%!-8%zZYdJtRFAzN6a;2YYg(ZmqSN8=R+yLj?s(&q}lD7Jo)#(&vEu z44GVWy6=c_FW~0lf6L*fY4Z%&118$`5nVL_$T8faj7jJ;MblHRe(ec^}n8m<)%Drl&z@& zsU>z+FvI(vDms34@STWUhWy9d2)tPI=aGjwC{l#HyH*>S1I6!_6yO*(>CEgYM`-aO zm@}Z>dV5`z5_yP+$923oJ##i!Ks~5GPla+v!`iSb#CT@Q+C+@PqEUU7f&PH>mF!Hn zNhr}Rd+`m>CAJ|KRDM0!=5`(P@OdRE^1QyXEb_bGSn@xA#C}WFiWT0I@5!}V8+O*y z7pz4mTP>I^?H#svdG-P^Ol@6ldqK9rCuyatF;I#+=$uiVmTtq(*V-0T;Lul3{$8D` z(rjB~*R_?OTIXN;vku5f#_F$a@mH2CWwKnGRyj_TBNmuo-T+d~caq26i=5&_qnOEg znIA%E{@Y@YnW@VPc3w}D}Cp+a=g3lg77To}; z%fYE>1FWLMX8p(&fxF_HlhgL^>xX8i?zkDr<4J3%ROzW}@5>+3(*kBYgOSf*iLskr zt6^lT8fv8cK+ko==pr;`YB-}|55mDJ%h!Vl-HER0_|2eZmoDp;HhB!j=?E)yHbL12qM?`h@o10Ql`? zy-x%4F*tRurD1yrY_6kfM1uh(D!K`OEfS^W@bIbo(1<>}-KIX=J7i{^6@F`v3uqpV zm^;lw)h4K~b$d<096f&ne2W)?9wFk6mnT_9vG2>WstY{D|A5$_x(8&P7D#r~I1^`v zR59rm-xcGJDS0<3aPb#7FWpX2Hy(U%{ZXe9`!fB_#{586Jfwi2ZnutA3*WIgHp?cd z*9H+Y^#i*MYq9~wEc3M|zFaH6Y@%AD28?y~k5UnVjIIV+A?8tQ8%>RKvqp1@pE6qY zOrGJOavccBSzCTB#KNaj49bjasGHj)^>=ED(3br$k&K&3xTz&%y!F1wWiy4AspT73 z;Hhs}i=(8SbMfhP9LDo#YV)#;L7fCOEJcslp`W}FBDNXn=fuxdpD0=zuC?cZywf1m zqxx0r;i`uOQ$TgAdA#E5HlKc6AhC+vPMPqMSAOf4&Ao0$eo@vVZtmZfnt#oxg91W? zf4gUZnu}h?h433Stod$lN9#7lSfU*c-RBdQ@@vnhp`2wQVDKt)3jQ!5gDhL+zLbf9 zq+LLdF%6G$(Qtn8@`GVkuFm(psYn7+m4$}@DUKz*RO^$un0ET&jn&P{iFXcW_Q|X1 z)iAJ@TM%OU2AELr02&&*ri+JmfvX$4LS@*zH>le9`?2m?h})giAIb-Y%Ek5#eL&yp z&TGf=S6a89q^b%?##%KRNdiD_(?Y}ttXwXGc*%kJTi~OT9d^)I9bf6$>?=P0S5px; ze%(dA?NU_ zM{D~5w9M6zM*}pwR*kvhr3XuM)vSF(cmd+2x;oD0_};Y89T*a?@9XiNU$mQ0V=c1x z6P&T7F>rHm`!5LX73XS7_Nv4Bw2tM9ZZ(44aBwd(%h~QnH-l~zQM`dYfAqENM=o}p)m6VV-V6fO_54ES4u(a{8odU$&U4kyJpEV>Ba15 zKoNW((_&tAqjd%0cF(Kd!h9@#v(2c@?eyX}`5OEH0*lg~?`N;Ph%VLMiFmx5<-t3a z?_+z5GwMXRt3((*>kf`T6nWkNwLaih!-z3~D!XGxe@tbScPgs{{~ay^B-(<|pe^c#&sdjC1b8%B7=Sow>eIj*7I@PFIIM@I{9 z>}Ix}y1_R(MoJsLFz~(z`4l5Hqd=we_*54=ec_-M()-I(DE}!#|C8ALjF)jMn!?O+ ztvl|S6_ZIrecVseux*mp_F8+sL|^J@+n=+~M0^Vd(hh>5S3svjJnz35%6fVJJ#&vM zam1W5Iy=HV}c=$~)69XF7kin-D?$BN=cvrw3BH~iu3i@djTio^JupF!Q_Y`E!_*>O=dtrn!np=#PKt>RLs`g7? z0=ERlM1q;%ld3#}6Q{w2z_2#XjHa+1RJ|sOGJ-{f_l{&sqvq_N?xKN8@d7)A9`t@9 z3qAM+u{tPAcNq48F24wGM=>oW-7rlD;Kyu|4SBlYez!#yLJ|_hD|1mEcT@J#vv}Y@ z{Y=#}wU|Fl9R?!_a=l3-MN8;@TR2FHaxMt;eFOMUZzd6CH`L6LMt?_=Fseu8Cj(C3p+63$eXZ*7blR}h9mf=r_84X>w=)H74M)Y)Y`3fR3||ULwuof zXv!^)#PfiTNSp=YVSgRJ=G4;JpJ#R`<7klu_NA=muVhVNWRIr5YxjmhQNI4LT~=1} zG+@Pn^vZ;&PdF4Sfjp#KRxJgXtSbV+J5?IR>XGAM%dM;!YGNUM!pC$tkLv8sTZnzvdQBpF(X*E3J|Wcu zOT6jRYk)ep)B?U5GB9WHTe~w4y3|H?nF<_ImXri8X6?E9*HLQfnVE9W-8X>w$^&V# zN5KNTgJ0xa8%L9jaZ@t2hIahG@9vL;SKz1bZNU4Y&EcR|N=2;rmdKZ^Dy^>aHM5Pa z3lfN@3j#C;sg`EAxb;PNbL5Z_E%O@NLO?LTIYw)#KlVKpft90no#Ik6S!$gNI}-3w z67LifR+E1FNP8w$e=$>Yj0CSm<^=-nEYKZon(K5n`Ysanvh_kg(Z+bcd)BS-`vBx@ z($o@Gneh~wYIkPHS6x%49c)HT89VbdzjWTFPV)w+n|TA&dyfp|Hlc&Bng70iF~o39 z(pxbO~`NVKYpY)AJ`&Tc%OYMC@f#Yuv|^qunAuz=Qn*bA(A46C^F^uvfU21{v7<*=5(}u>U}{*!n^*5?V-Xc2znNOC3NVOZOd;r z71shiO;;)ySZoz=bi|O2V-*>pCpap{YEPoZPwZEiDfAUnrkP4(P%1B|#cS_gW)GGQ zIw8(pwOBuDwDi!_*(htlY9UofVMSph5>4>jOpL(GSs?%zx1|MRZb)qdr8AK!?P0+n{nMT$^J~TygxHU}P6$ z6o&K|+G{~zX-%Vrl3OPHIGLhs`R+n51z)jSuC>V@65{0RVm3>bp5sjaI}SZb$jkhq z^^y&j&%wkzGg>hC4WI&arCh%BRaaEhQ+xE^Z>)+T+PVvUXYIc{UT}JJW66m>5MHv+ zpBGu#N!98O;)`n4oqAme%qmE!YLU}~adQLqGRy1*m0t&ax1(IlIiuY?1qXZ@H5f#0 zF;fF_>@$L+oy?Uee_*-xtA=a|sDrK~GTrQWjO?@Qc{(=Cng)}W`zpH8WA=>p1cS?5 zH2+zZ_E_-kx1~NEb3=tUoQp9r6Dlbhwx>|0cZ(XZPxCp^1xu{o8V5$d0j7Qu4D=&q zY-urnASi^Yvq`nEZV?2Z0yAstd=YZ4^rSCh8vCh=H_-LhjzCSx>T|2#OnDBaC^+}Q z0vC(f;-wAh{3*+vLptB1s^FAsziIY6910`V*#1S1r(j_DPG^HX)i38zEDScFdcb5I z6PC@hfF=`fh(3gC?m9&Hy#dO#j_jHU`7@FdI)rXU??ctx-O!Z-Rs#4Hukv%5RF@f? z$T-WvT28AG_s4XC-rBEy=hu%Z+T%_;G$wFOrw-Rx9j^TP;D>L#WKtsz20ov%@M%82 z$Z*QU%tn|?+!t(y+o^EO#H{T^d~O}MTp^Ly)P_40rs*~}MinVz?`cCnuMg6Goz3s4 z9-jM^XySL&)Ii^Ch~dFjk)k^31Y7)T^5SdjB5zRajJtZioK&uBeQz7pB$MG2dpEti z5vH*WGi8(3G*Jh9>U{Wp`4(~W7En3s*Q0|rWN?wZXIJLy8^DzCH@*J_b%fJ8wqlyf z!wBAk^%lR0^09DV-Sd|%VYGWbF=r0CBI!&}v$2z-g`9SPPQ!rqc>3`f(Dfi*cV8}AnW=UEuq z=n+Z~5OGw#xJ#fFX{+3^P%7&wB%R5lb+?)A`q1H{-Cn+tco z0kV)D#=B$<`|$Z9WLiSs0HRpeQoV~YB!T#U%sQi^aaK;THr@cJqTD@#=z2fBCV1{T zdp+N$$4yvV)86|A$jzb4z!0hw{FNPY537`qJDH{*jaqS@j zo}b`6nJ!8sX$%zR2w#BFxr6X6tZ)_wHlVWxD~c{`-IPZ;t%|*8bb-N67CQ;YyqXwX z&QWf#6G)FJfiw|D%0u=wCcv`N;Ndvu_VPnw%GtabC%mv&-VJAw1(*d*^NsPp;K1P0 zt(me@xcIO@+RL47;!J0(@{LG86ZNXv+1irqglU>+#%vOH)a6L4`6iuZF>`CI+9rg} zU{P|Ijt{NJ>p`@enHBdq#gomyTB6bYZ=#bo$3I)F;Y`hSe-E@oHIRIoB2fXFDoc2L z)u}Gw=54OC`ZqfImx=!u8~@Wy9rP@Sla{|y5X9k67`~hapAVXs$-i%xZ>J~h(?!mI zkN>%W6|u)4{7zp*R6|P)?!cSfsnaIRAnORRBfrjPy47cJoRXUt*(7wf^hsZbNt!qh z^s4^EugNB53IQi8{N}TAZ?i=PW^U{q;}np(I}FXu5YuC;FyOz0HJSe18tvOxd`575 zwxHxsGeu6+IdY6!$ed@-3o1vas*k4%x+KD7c|OXHkgSux{QyCB5PenM*#ymf89Q8O z*=opZm~lzVs!)_=glX{3h*qVgknS5+;W~&PTwUg*v3-xX(O3zYjcy=l6-HV;e;bHX zHNK8mRdFFww{ti)P~{%WJK+Ut9=a930jwCQ4iI}atk?WVbRsFai%zr`4R(jnSK0~3 zDR>8$awrZotajkySV+Q2r@uxj#y~aDpVL^C4<_X(Q|hhNJI(q<6bgWNW23)*0f`Bw zJd_I_bixb;^m_S-s>D6jn?j(0L7eSy!izVy+-eh(w`Do_ua9KQqeK^n^bJpXvFqI^ zV*f<&lDHqKm063p2kj_V4x;=u{m0WnRhDj`k7Zs3-IM5=)(JK@YM^;?;#}k!qQJEY zmXL_}I&eK$=AtmgSOdhYsE~?SMWpc$HKC@)s<$fUDowN?@J0c4Qm+*cRy)UrNB9!_ zj%=;cEj$*c15175N+775=EMSH`nyOQu7s&Avr|D!`o-4jBSHqYjV1n(*f0?+;n$gk zI1baAr9&wZ5XmB`&mm&|SX-}O>*k)Fpu9B@PH|_hDy#%^T)n&TqT8(7k7f3+lo#7e z{?ne(VRpAx(HUKhNzZa6{bWWSr@4D3z8b9`&N{(NVG=E$%#_OzVTD7uLvUzzlp4~MS*t$XI1Mp)71qJu>X)6{9cf4pA zF^cPvVH#)tXKBQOTqna#-bGPPcCVyrMN}$$%M-Wf*1>YvKPi1uk+KTiDo2q&Xv=w> z@4+bMSxZ*Axr?DhpbgKcD~OJcjY+FMliqL~!h~(xhnZ|Y+vZ*ZU2hgaifx6 zO-lc*2s+c5)fl$nHB4b#KhT4$DEI!p;`?A1-B?|t3JXrfGy|Jb5ih&JUqEOm!YhQt zKS!_+5Vhk|I$3{{7!c;Uwf6cy=nhD}OfL)(6k81T7*}x}_#avO{@CsJ(tEbQl_TtNbGEh_b^{b^y0n@&(huu*%g7-u(00K9< zbJb1oA-Y1FMDVEcr>H%91jJ998x1R%r6)IGXC>mA+6X_LILe|9h`^)d@+G3S^`-DK z@+Qx2dSxEg1xoL((7YW9yG|`EJ1WE@;Y?FbCOFVhP=bCKWr^O49K3Qh@U;2wG1Uq91X#?!1cV8 z8WPUq_hmVKX3f<@zinlkj%;fF5GB}gU|9c>m%StwTsLum;a2_ z#6HflVH(BvIG=v+h3MgOp@J7LJV_cQz2-|P;N|^ZHCN#{`0gZxnbtQic0g%8P%4QC z0Ndq*->G>dyUF0IfFY$2PGwc+6?Nm9P>As3&5rPAoRRy`>`0lb2Uz{P{-cXm27sawaOn(%8R;I(`iUAh$Ys?4hy+no7KjS@}yn0Cd#H9O3!ers#S zo?Heyvi~Y4Y%NE!>t0~Ci6+Ec?jI`&x2$;cJ-R>zFQ(f_EHBGZCLZK&OhO)Vx~2_v z?{mH?5wtw=OdK@4VJp0qnrqT8UvNy36Moo4qTXiJq>WBs zE&2_+VM82{VTh(&Pqnt2^Z`d9I3t5O zp1u3?i-;*job?Ft(zAtGgq`LueF5(Ah~n-9%Fl@_aJXHAP6*U zWM}QU8d5)k)^JF#BFMMKA4_S1BpfIJYe4VmU7*LdZV8ru~# z`3Z$^t%F9bp$fu;dOA_nKBs(N#O$OsV+DN)f_72WB2altlNq+!Ej(J=jEUWP?eR&% zYED3s(&ZnyVIei^%~4*Tno9T=P8iF~5|kk6h=!J9?0e1$zAnLkZ+C&?)no+K0kGh8 zKdHK!8f~*(u`p8yaG$T7d33%MLE5k>p?WowEZvZ{6o1k=Ew^?2=uci6FiwYT$(N{# zqL14bAp?o3{@T#LXq1lB_u-13MWIP^q}@Y=ro>uvw81D150y8#MYful>bO_WlC8PN zT0DL3>Mu%ke}8+O6F$w+{3y&KxPkoIa))pa3403tq>3{!8cItWN_Ydbe;!+LpON`h z&X17C-xNDdd;=@J@e#=$ji=-mnTPR`d9>rB!~Lv%-8Ivxph6155=S_4b387?LN5@; zM-38~h!DMC-q?SjAwPigoAd&_uS1b`I70FTNHu=E^s{Izt57%|f#h<;<((HZOiE<# zhgw)%)^VMkDmn|@?A|pkcVB3X?cP)pvf++Nt*Y>FF5dg8gjg&OM+sPF($fxP)f)fI z=KTy*3RSF1@CftipKB?;Q%X2=j?tjJ={M3(jG%I!o^gm|F<)yr6&-V?X6grkz`tea zlOaxg8AwBS=<Aa5A9~zMh$q&Whxpy+&7E+-h;*id55YD< zNoA^fy3l4Ev$1Bitw=Gkk0uZN@o6hJTfaIv3H{Y^IdoG5?M8Vi*K)bk`*^5IGReQ8 zQMmDrbCjtEdZvyX(WC!SZ#cBmrTC@4MY=a#t6HV9x%Km-sTHT$$%y4b#~pbrEZ^xN zzw1IE;O0n=xEeC*&RSQ!TJxo`b9*M8eAcw36-ZOrk8-rWlsC;W0tjknC5|^lNY7^g zNpwGtEjt_y7PVKJQ_$0lxrZE4`YtOfTtywj%kELmyXeP|ePCQ5yvB@8SqPY7r><_Q z=1*t;<8=;ch3!EDlIQUGQ=hR=)&5{v>Afm6wYe`PvXuZL3QYp2sCc(((bKMfew`&Q z&p%xAkoH(zvFkN#PMAVQ-1BZK)?fJ0Pa=D@j%?|_CE@n{OkUFg<(ZknhR=jNbotwr zRLp&O@7%O*ZGO@nTpn(Mj8Z<%1kynpJWxk4Z?-R)(xxeI%SQVxp=| zdxp$S9)}X}Qq`gJRT%xHGMCv7)_Y&Q`dqV1qte0xY9XIt6*Y)y>8h06CpA~u#=kVm z9OURCy;9O)q5=BU@zF3Yys~z}Q4-+8RE8=cn!EC~8bz7=+18Z%!>$yu&l>NQ8 zFN2NF&=pOgE`EDzuW_o3fIqz2>m>3?+LgS)TD6;RE%>)BskqBHH@=CR3W;-Qju+Np z^x@8KXy^DEEpnD+`-G|obCKQH1u0BlpiCz(j`Tl>zeUsE0J6>nwuG^R%yA=o_kc39%kjbZ zJjU&e({!QatZ?$%*3DJn9>7|+qxD(hX}xmv%ceHa9I`0(^kgDn+3rP->*;A3?Y^v= zC>bA@$`&UG^XlYGf?=RD_VJ$QAOi8O2o&Bch$3kHMY$pd!+8J%d!z-{415l+$FU0d z-a*oAkcu&`g-pLp!FuStF}tkz*`iW7X>N#haCQ7ZioG`MB|d`j6a~9EhMKiJa|_F# z^Z3!X)J|8rc)=pk9NW z!rX`y8BIP93(~K%lDF^~d6vdlf0IQdh*!WRd0k#VOz0<5s2}I3+M)bBY1t8*UIqw< z4mwuv8Vc39tO#Ky6quLJ6;1SFOJa96vL8LC0^6Q+@u&4a$?V#hk5@}L&1A@p_59%r zc?+$prYZ&dlj{lYkM5^GkBzWCb=av9KLI~7xZVg_P&Qm)@}o!bbmkeY>>rn5YsjNV z3EGA9U7$8uXF1Bivi}w={_Dd2vnA{d_H>@t!?dx9_lE*U?H3b{mT`|u;Wfs&W@{dV z_=|Z$O}zY^UQo9YHQs@~9u6*Y#LH(11xiIR_MU0JzO3L*&Vj_ivhJRLID1prZVZz& zDJj;1R1?hlSaqho4wC2Zomz%5(dOz$v-NcqERSa8m}fL3!*QaKsQ8fPz{es_6JGnT z@nQ9Zc)i+#oNakk*!(l8Ve@Vlh0Q(5UG;Y9wY|T%E)DL3cfygGpdd}_TN5DF`G@oe zEc=;R9MZPSWh&BUH{;Rext6oeloqiI=Q*g}z~|}jidDW+msr!T5j&6;es>1b9Ncr= zHU(1;)Y_{SJBGbn>@tuGCDQf?ojU{8duqrj_;5-nJacjlJW?2T{7wC1>^}Xac$pQO zuB$nnnLj0seRCWkiLwf`k^>EE|CNfHLbmZLyxBU+n)C_%MAr#o=|n3RlWkEJ_O6F0 z{r0amm1fjV=~?moIh`g&Bu0h|%!?vw@rlA5K01B2$3yW{PT%Mdwi zo|XJv>k(W~t)b89bNXz72$+&#dWFjd%C+THa04l(g4n)K! zJ*zRHDqGN5S<>$lXBz5$Dkx}Ga51t^WZvo6(cM+8tFSY-`ic1>D~h`t9`g+k;i;4j zZBwiLJfQdMW{N~(qHHtut5#~CV$*dQm>xM(=82&o@^oG#>wryCVWuL=+h2M&T&0Ps z2AaK07~n}F6TlxR7uw~ct5BHSMu_Q{)2wt_dqP-oTga~{Q(LCl1OmvGBU}~ z7mDjr&+lTmKeqYmg~J_}2ExbORgoPJZVfqDRdjc^um&xe2_4ANmhCqs+4Uta+}V>C zDa1FJoaZEl#hIMD(MWoFUC=tFXgXzx7I#U}Sbo5N+<2U&o!YezqX@6=v&$H&H}kct zW7&@REdtB)sOG&`D1*!ry|O{awSpu@dvIZipsrz5r?{~qiB{|Ql#lL)#xC91Kf+6W zq;dfI=Ht>VckAn1Hi6I!^h{>Fh?g{)a3Rt8VRrB+w8&lk&!K&et?UeV^1}|_UONBm zk?SBJ_AU~DwCkY(PKz&JV$g$EZ8k|qtIQOuebGN=SQ}-!9VUG_MHA|30lyH-7~YNh zdb*Wnpda0V5;Cu3+VK25_E9A*Pm|qVa(+y42@FKc-QAV$jU}?Saw@c`z*_EHl0@+o zUxqfs?s%~;x9Z7MI}YyCK~A=vpX)bhX@_=(;u!548WU|OKN8-QBxs@>4tLrlQ`DMu zdL*)0(Mejme$`@@jck(QEE=0y#gA%cocP`STkp#uEx0w;%T!Ya7hy#>-(7tmOIx;z zZX@ib=+wGp-_!^9pO%Xw*;^yywzxtjGJ4;wHhxVBx6Soh%!V3o+RA}r1qTp_gN>+r zM>TQWu&c?PE@`&T7o+NlM*3CKrpBPK3&l8wCL$ERy5OAdZ7s3ge|TBLwqJmJ3MyyH zDRUt+xJ9OfbuZf$mnH+Kbz;d>MF9V*Q7hGe6M5xrZ4PWl~px(hrEYI z^Bx2)yg{6+F?dEsGbV-4CEIKZlj(Hm<>&R&=g)F3b%A3#ib1v3pDZY+%JXa3-gET~ zFUO9f?(1E)ga)qpeeOgO26D|3C^mLIf6`&@%2PVVf3q5#on!B!=N~%f?=th|p;kD0 zzzn-bo|m^ngrZlZEHS&!T_YHRE}Y2R+S>n#^ze ze7pf*=In{){8AHSyX(#5uTUuPC+eY7Sf+9!v ze)_#0S?@&&;=@-|w?svB8I)~2@_2hhqW(O0VV^d-PH3yVg-e3y*iBs0P~EmYU!)T7 z>iCGPXSzfcUBLjS9sEEbX|WHIz(k_oQTSiY-g`9{6#>7|ocO`htvJg;mroCm6#SA* zU(GeT%rj|>7p_RutLviputV~4rA+=&)}#)o7DnKLh|9J$6y|=Cb3$2%Pvb*!d~T8U zkV&1~$HJc>%iw#~NY^ObNjzcir7UletV{FZ$wy(m=E1}2*wX^inceB!U)!@&j}6zp zin-g|Xj6vDZ=5woi`bus{jFc%3L6DC0M^e(bX|TCZooEAs(CJ5iSEq1{h8v~BA06M zClh73{Z!frkB;pURcBB5{9JKvzNC;D_e_c;&xZiS1QQn?6N>1A7NmA7N`^*4?-reE zh6&$P;*`mw)%&*~7&ldqV+A`7> z(&6P~LqNlrbNMbG^;1c6x$$)J9nt;C*U|OtA<*al{iqZpi=uThefE2FayY{nGSEr^F_9RkJM&K1| zq=#z4Dy?jfO^c<|pchuk1+Gdw`Ot1=&ZhR~=aXv5jen#* zl!TV}mh7@JULPp8_Wb2G?8_U#R3y7F_hY3P#0Vep{%h9QO1H+y)pbEhzbm`>4Zh;Y zU=-3-z1&pe^L>rC9AS>}Yh`;B&R6bqk^I)3Ar+6RMg|PBhP3;Gh}!YPu&FgdVt%zY z2RIMbVNSy-4w+iy+Eu*EH$ZEMT}Ws%VKHwBZiNIp%jH#+AiYhuXmd-vmZ`&_;8Anc zd2i}3|0tXBJgfeKZuk|64d*<%!gyGubt&xIgI0Sf5qa!FDq-dgG|q`JbdzJ&WzIA@ zdamJO|-Mdhcu#@Q?e+t6C_XnFbamgm)eWwp}{@zjO^y&Z=m zwWLy`mF4!hO^1d$2XL68b2BV2={egXggmBN+RfqSKzp9+^zXn?JV|#de(vDcFH)Ev zD-vCK;bA`ne;$$|+6Wp5V2R0rQHlWNd(^+ z{y|@}_lv9V4r0JEKW+p{_`x;SHJ}s?ZeM0|98t^SFjJZWjkaIYM)Bdc%(tCsta2PL zG;VHKV!wUd9$M;~laAF`AA<;>C66;YmZX#A!@rERSjF^6EO6DovBg>Yr6h}?#*R=W zbRi!lOsJ`UZYUaKi#P6MPvu{8Ke+4*V{BLR1`yE9J@Ec)UDHmY2>sd25W_Cu{A5>~ zQqH-O%PKiC*%zd@6H@pw1N6i&95izv8_uYfUAr`1UKU^%P;dI44Dis-RQU&?bKf;D z8|)0bJ05I+RyE~eVqWm;{JYTdRfSc>%IKtLaea6jzP>B7Tup1twti_9W?XhW;=VBc zqyEW8jClNJ__kuhac2A@@hs6vcz&McZGGLvxXl{?#EbKr^Tv@UyOmRxQC|vrxbrG$ z1D<(s=vn%j5Nn%x#Ah$d;DqookJ2j6iN`2I_Vih5lSuLPi#|@z8crqE+Rw= zpfwl$v$HG!y^ilCpXv(;d!$7T?&@LY>wpa}X0gj1E|G$EFbjXvbyfxi?CEZn`S|Kn z4Kp?PQ!S-1OXml$UcuU+p`om^v!4QEd_N`(30ROe|2s&{zR!gBWBhdix%Ic_1Yt*S z)o*%9+zGH;+|DFh$~C!{iqx%AwaW|+H@zJGByKaFT1xaTB+V{%M_`cbd%P1gZgQly zb~wcz*ix^0Mnf`JGG2b~JmQ@P)DXXu&WFDeEW~SviIMlgN%9Pa)>^5U5@g`^e{;~Q z3xz81>w%>?mXF+2$QtLUPR@?><(Zr5zJ6``sNV6xCnxa&t9N#*wc@8i|HnPz4h^{S zz;u59*b(D*FV?AuwVuX=8C8|Vw5pR6!%=S?@C~iNL1`|(XxRkmW23+5U_~8ksxf3y zXB7f%mJcJi7d1tyrL=E&Am@3#3eS1A7$l71dSK4+aX$fg<>xO&JmTb4YE6%V#iQQ! zqS!!q?S$K3VO#;9SABiC<~AyPZ&}VLFKM>%aQ}ECmGIP6qkI~epC>Ph2}8J^WXm3B z9WcxgIOQy{WMqKpG4VE|S2vI17_RKR2Fw`q>ZtPrln3`}#jI+y8d|0ME?qFZd@E}| zn?9I|#W;-dmT+Hv`kDbF(t%s%{Cdf0xEfYj^pjF~#&$P>qEb3`2E1`|i$*;f-d`r1 zW^Kv6L)7jzxK%E@&1~qg&Q79J$Y_J{nQs*L)Tm+avTRQ(WAMZBP(OiBzvULgLf>!z zb$VA*3bMbG(gTAeJD9pq6mM2iQTOxTa2C)fOyuKe)9K9 z&%#|Pn4!qsZM$!|4{*a7=~O7kU`;8_jf!bje`=l8B&ng?Tv=wWI-REGhDW&VkELA6 z5Wrtl;GdrwbUXbzRoxpGCoGiop38u*{b!VWtQ+QAes9*G?XMkVndoQgM-4D~Q5KRE zhb4t*`KnLfrVM8>6Cv~3hA(JNKfZsF#T33ZhU<0vn`B{C?j|s+SIjzZH-;)&1 zkS)HgpL=rtWb}F`yW$vtLx<>*x|OHd*dixQ3^f*)=B1A8P*v~``3&WlVnj&+>B}#{lhT(@?GcBZ%B|K8ZO|mDWOeoy|$Eye0fNQcO>^MyT#r& zgeLbtf(w|F|50B2?}dLg(G)L5`3LR_FW1-)`(J+}KGVcP;r+>R`DPm_o*IP*)UCgC z;xoq7%wxX+mT(w^EY7@L`w!CLY|1hUbT6>{b6sDL>F953frM4&0&f8HXWnM?aVPE< z`#R^>c$AEPN*CT$Gy9JtTN64_1XpE+HF9?<9Lg`VAL7Q3sBv$y55AZr60^_blkB&l z%^FS&)_OyPg#U4EviWiDs_0hMQRbhoIyAuTPF!=-EN^WF(;PO{L_e_my1I4HpieJd z{{|?FP3Yf|{&8_VdS!{v*&w_U)aqz<@k!Tpd1b=(N3eK|w4bo!m-)4{ZdI5XVVr@i zf(t9w^x@A*@Hd5#e{ak`j&FTdsGgAw%6ZV3KD_O%G8gr9kmd~iCOpr)Co^D)u`&|6 z`BHO~{47#3f~L26`~oMNfhxdKa0h+7sGgFm@4qSuE!FXBH8TK(-IUOm>S74ld&N1B zZbwT9z;3GX;xkac>>3NJYM7iC1ZL^=XD>*WtcbE}#H#s97!&L$wzwnZFjar9}srzfDD>$3cIR_HZ(~*G0dfkrs~T&*Zv2Kc9DAYc)rc zqLO;7O5qRxQoQ8^Q80>*!GVRZgyzka*GcZ|FleqdSW9VKq2mIaZyqOcSHo+G#p&_!5_88mpC@ z6Y#d7Wfmi*2EUOmrmBTE+1u#rcGqZe8ey>v8125MxEeCgm?bi#@9>IcEo);ORY?vK z-{fI0EJm592i7_){k*nKG#BLIEVrIvHSu*VUE5&Tgl0HYs8iqnUjT_fcE5U525@G; z#?pHGRfl{J;>KQMR2e|G}1#L1rexg~xw};h-&G}bXW8qtEJU5c=S%)RL{Hv*DTyywRqaf-5 z;-%DWjX@)vmqp5QRQ?>-A>vrKU0P}O`Fn;xGB2q(0=sV#YZ2)BYsxUwIolfh*Ox;r z^w-~MfXdeevK>bt{cA`j^&)Sf^g4K(!v6pa{55H%G~!FBqYU=&VV#_hn4ZI$^B)s@ zVDS#MGp3m%X|{OA*vKw^t^O6x+UP!GdDpJeNO>!sr`*(f`ojXlX9NozgzjLyeT8{A zOp^;nqpMTjo7V6AfyvnRAA#T6Q|S7Q?d81QJ zmt+oMMIoil7677*(Lfla>_tFM?g{3oc&g${e8#M^XqU+ltk^OEIZDFrX-6 zH(z2qRxna+GdSxdaw{8zw^uUr1N2tz zeQQ5cf>gcU?pikg09HZc9+gqjGvkN{uL(t%GX7BEhcV4Fdv2&(cFyCh>C=bjS^F&%;`XtVfCjA zJxrZNC1f&WTY{F>*HIJ$Wem&v zw;*x&R-Tm<(MtYeN?7n^nm|eVV!6rh;T@*hb5XX(mLPpd#w#-7^;%CUGc=uc4ipblT9d>kk7*=(=DB@M zrng_SSi^;LhH^4k``1K>iKz|h75N{`kny`11L;_RB&O=Dc$!*;AB!l6GX&syAc^SLZS)_l5ba(?nm zFdYUu(|UrkIc-jH1-eBVlf92lmCIdQm?C#(K4DXicopaqTja5l5Zib`o-^&%XfBiUuFHyLLB#`cu=Qdj=2@m+*+wX{!!iAwPsvepDnYIyP?N4)W+a* z?HVxS7$cggHMxzqCVx8VBe7E>j-(6`im5e`4Ean9)hVJ}G%9I&gGS*A$EHno`gPv& zyPJbt9Qu2Yo;-|qt*sjPHpF~}Q;xKxuc`>UXm?7!pl&CFns=Z3&n`|gR8sOd&(D$t zXu{CmN3by52g-Ab%Egde*-GkUw3J5OM;sqwDb}V`kDuJj+(weJZIOQUMAqbSB6Y<(lWj~{Y~hu+qL`bpjN+S_;TUNaMfc#=l(t@UUS*`B zRrJTqwSjpvL`pb2f$Bv@r55CpZ!as*cg1B(sIr`3`Gn@~b&rs6Jx^g%{4MabzA5obYgh1=v9)dIaQR+N z%08WImho1$nvK$0LgVc4x6I&mHPA`%Mr|v@ad>~jR-(=Xk852q%&y1pFdYVKmmdsF z=zAiV9y<6nt-SA2P48@;b#>oJ=^^kKyqyL zy%*!9t;VC}YSu4rZ2MItkLKEYlkHx=9E&VzA~0li45!o{mGS1M6fvZ440|%iKhnOc z@Xn%>cr#1CxMYb9qBFA`008Pw;a@Yvd0h-FVN(wqUE0QwlY5()qc!ID9~yi$4zRXJ zE+w}uv98nri|>x4d)J{`&lSuGJQ6IiNCP9O$RPB^eC8toh{Gi7LB{)Bq|?}&6j4QS zj3}yFo~>b{S+(Aybrrk=_@r!e=sjy6NAdTDb=$A9*lLkH=kB9|g}#~VT@b?7oE=C- zxURO)E{>Lr)>nvi%TEpHw;HAHe3%E_9a#1Q>s}>w@yEoI+`Cw5_L0M%m0C7(2f596 zU@~l0IxbXJi>uI=B)2|+&3JFdZxQOzc%IWpu)CTF))jn2<#)3l z+FNpdVG@*K^f|6;#r`Lc#ojxMQMOl(03%4mfC8X$bNJWMWVse23yf35ML4AO-CT)H zHDq44_=E8SNrYOPi5+9_G(pZjy=$V;zB}GQ`<-)3S&07tmX_yZejxE!5=|VA9I+sD zIqy`i1-;qZED^Upoa5_XM_(ww*H)b+^3nbTDamy`hS%dCglD%|B)gsmJ!5!DBl4oW zBKN~(?l)RGBt&E@H%cqbd@F#y^85b);1%r|^h?9!>!_nUSO*+cywk&-=Ev8)W5wb9QhAay2@J;=_pa*Pyi$3wu#H!&nBWiVT9I6&q2*|TLfku^3HPhy zPgZ5^B^{1h9W8Wdmtu>nwdlFRA@@GC%l`lm&8&pEyO`UMe(66i;5}=o`!%_UOJvC- ze-7iERdH)8J4{{Tfrj|T?kVZHPI%Jc@cZZzRNn%i7F zyGaF$--1Z?cTW52H$W#cdS!usJ(e^jhNlOXF=5M3BK9!MoI0;caaf&6J-^4hQ30 zcZfBMx!I%fXNg6su+R1`gm=hCqsiO!s~RqgtzKBHnhk}Qg|w+xBIFT0Ung0t7O?>xoCH{^<4mtF40L?Je?x5qq8o*A>mfr%9z*N2ayp z(>jdJb2OWrj=OW|-n8`Vs2%>xY<@xW7wS)|8p`^bTSKLUBgerpC*{3;|l>I0L_Y(mH_=QTWob9nLcU08Wh+ zwkh3;<_?-9k&wg!sm^iMy#n?P)thl>B9Dv;#!=MPGB}C!#EE(P-u&XQq|@F>oE8O7 zPe3cQzl6MR{n5~R);+bU^Ie;jJYyXzGh}k}*hrE{RYy*^sN}OrAn zfTI}4O2jr~T@V+H^`Tt@*ypt^Je5L`;d}jSE%c^ImPPqZdML9-hij%s(y7m;py&qP z)udY?*yR%LNL?0XBz@fb)xmX%mRPc?<3B@Ir_zQ)dY(l-EjbnzRzt%AGt-)4v2Hu* zB#JR{pDIS$U%IzrR+LLAdwE-I%fh}mH4VM8EK(uCjhCF&lBP>l4WB*{!T$2n0I|4| z%0@>74B^wa)~?AsF#P8pOrOP!jQSDV>sh{hcd>aymAGHJNc;7f{jv5*nkm$jKP-{A zaY+S>+O#(|5q-MHafdl24srhg)~r#lT56bsQ;B1ckCt>Cel;w*mCk`WT-(TQbjkk! zg^pL;A463y^lN=?Q*)y!jfmeZp*)Xu^{Pn<^TTDK6AMEwvMzEJI`j9du8!W#krH(BT^DG0Mn0LUa}tkpfQl$> ze{-{G@5jxWoZ8JI{Dil#9M@%YVqzX;$CE4rq?pY`_PYqz_Xtt_hH7p*92UE2Ev#1F zXewVkepS)QF z%tw5qBX=8D{{XL1QiVE_gyyc}x36()dlc{VdmBwHf=p$+A2B2D`+;7|@Izete}$*g zHm>(5j83jE6phn^y| zX+w6+Te0GPJMm4|jr>w$P-C;UV-zuikN`Zf_ce)qqP>(N?$MkCBOLtSQBKey&zU=r zUPFPN^}1I%Qo>K~5-_#;{TeXC(~T->$!KA|qkKW}5`PhR63a!qSqnhK5T6Acux8=(m)eT2RmM2-Q)U+}lIKc<}D%uu_LT7dW9eARS9+n;)w3U->{o!`^ z34+PB9}d2rl}bBRhUsQPcB#lt`K@^Nm|dPh&!FV{3a0x}iZ49!ed|;Ol%4vsbRM-c zUF3xr{Hrt&zh7DepbwPe-hmpi&ii>dIrXBbD-3r(jT8a(MUC77?JVPoe$GZ!@!#oI zbvf-XE|%HuMZ8gtNaH5F@55Iz{{U>FEX2m$P@Y9~I+RQv^mvb=P{=~+-*X^U=TdDeLohGaPkeFwc@+<1~twiuBJ zflu7dMtx7I`qrNg=8>l<>W-@7E#+9KkyGwQgXCYS?rJCVu2gTv)#x#ST=ZTkNn&(X zky%>-V;?hnDDPLJ@mzM0`BP0C*9zDufMPuMKBxInqv|(CN!c1k53y~ykd^P{1C9Rx zUqMfcS)M_b2vncBjAPol?PtdR9I=J}0JN_HNrD6)ecwKUxJ!=`YZp=ri$sG%({Z%k zUA9=Sua}xi7FI@lw%qkQ?S8_-Hk$YB*3kj?rCRn$(j&pYeQtI=6&`Vijv4iT7_xfV3!>8;1D4hiC?`{)#d$3@(MeJ4~%X?;} zLEh#~7xg_~O?GzH^;!H)bcf}#v_3_QNByS$DuT~Y@n?%d>H0(qZ)5jNHVgK9a6j6U zt9}*IX}$*1bopYFQB$d0AG&56VNdsC9Da4&X||5jZH^x**mH%#0zHSP)|;r4O2f6R z&SydRJ7oshb=#A6dYfx;<-?zI_n+~vK^8Dt+N3bVBZ3tR97r&rb^uk#*>-@q>FY$G zpH7vl)ePjdYd2+R;9NV7c;wb++T+tg*_STmgGyJDPo;Gi%jGLD&zRji;Cj~?s7BWE z22AoeKt5u9b6GtZv|Y}w-urM+Ps%>`u6-+EE;f}7fHBg%>rU0u&O-8Gt_KQ=aw8t3 z`qxQosVl^@JAu1_xa0Em`qNC86Q~Rb-JZO4rFPmnWsPIQsR@}vXK3zvVy&Bnk$#;s z-|1AOOG2jK z(}lT+Vnyg#eMJ%kxzZ%^)Jbsx-UqSkSr#T}E>h-640{_pJ$uhB2f!B^bKl;^ER!G5Hs{|fg#|H=Qw{cc9Wx2nN?C;`c zv~&KmAL`GjrUsMT+3S|=J47M6`>iss%nzv^l|tJ>zO~d6NoOORtg)Qrdw+#%L8P53 zXx*?u`=>k=tG;w_#2y4KZ6P~>{uAv}a5FVcIt_Zx;vmslT`<~{c5&$5nXHW~M4v#3 z?VX38A>AV=;Euo_O5D6iCbRQxUokKG#mCGKy-;0h2354Ua$?8JFYzz`09u6ItQJJA zcE50)nFP)P)nNAgUHzr+iFTF$(J?%s2qzDs<`B90hUS){mh2r@^Y6;=am39Xwb z*%uf{O|~JBoU%Fl-%7y~T);3KhR5B`YBP0~Qr~!Uyc5M15ob};tQu63 z@;OYAo(l9M-kE)=$ttL}b=bUeGx%bpOUUn(LwPTm&&wd-kF8d_v69U1W(FRp;P6FK z^CgtzyJ=L3q4qlt4OP+Z6HoEZmvRAATd13#Op3qut7%te;I2IvtzzoghUVVpH6V`X z)Ev<`DaFC{RuewGxwu<v7vL0xC1rvpNl+6b>mMG%Xv2Cg-KW<{{Wt7JAG^D z8}AXu-wLGH8y~&X^Zx(>WyU```J+q{BD|_I{5A4CD}zvVYR!Ae^8Wyz=v_y$H7#aX z00S%NpmSH_ogCnT{PfQiit|mMp8-#7Rfuk}!Q&meSJ)A;qU{iuYmKCT7I+mDv7;^{ zBX6i3Y6o_Z24D_44AQLGZd~V~1EnA$9$K~oe8bezHMx~Hj02u>Y42|5=L2Xb(wHUk z!OJ)&o}FpjMQMl4w*+nL>rC8$bDa8`nrS@4*;ERIB9_R`CbbO|0@o4t_zm3J1Ba(?!s=IG{d$ zvSfA{kYwRM8senBLdkCtp7oSr79+Ju_s1<$pAhOgdj9(IIi^wowNv|uN1-F{x3@uC z`!0y)b>w#%rkwEE$9Hjga6%9G_kq4?JuzN&dE$*uX{EK2(e%p&$s#AiHaoHE$MmRR z@qV=O$ih)A%Rb=JbB|y>Dz2%lTM}E9d}CyJ{{VQ>T5o&Ii9tP1+IWsw*`sq&@kOPSHyUQ0b}n@$8ye!=WU20mdwLeE z6pvDZ78m-A8gxyhz?V_@FsR!B8s}EIFE(R#a0Hh_&6&N` zIxTeYS=#CHGg#OdqCYH>TpiLm_1#+ zoemV#ukDg+);LzXJIOxXm+-Aym@TelpM0sieq<{6%VVd|Rt(yU>J0by8`2AWc`WlHzAr-9SWCIUt_A3a1FY z$yZ44boo5e&N4yhNWjNzRl?ZIHy+vRSlTVlEv?z{nG-w?Se~5Lo!We@A#a<~p{pAr zh0pIPbo_Pz`@ii2$97~nP>~YWXAJ(SD+_7&kvyaMo z1e1RnuOWTDwaw^LP2#T_-D_`iGk9cKj-@inT`5w09POo9o6F z_Uby8ZvOy>THnwtVetNgX{W9WM1y%9S^J;Pns!$uqq2(fIO5KG;15$zcLhLW^EV_{ zE|;wL8EmR3^{oi*)XJ<+IN(!L6Nx4CWOVOYkCkPu8=JL#qm2D(jI6s$98!?tR*>ae z>r~_z6*STXMm@7t-cS_%DqAkZ4m(w1e)f2&rI-cC?O7MMeo-x+G5S>8b{lg#hx@=V z>yub_m#%jvM&Niks=9`xH>!cVcc)QVcMx6O%kl=nJPhL%N+N8psa-1FZ+2qLx$DJL zf(f-5)f*`oJ#LmvDu#wVPv%=OVMU zMR;$fh~TJfsrKzv-K3e0e;;b-BeP4m?WB}83Io9IJ!$MBu8VHY?{9OF1fXaAli1fy z6h_^Akges%+aGw_${#q#7+~bbbE!?XJ*8)TKS=(2^3~&-#d^o-j$8Oeh4e+ilGTUpJOljO|O~B<#C;+v$d#| z^q(`UBMfocwc@;%-M0+%<)j`*X%|jMqgPpCuwPkcgmTHHI4t95R|; zYEEBxuX8r!5hHxrZ>>a*pyRDyp4^pYOnzN!GC)xF0~OL1G?mqmWRvVD+!XMCKT4+q z^Uh8^>gVuo7#Q}T3xZwgha}^t9jc_nZX3%FK}?2b-OC!Ym2h&UkF@|+%xt-C)H00j zC$B}KQ12rkh#()zq6k1ede8*B8MzEU3Mru^BaGv<6bSd*5P@cvD5RQIW4cLO8T=~a zTiIU7jd^)9!UxPEU5ba*vsIvLYipk-_Vb4^daH{Ab{;Ix`f+T(TeC+oG0| zL+iKvYTTOGe2|u{l{IY`*=d4p9b%=l9f9mU1!Lan+8&1lCso!WwJf>v(Qe#N%KZge-C4lm8)&|WI{q}dhM}S3cUzZj zoHs`G$iqRVA1>Y?e}upBd)I5=&k0MZNA^8J`7P|%=KBSMh|HhwH&(6vSHhMWO|lzl z;8k4y>NU#~+Zf`rA%H}&&mzebi_yO6{V2CG2GmZzEh|H`L8e>SeT7i&NfkDn{d%=K z&e<-_W+j>!&e-m}uvGnhD>wUIdxnWFW=7fars19l?^<>?8imYAk1E4x+_DzPZ~nDM zvS||JuX708MFqrheo*b!hi4c|cDG)6fCZvhTIHbPE_o#fn^B-8u5@VrOBuk&f82{Bj>pYG$8n4}?SOy0fge{{ZsV`rr(&`w=hsHC)%&OU%^J zW7q9&Zgu|v65lnvOA#YajlhcC0QB{)x554=w()+AHSM*H&AqBfV~R<}Jm5cxeXGr& zu++S1KlZPPVYyu)4(N2ta7)~C!IS(AdUuECkVb9Axwncn0U*ZF7{^R>6)l>_QVmMN zS(Wg`RGv zBXVm+?9jomnY9`YW zG9x56wMCfjf?Z34^Adae)HCX5%2ZMbVh0AQ%cV*>ZpYTDO=mfLa;iEJOHt@*Npd{3 zRygOJnyS}GcByVNRiU(!PGw!dbX?}G3szCn=(}l!$`_X|R}rDc?x%rS7by1;g72NY z;2PbY0#hd$2b`Xji+?&se5EC&W57@aG=Z}g<7b=Y!wG5I+ckRL#g^a9x!ff^06i;O z%E4`+Gnlh04oe!()b315#aTi3t019!bdaGy#J5hh&B-gzFF7MTihT1)G{-D+n!ROc z?L1+jBtO6Ns#+5D65h<1<7epH^zB_Wl%QF|6lg-Dka9ZIP+5eDdL5^u8oLdeu^wv=_z0w{{(u;`Kf=h5w zByqVu<9|a?YMFtsTt^!X+nC^f6`I9>ExjXOttXheor_z{=2nFKvUdW36z06P^Dr6T z1GfU0x`SPzx0D4=izYBv@utb9eU$vzZ1gH~pT?do9iqa34KO8&$;=;OzL0rs%x(^F zezgSJd{*-LLvj)Pc*!+(FjYL8f(mD@d0L)m+FO4q_Pnu-qknu;5r!>Odpk(k>=@EK z0wKGueX?m}K<)D?1MA4AjmkJ)ojIlkUCqnq3hf>`j8kFrdZQ`GAm_L>a%*EQ<~YxC zYNFf7jq;q2Q9zDI$|m#59e3>?opd8={H{qW*NVvq>#pE%!d#9kqM9*w461=$N6esg zt7M{_j`Bx@E)Z5sp;eD3Ijv8h2lr(ARST$q!)+j*#A1>LLXCsLHDw&03vz0iKf*9E z?NY@%FHj9J5;5A`_V%mxlabMY{3@p8oA0&{(w`2*Y;GS~0MQ|&jN=X@BN7C4DEFbt#a~6XV&Mr(`;@@ zFlqLyo0*5H9Y8*&r?rgOCiQC%3|jY^ZM#_Ni^9xxGBS#ls00`{dB-TVjYiX55#4xiF{pMh5cr9U$E#gQcUD(Fn^--%Os|iqx z>P2k+9)=+3>2TS}k<^@@Kr3F~R|qMUkNIWJJ%v*8ER1h(@d*q}RE+KN{NteO}t$C2z6c&SWQ+7{|ZkRj#!eyq`5};)uz_dygbz zy)DM6_ITVCcM7;ttHyr5wMt!56ou}uq!HWNfYP(zDJP)KB~f2gInc5$OKEdGq;NIa zj#)rveZXLPb6$I>M|Z4i&7^p9T4xAIyuAuMhzE63{7v+wp62(*4=UR{wmJs<&2~W& zTyytR(S7M|_4s@?so~!YS;al`f2)ookstd~dVgBdJgw-=B^H*bowUCXcoNo3U(0)Q zG20wVANozqo|*LbtuGJwIvqyx9c#t9gi_oo-EXG{%yz>ZXVtyyn9}UED|^Skyjd?b ztD%!}wf@|Eu{y{$x}0fx9Av*H{n$)Ee)yBl-Dvn3LEVeBWUezqxnux zmf1gC)G}SiEyDeo)bWN2a(_DWv#Bh(wX~QlahD+%R=dRu>zlpkZ5UH2@KF!{I4iLZH&%Goz zbkl5A+Ks#2j!j09F&Wr@JXMgG=V|-~1vT8`)6fCUO@>r^a=_pLnyl977x?|pL05`1 zhAhE7Y9oMG50jhSk$+l-SlA84$T-0{$*f-wYS$W_#HDL!pXF7=g;kso4to00CERgZ+@pT+)CK^a1z<^gG~@+r1JEd> zkX*YZ#BzMHPImtQbp}bT4LQ*z`#NDnfT`o3YR9&+@=CmnH=nwh{&l5q3qvZn$zZ^m ztpr(tniA2zSwX=B)z!BXE@8&g{3oqPG6cAjba~y#B=JcbV{gtEjsU3wRks1oVjH@0 zDnUC#^6X8Z_Z*6Un5>wS4UXfjM?JF55c1r&sOV?{hOCc~GDd|PxE&31vq^Fol_VbA zS6yx*Seo8sVH@$B=LWLwG})t-p*Y9zwtH1vM>Zv!e&=ldH8R~wI2h;Jv}e;BA2u>N zU{yu2Bdd?5Y3?I3>uTJ2>l%qWwmGJy#H-VHeR~bo8&Gw)EPi*DN&Gt0h;5iG6c@FQKI4@}eL)O6bhD6&MZ{{S#WVaejT+*a>Ht~2SoGA^_`+q8E)WSK`!bxO#^r+keAboMh+>v-iUgr~Z!b7Z_ce#Dc(OkXMQ-OoUyx$RhScu!RE zWx8H!%l)6FN0+tJHk`_PJj41`-7CYIt>n^pqs6jCJ@gJUs9_Lm!uUcp@texbz*1 zdJ5^hJ>b1JPZFi2_>$}IOK~)No>n986W1Qqp{8hwr0L&evb=`U+99=LNVx~QF+Fox zx}DO+apc2!=CJv{a5j}b=eVsQ1m4Cnl3hpMcn;xR=Ci(rS=$9;W+;UB%IA^oQt3K$ z`fb11bxT`+EgZ6iPnSNt^!CM9(kIs>oHc~0a$UKWMZzctkWa02w|DL48)VdCYmz=_ zB#f{p>)NhSYeQOf6|_eysQ70n-7jD7e11wYRf)itvgK0+#B^~Gd(7fq7SL3{h)Mx(0AZ!Sq4 zH+|Lh;8#p#Tx?W5X*3C#TD{bIE|qnt-#IZ`#9Z^=umjxIKZ3N$tn_!)FO>fPXzH)_ znL!+Ye(L@Lpz%X5h&)+g;kfeFw&Y%FCp=&ukq^}KU0m|~yS_lGF_F+xwUEeNOowxl z7t)}W_~rJm)}nciH#?BMfE?9%$Se%FL<2uDs4S4kqDze=Nbt0o)D zBjq^A^sJQB732UhRL>_o=94KIUKet*>z+#EexU4qD)s7lt+H#N7ok+iHIw0X-*2jv z&Kmkob6o|Euz8k2z)qZIiF`s^7a&yA?EXXu6mht6Ptv*X5NZyw7`*H`88|%tK9#4f z>M+~JcQ`Jizcs*JvAvm!Z~3`r>VAM#Ar8zp8v~ahj-#Gyw(#znkXkH@1GKC@Lj8wx ziqG)Zhh9@1#PO=8F&tU>*!uel?p7AH+#G@O;ZX+)DT?M?(0L@gFu?oVWa7E)R_(5S zL4`ngz~t7hr+4ysak0yN^XpurxfhOkJRWo2q@-bK_Q?jXs6-S;A(2}d<7pYIaxAyE z&cp7f8OLg2wUK;L9(rBCKt7~bM6r2r#?nNnfPQsNi4@|6Y}KW3QapF$pQUGB-^(Q1 zEx?XEbL;rkonr6p6QmFvqOMJ3C}|adC+0sj7VZPB&)O!Jb`=^j0P0$j);C4@7Yt4^ zM>VUa+oN2pD5HV%Ip{d2c|zH@yAYZAMmZ*(#bP+%5%36kk8euTSc;78PdJXJpsEnM z#M_r=nB2K1r?occP#d;KkM^52BQI)_?r2eD1e6&daZy|CBj(BHfmNoJS{rxC`-FbA zBsVcEe1rAHI|#P-2#d7jb3)$7_d|U-ssY|SYkE|8#!-n=S$73pzH9;OieS-{!=7>0n~WN-_6G1GXw?8x6$(Z-vMmKPoD`Q$Lm{ zq&uHdTk3YMsy5k$ z+HE!svI}{YH}XLxhH=yp{Hp~yMA^nNS7h?&`d!V;Q!R`yDzS1H43bBGV@W-hmu^~T zf<4{iOc9=V#b@nEAZM0K*NEfiju4o^{7I^9;wvFCBwAhd(IqeXjV|R zZbG%r(!j?N;BlOLn!~%hyo5Np)UItKQWP8q|9j>$D#Ao6Inj0P#Tg-AALD_w) ztos^i_Ue)9kU?+vBTp;{)B}tTaa>iVv8ZXXv|<$dE-@F(REEGjfHHWiHv0XhwIWA& zu{%3$^6ioGy!Xk$HCK$i3ynG2=-#@u^FCSiJvvBS?FEhtaniZ{LMshA?d7)u<}7VK zTV&_D(0n8>SgOyq%w)WCp%Qyz2C}sq8T3ysOH1!Q*bm=AiUY^~^6vd>NOHyK%%=*H zTBD$Y#MVa0TTNp$YKP>8+-(DoT=Hu?b){1c{z~L9S|DS`|36iLNr) zA(Sf*eDok!X`()!&~AIkF5R*BLBwa!detcdJgVMFH zU}+HnViy<+tBQ^ouovv`Bt^P8BDKIkxC1_3c_-A0 z^Un}!^J}{0rhrPNtWGYk06c9|l~2Uir)w4#_8N7?<@=8&6f#J2wJ<$}aXuFC{4w}` z@5I`qDw662u5lp1juH0<<;^QFx*w|e$5CsIJ4e!)V!F6+^2md6juq?q^sa{YUR^&; zxxSmrhRz7fvETE^antcN=UN_>cYba>Ln4%G*2T1F2qF-8`e&_F)_&isYL@yOFqsx6 z7dK;~g&%cE`twTVd84cFgmSHn+LhZ6x9XC8qEg?$zrw$Otvj7a4apM*RsR54CU^(X zS2uZoa#Ac`1Er_NOE z3|ox%`r^53y>9OEZQD5j#-DS4G$1{38;5I*YJN;{=YYTgO zZ?dFp)5<@Dck~t1XdV@VPe^5xK5KFT9ViCFMA5~ioM=G|1~OYN{=Y#+uXp6LMvR_k zbDjlk-Lk_U?$e%x`&SLC$d?7lw>l>ckt>7%LDx?T|YbSYjlT-11lb=bD%GO^Y~i6}xY#x{+^*EF)rwCxS^eQLAZ zFgY!pbp%teiA1}jC0y=9`c_TbG$p@@SY%bW?gB}?fKdMccdb^wWs`JDNh$L#M`~yc z8-pfuu;cWqe>lr3;~Yo-UN9L2Lw{H^OZFOkCx{j zTvHKE)Q?JxjGijQgK?e?Y>ndiP}|h+mpZ*xn+MR%`5p*vZy{<5O#y~u3J^tuC6W8 zKeF#|#5VQq>yJvI9;s}qvAYX7ItHn6d)IYf!E^RWA? z&j;SIrMc50b~e{imVfox!32}{v(%2*s+M<_H$%>YP-$)=Oc)*?-R>ijeY@h6-@@u9 zdy8n)5}OLBc^Hh6syPY|uUe@_t5&guWlcM+%Mx5P@SrU3Zz}D?OiTX0ppDGma6)#)xMQznyux)jvVY*?Xep+Ms|UcPd)wXp0cvH)UR#l z*X?eS!YAErrbfZeKfNnwmiDQQIlWu4e$%2?Ey?10j~w4Egij@ofXa6=AdXATqXYx| zBlV-iUM#ZGG;4njXVk%NUb|ako^{Dlq7RPmS_74o&fprnu^0Ez<wYBDHq zI#PDPot7m7pRIKIw~I7cr&YOm-sU9|h|)2YINCoKV}4?&|FT(b4eiunUD0TsM7T+l1=;D9E<~0n%+y4w$vU8fo;-T1#FJz zZ%^xrp*79v+Fl4z{^%@BQW5>`M>XBwhk+#WFJPR+4lMVD3+c%`aa=vNupaW{Ynlm> zg9S+Bo6P`vicpGLofTx-v@|gi&Ur4}Dbyxrd(bM1r8Uc9oH%(2fE^wPNsKX=Lu zah9%*2sFJ;9njglVYB9KeZ2PD&lR10;o0Czf9zdm<|+3UYipM{AP%6_HlCIy(fa`2odpw?^Vyx&GM|xs@^I zTq@)-^j!D%uAfD>w~{m{_Y9{DMsNYgr6#PbQ*K`KI@?E%%3!AT2`2yr+j z4B#Ampl~ad@ScG)X)|jYf&qQ1zuF`Oa*6ya_zKbSe2wC76zSd)Qa;Za7uuOoz(xCr zex|yKmNWyXP%x^#pGua7u5xqeP{}DOip2LLnxeiOgLdsi>O%=>F7;g4i%ga?<#GHJI~>4w9QPh1S2!mM2C5i>Ay5Cg!@E0ET_ zLFTvFt=kFToNoMj(P5W$9YPqk1c{l?+y|aJ8pYdxcXX*FQ3YeUjE9^L_IuOq^qZ^Q zLw&={cVl8H+qHk7u7=Z0wzX~MG-oH73uOHVwL1>yIq>erAMCrEqB6~QDBQ=U8`8ST z*3=`*EP$06APi&Lxt{~vL2u#ian01&$;dxB=qksEH7J>y*l?`a-U$ctrt~FhT+yHV zOH?Tw%^6X`L^8yCu^bBQZ(Q3XU|^LUjdR`=wzg|u-3yj1cS$2~4m%HO-M-rlZG}bL zc`S2EsWTi>S>U`(EQz9$8UPj)#eVrJcOc-fOn^9wqiRsl)9;Y zMMcZDgttjDB0SE9MeP~j*EfBAwV7Q=6?0U-`!pQuGA+7nw(oJN$t1tG|>k54nF#f_39~-RcFQk&VQ{~k-p0LTzRq{KiCw@cv@S< zj~)FgS)g-r*-W={MZh3pM${iO9>3JpxM2&?PhL%0wX}^O0CME=eJbm$afsqY>D-Q{ zlVFhp+wYNPApOvwVx)^le5;d!Pjgm2)XN#*anMuamT4DuI@H{D53v~7yGp-GLob%U zBWLlbrIAi>!qL7bczqy4U{VwKX zC-ExD#~!%;Tvl+_ED}%jOK1c7AL4Cr9nu+JfEd+DZ(4F6em4WxrcA#ElS1~^0%@l9$AF^r1!@esc(E~rbz?Ecchz} z$v_Z65~OU-dY_jpw3@U!YU1o+X5+PIN+Y7FW0Sf)|z#l zgeet`O6f zuG~xI`BrvQMY7}Pk%3Wx*khlqbUMz77}+k7ZF-xTVGxE`R9Y(@hv40bqt7+1q)d)N8>;qQSR>h!<`IPlxgmPyh1PYe8<5wq+kKHh%Of1;rcV`>M&&!1 zLYFLUp<7$9k6N;t#&r?G#4vS^KwOXSag$zeec?Tt+*X=~u2R>J-4W#yanLdCUZ^}p zEz~JIKRkP|QaM1tKD&V9*jE|iZC6jaSFw`X-LB$s<-E}W<+ogh1dq;@IY~;$PCd?M z`$U^ck!~%f1~RT_+@+1WPVK|Wq>$P4$A6`7SZemB181pUvqdg9 zysWIBMN!tU^;lNXn8$dJZ5x(I?Z8CA=ot1j)fa6p6`_4n8D(z!KhhmwS2-xi?#eyJ zc>HU!(a~BsMYj1JLFA}aUwyU6={jA#^i3_5v&lN2naO63Joe6TO?KK9oT+QJcZS?& zEwtsnxE(%}n|(~ImZ-ZWoEFZ%X_!dl=L~QO?Z;DGhm7?hJ*~cl1Bov+89cTs#E4*1 zmLPNaZ4*1D-Pk0_DZt0CwRzT-Ej3HcQ^k6euC}O57NIgT66Yiyz@GH1E0;C> zPAj2hU{m#EpNW4ZZ&;E*GU-iSc&d1a!QVXlj}<3alWUccqS?S!*i|Q zu^N`GC!a3k_Y?RN@DX{c9lcl{1$oqZzSc;lyvsKW1YEXz4l8A~SoG^-9mT>U zV=V%|L+Z`z?Mn9!Q>m0j+p{Tsy;XmeW?st>U*1lUfz%Vg70X@txCoRgn`<^WSuuu} z+zzMfSXaIzd-P~+V|}VWh>mCl6H`^!;Fez^#}a}z?or7;wao^(7hC1Ix3dGC@<=!T z0Entn&n?OFoX(p^-B19{Rr?^7cMELb@K_SeX%(^7H;8QQqe!7=k}!8WkW|UXRws}> zyVTa&_`MTm;s~GvEW{oMqKe^eEUzS$hRIlGlEdkHITOilN*rgk7mrk-oLOysN^)8`k(aWdaZ3FkdTb%XHUc@qMB=c?ppSabb6^cV5Wl3V##ap+u zi*DedO8)>l(Uhu2l9<3?LjzHAk~1xApoV9VkC}R(dWm62nad0+o!u(*rA55X0XxV& zed@ZMus(5;a%o(4BN8Y8qI}G72cV+i$~G4sVDFxl2)aal!x&HJSvQyD$jlFZx$jLO zHflB0NZBWm&{Q+(QaIQ<_N)PNd186`(^Boxw~VtB#aAgeH%-z+oy>=z^ro3!MBOpk zzLk`-i(pyLnKOPup?k-3$=rUl(hHi*+rHy%81<;tQM$}H_pHx4Onl9>Q@+z0F9UJz zY1mgakyjiX)Qu9MTrkhpvDWp6as^7aW2wP3tOm`+x;$||euk?(f*!t}l*ljHtr>Qn zym3(dvU5*S5-y(z&hjd)&9%CH-2N3a+&(hOJ?f;Asci4ZwKN4OcB^4?iiMbV&0BL3 z>yuD64?%%U3fQ9<^{IkTWBO)+5F7!QMtd`n)cba=T@%6A2JicG z#J35kYVN-*Wpf>v{_2nGTT;PrvN*TZ=Zy&;x>#@**Bn&8AuUVkr@P9snBi>kyeVt| zJLJ>9vTUbhX2J4@?!to_r@lHG*mQgI)o~Ch(BRN$$KEtg?b2F@PTA0Jc&A7CS zEUpf5>?&g`J%`EJoA-KHNfJ-qTmZpA*qc;fj+o}TjblfO>dt83ym;nl)U2LoloVux z_g5ygmr;rso+g@KCp@B9I_(3lPHL(YLXT@C&2JK`F_k1&;kyoar+%eHSf}BcQhO=U zn(p#Qhm=-V!YBi%1pfd!&D6D*O+nIGib|xat+SZ^UfBmBuzS_C@qCsSl32x~lowJK zNnn?Ak9>6`*By1M&8gqC1*Kw#4KZIXNU{Cwa7}9zrKzN+jd1S>1fO#CGb0hCNt}9OvG#Y3_>lcG;0j5z;pcJyfNZL2DL>tmEA7Bv(zKUn5$xF4P;o zLAxORPCET7jgLf83nXvFhGnSymRa+JWFkEAkusdrx3{CHPeBOkSAaJ=*@KH}%?7kKEZ z56Zt&Q(nm&Opw5aYqQrULgpa2h%U-*xp zAJo;kAco#;_dn?u2ayVnzU+GeRpC~;luYU-#z%Dn+v!T>ZdY}Z;z=$il38XW1+l_= z3bO`_B=C9IbBtgf1zuZkFzf|4FJCNhPoj_OUEYhQ!*2>R%{gpgkVTLW)|TM(IXx%B z_xBeGIahdy<9Ikz{OhE=@V@8+22_!b0S6p=S6c!{ZyOlaRa4o=dP%LrNF`+_9m)Pw z>}PY2UkgVHFPhnpXy6W8+cj#(N&7Xm#KtKjPc6189(o?NxXR{XwFc4CCW#%qi-KQ~ z1K?whhNnx8?BhHWZybICwVG3%%;a(Y(d}E-(!&k9`Apx4=QWMt1#kF4G{VQ^DBNfL zqfyKjE6`_=wzFYdJt&jZaaTuB^EZ&hGvlcku5$9=4a^;Z&rXK5E(EJ(xg;|#F_3El zRz+++dF_hMOwkq~y$Y-bSx;TUvb9T$s~EG>r8;Y<(eWD&J+WAtrSq(8LC?~J*xEVE z+qO%BPT+IUnzw0f{iHJ=4n{}=`c)OYNo6Z@7?m^Ay>*@(wShr&GHvV#G?q}Ng zdQUrZBMcmdQ^hZcY}s^Ml7NE?2^XH=*JmqvYIbJ?`gE!ndT-mUrH`+ejHllsrsKAS zJ6QhLYL^LxVv59Ls3WaSa*>#iTmUgp_-12q;j286=0c_x{{VoTb4ASMK^Pe=%`T%w z3yF5X_{KBRvM#R4hp@oO=B!-G7;FR#H$2xrcXC^W=(SNoY+3I&NAmHS&yr2c_|qNo zKMErrXxZN!R*4z5N4$=nl&LWXkGy#LQ(G&I-DzM<%BQteiMX?6WZFq5y*VUE$2_;v zq?2o0%J0xsKzKR)sR1*{WH~h5+38W12fZOU=}ct9C(@O2dQ&iQlf@u>3PLYIF-XSd zJ!#K$RmkmBOOGXe&#f!S3~0lzLri6sx#N~5lkGVe*gqEvWEQb^d<%1%(YFwe| zP=XJ&K9CPl>r#kAb*7;tbBcO4TOXAGSDM`I>r~lD>ss>Vm!~yCX!eR?D}EGHxcB_1 zq$AkpHXa6)cymI8E~#?Fo0-%fEpdXxjFapIcb*yW&98^-n)RhOclSedxAUm;82Wd@ z`%y)5Rg*~_(29|#{j+IrI1^nolDIop4Bw{$tqCvYfhIvHQgT!zK#}>HD5RC*CX&>6 zmj3`@k!z1osUVVvj24+dz0@)71*Mq8>5a=a;wV7Y_4sWU5x4% zS8HY$GAbTi<2!wYdL(`}@X?ArJ>it9p&=xMI)RVEiYtz;?Vg<~F?NI6;c=<>KH?Qg z?4pqsm6=7Z-g|NlNoR54Xyj=ut)YTJ$nzj(`MYacO>JM#CX=SDmxd!eHsPcS4#dFhJJCgT$m5RZC*k`kuAq}voG;ohpUg6z zN~iFs9jjhzDIxv(k1F5zotrNq_s4H;D59l}4G1nFK(Q%Vo2lb)txG*3LKfLVZE?7# zKnL}rijt0pPw?C+BxXh`sy7foB#ir4YZsFgOB6^x?o?y?(M42Do4HS*>jqoC6#5^%PN8A|h$LnH!Xnr><&v z0gq}+%DBpr+KMYQS;y(mC8YY*k}w`k(Q%JM%||8n_}_Lx&sr#|>Lsz2cQ=^}I`IAL z7)806Tb;v-D6J6;uCW21p{7PQPZ{^3in0jquw*!=t|C=q$)bv6kferBF`L(#h_THS zP%#OoFU#{DXrh1>*_hzdcob1U4t|QgIHxbo8v#WW0MB|eiYTB515+z!wG>bUs>BL- dkP0ZI1dAr@RC18SgGCg?Q#r}tQAHF1|Jfyh(tQ8` literal 0 HcmV?d00001 diff --git a/AdvancedCppV2/Presentation/img/memory.png b/AdvancedCppV2/Presentation/img/memory.png new file mode 100644 index 0000000000000000000000000000000000000000..b2c099f1f6b5aab75dc62341febce1ac9a9f2544 GIT binary patch literal 22795 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%0AvW5CIt{2sO+G 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 literal 0 HcmV?d00001 diff --git a/AdvancedCppV2/Presentation/img/sharedptr10inverted.png b/AdvancedCppV2/Presentation/img/sharedptr10inverted.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9565ac17726ca4f10aefb7c1eb04df20fba1f9 GIT binary patch literal 23242 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 YKY@3mB#{!7rYkBvEn{en=EE2N1=LA5&;S4c literal 0 HcmV?d00001 diff --git a/AdvancedCppV2/Presentation/img/sharedptr11inverted.png b/AdvancedCppV2/Presentation/img/sharedptr11inverted.png new file mode 100644 index 0000000000000000000000000000000000000000..7ed1afcffc26c669a457dcb926c8e2d13e8863a5 GIT binary patch literal 12053 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 UL^mSJ=B9;;g64}FIjeX713gtipa1{> literal 0 HcmV?d00001 diff --git a/AdvancedCppV2/Presentation/img/sharedptr1inverted.png b/AdvancedCppV2/Presentation/img/sharedptr1inverted.png new file mode 100644 index 0000000000000000000000000000000000000000..f7af228c952ca9885fbcd50751832c1fd9f669f9 GIT binary patch literal 41138 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 C=EAT5 literal 0 HcmV?d00001 diff --git a/AdvancedCppV2/Presentation/img/sharedptr3inverted.png b/AdvancedCppV2/Presentation/img/sharedptr3inverted.png new file mode 100644 index 0000000000000000000000000000000000000000..821ce77249c59f87e76e6a38e078d002d57092bd GIT binary patch literal 18054 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 literal 0 HcmV?d00001 diff --git a/AdvancedCppV2/Presentation/img/sharedptr4inverted.png b/AdvancedCppV2/Presentation/img/sharedptr4inverted.png new file mode 100644 index 0000000000000000000000000000000000000000..02309805d8809e7f1f80ac03ab7362ac1aaef840 GIT binary patch literal 15314 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 A(f|Me literal 0 HcmV?d00001 diff --git a/AdvancedCppV2/Presentation/img/sharedptr5inverted.png b/AdvancedCppV2/Presentation/img/sharedptr5inverted.png new file mode 100644 index 0000000000000000000000000000000000000000..465fa2f54dcc024cf28447c808ee7e3b67d0fc26 GIT binary patch literal 17505 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

hXbL_LX&Up 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 z + + + + + + Advanced Cpp + + + + + + + + + + + + + +

+
+ +
+

Advanced Cpp

+
+

Altkom Akademia

+
https://www.altkomakademia.pl + +
+
+ Altkom Akademia + +48 801 258 566 +
+ +
+ +
+ Altkom Akademia + Mateusz Adamski + nauka.programowania.ma@gmail.com +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Altkom Akademia

+ https://www.altkomakademia.pl + +

+ +
+
+
+ altkomakademia +
+ Zapraszamy do współpracy + ALTKOM AKADEMIA + ul. Chłodna 51, budynek WTT, + 00-867 Warszawa + Telefon: (+48 22) 460 99 99, + Fax: (+48 22) 460 99 90 + warszawa@altkom.pl +
+
+
+ +
+ +
+ Mateusz Adamski + nauka.programowania.ma@gmail.com +
+
+
+ +
+ +
+ + + + + + diff --git a/AdvancedCppV2/Presentation/introduction.md b/AdvancedCppV2/Presentation/introduction.md new file mode 100644 index 0000000..e7c750d --- /dev/null +++ b/AdvancedCppV2/Presentation/introduction.md @@ -0,0 +1,59 @@ + + +

Presentation authors

+ +
+
+ Mateusz +
+
+ Mateusz Adamski +
+
+___ + + +

Mateusz Adamski

+ +
+
+ +Experience: + +* Trainer at Coders School and Altkom Academy +* C++ developer: worked in Nokia, Opera and Consult red + +Training experience: + +* [C++ trainings @ Coders School](https://coders.school/) +* [C++ trainings @ Altkom Academy](https://www.altkomakademia.pl/) +* [Nokia Academy](http://nokiawroclaw.pl/nasze-akcje/akademia/) +* Internal corporate trainings + +
+ +
+ Mateusz +
+
+___ + + +## Let's introduce yourself! + +* Your name and experience form C++ programing. +* Do you use modern C++ features or prefer old old proven solutions? +* Did you use any C++20 features? +* Have you ever used weak_ptr, when? +* Do you know how control block works? +* What do you expect from today's session? + +___ + + +## Contract + +* 🎰 Vegas rule +* 🗣 Discussion, not a lecture +* ☕️ Additional breaks on demand +* ⌚️ Be on time after breaks diff --git a/AdvancedCppV2/Presentation/moder_cpp_cpp11.md b/AdvancedCppV2/Presentation/moder_cpp_cpp11.md new file mode 100644 index 0000000..ff617c7 --- /dev/null +++ b/AdvancedCppV2/Presentation/moder_cpp_cpp11.md @@ -0,0 +1,358 @@ +## Cpp11 + + +* A quick reminder of lesser known features + * static_assert + * Uniform initialization + * In-class initialization of non-static variables + * initializer_list + * alias + * Template alias + * C'tor inheritance + * Attributes + * Data structure alignment +___ + + +## static_assert + +```cpp +template +void swap(T& a, T& b) +{ + static_assert(std::is_copy_constructible::value, + "Swap requires copying"); + static_assert(std::is_nothrow_move_constructible_v && + std::is_nothrow_move_assignable_v); + auto c = b; + b = a; + a = c; +} +``` + + +**Rationale**: Preventing compilation on user defined conditions (usually specific types). + + +Performs compile-time assertion checking. Usually used with `` library. + + +The message is optional from C++17. + + +___ + + +## C++98/03 initialization + +

+int a;                            // undefined value                           
+int b(5);                         // direct initialization, b = 5              
+int c = 10;                       // copy initialization, c = 10               
+int d = int();                    // default initialization, d = 0             
+int e();                          // function declaration - "most vexing parse"
+
+int values[] = { 1, 2, 3, 4 };    // brace initialization of aggregate         
+int array[] = { 1, 2, 3.5 };      // C++98 - ok, implicit type narrowing       
+
+struct P { int a, b; };                                                        
+P p = { 20, 40 };                 // brace initialization of POD               
+
+std::complex<double> c(4.0, 2.0); // initialization of classes                 
+
+std::vector<std::string> names;   // no initialization for list of values      
+names.push_back("John");                                                       
+names.push_back("Jane");                                                       
+
+ + +___ + + +## C++11 initialization with {} + +

+int a;                               // still undefined value                    
+int b{5};                            // brace initialization, b = 5              
+int c{};                             // brace initialization, c = 0              
+
+int values[] = { 1, 2, 3, 4 };       // brace initialization of aggregate        
+int array[] = { 1, 2, 3.5 };         // C++11: error - implicit type narrowing   
+
+struct P { int a, b;                                                             
+P p = { 20, 40 };                    // brace initialization of POD              
+
+std::complex<double> c{4.0, 2.0};    // brace initialization calls adequate c-tor
+
+std::vector<std::string> names = { "John", "Jane" };                             
+                                    // brace initialization of vector           
+
+ +**Rationale**: eliminate problematic initialization cases from C++98, initialization of STL containers, have one universal way of initialization. + + +___ + + +## In-class initialization of non-static variables + +```cpp +struct Foo +{ + Foo() {} + Foo(std::string a) : a_(a) {} + void print() { std::cout << a_ << std::endl; } + +private: + std::string a_ = "Foo"; // C++98: error, C++11: OK + static const unsigned VALUE = 20u; // C++98: OK, C++11: OK +}; + +Foo().print(); // Foo +Foo("Bar").print(); // Bar +``` + +___ + + +## `std::initializer_list` + +```cpp +auto values = {1, 2, 3, 4, 5}; // values is std::initializer_list +std::vector v = {1, 2, -3}; // creates a vector from + // std::initializer_list +``` + +* Defined in initializer_list header +* Elements are kept in an array +* Elements are immutable +* Elements must be copyable +* Have limited interface and access via iterators - begin(), end(), size() +* Should be passed to functions by value + +___ + + +## Constructor priority + +

+template<class Type>                                               
+class Bar {                                                        
+    std::vector<Type> values_;                                     
+public:                                                            
+    Bar(std::initializer_list<Type> values) : values_(values) {}   
+    Bar(Type a, Type b) : values_{a, b} {}                         
+};                                                                 
+
+Bar<int> c = {1, 2, 5, 51};   // calls std::initializer_list c-tor
+Bar<int> d{1, 2, 5, 51};      // calls std::initializer_list c-tor
+Bar<int> e = {1, 2};          // calls std::initializer_list c-tor
+Bar<int> f{1, 2};             // calls std::initializer_list c-tor
+Bar<int> g(1, 2);             // calls Bar(Type a, Type b) c-tor  
+Bar<int> h = {};              // calls std::initializer_list c-tor
+                       // or default c-tor if exists
+Bar<std::unique_ptr> c = {new int{1}, new int{2}};                
+// error - std::unique_ptr is non-copyable                        
+
+ +C-tor with std::initializer_list has greater priority, even if other c-tors match. + + +___ + + +## Exercise 1 + +* Open project streamer +* Add two C'tor: + * first will take initializer_list + * second const StreamInfo& +* initialize vector in initialization list +___ + + +## Type aliasing + +```cpp +typedef std::ios_base::fmtflags Flags; +using Flags = std::ios_base::fmtflags; // the same as above +Flags fl = std::ios_base::dec; +``` + + +```cpp +typedef std::vector> SocketContainer; +std::vector> typedef SocketContainer; // correct ;) +using SocketContainer = std::vector>; +``` + + +**Rationale**: More intuitive alias creation. + + +A type alias is a name that refers to a previously defined type. It could be created with typedef. +From C++11 type aliases should be created with `using` keyword. + + +___ + + +### Template aliases + +```cpp +struct ThemedLabelToogleButton { ... } + +template +using ButtonMap = std::map; + +ButtonMap> my_map; +// std::map +``` + +Type alias can be parametrized with templates. It was impossible with typedef. + + +Template aliases cannot be specialized. + + +___ + + +### Constructors inheritance + +```cpp +struct A { + explicit A(int); + int a; +}; + +struct B : A { + using A::A; // implicit declaration of B::B(int) + B(int, int); // overloaded inherited Base ctor +}; +``` + +* Derived class constructors are generated implicitly, only if they are used +* Derived class constructors take the same arguments as base class constructors +* Derived class constructor calls according base class constructor +* Constructor inheritance in a class that adds a new field might be risky - new fields can be uninitialized + +___ + + +## Exercise 2 + +* Open project streamer +* Add aliases for ip adress, port and vlan. + +___ + + +## Attributes + + +___ + + +### Standard attributes + +* [[noreturn]] - function does never return, like std::terminate. If it does, we have UB +* [[deprecated]] (C++14) - function is deprecated +* [[deprecated("reason")]] (C++14) - as above, but compiler will emit the reason +* [[fallthrough]] (C++17) - in switch statement, indicated that fall through is intentional +* [[nodiscard]] (C++17) - you cannot ignore value returned from function +* [[maybe_unused]] (C++17) - suppress compiler warning on unused class, typedef, variable, function, etc. + + +___ + + +## `[[noreturn]]` attribute + +```c++ +[[noreturn]] void f() { + throw "error"; + // OK +} + +[[noreturn]] void q(int i) { + if (i > 0) { + throw "positive"; + } + // the behavior is undefined if called with argument <=0 +} +``` +___ + + +## `[[deprecated]] attribute` + +Attributes for namespaces and enumerators are available from C++17. + +```c++ +[[deprecated("Please use f2 instead")]] int f1(); + +enum E { + foo = 0, + bar [[deprecated]] = foo +}; +E e = bar; // Emits warning + +namespace [[deprecated]] old_stuff { + void legacy(); +} +old_stuff::legacy(); //Emits warning +``` +___ + + +## `[[fallthrough]]` attribute + +```c++ +void f(int n){ + void g(), h(), i(); + switch(n) { + case 1: + case 2: + g(); + [[fallthrough]]; + case 3: // no warning on fallthrough + h(); + case 4: // compiler may warn on fallthrough + i(); + [[fallthrough]]; // illformed, not before a case label + } +} +``` + +___ + + +## `[[nodiscard]]` attribute + +```c++ +struct [[nodiscard]] error_info {}; +error_info process(Data*); + +// ... + +void passMessage() { + auto data = getData(); + process(data); // compiler warning, discarding error_info +} +``` + +___ + + +## `[[maybe_unused]]` attributes + +```c++ +[[maybe_unused]] void f([[maybe_unused]] bool thing1, + [[maybe_unused]] bool thing2) +{ + [[maybe_unused]] bool b = thing1 && thing2; + assert (b); // in release mode, assert is compiled out, and b is unused + // no warning because it is declared [[maybe_unused]] +} // parameters thing1 and thing2 are not used, no warning +``` \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/moder_cpp_cpp14.md b/AdvancedCppV2/Presentation/moder_cpp_cpp14.md new file mode 100644 index 0000000..8aa3d4d --- /dev/null +++ b/AdvancedCppV2/Presentation/moder_cpp_cpp14.md @@ -0,0 +1,256 @@ +## Cpp14 + + +* A quick reminder of lesser known features + * decltype(auto) + * Variable templates + * Binary literals (Finaly!) + * Digit separators +___ + + +## `decltype` + +**Rationale**: Deduction provided in contexts where auto is not allowed. + +`decltype` allows a compiler to deduce the type of the variable or expression, eg. the returned type can be deduced from function parameters. + + +```cpp +std::map collection; + +decltype(collection) other; // other has type of collection +decltype(collection)::mapped_type value; // value is float + +template +auto add(T1 a, T2 b) -> decltype(a + b) // from C++14 decltype not necessary +{ + return a + b; +} +``` + +___ + + +It is useful in various scenarios: + +```C++ +auto compare = [](const auto &first, const auto &second) { + if (first.size() == second.size()) { + return first < second; + } + return first.size() < second.size(); +}; + +std::map map(compare); +map.emplace("C++20", 20); +map.emplace("C++1234", 1234); +map.emplace("Bababab", 12); +map.emplace("Abababa", 13); + +for (const auto &[standard, number] : map) { + std::cout << "Standard: " << standard << " | number: " << number << '\n'; + /* Output: + Standard: C++20 | number: 20 + Standard: Abababa | number: 13 + Standard: Bababab | number: 12 + Standard: C++1234 | number: 1234 */ +} +``` + +___ + + +Since C++20 we can use lambda expressions in unevaluated operands: + +```C++ +using SquareRoot = decltype([](const int val) { + return std::sqrt(val); +}); + +using Compare = decltype([](const auto &first, const auto &second) { + if (first.size() == second.size()) { + return first < second; + } + return first.size() < second.size(); +}); + +int main() { + std::vector vec(30); + std::iota(begin(vec), end(vec), 0); + std::transform(begin(vec), end(vec), begin(vec), SquareRoot{}); + for (const auto& el : vec) { + std::cout << el << ' '; + } + // Output: + // 0 1 1 1 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 5 5 5 5 5 + + // Compare lambda will be constructed by default + std::map map; + map.emplace("C++20", 20); + map.emplace("C++1234", 1234); + map.emplace("Bababab", 12); + map.emplace("Abababa", 13); +} +``` + +Closure types are not default constructible before C++20. In C++20 a closure type that has no capture is default constructible. That's why we can do a litle magic here :) + + +___ + + +## `decltype(auto)` + +`decltype(auto)` deduction mechanism preserves type modifiers (references, const, volatile). + +`auto` deduction mechanism does not preserve type modifiers. + + +When you write generic code you want to be able to perfectly forward a return type without knowing whether you are dealing with a reference or a value. + + +```cpp +template +decltype(auto) Example(Fun fun, Args&&... args) +{ + return fun(std::forward(args)...); +} +``` + +___ + + +## Let's test it + +We have the following class: + +```C++ +class Server { +public: + bool addRequest(const std::string& serviceId, const std::string& request) { + return requests_.emplace(serviceId, request).second; + } + + std::string& getRequest(const std::string& serviceId) { + if (const auto it = requests_.find(serviceId) ; it != std::cend(requests_)) { + return it->second; + } + throw std::runtime_error("Invalid serviceId"); + } + +private: + std::map requests_; +}; + +int main() { + Server server; + server.addRequest("SuperService", "Eat meat first!"); + + server.getRequest("SuperService") += " Leave the potatoes"; + std::cout << server.getRequest("SuperService") << '\n'; + // Eat meat first! Leave the potatoes +} +``` + +___ + + +Now let's use it with generic function, but without `decltype(auto)` + +```C++ +template +auto RunFun(Fun fun, Args&&... args) +{ + return fun(std::forward(args)...); +} + +int main() { + Server server; + server.addRequest("SuperService", "Eat meat first!"); + + // Write that we want to return std::string& + RunFun([&server](const auto& id) -> std::string& { return server.getRequest(id); }, + "SuperService") += " Leave the potatoes"; + std::cout << server.getRequest("SuperService") << '\n'; + // Output: Eat meat first! + // Compiler didn't emit any warning! +} +``` + +___ + + +Now fix this with `decltype(auto)` + +```C++ +template +decltype(auto) RunFun(Fun fun, Args&&... args) +{ + return fun(std::forward(args)...); +} + +int main() { + Server server; + server.addRequest("SuperService", "Eat meat first!"); + + // Write that we want to return std::string& + RunFun([&server](const auto& id) -> std::string& { return server.getRequest(id); }, + "SuperService") += " Leave the potatoes"; + std::cout << server.getRequest("SuperService") << '\n'; + // Output: Eat meat first! Leave the potatoes +} +``` + +Now we avoid misleading and don't waste time on debugging sessions! + + +___ + + +## Variable templates + +```C++ +template +constexpr T pi = T(3.141592653589793238462643383); + +// Usual specialization rules apply: +template <> +constexpr const char* pi = "pi"; + +template <> +constexpr const int pi = 4; + +int main() { + std::cout << pi << '\n'; // 3.14159 + std::cout << pi << '\n'; // pi + std::cout << pi << '\n'; // 3 + std::cout << pi << '\n'; // 4 + + return 0; +} +``` +___ + + +## Binary literals + +```C++ +int main() { + std::cout << 0b10101010 << '\n'; // 170 + const int val = 0b1111; + std::cout << (val ^ 0b1010) << '\n'; // 5 + + return 0; +} +``` + + +## Digit separators + + +```C++ +const int milion = 1'000'000; +const double val = 123'456'789'101.000; +``` + diff --git a/AdvancedCppV2/Presentation/moder_cpp_cpp17_constexpr.md b/AdvancedCppV2/Presentation/moder_cpp_cpp17_constexpr.md new file mode 100644 index 0000000..420f52e --- /dev/null +++ b/AdvancedCppV2/Presentation/moder_cpp_cpp17_constexpr.md @@ -0,0 +1,425 @@ +## constexpr - one of the most undervalued feature in modern C++ (1) + +* constexpr was introduced in C++11 + * constexpr values are know during compilation process + * Function also could be constexpr with some restriction: + * they may only have exactly one statement and this statement had to be a return statement + * not allowed to have any side effects, like if-else + * not allowed to have exception and try-catch block + * can use ternary operator + * Usually wrote recurent rather then iterative functions + * Functions behave like normal functions (not solved during compilation) when working with non-constexpr arguments + * Class/ struct could have constexpr C'tor and member functions +* In C++14 introduced: + * Less restrictions for functions: + * more then one return + * can use if-else +___ + +### constexpr - one of the most undervalued feature in modern C++ (2) + +* In C++17 introduced: + * constexpr class string_view + * constexpr std::array + * constexpr iterator for array and std::begin, std::end functions + * constexpr lambda +* In C++20 introduced: + * constexpr STL algorithms + * constexpr std::vector and std::string and their iterators. (not supported by clang and gcc. Surprisely its supported by MSVC STL) + * Allow to use try-catch in constexpr functions + * Allow to allocate and deallocate values on heap, but need to free them before exit function + * Allow to create virtual functions + * Allow to use asm code block +___ + +## C++11 constexpr function + +```C++ +#include + +constexpr bool isLower(char c) { + return c >= 'a' && c <= 'z'; +} + +template +constexpr size_t countLower(const T (&str)[N], size_t current, size_t counter) { + return current == N + ? counter + : isLower(str[current]) + ? countLower(str, current + 1, counter + 1) + : countLower(str, current + 1, counter); +} + +int main() { + static_assert(9 == countLower("Ala has a cat", 0, 0)); +} +``` + + +```Bash +xor eax,eax +ret +nop WORD PTR cs:[rax+rax*1+0x0] +nop DWORD PTR [rax] +``` + + + + + +___ + +## C++14 constexpr function + +```C++ +constexpr bool isLower(char c) { + return c >= 'a' && c <= 'z'; +} + +template +constexpr size_t countLower(const T (&str)[N]) { + size_t counter = 0; + for (auto c : str) { + if (isLower(c)) { + ++counter; + } + } + + return counter; +} + +int main() { + static_assert(9 == countLower("Ala has a cat")); +} +``` + + +```Bash +xor eax,eax +ret +nop WORD PTR cs:[rax+rax*1+0x0] +nop DWORD PTR [rax] +``` + + + + + +___ + +## C++17 constexpr function (1) + +```C++ +template +constexpr size_t countLower(const T (&str)[N]) { + constexpr auto isLower = [](char c) { return c >= 'a' && c <= 'z'; }; + size_t counter = 0; + + for (auto c : str) { + if (isLower(c)) { + ++counter; + } + } + + return counter; +} + +int main() { + static_assert(9 == countLower("Ala has a cat")); +} +``` + + +```Bash +xor eax,eax +ret +nop WORD PTR cs:[rax+rax*1+0x0] +nop DWORD PTR [rax] +``` + + + + + +___ + +## C++17 constexpr function (2) + +```C++ +constexpr size_t countLower(const std::string_view& str) { + constexpr auto isLower = [](char c) { return c >= 'a' && c <= 'z'; }; + size_t counter = 0; + + for (size_t i = 0 ; i < str.size() ; ++i) { + if (isLower(str[i])) { + ++counter; + } + } + + return counter; +} + +int main() { + static_assert(9 == countLower("Ala has a cat")); +} +``` + + +```Bash +xor eax,eax +ret +cs nop WORD PTR [rax+rax*1+0x0] +nop DWORD PTR [rax] +``` + + + + + +___ + +## C++20 constexpr function +```C++ +constexpr size_t countLower(const std::string& str) { + constexpr auto isLower = [](char c) { return c >= 'a' && c <= 'z'; }; + size_t counter = 0; + + for (size_t i = 0 ; i < str.size() ; ++i) { + if (isLower(str[i])) { + ++counter; + } + } + + return counter; +} + +int main() { + static_assert(9 == countLower(std::string("Ala has a cat"))); +} +``` + + + + +___ + +## C++20 constexpr function - algorithms + +```C++ +constexpr size_t countLower(const std::string& str) { + constexpr auto isLower = [](char c) { return c >= 'a' && c <= 'z'; }; + return std::count_if(cbegin(str), cend(str), isLower); +} + +int main() { + static_assert(9 == countLower(std::string("Ala has a cat"))); +} +``` + + + + +___ + +## C++20 constexpr - allocation on heap (1) + +```C++ +template +constexpr std::array generatePseudoRandom(int from, int to) { + std::array arr; + const int seed = ((N << 1) ^ (from << to) ^ to) ^ ((from + to) ^ (N << 3)); + const size_t size = to - from; + auto tmp = new int[size]; + std::iota(tmp, tmp + size, from); + + for (int i = 0; i < N; ++i) { + arr[i] = tmp[(seed ^ i) % size]; + } + + delete[] tmp; + return arr; +} + +int main() { + static_assert(generatePseudoRandom(10, 20).size() == 10); +} +``` + + +```C++ +Will print: 18 19 16 17 14 15 12 13 10 11 +``` + + +```Bash +xor eax,eax +ret +cs nop WORD PTR [rax+rax*1+0x0] +nop DWORD PTR [rax] +``` + + + + + +___ + +## C++20 constexpr - allocation on heap (1) + +If we forget to add delete[], compiler will detect it! + +```C++ +template +constexpr std::array generatePseudoRandom(int from, int to) { + std::array arr; + const int seed = ((N << 1) ^ (from << to) ^ to) ^ ((from + to) ^ (N << 3)); + const size_t size = to - from; + auto tmp = new int[size]; + std::iota(tmp, tmp + size, from); + + for (int i = 0; i < N; ++i) { + arr[i] = tmp[(seed ^ i) % size]; + } + + //delete[] tmp; + return arr; +} + +int main() { + static_assert(generatePseudoRandom(10, 20).size() == 10); +} +``` + + +```C++ +: In function 'int main()': +:22:64: error: non-constant condition for static assertion + 22 | static_assert(generatePseudoRandom(10, 20).size() == 10); + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~ +:10:16: error: '(generatePseudoRandom(10, 20).std::array::size() == 10)' is not a constant expression because allocated storage has not been deallocated + 10 | auto tmp = new int[size]; + | ^~~~~~~~~~~~~ +Execution build compiler returned: 1 +``` + + +___ + +### contexpr-if (1) + +* Who uses SFINAE? +* Who likes SFINAE? + +```C++ +namespace { +constexpr double epsilon = 0.000001; +} + +template +constexpr std::enable_if_t, bool> +equal(T lhs, T rhs) { + return std::abs(lhs - rhs) < epsilon; +} + +template +constexpr std::enable_if_t, bool> +equal(T lhs, T rhs) { + return lhs == rhs; +} + +int main() { + static_assert(equal(10, 10) == true); + static_assert(equal(10.123f, 10.123f) == true); + static_assert(equal(10.45678, 10.45678) == true); +} +``` + + +```C++ +xor eax,eax +ret +cs nop WORD PTR [rax+rax*1+0x0] +nop DWORD PTR [rax] +``` + + +___ + +### contexpr-if (2) + +```C++ +template +constexpr bool equal(T lhs, T rhs) { + constexpr double epsilon = 0.000001; + + if constexpr (std::is_floating_point_v) { + return std::abs(lhs - rhs) < epsilon; + } else { + return lhs == rhs; + } +} + +int main() { + static_assert(equal(10, 10) == true); + static_assert(equal(10.123f, 10.123f) == true); + static_assert(equal(10.45678, 10.45678) == true); +} +``` + + +```C++ +xor eax,eax +ret +cs nop WORD PTR [rax+rax*1+0x0] +nop DWORD PTR [rax] +``` + + +___ + +### C++20 concept + +```C++ +template +requires std::is_floating_point_v +constexpr bool equal(T lhs, T rhs) { + constexpr double epsilon = 0.000001; + + return std::abs(lhs - rhs) < epsilon; +} + +// Work only, when both types are equal! +constexpr bool equal(auto lhs, auto rhs) { + return lhs == rhs; +} + +int main() { + static_assert(equal(10, 10) == true); + static_assert(equal(10.123f, 10.123f) == true); + static_assert(equal(10.45678, 10.45678) == true); +} +``` + + +```C++ +xor eax,eax +ret +cs nop WORD PTR [rax+rax*1+0x0] +nop DWORD PTR [rax] +``` + + diff --git a/AdvancedCppV2/Presentation/moder_cpp_cpp17_filesystem.md b/AdvancedCppV2/Presentation/moder_cpp_cpp17_filesystem.md new file mode 100644 index 0000000..8427dd1 --- /dev/null +++ b/AdvancedCppV2/Presentation/moder_cpp_cpp17_filesystem.md @@ -0,0 +1,341 @@ +## Filesystem + + +Since C++17 we can efficiently work with the file systems on all OS like Mac, Windows, and various Linux distributions. + +```C++ +namespace fs = std::filesystem; + +void printStatsForDirectory(const fs::path& dir_path) { + std::cout << "Statistics:\n"; + std::cout << ".cpp files: " + << std::count_if(fs::recursive_directory_iterator(dir_path), {}, + [](const auto& entry) { + return entry.is_regular_file() && entry.path().extension() == ".cpp"; + }) << '\n'; + std::cout << ".md files: " + << std::count_if(fs::recursive_directory_iterator(dir_path), {}, + [](const auto& entry) { + return entry.is_regular_file() && entry.path().extension() == ".md"; + }) << '\n'; + std::cout << ".h files: " + << std::count_if(fs::recursive_directory_iterator(dir_path), {}, + [](const auto& entry) { + return entry.is_regular_file() && entry.path().extension() == ".h"; + }) << '\n'; + std::cout << "Total size: " + << (std::accumulate(fs::recursive_directory_iterator(dir_path), {}, 0, + [](const auto& init, const auto& entry) { + return init + (entry.is_regular_file() ? entry.file_size() : 0); + }) >> 20) << " MB\n"; +} +``` + + + + +___ + + +## Output + +```C++ +int main() { + const auto path{fs::current_path()}; + std::cout << "current path: " << path << '\n'; + const auto path2 = path.parent_path().parent_path(); + std::cout << "path2: " << path2 << '\n'; + + printStatsForDirectory(path2); +} +``` + +```bash +current path: "C:\\Users\\madamski\\Documents\\altcom_academy\\Nokia2022\\Advanced\\Course_part1\\exercises\\streamer" +path2: "C:\\Users\\madamski\\Documents\\altcom_academy\\Nokia2022\\Advanced\\Course_part1" +Statistics: +.cpp files: 16 +.md files: 53 +.h files: 47 +Total size: 103 MB +``` + + +___ + + +## Info about system space + +```C++ +void printSpaceInfo(auto const& dirs, int width = 10) { + std::cout << std::left; + for (const auto s : {"Capacity", "Free", "Available", "Dir"}) { + std::cout << "| " << std::setw(width) << s << std::string(3, ' '); + } + std::cout << '\n'; + + for (auto const& dir : dirs) { + const auto info = fs::space(dir); + std::cout + << "| " << std::setw(width) << (info.capacity >> 30) << " GB" + << "| " << std::setw(width) << (info.free >> 30) << " GB" + << "| " << std::setw(width) << (info.available >> 30) << " GB" + << "| " << dir << '\n'; + } +} + +int main() { + const auto dirs = {"C:\\", "D:\\", "E:\\"}; + printSpaceInfo(dirs); + /* + | Capacity | Free | Available | Dir + | 237 GB| 15 GB| 15 GB| C:\ + | 383 GB| 179 GB| 179 GB| D:\ + | 463 GB| 220 GB| 220 GB| E:\ + */ +} +``` + + +___ + + +## Permissions + +```C++ +void printPerms(fs::perms p) { + std::cout << ((p & fs::perms::owner_read) != fs::perms::none ? "r" : "-") + << ((p & fs::perms::owner_write) != fs::perms::none ? "w" : "-") + << ((p & fs::perms::owner_exec) != fs::perms::none ? "x" : "-") + << ((p & fs::perms::group_read) != fs::perms::none ? "r" : "-") + << ((p & fs::perms::group_write) != fs::perms::none ? "w" : "-") + << ((p & fs::perms::group_exec) != fs::perms::none ? "x" : "-") + << ((p & fs::perms::others_read) != fs::perms::none ? "r" : "-") + << ((p & fs::perms::others_write) != fs::perms::none ? "w" : "-") + << ((p & fs::perms::others_exec) != fs::perms::none ? "x" : "-") + << '\n'; +} + +int main() { + for (const auto& entry : fs::directory_iterator(fs::current_path())) { + if (fs::is_regular_file(entry.path())) { + std::cout << "File: " + << std::left << std::setw(20) + << entry.path().filename() + << " | Permissions: "; + printPerms(fs::status(entry.path()).permissions()); + } + } + /* + File: "CMakeLists.txt" | Permissions: rw-rw-rw- + File: "example.exe" | Permissions: rwxrwxrwx + File: "README.md" | Permissions: rw-rw-rw- + File: "streamer.cpp" | Permissions: rw-rw-rw- + */ +} +``` + + +___ + + +## Exercise + +Open project `files`. Write a program which modify files under `project` directory: + +- Change permision for all .exe files to `rwxrw-rw-`. +- Change permision for all .cpp and .hpp files to `rw-r--r--`. + +You should get output like this: + + +```Bash +File: "fileA.cpp" | Permissions: rw------- +File: "fileA.hpp" | Permissions: rw------- +File: "fileB.cpp" | Permissions: rw------- +File: "fileB.hpp" | Permissions: rw------- +File: "fileC.cpp" | Permissions: rw------- +File: "fileC.hpp" | Permissions: rw------- +File: "project.exe" | Permissions: rw------- + +File: "fileA.cpp" | Permissions: rw-r--r-- +File: "fileA.hpp" | Permissions: rw-r--r-- +File: "fileB.cpp" | Permissions: rw-r--r-- +File: "fileB.hpp" | Permissions: rw-r--r-- +File: "fileC.cpp" | Permissions: rw-r--r-- +File: "fileC.hpp" | Permissions: rw-r--r-- +File: "project.exe" | Permissions: rwxrw-rw- +``` + + +___ + + +## Exercise 2 + +Open project `files`. Modify `FileB` by append any word. Now write a program which: + +- return last modify files +- return a vector with 3 files that were longest unmodified. + +Expected result (path may by different): + + +```Bash +Last modified file is: "/home/runner/SilentSiennaModularity/files/project/fileB.cpp" +File write time is Sat May 14 17:56:18 2022 +files that were longest unmodified: +File: "/home/runner/SilentSiennaModularity/files/project/fileA.cpp" | last modify time: Sat May 14 16:43:33 2022 +File: "/home/runner/SilentSiennaModularity/files/project/fileA.hpp" | last modify time: Sat May 14 16:43:33 2022 +File: "/home/runner/SilentSiennaModularity/files/project/fileB.hpp" | last modify time: Sat May 14 16:43:33 2022 +``` + + +___ + + +## Problems and fixes + +- Remember that recursive_directory_iterator and directory_iterator are InputIterator. If you move iterator to the next position you invalidate all reference to previous object. If you need to use algorithm which demand ForwardIterator you can copy all paths to separate container +- If you want to keep sorted files inside set or map you should check whether their modification times are the same. If true you need to compare their names or files with the same modification time will be lost. +- Setup premissions for files works only on Linux/ MacOS system. This is caused by different type of File system. Windows file system mainly NTFS do not support priviliges like in other systems eg. EXT4. There are still properites but handled in different way: + - Full Control: Grants complete access, including the ability to see, read, write, execute and delete files or folders, as well as change permission settings for all subdirectories. + - Modify: The user can see, read, execute, write and delete files. Also allows for the deletion of the folder itself. + - Read & Execute: Can view folder contents and run programs or scripts. + - List folder contents: Allows the user to see files and directories contained within a folder, an important setting for navigating to deeper levels in the folder structure. + - Read: Can see folder contents and also view the files and folders in question. + - Write: Users can add new files and folders and write to existing files. + - Special permissions: Additional permissions available through the Advanced Security Settings in the Windows file system. Includes options such as Read Attributes, Create Files or Traverse Folder. + +___ + + +## Temporary files for testing + +Sometimes during a test we need to read input data from file. usually we need to create this file and attach to test directory. But since C++17 we can easily use temporary directory to create all files. let's test this class: (The main resposibility is to queued all files and stream them) + +```C++ +class Streamer { +public: + Streamer() = default; + virtual ~Streamer() = default; + Streamer(const Streamer&) = default; + Streamer(Streamer&&) = default; + Streamer& operator=(const Streamer&) = default; + Streamer& operator=(Streamer&&) = default; + + virtual void stream() = 0; + virtual void stop() = 0; +}; +``` +___ + +
+
+ +```C++ +class MpgegStreamer : public Streamer { +public: + MpgegStreamer(const fs::path& path) + : path_(path) { + for (int i = 0; i < 4; ++i) { + workers_.emplace_back(&MpgegStreamer::work, this, i); + } + } + + ~MpgegStreamer() override { + for (auto& th : workers_) { + th.join(); + } + } + + void stream() override { + for (const auto& entry : fs::directory_iterator(path_)) { + std::lock_guard lg(m_); + streamQueue_.push(entry.path()); + } + } + + virtual void stop() { + finishAction_ = true; + } +``` +
+
+ +```C++ +private: + void work(int id) { + while (!finishAction_) { + fs::path path; + { + std::lock_guard lg(m_); + // Ofc this will be better with condition variable + if (streamQueue_.empty()) { + continue; + } + path = std::move(streamQueue_.front()); + streamQueue_.pop(); + } + stream(path, id); + } + } + + void stream(const fs::path path, int id) const { + std::fstream fileToStream(path); + std::transform( + std::istream_iterator(fileToStream), + {}, + std::ostream_iterator(std::cout), + [id](const std::string& str) { + std::stringstream ss; + ss << "Streamer: " << id << " | data: " << str << '\n'; + return ss.str(); + }); + } + + mutable std::mutex m_; + std::vector workers_; + std::queue streamQueue_; + fs::path path_; + std::atomic finishAction_{false}; +}; +``` +
+
+ +___ + + +We can create temporary direcotories (yes we can create them recursive!) and cleanup at the end. We don't need to be afraid of removing sth neccessary because we will work only with tmoprary directories. + +```C++ +int main() { + const auto tmp_path = fs::temp_directory_path(); + const auto mpegDir = tmp_path.string() + "Test/MpgegFiles"; + const auto mp4Dir = tmp_path.string() + "Test/MP4Files"; + + // Create test directory + fs::create_directories(mpegDir); + fs::create_directory(mp4Dir); + + // Add files + for (int i = 0; i < 10; ++i) { + std::ofstream file(mpegDir + "/File" + std::to_string(i)); + file << "this is some text in the new file\n" << i; + } + for (int i = 0; i < 10; ++i) { + std::ofstream file(mp4Dir + "/File" + std::to_string(i)); + file << "this is some text in the new file\n" << i; + } + + std::cout << "Start streaming" << std::endl; + std::unique_ptr streamer = std::make_unique(mpegDir); + streamer->stream(); + std::this_thread::sleep_for(std::chrono::seconds(1)); + streamer->stop(); + + fs::remove_all(tmp_path.string() + "Test"); +} +``` + \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/moder_cpp_cpp17_folding.md b/AdvancedCppV2/Presentation/moder_cpp_cpp17_folding.md new file mode 100644 index 0000000..bf4d36d --- /dev/null +++ b/AdvancedCppV2/Presentation/moder_cpp_cpp17_folding.md @@ -0,0 +1,280 @@ +## Fold expressions + +* Folding is a new way of handling argument package +* It can be one or two arguments +* If it is two arguments we distinguish between + * left folding + * right folding +___ + +### Fold expressions - adding values + +```C++ +template +int add(Args... args) { + return (args + ...); +} + +int main() { + std::cout << add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) << '\n'; + std::cout << add() << '\n'; // Not compile! +} +``` + + +```C++ +55 +``` + +___ + +### Fold expressions - adding values + +```C++ +template +int add(Args... args) { + return (args + ... + 0); +} + +int main() { + std::cout << add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) << '\n'; + std::cout << add() << '\n'; // OK +} +``` + + +```C++ +55 +0 +``` + +___ + +### Fold expressions - subtracting values + +```C++ +template +int subR(Args... args) { + return (args - ...); +} + +template +int subL(Args... args) { + return (... - args); +} + +int main() { + // (1 - 2) + std::cout << subR(1, 2) << '\n'; // -1 + // (1 - 2) + std::cout << subL(1, 2) << '\n'; // -1 + // (1 - (2 - 3)) + std::cout << subR(1, 2, 3) << '\n'; // 2 + // ((1 - 2) - 3) + std::cout << subL(1, 2, 3) << '\n'; // -4 + // (1 - (2 - (3 - 4))) + std::cout << subR(1, 2, 3, 4) << '\n'; // -2 + // (((1 - 2) - 3) - 4) + std::cout << subL(1, 2, 3, 4) << '\n'; // -8 + // (1 - (2 - (3 - (4 - 5)))) + std::cout << subR(1, 2, 3, 4, 5) << '\n'; // 3 + // ((((1 - 2) - 3) - 4) - 5) + std::cout << subL(1, 2, 3, 4, 5) << '\n'; // -13 +} +``` + + +___ + +### Fold expressions - make code work without parameters + +Find a problem with the below code. + + +```C++ +template +int subR(Args... args) { + return (args - ... - 0); +} + +template +int subL(Args... args) { + // What's wrong here??? + return (0 - ... - args); +} + +int main() { + // (1 - (2 - (3 - (4 - 5)))) + std::cout << subR(1, 2, 3, 4, 5) << '\n'; + // ((((1 - 2) - 3) - 4) - 5) + std::cout << subL(1, 2, 3, 4, 5) << '\n'; + + std::cout << subR() << '\n'; + std::cout << subL() << '\n'; +} +``` + + +```C++ +3 // (1 - (2 - (3 - (4 - (5 - 0)))) +-15 // (((((0 - 1) - 2) - 3) - 4) - 5) +0 +0 +``` + + + +___ + +## How to demand minimum one variable + +```C++ +template +auto average(Value const& value, Values const&... values) +{ + return (value + ... + values) / (1. + sizeof...(values)); +} + +int main() { + std::cout << average(1, 2, 3, 4) << '\n'; // print 2.5 + std::cout << average() << '\n' // NOT COMPILE! +} +``` +___ + +## Calling member functions + +```C++ +template +void loggStateForAll(const Args&... args) +{ + (..., args.loggState()); +} + +struct A { + void loggState() const { + std::cout << "StateA: good!\n"; + } +}; + +struct B { + void loggState() const { + std::cout << "StateB: bad!\n"; + } +}; + +int main() { + loggStateForAll(A{}, B{}, A{}, B{}); + /* Will print + StateA: good! + StateB: bad! + StateA: good! + StateB: bad! */ +} +``` + +___ + +## Fold expressions - insert to container (1) + +```C++ +class Foo { +public: + Foo(int num) + : num_(num) {} + + int num() const { return num_; } + +private: + int num_; +}; + +template +void emplaceAll(std::vector& vec, Args... args) { + (vec.emplace_back(args), ...); +} + +int main() { + std::vector vec; + emplaceAll(vec, 1, 2, 3, 4, 5, 6, 7); + + std::transform(cbegin(vec), cend(vec), std::ostream_iterator(std::cout, " "), + [](const auto& foo) { return foo.num(); }); +} +``` + + +```C++ +1 2 3 4 5 6 7 +``` + + +* What with (..., vec.emplace_back(args))? + + + +___ + +### Fold expressions - insert to container (2) + +* There is no right/left type of folding for one type of argument + * Unary right fold (fun(arg0) , (fun(arg1) , (fun(arg2) , ...))) + * Unary left fold (((fun(arg0) , fun(arg1)) , fun(arg2)) , ... +* Only for binary folding, we can have different behavior +___ + +### Fold expressions - logic operators + +```C++ +template +bool emplaceAll(std::set& set, Args... args) { + return (set.insert(args).second && ...); +} + +int main() { + std::set set; + emplaceAll(set, 1, 2, 3, 4, 5, 1, 6, 7); + + std::copy(cbegin(set), cend(set), std::ostream_iterator(std::cout, " ")); +} +``` + + +```C++ +1 2 3 4 5 +``` + +For bot way: +return (set.insert(args).second && ...); + + +and +return (... && set.insert(args).second); +output will be the same + + + +___ + +### Fold expressions - cooperation with STL algorithms + +```C++ +template +bool HasAll(const std::vector& vec, Args... args) { + return ((std::find(cbegin(vec), cend(vec), args) != std::cend(vec)) && ...); +} + +int main() { + std::vector vec{1, 2, 3, 4, 1, 2, 3, 5, 6, 7, 4}; + std::cout << std::boolalpha << HasAll(vec, 2, 4, 6) << '\n'; + std::cout << std::boolalpha << HasAll(vec, 2, 4, 6, 8) << '\n'; +} +``` + + +```C++ +true +false +``` + + diff --git a/AdvancedCppV2/Presentation/moder_cpp_cpp17_intro.md b/AdvancedCppV2/Presentation/moder_cpp_cpp17_intro.md new file mode 100644 index 0000000..f9d71b0 --- /dev/null +++ b/AdvancedCppV2/Presentation/moder_cpp_cpp17_intro.md @@ -0,0 +1,11 @@ +## Cpp17 + +* A quick reminder of lesser known features + * Nested namespace definitions + * Class template argument deduction + * Selection statements with initializer + * Unified initialization + * Structural biding + * Fold expressions + * Constexpr + * Filesystem diff --git a/AdvancedCppV2/Presentation/moder_cpp_cpp17_small_features.md b/AdvancedCppV2/Presentation/moder_cpp_cpp17_small_features.md new file mode 100644 index 0000000..863a07a --- /dev/null +++ b/AdvancedCppV2/Presentation/moder_cpp_cpp17_small_features.md @@ -0,0 +1,244 @@ +## Nested namespace definitions + + +You can nest namespaces like this: + + +```c++ +namespace A::B::C { + ... +} +``` + +Instead of this: + + +```c++ +namespace A { + namespace B { + namespace C { + ... + } + } +} +``` + +___ + + +## Class template argument deduction + +From C++17 class template arguments can be deduced automatically. Automatic template argument deduction was available earlier only for template functions. + +```c++ +std::pair p(1, 'x'); // C++17: OK, C++14: error: missing. + // std::pair +std::pair p(1, "x"); // C++14: OK + // std::pair +auto p2 = std::make_pair(1, "x"); // C++17: OK, C++14: OK (but not string!) + // std::pair +std::pair p3(1, "x"); // C++17: OK (but not string!), C++14 error +``` + +___ + + +## Selection statements with initializer (1) + +New versions of the `if` and `switch` statements for C++: + + +### `if (init; condition)` + + +```cpp +status_code foo() { // C++14 + { //variable c scope + status_code c = bar(); + if (c != SUCCESS) { + return c; + } + } + // ... +} +``` + + +```cpp +status_code foo() { // C++17 + if (status_code c = bar(); c != SUCCESS) { + return c; + } + // ... +} +``` + + +___ + + +## Selection statements with initializer (2) + +### `switch (init; condition)` + + +```C++ +class Foo { +public: + enum class ErrorCode { + Ok, + Bad, + VeryBad + }; + + ErrorCode doSth() {} +} + +int main() { + switch (Foo foo ; const auto err = foo.doSth()) { + case ErrorCode::Ok: + break; + case ErrorCode::Bad: + break; + case ErrorCode::VeryBad: + break; + } +} +``` + + +___ + + +## Selection statements with initializer (3) + +```C++ +class ThreadSafeQueue { +public: + std::optional try_pop() { + int val = 0; + // Lock guard is visible inside if-else + if (std::lock_guard lock(m_) ; queue_.empty()) { + return {}; + } else { + val = queue_.front(); + queue_.pop(); + } + + // Here mutex is no longer locked + logger << "pop value from queue"; + return val; + } + +private: + std::queue queue_; + std::mutex m_; +}; +``` + + + +___ + + +## Hiding variable inside if-else statement (2) + +We can avoid assigning iterators and then comapre it in `if` statement. Now we can write it faster + +```C++ +int main() { + std::vector vec; + + if (const auto it = std::find(std::cbegin(vec), std::cend(vec), 10) ; it != std::cend(vec)) { + // *it* is visible here + } else { + // and here + } + // but not here + + std::map + if (const auto it = map.find("Ala") ; it != std::cend(map)) { + // ... + } else { + // ... + } +} +``` + +___ + + +## Unified initialization + +* C++11 introduce {} for initialization +* C++17 fixed some problems with {} and unified it. + +___ + + +## Unified initialization C++11 + +* Guess output (compiler 4.7.4 with C++11 flag) + +

+auto a {1};             //std::initializer_list<int>
+auto b = {1};           //std::initializer_list<int>
+auto c {1, 2};          //std::initializer_list<int>
+auto d = {1, 2};        //std::initializer_list<int>
+auto e = {1, 2, 3.f};   //Not compile               
+auto f {1, 2, 3.f}      //Not compile               
+
+ +___ + + +## Unified initialization C++17 + +* Guess output (compiler 8.4 with C++17 flag) + +

+auto a {1};             //int                       
+auto b = {1};           //std::initializer_list<int>
+auto c {1, 2};          //Not compile (mising =)              
+auto d = {1, 2};        //std::initializer_list<int>
+auto e = {1, 2, 3.f};   //Not compile               
+auto f {1, 2, 3.f}      //Not compile               
+
+ +___ + + +## Structural biding + +* Unpack strucures, classes, tuples, pairs etc... + +```C++ +struct Foo{}; + +std::tuple getTuple() { + return {5, "Ala has a cat", Foo{}}; +} + +struct Bar { + std::string str_; + double val_; + char c_; + std::vector vec_; +}; + +int main() { + const auto& [id, topic, foo] = getTuple(); + + std::vector bar; + for (const auto& [name, value, sign, vec] : bar) { + // ... + } + + std::map map; + for (const auto& [key, value] : map) { + // .. + } +}; +``` + + diff --git a/AdvancedCppV2/Presentation/moder_cpp_cpp20_intro.md b/AdvancedCppV2/Presentation/moder_cpp_cpp20_intro.md new file mode 100644 index 0000000..53f3411 --- /dev/null +++ b/AdvancedCppV2/Presentation/moder_cpp_cpp20_intro.md @@ -0,0 +1,15 @@ +## Cpp20 + + +- ranges +- modules +- operator<=>, +- designated initializers, +- atributes +- pack-expansion in lmabdas (how to avoid copy) +- template syntax for lambdas +- uniform erasure +- How to log useful informations in fast way using C++20 (source_loaction), subtitution for old macros. +- bit operations +- format your string like in printf + diff --git a/AdvancedCppV2/Presentation/moder_cpp_cpp20_modules.md b/AdvancedCppV2/Presentation/moder_cpp_cpp20_modules.md new file mode 100644 index 0000000..9df6a47 --- /dev/null +++ b/AdvancedCppV2/Presentation/moder_cpp_cpp20_modules.md @@ -0,0 +1,142 @@ +## Modules + + +Legacy `includes` system form `C` language finally was replaced in C++20 by modules. `include` is actually 50 years old! + +New keywords: + +* Export +* Import +___ + + +## Less code in binary + +
+
+ +```C++ +#include + +int main() { + std::cout << "Hello World!\n"; +} +``` + +```C++ +g++ -std=c++2b -E main.cpp | wc -c +929065 +``` +
+ +
+ +```C++ +import ; + +int main() { + std::cout << "Hello Modular World!\n"; +} +``` + +```C++ +g++ -std=c++2b -fmodules-ts main.cpp | wc -c +239 +``` +
+ + +___ + + +## Export + +Modules provide better encapsulation because you can export only those methods, which you mark as exported. The rest of the functions stay hidden outside the file. + +```C++ +// calculator.cc +export module Calculator; + +export auto add(auto x, auto y) { + return x + y; +} + +export auto substract(auto x, auto y) { + return x - y; +} + +export namespace Advanced { + auto factorial(auto x) { + decltype(x) res = 1; + for (int i = 2 ; i <= x ; ++i) { + res *= i + } + + return res; + } +} + +void this_function_will_not_be_exported() {} + +// main.cc +import ; +import Calculator; + +int main() { + std::cout << "10 + 20 = " << add(10, 20) << '\n'; + std::cout << "40 - 60 = " << substract(40, 60) << '\n'; + std::cout << "5! = " << Advanced::factorial(5) << '\n'; + // this_function_will_not_be_exported -> compile error +} +``` + + + +___ + + +## spread modules across multiple files + +Only one file can be `interface` and `export` module. Other files can write implementations. + +```C++ +// interface.cc +export module calculator + +export { + auto add(auto x, auto y); + auto substract(auto x, auto y); +} + +// add.cc +module calculator + +auto add(auto x, auto y) { + return x + y; +} + +// substract.cc +module calculator + +auto substract(auto x, auto y) { + return x - y; +} + +// main.cc +import ; +import calculator; + +int main() { + std::cout << "10 + 20 = " << add(10, 20) << '\n'; + std::cout << "40 - 60 = " << substract(40, 60) << '\n'; +} +``` + + +___ + + +## Compiler and Cmake supoort + +Unfortunately when we want to build binary with modules using g++ or clang even when we have the newest version (on 17.05.2022 there is g++ 13 and clang 15) we still have partial support for modules. It will takes a few years before we will start using this in customer projects. Currently, even CMake(3.23.1) Didn't fully support modules: (https://gitlab.kitware.com/cmake/cmake/-/issues/18355). + \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/moder_cpp_cpp20_ranges.md b/AdvancedCppV2/Presentation/moder_cpp_cpp20_ranges.md new file mode 100644 index 0000000..232f7ee --- /dev/null +++ b/AdvancedCppV2/Presentation/moder_cpp_cpp20_ranges.md @@ -0,0 +1,396 @@ +## Ranges + + +Let's start with simple example: + +```C++ +int main() { + auto const ints = {0, 1, 2, 3, 4, 5}; + auto even = [](int i) { return 0 == i % 2; }; + auto square = [](int i) { return i * i; }; + + for (int i : ints | std::views::filter(even) | std::views::transform(square)) { + std::cout << i << ' '; + } +} +``` + + +```C++ +0 4 16 +``` + + +___ + + +## New iterators + +* std::ranges::input_range: specifies a range whose iterator type satisfies input_iterator (can iterate from begin to end at least once) +* std::ranges::output_range: specifies a range whose iterator type satisfies output_iterator +* std::ranges::forward_range: specifies a range whose iterator type satisfies forward_iterator (can iterate from begin to end more than once) +* std::ranges::bidirectional_range: specifies a range whose iterator type satisfies bidirectional_iterator (can iterate forward and backward more than once) +* std::ranges::random_access_range: specifies a range whose iterator type satisfies random_access_iterator (can jump in constant time to an arbitrary element with the index operator []) +* std::ranges::contiguous_range: specifies a range whose iterator type satisfies contiguous_iterator (elements are stored consecutively in memory) + + +___ + + +## Improvements for iterators + +Whenever we iterate through value, we need to check if we reach the end. But We can provide an optimization, which avoids comparing `it != end`. We can do this by passing `std::unreachable_sentinel`. This sentinel always returns `false` when compared, that's why the compiler can optimize the process. **but be careful** if you provide wrong input, like searching numbers which don't exist in acontainer you got `Segmentation fault`. + +```C++ +int main() { + std::vector vec = { 1, 2, 3, 4, 5, 6, 7, 8, 9}; + std::ranges::shuffle(vec, std::mt19937(std::random_device()())); + std::cout << *std::ranges::find(vec.begin(), std::unreachable_sentinel, 5) << '\n'; + // change this for 10 and you got Segmentation fault +} +``` + + +see unreachable.sentinel + +___ + + +## More improvements - predicates + +Whenever you wanted to sort structure based on the class member you need to provide a special comparator: + +```C++ +struct Student { + int index_; + std::string name_; + double average_; +}; + +int main() { + std::vector students{{.index_ = 123456, .name_ = "Jordan", .average_ = 4.53}, + {.index_ = 654321, .name_ = "Michael", .average_ = 4.51}, + {.index_ = 246892, .name_ = "John", .average_ = 4.56}, + {.index_ = 743561, .name_ = "Jane", .average_ = 4.44}, + {.index_ = 811111, .name_ = "Anna", .average_ = 4.46}}; + + std::sort(begin(students), end(students), [](const auto& lhs, const auto& rhs){ + return lhs.average_ < rhs.average_; + }); + + for (const auto& [index, name, average] : students) { + std::cout << "student: " << name << " | index: " << index << " | avergae: " << average << '\n'; + } + /* student: Jane | index: 743561 | avergae: 4.44 + student: Anna | index: 811111 | avergae: 4.46 + student: Michael | index: 654321 | avergae: 4.51 + student: Jordan | index: 123456 | avergae: 4.53 + student: John | index: 246892 | avergae: 4.56 */ +} +``` + +___ + + +Now you can write it much faster!: + +```C++ +struct Student { + int index_; + std::string name_; + double average_; +}; + +int main() { + std::vector students{{.index_ = 123456, .name_ = "Jordan", .average_ = 4.53}, + {.index_ = 654321, .name_ = "Michael", .average_ = 4.51}, + {.index_ = 246892, .name_ = "John", .average_ = 4.56}, + {.index_ = 743561, .name_ = "Jane", .average_ = 4.44}, + {.index_ = 811111, .name_ = "Anna", .average_ = 4.46}}; + + // container, comparator, projection + std::ranges::sort(students, {}, &Student::average_); + + for (const auto& [index, name, average] : students) { + std::cout << "student: " << name << " | index: " << index << " | avergae: " << average << '\n'; + } +} +``` + + +All magic is done by the new parameter `projection`. It points to address to member and use it to provide a comparison: `std::invoke(comp, std::invoke(proj, *(it + n)), std::invoke(proj, *it))` + +___ + + +## View + +Here is a quote from Eric Nieblers range-v3 implementation which is the base for the C++20 ranges: "Views are composable adaptations of ranges where the adaptation happens lazily as the view is iterated." In other words: `view` is not an owner of range. So we don't need to copy/move elements, only perform some action. Only exception is a `std::views::single` which owns the single element it is viewing. + + +Let's use `Foo` which prints whenever we create/ copy/ move or delete him. + + +
+
+ +```C++ +int main() { + auto even = [](const auto& el) { return !(el.id() % 2); }; + std::vector vec {Foo{1}, Foo{2}, Foo{3}, Foo{4}}; + + std::cout << "Start algorithm\n"; + for (const auto& foo : vec + | std::views::filter(even) + | std::views::drop_while([](const auto& el){ return el.id() < 4; })) { + std::cout << "foo: " << foo << '\n'; + } +} +``` +We don't make any copy! +
+ +
+ +```C++ +C'tor id: 1 +C'tor id: 2 +C'tor id: 3 +C'tor id: 4 +Copy C'tor id: 1 +Copy C'tor id: 2 +Copy C'tor id: 3 +Copy C'tor id: 4 +D'tor id:4 +D'tor id:3 +D'tor id:2 +D'tor id:1 +Start algorithm +foo: 4 +D'tor id:1 +D'tor id:2 +D'tor id:3 +D'tor id:4 +``` +
+ + +___ + + +## View (2) + +This is also usefull to create `range loop` which iterate reversed: + +```C++ +int main() { + std::vector students{{.index_ = 123456, .name_ = "Jordan", .average_ = 4.53}, + {.index_ = 654321, .name_ = "Michael", .average_ = 4.51}, + {.index_ = 246892, .name_ = "John", .average_ = 4.56}, + {.index_ = 743561, .name_ = "Jane", .average_ = 4.44}, + {.index_ = 811111, .name_ = "Anna", .average_ = 4.46}}; + + std::ranges::sort(students, {}, &Student::average_); + + for (const auto& [index, name, average] : std::views::reverse(students)) { + std::cout << "student: " << name << " | index: " << index << " | avergae: " << average << '\n'; + } + /* + student: John | index: 246892 | avergae: 4.56 + student: Jordan | index: 123456 | avergae: 4.53 + student: Michael | index: 654321 | avergae: 4.51 + student: Anna | index: 811111 | avergae: 4.46 + student: Jane | index: 743561 | avergae: 4.44 + */ +} +``` + +___ + + +## View (3) + +We can also create `range loop` which iterates only through the first/last `k` elements: + +```C++ +int main() { + std::vector students{{.index_ = 123456, .name_ = "Jordan", .average_ = 4.53}, + {.index_ = 654321, .name_ = "Michael", .average_ = 4.51}, + {.index_ = 246892, .name_ = "John", .average_ = 4.56}, + {.index_ = 743561, .name_ = "Jane", .average_ = 4.44}, + {.index_ = 811111, .name_ = "Anna", .average_ = 4.46}}; + + std::ranges::sort(students, {}, &Student::average_); + + for (const auto& [index, name, average] : std::views::reverse(students) | std::views::drop(3)) { + std::cout << "student: " << name << " | index: " << index << " | avergae: " << average << '\n'; + } + /* student: Anna | index: 811111 | avergae: 4.46 + student: Jane | index: 743561 | avergae: 4.44 */ + + for (const auto& [index, name, average] : std::views::reverse(students) | std::views::take(3)) { + std::cout << "student: " << name << " | index: " << index << " | avergae: " << average << '\n'; + } + /* student: John | index: 246892 | avergae: 4.56 + student: Jordan | index: 123456 | avergae: 4.53 + student: Michael | index: 654321 | avergae: 4.51 */ +} +``` + + +___ + + +## std::map + +```C++ +int main() { + std::map map{{1, "One"}, {2, "Two"}, {3, "Three"}, {4, "Four"}}; + auto odd = [](const auto& el) { return el % 2; }; + + for (auto el : std::views::keys(map) | std::views::filter(odd)) { + std::cout << el << ' '; + } + std::cout << '\n'; + + for (const char c : map | std::views::values | std::views::join) { + std::cout << c << ' '; + } +} +``` + + +```C++ +1 3 +O n e T w o T h r e e F o u r +``` + + +___ + + +## C++23 and further + +Ranges library based on `Ranges V3`. Unfortunately, in C++20 there is a lack of useful things like creating cycles or zip functions. In C++23 there will be a few more operations like `zip` or `join_with`: + +```C++ +int main() { + auto x = std::vector{1, 2, 3, 4}; + auto y = std::list{"α", "β", "γ", "δ", "ε"}; + auto z = std::array{'A', 'B', 'C', 'D', 'E', 'F'}; + + /* 1 α A + 2 β B + 3 γ C + 4 δ D */ + for (const auto& [num, grec, alpha] : std::views::zip(x, y, z)) { + std::cout << num << ' ' << grec << ' ' << alpha << '\n'; + } + + std::map map{{1, "One"}, {2, "Two"}, {3, "Three"}, {4, "Four"}}; + auto ends_with_e = [](const auto& el) { return el.back() == 'e'; }; + const auto joined = std::views::values(map) | std::views::filter(ends_with_e) | std::views::join_with(' '); + /* Two Four */ + for (const auto& el : joined) { + std::cout << el; + } +} +``` + +___ + + +## actions (C++23) + +There is a proposal to extend ranges in C++23 to allow easy convert range to container (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1206r6.pdf) + +```C++ +int main() { + std::map map{ + {1, "Hello"}, {2, "Abcd"}, {3, "Hello"}, {4, "Aaa"}, {5, "Ala"}, {6, "Abcd"}}; + + // Since C++23 + for (const auto& el : map + | std::views::values + | std::ranges::to // Since C++23 + | std::ranges::sort + | std::ranges::unique) { + std::cout << el << '\n'; + } +} +``` + +```C++ +Aaa +Abcd +Ala +Hello +``` + + +___ + + +## actions (C++26) + +In C+26 we should get also `operator|=`. + +
+Before C++26 + +```C++ +int main() { + std::vector vec{"Hello", "Abcd", "Hello", "Aaa", "Ala", "Abcd"}; + + std::ranges::sort(vec); + auto ret = std::ranges::unique(vec); + vec.erase(ret.begin(), ret.end()); +} +``` +
+ +
+In C++26 + +```C++ +int main() { + std::vector vec{"Hello","Abcd", "Hello", "Aaa", "Ala", "Abcd"}; + vec |= std::ranges::sort | std::ranges::unique; +} +``` +
+ + +___ + + +## Exercise 1 + +Open project `searcher` and implement function `searchFiles` which returns all files containing `keyWord`. + +Possible output: + +```C++ +"C:\\Users\\mateusz\\Documents\\Nokia2022\\Basic\\Course_part1\\exercises\\searcher/files\\fileA.hpp" +"C:\\Users\\mateusz\\Documents\\Nokia2022\\Basic\\Course_part1\\exercises\\searcher/files\\fileC.hpp" +``` + +___ + + +## Exercise 2 + +Open project `students`: + +* implement function `filterStudents`, +* Student should be disqualified whether his average is below `minAvergae`, +* Write an algorithm that prints students using ranges (do not implement friend operator<<) + +Output: + +```C++ +Name: Jane | index: 743561 | average: 4.44 +Name: Tom | index: 811111 | average: 4.36 +Name: Mike | index: 811111 | average: 4.45 +``` + diff --git a/AdvancedCppV2/Presentation/moder_cpp_cpp20_small_features.md b/AdvancedCppV2/Presentation/moder_cpp_cpp20_small_features.md new file mode 100644 index 0000000..7c9a547 --- /dev/null +++ b/AdvancedCppV2/Presentation/moder_cpp_cpp20_small_features.md @@ -0,0 +1,1082 @@ +## Small features + +___ + + +## operator<=> + +Since C++20 we don't need to define all comparison operators for custom structures. Instead of `==`, `!=`, `>`, `<`, `<=`, `>=` we can simply write one universal comparator `<=>`. + +```C++ +struct Student { + auto operator<=>(const Student& other) const = default; + + std::string name_; + double average_; + int index_; +}; + +int main() { + Student student1{.name_ = "Mateusz", .average_ = 4.67, .index_ = 456123}; + Student student2{.name_ = "Michał", .average_ = 4.57, .index_ = 123456}; + Student student3{.name_ = "Marcelina", .average_ = 4.67, .index_ = 321456}; + Student student4{.name_ = "Mirosław", .average_ = 4.47, .index_ = 135246}; + + std::cout << "student1 < student2 ? " << (student1 < student2) << '\n'; // True + std::cout << "student1 < student3 ? " << (student1 < student3) << '\n'; // False + std::cout << "student1 < student4 ? " << (student1 < student4) << '\n'; // True + std::cout << "student2 < student3 ? " << (student2 < student3) << '\n'; // False + std::cout << "student2 < student4 ? " << (student2 < student4) << '\n'; // True + std::cout << "student3 < student4 ? " << (student3 < student4) << '\n'; // True + std::cout << "student1 == student1 ? " << (student1 == student1) << '\n'; // True +} +``` + + +___ + + +## How it works? + +First, we need to understand how the compiler treats the structure `Student`. This structure has 3 fields: `name`, `average`, and `index`. During the comparison, the first field is to compare if both values are the same, if true we reach a second one, and so on. In other words, first different fields decide which structure is lower. + +```C++ +int main() { + Student student1{.name_ = "Mateusz", .average_ = 4.67, .index_ = 456123}; + Student student2{.name_ = "Mateusz", .average_ = 4.67, .index_ = 123456}; + Student student3{.name_ = "Mateusz", .average_ = 4.57, .index_ = 321456}; + Student student4{.name_ = "Mateusz", .average_ = 4.57, .index_ = 135246}; + + std::cout << "student1 > student2 ? " << (student1 > student2) << '\n'; // T (higher index) + std::cout << "student1 > student3 ? " << (student1 > student3) << '\n'; // T (higher average) + std::cout << "student1 > student4 ? " << (student1 > student4) << '\n'; // T (higher average) + std::cout << "student2 > student3 ? " << (student2 > student3) << '\n'; // T (higher average) + std::cout << "student2 > student4 ? " << (student2 > student4) << '\n'; // T (higher average) + std::cout << "student3 > student4 ? " << (student3 > student4) << '\n'; // T (higher index) + std::cout << "student1 == student1 ? " << (student1 == student1) << '\n'; // T (the same person) +} +``` + + + +___ + + +## But I don't want to compare some fields... + +When you don't want to compare one or more fields, you need to write your own comparator. + +```C++ +struct Student { + std::partial_ordering operator<=>(const Student& other) const { + if (const auto res = average_ <=> other.average_; res != 0) { + return res; + } + return name_ <=> other.name_; + } +}; + +int main() { + Student student1{.name_ = "Mateusz", .average_ = 4.67, .index_ = 456123}; + Student student2{.name_ = "Mateusz", .average_ = 4.67, .index_ = 123456}; + Student student3{.name_ = "Mateusz", .average_ = 4.57, .index_ = 321456}; + + std::cout << "student1 > student2 ? " << (student1 > student2) << '\n'; // T (higher index) + std::cout << "student1 < student3 ? " << (student1 < student3) << '\n'; // F (lower average) + // This line do not compile :( + std::cout << "student1 == student1 ? " << (student1 == student1) << '\n'; // T (the same person) +} +``` + + +But why do we wrote`std::partial_ordering` instead of `auto`? It's because we compare two floating point values. I know that earlier we wrote `auto operator<=>` and it's worked, but this was fully generated by the compiler. If we are writing it manually and we need to specify what result we return. + + +___ + + +## Types of ordering + +* strong_ordering: a total ordering, where equality implies substitutability (that is (a <=> b) == strong_ordering::equal implies that for reasonable functions f, f(a) == f(b). “Reasonable” is deliberately underspecified – but shouldn’t include functions that return the address of their arguments or do things like return the capacity() of a vector, etc. We want to only look at “salient” properties – itself very underspecified, but think of it as referring to the value of a type. The value of a vector is the elements it contains, not its address, etc.). The values are strong_ordering::greater, strong_ordering::equal, and strong_ordering::less. +* weak_ordering: a total ordering, where equality actually only defines an equivalence class. The canonical example here is case-insensitive string comparison – where two objects might be weak_ordering::equivalent but not actually equal (hence the naming change to equivalent). +* partial_ordering: a partial ordering. Here, in addition to the values greater, equivalent, and less (as with weak_ordering), we also get a new value: unordered. This gives us a way to represent partial orders in the type system: 1.f <=> NaN is partial_ordering::unordered. + + +___ + + +## Ok but what with operator== + +beacuse we have custom `operator<=>`, which return `std::partial_ordering` we can't use `operator==`. We need to provide own `operator==`. And we can do this by default (compare all fileds) or manually (compare specific fileds). + +```C++ +struct Student { + std::partial_ordering operator<=>(const Student& other) const { + if (const auto res = average_ <=> other.average_; res != 0) { + return res; + } + return name_ <=> other.name_; + } + + bool operator==(const Student& other) const { + return name_ == other.name_ && average_ == other.average_; + } + + std::string name_; + double average_; + int index_; +}; + +int main() { + Student student1{.name_ = "Mateusz", .average_ = 4.67, .index_ = 456123}; + Student student2{.name_ = "Mateusz", .average_ = 4.67, .index_ = 123456}; + + std::cout << "student1 > student2 ? " << (student1 > student2) << '\n'; // T (higher index) + std::cout << "student1 == student1 ? " << (student1 == student1) << '\n'; // T (the same person) +} +``` + + +___ + + +We can also decide to use default `operator==` and this also work! + +```C++ +struct Student { + std::partial_ordering operator<=>(const Student& other) const { + if (const auto res = average_ <=> other.average_; res != 0) { + return res; + } + return name_ <=> other.name_; + } + + bool operator==(const Student&) const = default; + + std::string name_; + double average_; + int index_; +}; + +int main() { + Student student1{.name_ = "Mateusz", .average_ = 4.67, .index_ = 456123}; + Student student2{.name_ = "Mateusz", .average_ = 4.67, .index_ = 123456}; + + std::cout << "student1 > student2 ? " << (student1 > student2) << '\n'; // T (higher index) + std::cout << "student1 == student1 ? " << (student1 == student1) << '\n'; // T (the same person) +} +``` + + +___ + + +## More about partial_ordering + +To sum up, if we compare 2 floating point values, the result is `std::partial_ordering`. We can't use `operator==` in such a case. This makes sense, but when do we also need this type of order? Let's check the below example: + +```C++ +struct Student { + std::partial_ordering operator<=>(const Student& other) const { + if (!name_ || !other.name_) { + return std::partial_ordering::unordered; + } + if (const auto res = name_ <=> other.name_; res != 0) { + return res; + } + return index_ <=> other.index_; + } + bool operator==(const Student&) const = default; + + std::optional name_; + double average_; + int index_; +}; + +int main() { + Student student1{.name_ = "Mateusz", .average_ = 4.67, .index_ = 456123}; + Student student2{.name_ = std::nullopt, .average_ = 4.67, .index_ = 123456}; + + std::cout << "student1 > student2 ? " << (student1 > student2) << '\n'; // F (second student doesn't has name!) + std::cout << "student1 < student2 ? " << (student1 < student2) << '\n'; // F (second student doesn't has name!) + std::cout << "student1 != student2 ? " << (student1 != student2) << '\n'; // T (here we use operator== not <=>) + std::cout << "student1 == student2 ? " << (student1 == student2) << '\n'; // F (here we use operator== not <=>) + std::cout << "student2 == student2 ? " << (student2 == student2) << '\n'; // T (here we use operator== not <=>) +} +``` + + +___ + + +## Ok but how <=> exactly works? + +Each type or ordering could represent one of those 3 values (partial could also has `unordered`): + +* std::strong_ordering::less / weak_ordering::less / std::partial_ordering::less +* std::strong_ordering::equal / weak_ordering::equivalent / std::partial_ordering::equivalent +* std::strong_ordering::greater / weak_ordering::greater / std::partial_ordering::greater + +We can simply compare them: + +```C++ +int val1(1234); +int val2(12345); +auto res = val1 <=> val2; +if (res < 0) + std::cout << "val1 < val2" << std::endl; +else if (res == 0) + std::cout << "val1 == val2" << std::endl; +else if (res > 0) + std::cout << "val1 > val2" << std::endl; +``` + +This is implicity generated by compiler. For instance `a > b` is converted to `(a <=> b) > 0` + + +___ + + +## Finally, something about weak ordering + +Weak ordering is returned when does not imply substitutability: if a is equivalent to b, f(a) may not be equivalent to f(b), where f denotes a function that reads only comparison-salient state that is accessible via the argument's public const members. In other words, equivalent values may be distinguishable. + +```C++ +struct Student { + int score() const { + return std::accumulate(cbegin(grades_), cend(grades_), 0, [](const auto& sum, const auto& pair) { return sum + pair.second; }); + } + + std::weak_ordering operator<=>(const Student& other) const { + if (const auto res = this->score() <=> other.score(); res != 0) { + return res; + } + return name_ <=> other.name_; + } + + bool operator==(const Student&) const = default; + + std::string name_; + std::multimap grades_; + int index_; +}; + +int main() { + Student student1{.name_ = "Mateusz", .grades_ = {{"Math", 5},{"Bio", 4}}, .index_ = 456123}; + Student student2{.name_ = "Mateusz", .grades_ = {{"Math", 5},{"Eng", 4}}, .index_ = 123456}; + Student student3{.name_ = "Mateusz", .grades_ = {{"Math", 4},{"Phys", 3}}, .index_ = 123456}; + + std::cout << "student1 > student2 ? " << (student1 > student2) << '\n'; // F + std::cout << "student1 < student2 ? " << (student1 < student2) << '\n'; // F + std::cout << "student1 != student2 ? " << (student1 != student2) << '\n'; // T (use operator == here) + std::cout << "student1 == student2 ? " << (student1 == student2) << '\n'; // F (use operator == here) + std::cout << "student1 > student3 ? " << (student1 > student3) << '\n'; // T (higher grades) + std::cout << "student1 < student3 ? " << (student1 < student3) << '\n'; // F +} +``` + +___ + + +## Implicit conversion + +`std::strong_ordering` can be implicitly converted to `std::weak_ordering` and `std::weak_ordering` can be implicitly converted to `std::partial_ordering`. + +___ + + +## designated initializers + +This is a small feature that you saw a few times in action during these lectures: + +```C++ +struct Student { + std::string name_; + std::multimap grades_; + int index_; +}; + +int main() { + Student student1{.name_ = "Mateusz", .grades_ = {{"Math", 5},{"Bio", 4}}, .index_ = 456123}; + Student student2{.name_ = "Mateusz", .grades_ = {{"Math", 5},{"Eng", 4}}, .index_ = 123456}; + Student student3{.name_ = "Mateusz", .grades_ = {{"Math", 4},{"Phys", 3}}, .index_ = 123456}; +``` + + + +___ + + +Every structure or class with public fields could now be initialized by using the name of a field. This makes code more readable and you don't need to switch a few times between headers and source code to check which field means what. + +```C++ +struct StreamInfo { + std::string sourceAddress_; + std::string destinationAddress_; + uint16_t sourcePort_; + uint16_t destinationPort_; + uint16_t vlan_; +}; + +struct Streamer { + Streamer(uint16_t sourcePort): sourcePort_(sourcePort) {} + + uint16_t getSourcePort() const { return sourcePort_; } +private: + uint16_t sourcePort_; +}; + +int main() { + std::map ipTables; + Streamer streamer(6523); + ipTables.emplace("192.168.0.15", "192.168.0.35"); + ipTables.emplace("192.168.0.16", "192.168.0.42"); + + StreamInfo info { + .sourceAddress_ = "192.168.0.15", + .destinationAddress_ = ipTables["192.168.0.15"], + .sourcePort_ = streamer.getSourcePort(), + .destinationPort_ = 9998, + .vlan_ = [](){ return 123; }() + }; +} +``` + +___ + + +## Atributes + +Since C++20 we got 4 more atributes + +* [[nodiscard("reason")]] - encourages the compiler to issue a warning if the return value is discarded +* [[likely]] and [[unlikely]] - indicates that the compiler should optimize for the case where a path of execution through a statement is more or less likely than any other path of execution +* [[no_unique_address]] - indicates that a non-static data member need not have an address distinct from all other non-static data members of its class + +___ + + +## likely and unlikely + +Everyone knows well this `if-else` statements: + +```C++ +if (!vec.empty()) { return vec.front(); } + +if (divider != 0) { + return num / divider; +} else { + return std::nan("nan"); +} + +if (ptr) { + return ptr->doSth(); +} + +if (name_ == other.name_) { + return index < other.index_; +} else { + return name_ < other.name_ +} +``` +* What is common for all of them? + +___ + + +Let's help compiler! + +```C++ +constexpr double pow(double x, int n) noexcept { + if (n > 0) [[likely]] { return x * pow(x, n - 1); } + else [[unlikely]] { return 1; } +} + +constexpr double pow2(double x, int n) noexcept { + if (n > 0) { return x * pow(x, n - 1); } + else { return 1; } +} + +int main() { + auto benchmark = [](auto fun) { + const auto start = std::chrono::high_resolution_clock::now(); + fun(); + const auto diff = std::chrono::high_resolution_clock::now() - start; + std::cout << "Time: " << std::fixed << std::setprecision(6) << diff.count() << " ns\n"; + }; + + std::vector vec(1'000'000); + std::iota(begin(vec), end(vec), 1); + benchmark([&]() { for (auto el : vec) { pow(el, 13); } }); + benchmark([&]() { for (auto el : vec) { pow2(el, 13); } }); + // Time: 59839100 ns + // Time: 79786800 ns +} +``` + +___ + + +There is more! + +```C++ +int Nwd(int a, int b) { + while (b != 0) [[likely]] { a = std::exchange(b, a % b); } + return a; +} + +int Nwd2(int a, int b) { + while (b != 0) { a = std::exchange(b, a % b); } + return a; +} + +int main() { + auto benchmark = [](auto fun) { + const auto start = std::chrono::high_resolution_clock::now(); + fun(); + const auto diff = std::chrono::high_resolution_clock::now() - start; + std::cout << "Time: " << std::fixed << std::setprecision(6) << diff.count() << " ns\n"; + }; + + std::vector vec(1'000'000); + std::iota(begin(vec), end(vec), 1); + benchmark([&](){ for (auto el : vec) { Nwd(1'000'000, el); } }); + benchmark([&](){ for (auto el : vec) { Nwd2(1'000'000, el); } }); + // Time: 140909100 ns + // Time: 182572100 ns +} +``` + +___ + + +## Ok ok, but what happens when I already use optimization flag? + +```C++ +int main() { + auto benchmark = [](auto fun) { + const auto start = std::chrono::high_resolution_clock::now(); + fun(); + const auto diff = std::chrono::high_resolution_clock::now() - start; + std::cout << "Time: " << std::fixed << std::setprecision(6) << diff.count() << " ns\n"; + }; + + std::vector vec(1'000'000); + std::iota(begin(vec), end(vec), 1); + int res = 0; + benchmark([&](){ for (auto el : vec) { res += Nwd(1'000'000, el); } }); // Time: 88765100 ns + benchmark([&](){ for (auto el : vec) { res += Nwd2(1'000'000, el); } }); // Time: 82797600 ns + benchmark([&]() { for (auto el : vec) { res += pow(el, 13); } }); // Time: 6002300 ns + benchmark([&]() { for (auto el : vec) { res += pow2(el, 13); } }); // Time: 8012500 ns + + return res; +} +``` + +Wait what?!. When we use -O3 optimization flag we got worse output for [[likely]]. It depends on various things, sometimes code run faster sometimes not, but generally, you can't charm the compiler with optimization, but sometimes you can help :) + + +___ + + +Use it when it is worth it, and the compiler could have a problem with manual optimization. For instance in 99.99% during response validation, an error occurs when there is no `result` filed, other cases happen mainly when someone implements wrong behavior and this is eliminated during tests. Ofc you still can always write more predictable if statement at the beginning :) And this is even better option in my opinion. + +```C++ +bool validate(const std::string& str) { + constexpr char kResult[] = "result:"; + + if (str.empty()) [[unlikely]] { + return false; + } else if (str.size() > 30) [[unlikely]] { + return false; + } else if (str.front() != '{') [[unlikely]] { + return false; + } else if (str.back() != '}') [[unlikely]] { + return false; + } else if (std::all_of(std::cbegin(str), std::cend(str), [](const char c) { return !std::isalnum(c); })) [[unlikely]] { + return false; + } else if (std::search(std::cbegin(str), std::cend(str), std::cbegin(kResult), std::cend(kResult)) == + std::cend(str)) [[likely]] { + return false; + } + + return true; +} + +bool validate2(const std::string& str) { + constexpr char kResult[] = "result:"; + + if (str.empty()) { + return false; + } else if (str.size() > 30) { + return false; + } else if (str.front() != '{') { + return false; + } else if (str.back() != '}') { + return false; + } else if (std::all_of(std::cbegin(str), std::cend(str), [](const char c) { return !std::isalnum(c); })) { + return false; + } else if (std::search(std::cbegin(str), std::cend(str), std::cbegin(kResult), std::cend(kResult)) == + std::cend(str)) { + return false; + } + + return true; +} + +int main() { + auto benchmark = [](auto fun) { + const auto start = std::chrono::high_resolution_clock::now(); + fun(); + const auto diff = std::chrono::high_resolution_clock::now() - start; + std::cout << "Time: " << std::fixed << std::setprecision(6) << diff.count() << " ns\n"; + }; + + int wrong = 0; + std::vector vec(1'000'000, "{result:12345}"); + benchmark([&]() { + wrong += std::count_if(std::cbegin(vec), std::cend(vec), [](const auto& str) { return validate(str); }); + }); + benchmark([&]() { + wrong += std::count_if(std::cbegin(vec), std::cend(vec), [](const auto& str) { return validate2(str); }); + }); + // Time: 293222100 ns + // Time: 376011000 ns + // + // With 03 + // Time: 14437300 ns + // Time: 21943400 ns + + return wrong; +} +``` + + +___ + + +## no_unique_address + +Allows this data member to be overlapped with other non-static data members or base class subobjects of its class. Generally, we can use it when we have an empty filed in the structure, and we don't want to lost 1 byte to store it. + +```C++ +struct Empty {}; + +struct Filed { + int val_; + double val2_; + Empty empty_; +}; + +struct Filed2 { + int val_; + double val2_; + [[no_unique_address]] Empty empty_; +}; + +int main() { + static_assert(sizeof(Empty) >= 1); + std::cout << "sizeof(Filed): " << sizeof(Filed) << '\n'; // 24 + std::cout << "sizeof(Filed): " << sizeof(Filed2) << '\n'; // 16 +} +``` + + +___ + + +## pack-expansion in lmabdas + +Since C++20 we can easily move all arguments to lambda. Before C++20 we can do this only for one object, but now it works for packages also. + +```C++ +auto postponeTask(auto&& fun, auto&&... args) { + return [f = std::move(fun), ... pack = std::move(args)]() { + return f(pack...); + }; +} + +int main() { + auto task = postponeTask([](const std::string& str, int num) { + std::cout << str << " | " << num << '\n'; + }, std::string("Ala ma kota"), 42); + + task(); +} +``` +___ + + +If you don't have C++20 (but you have C++17) you can still use the trick with the `std::tuple` with `std::apply` method. + +```C++ +template +auto postponeTask(Fun fun, Args... args) { + return [fun = std::move(fun), tup = std::make_tuple(std::move(args)...)]() -> decltype(auto) { + return std::apply([fun = std::move(fun)](auto const&... args) -> decltype(auto) { + return fun(args...); + }, tup); + }; +} +int main() { + auto task = postponeTask([](const std::string& str, int num) { + std::cout << str << " | " << num << '\n'; + }, std::string("Ala ma kota"), 42); + + task(); +} +``` + +___ + + +## template syntax for lambdas + +Ok, but what if I want to perfect forward arguments, instead of moving them? Since C++20 you can use template syntax! + +```C++ +int main() { + auto benchmark = [](auto&& fun, Args... args) { + const auto now = std::chrono::system_clock::now(); + const auto res = std::move(fun)(std::forward(args)...); + const auto then = std::chrono::system_clock::now(); + std::cout << "res: " << res << " | time: " << (then - now).count() << " ns\n"; + }; + + benchmark([](int count, int init) -> long long { + std::vector vec(count); + std::iota(begin(vec), end(vec), init); + return std::accumulate(begin(vec), end(vec), 0); + }, 1'000'000, 50); +} +``` + +___ + + +## uniform erasure + +Ok let's do sth easier! How many times have you written sth like this :)? + +```C++ +std::vector vec {1,2,3,4,5,6}; +vec.erase(std::remove_if(begin(vec), end(vec), [](auto num){ return num & 1; }), vec.end()); +``` + + +`std::remove` only prepares a vector to actually remove, but in the end, we need to erasure these values. Yes, this is why a lot of ppl hate C++, always complications. For instance we can write sth like this: + + +```C++ +std::map map {{"One", 1}, {"Two", 2}, {"Three", 3}}; +map.erase("One"); + +std::list list {"Ala", "ma", "kota"}; +list.remove("Ala"); +``` + + +In the case of a list, there is a member function `remove`, which actually removes an element! But for the map, we have only `erase`, which also takes a key as a value and removes an element. 3 containers and 3 different behavior. Definitely, newcomers won't like this. The funniest part is that list has `remove_if` method, but the map doesn't have `erase_if` ;) + + +___ + + +Since C++20 erasing elements is finally unified! We have two options, `erase` or `erase_if`. Unfortunately, in C++ there is always an exception to the rule. `std::map` and `std::set` (and their hash versions) don't have `std::erase` overload, because they already have specialized members functions. + +```C++ + std::vector vec {1,2,3,4,5,6}; + std::erase(vec, 4); + std::erase_if(vec, [](auto num){ return num & 1; }); + + std::map map {{"One", 1}, {"Two", 2}, {"Three", 3}}; + map.erase("One"); // There is no std::erase() for map :/ + std::erase_if(map, [](const auto& pair){ return pair.second == 2; }); // But there is std::erase_if + + std::list list {"Ala", "ma", "kota"}; + std::erase(list, "ma"); + std::erase_if(list, [](const auto& str){ return str.length() == 3; }); + + std::unordered_set set{1,2,3,4,5,6}; + set.erase(4); + std::erase_if(set, [](auto num){ return num & 1; }); +``` + + +___ + + +## source_loaction + +Since C++20 we got a nice functionality to perform easy and efficient logging. + +```C++ +void log(const std::string_view message, + const std::source_location location = + std::source_location::current()) +{ + std::cout << "file: " + << location.file_name() << "(" + << location.line() << ":" + << location.column() << ") `" + << location.function_name() << "`: " + << message << '\n'; +} + +template void fun(T x) +{ + log(x); +} + +int main(int, char*[]) +{ + log("Hello world!"); + fun("Hello C++20!"); +} +``` + +```bash +file: prog.cc(24:8) `int main(int, char**)`: Hello world! +file: prog.cc(19:8) `void fun(T) [with T = const char*]`: Hello C++20! +``` + + +___ + + +It's easy to rebuild a little this solution and create own logger: + +```C++ +enum LogType {INF, WRN, ERR}; + +struct Logger { + Logger(LogType logType, std::source_location location = std::source_location::current()): + logType_{logType}, + location_{location} {} + + Logger& operator<<(std::string_view message) { + const auto time = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()); + std::ostringstream os; + os << "[" << toString(logType_) << "]" + << "(" << std::put_time(std::localtime(&time), "%Y-%m-%d %X") << "): " + << location_.file_name() << "(" + << location_.line() << ":" + << location_.column() << ") `" + << location_.function_name() << "`: " + << message << '\n'; + file_ << os.str() << std::flush; + + return *this; + } + +private: + std::string_view toString(LogType logType) { + switch (logType) { + case INF: return "INFO"; + case WRN: return "WARNING"; + case ERR: return "ERROR"; + default: return "UNKNOWN!"; + } + } + + LogType logType_; + std::source_location location_; + static std::ofstream file_; +}; + +std::ofstream Logger::file_("log.txt"); +``` + +___ + + +Ok now is time to log sth + +```C++ +int main() { + Logger(INF) << "Hello!" << "And Hi" << "And Dzien dobry!"; + Logger(WRN) << "Ojej!"; + Logger(ERR) << "Critical!!!" << "UPS!" << "Bad bad!"; +} +``` + +And in file `log.txt` we got: + + +```C++ +[INFO](2022-05-22 14:24:47): prog.cc(55:15) `int main()`: Hello! +[INFO](2022-05-22 14:24:47): prog.cc(55:15) `int main()`: And Hi +[INFO](2022-05-22 14:24:47): prog.cc(55:15) `int main()`: And Dzien dobry! +[WARNING](2022-05-22 14:24:47): prog.cc(56:15) `int main()`: Ojej! +[ERROR](2022-05-22 14:24:47): prog.cc(57:15) `int main()`: Critical!!! +[ERROR](2022-05-22 14:24:47): prog.cc(57:15) `int main()`: UPS! +[ERROR](2022-05-22 14:24:47): prog.cc(57:15) `int main()`: Bad bad! +``` + + + +___ + + +# bit operations + +There is a new header `` which allows performing many valuable operations on bits. All functions are declared as constexpr, so there is a big chance that everything will be evaluated at compile time! Finally, you don't need to write an ugly macro. Let's start with the most important one. + +`std::endian` indicates the endianness of all scalar types: + +- If all scalar types are little-endian, std::endian::native equals std::endian::little +- If all scalar types are big-endian, std::endian::native equals std::endian::big + +Corner case platforms are also supported: + + +- If all scalar types have sizeof equal to 1, endianness does not matter and all three values, std::endian::little, std::endian::big, and std::endian::native are the same. +- If the platform uses mixed endian, std::endian::native equals neither std::endian::big nor std::endian::little. + +```C++ +int main() { + + if constexpr (std::endian::native == std::endian::big) + std::cout << "big-endian\n"; + else if constexpr (std::endian::native == std::endian::little) + std::cout << "little-endian\n"; + else std::cout << "mixed-endian\n"; + // Output: little-endian +} +``` + + +___ + + +For me very usefull is also `popcount`, and all `countX_Y` function, where`X` could be `l` - left, `r` - right, and `Y` could be `zero` or `one`: + +```C++ +int main() { + // counts the number of 1 bits in an unsigned integer + std::cout << std::popcount(0b1010101010101u) << '\n'; // 7 + + // counts the number of consecutive 1 bits, starting from the most significant bit + std::cout << std::countl_one(std::numeric_limits::max()) << '\n'; // 8 + + // counts the number of consecutive 0 bits, starting from the most significant bit + std::cout << std::countl_zero(0b111000011111u) << '\n'; // 20 because this is uint32_t + + // counts the number of consecutive 1 bits, starting from the least significant bit + std::cout << std::countr_one(0b111000011111u) << '\n'; // 5 + + // counts the number of consecutive 0 bits, starting from the least significant bit + std::cout << std::countr_zero(0b111000011100u) << '\n'; // 2 +} +``` + + +___ + + +Sometimes in the algorithm, we need to know the closest power of 2 for a given number. + +```C++ +int main() { + for (uint8_t i = 0 ; i < 16 ; ++i) { + std::cout << "num: " << std::bitset(i) + << " | bit_width: " << +std::bit_width(i) + << " | power of 2: " << std::has_single_bit(i) + << " | floor: " << +std::bit_floor(i) + << " | ceil: " << +std::bit_ceil(i) << '\n'; + } +} +``` +```bash +num: 00000000 | bit_width: 0 | power of 2: 0 | floor: 0 | ceil: 1 +num: 00000001 | bit_width: 1 | power of 2: 1 | floor: 1 | ceil: 1 +num: 00000010 | bit_width: 2 | power of 2: 1 | floor: 2 | ceil: 2 +num: 00000011 | bit_width: 2 | power of 2: 0 | floor: 2 | ceil: 4 +num: 00000100 | bit_width: 3 | power of 2: 1 | floor: 4 | ceil: 4 +num: 00000101 | bit_width: 3 | power of 2: 0 | floor: 4 | ceil: 8 +num: 00000110 | bit_width: 3 | power of 2: 0 | floor: 4 | ceil: 8 +num: 00000111 | bit_width: 3 | power of 2: 0 | floor: 4 | ceil: 8 +num: 00001000 | bit_width: 4 | power of 2: 1 | floor: 8 | ceil: 8 +num: 00001001 | bit_width: 4 | power of 2: 0 | floor: 8 | ceil: 16 +num: 00001010 | bit_width: 4 | power of 2: 0 | floor: 8 | ceil: 16 +num: 00001011 | bit_width: 4 | power of 2: 0 | floor: 8 | ceil: 16 +num: 00001100 | bit_width: 4 | power of 2: 0 | floor: 8 | ceil: 16 +num: 00001101 | bit_width: 4 | power of 2: 0 | floor: 8 | ceil: 16 +num: 00001110 | bit_width: 4 | power of 2: 0 | floor: 8 | ceil: 16 +num: 00001111 | bit_width: 4 | power of 2: 0 | floor: 8 | ceil: 16 +``` + + +___ + + +There is also a rotation `left` /` right`. Standard `c ++ 23` introduced also` byteswap` to convert variables from little endian to big endian and vice versa. + +```C++ +uint16_t num = 0b1111001100111001; +std::cout << "num: " << std::bitset<16>(num) << "\n\n"; +for (uint8_t i = 0 ; i < 16 ; ++i) { + std::cout << "rotr: " << std::bitset<16>(std::rotr(num, i)) + << " | rotl: " << std::bitset<16>(std::rotl(num, i)) + << '\n'; +} +``` + +```bash +num: 1111001100111001 + +rotr: 1111001100111001 | rotl: 1111001100111001 +rotr: 1111100110011100 | rotl: 1110011001110011 +rotr: 0111110011001110 | rotl: 1100110011100111 +rotr: 0011111001100111 | rotl: 1001100111001111 +rotr: 1001111100110011 | rotl: 0011001110011111 +rotr: 1100111110011001 | rotl: 0110011100111110 +rotr: 1110011111001100 | rotl: 1100111001111100 +rotr: 0111001111100110 | rotl: 1001110011111001 +rotr: 0011100111110011 | rotl: 0011100111110011 +rotr: 1001110011111001 | rotl: 0111001111100110 +rotr: 1100111001111100 | rotl: 1110011111001100 +rotr: 0110011100111110 | rotl: 1100111110011001 +rotr: 0011001110011111 | rotl: 1001111100110011 +rotr: 1001100111001111 | rotl: 0011111001100111 +rotr: 1100110011100111 | rotl: 0111110011001110 +rotr: 1110011001110011 | rotl: 1111100110011100 +``` + + +___ + + +## format your string like in printf + +The main problem with `std::cout` is a problem with easy formatting (I know streams are also inefficient, but this is not a point right now). For instance: + +```C++ +int main() { + for (uint8_t i = 0 ; i < 16 ; ++i) { + std::cout << "num: " << std::bitset(i) + << " | bit_width: " << +std::bit_width(i) + << " | power of 2: " << std::has_single_bit(i) + << " | floor: " << +std::bit_floor(i) + << " | ceil: " << +std::bit_ceil(i) << '\n'; + } +} +``` + +With `` library now we can write: + + +```C++ +for (uint8_t i = 0; i < 16; ++i) { + std::cout << std::format("num: {} | bit_width: {} | power of 2: {} | floor: {} | ceil {}\n", + std::bitset(i).to_string(), + std::bit_width(i), + std::has_single_bit(i), + std::bit_floor(i), + std::bit_ceil(i)); +} +``` + + +___ + + +On day `25.05.2022` the newest `gcc 13` didn't support the library ``. Fortunately `clang 15` already supports it! `` library is very powerful, we can easily create any format we want and pass any values we need: + +```C++ +void raw_write_to_log(std::string_view users_fmt, std::format_args&& args) { + constinit static int line{}; + std::clog << std::format("{:04} : ", line++) << std::vformat(users_fmt, args) << '\n'; +} + +template +constexpr void log(Args&&... args) { + // Generate formatting string "{} "... + std::array braces{}; + constexpr const char c[] = "{} "; + for (auto i{0u}; i != braces.size() - 1; ++i) { + braces[i] = c[i % 3]; + } + braces.back() = '\0'; + + raw_write_to_log(braces.data(), std::make_format_args(std::forward(args)...)); +} + +int main() +{ + std::string str{"Printable"}; + log("You", "Can", "Pass", "Any", "Number", "Of", "Arguments"); + log("Everything", "Which", "Can", "Be", str); + log(1, 4.5, 1234); +} +``` + +```bash +0000 : You Can Pass Any Number Of Arguments +0001 : Everything Which Can Be Printable +0002 : 1 4.5 1234 +``` + + +___ + + +## Limitations + +We need to wait to specify how we should specify custom object formatting. Currently on cppreference we can see an example, but looking very ugly and don't compile on `clang 15`. + +```C++ +#include +#include + +// A wrapper for type T +template +struct Box { + T value; +}; + +// The wrapper Box can be formatted using the format specification of the wrapped value +template +struct std::formatter, CharT> : std::formatter { + // parse() is inherited from the base class + + // Define format() by calling the base class implementation with the wrapped value + template + auto format(Box t, FormatContext& fc) const { + return std::formatter::format(t.value, fc); + } +}; + +int main() { + Box v = { 42 }; + std::cout << std::format("{:#x}", v); +} +``` + + +___ + + +But to make you more interested in this library check out more possibilities: + +```C++ +int main() +{ + std::string buffer; + + std::format_to( + std::back_inserter(buffer), + "Hello, C++{}!\n", // formater + "20", // args + "More args, make no error :)"); + + std::cout << buffer << '\n'; +} +``` + + +```bash +Hello, C++20! +``` + + diff --git a/AdvancedCppV2/Presentation/moder_cpp_intro.md b/AdvancedCppV2/Presentation/moder_cpp_intro.md new file mode 100644 index 0000000..9b31245 --- /dev/null +++ b/AdvancedCppV2/Presentation/moder_cpp_intro.md @@ -0,0 +1,39 @@ +# Timeline of C++ (1) + + +* C++98: + * Templates + * I/O streams + * String + * STL containers, iterators, algorithms +* C++11: + * Smart pointers + * Move semantic + * Lambda expressions + * Unified initialization + * Auto deduction + * Constexpr + * Multithreading and new model of memory + * Regular expressions + * Hash tables +___ + + +## Timeline of C++ (2) + +* C++14: + * Generic lambda + * Reader-write lock +* C++17: + * Parallel algorithms + * Filesystem library + * Fold expression + * constexpr if + * Structural binding + * any/ optional/ variant +* C++20: + * Modules + * Concepts + * Ranges + * Coroutines + * Other small features :) \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/recap.md b/AdvancedCppV2/Presentation/recap.md new file mode 100644 index 0000000..38cd39b --- /dev/null +++ b/AdvancedCppV2/Presentation/recap.md @@ -0,0 +1,8 @@ + + +# Recap + +___ + +## What do you remember from today's session? + diff --git a/AdvancedCppV2/Presentation/smart_pointers_auto_ptr.md b/AdvancedCppV2/Presentation/smart_pointers_auto_ptr.md new file mode 100644 index 0000000..b3fcf84 --- /dev/null +++ b/AdvancedCppV2/Presentation/smart_pointers_auto_ptr.md @@ -0,0 +1,10 @@ + + +## `std::auto_ptr<>` - something to forget + +* C++98 provided std::auto_ptr<> +* Few fixes in C++03 +* Yet still it’s easy to use incorrectly… +* Deprecated since C++11 +* Removed since C++17 +* Do not use it, use std::unique_ptr<> instead diff --git a/AdvancedCppV2/Presentation/smart_pointers_best_practices.md b/AdvancedCppV2/Presentation/smart_pointers_best_practices.md new file mode 100644 index 0000000..427c097 --- /dev/null +++ b/AdvancedCppV2/Presentation/smart_pointers_best_practices.md @@ -0,0 +1,196 @@ + + +# Best practices + +___ + +## Best practices + +* Rule of 0, Rule of 5 +* Avoid explicit new +* Use std::make_shared() / std::make_unique() +* Avoid copying std::shared_ptr<> when this is not neccessary. +* Use references instead of pointers (as argument to function) +* Almost always use unique_ptr +* Use shared_ptr ONLY when you need to share ownership of object. + +___ + +## Rule of 0, Rule of 5 + +### Rule of 5 + +* If you need to implement one of those functions: + * destructor + * copy constructor + * copy assignment operator + * move constructor + * move assignment operator +* It probably means that you should implement them all, because you have manual resources management. + +### Rule of 0 + +* If you use RAII wrappers on resources, you don’t need to implement any of Rule of 5 functions. + +___ + +## Avoid explicit `new` + +* Smart pointers eliminate the need to use delete explicitly +* To be symmetrical, do not use new as well +* Allocate using: + * std::make_unique() + * std::make_shared() +* use new only when you need to create ptr with custom deleter + +___ + + + +### Use `std::make_shared()` / `std::make_unique()` + +* What is a problem here? + +```cpp +struct MyData { int value; }; +using Ptr = std::shared_ptr; +void sink(Ptr oldData, Ptr newData); + +void use(void) { + sink(Ptr{new MyData{41}}, Ptr{new MyData{42}}); +} +``` + + +* Hint: this version is not problematic + +```cpp +struct MyData { int value; }; +using Ptr = std::shared_ptr; +void sink(Ptr oldData, Ptr newData); + +void use(void) { + Ptr oldData{new MyData{41}}; + Ptr newData{new MyData{42}}; + sink(std::move(oldData), std::move(newData)); +} +``` + + +___ + +### Allocation deconstructed + +`auto p = new MyData(10);` means: + +* allocate sizeof(MyData) bytes +* run MyData constructor +* assign address of allocated memory to p + +Order of evaluation of any part of any expression, including order of evaluation of function arguments is **unspecified**. The compiler can evaluate operands and other subexpressions in any order, and may choose another order when the same expression is evaluated again. There is no concept of left-to-right or right-to-left evaluation in C++. This is not a problem since C++17 due to the changes in the evaluation order of function arguments. Specifically, each argument to a function is required to fully execute before evaluation of other arguments. + + + +___ + + +### Unspecified order of evaluation + +* How about two such operations (before C++17)? + +| first operation (A) | second operation (B) | +| :-------------------------------------------- | :-------------------------------------------- | +| (1) allocate `sizeof(MyData)` bytes | (1) allocate `sizeof(MyData)` bytes | +| (2) run `MyData` constructor | (2) run `MyData` constructor | +| (3) assign address of allocated memory to `p` | (3) assign address of allocated memory to `p` | + +* Unspecified order of evaluation means that order can be for example: + * A1, A2, B1, B2, A3, B3 +* What if B2 throws an exception? + +___ + +### Use `std::make_shared()` / `std::make_unique()` + +* std::make_shared() / std::make_unique() resolves this problem + +```cpp +struct MyData{ int value; }; +using Ptr = std::shared_ptr; +void sink(Ptr oldData, Ptr newData); + +void use() { + sink(std::make_shared(41), std::make_shared(42)); +} +``` + + +* Fixes previous bug +* Does not repeat a constructed type +* Does not use explicit new +* Optimizes memory usage (only for std::make_shared()) + +___ + +## Copying `std::shared_ptr<>` + +```cpp +void foo(std::shared_ptr p); + +void bar(std::shared_ptr p) { + foo(p); +} +``` + +* requires counters incrementing / decrementing +* atomics / locks are not free +* will call destructors + +##### Can be better? + + +___ + +## Copying `std::shared_ptr<>` + +```cpp +void foo(const std::shared_ptr & p); + +void bar(const std::shared_ptr & p) { + foo(p); +} +``` + +* as fast as pointer passing +* no extra operations +* not safe in multithreaded applications + +___ + +### Use references instead of pointers + +* What is the difference between a pointer and a reference? + * reference cannot be empty + * reference, once assigned cannot point to anything else +* Priorities of usage (if possible): + * (const) T& + * std::unique_ptr<T> + * std::shared_ptr<T> + * T* + +___ + +## Exercise: List + +Take a look at `List.cpp` file, where simple (and buggy) single-linked list is implemented. + +* `pushFront` method adds a new `Node` at the begining of the list. +* `findByValue` method iterates over the list and returns the first Node with matching `value` or `nullptr`. + +1. Compile and run List application +2. Fix memory leaks without introducing smart pointers +3. Fix memory leaks with smart pointers. What kind of pointers needs to be applied and why? +4. Add function to add a node at the end of the list (try to do this with time complexity O(1)) +5. Add function to delete node with provided value. + + \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/smart_pointers_efficiency.md b/AdvancedCppV2/Presentation/smart_pointers_efficiency.md new file mode 100644 index 0000000..17240ad --- /dev/null +++ b/AdvancedCppV2/Presentation/smart_pointers_efficiency.md @@ -0,0 +1,181 @@ + + +# Efficiency + +___ + +## Raw pointer + +```cpp +#include +#include + +struct Data { + char tab_[42]; +}; + +int main(void) { + constexpr unsigned size = 10u * 1000u * 1000u; + std::vector v; + v.reserve(size); + for (unsigned i = 0; i < size; ++i) { + auto p = new Data; + v.push_back(std::move(p)); + } + for (auto p: v) + delete p; +} +``` + +___ + +## Unique pointer + +```cpp +#include +#include + +struct Data { + char tab_[42]; +}; + +int main(void) { + constexpr unsigned size = 10u * 1000u * 1000u; + std::vector> v; + v.reserve(size); + for (unsigned i = 0; i < size; ++i) { + std::unique_ptr p{new Data}; + v.push_back(std::move(p)); + } +} +``` + +___ + +## Shared pointer + +```cpp +#include +#include + +struct Data { + char tab_[42]; +}; + +int main(void) { + constexpr unsigned size = 10u * 1000u * 1000u; + std::vector> v; + v.reserve(size); + for (unsigned i = 0; i < size; ++i) { + std::shared_ptr p{new Data}; + v.push_back(std::move(p)); + } +} +``` + +___ + +## Shared pointer – `make_shared` + +```cpp +#include +#include + +struct Data { + char tab_[42]; +}; + +int main(void) { + constexpr unsigned size = 10u * 1000u * 1000u; + std::vector> v; + v.reserve(size); + for (unsigned i = 0; i < size; ++i) { + auto p = std::make_shared(); + v.push_back(std::move(p)); + } +} +``` + +___ + +## Weak pointer + +```cpp +#include +#include + +struct Data { + char tab_[42]; +}; + +int main(void) { + constexpr unsigned size = 10u * 1000u * 1000u; + std::vector> vs; + std::vector> vw; + vs.reserve(size); + vw.reserve(size); + for (unsigned i = 0; i < size; ++i) { + std::shared_ptr p{new Data}; + std::weak_ptr w{p}; + vs.push_back(std::move(p)); + vw.push_back(std::move(w)); + } +} +``` + +___ + +## Measurements + +* gcc-4.8.2 +* compilation with –std=c++11 –O3 –DNDEBUG +* measuring with: + * time (real) + * htop (mem) + * valgrind (allocations count) + +___ + +## Results + +| test name | time [s] | allocations | memory [MB] | +|:--------------:|:--------:|:-----------:|:-----------:| +| raw pointer | 0.54 | 10 000 001 | 686 | +| unique pointer | 0.56 | 10 000 001 | 686 | +| shared pointer | 1.00 | 20 000 001 | 1072 | +| make shared | 0.76 | 10 000 001 | 914 | +| weak pointer | 1.28 | 20 000 002 | 1222 | + +___ + +## Conclusions + +* RAII + * acquire resource in constructor + * release resource in destructor +* Rule of 5, Rule of 0 +* Smart pointers: + * std::unique_ptr – primary choice, no overhead, can convert to std::shared_ptr + * std::shared_ptr – introduces memory and runtime overhead + * std::weak_ptr – breaking cycles, can convert to/from std::shared_ptr +* Create smart pointers with std::make_shared() and std::make_unique() +* Raw pointer should mean „access only” (no ownership) +* Use reference instead of pointers if possible + +___ + +## Post-work + +* Transform the list from List.cpp into double-linked list. You should implement: + * inserting Nodes at the beginning of the list + * searching elements in reverse + * Apply proper smart pointers for the reverse direction. +* Implement your own unique_ptr. Requirements: + * Templatized (should hold a pointer to a template type) + * RAII (acquire in constructor, release in destructor) + * Copying not allowed + * Moving allowed + * Member functions: operator*(), operator->(), get(), release(), reset() +* Read one of these articles on move semantics: + * Semantyka przenoszenia (in Polish) + * Move semantics and rvalue references in C++11 (in English) diff --git a/AdvancedCppV2/Presentation/smart_pointers_implementation_details.md b/AdvancedCppV2/Presentation/smart_pointers_implementation_details.md new file mode 100644 index 0000000..6f6274e --- /dev/null +++ b/AdvancedCppV2/Presentation/smart_pointers_implementation_details.md @@ -0,0 +1,122 @@ + + +# Implementation details + +___ + +### Implementation details – `std::unique_ptr<>` + +* Just a holding wrapper +* Holds an object pointer +* Constructor copies a pointer +* Call proper delete in destructor +* No copying +* Moving means: + * Copying original pointer to a new object + * Setting source pointer to nullptr + +___ + +### Implementation details – `std::shared_ptr<>` + +sharedptr2 + +* Holds an object pointer +* Holds 2 reference counters: + * shared pointers count + * weak pointers count +* Destructor: + * decrements shared-refs + * deletes user data when shared-refs == 0 + * deletes reference counters when shared-refs == 0 and weak-refs == 0 +* Extra space for a deleter + +___ + +### Implementation details – `std::shared_ptr<>` + +* Copying means: + * Copying pointers to the target + * Incrementing shared-refs + +sharedptr3 + +* Moving means: + * Copying pointers to the target + * Setting source pointers to nullptr + +sharedptr4 + +___ + +### Implementation details – `std::weak_ptr<>` + +* Holds an object pointer +* Holds 2 reference counters: + * shared pointers count + * weak pointers count +* Destructor: + * decrements weak-refs + * deletes reference counters when shared-refs == 0 and weak-refs == 0 + +sharedptr5 + +___ + +### Implementation details – `std::weak_ptr<>` + +* Copying means: + * Copying pointers to the target + * Incrementing weak-refs + +sharedptr6 + +* Moving means: + * Copying pointers to the target + * Setting source pointers to nullptr + +sharedptr7 + +___ + +### `std::weak_ptr<>` + `std::shared_ptr<>` + +* Having a shared pointer and a weak pointer + +sharedptr8 + +* After removing the shared pointer + +sharedptr9 + +___ + +## Making a `std::shared_ptr<>` + + + +
+
+ + +* std::shared_ptr<Data> p{new Data}; + * Perform two allocations: one for control block and second for data + * Before C++17 can make a problem with ordering of operations + * When all shared_ptr will be deleted but there is some weak_ptr allocated memory for data can be freed. + +sharedptr10 +
+ +
+ + +* auto p = std::make_shared<Data>(); + * Less memory (most likely) + * Only one allocation + * Cache-friendly + * When all shared_ptr will be deleted but there is some weak_ptr allocated memory for data cannot be freed + +sharedptr11 + +
+
\ No newline at end of file diff --git a/AdvancedCppV2/Presentation/smart_pointers_shared_ptr.md b/AdvancedCppV2/Presentation/smart_pointers_shared_ptr.md new file mode 100644 index 0000000..61bae62 --- /dev/null +++ b/AdvancedCppV2/Presentation/smart_pointers_shared_ptr.md @@ -0,0 +1,189 @@ + + +# `std::shared_ptr<>` + +___ + +### `std::shared_ptr<>` + +* one object == multiple owners +* last referrer destroys the object +* copying allowed +* moving allowed +* can use custom deleter +* can use custom allocator +* has a control block == impact on size of pointer end efficiency + +shared pointers + +___ + + +### `std::shared_ptr<>` usage (1) + +* Copying and moving is allowed + +
+
+ +```cpp +std::shared_ptr source(); +void sink(std::shared_ptr ptr); + +void simpleUsage() { + source(); + sink(source()); + auto ptr = source(); + sink(ptr); + sink(std::move(ptr)); + auto p1 = source(); + auto p2 = p1; + p2 = std::move(p1); + p1 = p2; + p1 = std::move(p2); +} + +``` + +
+ +
+ +```cpp +std::shared_ptr source(); +void sink(std::shared_ptr ptr); + +void collections() { + std::vector> v; + + v.push_back(source()); + + auto tmp = source(); + v.push_back(tmp); + v.push_back(std::move(tmp)); + + sink(v[0]); + sink(std::move(v[0])); +} +``` + +
+
+ +___ + + +### `std::shared_ptr<>` usage (2) + +```cpp +#include +#include +#include + +class Gadget {}; +std::map> gadgets; + +void foo() { + std::shared_ptr p1{new Gadget()}; // reference counter = 1 + { + auto p2 = p1; // copy (reference counter == 2) + gadgets.insert(make_pair("mp3", p2)); // copy (reference counter == 3) + p2->use(); + } // destruction of p2, reference counter = 2 +} // destruction of p1, reference counter = 1 + +int main() { + foo(); + gadgets.clear(); // reference counter = 0 - gadget is removed +} +``` +___ + +### Custom deleter + +* Don't change a type of shared_ptr because data is stored in control block +* Don't change a size of shared_ptr because data is stored in control block +* You can have a collection of shared_ptr which has different deleter + +
+
+ +```C++ +class Foo {}; + +void deleter1(Foo* const foo) { + std::cout << "Deleter1\n"; + delete foo; +} + +int main() { + std::vector> vec; + std::shared_ptr ptr1(new Foo(), deleter1); + vec.push_back(std::move(ptr1)); + + auto deleter2 = [](Foo* const foo) { + std::cout << "Deleter2\n"; + delete foo; + }; + vec.emplace_back(new Foo(), deleter2); +} +``` + +
+ +
+ +```Bash +Deleter1 +Deleter2 +``` + +
+ + +___ + +### Problem with shared_ptr + +Let's look at a short story: + +* Programmer1 : Why do you pass shared_ptr by copy? Passing by copy increment counter (slower then unique or raw ptr) +* Programmer2: Ok, so I will pass it by const reference instead! And avoid unnecessary incrementation of the control block. +* Programmer1: So if you don't need to copy it (don't need to have 2 owners) why don't use unique_ptr? +* Reassume: shared_ptr should be use only when given resource need to have few owners (very rare situation). In other case use always unique_ptr! + +___ + +### `std::shared_ptr<>` cyclic dependencies + +* What happens here? + +
+
+ +```cpp +#include + +struct Node { + std::shared_ptr child; + std::shared_ptr parent; +}; + +int main () { + auto root = std::shared_ptr(new Node); + auto child = std::shared_ptr(new Node); + + root->child = child; + child->parent = root; +} + + +``` + +
+ +
+ Memory leak! + kot + +
diff --git a/AdvancedCppV2/Presentation/smart_pointers_smart_ptrs.md b/AdvancedCppV2/Presentation/smart_pointers_smart_ptrs.md new file mode 100644 index 0000000..f8a2f5f --- /dev/null +++ b/AdvancedCppV2/Presentation/smart_pointers_smart_ptrs.md @@ -0,0 +1,21 @@ + + +# Smart pointers + +___ + +## Smart pointers + +* A smart pointer manages a pointer to a heap allocated object + + * Deletes the pointed-to object at the right time + * operator->() calls managed object methods + * operator.() calls smart pointer methods + * smart pointer to a base class can hold a pointer to a derived class + +* STL smart pointers: + + * std::unique_ptr<> + * std::shared_ptr<> + * std::weak_ptr<> + * std::auto_ptr<> - removed in C++17 diff --git a/AdvancedCppV2/Presentation/smart_pointers_summary.md b/AdvancedCppV2/Presentation/smart_pointers_summary.md new file mode 100644 index 0000000..8e7c232 --- /dev/null +++ b/AdvancedCppV2/Presentation/smart_pointers_summary.md @@ -0,0 +1,18 @@ + + +# Smart pointers - summary + +* #include <memory> +* std::unique_ptr<> for exclusive ownership +* std::shared_ptr<> for shared ownership +* std::weak_ptr<> for observation and breaking cycles + +___ + +## Exercise: ResourceFactory + +1. Compile and run ResourceFactory application +2. Put comments in places where you can spot some problems +3. How to remove elements from the collection (vector<Resource*> resources)? +4. Check memory leaks +5. Fix problems diff --git a/AdvancedCppV2/Presentation/smart_pointers_unique_ptr.md b/AdvancedCppV2/Presentation/smart_pointers_unique_ptr.md new file mode 100644 index 0000000..03a8590 --- /dev/null +++ b/AdvancedCppV2/Presentation/smart_pointers_unique_ptr.md @@ -0,0 +1,434 @@ + + +# `std::unique_ptr<>` + +___ + +## `std::unique_ptr<>` + +
+ +* one object == one owner +* destructor destroys the object +* copying not allowed +* moving allowed +* can use custom deleter +* 0 cost class -> no impact on efficiency + +
+ +unique pointers + +___ + +### `std::unique_ptr<>` usage + +* Old style approach vs modern approach + +
+
+ +```cpp +#include // old-style approach + + +struct Msg { + int getValue() { return 42; } +}; + +Msg* createMsg() { + return new Msg{}; +} + +int main() { + auto msg = createMsg(); + + std::cout << msg->getValue(); + delete msg; +} +``` + + +
+ +
+ +```cpp +#include // modern approach +#include + +struct Msg { + int getValue() { return 42; } +}; + +std::unique_ptr createMsg() { + return std::make_unique(); +} + +int main() { + // unique ownership + auto msg = createMsg(); + + std::cout << msg->getValue(); +} + +``` + + +
+ +___ + +### `std::unique_ptr<>` usage + +* Copying is not allowed +* Moving is allowed + +
+
+ +```cpp +std::unique_ptr source(void); +void sink(std::unique_ptr ptr); + +void simpleUsage() { + source(); + sink(source()); + auto ptr = source(); + // sink(ptr); // compilation error + sink(std::move(ptr)); + auto p1 = source(); + // auto p2 = p1; // compilation error + auto p2 = std::move(p1); + // p1 = p2; // compilation error + p1 = std::move(p2); +} +``` + + +
+ +
+ +```cpp +std::unique_ptr source(void); +void sink(std::unique_ptr ptr); + +void collections() { + std::vector> v; + v.push_back(source()); + + auto tmp = source(); + // v.push_back(tmp); // compilation error + v.push_back(std::move(tmp)); + + // sink(v[0]); // compilation error + sink(std::move(v[0])); + +} +``` + + +
+ +___ + +#### `std::unique_ptr<>` problem with containers + +
+ + What is wrong with this part of code? + + +```cpp +std::unique_ptr source(void); +void sink(std::unique_ptr ptr); + +void collections() { + std::vector> v; + v.push_back(source()); + + auto tmp = source(); + v.push_back(std::move(tmp)); + + sink(std::move(v[0])); + std::cout << *(v[0]) << '\n'; +} +``` + +
+ +___ + +#### `std::unique_ptr<>` cooperation with raw pointers + +```cpp +#include + +void legacyInterface(int*) {} +void deleteResource(int* p) { delete p; } +void referenceInterface(int&) {} + +int main() { + auto ptr = std::make_unique(5); + legacyInterface(ptr.get()); + deleteResource(ptr.release()); + ptr.reset(new int{10}); + referenceInterface(*ptr); + ptr.reset(); // ptr is a nullptr + return 0; +} +``` + +* get() – returns a raw pointer without releasing the ownership +* release() – returns a raw pointer and release the ownership +* reset() – replaces the manager object +* operator*() – dereferences pointer to the managed object + +___ + +### `std::make_unique()` + +```cpp +#include + +struct Msg { + Msg(int i) : value(i) {} + int value; +}; + +int main() { + auto ptr1 = std::unique_ptr(new Msg{5}); + auto ptr2 = std::make_unique(5); // equivalent to above + return 0; +} +``` + +`std::make_unique()` is a factory function that produce `unique_ptrs` + + +* added in C++14 for symmetrical operations on unique and shared pointers +* avoids bare new expression + +___ + +### `std::unique_ptr` + +```cpp +struct MyData {}; + +void processPointer(MyData* md) {} +void processElement(MyData md) {} + +using Array = std::unique_ptr; + +void use(void) +{ + Array tab{new MyData[42]}; + processPointer(tab.get()); + processElement(tab[13]); +} +``` + +* During destruction + * std::unique_ptr<T> calls delete + * std::unique_ptr<T[]> calls delete[] +* std::unique_ptr<T[]> has additional operator[] for accessing array element +* Usually std::vector<T> is a better choice + +___ + +## Exercise: Resource + +1. Compile and run Resource application +2. Check memory leaks under valgrind +3. Fix memory leaks with a proper usage of delete operator +4. Refactor the solution to use std::unique_ptr<> +5. Use std::make_unique() + +___ + +## Exercise: Converter + +1. Compile and run Converter application and check memory leaks under valgrind +2. Fix code using std::unique_ptr and std::make_unique +3. Find other issues and fix them (use good practise etc...) + +___ + +## Why virtual D'tor is so important (1)? + +```C++ +class Resource { +public: + explicit Resource(const std::string& str): str_(str) {} + + const std::string& str() const { + return str_; + } + +private: + std::string str_; +}; + +class Converter { +public: + Converter() { + std::cout << "C'tor converter\n"; + } + + virtual ~Converter() { + std::cout << "D'tor converter\n"; + } + + virtual void Convert(const std::unique_ptr& resource) const = 0; +}; + +class CurlyBracketConverter : public Converter { +public: + CurlyBracketConverter() { + std::cout << "C'tor CurlyBracketConverter\n"; + } + + ~CurlyBracketConverter() override { + std::cout << "D'tor CurlyBracketConverter\n"; + } + + void Convert(const std::unique_ptr& resource) const override { + std::cout << "{" << resource->str() << "}\n"; + } +}; + +class SquareBracketConverter : public Converter { +public: + SquareBracketConverter() { + std::cout << "C'tor SquareBracketConverter\n"; + } + + ~SquareBracketConverter() override { + std::cout << "D'tor SquareBracketConverter\n"; + } + + virtual void Convert(const std::unique_ptr& resource) const override{ + std::cout << "[" << resource->str() << "]\n"; + } +}; + +class Printer { +public: + explicit Printer(std::unique_ptr converter): converter_(std::move(converter)) {} + + void Print(const std::unique_ptr& resource) const { + converter_->Convert(resource); + } + +private: + std::unique_ptr converter_; +}; + +int main() { + auto resource = std::make_unique("Ala has a cat"); + Printer printer(std::make_unique()); + Printer printer2(std::make_unique()); + + return 0; +} +``` + + +___ + +## Why virtual D'tor is so important (2)? + +```C++ +C'tor converter +C'tor SquareBracketConverter +C'tor converter +C'tor CurlyBracketConverter +D'tor converter +D'tor converter +``` + + + + +Try to add virtual to your D'tor and check result + + + +```C++ +C'tor converter +C'tor SquareBracketConverter +C'tor converter +C'tor CurlyBracketConverter +D'tor CurlyBracketConverter +D'tor converter +D'tor SquareBracketConverter +D'tor converter +``` + + +___ + +## Custom Deleter + +* When there is a special way to delete object +* Type of unique_ptr change! + +
+
+ +```C++ +class Foo { +public: + Foo() { + std::cout << "Foo C'tor\n"; + } + + void print() const { + std::cout << "Foo!\n"; + } + +private: + // For some reason, we allow only this function to delete object + friend void deleteMe(Foo* const foo); + + ~Foo() { + std::cout << "Foo D'tor\n"; + } +}; + +void deleteMe(Foo* const foo) { + std::cout << "Delete object Foo!\n"; + delete foo; +} + +int main() { + // Can't use make unique, need to use unique_ptr C'tor + // unique_ptr(pointer __p, const deleter_type& __d) noexcept + std::unique_ptr ptr(new Foo, deleteMe); + ptr->print(); + + return 0; +} + +``` + + + +
+ +
+ + Output + +```C++ +Foo C'tor +Foo! +Delete object Foo! +Foo D'tor +``` + + + +
diff --git a/AdvancedCppV2/Presentation/smart_pointers_weak_ptr.md b/AdvancedCppV2/Presentation/smart_pointers_weak_ptr.md new file mode 100644 index 0000000..c50be6d --- /dev/null +++ b/AdvancedCppV2/Presentation/smart_pointers_weak_ptr.md @@ -0,0 +1,213 @@ + + +## Cyclic dependencies + +cyclic dependencies + +* Cyclic dependency is where you have class A with self-referencing member. +* Cyclic dependency is where you have two classes A and B where A has a reference to B which has a reference to A. +* How to fix it? + +___ + +### `std::weak_ptr<>` to the rescue + +* does not own an object +* observes only +* must be converted to std::shared_ptr<> to access the object +* can be created only from a std::shared_ptr<> + +
+ weak pointers +
+ +___ + +### `std::weak_ptr<>` usage + +
+
+ +```cpp +#include +#include + +struct Msg { int value; }; + +void checkMe(const std::weak_ptr & wp) { + std::shared_ptr p = wp.lock(); + if (p) + std::cout << p->value << '\n'; + else + std::cout << "Expired\n"; +} + +int main() { + auto sp = std::shared_ptr{new Msg{10}}; + auto wp = std::weak_ptr{sp}; + checkMe(wp); + sp.reset(); + checkMe(wp); +} +``` + +
+ +
+ +```bash +> ./a.out +10 +Expired +``` + +
+
+ +___ + +### `std::shared_ptr<>` cyclic dependencies + +* How to solve this problem? + +```cpp +#include + +struct Node { + std::shared_ptr child; + std::shared_ptr parent; +}; + +int main () { + auto root = std::shared_ptr(new Node); + auto child = std::shared_ptr(new Node); + root->child = child; + child->parent = root; +} +``` + +___ + +### Breaking cycle - solution + +* Use `std::weak_ptr` in one direction + +```cpp +#include +struct Node { + std::shared_ptr child; + std::weak_ptr parent; +}; + +int main () { + auto root = std::shared_ptr(new Node); + auto child = std::shared_ptr(new Node); + root->child = child; + child->parent = root; +} +``` + + +
+ +==148== All heap blocks were freed -- no leaks are possible + +
+ +___ + +### `std::weak_ptr<>` real life usage (1) + +```C++ +struct Image { + /* data */ +}; + +class Screen; + +class Downloader { +public: + void downloadImage(const std::string& url, std::function callback, std::weak_ptr weak_ptr) { + std::cout << "Start downloading!" << std::endl; + std::thread(&Downloader::download, this, url, callback, weak_ptr).detach(); + } + +private: + void download(const std::string& url, std::function callback, std::weak_ptr weak_ptr) { + // Simulate download process + std::cout << "Download in progress!" << std::endl; + std::this_thread::sleep_for(std::chrono::seconds(3)); + std::cout << "Download Finished!" << std::endl; + if (auto lock = weak_ptr.lock()) { + callback(Image{}); + } else { + std::cout << "Screen object expired!\n"; + } + } +}; + +class Screen : public std::enable_shared_from_this { +public: + Screen(Downloader* downloader) + : downloader_(downloader) {} + + void printImage(const std::string& url) { + std::cout << "Waiting for image download!" << std::endl; + downloader_->downloadImage( + url, [&](Image image) { onImageDownloaded(std::move(image)); }, weak_from_this()); + } + +private: + void onImageDownloaded(Image&& image) { + // Do some action on image + std::cout << "Got Image!\n"; + } + + Downloader* downloader_; +}; + +int main() { + auto downloader = std::make_unique(); + auto screen = std::make_shared(downloader.get()); + + screen->printImage("www.image.com/sth/special.img"); + std::this_thread::sleep_for(std::chrono::seconds(2)); + screen = nullptr; + std::this_thread::sleep_for(std::chrono::seconds(2)); +} +``` + + +___ + +### `std::weak_ptr<>` real life usage (2) + +Output: + +```Bash +Waiting for image download! +Start downloading! +Download in progress! +Download Finished! +Screen object expired! +``` + +When we delete line screen = nullptr; + +```Bash +Waiting for image download! +Start downloading! +Download in progress! +Download Finished! +Got Image! +``` + +___ + + +### `std::weak_ptr<>` real life usage (3) + +Use std::weak_ptr when: + +* Need to observe a lifetime of the object, without having an ownership +* Want to break cyclic dependencies diff --git a/AdvancedCppV2/Presentation/template_deduction_guides.md b/AdvancedCppV2/Presentation/template_deduction_guides.md new file mode 100644 index 0000000..6912c37 --- /dev/null +++ b/AdvancedCppV2/Presentation/template_deduction_guides.md @@ -0,0 +1,373 @@ +# Deduction guides +___ + +## Template deduction + +There are three different scenarios during template type deduction: + +* Handle by reference or pointer: T& or T* with or without const or volatile +* Handle by value: T with or without const or volatile +* Handle by universal reference: T&& can't use const or volatile here. + +___ + +## Pass by reference + +

+template <typename T>
+void function(T& arg) {}
+
+template <typename T>
+void constFunction(const T& arg) {}
+
+void foo(int) {}
+
+int main() {
+    int a = 4;
+    const int b = 5;
+    const int& c = a;
+    int arr[] = {1,2};
+
+    function(a);        // T -> int | arg -> int&
+    function(5);        // Not compile!
+    function(b);        // T -> const int | arg -> const int&
+    function(c);        // T -> const int | arg -> const int&
+    function(foo);      // T -> void(int) | arg -> void(&)(int)
+    function(arr);      // T -> int[2] | arg -> int(&)[2]
+    constFunction(a);   // T -> int | arg -> const int&
+    constFunction(5);   // T -> int | arg -> const int&
+    constFunction(b);   // T -> int | arg -> const int&
+    constFunction(c);   // T -> int | arg -> const int&
+    constFunction(foo); // T -> void(int) | arg -> const void(&)(int)
+    constFunction(arr); // T -> int[2] | arg -> const int(&)[2]
+}
+
+ + +___ + +## Pass by value + +

+template <typename T>
+void function(T arg) {}
+
+void foo(int) {}
+
+int main() {
+    int a = 4;
+    const int b = 5;
+    const int& c = a;
+    int arr[] = {1,2};
+    char name[] = "Mateusz";
+    const char* str = name;
+    const char* const ptr = name;
+
+    function(a);        // T -> int | arg -> int
+    function(5);        // T -> int | arg -> int
+    function(b);        // T -> int | arg -> int
+    function(c);        // T -> int | arg -> int
+    function(foo);      // T -> void(*)(int) | arg -> void(*)(int))
+    function(arr);      // T -> int* | arg -> int*
+    function(str);      // T -> const char* | arg -> const char*
+    function(ptr);      // T -> const char* | arg -> const char*
+}
+
+ + +___ + +## Pass by universal reference + +

+template <typename T>
+void function(T&& arg) {}
+
+void foo(int) {}
+
+int main() {
+    int a = 4;
+    const int b = 5;
+    const int& c = a;
+    int arr[] = {1,2};
+    char name[] = "Mateusz";
+    const char cstr[] = "Mateusz";
+    const char* str = name;
+    const char* const ptr = name;
+
+    function(a);              // T -> int& | arg -> int&
+    function(5);              // T -> int | arg -> int&&
+    function(b);              // T -> const int& | arg -> const int&
+    function(c);              // T -> const int& | arg -> const int&
+    function(foo);            // T -> void(&)(int) | arg -> void(&)(int))
+    function(arr);            // T -> int(&)[2] | arg -> int(&)[2]
+    function(cstr);           // T -> const char(&)[8] | arg -> const char(&)[8]
+    function(str);            // T -> const char(*&) | arg -> const char(*&)
+    function(std::move(str)); // T -> const char(*) | arg -> const char(*&&)
+    function(ptr);            // T -> const char(*const &) | arg -> const char(*const &)
+}
+
+ + +___ + +## Pass by universal reference - special treatment + +When template parameter gets argument by universal reference, deducted type `T` doesn't remove the reference for `l-values`. +In other words: `r-values` are treated as they are passed by value, but `l-values` are treated as a reference. + +This is partially true. Scott Meyers said this is an abstraction layer. The real truth is reference collapsing: + +* T& & -> T& +* T& && -> T& +* T&& & -> T& +* T&& && -> T&& + +___ + +## auto deduction + +`auto` deduction works similar to templates, but there is one exception, which you should remember from previous slajds. + +
+
+ +```C++ +auto val = 5; +``` +is equal to + +```C++ +template +void foo(T val); +``` +
+ +
+ +```C++ +const auto& val = 5; +``` +is equal to + +```C++ +template +void foo(const T& val); +``` +
+ +
+ +```C++ +auto&& val = 5; +``` +is equal to + +```C++ +template +void foo(T&& val); +``` +
+ +
+___ + +## auto deduction - one exception + +```C++ +template +void foo(T t) {} + +auto val = {1, 2, 3, 4}; // std::initializer_list +foo({1, 2, 3, 4}); // deduction failed! +``` + +Need to explicity use `initializer_list` + + +```C++ +template +void foo(std::initializer_list t) {} + +auto val = {1, 2, 3, 4}; // std::initializer_list +foo({1, 2, 3, 4}); // std::initializer_list +``` + +___ + +## auto in generic lambda + +In generic lambda `auto` uses the same deduction rules like for templates not for `auto`! This happens because, lambda is struct, so generic lambda is a template structure. + +
+ +```C++ +auto lambda = [](auto&& first, const auto& second, auto third) {} +``` +is equal to + +```C++ +struct Lmabda { + template + auto operator()(X&& x, const Y& y, Z z) const { + + } +}; +``` +
+ + +___ + +## std::forward once more + +If we want to perfect forward some value in template you will write: + + +```C++ +template +void fun(T&& t) { + other(std::forward(t)); +} +``` + +But how to do this in lambda? We know that generic lambda is a teplate, but we don't have an access to `T`! + + +```C++ +auto lambda = [](auto&& t) { + other(std::forward(t)); +}; +``` + +___ + +## decltype + +Decltype return a type of variable, without removing `references` or `const`/ `volatile` qualifiers + +```C++ +int x = 5; +decltype(x) y; // int + +const int num = 20; +decltype(num) num2 = 30; // const int + +const int& ref = num; +decltype(ref) ref2 = x; // const int& + +const char name[] = "Mateusz"; +decltype(name) name2 = "Scott"; // const char[] + +decltype(foo) fun; // void fun(int, const string& + +auto pred = [](int num){ return num % 1 == 0; }; +decltype(pred(20)) val; // bool + +std::vector vec{1}; +decltype(vec.begin()) it; // std::vector::iterator +decltype(vec[0]) // int& +``` + + +___ + +## decltype - one problem + +What is wrong with this snippet of code? + +```C++ +void authorize() {} + +template +auto authorizeAndAccess(C& container, size_t index) { + authorize(); + return container[index]; +} + +int main() { + std::vector vec{1,2,3}; + authorizeAndAccess(vec, 2) = 10; + std::cout << vec[2] << '\n'; +} +``` + + +```C++ +error: lvalue required as left operand of assignment authorizeAndAccess(vec, 2) = 10; +``` + + +___ + +## decltype - partial solution + +The same result we can achieve by using `decltype(auto)`. + + +```C++ +void authorize() {} + +template +auto authorizeAndAccess(C& container, size_t index) -> decltype(container[index]) { + authorize(); + return container[index]; +} + +int main() { + std::vector vec{1,2,3}; + authorizeAndAccess(vec, 2) = 10; + std::cout << vec[2] << '\n'; +} +``` + + +___ + +## decltype - when solution make another trouble + +What is wrong now? + + +```C++ +void authorize() {} + +template +decltype(auto) authorizeAndAccess(C& container, size_t index) { + authorize(); + return container[index]; +} + +int main() { + const auto res = authorizeAndAccess(std::vector{5, 8, 12, 16}, 2); + std::cout << std::boolalpha << "res: " << res << '\n'; +} +``` + + +```C++ +cannot bind non-const lvalue reference of type ‘std::vector&’ to an rvalue of type ‘std::vector’ +const auto res = authorizeAndAccess(std::vector{5, 8, 12, 16}, 2); +``` + + + +___ + +## decltype - final fix + +```C++ +void authorize() {} + +template +decltype(auto) authorizeAndAccess(C&& container, size_t index) { + authorize(); + return std::forward(container)[index]; +} + +int main() { + const auto res = authorizeAndAccess(std::vector{5, 8, 12, 16}, 2); + std::cout << std::boolalpha << "res: " << res << '\n'; // will print 12 +} +``` + \ No newline at end of file diff --git a/AdvancedCppV2/Presentation/templates_basic.md b/AdvancedCppV2/Presentation/templates_basic.md new file mode 100644 index 0000000..ccb8f0a --- /dev/null +++ b/AdvancedCppV2/Presentation/templates_basic.md @@ -0,0 +1,257 @@ +# Template functions + +___ + +## Examples + +Let's assume that we have a function below: + +```c++ +int add(int first, int second) { + return first + second; +} +``` + +If we want to have a function that takes doubles as well, we need to write: + + +```c++ +double add(double first, double second) { + return first + second; +} +``` + + +And if we want a function that can take complex or any other numbers we would need to write: + + +```c++ +std::complex add(std::complex first, std::complex second) { + return first + second; +} +``` + + +You can clearly see that we have a code duplication here. + + +___ + +## Avoiding code duplication + +Instead of writing so many functions we can have only one - template function: + +```c++ +template +Type add(Type first, Type second) { + return first + second; +} +``` + + +Instead of `Type`, you can have any name you wish. Typically you will see just `T` as a typename, but it is better to have a longer name than only one character, especially, when there is more than only one template parameter. Now, you can use this function like this: + + +```c++ +auto resultI = add(4, 5); // resultI type is int +auto resultD = add(4.0, 5.0); // resultD type is double +auto resultC = add>({1, 2}, {2, 3}); // resultC type is std::complex +``` + + +You can play with the code [here](https://ideone.com/fork/NU0L8k) + + +___ + +## Function template type deduction + +There is a function template types deduction in C++. It means that you can skip part with angle braces `<>` and write previous example like this: + +```c++ +auto resultI = add(4, 5); // resultI type is int +auto resultD = add(4.0, 5.0); // resultD type is double +auto resultC = add({1, 2}, {2, 3}); // error, does not compile +``` + +`resultC` will not compile, because in this case compiler will not know what is the type of `{1, 2}` or `{2, 3}`. `std::initializer_list` can never be a result of parameter type deduction in templates. +In this case we have to type it explicitly: + + +```c++ +auto resultC = add(std::complex{1, 2}, std::complex{2, 3}); +``` + + +or + + +```c++ +auto resultC = add>({1, 2}, {2, 3}); +``` + + +___ + +## Exercise + +Write a function that creates `std::complex` number from two provided numbers. If the types of numbers are different, it should create `std::complex` of the first parameter. Usage: + +```c++ +std::complex a = makeComplex(4, 5); // both ints +std::complex b = makeComplex(3.0, 2.0); // both doubles +std::complex c = makeComplex(1, 5.0); // int, double -> takes int +``` + +___ + + +## Multiple template parameters + +The compiler itself deduce which template function parameters should be used. However, if you write the code like this: + +```c++ +auto resultC = add(4, 5.0); // error: int + double +``` + + +We will have a compilation error. The compiler will not deduce parameter, because our template function takes only one type, and both parameters have to be of the same type. We can fix this by adding a new version of the template of add function. + + +```c++ +template +TypeA add(TypeA first, TypeB second) { + return first + second; +} +``` + + +Now the code should work: + + +```c++ +auto resultC = add(4, 5.0); // resultC type is int +``` + + +The output type is the same as the first argument type because it was defined in the template function above as `TypeA`. + + +___ + +## `typeid` + +Generally, you can freely use template types inside functions. For example, you can create new variables of provided types: + +```cpp +#include + +template +void showType() { + T value; + std::cout << "Type: " << typeid(value).name() << std::endl; +} +``` + + +You can use `typeid().name()` to print variable type. You need to include the `typeinfo` header for this. The output is implementation-defined. + + +You can also notice, that instead of the `typename` keyword, you can also use the `class` keyword. They are interchangeable. + + +```cpp +template == template != template +``` + + +___ + + +## No matching function + +In previous case if you want to use `showType()` function without providing explicit templates, the code will not compile: + +```c++ +int main() { + showType(); + return 0; +} +``` + +```bash +prog.cpp: In function ‘int main()’: +prog.cpp:15:12: error: no matching function for call to showType()’ + showType(); + ^ +prog.cpp:7:6: note: candidate: template void showType() + void showType() + ^~~~~~~~~ +prog.cpp:7:6: note: template argument deduction/substitution failed: +prog.cpp:15:12: note: couldn't deduce template parameter ‘T’ + showType(); +``` + +___ + +## Template function parameter type deduction + +The compiler cannot deduce parameters, because the functions do not take any parameters. You need to provide the type explicitly: + +
+ +
+ +```c++ +int main() { + showType(); + return 0; +} +``` + +
+ +or + +
+ +```c++ +int main() { + showType>(); + return 0; +} +``` + +
+ +
+ + +You can also play with the code [here](https://ideone.com/fork/oZZybw) + + +___ + +## STL example + +```cpp +template +InputIt find_if(InputIt first, InputIt last, UnaryPredicate p) +{ + for(; first != last; ++first) { + if(p(*first)) { + return first; + } + } + return last; +} +``` + +```cpp +std::vector> v{{-3, 1}, {2, 3}, {4, -5}}; +auto it = std::find_if(begin(v), end(v), [](auto& e){ return e.first == 2; }); +if(it != std::end(v)) { + /* ... */ +} +``` + diff --git a/AdvancedCppV2/Presentation/templates_class.md b/AdvancedCppV2/Presentation/templates_class.md new file mode 100644 index 0000000..9967fb4 --- /dev/null +++ b/AdvancedCppV2/Presentation/templates_class.md @@ -0,0 +1,99 @@ +# Template classes + +___ + +## Template class example + +Template classes are as well used to avoid code duplication, as to create so-called meta-programs within them. Here is an example of a simple template class and its usage: + + +```c++ +#include + +template +class SomeClass { +public: + T getValue() { return value; } +private: + T value = {}; + U* ptr = nullptr; +}; + +int main() { + SomeClass sc; + std::cout << sc.getValue() << std::endl; + return 0; +} +``` + + +___ + +## Template classes in STL + +Template classes are heavily used in STL. For example `std::vector`, `std::list` and other containers are template classes and if you want to use them, you do it like here: + + +```c++ +std::vector v = {1, 2, 3}; +std::list l{'c', 'd', 'b'}; +``` + + +___ + + +## Template type deduction for classes (C++17) + +Template types can also be automatically deduced by the compiler thanks to... template functions. + + +The compiler uses class constructors to achieve that. + + +From C++17 you can write a code like this: + + +```c++ +std::vector v = {1, 2, 3}; // std::vector is deduced +std::list l{'c', 'd', 'b'}; // std::list is deduced +``` + + +That's not gonna work: + + +```cpp +// std::vector v1; // compilation error, vector of what? +// std::vector v2(10) // compilation error, 10 elements of what? +// clang error: no viable constructor or deduction guide for deduction of +// template arguments of 'vector' +// g++ error: class template argument deduction failed: +// no matching function for call to 'vector()' +``` + + +___ + +## Exercise - `VectorMap` + +Write a template class `VectorMap` that represents an over-engineered `std::map`. + +Inside, it should hold 2 `std::vectors` of the same size, each with different types. The first vector should hold keys, the other one values. + +Elements at the same position in both vectors should create a pair like `1` and `'c'` below. + +```c++ +VectorMap map; +map.insert(1, 'c'); +map[1] = 'e'; // replaces value under 1 +std::cout << map[1]; // prints 'e' +map.at(2); // throw std::out_of_range +``` + +Implement the mentioned above `insert()`, `operator[]`, `at()` methods. + +Do not bother about duplicated keys for now. +You can also try to implement additional methods from the `std::map` interface 🙂 + +Use [cppreference](http://en.cppreference.com/w/cpp/container/map). diff --git a/AdvancedCppV2/Presentation/templates_knowledge_check.md b/AdvancedCppV2/Presentation/templates_knowledge_check.md new file mode 100644 index 0000000..cc22eb1 --- /dev/null +++ b/AdvancedCppV2/Presentation/templates_knowledge_check.md @@ -0,0 +1,95 @@ + + +# Templates +___ + +## Knowledge check + +### Template type deduction + +

+template <typename T>
+void copy(T arg) {}
+
+template <typename T>
+void reference(T& arg) {}
+
+template <typename T>
+void universal_reference(T&& arg) {}
+
+int main() {
+    int number = 4;
+    copy(number);       // int
+    copy(5);            // int
+    reference(number);  // int&
+    reference(5);       // candidate function [with T = int] not viable: expects an l-value for 1st argument
+    universal_reference(number);            // int&
+    universal_reference(std::move(number)); // int&&
+    universal_reference(5);                 // int&&
+}
+
+ +___ + +## Knowledge check + +```cpp +void foo(int && a); // r +void foo(int & a); // l + +int a = 5; +``` + +Which of above functions will be called by below snippets? + +* foo(4); + * r +* foo(a); + * l +* foo(std::move(a)); + * r +* foo(std::move(4)); + * r (move is redundant) + +___ + +## Knowledge check + +```cpp +template +void foo(T && a); // r + +template +void foo(T & a); // l + +int a = 5; +``` + +Which of above functions will be called by below snippets? + +* foo(4); + * r +* foo(a); + * l +* foo(std::move(a)); + * r + +___ + +## Knowledge check + +```cpp +template +void foo(T && a); // r + +int a = 5; +``` + +What will happen now? + +* foo(4); + * r +* foo(a); + * r +* foo(std::move(a)); + * r diff --git a/AdvancedCppV2/Presentation/templates_partial_spec.md b/AdvancedCppV2/Presentation/templates_partial_spec.md new file mode 100644 index 0000000..12ba203 --- /dev/null +++ b/AdvancedCppV2/Presentation/templates_partial_spec.md @@ -0,0 +1,66 @@ +# Partial specialization +___ + +## Template function partial specialization + +In C++ we cannot partially specialize functions. + +___ + + +## Template class partial specialization + +In C++ we can specialize classes partially. It means that we need to leave at least one template parameter. + +```cpp +// primary template +template +class A {}; + +// partial specialization with T1 = int +template +class A {}; + +// partial specialization with T1 = int and T2 = double +template +class A {}; + +// partial specialization with T1 = int and T3 = char +template +class A {}; + +// full specialization with T1 = T2 = double and T3 = int +template <> +class A {}; +``` + +___ + + +## Advanced partial specialization + +```cpp +template +class A {}; // primary template + +template +class A {}; // #1: partial specialization where T2 is a pointer to T1 + +template +class A {}; // #2: partial specialization where T1 is a pointer + +template +class A {}; // #3: partial specialization where T1 is int, I is double, + // and T2 is a pointer + +template +class A {}; // #4: partial specialization where T2 is a pointer +``` + +___ + +## Exercise + +Write a partial specialization of `VectorMap` for boolean keys. We can have only 2 values for boolean keys. There is no need to keep vectors inside. + +Implement properly all currently available functions. diff --git a/AdvancedCppV2/Presentation/templates_specjalization.md b/AdvancedCppV2/Presentation/templates_specjalization.md new file mode 100644 index 0000000..e80756c --- /dev/null +++ b/AdvancedCppV2/Presentation/templates_specjalization.md @@ -0,0 +1,146 @@ +# Specialization + +___ + + +## Function specialization + +If we want to have the same function name, but we want our code to behave differently for some types, we can create a specialization. + + +```cpp +//generic function +template +void print(T arg) { + std::cout << arg << '\n'; +} +``` + + +```cpp +// specialization for `T = double` +template <> +void print(double arg) { + std::cout << std::setprecision(10) << arg << '\n'; +} +``` + + +```cpp +// better: overload +void print(double arg) { + std::cout << std::setprecision(10) << arg << '\n'; +} +``` + + +Tip: do not use function specializations. Always prefer function overloads. + + +Template function specializations do not take part in overload resolution. Only the exact type match is considered. + + +Above specialization does not work for `float`. Overload does. + +___ + +## Class specialization + +A class can have not only different behaviour (different methods implementations) but also different layouts. You can have completely different fields and/or their values. + + +___ + + +## Specialization example #1 - methods + +```c++ +#include + +template // primary template +struct is_int { + bool get() const { return false; } +}; + +template<> // explicit specialization for T = int +struct is_int { + bool get() const { return true; } +}; + + +int main() { + is_int iic; + is_int iii; + std::cout << iic.get() << '\n'; // prints 0 (false) + std::cout << iii.get() << '\n'; // prints 1 (true) + return 0; +} +``` + + +___ + + +## Specialization example #2 - field values + +```c++ +#include + +template // primary template +struct is_int { + static constexpr bool value = false; +}; + +template<> // explicit specialization for T = int +struct is_int { + static constexpr bool value = true; +}; + + +int main() { + std::cout << is_int::value << '\n'; // prints 0 (false) + std::cout << is_int::value << '\n'; // prints 1 (true) + return 0; +} +``` + + +You can play with the code [here](https://ideone.com/fork/LEIx7e) + +___ + + +## Specialization example #3 - <type_traits> + +To achieve the last behavior, we can use `std::false_type` and `std::true_type`. The below code is equivalent to the one from the previous example. + +```c++ +#include +using namespace std; + +template // primary template +struct is_int : std::false_type +{}; + +template<> // explicit specialization for T = int +struct is_int : std::true_type +{}; + +int main() { + std::cout << is_int::value << std::endl; // prints 0 (false) + std::cout << is_int::value << std::endl; // prints 1 (true) + return 0; +} +``` + +The interactive version of this code is [here](https://ideone.com/fork/GaTh0B) + +___ + +### Exercise - `is_int_key` + +In `VectorMap` write a class constant `is_int_key` that holds a boolean value. It should be `true` when the key is `int` and `false` otherwise. + +Generally, it should do the same job as the `isIntKey()` method, but we want to have it available even without having an object. + +Take a look in the `` library for that. It should be useful 🙂 diff --git a/AdvancedCppV2/Presentation/templates_typetraits.md b/AdvancedCppV2/Presentation/templates_typetraits.md new file mode 100644 index 0000000..3ffba5d --- /dev/null +++ b/AdvancedCppV2/Presentation/templates_typetraits.md @@ -0,0 +1,66 @@ +# `` + +___ + +## Constraints + +`` library is used to examine type properties. It is usually used in templates to gain some knowledge about provided types. + + +We can for example constrain our templates to work only with some specific types. The common practice is using it together with `static_assert`. + + +```cpp +#include + +template +class Choice { + static_assert(std::is_enum::value, "You need to provide an enum"); + + E choice; +public: + Choice(E arg) { /* ... */ } +}; +``` + + +___ + +## [`` on cppreference](https://en.cppreference.com/w/cpp/types#Type_traits) + +___ + +## Advanced constraints + +* [SFINAE](https://en.cppreference.com/w/cpp/language/sfinae) +* [`constexpr if`](https://en.cppreference.com/w/cpp/language/if#Constexpr_if) +* [named requirements](https://en.cppreference.com/w/cpp/named_req) (C++20) +* [`concept`](https://en.cppreference.com/w/cpp/concepts) (C++20) + +```cpp +template +concept copy_constructible = + std::move_constructible && + std::constructible_from && std::convertible_to && + std::constructible_from && std::convertible_to && + std::constructible_from && std::convertible_to; +``` + + +___ + +## Exercise - `static_assert` + +Add a constraint to our `VectorMap`. + +Do not allow to create an object when `ValueType` does not have a default constructor. + +Use `static_assert` and proper trait from [``](https://en.cppreference.com/w/cpp/types#Type_traits) library. + +Check if it works properly. + +## Exercise - `isIntKey()` + +Write a function `isIntKey()` in `VectorMap`. It should return `true` when the KeyType is `int` and `false` otherwise. + +Check the [``](https://en.cppreference.com/w/cpp/types#Type_traits) library for some inspiration 🙂 diff --git a/AdvancedCppV2/Presentation/templates_variable.md b/AdvancedCppV2/Presentation/templates_variable.md new file mode 100644 index 0000000..68cbb2a --- /dev/null +++ b/AdvancedCppV2/Presentation/templates_variable.md @@ -0,0 +1,66 @@ +# Variable templates (C++17) +___ + +## Why? + +Eg. different precision + + +```cpp +template +constexpr T pi = T(3.1415926535897932385L); + +template +T circular_area(T r) { return pi * r * r; } +``` + + +But it is really rarely used. + + +___ + + +## Specialization example #2 - field values + +Remember this code? + + +```c++ [] +#include + +template // primary template +struct is_int { + static constexpr bool value = false; +}; + +template<> // explicit specialization for T = int +struct is_int { + static constexpr bool value = true; +}; + +template +constexpr bool is_int_v = is_int::value; + +int main() { + std::cout << is_int_v << '\n'; // prints 0 (false) + std::cout << is_int_v << '\n'; // prints 1 (true) + return 0; +} +``` + + +We mainly use template variables as helpers to class template field values. + + +___ + +Check out [`type_traits` on cppreference.com](https://en.cppreference.com/w/cpp/header/type_traits) + +Every trait has a corresponding helper variable template. + +___ + +## Exercise + +Write a variable template `is_int_key_v`. It should return a value of the `is_int_key` field in a given template type. diff --git a/AdvancedCppV2/README.md b/AdvancedCppV2/README.md new file mode 100644 index 0000000..d7e1e31 --- /dev/null +++ b/AdvancedCppV2/README.md @@ -0,0 +1,16 @@ +# AdvancedCpp + +## Run presentation + +in main directory: +- npm install +- npm start + +Run you browser on localhost. eg: http://localhost:8000/ + +## Navigation through presentation: + +- space -> next info +- arrow up -> next info +- arrow down -> prev info +- esc go to preview diff --git a/AdvancedCppV2/bower.json b/AdvancedCppV2/bower.json new file mode 100644 index 0000000..bc825ab --- /dev/null +++ b/AdvancedCppV2/bower.json @@ -0,0 +1,24 @@ +{ + "name": "reveal.js", + "version": "3.9.2", + "main": [ + "js/reveal.js", + "css/reveal.css" + ], + "homepage": "http://revealjs.com", + "license": "MIT", + "description": "The HTML Presentation Framework", + "authors": [ + "Hakim El Hattab " + ], + "repository": { + "type": "git", + "url": "git://github.com/hakimel/reveal.js.git" + }, + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test" + ] +} \ No newline at end of file diff --git a/AdvancedCppV2/css/print/paper.css b/AdvancedCppV2/css/print/paper.css new file mode 100644 index 0000000..27d19dd --- /dev/null +++ b/AdvancedCppV2/css/print/paper.css @@ -0,0 +1,203 @@ +/* Default Print Stylesheet Template + by Rob Glazebrook of CSSnewbie.com + Last Updated: June 4, 2008 + + Feel free (nay, compelled) to edit, append, and + manipulate this file as you see fit. */ + + +@media print { + + /* SECTION 1: Set default width, margin, float, and + background. This prevents elements from extending + beyond the edge of the printed page, and prevents + unnecessary background images from printing */ + html { + background: #fff; + width: auto; + height: auto; + overflow: visible; + } + body { + background: #fff; + font-size: 20pt; + width: auto; + height: auto; + border: 0; + margin: 0 5%; + padding: 0; + overflow: visible; + float: none !important; + } + + /* SECTION 2: Remove any elements not needed in print. + This would include navigation, ads, sidebars, etc. */ + .nestedarrow, + .controls, + .fork-reveal, + .share-reveal, + .state-background, + .reveal .progress, + .reveal .backgrounds, + .reveal .slide-number { + display: none !important; + } + + /* SECTION 3: Set body font face, size, and color. + Consider using a serif font for readability. */ + body, p, td, li, div { + font-size: 20pt!important; + font-family: Georgia, "Times New Roman", Times, serif !important; + color: #000; + } + + /* SECTION 4: Set heading font face, sizes, and color. + Differentiate your headings from your body text. + Perhaps use a large sans-serif for distinction. */ + h1,h2,h3,h4,h5,h6 { + color: #000!important; + height: auto; + line-height: normal; + font-family: Georgia, "Times New Roman", Times, serif !important; + text-shadow: 0 0 0 #000 !important; + text-align: left; + letter-spacing: normal; + } + /* Need to reduce the size of the fonts for printing */ + h1 { font-size: 28pt !important; } + h2 { font-size: 24pt !important; } + h3 { font-size: 22pt !important; } + h4 { font-size: 22pt !important; font-variant: small-caps; } + h5 { font-size: 21pt !important; } + h6 { font-size: 20pt !important; font-style: italic; } + + /* SECTION 5: Make hyperlinks more usable. + Ensure links are underlined, and consider appending + the URL to the end of the link for usability. */ + a:link, + a:visited { + color: #000 !important; + font-weight: bold; + text-decoration: underline; + } + /* + .reveal a:link:after, + .reveal a:visited:after { + content: " (" attr(href) ") "; + color: #222 !important; + font-size: 90%; + } + */ + + + /* SECTION 6: more reveal.js specific additions by @skypanther */ + ul, ol, div, p { + visibility: visible; + position: static; + width: auto; + height: auto; + display: block; + overflow: visible; + margin: 0; + text-align: left !important; + } + .reveal pre, + .reveal table { + margin-left: 0; + margin-right: 0; + } + .reveal pre code { + padding: 20px; + border: 1px solid #ddd; + } + .reveal blockquote { + margin: 20px 0; + } + .reveal .slides { + position: static !important; + width: auto !important; + height: auto !important; + + left: 0 !important; + top: 0 !important; + margin-left: 0 !important; + margin-top: 0 !important; + padding: 0 !important; + zoom: 1 !important; + + overflow: visible !important; + display: block !important; + + text-align: left !important; + -webkit-perspective: none; + -moz-perspective: none; + -ms-perspective: none; + perspective: none; + + -webkit-perspective-origin: 50% 50%; + -moz-perspective-origin: 50% 50%; + -ms-perspective-origin: 50% 50%; + perspective-origin: 50% 50%; + } + .reveal .slides section { + visibility: visible !important; + position: static !important; + width: auto !important; + height: auto !important; + display: block !important; + overflow: visible !important; + + left: 0 !important; + top: 0 !important; + margin-left: 0 !important; + margin-top: 0 !important; + padding: 60px 20px !important; + z-index: auto !important; + + opacity: 1 !important; + + page-break-after: always !important; + + -webkit-transform-style: flat !important; + -moz-transform-style: flat !important; + -ms-transform-style: flat !important; + transform-style: flat !important; + + -webkit-transform: none !important; + -moz-transform: none !important; + -ms-transform: none !important; + transform: none !important; + + -webkit-transition: none !important; + -moz-transition: none !important; + -ms-transition: none !important; + transition: none !important; + } + .reveal .slides section.stack { + padding: 0 !important; + } + .reveal section:last-of-type { + page-break-after: avoid !important; + } + .reveal section .fragment { + opacity: 1 !important; + visibility: visible !important; + + -webkit-transform: none !important; + -moz-transform: none !important; + -ms-transform: none !important; + transform: none !important; + } + .reveal section img { + display: block; + margin: 15px 0px; + background: rgba(255,255,255,1); + border: 1px solid #666; + box-shadow: none; + } + + .reveal section small { + font-size: 0.8em; + } + +} diff --git a/AdvancedCppV2/css/print/pdf.css b/AdvancedCppV2/css/print/pdf.css new file mode 100644 index 0000000..bf96ed1 --- /dev/null +++ b/AdvancedCppV2/css/print/pdf.css @@ -0,0 +1,165 @@ +/** + * This stylesheet is used to print reveal.js + * presentations to PDF. + * + * https://github.com/hakimel/reveal.js#pdf-export + */ + +* { + -webkit-print-color-adjust: exact; +} + +body { + margin: 0 auto !important; + border: 0; + padding: 0; + float: none !important; + overflow: visible; +} + +html { + width: 100%; + height: 100%; + overflow: visible; +} + +/* Remove any elements not needed in print. */ +.nestedarrow, +.reveal .controls, +.reveal .progress, +.reveal .playback, +.reveal.overview, +.fork-reveal, +.share-reveal, +.state-background { + display: none !important; +} + +h1, h2, h3, h4, h5, h6 { + text-shadow: 0 0 0 #000 !important; +} + +.reveal pre code { + overflow: hidden !important; + font-family: Courier, 'Courier New', monospace !important; +} + +ul, ol, div, p { + visibility: visible; + position: static; + width: auto; + height: auto; + display: block; + overflow: visible; + margin: auto; +} +.reveal { + width: auto !important; + height: auto !important; + overflow: hidden !important; +} +.reveal .slides { + position: static; + width: 100% !important; + height: auto !important; + zoom: 1 !important; + pointer-events: initial; + + left: auto; + top: auto; + margin: 0 !important; + padding: 0 !important; + + overflow: visible; + display: block; + + perspective: none; + perspective-origin: 50% 50%; +} + +.reveal .slides .pdf-page { + position: relative; + overflow: hidden; + z-index: 1; + + page-break-after: always; +} + +.reveal .slides section { + visibility: visible !important; + display: block !important; + position: absolute !important; + + margin: 0 !important; + padding: 0 !important; + box-sizing: border-box !important; + min-height: 1px; + + opacity: 1 !important; + + transform-style: flat !important; + transform: none !important; +} + +.reveal section.stack { + position: relative !important; + margin: 0 !important; + padding: 0 !important; + page-break-after: avoid !important; + height: auto !important; + min-height: auto !important; +} + +.reveal img { + box-shadow: none; +} + +.reveal .roll { + overflow: visible; + line-height: 1em; +} + +/* Slide backgrounds are placed inside of their slide when exporting to PDF */ +.reveal .slide-background { + display: block !important; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: auto !important; +} + +/* Display slide speaker notes when 'showNotes' is enabled */ +.reveal.show-notes { + max-width: none; + max-height: none; +} +.reveal .speaker-notes-pdf { + display: block; + width: 100%; + height: auto; + max-height: none; + top: auto; + right: auto; + bottom: auto; + left: auto; + z-index: 100; +} + +/* Layout option which makes notes appear on a separate page */ +.reveal .speaker-notes-pdf[data-layout="separate-page"] { + position: relative; + color: inherit; + background-color: transparent; + padding: 20px; + page-break-after: always; + border: 0; +} + +/* Display slide numbers when 'slideNumber' is enabled */ +.reveal .slide-number-pdf { + display: block; + position: absolute; + font-size: 14px; +} diff --git a/AdvancedCppV2/css/reset.css b/AdvancedCppV2/css/reset.css new file mode 100644 index 0000000..e238539 --- /dev/null +++ b/AdvancedCppV2/css/reset.css @@ -0,0 +1,30 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v4.0 | 20180602 + License: none (public domain) +*/ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +main, menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, main, menu, nav, section { + display: block; +} \ No newline at end of file diff --git a/AdvancedCppV2/css/reveal.css b/AdvancedCppV2/css/reveal.css new file mode 100644 index 0000000..b4bc4fd --- /dev/null +++ b/AdvancedCppV2/css/reveal.css @@ -0,0 +1,1606 @@ +/*! + * reveal.js + * http://revealjs.com + * MIT licensed + * + * Copyright (C) 2020 Hakim El Hattab, http://hakim.se + */ +/********************************************* + * GLOBAL STYLES + *********************************************/ +html { + width: 100%; + height: 100%; + height: 100vh; + height: calc( var(--vh, 1vh) * 100); + overflow: hidden; } + +body { + height: 100%; + overflow: hidden; + position: relative; + line-height: 1; + margin: 0; + background-color: #fff; + color: #000; } + +/********************************************* + * VIEW FRAGMENTS + *********************************************/ +.reveal .slides section .fragment { + opacity: 0; + visibility: hidden; + transition: all .2s ease; } + .reveal .slides section .fragment.visible { + opacity: 1; + visibility: inherit; } + +.reveal .slides section .fragment.grow { + opacity: 1; + visibility: inherit; } + .reveal .slides section .fragment.grow.visible { + -webkit-transform: scale(1.3); + transform: scale(1.3); } + +.reveal .slides section .fragment.shrink { + opacity: 1; + visibility: inherit; } + .reveal .slides section .fragment.shrink.visible { + -webkit-transform: scale(0.7); + transform: scale(0.7); } + +.reveal .slides section .fragment.zoom-in { + -webkit-transform: scale(0.1); + transform: scale(0.1); } + .reveal .slides section .fragment.zoom-in.visible { + -webkit-transform: none; + transform: none; } + +.reveal .slides section .fragment.fade-out { + opacity: 1; + visibility: inherit; } + .reveal .slides section .fragment.fade-out.visible { + opacity: 0; + visibility: hidden; } + +.reveal .slides section .fragment.semi-fade-out { + opacity: 1; + visibility: inherit; } + .reveal .slides section .fragment.semi-fade-out.visible { + opacity: 0.5; + visibility: inherit; } + +.reveal .slides section .fragment.strike { + opacity: 1; + visibility: inherit; } + .reveal .slides section .fragment.strike.visible { + text-decoration: line-through; } + +.reveal .slides section .fragment.fade-up { + -webkit-transform: translate(0, 40px); + transform: translate(0, 40px); } + .reveal .slides section .fragment.fade-up.visible { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); } + +.reveal .slides section .fragment.fade-down { + -webkit-transform: translate(0, -40px); + transform: translate(0, -40px); } + .reveal .slides section .fragment.fade-down.visible { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); } + +.reveal .slides section .fragment.fade-right { + -webkit-transform: translate(-40px, 0); + transform: translate(-40px, 0); } + .reveal .slides section .fragment.fade-right.visible { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); } + +.reveal .slides section .fragment.fade-left { + -webkit-transform: translate(40px, 0); + transform: translate(40px, 0); } + .reveal .slides section .fragment.fade-left.visible { + -webkit-transform: translate(0, 0); + transform: translate(0, 0); } + +.reveal .slides section .fragment.fade-in-then-out, +.reveal .slides section .fragment.current-visible { + opacity: 0; + visibility: hidden; } + .reveal .slides section .fragment.fade-in-then-out.current-fragment, + .reveal .slides section .fragment.current-visible.current-fragment { + opacity: 1; + visibility: inherit; } + +.reveal .slides section .fragment.fade-in-then-semi-out { + opacity: 0; + visibility: hidden; } + .reveal .slides section .fragment.fade-in-then-semi-out.visible { + opacity: 0.5; + visibility: inherit; } + .reveal .slides section .fragment.fade-in-then-semi-out.current-fragment { + opacity: 1; + visibility: inherit; } + +.reveal .slides section .fragment.highlight-red, +.reveal .slides section .fragment.highlight-current-red, +.reveal .slides section .fragment.highlight-green, +.reveal .slides section .fragment.highlight-current-green, +.reveal .slides section .fragment.highlight-blue, +.reveal .slides section .fragment.highlight-current-blue { + opacity: 1; + visibility: inherit; } + +.reveal .slides section .fragment.highlight-red.visible { + color: #ff2c2d; } + +.reveal .slides section .fragment.highlight-green.visible { + color: #216428; } + +.reveal .slides section .fragment.highlight-blue.visible { + color: #1b91ff; } + +.reveal .slides section .fragment.highlight-current-red.current-fragment { + color: #ff2c2d; } + +.reveal .slides section .fragment.highlight-current-green.current-fragment { + color: #17ff2e; } + +.reveal .slides section .fragment.highlight-current-blue.current-fragment { + color: #1b91ff; } + +/********************************************* + * DEFAULT ELEMENT STYLES + *********************************************/ +/* Fixes issue in Chrome where italic fonts did not appear when printing to PDF */ +.reveal:after { + content: ''; + font-style: italic; } + +.reveal iframe { + z-index: 1; } + +/** Prevents layering issues in certain browser/transition combinations */ +.reveal a { + position: relative; } + +.reveal .stretch { + max-width: none; + max-height: none; } + +.reveal pre.stretch code { + height: 100%; + max-height: 100%; + box-sizing: border-box; } + +/********************************************* + * CONTROLS + *********************************************/ +@-webkit-keyframes bounce-right { + 0%, 10%, 25%, 40%, 50% { + -webkit-transform: translateX(0); + transform: translateX(0); } + 20% { + -webkit-transform: translateX(10px); + transform: translateX(10px); } + 30% { + -webkit-transform: translateX(-5px); + transform: translateX(-5px); } } +@keyframes bounce-right { + 0%, 10%, 25%, 40%, 50% { + -webkit-transform: translateX(0); + transform: translateX(0); } + 20% { + -webkit-transform: translateX(10px); + transform: translateX(10px); } + 30% { + -webkit-transform: translateX(-5px); + transform: translateX(-5px); } } + +@-webkit-keyframes bounce-down { + 0%, 10%, 25%, 40%, 50% { + -webkit-transform: translateY(0); + transform: translateY(0); } + 20% { + -webkit-transform: translateY(10px); + transform: translateY(10px); } + 30% { + -webkit-transform: translateY(-5px); + transform: translateY(-5px); } } + +@keyframes bounce-down { + 0%, 10%, 25%, 40%, 50% { + -webkit-transform: translateY(0); + transform: translateY(0); } + 20% { + -webkit-transform: translateY(10px); + transform: translateY(10px); } + 30% { + -webkit-transform: translateY(-5px); + transform: translateY(-5px); } } + +.reveal .controls { + display: none; + position: absolute; + top: auto; + bottom: 12px; + right: 12px; + left: auto; + z-index: 11; + color: #000; + pointer-events: none; + font-size: 10px; } + .reveal .controls button { + position: absolute; + padding: 0; + background-color: transparent; + border: 0; + outline: 0; + cursor: pointer; + color: currentColor; + -webkit-transform: scale(0.9999); + transform: scale(0.9999); + transition: color 0.2s ease, opacity 0.2s ease, -webkit-transform 0.2s ease; + transition: color 0.2s ease, opacity 0.2s ease, transform 0.2s ease; + z-index: 2; + pointer-events: auto; + font-size: inherit; + visibility: hidden; + opacity: 0; + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } + .reveal .controls .controls-arrow:before, + .reveal .controls .controls-arrow:after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 2.6em; + height: 0.5em; + border-radius: 0.25em; + background-color: currentColor; + transition: all 0.15s ease, background-color 0.8s ease; + -webkit-transform-origin: 0.2em 50%; + transform-origin: 0.2em 50%; + will-change: transform; } + .reveal .controls .controls-arrow { + position: relative; + width: 3.6em; + height: 3.6em; } + .reveal .controls .controls-arrow:before { + -webkit-transform: translateX(0.5em) translateY(1.55em) rotate(45deg); + transform: translateX(0.5em) translateY(1.55em) rotate(45deg); } + .reveal .controls .controls-arrow:after { + -webkit-transform: translateX(0.5em) translateY(1.55em) rotate(-45deg); + transform: translateX(0.5em) translateY(1.55em) rotate(-45deg); } + .reveal .controls .controls-arrow:hover:before { + -webkit-transform: translateX(0.5em) translateY(1.55em) rotate(40deg); + transform: translateX(0.5em) translateY(1.55em) rotate(40deg); } + .reveal .controls .controls-arrow:hover:after { + -webkit-transform: translateX(0.5em) translateY(1.55em) rotate(-40deg); + transform: translateX(0.5em) translateY(1.55em) rotate(-40deg); } + .reveal .controls .controls-arrow:active:before { + -webkit-transform: translateX(0.5em) translateY(1.55em) rotate(36deg); + transform: translateX(0.5em) translateY(1.55em) rotate(36deg); } + .reveal .controls .controls-arrow:active:after { + -webkit-transform: translateX(0.5em) translateY(1.55em) rotate(-36deg); + transform: translateX(0.5em) translateY(1.55em) rotate(-36deg); } + .reveal .controls .navigate-left { + right: 6.4em; + bottom: 3.2em; + -webkit-transform: translateX(-10px); + transform: translateX(-10px); } + .reveal .controls .navigate-right { + right: 0; + bottom: 3.2em; + -webkit-transform: translateX(10px); + transform: translateX(10px); } + .reveal .controls .navigate-right .controls-arrow { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); } + .reveal .controls .navigate-right.highlight { + -webkit-animation: bounce-right 2s 50 both ease-out; + animation: bounce-right 2s 50 both ease-out; } + .reveal .controls .navigate-up { + right: 3.2em; + bottom: 6.4em; + -webkit-transform: translateY(-10px); + transform: translateY(-10px); } + .reveal .controls .navigate-up .controls-arrow { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); } + .reveal .controls .navigate-down { + right: 3.2em; + bottom: -1.4em; + padding-bottom: 1.4em; + -webkit-transform: translateY(10px); + transform: translateY(10px); } + .reveal .controls .navigate-down .controls-arrow { + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg); } + .reveal .controls .navigate-down.highlight { + -webkit-animation: bounce-down 2s 50 both ease-out; + animation: bounce-down 2s 50 both ease-out; } + .reveal .controls[data-controls-back-arrows="faded"] .navigate-left.enabled, + .reveal .controls[data-controls-back-arrows="faded"] .navigate-up.enabled { + opacity: 0.3; } + .reveal .controls[data-controls-back-arrows="faded"] .navigate-left.enabled:hover, + .reveal .controls[data-controls-back-arrows="faded"] .navigate-up.enabled:hover { + opacity: 1; } + .reveal .controls[data-controls-back-arrows="hidden"] .navigate-left.enabled, + .reveal .controls[data-controls-back-arrows="hidden"] .navigate-up.enabled { + opacity: 0; + visibility: hidden; } + .reveal .controls .enabled { + visibility: visible; + opacity: 0.9; + cursor: pointer; + -webkit-transform: none; + transform: none; } + .reveal .controls .enabled.fragmented { + opacity: 0.5; } + .reveal .controls .enabled:hover, + .reveal .controls .enabled.fragmented:hover { + opacity: 1; } + +.reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-up, +.reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-down { + display: none; } + +.reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-left, +.reveal:not(.has-vertical-slides) .controls .navigate-left { + bottom: 1.4em; + right: 5.5em; } + +.reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-right, +.reveal:not(.has-vertical-slides) .controls .navigate-right { + bottom: 1.4em; + right: 0.5em; } + +.reveal:not(.has-horizontal-slides) .controls .navigate-up { + right: 1.4em; + bottom: 5em; } + +.reveal:not(.has-horizontal-slides) .controls .navigate-down { + right: 1.4em; + bottom: 0.5em; } + +.reveal.has-dark-background .controls { + color: #fff; } + +.reveal.has-light-background .controls { + color: #000; } + +.reveal.no-hover .controls .controls-arrow:hover:before, +.reveal.no-hover .controls .controls-arrow:active:before { + -webkit-transform: translateX(0.5em) translateY(1.55em) rotate(45deg); + transform: translateX(0.5em) translateY(1.55em) rotate(45deg); } + +.reveal.no-hover .controls .controls-arrow:hover:after, +.reveal.no-hover .controls .controls-arrow:active:after { + -webkit-transform: translateX(0.5em) translateY(1.55em) rotate(-45deg); + transform: translateX(0.5em) translateY(1.55em) rotate(-45deg); } + +@media screen and (min-width: 500px) { + .reveal .controls[data-controls-layout="edges"] { + top: 0; + right: 0; + bottom: 0; + left: 0; } + .reveal .controls[data-controls-layout="edges"] .navigate-left, + .reveal .controls[data-controls-layout="edges"] .navigate-right, + .reveal .controls[data-controls-layout="edges"] .navigate-up, + .reveal .controls[data-controls-layout="edges"] .navigate-down { + bottom: auto; + right: auto; } + .reveal .controls[data-controls-layout="edges"] .navigate-left { + top: 50%; + left: 0.8em; + margin-top: -1.8em; } + .reveal .controls[data-controls-layout="edges"] .navigate-right { + top: 50%; + right: 0.8em; + margin-top: -1.8em; } + .reveal .controls[data-controls-layout="edges"] .navigate-up { + top: 0.8em; + left: 50%; + margin-left: -1.8em; } + .reveal .controls[data-controls-layout="edges"] .navigate-down { + bottom: -0.3em; + left: 50%; + margin-left: -1.8em; } } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + position: absolute; + display: none; + height: 3px; + width: 100%; + bottom: 0; + left: 0; + z-index: 10; + background-color: rgba(0, 0, 0, 0.2); + color: #fff; } + +.reveal .progress:after { + content: ''; + display: block; + position: absolute; + height: 10px; + width: 100%; + top: -10px; } + +.reveal .progress span { + display: block; + height: 100%; + width: 0px; + background-color: currentColor; + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/********************************************* + * SLIDE NUMBER + *********************************************/ +.reveal .slide-number { + position: absolute; + display: block; + right: 8px; + bottom: 8px; + z-index: 31; + font-family: Helvetica, sans-serif; + font-size: 12px; + line-height: 1; + color: #fff; + background-color: rgba(0, 0, 0, 0.4); + padding: 5px; } + +.reveal .slide-number a { + color: currentColor; } + +.reveal .slide-number-delimiter { + margin: 0 3px; } + +/********************************************* + * SLIDES + *********************************************/ +.reveal { + position: relative; + width: 100%; + height: 100%; + overflow: hidden; + -ms-touch-action: pinch-zoom; + touch-action: pinch-zoom; } + +.reveal .slides { + position: absolute; + width: 100%; + height: 100%; + top: 0; + right: 0; + bottom: 0; + left: 0; + margin: auto; + pointer-events: none; + overflow: visible; + z-index: 1; + text-align: center; + -webkit-perspective: 600px; + perspective: 600px; + -webkit-perspective-origin: 50% 40%; + perspective-origin: 50% 40%; } + +.reveal .slides > section { + -webkit-perspective: 600px; + perspective: 600px; } + +.reveal .slides > section, +.reveal .slides > section > section { + display: none; + position: absolute; + width: 100%; + padding: 20px 0px; + pointer-events: auto; + z-index: 10; + -webkit-transform-style: flat; + transform-style: flat; + transition: -webkit-transform-origin 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985), -webkit-transform 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985), visibility 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985), opacity 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: transform-origin 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985), transform 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985), visibility 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985), opacity 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/* Global transition speed settings */ +.reveal[data-transition-speed="fast"] .slides section { + transition-duration: 400ms; } + +.reveal[data-transition-speed="slow"] .slides section { + transition-duration: 1200ms; } + +/* Slide-specific transition speed overrides */ +.reveal .slides section[data-transition-speed="fast"] { + transition-duration: 400ms; } + +.reveal .slides section[data-transition-speed="slow"] { + transition-duration: 1200ms; } + +.reveal .slides > section.stack { + padding-top: 0; + padding-bottom: 0; + pointer-events: none; + height: 100%; } + +.reveal .slides > section.present, +.reveal .slides > section > section.present { + display: block; + z-index: 11; + opacity: 1; } + +.reveal .slides > section:empty, +.reveal .slides > section > section:empty, +.reveal .slides > section[data-background-interactive], +.reveal .slides > section > section[data-background-interactive] { + pointer-events: none; } + +.reveal.center, +.reveal.center .slides, +.reveal.center .slides section { + min-height: 0 !important; } + +/* Don't allow interaction with invisible slides */ +.reveal .slides > section.future, +.reveal .slides > section > section.future, +.reveal .slides > section.past, +.reveal .slides > section > section.past { + pointer-events: none; } + +.reveal.overview .slides > section, +.reveal.overview .slides > section > section { + pointer-events: auto; } + +.reveal .slides > section.past, +.reveal .slides > section.future, +.reveal .slides > section > section.past, +.reveal .slides > section > section.future { + opacity: 0; } + +/********************************************* + * Mixins for readability of transitions + *********************************************/ +/********************************************* + * SLIDE TRANSITION + * Aliased 'linear' for backwards compatibility + *********************************************/ +.reveal.slide section { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.reveal .slides > section[data-transition=slide].past, +.reveal .slides > section[data-transition~=slide-out].past, +.reveal.slide .slides > section:not([data-transition]).past { + -webkit-transform: translate(-150%, 0); + transform: translate(-150%, 0); } + +.reveal .slides > section[data-transition=slide].future, +.reveal .slides > section[data-transition~=slide-in].future, +.reveal.slide .slides > section:not([data-transition]).future { + -webkit-transform: translate(150%, 0); + transform: translate(150%, 0); } + +.reveal .slides > section > section[data-transition=slide].past, +.reveal .slides > section > section[data-transition~=slide-out].past, +.reveal.slide .slides > section > section:not([data-transition]).past { + -webkit-transform: translate(0, -150%); + transform: translate(0, -150%); } + +.reveal .slides > section > section[data-transition=slide].future, +.reveal .slides > section > section[data-transition~=slide-in].future, +.reveal.slide .slides > section > section:not([data-transition]).future { + -webkit-transform: translate(0, 150%); + transform: translate(0, 150%); } + +.reveal.linear section { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.reveal .slides > section[data-transition=linear].past, +.reveal .slides > section[data-transition~=linear-out].past, +.reveal.linear .slides > section:not([data-transition]).past { + -webkit-transform: translate(-150%, 0); + transform: translate(-150%, 0); } + +.reveal .slides > section[data-transition=linear].future, +.reveal .slides > section[data-transition~=linear-in].future, +.reveal.linear .slides > section:not([data-transition]).future { + -webkit-transform: translate(150%, 0); + transform: translate(150%, 0); } + +.reveal .slides > section > section[data-transition=linear].past, +.reveal .slides > section > section[data-transition~=linear-out].past, +.reveal.linear .slides > section > section:not([data-transition]).past { + -webkit-transform: translate(0, -150%); + transform: translate(0, -150%); } + +.reveal .slides > section > section[data-transition=linear].future, +.reveal .slides > section > section[data-transition~=linear-in].future, +.reveal.linear .slides > section > section:not([data-transition]).future { + -webkit-transform: translate(0, 150%); + transform: translate(0, 150%); } + +/********************************************* + * CONVEX TRANSITION + * Aliased 'default' for backwards compatibility + *********************************************/ +.reveal .slides section[data-transition=default].stack, +.reveal.default .slides section.stack { + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; } + +.reveal .slides > section[data-transition=default].past, +.reveal .slides > section[data-transition~=default-out].past, +.reveal.default .slides > section:not([data-transition]).past { + -webkit-transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); } + +.reveal .slides > section[data-transition=default].future, +.reveal .slides > section[data-transition~=default-in].future, +.reveal.default .slides > section:not([data-transition]).future { + -webkit-transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); } + +.reveal .slides > section > section[data-transition=default].past, +.reveal .slides > section > section[data-transition~=default-out].past, +.reveal.default .slides > section > section:not([data-transition]).past { + -webkit-transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0); + transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0); } + +.reveal .slides > section > section[data-transition=default].future, +.reveal .slides > section > section[data-transition~=default-in].future, +.reveal.default .slides > section > section:not([data-transition]).future { + -webkit-transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0); + transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0); } + +.reveal .slides section[data-transition=convex].stack, +.reveal.convex .slides section.stack { + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; } + +.reveal .slides > section[data-transition=convex].past, +.reveal .slides > section[data-transition~=convex-out].past, +.reveal.convex .slides > section:not([data-transition]).past { + -webkit-transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); } + +.reveal .slides > section[data-transition=convex].future, +.reveal .slides > section[data-transition~=convex-in].future, +.reveal.convex .slides > section:not([data-transition]).future { + -webkit-transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); } + +.reveal .slides > section > section[data-transition=convex].past, +.reveal .slides > section > section[data-transition~=convex-out].past, +.reveal.convex .slides > section > section:not([data-transition]).past { + -webkit-transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0); + transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0); } + +.reveal .slides > section > section[data-transition=convex].future, +.reveal .slides > section > section[data-transition~=convex-in].future, +.reveal.convex .slides > section > section:not([data-transition]).future { + -webkit-transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0); + transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0); } + +/********************************************* + * CONCAVE TRANSITION + *********************************************/ +.reveal .slides section[data-transition=concave].stack, +.reveal.concave .slides section.stack { + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; } + +.reveal .slides > section[data-transition=concave].past, +.reveal .slides > section[data-transition~=concave-out].past, +.reveal.concave .slides > section:not([data-transition]).past { + -webkit-transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); } + +.reveal .slides > section[data-transition=concave].future, +.reveal .slides > section[data-transition~=concave-in].future, +.reveal.concave .slides > section:not([data-transition]).future { + -webkit-transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); } + +.reveal .slides > section > section[data-transition=concave].past, +.reveal .slides > section > section[data-transition~=concave-out].past, +.reveal.concave .slides > section > section:not([data-transition]).past { + -webkit-transform: translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0); + transform: translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0); } + +.reveal .slides > section > section[data-transition=concave].future, +.reveal .slides > section > section[data-transition~=concave-in].future, +.reveal.concave .slides > section > section:not([data-transition]).future { + -webkit-transform: translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0); + transform: translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0); } + +/********************************************* + * ZOOM TRANSITION + *********************************************/ +.reveal .slides section[data-transition=zoom], +.reveal.zoom .slides section:not([data-transition]) { + transition-timing-function: ease; } + +.reveal .slides > section[data-transition=zoom].past, +.reveal .slides > section[data-transition~=zoom-out].past, +.reveal.zoom .slides > section:not([data-transition]).past { + visibility: hidden; + -webkit-transform: scale(16); + transform: scale(16); } + +.reveal .slides > section[data-transition=zoom].future, +.reveal .slides > section[data-transition~=zoom-in].future, +.reveal.zoom .slides > section:not([data-transition]).future { + visibility: hidden; + -webkit-transform: scale(0.2); + transform: scale(0.2); } + +.reveal .slides > section > section[data-transition=zoom].past, +.reveal .slides > section > section[data-transition~=zoom-out].past, +.reveal.zoom .slides > section > section:not([data-transition]).past { + -webkit-transform: scale(16); + transform: scale(16); } + +.reveal .slides > section > section[data-transition=zoom].future, +.reveal .slides > section > section[data-transition~=zoom-in].future, +.reveal.zoom .slides > section > section:not([data-transition]).future { + -webkit-transform: scale(0.2); + transform: scale(0.2); } + +/********************************************* + * CUBE TRANSITION + * + * WARNING: + * this is deprecated and will be removed in a + * future version. + *********************************************/ +.reveal.cube .slides { + -webkit-perspective: 1300px; + perspective: 1300px; } + +.reveal.cube .slides section { + padding: 30px; + min-height: 700px; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + box-sizing: border-box; + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; } + +.reveal.center.cube .slides section { + min-height: 0; } + +.reveal.cube .slides section:not(.stack):before { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 100%; + left: 0; + top: 0; + background: rgba(0, 0, 0, 0.1); + border-radius: 4px; + -webkit-transform: translateZ(-20px); + transform: translateZ(-20px); } + +.reveal.cube .slides section:not(.stack):after { + content: ''; + position: absolute; + display: block; + width: 90%; + height: 30px; + left: 5%; + bottom: 0; + background: none; + z-index: 1; + border-radius: 4px; + box-shadow: 0px 95px 25px rgba(0, 0, 0, 0.2); + -webkit-transform: translateZ(-90px) rotateX(65deg); + transform: translateZ(-90px) rotateX(65deg); } + +.reveal.cube .slides > section.stack { + padding: 0; + background: none; } + +.reveal.cube .slides > section.past { + -webkit-transform-origin: 100% 0%; + transform-origin: 100% 0%; + -webkit-transform: translate3d(-100%, 0, 0) rotateY(-90deg); + transform: translate3d(-100%, 0, 0) rotateY(-90deg); } + +.reveal.cube .slides > section.future { + -webkit-transform-origin: 0% 0%; + transform-origin: 0% 0%; + -webkit-transform: translate3d(100%, 0, 0) rotateY(90deg); + transform: translate3d(100%, 0, 0) rotateY(90deg); } + +.reveal.cube .slides > section > section.past { + -webkit-transform-origin: 0% 100%; + transform-origin: 0% 100%; + -webkit-transform: translate3d(0, -100%, 0) rotateX(90deg); + transform: translate3d(0, -100%, 0) rotateX(90deg); } + +.reveal.cube .slides > section > section.future { + -webkit-transform-origin: 0% 0%; + transform-origin: 0% 0%; + -webkit-transform: translate3d(0, 100%, 0) rotateX(-90deg); + transform: translate3d(0, 100%, 0) rotateX(-90deg); } + +/********************************************* + * PAGE TRANSITION + * + * WARNING: + * this is deprecated and will be removed in a + * future version. + *********************************************/ +.reveal.page .slides { + -webkit-perspective-origin: 0% 50%; + perspective-origin: 0% 50%; + -webkit-perspective: 3000px; + perspective: 3000px; } + +.reveal.page .slides section { + padding: 30px; + min-height: 700px; + box-sizing: border-box; + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; } + +.reveal.page .slides section.past { + z-index: 12; } + +.reveal.page .slides section:not(.stack):before { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 100%; + left: 0; + top: 0; + background: rgba(0, 0, 0, 0.1); + -webkit-transform: translateZ(-20px); + transform: translateZ(-20px); } + +.reveal.page .slides section:not(.stack):after { + content: ''; + position: absolute; + display: block; + width: 90%; + height: 30px; + left: 5%; + bottom: 0; + background: none; + z-index: 1; + border-radius: 4px; + box-shadow: 0px 95px 25px rgba(0, 0, 0, 0.2); + -webkit-transform: translateZ(-90px) rotateX(65deg); } + +.reveal.page .slides > section.stack { + padding: 0; + background: none; } + +.reveal.page .slides > section.past { + -webkit-transform-origin: 0% 0%; + transform-origin: 0% 0%; + -webkit-transform: translate3d(-40%, 0, 0) rotateY(-80deg); + transform: translate3d(-40%, 0, 0) rotateY(-80deg); } + +.reveal.page .slides > section.future { + -webkit-transform-origin: 100% 0%; + transform-origin: 100% 0%; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +.reveal.page .slides > section > section.past { + -webkit-transform-origin: 0% 0%; + transform-origin: 0% 0%; + -webkit-transform: translate3d(0, -40%, 0) rotateX(80deg); + transform: translate3d(0, -40%, 0) rotateX(80deg); } + +.reveal.page .slides > section > section.future { + -webkit-transform-origin: 0% 100%; + transform-origin: 0% 100%; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +/********************************************* + * FADE TRANSITION + *********************************************/ +.reveal .slides section[data-transition=fade], +.reveal.fade .slides section:not([data-transition]), +.reveal.fade .slides > section > section:not([data-transition]) { + -webkit-transform: none; + transform: none; + transition: opacity 0.5s; } + +.reveal.fade.overview .slides section, +.reveal.fade.overview .slides > section > section { + transition: none; } + +/********************************************* + * NO TRANSITION + *********************************************/ +.reveal .slides section[data-transition=none], +.reveal.none .slides section:not([data-transition]) { + -webkit-transform: none; + transform: none; + transition: none; } + +/********************************************* + * PAUSED MODE + *********************************************/ +.reveal .pause-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: black; + visibility: hidden; + opacity: 0; + z-index: 100; + transition: all 1s ease; } + +.reveal .pause-overlay .resume-button { + position: absolute; + bottom: 20px; + right: 20px; + color: #ccc; + border-radius: 2px; + padding: 6px 14px; + border: 2px solid #ccc; + font-size: 16px; + background: transparent; + cursor: pointer; } + .reveal .pause-overlay .resume-button:hover { + color: #fff; + border-color: #fff; } + +.reveal.paused .pause-overlay { + visibility: visible; + opacity: 1; } + +/********************************************* + * FALLBACK + *********************************************/ +.no-transforms { + overflow-y: auto; } + +.no-transforms .reveal { + overflow: visible; } + +.no-transforms .reveal .slides { + position: relative; + width: 80%; + max-width: 1280px; + height: auto; + top: 0; + margin: 0 auto; + text-align: center; } + +.no-transforms .reveal .controls, +.no-transforms .reveal .progress { + display: none; } + +.no-transforms .reveal .slides section { + display: block; + opacity: 1; + position: relative; + height: auto; + min-height: 0; + top: 0; + left: 0; + margin: 10vh 0; + margin: 70px 0; + -webkit-transform: none; + transform: none; } + +.reveal .no-transition, +.reveal .no-transition * { + transition: none !important; } + +/********************************************* + * PER-SLIDE BACKGROUNDS + *********************************************/ +.reveal .backgrounds { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + -webkit-perspective: 600px; + perspective: 600px; } + +.reveal .slide-background { + display: none; + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + visibility: hidden; + overflow: hidden; + background-color: rgba(0, 0, 0, 0); + transition: all 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +.reveal .slide-background-content { + position: absolute; + width: 100%; + height: 100%; + background-position: 50% 50%; + background-repeat: no-repeat; + background-size: cover; } + +.reveal .slide-background.stack { + display: block; } + +.reveal .slide-background.present { + opacity: 1; + visibility: visible; + z-index: 2; } + +.print-pdf .reveal .slide-background { + opacity: 1 !important; + visibility: visible !important; } + +/* Video backgrounds */ +.reveal .slide-background video { + position: absolute; + width: 100%; + height: 100%; + max-width: none; + max-height: none; + top: 0; + left: 0; + -o-object-fit: cover; + object-fit: cover; } + +.reveal .slide-background[data-background-size="contain"] video { + -o-object-fit: contain; + object-fit: contain; } + +/* Immediate transition style */ +.reveal[data-background-transition=none] > .backgrounds .slide-background, +.reveal > .backgrounds .slide-background[data-background-transition=none] { + transition: none; } + +/* Slide */ +.reveal[data-background-transition=slide] > .backgrounds .slide-background, +.reveal > .backgrounds .slide-background[data-background-transition=slide] { + opacity: 1; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.reveal[data-background-transition=slide] > .backgrounds .slide-background.past, +.reveal > .backgrounds .slide-background.past[data-background-transition=slide] { + -webkit-transform: translate(-100%, 0); + transform: translate(-100%, 0); } + +.reveal[data-background-transition=slide] > .backgrounds .slide-background.future, +.reveal > .backgrounds .slide-background.future[data-background-transition=slide] { + -webkit-transform: translate(100%, 0); + transform: translate(100%, 0); } + +.reveal[data-background-transition=slide] > .backgrounds .slide-background > .slide-background.past, +.reveal > .backgrounds .slide-background > .slide-background.past[data-background-transition=slide] { + -webkit-transform: translate(0, -100%); + transform: translate(0, -100%); } + +.reveal[data-background-transition=slide] > .backgrounds .slide-background > .slide-background.future, +.reveal > .backgrounds .slide-background > .slide-background.future[data-background-transition=slide] { + -webkit-transform: translate(0, 100%); + transform: translate(0, 100%); } + +/* Convex */ +.reveal[data-background-transition=convex] > .backgrounds .slide-background.past, +.reveal > .backgrounds .slide-background.past[data-background-transition=convex] { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); } + +.reveal[data-background-transition=convex] > .backgrounds .slide-background.future, +.reveal > .backgrounds .slide-background.future[data-background-transition=convex] { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); } + +.reveal[data-background-transition=convex] > .backgrounds .slide-background > .slide-background.past, +.reveal > .backgrounds .slide-background > .slide-background.past[data-background-transition=convex] { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0); } + +.reveal[data-background-transition=convex] > .backgrounds .slide-background > .slide-background.future, +.reveal > .backgrounds .slide-background > .slide-background.future[data-background-transition=convex] { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0); } + +/* Concave */ +.reveal[data-background-transition=concave] > .backgrounds .slide-background.past, +.reveal > .backgrounds .slide-background.past[data-background-transition=concave] { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); } + +.reveal[data-background-transition=concave] > .backgrounds .slide-background.future, +.reveal > .backgrounds .slide-background.future[data-background-transition=concave] { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); } + +.reveal[data-background-transition=concave] > .backgrounds .slide-background > .slide-background.past, +.reveal > .backgrounds .slide-background > .slide-background.past[data-background-transition=concave] { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0); } + +.reveal[data-background-transition=concave] > .backgrounds .slide-background > .slide-background.future, +.reveal > .backgrounds .slide-background > .slide-background.future[data-background-transition=concave] { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0); } + +/* Zoom */ +.reveal[data-background-transition=zoom] > .backgrounds .slide-background, +.reveal > .backgrounds .slide-background[data-background-transition=zoom] { + transition-timing-function: ease; } + +.reveal[data-background-transition=zoom] > .backgrounds .slide-background.past, +.reveal > .backgrounds .slide-background.past[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + -webkit-transform: scale(16); + transform: scale(16); } + +.reveal[data-background-transition=zoom] > .backgrounds .slide-background.future, +.reveal > .backgrounds .slide-background.future[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + -webkit-transform: scale(0.2); + transform: scale(0.2); } + +.reveal[data-background-transition=zoom] > .backgrounds .slide-background > .slide-background.past, +.reveal > .backgrounds .slide-background > .slide-background.past[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + -webkit-transform: scale(16); + transform: scale(16); } + +.reveal[data-background-transition=zoom] > .backgrounds .slide-background > .slide-background.future, +.reveal > .backgrounds .slide-background > .slide-background.future[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + -webkit-transform: scale(0.2); + transform: scale(0.2); } + +/* Global transition speed settings */ +.reveal[data-transition-speed="fast"] > .backgrounds .slide-background { + transition-duration: 400ms; } + +.reveal[data-transition-speed="slow"] > .backgrounds .slide-background { + transition-duration: 1200ms; } + +/********************************************* + * OVERVIEW + *********************************************/ +.reveal.overview { + -webkit-perspective-origin: 50% 50%; + perspective-origin: 50% 50%; + -webkit-perspective: 700px; + perspective: 700px; } + .reveal.overview .slides { + -moz-transform-style: preserve-3d; } + .reveal.overview .slides section { + height: 100%; + top: 0 !important; + opacity: 1 !important; + overflow: hidden; + visibility: visible !important; + cursor: pointer; + box-sizing: border-box; } + .reveal.overview .slides section:hover, + .reveal.overview .slides section.present { + outline: 10px solid rgba(150, 150, 150, 0.4); + outline-offset: 10px; } + .reveal.overview .slides section .fragment { + opacity: 1; + transition: none; } + .reveal.overview .slides section:after, + .reveal.overview .slides section:before { + display: none !important; } + .reveal.overview .slides > section.stack { + padding: 0; + top: 0 !important; + background: none; + outline: none; + overflow: visible; } + .reveal.overview .backgrounds { + -webkit-perspective: inherit; + perspective: inherit; + -moz-transform-style: preserve-3d; } + .reveal.overview .backgrounds .slide-background { + opacity: 1; + visibility: visible; + outline: 10px solid rgba(150, 150, 150, 0.1); + outline-offset: 10px; } + .reveal.overview .backgrounds .slide-background.stack { + overflow: visible; } + +.reveal.overview .slides section, +.reveal.overview-deactivating .slides section { + transition: none; } + +.reveal.overview .backgrounds .slide-background, +.reveal.overview-deactivating .backgrounds .slide-background { + transition: none; } + +/********************************************* + * RTL SUPPORT + *********************************************/ +.reveal.rtl .slides, +.reveal.rtl .slides h1, +.reveal.rtl .slides h2, +.reveal.rtl .slides h3, +.reveal.rtl .slides h4, +.reveal.rtl .slides h5, +.reveal.rtl .slides h6 { + direction: rtl; + font-family: sans-serif; } + +.reveal.rtl pre, +.reveal.rtl code { + direction: ltr; } + +.reveal.rtl ol, +.reveal.rtl ul { + text-align: right; } + +.reveal.rtl .progress span { + float: right; } + +/********************************************* + * PARALLAX BACKGROUND + *********************************************/ +.reveal.has-parallax-background .backgrounds { + transition: all 0.8s ease; } + +/* Global transition speed settings */ +.reveal.has-parallax-background[data-transition-speed="fast"] .backgrounds { + transition-duration: 400ms; } + +.reveal.has-parallax-background[data-transition-speed="slow"] .backgrounds { + transition-duration: 1200ms; } + +/********************************************* + * OVERLAY FOR LINK PREVIEWS AND HELP + *********************************************/ +.reveal > .overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1000; + background: rgba(0, 0, 0, 0.9); + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; } + +.reveal > .overlay.visible { + opacity: 1; + visibility: visible; } + +.reveal > .overlay .spinner { + position: absolute; + display: block; + top: 50%; + left: 50%; + width: 32px; + height: 32px; + margin: -16px 0 0 -16px; + z-index: 10; + background-image: url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf%2F%2F%2F6%2Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%2FLy8vz8%2FAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%2BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ%2FV%2FnmOM82XiHRLYKhKP1oZmADdEAAAh%2BQQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY%2FCZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB%2BA4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6%2BHo7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq%2BB6QDtuetcaBPnW6%2BO7wDHpIiK9SaVK5GgV543tzjgGcghAgAh%2BQQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK%2B%2BG%2Bw48edZPK%2BM6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE%2BG%2BcD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm%2BFNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk%2BaV%2BoJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0%2FVNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc%2BXiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30%2FiI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE%2FjiuL04RGEBgwWhShRgQExHBAAh%2BQQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR%2BipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY%2BYip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd%2BMFCN6HAAIKgNggY0KtEBAAh%2BQQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1%2BvsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d%2BjYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg%2BygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0%2Bbm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h%2BKr0SJ8MFihpNbx%2B4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX%2BBP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA%3D%3D); + visibility: visible; + opacity: 0.6; + transition: all 0.3s ease; } + +.reveal > .overlay header { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 40px; + z-index: 2; + border-bottom: 1px solid #222; } + +.reveal > .overlay header a { + display: inline-block; + width: 40px; + height: 40px; + line-height: 36px; + padding: 0 10px; + float: right; + opacity: 0.6; + box-sizing: border-box; } + +.reveal > .overlay header a:hover { + opacity: 1; } + +.reveal > .overlay header a .icon { + display: inline-block; + width: 20px; + height: 20px; + background-position: 50% 50%; + background-size: 100%; + background-repeat: no-repeat; } + +.reveal > .overlay header a.close .icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC); } + +.reveal > .overlay header a.external .icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==); } + +.reveal > .overlay .viewport { + position: absolute; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + top: 40px; + right: 0; + bottom: 0; + left: 0; } + +.reveal > .overlay.overlay-preview .viewport iframe { + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; + border: 0; + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; } + +.reveal > .overlay.overlay-preview.loaded .viewport iframe { + opacity: 1; + visibility: visible; } + +.reveal > .overlay.overlay-preview.loaded .viewport-inner { + position: absolute; + z-index: -1; + left: 0; + top: 45%; + width: 100%; + text-align: center; + letter-spacing: normal; } + +.reveal > .overlay.overlay-preview .x-frame-error { + opacity: 0; + transition: opacity 0.3s ease 0.3s; } + +.reveal > .overlay.overlay-preview.loaded .x-frame-error { + opacity: 1; } + +.reveal > .overlay.overlay-preview.loaded .spinner { + opacity: 0; + visibility: hidden; + -webkit-transform: scale(0.2); + transform: scale(0.2); } + +.reveal > .overlay.overlay-help .viewport { + overflow: auto; + color: #fff; } + +.reveal > .overlay.overlay-help .viewport .viewport-inner { + width: 600px; + margin: auto; + padding: 20px 20px 80px 20px; + text-align: center; + letter-spacing: normal; } + +.reveal > .overlay.overlay-help .viewport .viewport-inner .title { + font-size: 20px; } + +.reveal > .overlay.overlay-help .viewport .viewport-inner table { + border: 1px solid #fff; + border-collapse: collapse; + font-size: 16px; } + +.reveal > .overlay.overlay-help .viewport .viewport-inner table th, +.reveal > .overlay.overlay-help .viewport .viewport-inner table td { + width: 200px; + padding: 14px; + border: 1px solid #fff; + vertical-align: middle; } + +.reveal > .overlay.overlay-help .viewport .viewport-inner table th { + padding-top: 20px; + padding-bottom: 20px; } + +/********************************************* + * PLAYBACK COMPONENT + *********************************************/ +.reveal .playback { + position: absolute; + left: 15px; + bottom: 20px; + z-index: 30; + cursor: pointer; + transition: all 400ms ease; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } + +.reveal.overview .playback { + opacity: 0; + visibility: hidden; } + +/********************************************* + * CODE HIGHLGIHTING + *********************************************/ +.reveal .hljs table { + margin: initial; } + +.reveal .hljs-ln-code, +.reveal .hljs-ln-numbers { + padding: 0; + border: 0; } + +.reveal .hljs-ln-numbers { + opacity: 0.6; + padding-right: 0.75em; + text-align: right; + vertical-align: top; } + +.reveal .hljs.has-highlights tr:not(.highlight-line) { + opacity: 0.4; } + +.reveal .hljs:not(:first-child).fragment { + position: absolute; + top: 0; + left: 0; + width: 100%; + box-sizing: border-box; } + +/********************************************* + * ROLLING LINKS + *********************************************/ +.reveal .roll { + display: inline-block; + line-height: 1.2; + overflow: hidden; + vertical-align: top; + -webkit-perspective: 400px; + perspective: 400px; + -webkit-perspective-origin: 50% 50%; + perspective-origin: 50% 50%; } + +.reveal .roll:hover { + background: none; + text-shadow: none; } + +.reveal .roll span { + display: block; + position: relative; + padding: 0 2px; + pointer-events: none; + transition: all 400ms ease; + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.reveal .roll:hover span { + background: rgba(0, 0, 0, 0.5); + -webkit-transform: translate3d(0px, 0px, -45px) rotateX(90deg); + transform: translate3d(0px, 0px, -45px) rotateX(90deg); } + +.reveal .roll span:after { + content: attr(data-title); + display: block; + position: absolute; + left: 0; + top: 0; + padding: 0 2px; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform-origin: 50% 0%; + transform-origin: 50% 0%; + -webkit-transform: translate3d(0px, 110%, 0px) rotateX(-90deg); + transform: translate3d(0px, 110%, 0px) rotateX(-90deg); } + +/********************************************* + * SPEAKER NOTES + *********************************************/ +.reveal aside.notes { + display: none; } + +.reveal .speaker-notes { + display: none; + position: absolute; + width: 33.3333333333%; + height: 100%; + top: 0; + left: 100%; + padding: 14px 18px 14px 18px; + z-index: 1; + font-size: 18px; + line-height: 1.4; + border: 1px solid rgba(0, 0, 0, 0.05); + color: #222; + background-color: #f5f5f5; + overflow: auto; + box-sizing: border-box; + text-align: left; + font-family: Helvetica, sans-serif; + -webkit-overflow-scrolling: touch; } + .reveal .speaker-notes .notes-placeholder { + color: #ccc; + font-style: italic; } + .reveal .speaker-notes:focus { + outline: none; } + .reveal .speaker-notes:before { + content: 'Speaker notes'; + display: block; + margin-bottom: 10px; + opacity: 0.5; } + +.reveal.show-notes { + max-width: 75%; + overflow: visible; } + +.reveal.show-notes .speaker-notes { + display: block; } + +@media screen and (min-width: 1600px) { + .reveal .speaker-notes { + font-size: 20px; } } + +@media screen and (max-width: 1024px) { + .reveal.show-notes { + border-left: 0; + max-width: none; + max-height: 70%; + max-height: 70vh; + overflow: visible; } + .reveal.show-notes .speaker-notes { + top: 100%; + left: 0; + width: 100%; + height: 42.8571428571%; + height: 30vh; + border: 0; } } + +@media screen and (max-width: 600px) { + .reveal.show-notes { + max-height: 60%; + max-height: 60vh; } + .reveal.show-notes .speaker-notes { + top: 100%; + height: 66.6666666667%; + height: 40vh; } + .reveal .speaker-notes { + font-size: 14px; } } + +/********************************************* + * ZOOM PLUGIN + *********************************************/ +.zoomed .reveal *, +.zoomed .reveal *:before, +.zoomed .reveal *:after { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; } + +.zoomed .reveal .progress, +.zoomed .reveal .controls { + opacity: 0; } + +.zoomed .reveal .roll span { + background: none; } + +.zoomed .reveal .roll span:after { + visibility: hidden; } diff --git a/AdvancedCppV2/css/reveal.scss b/AdvancedCppV2/css/reveal.scss new file mode 100644 index 0000000..ab11f32 --- /dev/null +++ b/AdvancedCppV2/css/reveal.scss @@ -0,0 +1,1777 @@ +/*! + * reveal.js + * http://revealjs.com + * MIT licensed + * + * Copyright (C) 2020 Hakim El Hattab, http://hakim.se + */ + + +/********************************************* + * GLOBAL STYLES + *********************************************/ + +html { + width: 100%; + height: 100%; + height: 100vh; + height: calc( var(--vh, 1vh) * 100 ); + overflow: hidden; +} + +body { + height: 100%; + overflow: hidden; + position: relative; + line-height: 1; + margin: 0; + + background-color: #fff; + color: #000; +} + + +/********************************************* + * VIEW FRAGMENTS + *********************************************/ + +.reveal .slides section .fragment { + opacity: 0; + visibility: hidden; + transition: all .2s ease; + + &.visible { + opacity: 1; + visibility: inherit; + } +} + +.reveal .slides section .fragment.grow { + opacity: 1; + visibility: inherit; + + &.visible { + transform: scale( 1.3 ); + } +} + +.reveal .slides section .fragment.shrink { + opacity: 1; + visibility: inherit; + + &.visible { + transform: scale( 0.7 ); + } +} + +.reveal .slides section .fragment.zoom-in { + transform: scale( 0.1 ); + + &.visible { + transform: none; + } +} + +.reveal .slides section .fragment.fade-out { + opacity: 1; + visibility: inherit; + + &.visible { + opacity: 0; + visibility: hidden; + } +} + +.reveal .slides section .fragment.semi-fade-out { + opacity: 1; + visibility: inherit; + + &.visible { + opacity: 0.5; + visibility: inherit; + } +} + +.reveal .slides section .fragment.strike { + opacity: 1; + visibility: inherit; + + &.visible { + text-decoration: line-through; + } +} + +.reveal .slides section .fragment.fade-up { + transform: translate(0, 40px); + + &.visible { + transform: translate(0, 0); + } +} + +.reveal .slides section .fragment.fade-down { + transform: translate(0, -40px); + + &.visible { + transform: translate(0, 0); + } +} + +.reveal .slides section .fragment.fade-right { + transform: translate(-40px, 0); + + &.visible { + transform: translate(0, 0); + } +} + +.reveal .slides section .fragment.fade-left { + transform: translate(40px, 0); + + &.visible { + transform: translate(0, 0); + } +} + +.reveal .slides section .fragment.fade-in-then-out, +.reveal .slides section .fragment.current-visible { + opacity: 0; + visibility: hidden; + + &.current-fragment { + opacity: 1; + visibility: inherit; + } +} + +.reveal .slides section .fragment.fade-in-then-semi-out { + opacity: 0; + visibility: hidden; + + &.visible { + opacity: 0.5; + visibility: inherit; + } + + &.current-fragment { + opacity: 1; + visibility: inherit; + } +} + +.reveal .slides section .fragment.highlight-red, +.reveal .slides section .fragment.highlight-current-red, +.reveal .slides section .fragment.highlight-green, +.reveal .slides section .fragment.highlight-current-green, +.reveal .slides section .fragment.highlight-blue, +.reveal .slides section .fragment.highlight-current-blue { + opacity: 1; + visibility: inherit; +} + .reveal .slides section .fragment.highlight-red.visible { + color: #ff2c2d + } + .reveal .slides section .fragment.highlight-green.visible { + color: #17ff2e; + } + .reveal .slides section .fragment.highlight-blue.visible { + color: #1b91ff; + } + +.reveal .slides section .fragment.highlight-current-red.current-fragment { + color: #ff2c2d +} +.reveal .slides section .fragment.highlight-current-green.current-fragment { + color: #17ff2e; +} +.reveal .slides section .fragment.highlight-current-blue.current-fragment { + color: #1b91ff; +} + + +/********************************************* + * DEFAULT ELEMENT STYLES + *********************************************/ + +/* Fixes issue in Chrome where italic fonts did not appear when printing to PDF */ +.reveal:after { + content: ''; + font-style: italic; +} + +.reveal iframe { + z-index: 1; +} + +/** Prevents layering issues in certain browser/transition combinations */ +.reveal a { + position: relative; +} + +.reveal .stretch { + max-width: none; + max-height: none; +} + +.reveal pre.stretch code { + height: 100%; + max-height: 100%; + box-sizing: border-box; +} + + +/********************************************* + * CONTROLS + *********************************************/ + +@keyframes bounce-right { + 0%, 10%, 25%, 40%, 50% {transform: translateX(0);} + 20% {transform: translateX(10px);} + 30% {transform: translateX(-5px);} +} + +@keyframes bounce-down { + 0%, 10%, 25%, 40%, 50% {transform: translateY(0);} + 20% {transform: translateY(10px);} + 30% {transform: translateY(-5px);} +} + +$controlArrowSize: 3.6em; +$controlArrowSpacing: 1.4em; +$controlArrowLength: 2.6em; +$controlArrowThickness: 0.5em; +$controlsArrowAngle: 45deg; +$controlsArrowAngleHover: 40deg; +$controlsArrowAngleActive: 36deg; + +@mixin controlsArrowTransform( $angle ) { + &:before { + transform: translateX(($controlArrowSize - $controlArrowLength)/2) translateY(($controlArrowSize - $controlArrowThickness)/2) rotate( $angle ); + } + + &:after { + transform: translateX(($controlArrowSize - $controlArrowLength)/2) translateY(($controlArrowSize - $controlArrowThickness)/2) rotate( -$angle ); + } +} + +.reveal .controls { + $spacing: 12px; + + display: none; + position: absolute; + top: auto; + bottom: $spacing; + right: $spacing; + left: auto; + z-index: 11; + color: #000; + pointer-events: none; + font-size: 10px; + + button { + position: absolute; + padding: 0; + background-color: transparent; + border: 0; + outline: 0; + cursor: pointer; + color: currentColor; + transform: scale(.9999); + transition: color 0.2s ease, + opacity 0.2s ease, + transform 0.2s ease; + z-index: 2; // above slides + pointer-events: auto; + font-size: inherit; + + visibility: hidden; + opacity: 0; + + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba( 0, 0, 0, 0 ); + } + + .controls-arrow:before, + .controls-arrow:after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: $controlArrowLength; + height: $controlArrowThickness; + border-radius: $controlArrowThickness/2; + background-color: currentColor; + + transition: all 0.15s ease, background-color 0.8s ease; + transform-origin: floor(($controlArrowThickness/2)*10)/10 50%; + will-change: transform; + } + + .controls-arrow { + position: relative; + width: $controlArrowSize; + height: $controlArrowSize; + + @include controlsArrowTransform( $controlsArrowAngle ); + + &:hover { + @include controlsArrowTransform( $controlsArrowAngleHover ); + } + + &:active { + @include controlsArrowTransform( $controlsArrowAngleActive ); + } + } + + .navigate-left { + right: $controlArrowSize + $controlArrowSpacing*2; + bottom: $controlArrowSpacing + $controlArrowSize/2; + transform: translateX( -10px ); + } + + .navigate-right { + right: 0; + bottom: $controlArrowSpacing + $controlArrowSize/2; + transform: translateX( 10px ); + + .controls-arrow { + transform: rotate( 180deg ); + } + + &.highlight { + animation: bounce-right 2s 50 both ease-out; + } + } + + .navigate-up { + right: $controlArrowSpacing + $controlArrowSize/2; + bottom: $controlArrowSpacing*2 + $controlArrowSize; + transform: translateY( -10px ); + + .controls-arrow { + transform: rotate( 90deg ); + } + } + + .navigate-down { + right: $controlArrowSpacing + $controlArrowSize/2; + bottom: -$controlArrowSpacing; + padding-bottom: $controlArrowSpacing; + transform: translateY( 10px ); + + .controls-arrow { + transform: rotate( -90deg ); + } + + &.highlight { + animation: bounce-down 2s 50 both ease-out; + } + } + + // Back arrow style: "faded": + // Deemphasize backwards navigation arrows in favor of drawing + // attention to forwards navigation + &[data-controls-back-arrows="faded"] .navigate-left.enabled, + &[data-controls-back-arrows="faded"] .navigate-up.enabled { + opacity: 0.3; + + &:hover { + opacity: 1; + } + } + + // Back arrow style: "hidden": + // Never show arrows for backwards navigation + &[data-controls-back-arrows="hidden"] .navigate-left.enabled, + &[data-controls-back-arrows="hidden"] .navigate-up.enabled { + opacity: 0; + visibility: hidden; + } + + // Any control button that can be clicked is "enabled" + .enabled { + visibility: visible; + opacity: 0.9; + cursor: pointer; + transform: none; + } + + // Any control button that leads to showing or hiding + // a fragment + .enabled.fragmented { + opacity: 0.5; + } + + .enabled:hover, + .enabled.fragmented:hover { + opacity: 1; + } +} + +.reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-up, +.reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-down { + display: none; +} + +// Adjust the layout when there are no vertical slides +.reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-left, +.reveal:not(.has-vertical-slides) .controls .navigate-left { + bottom: $controlArrowSpacing; + right: 0.5em + $controlArrowSpacing + $controlArrowSize; +} + +.reveal[data-navigation-mode="linear"].has-horizontal-slides .navigate-right, +.reveal:not(.has-vertical-slides) .controls .navigate-right { + bottom: $controlArrowSpacing; + right: 0.5em; +} + +// Adjust the layout when there are no horizontal slides +.reveal:not(.has-horizontal-slides) .controls .navigate-up { + right: $controlArrowSpacing; + bottom: $controlArrowSpacing + $controlArrowSize; +} +.reveal:not(.has-horizontal-slides) .controls .navigate-down { + right: $controlArrowSpacing; + bottom: 0.5em; +} + +// Invert arrows based on background color +.reveal.has-dark-background .controls { + color: #fff; +} +.reveal.has-light-background .controls { + color: #000; +} + +// Disable active states on touch devices +.reveal.no-hover .controls .controls-arrow:hover, +.reveal.no-hover .controls .controls-arrow:active { + @include controlsArrowTransform( $controlsArrowAngle ); +} + +// Edge aligned controls layout +@media screen and (min-width: 500px) { + + $spacing: 0.8em; + + .reveal .controls[data-controls-layout="edges"] { + & { + top: 0; + right: 0; + bottom: 0; + left: 0; + } + + .navigate-left, + .navigate-right, + .navigate-up, + .navigate-down { + bottom: auto; + right: auto; + } + + .navigate-left { + top: 50%; + left: $spacing; + margin-top: -$controlArrowSize/2; + } + + .navigate-right { + top: 50%; + right: $spacing; + margin-top: -$controlArrowSize/2; + } + + .navigate-up { + top: $spacing; + left: 50%; + margin-left: -$controlArrowSize/2; + } + + .navigate-down { + bottom: $spacing - $controlArrowSpacing + 0.3em; + left: 50%; + margin-left: -$controlArrowSize/2; + } + } + +} + + +/********************************************* + * PROGRESS BAR + *********************************************/ + +.reveal .progress { + position: absolute; + display: none; + height: 3px; + width: 100%; + bottom: 0; + left: 0; + z-index: 10; + + background-color: rgba( 0, 0, 0, 0.2 ); + color: #fff; +} + .reveal .progress:after { + content: ''; + display: block; + position: absolute; + height: 10px; + width: 100%; + top: -10px; + } + .reveal .progress span { + display: block; + height: 100%; + width: 0px; + + background-color: currentColor; + transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + } + +/********************************************* + * SLIDE NUMBER + *********************************************/ + +.reveal .slide-number { + position: absolute; + display: block; + right: 8px; + bottom: 8px; + z-index: 31; + font-family: Helvetica, sans-serif; + font-size: 12px; + line-height: 1; + color: #fff; + background-color: rgba( 0, 0, 0, 0.4 ); + padding: 5px; +} + +.reveal .slide-number a { + color: currentColor; +} + +.reveal .slide-number-delimiter { + margin: 0 3px; +} + +/********************************************* + * SLIDES + *********************************************/ + +.reveal { + position: relative; + width: 100%; + height: 100%; + overflow: hidden; + touch-action: pinch-zoom; +} + +.reveal .slides { + position: absolute; + width: 100%; + height: 100%; + top: 0; + right: 0; + bottom: 0; + left: 0; + margin: auto; + pointer-events: none; + + overflow: visible; + z-index: 1; + text-align: center; + perspective: 600px; + perspective-origin: 50% 40%; +} + +.reveal .slides>section { + perspective: 600px; +} + +.reveal .slides>section, +.reveal .slides>section>section { + display: none; + position: absolute; + width: 100%; + padding: 20px 0px; + pointer-events: auto; + + z-index: 10; + transform-style: flat; + transition: transform-origin 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + transform 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + visibility 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985), + opacity 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); +} + +/* Global transition speed settings */ +.reveal[data-transition-speed="fast"] .slides section { + transition-duration: 400ms; +} +.reveal[data-transition-speed="slow"] .slides section { + transition-duration: 1200ms; +} + +/* Slide-specific transition speed overrides */ +.reveal .slides section[data-transition-speed="fast"] { + transition-duration: 400ms; +} +.reveal .slides section[data-transition-speed="slow"] { + transition-duration: 1200ms; +} + +.reveal .slides>section.stack { + padding-top: 0; + padding-bottom: 0; + pointer-events: none; + height: 100%; +} + +.reveal .slides>section.present, +.reveal .slides>section>section.present { + display: block; + z-index: 11; + opacity: 1; +} + +.reveal .slides>section:empty, +.reveal .slides>section>section:empty, +.reveal .slides>section[data-background-interactive], +.reveal .slides>section>section[data-background-interactive] { + pointer-events: none; +} + +.reveal.center, +.reveal.center .slides, +.reveal.center .slides section { + min-height: 0 !important; +} + +/* Don't allow interaction with invisible slides */ +.reveal .slides>section.future, +.reveal .slides>section>section.future, +.reveal .slides>section.past, +.reveal .slides>section>section.past { + pointer-events: none; +} + +.reveal.overview .slides>section, +.reveal.overview .slides>section>section { + pointer-events: auto; +} + +.reveal .slides>section.past, +.reveal .slides>section.future, +.reveal .slides>section>section.past, +.reveal .slides>section>section.future { + opacity: 0; +} + + +/********************************************* + * Mixins for readability of transitions + *********************************************/ + +@mixin transition-global($style) { + .reveal .slides section[data-transition=#{$style}], + .reveal.#{$style} .slides section:not([data-transition]) { + @content; + } +} +@mixin transition-stack($style) { + .reveal .slides section[data-transition=#{$style}].stack, + .reveal.#{$style} .slides section.stack { + @content; + } +} +@mixin transition-horizontal-past($style) { + .reveal .slides>section[data-transition=#{$style}].past, + .reveal .slides>section[data-transition~=#{$style}-out].past, + .reveal.#{$style} .slides>section:not([data-transition]).past { + @content; + } +} +@mixin transition-horizontal-future($style) { + .reveal .slides>section[data-transition=#{$style}].future, + .reveal .slides>section[data-transition~=#{$style}-in].future, + .reveal.#{$style} .slides>section:not([data-transition]).future { + @content; + } +} + +@mixin transition-vertical-past($style) { + .reveal .slides>section>section[data-transition=#{$style}].past, + .reveal .slides>section>section[data-transition~=#{$style}-out].past, + .reveal.#{$style} .slides>section>section:not([data-transition]).past { + @content; + } +} +@mixin transition-vertical-future($style) { + .reveal .slides>section>section[data-transition=#{$style}].future, + .reveal .slides>section>section[data-transition~=#{$style}-in].future, + .reveal.#{$style} .slides>section>section:not([data-transition]).future { + @content; + } +} + +/********************************************* + * SLIDE TRANSITION + * Aliased 'linear' for backwards compatibility + *********************************************/ + +@each $stylename in slide, linear { + .reveal.#{$stylename} section { + backface-visibility: hidden; + } + @include transition-horizontal-past(#{$stylename}) { + transform: translate(-150%, 0); + } + @include transition-horizontal-future(#{$stylename}) { + transform: translate(150%, 0); + } + @include transition-vertical-past(#{$stylename}) { + transform: translate(0, -150%); + } + @include transition-vertical-future(#{$stylename}) { + transform: translate(0, 150%); + } +} + +/********************************************* + * CONVEX TRANSITION + * Aliased 'default' for backwards compatibility + *********************************************/ + +@each $stylename in default, convex { + @include transition-stack(#{$stylename}) { + transform-style: preserve-3d; + } + + @include transition-horizontal-past(#{$stylename}) { + transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); + } + @include transition-horizontal-future(#{$stylename}) { + transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); + } + @include transition-vertical-past(#{$stylename}) { + transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0); + } + @include transition-vertical-future(#{$stylename}) { + transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0); + } +} + +/********************************************* + * CONCAVE TRANSITION + *********************************************/ + +@include transition-stack(concave) { + transform-style: preserve-3d; +} + +@include transition-horizontal-past(concave) { + transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); +} +@include transition-horizontal-future(concave) { + transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); +} +@include transition-vertical-past(concave) { + transform: translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0); +} +@include transition-vertical-future(concave) { + transform: translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0); +} + + +/********************************************* + * ZOOM TRANSITION + *********************************************/ + +@include transition-global(zoom) { + transition-timing-function: ease; +} +@include transition-horizontal-past(zoom) { + visibility: hidden; + transform: scale(16); +} +@include transition-horizontal-future(zoom) { + visibility: hidden; + transform: scale(0.2); +} +@include transition-vertical-past(zoom) { + transform: scale(16); +} +@include transition-vertical-future(zoom) { + transform: scale(0.2); +} + + +/********************************************* + * CUBE TRANSITION + * + * WARNING: + * this is deprecated and will be removed in a + * future version. + *********************************************/ + +.reveal.cube .slides { + perspective: 1300px; +} + +.reveal.cube .slides section { + padding: 30px; + min-height: 700px; + backface-visibility: hidden; + box-sizing: border-box; + transform-style: preserve-3d; +} + .reveal.center.cube .slides section { + min-height: 0; + } + .reveal.cube .slides section:not(.stack):before { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 100%; + left: 0; + top: 0; + background: rgba(0,0,0,0.1); + border-radius: 4px; + transform: translateZ( -20px ); + } + .reveal.cube .slides section:not(.stack):after { + content: ''; + position: absolute; + display: block; + width: 90%; + height: 30px; + left: 5%; + bottom: 0; + background: none; + z-index: 1; + + border-radius: 4px; + box-shadow: 0px 95px 25px rgba(0,0,0,0.2); + transform: translateZ(-90px) rotateX( 65deg ); + } + +.reveal.cube .slides>section.stack { + padding: 0; + background: none; +} + +.reveal.cube .slides>section.past { + transform-origin: 100% 0%; + transform: translate3d(-100%, 0, 0) rotateY(-90deg); +} + +.reveal.cube .slides>section.future { + transform-origin: 0% 0%; + transform: translate3d(100%, 0, 0) rotateY(90deg); +} + +.reveal.cube .slides>section>section.past { + transform-origin: 0% 100%; + transform: translate3d(0, -100%, 0) rotateX(90deg); +} + +.reveal.cube .slides>section>section.future { + transform-origin: 0% 0%; + transform: translate3d(0, 100%, 0) rotateX(-90deg); +} + + +/********************************************* + * PAGE TRANSITION + * + * WARNING: + * this is deprecated and will be removed in a + * future version. + *********************************************/ + +.reveal.page .slides { + perspective-origin: 0% 50%; + perspective: 3000px; +} + +.reveal.page .slides section { + padding: 30px; + min-height: 700px; + box-sizing: border-box; + transform-style: preserve-3d; +} + .reveal.page .slides section.past { + z-index: 12; + } + .reveal.page .slides section:not(.stack):before { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 100%; + left: 0; + top: 0; + background: rgba(0,0,0,0.1); + transform: translateZ( -20px ); + } + .reveal.page .slides section:not(.stack):after { + content: ''; + position: absolute; + display: block; + width: 90%; + height: 30px; + left: 5%; + bottom: 0; + background: none; + z-index: 1; + + border-radius: 4px; + box-shadow: 0px 95px 25px rgba(0,0,0,0.2); + + -webkit-transform: translateZ(-90px) rotateX( 65deg ); + } + +.reveal.page .slides>section.stack { + padding: 0; + background: none; +} + +.reveal.page .slides>section.past { + transform-origin: 0% 0%; + transform: translate3d(-40%, 0, 0) rotateY(-80deg); +} + +.reveal.page .slides>section.future { + transform-origin: 100% 0%; + transform: translate3d(0, 0, 0); +} + +.reveal.page .slides>section>section.past { + transform-origin: 0% 0%; + transform: translate3d(0, -40%, 0) rotateX(80deg); +} + +.reveal.page .slides>section>section.future { + transform-origin: 0% 100%; + transform: translate3d(0, 0, 0); +} + + +/********************************************* + * FADE TRANSITION + *********************************************/ + +.reveal .slides section[data-transition=fade], +.reveal.fade .slides section:not([data-transition]), +.reveal.fade .slides>section>section:not([data-transition]) { + transform: none; + transition: opacity 0.5s; +} + + +.reveal.fade.overview .slides section, +.reveal.fade.overview .slides>section>section { + transition: none; +} + + +/********************************************* + * NO TRANSITION + *********************************************/ + +@include transition-global(none) { + transform: none; + transition: none; +} + + +/********************************************* + * PAUSED MODE + *********************************************/ + +.reveal .pause-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: black; + visibility: hidden; + opacity: 0; + z-index: 100; + transition: all 1s ease; +} + +.reveal .pause-overlay .resume-button { + position: absolute; + bottom: 20px; + right: 20px; + color: #ccc; + border-radius: 2px; + padding: 6px 14px; + border: 2px solid #ccc; + font-size: 16px; + background: transparent; + cursor: pointer; + + &:hover { + color: #fff; + border-color: #fff; + } +} + +.reveal.paused .pause-overlay { + visibility: visible; + opacity: 1; +} + + +/********************************************* + * FALLBACK + *********************************************/ + +.no-transforms { + overflow-y: auto; +} + +.no-transforms .reveal { + overflow: visible; +} + +.no-transforms .reveal .slides { + position: relative; + width: 80%; + max-width: 1280px; + height: auto; + top: 0; + margin: 0 auto; + text-align: center; +} + +.no-transforms .reveal .controls, +.no-transforms .reveal .progress { + display: none; +} + +.no-transforms .reveal .slides section { + display: block; + opacity: 1; + position: relative; + height: auto; + min-height: 0; + top: 0; + left: 0; + margin: 10vh 0; + margin: 70px 0; + transform: none; +} + +.reveal .no-transition, +.reveal .no-transition * { + transition: none !important; +} + + +/********************************************* + * PER-SLIDE BACKGROUNDS + *********************************************/ + +.reveal .backgrounds { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + perspective: 600px; +} + .reveal .slide-background { + display: none; + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + visibility: hidden; + overflow: hidden; + + background-color: rgba( 0, 0, 0, 0 ); + + transition: all 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + } + + .reveal .slide-background-content { + position: absolute; + width: 100%; + height: 100%; + + background-position: 50% 50%; + background-repeat: no-repeat; + background-size: cover; + } + + .reveal .slide-background.stack { + display: block; + } + + .reveal .slide-background.present { + opacity: 1; + visibility: visible; + z-index: 2; + } + + .print-pdf .reveal .slide-background { + opacity: 1 !important; + visibility: visible !important; + } + +/* Video backgrounds */ +.reveal .slide-background video { + position: absolute; + width: 100%; + height: 100%; + max-width: none; + max-height: none; + top: 0; + left: 0; + object-fit: cover; +} + .reveal .slide-background[data-background-size="contain"] video { + object-fit: contain; + } + +/* Immediate transition style */ +.reveal[data-background-transition=none]>.backgrounds .slide-background, +.reveal>.backgrounds .slide-background[data-background-transition=none] { + transition: none; +} + +/* Slide */ +.reveal[data-background-transition=slide]>.backgrounds .slide-background, +.reveal>.backgrounds .slide-background[data-background-transition=slide] { + opacity: 1; + backface-visibility: hidden; +} + .reveal[data-background-transition=slide]>.backgrounds .slide-background.past, + .reveal>.backgrounds .slide-background.past[data-background-transition=slide] { + transform: translate(-100%, 0); + } + .reveal[data-background-transition=slide]>.backgrounds .slide-background.future, + .reveal>.backgrounds .slide-background.future[data-background-transition=slide] { + transform: translate(100%, 0); + } + + .reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past, + .reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide] { + transform: translate(0, -100%); + } + .reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future, + .reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide] { + transform: translate(0, 100%); + } + + +/* Convex */ +.reveal[data-background-transition=convex]>.backgrounds .slide-background.past, +.reveal>.backgrounds .slide-background.past[data-background-transition=convex] { + opacity: 0; + transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0); +} +.reveal[data-background-transition=convex]>.backgrounds .slide-background.future, +.reveal>.backgrounds .slide-background.future[data-background-transition=convex] { + opacity: 0; + transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0); +} + +.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.past, +.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=convex] { + opacity: 0; + transform: translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0); +} +.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.future, +.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=convex] { + opacity: 0; + transform: translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0); +} + + +/* Concave */ +.reveal[data-background-transition=concave]>.backgrounds .slide-background.past, +.reveal>.backgrounds .slide-background.past[data-background-transition=concave] { + opacity: 0; + transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0); +} +.reveal[data-background-transition=concave]>.backgrounds .slide-background.future, +.reveal>.backgrounds .slide-background.future[data-background-transition=concave] { + opacity: 0; + transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0); +} + +.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.past, +.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=concave] { + opacity: 0; + transform: translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0); +} +.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.future, +.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=concave] { + opacity: 0; + transform: translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0); +} + +/* Zoom */ +.reveal[data-background-transition=zoom]>.backgrounds .slide-background, +.reveal>.backgrounds .slide-background[data-background-transition=zoom] { + transition-timing-function: ease; +} + +.reveal[data-background-transition=zoom]>.backgrounds .slide-background.past, +.reveal>.backgrounds .slide-background.past[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + transform: scale(16); +} +.reveal[data-background-transition=zoom]>.backgrounds .slide-background.future, +.reveal>.backgrounds .slide-background.future[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + transform: scale(0.2); +} + +.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.past, +.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + transform: scale(16); +} +.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.future, +.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=zoom] { + opacity: 0; + visibility: hidden; + transform: scale(0.2); +} + + +/* Global transition speed settings */ +.reveal[data-transition-speed="fast"]>.backgrounds .slide-background { + transition-duration: 400ms; +} +.reveal[data-transition-speed="slow"]>.backgrounds .slide-background { + transition-duration: 1200ms; +} + + +/********************************************* + * OVERVIEW + *********************************************/ + +.reveal.overview { + perspective-origin: 50% 50%; + perspective: 700px; + + .slides { + // Fixes overview rendering errors in FF48+, not applied to + // other browsers since it degrades performance + -moz-transform-style: preserve-3d; + } + + .slides section { + height: 100%; + top: 0 !important; + opacity: 1 !important; + overflow: hidden; + visibility: visible !important; + cursor: pointer; + box-sizing: border-box; + } + .slides section:hover, + .slides section.present { + outline: 10px solid rgba(150,150,150,0.4); + outline-offset: 10px; + } + .slides section .fragment { + opacity: 1; + transition: none; + } + .slides section:after, + .slides section:before { + display: none !important; + } + .slides>section.stack { + padding: 0; + top: 0 !important; + background: none; + outline: none; + overflow: visible; + } + + .backgrounds { + perspective: inherit; + + // Fixes overview rendering errors in FF48+, not applied to + // other browsers since it degrades performance + -moz-transform-style: preserve-3d; + } + + .backgrounds .slide-background { + opacity: 1; + visibility: visible; + + // This can't be applied to the slide itself in Safari + outline: 10px solid rgba(150,150,150,0.1); + outline-offset: 10px; + } + + .backgrounds .slide-background.stack { + overflow: visible; + } +} + +// Disable transitions transitions while we're activating +// or deactivating the overview mode. +.reveal.overview .slides section, +.reveal.overview-deactivating .slides section { + transition: none; +} + +.reveal.overview .backgrounds .slide-background, +.reveal.overview-deactivating .backgrounds .slide-background { + transition: none; +} + + +/********************************************* + * RTL SUPPORT + *********************************************/ + +.reveal.rtl .slides, +.reveal.rtl .slides h1, +.reveal.rtl .slides h2, +.reveal.rtl .slides h3, +.reveal.rtl .slides h4, +.reveal.rtl .slides h5, +.reveal.rtl .slides h6 { + direction: rtl; + font-family: sans-serif; +} + +.reveal.rtl pre, +.reveal.rtl code { + direction: ltr; +} + +.reveal.rtl ol, +.reveal.rtl ul { + text-align: right; +} + +.reveal.rtl .progress span { + float: right +} + +/********************************************* + * PARALLAX BACKGROUND + *********************************************/ + +.reveal.has-parallax-background .backgrounds { + transition: all 0.8s ease; +} + +/* Global transition speed settings */ +.reveal.has-parallax-background[data-transition-speed="fast"] .backgrounds { + transition-duration: 400ms; +} +.reveal.has-parallax-background[data-transition-speed="slow"] .backgrounds { + transition-duration: 1200ms; +} + + +/********************************************* + * OVERLAY FOR LINK PREVIEWS AND HELP + *********************************************/ + +.reveal > .overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1000; + background: rgba( 0, 0, 0, 0.9 ); + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; +} + .reveal > .overlay.visible { + opacity: 1; + visibility: visible; + } + + .reveal > .overlay .spinner { + position: absolute; + display: block; + top: 50%; + left: 50%; + width: 32px; + height: 32px; + margin: -16px 0 0 -16px; + z-index: 10; + background-image: url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf%2F%2F%2F6%2Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%2FLy8vz8%2FAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%2BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ%2FV%2FnmOM82XiHRLYKhKP1oZmADdEAAAh%2BQQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY%2FCZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB%2BA4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6%2BHo7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq%2BB6QDtuetcaBPnW6%2BO7wDHpIiK9SaVK5GgV543tzjgGcghAgAh%2BQQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK%2B%2BG%2Bw48edZPK%2BM6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE%2BG%2BcD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm%2BFNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk%2BaV%2BoJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0%2FVNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc%2BXiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30%2FiI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE%2FjiuL04RGEBgwWhShRgQExHBAAh%2BQQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR%2BipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY%2BYip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd%2BMFCN6HAAIKgNggY0KtEBAAh%2BQQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1%2BvsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d%2BjYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg%2BygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0%2Bbm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h%2BKr0SJ8MFihpNbx%2B4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX%2BBP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA%3D%3D); + + visibility: visible; + opacity: 0.6; + transition: all 0.3s ease; + } + + .reveal > .overlay header { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 40px; + z-index: 2; + border-bottom: 1px solid #222; + } + .reveal > .overlay header a { + display: inline-block; + width: 40px; + height: 40px; + line-height: 36px; + padding: 0 10px; + float: right; + opacity: 0.6; + + box-sizing: border-box; + } + .reveal > .overlay header a:hover { + opacity: 1; + } + .reveal > .overlay header a .icon { + display: inline-block; + width: 20px; + height: 20px; + + background-position: 50% 50%; + background-size: 100%; + background-repeat: no-repeat; + } + .reveal > .overlay header a.close .icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC); + } + .reveal > .overlay header a.external .icon { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==); + } + + .reveal > .overlay .viewport { + position: absolute; + display: flex; + top: 40px; + right: 0; + bottom: 0; + left: 0; + } + + .reveal > .overlay.overlay-preview .viewport iframe { + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; + border: 0; + + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; + } + + .reveal > .overlay.overlay-preview.loaded .viewport iframe { + opacity: 1; + visibility: visible; + } + + .reveal > .overlay.overlay-preview.loaded .viewport-inner { + position: absolute; + z-index: -1; + left: 0; + top: 45%; + width: 100%; + text-align: center; + letter-spacing: normal; + } + .reveal > .overlay.overlay-preview .x-frame-error { + opacity: 0; + transition: opacity 0.3s ease 0.3s; + } + .reveal > .overlay.overlay-preview.loaded .x-frame-error { + opacity: 1; + } + + .reveal > .overlay.overlay-preview.loaded .spinner { + opacity: 0; + visibility: hidden; + transform: scale(0.2); + } + + .reveal > .overlay.overlay-help .viewport { + overflow: auto; + color: #fff; + } + + .reveal > .overlay.overlay-help .viewport .viewport-inner { + width: 600px; + margin: auto; + padding: 20px 20px 80px 20px; + text-align: center; + letter-spacing: normal; + } + + .reveal > .overlay.overlay-help .viewport .viewport-inner .title { + font-size: 20px; + } + + .reveal > .overlay.overlay-help .viewport .viewport-inner table { + border: 1px solid #fff; + border-collapse: collapse; + font-size: 16px; + } + + .reveal > .overlay.overlay-help .viewport .viewport-inner table th, + .reveal > .overlay.overlay-help .viewport .viewport-inner table td { + width: 200px; + padding: 14px; + border: 1px solid #fff; + vertical-align: middle; + } + + .reveal > .overlay.overlay-help .viewport .viewport-inner table th { + padding-top: 20px; + padding-bottom: 20px; + } + + +/********************************************* + * PLAYBACK COMPONENT + *********************************************/ + +.reveal .playback { + position: absolute; + left: 15px; + bottom: 20px; + z-index: 30; + cursor: pointer; + transition: all 400ms ease; + -webkit-tap-highlight-color: rgba( 0, 0, 0, 0 ); +} + +.reveal.overview .playback { + opacity: 0; + visibility: hidden; +} + + +/********************************************* + * CODE HIGHLGIHTING + *********************************************/ + +.reveal .hljs table { + margin: initial; +} + +.reveal .hljs-ln-code, +.reveal .hljs-ln-numbers { + padding: 0; + border: 0; +} + +.reveal .hljs-ln-numbers { + opacity: 0.6; + padding-right: 0.75em; + text-align: right; + vertical-align: top; +} + +.reveal .hljs.has-highlights tr:not(.highlight-line) { + opacity: 0.4; +} + +.reveal .hljs:not(:first-child).fragment { + position: absolute; + top: 0; + left: 0; + width: 100%; + box-sizing: border-box; +} + + +/********************************************* + * ROLLING LINKS + *********************************************/ + +.reveal .roll { + display: inline-block; + line-height: 1.2; + overflow: hidden; + + vertical-align: top; + perspective: 400px; + perspective-origin: 50% 50%; +} + .reveal .roll:hover { + background: none; + text-shadow: none; + } +.reveal .roll span { + display: block; + position: relative; + padding: 0 2px; + + pointer-events: none; + transition: all 400ms ease; + transform-origin: 50% 0%; + transform-style: preserve-3d; + backface-visibility: hidden; +} + .reveal .roll:hover span { + background: rgba(0,0,0,0.5); + transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg ); + } +.reveal .roll span:after { + content: attr(data-title); + + display: block; + position: absolute; + left: 0; + top: 0; + padding: 0 2px; + backface-visibility: hidden; + transform-origin: 50% 0%; + transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg ); +} + + +/********************************************* + * SPEAKER NOTES + *********************************************/ + +$notesWidthPercent: 25%; + +// Hide on-page notes +.reveal aside.notes { + display: none; +} + +// An interface element that can optionally be used to show the +// speaker notes to all viewers, on top of the presentation +.reveal .speaker-notes { + display: none; + position: absolute; + width: $notesWidthPercent / (1-$notesWidthPercent/100) * 1%; + height: 100%; + top: 0; + left: 100%; + padding: 14px 18px 14px 18px; + z-index: 1; + font-size: 18px; + line-height: 1.4; + border: 1px solid rgba( 0, 0, 0, 0.05 ); + color: #222; + background-color: #f5f5f5; + overflow: auto; + box-sizing: border-box; + text-align: left; + font-family: Helvetica, sans-serif; + -webkit-overflow-scrolling: touch; + + .notes-placeholder { + color: #ccc; + font-style: italic; + } + + &:focus { + outline: none; + } + + &:before { + content: 'Speaker notes'; + display: block; + margin-bottom: 10px; + opacity: 0.5; + } +} + + +.reveal.show-notes { + max-width: 100% - $notesWidthPercent; + overflow: visible; +} + +.reveal.show-notes .speaker-notes { + display: block; +} + +@media screen and (min-width: 1600px) { + .reveal .speaker-notes { + font-size: 20px; + } +} + +@media screen and (max-width: 1024px) { + .reveal.show-notes { + border-left: 0; + max-width: none; + max-height: 70%; + max-height: 70vh; + overflow: visible; + } + + .reveal.show-notes .speaker-notes { + top: 100%; + left: 0; + width: 100%; + height: (30/0.7)*1%; + height: 30vh; + border: 0; + } +} + +@media screen and (max-width: 600px) { + .reveal.show-notes { + max-height: 60%; + max-height: 60vh; + } + + .reveal.show-notes .speaker-notes { + top: 100%; + height: (40/0.6)*1%; + height: 40vh; + } + + .reveal .speaker-notes { + font-size: 14px; + } +} + + +/********************************************* + * ZOOM PLUGIN + *********************************************/ + +.zoomed .reveal *, +.zoomed .reveal *:before, +.zoomed .reveal *:after { + backface-visibility: visible !important; +} + +.zoomed .reveal .progress, +.zoomed .reveal .controls { + opacity: 0; +} + +.zoomed .reveal .roll span { + background: none; +} + +.zoomed .reveal .roll span:after { + visibility: hidden; +} diff --git a/AdvancedCppV2/css/theme/README.md b/AdvancedCppV2/css/theme/README.md new file mode 100644 index 0000000..5ebe72a --- /dev/null +++ b/AdvancedCppV2/css/theme/README.md @@ -0,0 +1,21 @@ +## Dependencies + +Themes are written using Sass to keep things modular and reduce the need for repeated selectors across files. Make sure that you have the reveal.js development environment including the Grunt dependencies installed before proceeding: https://github.com/hakimel/reveal.js#full-setup + +## Creating a Theme + +To create your own theme, start by duplicating a ```.scss``` file in [/css/theme/source](https://github.com/hakimel/reveal.js/blob/master/css/theme/source). It will be automatically compiled by Grunt from Sass to CSS (see the [Gruntfile](https://github.com/hakimel/reveal.js/blob/master/gruntfile.js)) when you run `npm run build -- css-themes`. + +Each theme file does four things in the following order: + +1. **Include [/css/theme/template/mixins.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/mixins.scss)** +Shared utility functions. + +2. **Include [/css/theme/template/settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss)** +Declares a set of custom variables that the template file (step 4) expects. Can be overridden in step 3. + +3. **Override** +This is where you override the default theme. Either by specifying variables (see [settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss) for reference) or by adding any selectors and styles you please. + +4. **Include [/css/theme/template/theme.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/theme.scss)** +The template theme file which will generate final CSS output based on the currently defined variables. diff --git a/AdvancedCppV2/css/theme/beige.css b/AdvancedCppV2/css/theme/beige.css new file mode 100644 index 0000000..615dd6d --- /dev/null +++ b/AdvancedCppV2/css/theme/beige.css @@ -0,0 +1,277 @@ +/** + * Beige theme for reveal.js. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ +@import url(../../lib/font/league-gothic/league-gothic.css); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #f7f2d3; + background: -moz-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, white), color-stop(100%, #f7f2d3)); + background: -webkit-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); + background: -o-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); + background: -ms-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); + background: radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); + background-color: #f7f3de; } + +.reveal { + font-family: "Lato", sans-serif; + font-size: 40px; + font-weight: normal; + color: #333; } + +::selection { + color: #fff; + background: rgba(79, 64, 28, 0.99); + text-shadow: none; } + +::-moz-selection { + color: #fff; + background: rgba(79, 64, 28, 0.99); + text-shadow: none; } + +.reveal .slides section, +.reveal .slides section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #333; + font-family: "League Gothic", Impact, sans-serif; + font-weight: normal; + line-height: 1.2; + letter-spacing: normal; + text-transform: uppercase; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } + +.reveal code { + font-family: monospace; + text-transform: none; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; + font-size: smaller; } + +.reveal sub { + vertical-align: sub; + font-size: smaller; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #8b743d; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #c0a86e; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #564826; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #333; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #8b743d; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls { + color: #8b743d; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: #8b743d; } + +.reveal .progress span { + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/********************************************* + * PRINT BACKGROUND + *********************************************/ +@media print { + .backgrounds { + background-color: #f7f3de; } } diff --git a/AdvancedCppV2/css/theme/black.css b/AdvancedCppV2/css/theme/black.css new file mode 100644 index 0000000..7dd88c2 --- /dev/null +++ b/AdvancedCppV2/css/theme/black.css @@ -0,0 +1,273 @@ +/** + * Black theme for reveal.js. This is the opposite of the 'white' theme. + * + * By Hakim El Hattab, http://hakim.se + */ +@import url(../../lib/font/source-sans-pro/source-sans-pro.css); +section.has-light-background, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4, section.has-light-background h5, section.has-light-background h6 { + color: #222; } + +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #191919; + background-color: #191919; } + +.reveal { + font-family: "Source Sans Pro", Helvetica, sans-serif; + font-size: 42px; + font-weight: normal; + color: #fff; } + +::selection { + color: #fff; + background: #bee4fd; + text-shadow: none; } + +::-moz-selection { + color: #fff; + background: #bee4fd; + text-shadow: none; } + +.reveal .slides section, +.reveal .slides section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #fff; + font-family: "Source Sans Pro", Helvetica, sans-serif; + font-weight: 600; + line-height: 1.2; + letter-spacing: normal; + text-transform: uppercase; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 2.5em; } + +.reveal h2 { + font-size: 1.6em; } + +.reveal h3 { + font-size: 1.3em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } + +.reveal code { + font-family: monospace; + text-transform: none; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; + font-size: smaller; } + +.reveal sub { + vertical-align: sub; + font-size: smaller; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #42affa; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #8dcffc; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #068de9; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #fff; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #42affa; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls { + color: #42affa; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: #42affa; } + +.reveal .progress span { + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/********************************************* + * PRINT BACKGROUND + *********************************************/ +@media print { + .backgrounds { + background-color: #191919; } } diff --git a/AdvancedCppV2/css/theme/blood.css b/AdvancedCppV2/css/theme/blood.css new file mode 100644 index 0000000..5cbd488 --- /dev/null +++ b/AdvancedCppV2/css/theme/blood.css @@ -0,0 +1,296 @@ +/** + * Blood theme for reveal.js + * Author: Walther http://github.com/Walther + * + * Designed to be used with highlight.js theme + * "monokai_sublime.css" available from + * https://github.com/isagalaev/highlight.js/ + * + * For other themes, change $codeBackground accordingly. + * + */ +@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic); +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #222; + background-color: #222; } + +.reveal { + font-family: Ubuntu, "sans-serif"; + font-size: 40px; + font-weight: normal; + color: #eee; } + +::selection { + color: #fff; + background: #a23; + text-shadow: none; } + +::-moz-selection { + color: #fff; + background: #a23; + text-shadow: none; } + +.reveal .slides section, +.reveal .slides section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #eee; + font-family: Ubuntu, "sans-serif"; + font-weight: normal; + line-height: 1.2; + letter-spacing: normal; + text-transform: uppercase; + text-shadow: 2px 2px 2px #222; + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } + +.reveal code { + font-family: monospace; + text-transform: none; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; + font-size: smaller; } + +.reveal sub { + vertical-align: sub; + font-size: smaller; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #a23; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #dd5566; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #6a1520; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #eee; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #a23; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls { + color: #a23; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: #a23; } + +.reveal .progress span { + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/********************************************* + * PRINT BACKGROUND + *********************************************/ +@media print { + .backgrounds { + background-color: #222; } } + +.reveal p { + font-weight: 300; + text-shadow: 1px 1px #222; } + +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + font-weight: 700; } + +.reveal p code { + background-color: #23241f; + display: inline-block; + border-radius: 7px; } + +.reveal small code { + vertical-align: baseline; } diff --git a/AdvancedCppV2/css/theme/coders.css b/AdvancedCppV2/css/theme/coders.css new file mode 100644 index 0000000..133b81e --- /dev/null +++ b/AdvancedCppV2/css/theme/coders.css @@ -0,0 +1,308 @@ +/** + * Coders School theme for reveal.js. + * + * By Łukasz "Lukin" Ziobroń + */ +@import url(../../lib/font/source-sans-pro/source-sans-pro.css); +@import url(../../lib/font/rajdhani/rajdhani.css); +section.has-light-background, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4, section.has-light-background h5, section.has-light-background h6 { + color: #000; } + +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #cac7c7; + background-color: #cac7c7; + background-image: url(../../img/altkom_logo.png); + background-size: 12%; + background-repeat: no-repeat; + background-position: 2% 98%; } + +.reveal { + font-family: Rajdhani, "Source Sans Pro", Helvetica, sans-serif; + font-size: 40px; + font-weight: normal; + color: #000; + /* frame for head - streaming + background-image: url(../../img/talking_head_placeholder.png); + background-size: 320px 180px; + background-repeat: no-repeat; + background-position: 98% 2%; */ } + +::selection { + color: #000; + background: #cac7c7; + text-shadow: none; } + +::-moz-selection { + color: #000; + background: #cac7c7; + text-shadow: none; } + +.reveal .slides section, +.reveal .slides section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 10px 0 20px 0; + color: #000; + font-family: "Rajdhani", "Source Sans Pro", Helvetica, sans-serif; + font-weight: 600; + line-height: 1.2; + letter-spacing: normal; + text-transform: uppercase; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 2.5em; } + +.reveal h2 { + font-size: 1.6em; } + +.reveal h3 { + font-size: 1.3em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + font-size: 0.8em; + line-height: 1.3; + text-align: justify; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: justify; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; + font-size: 0.8em; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 95%; + margin: 20px auto; + text-align: left; + font-size: 0.6em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + /*box-shadow: 0px 15px 30px rgba(0, 0, 0, 0.15);*/ } + +.reveal code { + font-family: monospace; + text-transform: none; } + +.reveal pre code { + display: block; + padding: 15px; + overflow: auto; + max-height: 560px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; + font-size: smaller; } + +.reveal sub { + vertical-align: sub; + font-size: smaller; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #cf802a; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #ce904e; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #068de9; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #fff; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + background: none; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.05); + border-color: #ce904e; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls { + color: #cf802a; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: #cf802a; } + +.reveal .progress span { + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/********************************************* + * PRINT BACKGROUND + *********************************************/ +@media print { + .backgrounds { + background-color: #191919; } } + +/********************************************* + * OWN BOXES + *********************************************/ +.reveal .box { + position: absolute; + /*box-shadow: 0 1px 4px rgba(0,0,0,0.5), 0 5px 25px rgba(0,0,0,0.2);*/ + background-color: rgba(0, 0, 0, 0.7); + color: #fff; + padding: 20px; + margin: 20px 0; + font-size: 0.6em; + text-align: left; } + +/********************************************* + * MULTICOLUMN SUPPORT + *********************************************/ +.multicolumn { + display: flex; } +.col { + flex: 1; } diff --git a/AdvancedCppV2/css/theme/coders_white.css b/AdvancedCppV2/css/theme/coders_white.css new file mode 100644 index 0000000..79b423c --- /dev/null +++ b/AdvancedCppV2/css/theme/coders_white.css @@ -0,0 +1,294 @@ +/** + * Coders School theme for reveal.js. + * + * By Łukasz "Lukin" Ziobroń + */ +@import url(../../lib/font/source-sans-pro/source-sans-pro.css); +section.has-light-background, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4, section.has-light-background h5, section.has-light-background h6 { + color: #222; } + +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #fff; + background-color: #fff; + background-image: url(../../img/altkom_logo.png); + background-size: 10%; + background-repeat: no-repeat; + background-position: 1% 98%; } + +.reveal { + font-family: "Source Sans Pro", Helvetica, sans-serif; + font-size: 40px; + font-weight: normal; + color: #222; } + +::selection { + color: #fff; + background: #bee4fd; + text-shadow: none; } + +::-moz-selection { + color: #fff; + background: #bee4fd; + text-shadow: none; } + +.reveal .slides section, +.reveal .slides section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #222; + font-family: "Source Sans Pro", Helvetica, sans-serif; + font-weight: 600; + line-height: 1.2; + letter-spacing: normal; + text-transform: uppercase; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 2.5em; } + +.reveal h2 { + font-size: 1.6em; } + +.reveal h3 { + font-size: 1.3em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + font-size: 0.8em; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; + font-size: 0.9em; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.6em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 15px 30px rgba(0, 0, 0, 0.15); } + +.reveal code { + font-family: monospace; + text-transform: none; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 560px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; + font-size: smaller; } + +.reveal sub { + vertical-align: sub; + font-size: smaller; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #cf802a; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #ce904e; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #068de9; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #222; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + background: none; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.05); + border-color: #ce904e; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls { + color: #cf802a; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: #cf802a; } + +.reveal .progress span { + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/********************************************* + * PRINT BACKGROUND + *********************************************/ +@media print { + .backgrounds { + background-color: #191919; } } + +/********************************************* + * OWN BOXES + *********************************************/ +.reveal .box { + position: absolute; + box-shadow: 0 1px 4px rgba(0,0,0,0.5), 0 5px 25px rgba(0,0,0,0.2); + background-color: rgba(0, 0, 0, 0.7); + color: #fff; + padding: 20px; + margin: 20px 0; + font-size: 0.6em; + text-align: left; +} \ No newline at end of file diff --git a/AdvancedCppV2/css/theme/league.css b/AdvancedCppV2/css/theme/league.css new file mode 100644 index 0000000..f8fba4d --- /dev/null +++ b/AdvancedCppV2/css/theme/league.css @@ -0,0 +1,279 @@ +/** + * League theme for reveal.js. + * + * This was the default theme pre-3.0.0. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ +@import url(../../lib/font/league-gothic/league-gothic.css); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #1c1e20; + background: -moz-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #555a5f), color-stop(100%, #1c1e20)); + background: -webkit-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); + background: -o-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); + background: -ms-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); + background: radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); + background-color: #2b2b2b; } + +.reveal { + font-family: "Lato", sans-serif; + font-size: 40px; + font-weight: normal; + color: #eee; } + +::selection { + color: #fff; + background: #FF5E99; + text-shadow: none; } + +::-moz-selection { + color: #fff; + background: #FF5E99; + text-shadow: none; } + +.reveal .slides section, +.reveal .slides section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #eee; + font-family: "League Gothic", Impact, sans-serif; + font-weight: normal; + line-height: 1.2; + letter-spacing: normal; + text-transform: uppercase; + text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } + +.reveal code { + font-family: monospace; + text-transform: none; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; + font-size: smaller; } + +.reveal sub { + vertical-align: sub; + font-size: smaller; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #13DAEC; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #71e9f4; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #0d99a5; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #eee; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #13DAEC; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls { + color: #13DAEC; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: #13DAEC; } + +.reveal .progress span { + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/********************************************* + * PRINT BACKGROUND + *********************************************/ +@media print { + .backgrounds { + background-color: #2b2b2b; } } diff --git a/AdvancedCppV2/css/theme/moon.css b/AdvancedCppV2/css/theme/moon.css new file mode 100644 index 0000000..d18f526 --- /dev/null +++ b/AdvancedCppV2/css/theme/moon.css @@ -0,0 +1,277 @@ +/** + * Solarized Dark theme for reveal.js. + * Author: Achim Staebler + */ +@import url(../../lib/font/league-gothic/league-gothic.css); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); +/** + * Solarized colors by Ethan Schoonover + */ +html * { + color-profile: sRGB; + rendering-intent: auto; } + +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #002b36; + background-color: #002b36; } + +.reveal { + font-family: "Lato", sans-serif; + font-size: 40px; + font-weight: normal; + color: #93a1a1; } + +::selection { + color: #fff; + background: #d33682; + text-shadow: none; } + +::-moz-selection { + color: #fff; + background: #d33682; + text-shadow: none; } + +.reveal .slides section, +.reveal .slides section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #eee8d5; + font-family: "League Gothic", Impact, sans-serif; + font-weight: normal; + line-height: 1.2; + letter-spacing: normal; + text-transform: uppercase; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } + +.reveal code { + font-family: monospace; + text-transform: none; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; + font-size: smaller; } + +.reveal sub { + vertical-align: sub; + font-size: smaller; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #268bd2; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #78b9e6; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #1a6091; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #93a1a1; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #268bd2; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls { + color: #268bd2; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: #268bd2; } + +.reveal .progress span { + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/********************************************* + * PRINT BACKGROUND + *********************************************/ +@media print { + .backgrounds { + background-color: #002b36; } } diff --git a/AdvancedCppV2/css/theme/night.css b/AdvancedCppV2/css/theme/night.css new file mode 100644 index 0000000..f5ccb52 --- /dev/null +++ b/AdvancedCppV2/css/theme/night.css @@ -0,0 +1,271 @@ +/** + * Black theme for reveal.js. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ +@import url(https://fonts.googleapis.com/css?family=Montserrat:700); +@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic); +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #111; + background-color: #111; } + +.reveal { + font-family: "Open Sans", sans-serif; + font-size: 40px; + font-weight: normal; + color: #eee; } + +::selection { + color: #fff; + background: #e7ad52; + text-shadow: none; } + +::-moz-selection { + color: #fff; + background: #e7ad52; + text-shadow: none; } + +.reveal .slides section, +.reveal .slides section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #eee; + font-family: "Montserrat", Impact, sans-serif; + font-weight: normal; + line-height: 1.2; + letter-spacing: -0.03em; + text-transform: none; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } + +.reveal code { + font-family: monospace; + text-transform: none; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; + font-size: smaller; } + +.reveal sub { + vertical-align: sub; + font-size: smaller; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #e7ad52; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #f3d7ac; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #d08a1d; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #eee; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #e7ad52; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls { + color: #e7ad52; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: #e7ad52; } + +.reveal .progress span { + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/********************************************* + * PRINT BACKGROUND + *********************************************/ +@media print { + .backgrounds { + background-color: #111; } } diff --git a/AdvancedCppV2/css/theme/serif.css b/AdvancedCppV2/css/theme/serif.css new file mode 100644 index 0000000..6514a6f --- /dev/null +++ b/AdvancedCppV2/css/theme/serif.css @@ -0,0 +1,273 @@ +/** + * A simple theme for reveal.js presentations, similar + * to the default theme. The accent color is brown. + * + * This theme is Copyright (C) 2012-2013 Owen Versteeg, http://owenversteeg.com - it is MIT licensed. + */ +.reveal a { + line-height: 1.3em; } + +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #F0F1EB; + background-color: #F0F1EB; } + +.reveal { + font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif; + font-size: 40px; + font-weight: normal; + color: #000; } + +::selection { + color: #fff; + background: #26351C; + text-shadow: none; } + +::-moz-selection { + color: #fff; + background: #26351C; + text-shadow: none; } + +.reveal .slides section, +.reveal .slides section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #383D3D; + font-family: "Palatino Linotype", "Book Antiqua", Palatino, FreeSerif, serif; + font-weight: normal; + line-height: 1.2; + letter-spacing: normal; + text-transform: none; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } + +.reveal code { + font-family: monospace; + text-transform: none; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; + font-size: smaller; } + +.reveal sub { + vertical-align: sub; + font-size: smaller; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #51483D; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #8b7c69; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #25211c; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #000; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #51483D; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls { + color: #51483D; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: #51483D; } + +.reveal .progress span { + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/********************************************* + * PRINT BACKGROUND + *********************************************/ +@media print { + .backgrounds { + background-color: #F0F1EB; } } diff --git a/AdvancedCppV2/css/theme/simple.css b/AdvancedCppV2/css/theme/simple.css new file mode 100644 index 0000000..a7a29a6 --- /dev/null +++ b/AdvancedCppV2/css/theme/simple.css @@ -0,0 +1,276 @@ +/** + * A simple theme for reveal.js presentations, similar + * to the default theme. The accent color is darkblue. + * + * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed. + * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ +@import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); +section.has-dark-background, section.has-dark-background h1, section.has-dark-background h2, section.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 { + color: #fff; } + +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #fff; + background-color: #fff; } + +.reveal { + font-family: "Lato", sans-serif; + font-size: 40px; + font-weight: normal; + color: #000; } + +::selection { + color: #fff; + background: rgba(0, 0, 0, 0.99); + text-shadow: none; } + +::-moz-selection { + color: #fff; + background: rgba(0, 0, 0, 0.99); + text-shadow: none; } + +.reveal .slides section, +.reveal .slides section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #000; + font-family: "News Cycle", Impact, sans-serif; + font-weight: normal; + line-height: 1.2; + letter-spacing: normal; + text-transform: none; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } + +.reveal code { + font-family: monospace; + text-transform: none; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; + font-size: smaller; } + +.reveal sub { + vertical-align: sub; + font-size: smaller; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #00008B; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #0000f1; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #00003f; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #000; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #00008B; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls { + color: #00008B; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: #00008B; } + +.reveal .progress span { + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/********************************************* + * PRINT BACKGROUND + *********************************************/ +@media print { + .backgrounds { + background-color: #fff; } } diff --git a/AdvancedCppV2/css/theme/sky.css b/AdvancedCppV2/css/theme/sky.css new file mode 100644 index 0000000..d8734c9 --- /dev/null +++ b/AdvancedCppV2/css/theme/sky.css @@ -0,0 +1,280 @@ +/** + * Sky theme for reveal.js. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ +@import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic); +@import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700); +.reveal a { + line-height: 1.3em; } + +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #add9e4; + background: -moz-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%); + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #f7fbfc), color-stop(100%, #add9e4)); + background: -webkit-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%); + background: -o-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%); + background: -ms-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%); + background: radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%); + background-color: #f7fbfc; } + +.reveal { + font-family: "Open Sans", sans-serif; + font-size: 40px; + font-weight: normal; + color: #333; } + +::selection { + color: #fff; + background: #134674; + text-shadow: none; } + +::-moz-selection { + color: #fff; + background: #134674; + text-shadow: none; } + +.reveal .slides section, +.reveal .slides section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #333; + font-family: "Quicksand", sans-serif; + font-weight: normal; + line-height: 1.2; + letter-spacing: -0.08em; + text-transform: uppercase; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } + +.reveal code { + font-family: monospace; + text-transform: none; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; + font-size: smaller; } + +.reveal sub { + vertical-align: sub; + font-size: smaller; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #3b759e; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #74a7cb; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #264c66; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #333; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #3b759e; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls { + color: #3b759e; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: #3b759e; } + +.reveal .progress span { + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/********************************************* + * PRINT BACKGROUND + *********************************************/ +@media print { + .backgrounds { + background-color: #f7fbfc; } } diff --git a/AdvancedCppV2/css/theme/solarized.css b/AdvancedCppV2/css/theme/solarized.css new file mode 100644 index 0000000..f1a2b9e --- /dev/null +++ b/AdvancedCppV2/css/theme/solarized.css @@ -0,0 +1,277 @@ +/** + * Solarized Light theme for reveal.js. + * Author: Achim Staebler + */ +@import url(../../lib/font/league-gothic/league-gothic.css); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); +/** + * Solarized colors by Ethan Schoonover + */ +html * { + color-profile: sRGB; + rendering-intent: auto; } + +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #fdf6e3; + background-color: #fdf6e3; } + +.reveal { + font-family: "Lato", sans-serif; + font-size: 40px; + font-weight: normal; + color: #657b83; } + +::selection { + color: #fff; + background: #d33682; + text-shadow: none; } + +::-moz-selection { + color: #fff; + background: #d33682; + text-shadow: none; } + +.reveal .slides section, +.reveal .slides section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #586e75; + font-family: "League Gothic", Impact, sans-serif; + font-weight: normal; + line-height: 1.2; + letter-spacing: normal; + text-transform: uppercase; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 3.77em; } + +.reveal h2 { + font-size: 2.11em; } + +.reveal h3 { + font-size: 1.55em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } + +.reveal code { + font-family: monospace; + text-transform: none; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; + font-size: smaller; } + +.reveal sub { + vertical-align: sub; + font-size: smaller; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #268bd2; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #78b9e6; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #1a6091; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #657b83; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #268bd2; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls { + color: #268bd2; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: #268bd2; } + +.reveal .progress span { + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/********************************************* + * PRINT BACKGROUND + *********************************************/ +@media print { + .backgrounds { + background-color: #fdf6e3; } } diff --git a/AdvancedCppV2/css/theme/source/beige.scss b/AdvancedCppV2/css/theme/source/beige.scss new file mode 100644 index 0000000..5564f53 --- /dev/null +++ b/AdvancedCppV2/css/theme/source/beige.scss @@ -0,0 +1,39 @@ +/** + * Beige theme for reveal.js. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + + +// Include theme-specific fonts +@import url(../../lib/font/league-gothic/league-gothic.css); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); + + +// Override theme settings (see ../template/settings.scss) +$mainColor: #333; +$headingColor: #333; +$headingTextShadow: none; +$backgroundColor: #f7f3de; +$linkColor: #8b743d; +$linkColorHover: lighten( $linkColor, 20% ); +$selectionBackgroundColor: rgba(79, 64, 28, 0.99); +$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); + +// Background generator +@mixin bodyBackground() { + @include radial-gradient( rgba(247,242,211,1), rgba(255,255,255,1) ); +} + + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- \ No newline at end of file diff --git a/AdvancedCppV2/css/theme/source/black.scss b/AdvancedCppV2/css/theme/source/black.scss new file mode 100644 index 0000000..4720c8a --- /dev/null +++ b/AdvancedCppV2/css/theme/source/black.scss @@ -0,0 +1,49 @@ +/** + * Black theme for reveal.js. This is the opposite of the 'white' theme. + * + * By Hakim El Hattab, http://hakim.se + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + +// Include theme-specific fonts +@import url(../../lib/font/source-sans-pro/source-sans-pro.css); + + +// Override theme settings (see ../template/settings.scss) +$backgroundColor: #191919; + +$mainColor: #fff; +$headingColor: #fff; + +$mainFontSize: 42px; +$mainFont: 'Source Sans Pro', Helvetica, sans-serif; +$headingFont: 'Source Sans Pro', Helvetica, sans-serif; +$headingTextShadow: none; +$headingLetterSpacing: normal; +$headingTextTransform: uppercase; +$headingFontWeight: 600; +$linkColor: #42affa; +$linkColorHover: lighten( $linkColor, 15% ); +$selectionBackgroundColor: lighten( $linkColor, 25% ); + +$heading1Size: 2.5em; +$heading2Size: 1.6em; +$heading3Size: 1.3em; +$heading4Size: 1.0em; + +section.has-light-background { + &, h1, h2, h3, h4, h5, h6 { + color: #222; + } +} + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- \ No newline at end of file diff --git a/AdvancedCppV2/css/theme/source/blood.scss b/AdvancedCppV2/css/theme/source/blood.scss new file mode 100644 index 0000000..4533fc0 --- /dev/null +++ b/AdvancedCppV2/css/theme/source/blood.scss @@ -0,0 +1,78 @@ +/** + * Blood theme for reveal.js + * Author: Walther http://github.com/Walther + * + * Designed to be used with highlight.js theme + * "monokai_sublime.css" available from + * https://github.com/isagalaev/highlight.js/ + * + * For other themes, change $codeBackground accordingly. + * + */ + + // Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + +// Include theme-specific fonts + +@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic); + +// Colors used in the theme +$blood: #a23; +$coal: #222; +$codeBackground: #23241f; + +$backgroundColor: $coal; + +// Main text +$mainFont: Ubuntu, 'sans-serif'; +$mainColor: #eee; + +// Headings +$headingFont: Ubuntu, 'sans-serif'; +$headingTextShadow: 2px 2px 2px $coal; + +// h1 shadow, borrowed humbly from +// (c) Default theme by Hakim El Hattab +$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); + +// Links +$linkColor: $blood; +$linkColorHover: lighten( $linkColor, 20% ); + +// Text selection +$selectionBackgroundColor: $blood; +$selectionColor: #fff; + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- + +// some overrides after theme template import + +.reveal p { + font-weight: 300; + text-shadow: 1px 1px $coal; +} + +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + font-weight: 700; +} + +.reveal p code { + background-color: $codeBackground; + display: inline-block; + border-radius: 7px; +} + +.reveal small code { + vertical-align: baseline; +} \ No newline at end of file diff --git a/AdvancedCppV2/css/theme/source/league.scss b/AdvancedCppV2/css/theme/source/league.scss new file mode 100644 index 0000000..46ea04a --- /dev/null +++ b/AdvancedCppV2/css/theme/source/league.scss @@ -0,0 +1,34 @@ +/** + * League theme for reveal.js. + * + * This was the default theme pre-3.0.0. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + + +// Include theme-specific fonts +@import url(../../lib/font/league-gothic/league-gothic.css); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); + +// Override theme settings (see ../template/settings.scss) +$headingTextShadow: 0px 0px 6px rgba(0,0,0,0.2); +$heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); + +// Background generator +@mixin bodyBackground() { + @include radial-gradient( rgba(28,30,32,1), rgba(85,90,95,1) ); +} + + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- \ No newline at end of file diff --git a/AdvancedCppV2/css/theme/source/moon.scss b/AdvancedCppV2/css/theme/source/moon.scss new file mode 100644 index 0000000..e47e5b5 --- /dev/null +++ b/AdvancedCppV2/css/theme/source/moon.scss @@ -0,0 +1,57 @@ +/** + * Solarized Dark theme for reveal.js. + * Author: Achim Staebler + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + + +// Include theme-specific fonts +@import url(../../lib/font/league-gothic/league-gothic.css); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); + +/** + * Solarized colors by Ethan Schoonover + */ +html * { + color-profile: sRGB; + rendering-intent: auto; +} + +// Solarized colors +$base03: #002b36; +$base02: #073642; +$base01: #586e75; +$base00: #657b83; +$base0: #839496; +$base1: #93a1a1; +$base2: #eee8d5; +$base3: #fdf6e3; +$yellow: #b58900; +$orange: #cb4b16; +$red: #dc322f; +$magenta: #d33682; +$violet: #6c71c4; +$blue: #268bd2; +$cyan: #2aa198; +$green: #859900; + +// Override theme settings (see ../template/settings.scss) +$mainColor: $base1; +$headingColor: $base2; +$headingTextShadow: none; +$backgroundColor: $base03; +$linkColor: $blue; +$linkColorHover: lighten( $linkColor, 20% ); +$selectionBackgroundColor: $magenta; + + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- diff --git a/AdvancedCppV2/css/theme/source/night.scss b/AdvancedCppV2/css/theme/source/night.scss new file mode 100644 index 0000000..d49a282 --- /dev/null +++ b/AdvancedCppV2/css/theme/source/night.scss @@ -0,0 +1,34 @@ +/** + * Black theme for reveal.js. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + +// Include theme-specific fonts +@import url(https://fonts.googleapis.com/css?family=Montserrat:700); +@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic); + + +// Override theme settings (see ../template/settings.scss) +$backgroundColor: #111; + +$mainFont: 'Open Sans', sans-serif; +$linkColor: #e7ad52; +$linkColorHover: lighten( $linkColor, 20% ); +$headingFont: 'Montserrat', Impact, sans-serif; +$headingTextShadow: none; +$headingLetterSpacing: -0.03em; +$headingTextTransform: none; +$selectionBackgroundColor: #e7ad52; + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- \ No newline at end of file diff --git a/AdvancedCppV2/css/theme/source/serif.scss b/AdvancedCppV2/css/theme/source/serif.scss new file mode 100644 index 0000000..ec3fcb3 --- /dev/null +++ b/AdvancedCppV2/css/theme/source/serif.scss @@ -0,0 +1,35 @@ +/** + * A simple theme for reveal.js presentations, similar + * to the default theme. The accent color is brown. + * + * This theme is Copyright (C) 2012-2013 Owen Versteeg, http://owenversteeg.com - it is MIT licensed. + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + + +// Override theme settings (see ../template/settings.scss) +$mainFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif; +$mainColor: #000; +$headingFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif; +$headingColor: #383D3D; +$headingTextShadow: none; +$headingTextTransform: none; +$backgroundColor: #F0F1EB; +$linkColor: #51483D; +$linkColorHover: lighten( $linkColor, 20% ); +$selectionBackgroundColor: #26351C; + +.reveal a { + line-height: 1.3em; +} + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- diff --git a/AdvancedCppV2/css/theme/source/simple.scss b/AdvancedCppV2/css/theme/source/simple.scss new file mode 100644 index 0000000..394c9cd --- /dev/null +++ b/AdvancedCppV2/css/theme/source/simple.scss @@ -0,0 +1,43 @@ +/** + * A simple theme for reveal.js presentations, similar + * to the default theme. The accent color is darkblue. + * + * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed. + * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + + +// Include theme-specific fonts +@import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); + + +// Override theme settings (see ../template/settings.scss) +$mainFont: 'Lato', sans-serif; +$mainColor: #000; +$headingFont: 'News Cycle', Impact, sans-serif; +$headingColor: #000; +$headingTextShadow: none; +$headingTextTransform: none; +$backgroundColor: #fff; +$linkColor: #00008B; +$linkColorHover: lighten( $linkColor, 20% ); +$selectionBackgroundColor: rgba(0, 0, 0, 0.99); + +section.has-dark-background { + &, h1, h2, h3, h4, h5, h6 { + color: #fff; + } +} + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- \ No newline at end of file diff --git a/AdvancedCppV2/css/theme/source/sky.scss b/AdvancedCppV2/css/theme/source/sky.scss new file mode 100644 index 0000000..3fee67c --- /dev/null +++ b/AdvancedCppV2/css/theme/source/sky.scss @@ -0,0 +1,46 @@ +/** + * Sky theme for reveal.js. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + + +// Include theme-specific fonts +@import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic); +@import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700); + + +// Override theme settings (see ../template/settings.scss) +$mainFont: 'Open Sans', sans-serif; +$mainColor: #333; +$headingFont: 'Quicksand', sans-serif; +$headingColor: #333; +$headingLetterSpacing: -0.08em; +$headingTextShadow: none; +$backgroundColor: #f7fbfc; +$linkColor: #3b759e; +$linkColorHover: lighten( $linkColor, 20% ); +$selectionBackgroundColor: #134674; + +// Fix links so they are not cut off +.reveal a { + line-height: 1.3em; +} + +// Background generator +@mixin bodyBackground() { + @include radial-gradient( #add9e4, #f7fbfc ); +} + + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- diff --git a/AdvancedCppV2/css/theme/source/solarized.scss b/AdvancedCppV2/css/theme/source/solarized.scss new file mode 100644 index 0000000..912be56 --- /dev/null +++ b/AdvancedCppV2/css/theme/source/solarized.scss @@ -0,0 +1,63 @@ +/** + * Solarized Light theme for reveal.js. + * Author: Achim Staebler + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + + +// Include theme-specific fonts +@import url(../../lib/font/league-gothic/league-gothic.css); +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); + + +/** + * Solarized colors by Ethan Schoonover + */ +html * { + color-profile: sRGB; + rendering-intent: auto; +} + +// Solarized colors +$base03: #002b36; +$base02: #073642; +$base01: #586e75; +$base00: #657b83; +$base0: #839496; +$base1: #93a1a1; +$base2: #eee8d5; +$base3: #fdf6e3; +$yellow: #b58900; +$orange: #cb4b16; +$red: #dc322f; +$magenta: #d33682; +$violet: #6c71c4; +$blue: #268bd2; +$cyan: #2aa198; +$green: #859900; + +// Override theme settings (see ../template/settings.scss) +$mainColor: $base00; +$headingColor: $base01; +$headingTextShadow: none; +$backgroundColor: $base3; +$linkColor: $blue; +$linkColorHover: lighten( $linkColor, 20% ); +$selectionBackgroundColor: $magenta; + +// Background generator +// @mixin bodyBackground() { +// @include radial-gradient( rgba($base3,1), rgba(lighten($base3, 20%),1) ); +// } + + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- diff --git a/AdvancedCppV2/css/theme/source/white.scss b/AdvancedCppV2/css/theme/source/white.scss new file mode 100644 index 0000000..7f06ffd --- /dev/null +++ b/AdvancedCppV2/css/theme/source/white.scss @@ -0,0 +1,49 @@ +/** + * White theme for reveal.js. This is the opposite of the 'black' theme. + * + * By Hakim El Hattab, http://hakim.se + */ + + +// Default mixins and settings ----------------- +@import "../template/mixins"; +@import "../template/settings"; +// --------------------------------------------- + + +// Include theme-specific fonts +@import url(../../lib/font/source-sans-pro/source-sans-pro.css); + + +// Override theme settings (see ../template/settings.scss) +$backgroundColor: #fff; + +$mainColor: #222; +$headingColor: #222; + +$mainFontSize: 42px; +$mainFont: 'Source Sans Pro', Helvetica, sans-serif; +$headingFont: 'Source Sans Pro', Helvetica, sans-serif; +$headingTextShadow: none; +$headingLetterSpacing: normal; +$headingTextTransform: uppercase; +$headingFontWeight: 600; +$linkColor: #2a76dd; +$linkColorHover: lighten( $linkColor, 15% ); +$selectionBackgroundColor: lighten( $linkColor, 25% ); + +$heading1Size: 2.5em; +$heading2Size: 1.6em; +$heading3Size: 1.3em; +$heading4Size: 1.0em; + +section.has-dark-background { + &, h1, h2, h3, h4, h5, h6 { + color: #fff; + } +} + + +// Theme template ------------------------------ +@import "../template/theme"; +// --------------------------------------------- \ No newline at end of file diff --git a/AdvancedCppV2/css/theme/template/mixins.scss b/AdvancedCppV2/css/theme/template/mixins.scss new file mode 100644 index 0000000..e0c5606 --- /dev/null +++ b/AdvancedCppV2/css/theme/template/mixins.scss @@ -0,0 +1,29 @@ +@mixin vertical-gradient( $top, $bottom ) { + background: $top; + background: -moz-linear-gradient( top, $top 0%, $bottom 100% ); + background: -webkit-gradient( linear, left top, left bottom, color-stop(0%,$top), color-stop(100%,$bottom) ); + background: -webkit-linear-gradient( top, $top 0%, $bottom 100% ); + background: -o-linear-gradient( top, $top 0%, $bottom 100% ); + background: -ms-linear-gradient( top, $top 0%, $bottom 100% ); + background: linear-gradient( top, $top 0%, $bottom 100% ); +} + +@mixin horizontal-gradient( $top, $bottom ) { + background: $top; + background: -moz-linear-gradient( left, $top 0%, $bottom 100% ); + background: -webkit-gradient( linear, left top, right top, color-stop(0%,$top), color-stop(100%,$bottom) ); + background: -webkit-linear-gradient( left, $top 0%, $bottom 100% ); + background: -o-linear-gradient( left, $top 0%, $bottom 100% ); + background: -ms-linear-gradient( left, $top 0%, $bottom 100% ); + background: linear-gradient( left, $top 0%, $bottom 100% ); +} + +@mixin radial-gradient( $outer, $inner, $type: circle ) { + background: $outer; + background: -moz-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); + background: -webkit-gradient( radial, center center, 0px, center center, 100%, color-stop(0%,$inner), color-stop(100%,$outer) ); + background: -webkit-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); + background: -o-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); + background: -ms-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); + background: radial-gradient( center, $type cover, $inner 0%, $outer 100% ); +} \ No newline at end of file diff --git a/AdvancedCppV2/css/theme/template/settings.scss b/AdvancedCppV2/css/theme/template/settings.scss new file mode 100644 index 0000000..5a917f8 --- /dev/null +++ b/AdvancedCppV2/css/theme/template/settings.scss @@ -0,0 +1,45 @@ +// Base settings for all themes that can optionally be +// overridden by the super-theme + +// Background of the presentation +$backgroundColor: #2b2b2b; + +// Primary/body text +$mainFont: 'Lato', sans-serif; +$mainFontSize: 40px; +$mainColor: #eee; + +// Vertical spacing between blocks of text +$blockMargin: 20px; + +// Headings +$headingMargin: 0 0 $blockMargin 0; +$headingFont: 'League Gothic', Impact, sans-serif; +$headingColor: #eee; +$headingLineHeight: 1.2; +$headingLetterSpacing: normal; +$headingTextTransform: uppercase; +$headingTextShadow: none; +$headingFontWeight: normal; +$heading1TextShadow: $headingTextShadow; + +$heading1Size: 3.77em; +$heading2Size: 2.11em; +$heading3Size: 1.55em; +$heading4Size: 1.00em; + +$codeFont: monospace; + +// Links and actions +$linkColor: #13DAEC; +$linkColorHover: lighten( $linkColor, 20% ); + +// Text selection +$selectionBackgroundColor: #FF5E99; +$selectionColor: #fff; + +// Generates the presentation background, can be overridden +// to return a background image or gradient +@mixin bodyBackground() { + background: $backgroundColor; +} diff --git a/AdvancedCppV2/css/theme/template/theme.scss b/AdvancedCppV2/css/theme/template/theme.scss new file mode 100644 index 0000000..9ccfaf5 --- /dev/null +++ b/AdvancedCppV2/css/theme/template/theme.scss @@ -0,0 +1,325 @@ +// Base theme template for reveal.js + +/********************************************* + * GLOBAL STYLES + *********************************************/ + +body { + @include bodyBackground(); + background-color: $backgroundColor; +} + +.reveal { + font-family: $mainFont; + font-size: $mainFontSize; + font-weight: normal; + color: $mainColor; +} + +::selection { + color: $selectionColor; + background: $selectionBackgroundColor; + text-shadow: none; +} + +::-moz-selection { + color: $selectionColor; + background: $selectionBackgroundColor; + text-shadow: none; +} + +.reveal .slides section, +.reveal .slides section>section { + line-height: 1.3; + font-weight: inherit; +} + +/********************************************* + * HEADERS + *********************************************/ + +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: $headingMargin; + color: $headingColor; + + font-family: $headingFont; + font-weight: $headingFontWeight; + line-height: $headingLineHeight; + letter-spacing: $headingLetterSpacing; + + text-transform: $headingTextTransform; + text-shadow: $headingTextShadow; + + word-wrap: break-word; +} + +.reveal h1 {font-size: $heading1Size; } +.reveal h2 {font-size: $heading2Size; } +.reveal h3 {font-size: $heading3Size; } +.reveal h4 {font-size: $heading4Size; } + +.reveal h1 { + text-shadow: $heading1TextShadow; +} + + +/********************************************* + * OTHER + *********************************************/ + +.reveal p { + margin: $blockMargin 0; + line-height: 1.3; +} + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; +} +.reveal strong, +.reveal b { + font-weight: bold; +} + +.reveal em { + font-style: italic; +} + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + + text-align: left; + margin: 0 0 0 1em; +} + +.reveal ol { + list-style-type: decimal; +} + +.reveal ul { + list-style-type: disc; +} + +.reveal ul ul { + list-style-type: square; +} + +.reveal ul ul ul { + list-style-type: circle; +} + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; +} + +.reveal dt { + font-weight: bold; +} + +.reveal dd { + margin-left: 40px; +} + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: $blockMargin auto; + padding: 5px; + + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0,0,0,0.2); +} + .reveal blockquote p:first-child, + .reveal blockquote p:last-child { + display: inline-block; + } + +.reveal q { + font-style: italic; +} + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: $blockMargin auto; + + text-align: left; + font-size: 0.55em; + font-family: $codeFont; + line-height: 1.2em; + + word-wrap: break-word; + + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); +} + +.reveal code { + font-family: $codeFont; + text-transform: none; +} + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; +} + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; +} + +.reveal table th { + font-weight: bold; +} + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; +} + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; +} + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; +} + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; +} + +.reveal sup { + vertical-align: super; + font-size: smaller; +} +.reveal sub { + vertical-align: sub; + font-size: smaller; +} + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; +} + +.reveal small * { + vertical-align: top; +} + + +/********************************************* + * LINKS + *********************************************/ + +.reveal a { + color: $linkColor; + text-decoration: none; + + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; +} + .reveal a:hover { + color: $linkColorHover; + + text-shadow: none; + border: none; + } + +.reveal .roll span:after { + color: #fff; + background: darken( $linkColor, 15% ); +} + + +/********************************************* + * IMAGES + *********************************************/ + +.reveal section img { + margin: 15px 0px; + background: rgba(255,255,255,0.12); + border: 4px solid $mainColor; + + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); +} + + .reveal section img.plain { + border: 0; + box-shadow: none; + } + + .reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; + } + + .reveal a:hover img { + background: rgba(255,255,255,0.2); + border-color: $linkColor; + + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); + } + + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ + +.reveal .controls { + color: $linkColor; +} + + +/********************************************* + * PROGRESS BAR + *********************************************/ + +.reveal .progress { + background: rgba(0,0,0,0.2); + color: $linkColor; +} + .reveal .progress span { + -webkit-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + -moz-transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + } + +/********************************************* + * PRINT BACKGROUND + *********************************************/ + @media print { + .backgrounds { + background-color: $backgroundColor; + } +} diff --git a/AdvancedCppV2/css/theme/white.css b/AdvancedCppV2/css/theme/white.css new file mode 100644 index 0000000..43ef2c7 --- /dev/null +++ b/AdvancedCppV2/css/theme/white.css @@ -0,0 +1,273 @@ +/** + * White theme for reveal.js. This is the opposite of the 'black' theme. + * + * By Hakim El Hattab, http://hakim.se + */ +@import url(../../lib/font/source-sans-pro/source-sans-pro.css); +section.has-dark-background, section.has-dark-background h1, section.has-dark-background h2, section.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 { + color: #fff; } + +/********************************************* + * GLOBAL STYLES + *********************************************/ +body { + background: #fff; + background-color: #fff; } + +.reveal { + font-family: "Source Sans Pro", Helvetica, sans-serif; + font-size: 42px; + font-weight: normal; + color: #222; } + +::selection { + color: #fff; + background: #98bdef; + text-shadow: none; } + +::-moz-selection { + color: #fff; + background: #98bdef; + text-shadow: none; } + +.reveal .slides section, +.reveal .slides section > section { + line-height: 1.3; + font-weight: inherit; } + +/********************************************* + * HEADERS + *********************************************/ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #222; + font-family: "Source Sans Pro", Helvetica, sans-serif; + font-weight: 600; + line-height: 1.2; + letter-spacing: normal; + text-transform: uppercase; + text-shadow: none; + word-wrap: break-word; } + +.reveal h1 { + font-size: 2.5em; } + +.reveal h2 { + font-size: 1.6em; } + +.reveal h3 { + font-size: 1.3em; } + +.reveal h4 { + font-size: 1em; } + +.reveal h1 { + text-shadow: none; } + +/********************************************* + * OTHER + *********************************************/ +.reveal p { + margin: 20px 0; + line-height: 1.3; } + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; } + +.reveal strong, +.reveal b { + font-weight: bold; } + +.reveal em { + font-style: italic; } + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; } + +.reveal ol { + list-style-type: decimal; } + +.reveal ul { + list-style-type: disc; } + +.reveal ul ul { + list-style-type: square; } + +.reveal ul ul ul { + list-style-type: circle; } + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; } + +.reveal dt { + font-weight: bold; } + +.reveal dd { + margin-left: 40px; } + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; } + +.reveal q { + font-style: italic; } + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); } + +.reveal code { + font-family: monospace; + text-transform: none; } + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; } + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; } + +.reveal table th { + font-weight: bold; } + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; } + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; } + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; } + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; } + +.reveal sup { + vertical-align: super; + font-size: smaller; } + +.reveal sub { + vertical-align: sub; + font-size: smaller; } + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; } + +.reveal small * { + vertical-align: top; } + +/********************************************* + * LINKS + *********************************************/ +.reveal a { + color: #2a76dd; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; } + +.reveal a:hover { + color: #6ca0e8; + text-shadow: none; + border: none; } + +.reveal .roll span:after { + color: #fff; + background: #1a53a1; } + +/********************************************* + * IMAGES + *********************************************/ +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #222; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } + +.reveal section img.plain { + border: 0; + box-shadow: none; } + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; } + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #2a76dd; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +.reveal .controls { + color: #2a76dd; } + +/********************************************* + * PROGRESS BAR + *********************************************/ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: #2a76dd; } + +.reveal .progress span { + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } + +/********************************************* + * PRINT BACKGROUND + *********************************************/ +@media print { + .backgrounds { + background-color: #fff; } } diff --git a/AdvancedCppV2/demo.html b/AdvancedCppV2/demo.html new file mode 100644 index 0000000..cf05e88 --- /dev/null +++ b/AdvancedCppV2/demo.html @@ -0,0 +1,425 @@ + + + + + + + reveal.js – The HTML Presentation Framework + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+

Reveal.js

+

The HTML Presentation Framework

+

+ Created by Hakim El Hattab and contributors +

+
+ +
+

Hello There

+

+ reveal.js enables you to create beautiful interactive slide decks using HTML. This presentation will show you examples of what it can do. +

+
+ + +
+
+

Vertical Slides

+

Slides can be nested inside of each other.

+

Use the Space key to navigate through all slides.

+
+ + Down arrow + +
+
+

Basement Level 1

+

Nested slides are useful for adding additional detail underneath a high level horizontal slide.

+
+
+

Basement Level 2

+

That's it, time to go back up.

+
+ + Up arrow + +
+
+ +
+

Slides

+

+ Not a coder? Not a problem. There's a fully-featured visual editor for authoring these, try it out at https://slides.com. +

+
+ +
+

Point of View

+

+ Press ESC to enter the slide overview. +

+

+ Hold down the alt key (ctrl in Linux) and click on any element to zoom towards it using zoom.js. Click again to zoom back out. +

+

+ (NOTE: Use ctrl + click in Linux.) +

+
+ +
+

Touch Optimized

+

+ Presentations look great on touch devices, like mobile phones and tablets. Simply swipe through your slides. +

+
+ +
+ +
+ +
+
+

Fragments

+

Hit the next arrow...

+

... to step through ...

+

... a fragmented slide.

+ + +
+
+

Fragment Styles

+

There's different types of fragments, like:

+

grow

+

shrink

+

fade-out

+

+ fade-right, + up, + down, + left +

+

fade-in-then-out

+

fade-in-then-semi-out

+

Highlight red blue green

+
+
+ +
+

Transition Styles

+

+ You can select from different transitions, like:
+ None - + Fade - + Slide - + Convex - + Concave - + Zoom +

+
+ +
+

Themes

+

+ reveal.js comes with a few themes built in:
+ + Black (default) - + White - + League - + Sky - + Beige - + Simple
+ Serif - + Blood - + Night - + Moon - + Solarized +

+
+ +
+
+

Slide Backgrounds

+

+ Set data-background="#dddddd" on a slide to change the background color. All CSS color formats are supported. +

+ + Down arrow + +
+
+

Image Backgrounds

+
<section data-background="image.png">
+
+
+

Tiled Backgrounds

+
<section data-background="image.png" data-background-repeat="repeat" data-background-size="100px">
+
+
+
+

Video Backgrounds

+
<section data-background-video="video.mp4,video.webm">
+
+
+
+

... and GIFs!

+
+
+ +
+

Background Transitions

+

+ Different background transitions are available via the backgroundTransition option. This one's called "zoom". +

+
Reveal.configure({ backgroundTransition: 'zoom' })
+
+ +
+

Background Transitions

+

+ You can override background transitions per-slide. +

+
<section data-background-transition="zoom">
+
+ +
+
+

Iframe Backgrounds

+

Since reveal.js runs on the web, you can easily embed other web content. Try interacting with the page in the background.

+
+
+ +
+

Pretty Code

+

+import React, { useState } from 'react';
+
+function Example() {
+  const [count, setCount] = useState(0);
+
+  return (
+    <div>
+      <p>You clicked {count} times</p>
+      <button onClick={() => setCount(count + 1)}>
+        Click me
+      </button>
+    </div>
+  );
+}
+					
+

Code syntax highlighting courtesy of highlight.js.

+
+ +
+

Marvelous List

+
    +
  • No order here
  • +
  • Or here
  • +
  • Or here
  • +
  • Or here
  • +
+
+ +
+

Fantastic Ordered List

+
    +
  1. One is smaller than...
  2. +
  3. Two is smaller than...
  4. +
  5. Three!
  6. +
+
+ +
+

Tabular Tables

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ItemValueQuantity
Apples$17
Lemonade$218
Bread$32
+
+ +
+

Clever Quotes

+

+ These guys come in two forms, inline: The nice thing about standards is that there are so many to choose from and block: +

+
+ “For years there has been a theory that millions of monkeys typing at random on millions of typewriters would + reproduce the entire works of Shakespeare. The Internet has proven this theory to be untrue.” +
+
+ +
+

Intergalactic Interconnections

+

+ You can link between slides internally, + like this. +

+
+ +
+

Speaker View

+

There's a speaker view. It includes a timer, preview of the upcoming slide as well as your speaker notes.

+

Press the S key to try it out.

+ + +
+ +
+

Export to PDF

+

Presentations can be exported to PDF, here's an example:

+ +
+ +
+

Global State

+

+ Set data-state="something" on a slide and "something" + will be added as a class to the document element when the slide is open. This lets you + apply broader style changes, like switching the page background. +

+
+ +
+

State Events

+

+ Additionally custom events can be triggered on a per slide basis by binding to the data-state name. +

+

+Reveal.addEventListener( 'customevent', function() {
+	console.log( '"customevent" has fired' );
+} );
+					
+
+ +
+

Take a Moment

+

+ Press B or . on your keyboard to pause the presentation. This is helpful when you're on stage and want to take distracting slides off the screen. +

+
+ +
+

Much more

+ +
+ +
+

THE END

+

+ - Try the online editor
+ - Source code & documentation +

+
+ +
+ +
+ + + + + + + diff --git a/AdvancedCppV2/gruntfile.js b/AdvancedCppV2/gruntfile.js new file mode 100644 index 0000000..acf34b6 --- /dev/null +++ b/AdvancedCppV2/gruntfile.js @@ -0,0 +1,189 @@ +const sass = require('node-sass'); + +module.exports = grunt => { + + require('load-grunt-tasks')(grunt); + + let port = grunt.option('port') || 8000; + let root = grunt.option('root') || '.'; + + if (!Array.isArray(root)) root = [root]; + + // Project configuration + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + meta: { + banner: + '/*!\n' + + ' * reveal.js <%= pkg.version %> (<%= grunt.template.today("yyyy-mm-dd, HH:MM") %>)\n' + + ' * http://revealjs.com\n' + + ' * MIT licensed\n' + + ' *\n' + + ' * Copyright (C) 2020 Hakim El Hattab, http://hakim.se\n' + + ' */' + }, + + qunit: { + files: [ 'test/*.html' ] + }, + + uglify: { + options: { + banner: '<%= meta.banner %>\n', + ie8: true + }, + build: { + src: 'js/reveal.js', + dest: 'js/reveal.min.js' + } + }, + + sass: { + options: { + implementation: sass, + sourceMap: false + }, + core: { + src: 'css/reveal.scss', + dest: 'css/reveal.css' + }, + themes: { + expand: true, + cwd: 'css/theme/source', + src: ['*.sass', '*.scss'], + dest: 'css/theme', + ext: '.css' + } + }, + + autoprefixer: { + core: { + src: 'css/reveal.css' + } + }, + + cssmin: { + options: { + compatibility: 'ie9' + }, + compress: { + src: 'css/reveal.css', + dest: 'css/reveal.min.css' + } + }, + + jshint: { + options: { + curly: false, + eqeqeq: true, + immed: true, + esnext: true, + latedef: 'nofunc', + newcap: true, + noarg: true, + sub: true, + undef: true, + eqnull: true, + browser: true, + expr: true, + loopfunc: true, + globals: { + head: false, + module: false, + console: false, + unescape: false, + define: false, + exports: false, + require: false + } + }, + files: [ 'gruntfile.js', 'js/reveal.js' ] + }, + + connect: { + server: { + options: { + port: port, + base: root, + livereload: true, + open: true, + useAvailablePort: true + } + } + }, + + zip: { + bundle: { + src: [ + 'index.html', + 'css/**', + 'js/**', + 'lib/**', + 'images/**', + 'plugin/**', + '**.md' + ], + dest: 'reveal-js-presentation.zip' + } + }, + + watch: { + js: { + files: [ 'gruntfile.js', 'js/reveal.js' ], + tasks: 'js' + }, + theme: { + files: [ + 'css/theme/source/*.sass', + 'css/theme/source/*.scss', + 'css/theme/template/*.sass', + 'css/theme/template/*.scss' + ], + tasks: 'css-themes' + }, + css: { + files: [ 'css/reveal.scss' ], + tasks: 'css-core' + }, + test: { + files: [ 'test/*.html' ], + tasks: 'test' + }, + html: { + files: root.map(path => path + '/*.html') + }, + markdown: { + files: root.map(path => path + '/*.md') + }, + options: { + livereload: true + } + } + + }); + + // Default task + grunt.registerTask( 'default', [ 'css', 'js' ] ); + + // JS task + grunt.registerTask( 'js', [ 'jshint', 'uglify', 'qunit' ] ); + + // Theme CSS + grunt.registerTask( 'css-themes', [ 'sass:themes' ] ); + + // Core framework CSS + grunt.registerTask( 'css-core', [ 'sass:core', 'autoprefixer', 'cssmin' ] ); + + // All CSS + grunt.registerTask( 'css', [ 'sass', 'autoprefixer', 'cssmin' ] ); + + // Package presentation to archive + grunt.registerTask( 'package', [ 'default', 'zip' ] ); + + // Serve presentation locally + grunt.registerTask( 'serve', [ 'connect', 'watch' ] ); + + // Run tests + grunt.registerTask( 'test', [ 'jshint', 'qunit' ] ); + +}; diff --git a/AdvancedCppV2/img/altkom_logo.png b/AdvancedCppV2/img/altkom_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..abf064313043ccc16f18ee28e049848ed6d5d3b4 GIT binary patch literal 14919 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%0A7}ivC(8qO`H#v^X0Vt8AHiNK@WERj0o(#0 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%0Dy1^ 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

1VILEKF)c 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 oJ$#sP_4iYupTE6o$DEfBY{rbP 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 LUO8K1?iT+)PoJ-g literal 0 HcmV?d00001 diff --git a/AdvancedCppV2/Presentation/img/uniqueptrinverted.png b/AdvancedCppV2/Presentation/img/uniqueptrinverted.png new file mode 100644 index 0000000000000000000000000000000000000000..11ac9803418a61ab75482a7b49220bb374de4b46 GIT binary patch literal 31010 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 AS^xk5 literal 0 HcmV?d00001 diff --git a/AdvancedCppV2/Presentation/img/weakptrinverted.png b/AdvancedCppV2/Presentation/img/weakptrinverted.png new file mode 100644 index 0000000000000000000000000000000000000000..0cf727a87df6a8516c2ad6475d98a724e3e9acfd GIT binary patch literal 59294 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