├── .github └── workflows │ ├── codeql-analysis.yml │ └── run-all-tests.yml ├── .gitignore ├── CMakeLists.txt ├── LICENSE ├── README.md ├── apps ├── CMakeLists.txt ├── cppbase.cpp └── helloWorld.cpp ├── cmake_uninstall.cmake.in ├── docs ├── CMakeLists.txt └── html │ ├── README_8md.html │ ├── bc_s.png │ ├── bc_sd.png │ ├── bdwn.png │ ├── clipboard.js │ ├── closed.png │ ├── cookie.js │ ├── cppbaseAll_8hpp.html │ ├── cppbaseAll_8hpp__incl.map │ ├── cppbaseAll_8hpp__incl.md5 │ ├── cppbaseAll_8hpp__incl.png │ ├── cppbaseAll_8hpp_source.html │ ├── cppbase_all_8hpp.html │ ├── cppbase_all_8hpp__incl.map │ ├── cppbase_all_8hpp__incl.md5 │ ├── cppbase_all_8hpp__incl.png │ ├── cppbase_all_8hpp_source.html │ ├── dir_49e56c817e5e54854c35e136979f97ca.html │ ├── dir_d1bd97ed40e89648596a0852aac26258.html │ ├── dir_d1bd97ed40e89648596a0852aac26258.js │ ├── dir_d1bd97ed40e89648596a0852aac26258_dep.map │ ├── dir_d1bd97ed40e89648596a0852aac26258_dep.md5 │ ├── dir_d1bd97ed40e89648596a0852aac26258_dep.png │ ├── dir_d44c64559bbebec7f509842c48db8b23.html │ ├── dir_d44c64559bbebec7f509842c48db8b23.js │ ├── doc.png │ ├── doc.svg │ ├── docd.png │ ├── docd.svg │ ├── doxygen.css │ ├── doxygen.svg │ ├── doxygen_crawl.html │ ├── dynsections.js │ ├── factorial_8hpp.html │ ├── factorial_8hpp.js │ ├── factorial_8hpp__dep__incl.map │ ├── factorial_8hpp__dep__incl.md5 │ ├── factorial_8hpp__dep__incl.png │ ├── factorial_8hpp_source.html │ ├── files.html │ ├── files_dup.js │ ├── folderclosed.png │ ├── folderclosed.svg │ ├── folderclosedd.svg │ ├── folderopen.png │ ├── folderopen.svg │ ├── folderopend.svg │ ├── graph_legend.html │ ├── graph_legend.md5 │ ├── graph_legend.png │ ├── index.html │ ├── jquery.js │ ├── mainpage_8md.html │ ├── md_README.html │ ├── md___users_kartikkumar__documents_education_tu_delft_phd_workspace_cppbase_docs_mainpage.html │ ├── menu.js │ ├── menudata.js │ ├── minus.svg │ ├── minusd.svg │ ├── namespacecppbase.html │ ├── namespacemembers.html │ ├── namespacemembers_func.html │ ├── namespaces.html │ ├── namespaces_dup.js │ ├── nav_f.png │ ├── nav_fd.png │ ├── nav_g.png │ ├── nav_h.png │ ├── nav_hd.png │ ├── navtree.css │ ├── navtree.js │ ├── navtreedata.js │ ├── navtreeindex0.js │ ├── open.png │ ├── pages.html │ ├── plus.svg │ ├── plusd.svg │ ├── resize.js │ ├── search │ ├── all_0.html │ ├── all_0.js │ ├── all_1.html │ ├── all_1.js │ ├── all_2.html │ ├── all_2.js │ ├── close.svg │ ├── files_0.html │ ├── files_0.js │ ├── files_1.html │ ├── files_1.js │ ├── files_2.html │ ├── files_2.js │ ├── functions_0.html │ ├── functions_0.js │ ├── mag.svg │ ├── mag_d.svg │ ├── mag_sel.svg │ ├── mag_seld.svg │ ├── namespaces_0.html │ ├── namespaces_0.js │ ├── nomatches.html │ ├── pages_0.html │ ├── pages_0.js │ ├── search.css │ ├── search.js │ ├── search_l.png │ ├── search_m.png │ ├── search_r.png │ └── searchdata.js │ ├── splitbar.png │ ├── splitbard.png │ ├── sync_off.png │ ├── sync_on.png │ ├── tab_a.png │ ├── tab_ad.png │ ├── tab_b.png │ ├── tab_bd.png │ ├── tab_h.png │ ├── tab_hd.png │ ├── tab_s.png │ ├── tab_sd.png │ └── tabs.css ├── include ├── CMakeLists.txt └── cppbase │ ├── cppbaseAll.hpp │ └── factorial.hpp ├── src ├── CMakeLists.txt └── factorial.cpp ├── tests ├── CMakeLists.txt └── testFactorial.cpp └── version.hpp.in /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- 1 | # For most projects, this workflow file will not need changing; you simply need 2 | # to commit it to your repository. 3 | # 4 | # You may wish to alter this file to override the set of languages analyzed, 5 | # or to provide custom queries or build logic. 6 | # 7 | # ******** NOTE ******** 8 | # We have attempted to detect the languages in your repository. Please check 9 | # the `language` matrix defined below to confirm you have the correct set of 10 | # supported CodeQL languages. 11 | # 12 | name: "CodeQL" 13 | 14 | on: 15 | push: 16 | branches: [ "master" ] 17 | pull_request: 18 | # The branches below must be a subset of the branches above 19 | branches: [ "master" ] 20 | schedule: 21 | - cron: '24 0 * * 5' 22 | 23 | jobs: 24 | analyze: 25 | name: Analyze 26 | runs-on: ubuntu-latest 27 | permissions: 28 | actions: read 29 | contents: read 30 | security-events: write 31 | 32 | strategy: 33 | fail-fast: false 34 | matrix: 35 | language: [ 'cpp' ] 36 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] 37 | # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support 38 | 39 | steps: 40 | - name: Checkout repository 41 | uses: actions/checkout@v3 42 | 43 | # Initializes the CodeQL tools for scanning. 44 | - name: Initialize CodeQL 45 | uses: github/codeql-action/init@v2 46 | with: 47 | languages: ${{ matrix.language }} 48 | # If you wish to specify custom queries, you can do so here or in a config file. 49 | # By default, queries listed here will override any specified in a config file. 50 | # Prefix the list here with "+" to use these queries and those in the config file. 51 | 52 | # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs 53 | # queries: security-extended,security-and-quality 54 | 55 | 56 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). 57 | # If this step fails, then you should remove it and run the build manually (see below) 58 | - name: Autobuild 59 | uses: github/codeql-action/autobuild@v2 60 | 61 | # ℹ️ Command-line programs to run using the OS shell. 62 | # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun 63 | 64 | # If the Autobuild fails above, remove it and uncomment the following three lines. 65 | # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. 66 | 67 | # - run: | 68 | # echo "Run, Build Application using script" 69 | # ./location_of_script_within_repo/buildscript.sh 70 | 71 | - name: Perform CodeQL Analysis 72 | uses: github/codeql-action/analyze@v2 73 | -------------------------------------------------------------------------------- /.github/workflows/run-all-tests.yml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com) 2 | # Distributed under the MIT License. 3 | # See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT 4 | 5 | # This workflow is based off of the GitHub Actions documentation: 6 | # - https://docs.github.com/en/actions 7 | 8 | name: run-all-tests 9 | on: [push] 10 | jobs: 11 | run-tests: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v2.4.2 16 | - name: Setup CMake 17 | uses: jwlawson/actions-setup-cmake@v1.12 18 | with: 19 | cmake-version: '3.23.x' 20 | - name: Build CMake project 21 | run: | 22 | cmake -S . -B build -DBUILD_TESTING=on 23 | cmake --build build 24 | - name: Run tests 25 | run: make -C build test 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | *.obj 6 | 7 | # Precompiled Headers 8 | *.gch 9 | *.pch 10 | 11 | # Compiled Dynamic libraries 12 | *.so 13 | *.dylib 14 | *.dll 15 | 16 | # Fortran module files 17 | *.mod 18 | 19 | # Compiled Static libraries 20 | *.lai 21 | *.la 22 | *.a 23 | *.lib 24 | 25 | # Executables 26 | *.exe 27 | *.out 28 | *.app 29 | 30 | # Build system 31 | build 32 | bin 33 | lib 34 | doxydocs 35 | temp 36 | debug 37 | external 38 | 39 | # Project files 40 | *.sublime* 41 | 42 | # System files 43 | .DS_Store 44 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com) 2 | # Distributed under the MIT License. 3 | # See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT 4 | 5 | # The CMake setup for this project is based off of the following source: 6 | # - https://cliutils.gitlab.io/modern-cmake 7 | 8 | # Make sure that an old version of CMake is not being used so modern features are available 9 | # Update this to the mix, max versions that are applicable 10 | cmake_minimum_required(VERSION 3.14) 11 | if(${CMAKE_VERSION} VERSION_LESS 3.23) 12 | cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) 13 | else() 14 | cmake_policy(VERSION 3.23) 15 | endif() 16 | 17 | # Set up project details 18 | project( 19 | cppbase 20 | VERSION 1.0 21 | DESCRIPTION "A C++ template project" 22 | LANGUAGES CXX 23 | ) 24 | 25 | # Require out-of-source builds 26 | # Source: https://stackoverflow.com/questions/11143062/getting-cmake-to-build-out-of-source-without-wrapping-scripts 27 | if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) 28 | message(FATAL_ERROR "In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there. You may need to remove CMakeCache.txt.") 29 | endif() 30 | 31 | # Support folders in IDEs 32 | set_property(GLOBAL PROPERTY USE_FOLDERS ON) 33 | 34 | # Enable downloads during the configure step using FetchContent 35 | # FetchContent was added in CMake 3.11 36 | # FetchContent_MakeAvailable was not added until CMake 3.14 37 | include(FetchContent) 38 | 39 | # Instantiate version file based on project details 40 | configure_file ( 41 | "${PROJECT_SOURCE_DIR}/version.hpp.in" 42 | "${PROJECT_BINARY_DIR}/include/${project_name}/version.hpp" 43 | ) 44 | 45 | # Add subdirs for headers, sources, and executables 46 | # Subdirs contain CMakeLists.txt files with commands to setup build 47 | # Comment the following line if the library is header-only 48 | add_subdirectory(src) 49 | # Uncomment the following line if the library is header-only 50 | #add_subdirectory(include) 51 | # Comment the following line if there are no applications in this project 52 | add_subdirectory(apps) 53 | 54 | # Enable testing 55 | if(BUILD_TESTING) 56 | include(CTest) 57 | add_subdirectory(tests) 58 | endif(BUILD_TESTING) 59 | 60 | # Build Doxygen docs 61 | if(BUILD_DOCS) 62 | find_package(Doxygen OPTIONAL_COMPONENTS dot) 63 | if(Doxygen_FOUND) 64 | add_subdirectory(docs) 65 | else() 66 | message(STATUS "Doxygen not found, not building docs") 67 | endif(Doxygen_FOUND) 68 | endif(BUILD_DOCS) 69 | 70 | # Set up uninstall target to enable 'make uninstall' 71 | # Source: https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#can-i-do-make-uninstall-with-cmake 72 | if(NOT TARGET uninstall) 73 | configure_file( 74 | "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" 75 | "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" 76 | IMMEDIATE @ONLY) 77 | 78 | add_custom_target(uninstall 79 | COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) 80 | endif() 81 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | cppbase 2 | === 3 | cppbase is a simple CMake-based C++ project. It can be used as a template for new projects. 4 | -------------------------------------------------------------------------------- /apps/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com) 2 | # Distributed under the MIT License. 3 | # See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT 4 | 5 | # The CMake setup for this project is based off of the following source: 6 | # - https://cliutils.gitlab.io/modern-cmake 7 | 8 | # Create executables and link necessary libraries for each application 9 | 10 | # Set up main application 11 | add_executable(cppbase cppbase.cpp) 12 | target_compile_features(cppbase PRIVATE cxx_std_11) 13 | target_link_libraries(cppbase PRIVATE cppbase_lib) 14 | 15 | # Set up Hello World application 16 | add_executable(helloWorld helloWorld.cpp) 17 | target_compile_features(helloWorld PRIVATE cxx_std_11) 18 | target_link_libraries(helloWorld PRIVATE cppbase_lib) 19 | -------------------------------------------------------------------------------- /apps/cppbase.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com) 3 | * Distributed under the MIT License. 4 | * See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | #include "cppbase/cppbaseAll.hpp" 11 | 12 | int main(const int numberOfInputs, const char* inputArguments[]) 13 | { 14 | const int factorial = cppbase::computeFactorial(10); 15 | std::cout << "10! = " << factorial << std::endl; 16 | std::cout << "Hello!" << std::endl; 17 | return EXIT_SUCCESS; 18 | } 19 | -------------------------------------------------------------------------------- /apps/helloWorld.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com) 3 | * Distributed under the MIT License. 4 | * See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | int main(const int numberOfInputs, const char* inputArguments[]) 11 | { 12 | std::cout << "Hello World!" << std::endl; 13 | return EXIT_SUCCESS; 14 | } 15 | -------------------------------------------------------------------------------- /cmake_uninstall.cmake.in: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com) 2 | # Distributed under the MIT License. 3 | # See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT 4 | 5 | # Set up script for 'make uninstall' 6 | # Source: https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#can-i-do-make-uninstall-with-cmake 7 | 8 | if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") 9 | message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt") 10 | endif() 11 | 12 | file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files) 13 | string(REGEX REPLACE "\n" ";" files "${files}") 14 | foreach(file ${files}) 15 | message(STATUS "Uninstalling $ENV{DESTDIR}${file}") 16 | if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") 17 | exec_program( 18 | "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" 19 | OUTPUT_VARIABLE rm_out 20 | RETURN_VALUE rm_retval 21 | ) 22 | if(NOT "${rm_retval}" STREQUAL 0) 23 | message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") 24 | endif() 25 | else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") 26 | message(STATUS "File $ENV{DESTDIR}${file} does not exist.") 27 | endif() 28 | endforeach() 29 | -------------------------------------------------------------------------------- /docs/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Set Doxygen settings for the project 2 | set(DOXYGEN_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/docs" ) 3 | set(DOXYGEN_REPEAT_BRIEF NO) 4 | set(DOXYGEN_FULL_PATH_NAMES NO) 5 | set(DOXYGEN_STRIP_FROM_PATH "${PROJECT_SOURCE_DIR}") 6 | set(DOXYGEN_QT_AUTOBRIEF YES) 7 | set(DOXYGEN_BUILTIN_STL_SUPPORT YES) 8 | set(DOXYGEN_IDL_PROPERTY_SUPPORT NO) 9 | set(DOXYGEN_EXTRACT_ALL YES) 10 | set(DOXYGEN_EXTRACT_PRIVATE YES) 11 | set(DOXYGEN_EXTRACT_STATIC YES) 12 | set(DOXYGEN_EXTRACT_LOCAL_CLASSES NO) 13 | set(DOXYGEN_CASE_SENSE_NAMES YES) 14 | set(DOXYGEN_SORT_MEMBER_DOCS NO) 15 | set(DOXYGEN_SORT_MEMBERS_CTORS_1ST YES) 16 | set(DOXYGEN_QUIET YES) 17 | set(DOXYGEN_WARN_NO_PARAMDOC YES) 18 | set(DOXYGEN_RECURSIVE YES) 19 | set(DOXYGEN_EXCLUDE "*.cpp") 20 | set(DOXYGEN_USE_MDFILE_AS_MAINPAGE "${PROJECT_SOURCE_DIR}/README.md") 21 | set(DOXYGEN_SOURCE_BROWSER YES) 22 | set(DOXYGEN_REFERENCED_BY_RELATION YES) 23 | set(DOXYGEN_REFERENCES_RELATION YES) 24 | set(DOXYGEN_GENERATE_TREEVIEW YES) 25 | set(DOXYGEN_GENERATE_LATEX NO) 26 | 27 | # Set up command to build Doxygen docs: 'make docs' 28 | doxygen_add_docs(docs "cppbase" "${PROJECT_SOURCE_DIR}/README.md" 29 | WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/include" 30 | COMMENT "Generate man pages") 31 | -------------------------------------------------------------------------------- /docs/html/README_8md.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: README.md File Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 |
25 | 26 | 27 | 28 | 33 | 34 | 35 |
29 |
cppbase 1.0 30 |
31 |
A C++ template project
32 |
36 |
37 | 38 | 39 | 42 | 45 | 46 | 47 | 53 | 54 |
55 |
56 | 61 |
63 |
64 |
65 | 68 |
69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 |
80 |
81 |
82 |
83 |
Loading...
84 |
Searching...
85 |
No Matches
86 |
87 |
88 |
89 |
90 | 91 |
92 |
README.md File Reference
93 |
94 |
95 |
96 |
97 | 104 |
105 | 106 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /docs/html/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/bc_s.png -------------------------------------------------------------------------------- /docs/html/bc_sd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/bc_sd.png -------------------------------------------------------------------------------- /docs/html/bdwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/bdwn.png -------------------------------------------------------------------------------- /docs/html/clipboard.js: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | The code below is based on the Doxygen Awesome project, see 4 | https://github.com/jothepro/doxygen-awesome-css 5 | 6 | MIT License 7 | 8 | Copyright (c) 2021 - 2022 jothepro 9 | 10 | Permission is hereby granted, free of charge, to any person obtaining a copy 11 | of this software and associated documentation files (the "Software"), to deal 12 | in the Software without restriction, including without limitation the rights 13 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | copies of the Software, and to permit persons to whom the Software is 15 | furnished to do so, subject to the following conditions: 16 | 17 | The above copyright notice and this permission notice shall be included in all 18 | copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 26 | SOFTWARE. 27 | 28 | */ 29 | 30 | let clipboard_title = "Copy to clipboard" 31 | let clipboard_icon = `` 32 | let clipboard_successIcon = `` 33 | let clipboard_successDuration = 1000 34 | 35 | $(function() { 36 | if(navigator.clipboard) { 37 | const fragments = document.getElementsByClassName("fragment") 38 | for(const fragment of fragments) { 39 | const clipboard_div = document.createElement("div") 40 | clipboard_div.classList.add("clipboard") 41 | clipboard_div.innerHTML = clipboard_icon 42 | clipboard_div.title = clipboard_title 43 | $(clipboard_div).click(function() { 44 | const content = this.parentNode.cloneNode(true) 45 | // filter out line number and folded fragments from file listings 46 | content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) 47 | let text = content.textContent 48 | // remove trailing newlines and trailing spaces from empty lines 49 | text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') 50 | navigator.clipboard.writeText(text); 51 | this.classList.add("success") 52 | this.innerHTML = clipboard_successIcon 53 | window.setTimeout(() => { // switch back to normal icon after timeout 54 | this.classList.remove("success") 55 | this.innerHTML = clipboard_icon 56 | }, clipboard_successDuration); 57 | }) 58 | fragment.insertBefore(clipboard_div, fragment.firstChild) 59 | } 60 | } 61 | }) 62 | -------------------------------------------------------------------------------- /docs/html/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/closed.png -------------------------------------------------------------------------------- /docs/html/cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Cookie helper functions 3 | Copyright (c) 2023 Dimitri van Heesch 4 | Released under MIT license. 5 | */ 6 | let Cookie = { 7 | cookie_namespace: 'doxygen_', 8 | 9 | readSetting(cookie,defVal) { 10 | if (window.chrome) { 11 | const val = localStorage.getItem(this.cookie_namespace+cookie) || 12 | sessionStorage.getItem(this.cookie_namespace+cookie); 13 | if (val) return val; 14 | } else { 15 | let myCookie = this.cookie_namespace+cookie+"="; 16 | if (document.cookie) { 17 | const index = document.cookie.indexOf(myCookie); 18 | if (index != -1) { 19 | const valStart = index + myCookie.length; 20 | let valEnd = document.cookie.indexOf(";", valStart); 21 | if (valEnd == -1) { 22 | valEnd = document.cookie.length; 23 | } 24 | return document.cookie.substring(valStart, valEnd); 25 | } 26 | } 27 | } 28 | return defVal; 29 | }, 30 | 31 | writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete 32 | if (window.chrome) { 33 | if (days==0) { 34 | sessionStorage.setItem(this.cookie_namespace+cookie,val); 35 | } else { 36 | localStorage.setItem(this.cookie_namespace+cookie,val); 37 | } 38 | } else { 39 | let date = new Date(); 40 | date.setTime(date.getTime()+(days*24*60*60*1000)); 41 | const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; 42 | document.cookie = this.cookie_namespace + cookie + "=" + 43 | val + "; SameSite=Lax;" + expiration + "path=/"; 44 | } 45 | }, 46 | 47 | eraseSetting(cookie) { 48 | if (window.chrome) { 49 | if (localStorage.getItem(this.cookie_namespace+cookie)) { 50 | localStorage.removeItem(this.cookie_namespace+cookie); 51 | } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { 52 | sessionStorage.removeItem(this.cookie_namespace+cookie); 53 | } 54 | } else { 55 | this.writeSetting(cookie,'',-1); 56 | } 57 | }, 58 | } 59 | -------------------------------------------------------------------------------- /docs/html/cppbaseAll_8hpp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: cppbaseAll.hpp File Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 |
25 | 26 | 27 | 28 | 33 | 34 | 35 |
29 |
cppbase 1.0 30 |
31 |
A C++ template project
32 |
36 |
37 | 38 | 39 | 42 | 45 | 46 | 47 | 53 | 54 |
55 |
56 | 61 |
63 |
64 |
65 | 68 |
69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 |
80 |
81 |
82 |
83 |
Loading...
84 |
Searching...
85 |
No Matches
86 |
87 |
88 |
89 |
90 | 91 |
92 |
cppbaseAll.hpp File Reference
93 |
94 |
95 |
#include "cppbase/factorial.hpp"
96 |
97 | Include dependency graph for cppbaseAll.hpp:
98 |
99 |
100 | 101 | 102 | 103 | 104 | 105 |
106 |
107 |

Go to the source code of this file.

108 |
109 |
110 | 117 |
118 | 119 | 125 | 126 | 127 | -------------------------------------------------------------------------------- /docs/html/cppbaseAll_8hpp__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/html/cppbaseAll_8hpp__incl.md5: -------------------------------------------------------------------------------- 1 | a69a475d39499d5110e439048ae176d0 -------------------------------------------------------------------------------- /docs/html/cppbaseAll_8hpp__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/cppbaseAll_8hpp__incl.png -------------------------------------------------------------------------------- /docs/html/cppbaseAll_8hpp_source.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: cppbaseAll.hpp Source File 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 |
25 | 26 | 27 | 28 | 33 | 34 | 35 |
29 |
cppbase 1.0 30 |
31 |
A C++ template project
32 |
36 |
37 | 38 | 39 | 42 | 45 | 46 | 47 | 53 | 54 |
55 |
56 | 61 |
63 |
64 |
65 | 68 |
69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 |
80 |
81 |
82 |
83 |
Loading...
84 |
Searching...
85 |
No Matches
86 |
87 |
88 |
89 |
90 | 91 |
92 |
cppbaseAll.hpp
93 |
94 |
95 | Go to the documentation of this file.
1/*
96 |
2 * Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com)
97 |
3 * Distributed under the MIT License.
98 |
4 * See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT
99 |
5 */
100 |
6
101 |
7#pragma once
102 |
8
103 | 104 | 105 |
106 |
107 |
108 | 109 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /docs/html/cppbase_all_8hpp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: cppbase/cppbaseAll.hpp File Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 |
24 |
cppbase 1.0 25 |
26 |
A C++ template project
27 |
31 |
32 | 33 | 34 | 39 | 40 | 41 | 49 | 50 | 51 |
55 |
56 | 57 | 58 |
59 | 62 |
63 | 64 | 68 |
69 |
70 |
cppbaseAll.hpp File Reference
71 |
72 |
73 |
#include "cppbase/factorial.hpp"
74 |
75 | Include dependency graph for cppbaseAll.hpp:
76 |
77 |
78 | 79 | 80 | 81 | 82 |
83 |
84 |

Go to the source code of this file.

85 |
86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /docs/html/cppbase_all_8hpp__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/html/cppbase_all_8hpp__incl.md5: -------------------------------------------------------------------------------- 1 | 113113997fcd48c3155d7757a3631a24 -------------------------------------------------------------------------------- /docs/html/cppbase_all_8hpp__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/cppbase_all_8hpp__incl.png -------------------------------------------------------------------------------- /docs/html/cppbase_all_8hpp_source.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: cppbase/cppbaseAll.hpp Source File 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 |
24 |
cppbase 1.0 25 |
26 |
A C++ template project
27 |
31 |
32 | 33 | 34 | 39 | 40 | 41 | 49 | 50 | 51 |
55 |
56 | 57 | 58 |
59 | 62 |
63 | 64 | 68 |
69 |
70 |
cppbaseAll.hpp
71 |
72 |
73 | Go to the documentation of this file.
1/*
74 |
2 * Copyright (c) <year> <author> (<email>)
75 |
3 * Distributed under the MIT License.
76 |
4 * See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT
77 |
5 */
78 |
6
79 |
7#pragma once
80 |
8
81 |
9#include "cppbase/factorial.hpp"
82 |
83 | 84 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /docs/html/dir_49e56c817e5e54854c35e136979f97ca.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: /Users/kartikkumar/Documents/education/tu-delft/phd/workspace/cppbase/docs Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 |
24 |
cppbase 1.0 25 |
26 |
A C++ template project
27 |
31 |
32 | 33 | 34 | 39 | 40 | 41 | 49 | 50 | 51 |
55 |
56 | 57 | 58 |
59 | 62 |
63 | 64 | 68 |
69 |
70 |
docs Directory Reference
71 |
72 |
73 |
74 | 75 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /docs/html/dir_d1bd97ed40e89648596a0852aac26258.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: cppbase Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 |
25 | 26 | 27 | 28 | 33 | 34 | 35 |
29 |
cppbase 1.0 30 |
31 |
A C++ template project
32 |
36 |
37 | 38 | 39 | 42 | 45 | 46 | 47 | 53 | 54 |
55 |
56 | 61 |
63 |
64 |
65 | 68 |
69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 |
80 |
81 |
82 |
83 |
Loading...
84 |
Searching...
85 |
No Matches
86 |
87 |
88 |
89 |
90 | 91 |
92 |
cppbase Directory Reference
93 |
94 |
95 |
96 | Directory dependency graph for cppbase:
97 |
98 |
cppbase
99 | 100 | 101 | 102 | 103 |
104 | 105 | 107 | 108 | 109 |

106 | Files

 
cppbaseAll.hpp
 
factorial.hpp
110 |
111 |
112 | 119 |
120 | 121 | 127 | 128 | 129 | -------------------------------------------------------------------------------- /docs/html/dir_d1bd97ed40e89648596a0852aac26258.js: -------------------------------------------------------------------------------- 1 | var dir_d1bd97ed40e89648596a0852aac26258 = 2 | [ 3 | [ "cppbaseAll.hpp", "cppbaseAll_8hpp.html", null ], 4 | [ "factorial.hpp", "factorial_8hpp.html", "factorial_8hpp" ] 5 | ]; -------------------------------------------------------------------------------- /docs/html/dir_d1bd97ed40e89648596a0852aac26258_dep.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/html/dir_d1bd97ed40e89648596a0852aac26258_dep.md5: -------------------------------------------------------------------------------- 1 | 5222549b4f4529bd1591797160a72946 -------------------------------------------------------------------------------- /docs/html/dir_d1bd97ed40e89648596a0852aac26258_dep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/dir_d1bd97ed40e89648596a0852aac26258_dep.png -------------------------------------------------------------------------------- /docs/html/dir_d44c64559bbebec7f509842c48db8b23.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: include Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 |
25 | 26 | 27 | 28 | 33 | 34 | 35 |
29 |
cppbase 1.0 30 |
31 |
A C++ template project
32 |
36 |
37 | 38 | 39 | 42 | 45 | 46 | 47 | 53 | 54 |
55 |
56 | 61 |
63 |
64 |
65 | 68 |
69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 |
80 |
81 |
82 |
83 |
Loading...
84 |
Searching...
85 |
No Matches
86 |
87 |
88 |
89 |
90 | 91 |
92 |
include Directory Reference
93 |
94 |
95 | 96 | 98 | 99 |

97 | Directories

 
cppbase
100 |
101 |
102 | 109 |
110 | 111 | 117 | 118 | 119 | -------------------------------------------------------------------------------- /docs/html/dir_d44c64559bbebec7f509842c48db8b23.js: -------------------------------------------------------------------------------- 1 | var dir_d44c64559bbebec7f509842c48db8b23 = 2 | [ 3 | [ "cppbase", "dir_d1bd97ed40e89648596a0852aac26258.html", "dir_d1bd97ed40e89648596a0852aac26258" ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/doc.png -------------------------------------------------------------------------------- /docs/html/doc.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/html/docd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/docd.png -------------------------------------------------------------------------------- /docs/html/docd.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/html/doxygen_crawl.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Validator / crawler helper 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /docs/html/dynsections.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the JavaScript code in this file. 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (C) 1997-2020 by Dimitri van Heesch 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 9 | and associated documentation files (the "Software"), to deal in the Software without restriction, 10 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 11 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all copies or 15 | substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 18 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | @licend The above is the entire license notice for the JavaScript code in this file 24 | */ 25 | 26 | function toggleVisibility(linkObj) { 27 | return dynsection.toggleVisibility(linkObj); 28 | } 29 | 30 | let dynsection = { 31 | // helper function 32 | updateStripes : function() { 33 | $('table.directory tr'). 34 | removeClass('even').filter(':visible:even').addClass('even'); 35 | $('table.directory tr'). 36 | removeClass('odd').filter(':visible:odd').addClass('odd'); 37 | }, 38 | 39 | toggleVisibility : function(linkObj) { 40 | const base = $(linkObj).attr('id'); 41 | const summary = $('#'+base+'-summary'); 42 | const content = $('#'+base+'-content'); 43 | const trigger = $('#'+base+'-trigger'); 44 | const src=$(trigger).attr('src'); 45 | if (content.is(':visible')===true) { 46 | content.slideUp('fast'); 47 | summary.show(); 48 | $(linkObj).find('.arrowhead').addClass('closed').removeClass('opened'); 49 | } else { 50 | content.slideDown('fast'); 51 | summary.hide(); 52 | $(linkObj).find('.arrowhead').removeClass('closed').addClass('opened'); 53 | } 54 | return false; 55 | }, 56 | 57 | toggleLevel : function(level) { 58 | $('table.directory tr').each(function() { 59 | const l = this.id.split('_').length-1; 60 | const i = $('#img'+this.id.substring(3)); 61 | const a = $('#arr'+this.id.substring(3)); 62 | if (l'); 160 | // add vertical lines to other rows 161 | $('span[class=lineno]').not(':eq(0)').append(''); 162 | // add toggle controls to lines with fold divs 163 | $('div[class=foldopen]').each(function() { 164 | // extract specific id to use 165 | const id = $(this).attr('id').replace('foldopen',''); 166 | // extract start and end foldable fragment attributes 167 | const start = $(this).attr('data-start'); 168 | const end = $(this).attr('data-end'); 169 | // replace normal fold span with controls for the first line of a foldable fragment 170 | $(this).find('span[class=fold]:first').replaceWith(''); 172 | // append div for folded (closed) representation 173 | $(this).after(''); 174 | // extract the first line from the "open" section to represent closed content 175 | const line = $(this).children().first().clone(); 176 | // remove any glow that might still be active on the original line 177 | $(line).removeClass('glow'); 178 | if (start) { 179 | // if line already ends with a start marker (e.g. trailing {), remove it 180 | $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); 181 | } 182 | // replace minus with plus symbol 183 | $(line).find('span[class=fold]').addClass('plus').removeClass('minus'); 184 | // append ellipsis 185 | $(line).append(' '+start+''+end); 186 | // insert constructed line into closed div 187 | $('#foldclosed'+id).html(line); 188 | }); 189 | }, 190 | }; 191 | /* @license-end */ 192 | $(function() { 193 | $('.code,.codeRef').each(function() { 194 | $(this).data('powertip',$('#a'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html()); 195 | $.fn.powerTip.smartPlacementLists.s = [ 's', 'n', 'ne', 'se' ]; 196 | $(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true }); 197 | }); 198 | }); 199 | -------------------------------------------------------------------------------- /docs/html/factorial_8hpp.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: factorial.hpp File Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 |
25 | 26 | 27 | 28 | 33 | 34 | 35 |
29 |
cppbase 1.0 30 |
31 |
A C++ template project
32 |
36 |
37 | 38 | 39 | 42 | 45 | 46 | 47 | 53 | 54 |
55 |
56 | 61 |
63 |
64 |
65 | 68 |
69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 |
80 |
81 |
82 |
83 |
Loading...
84 |
Searching...
85 |
No Matches
86 |
87 |
88 |
89 |
90 | 91 |
92 |
factorial.hpp File Reference
93 |
94 |
95 |
96 | This graph shows which files directly or indirectly include this file:
97 |
98 |
99 | 100 | 101 | 102 | 103 | 104 |
105 |
106 |

Go to the source code of this file.

107 | 108 | 110 | 111 |

109 | Namespaces

namespace  cppbase
112 | 114 | 115 | 116 |

113 | Functions

int cppbase::computeFactorial (const int integerNumber)
 Compute factorial.
117 |
118 |
119 | 126 |
127 | 128 | 134 | 135 | 136 | -------------------------------------------------------------------------------- /docs/html/factorial_8hpp.js: -------------------------------------------------------------------------------- 1 | var factorial_8hpp = 2 | [ 3 | [ "cppbase::computeFactorial", "namespacecppbase.html#a286730dfdeb99c4514f1f51c47b250d0", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/factorial_8hpp__dep__incl.map: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/html/factorial_8hpp__dep__incl.md5: -------------------------------------------------------------------------------- 1 | 8da8daf3aa768fdb1b73f43f1131f830 -------------------------------------------------------------------------------- /docs/html/factorial_8hpp__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/factorial_8hpp__dep__incl.png -------------------------------------------------------------------------------- /docs/html/factorial_8hpp_source.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: factorial.hpp Source File 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 |
25 | 26 | 27 | 28 | 33 | 34 | 35 |
29 |
cppbase 1.0 30 |
31 |
A C++ template project
32 |
36 |
37 | 38 | 39 | 42 | 45 | 46 | 47 | 53 | 54 |
55 |
56 | 61 |
63 |
64 |
65 | 68 |
69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 |
80 |
81 |
82 |
83 |
Loading...
84 |
Searching...
85 |
No Matches
86 |
87 |
88 |
89 |
90 | 91 |
92 |
factorial.hpp
93 |
94 |
95 | Go to the documentation of this file.
1/*
96 |
2 * Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com)
97 |
3 * Distributed under the MIT License.
98 |
4 * See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT
99 |
5 */
100 |
6
101 |
7#pragma once
102 |
8
103 |
104 |
9namespace cppbase
105 |
10{
106 |
11
107 |
13
108 |
19int computeFactorial(const int integerNumber);
109 |
20
110 |
21} // namespace cppbase
111 |
112 | 113 |
int computeFactorial(const int integerNumber)
Compute factorial.
114 |
115 |
116 |
117 | 118 | 124 | 125 | 126 | -------------------------------------------------------------------------------- /docs/html/files.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: File List 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 |
25 | 26 | 27 | 28 | 33 | 34 | 35 |
29 |
cppbase 1.0 30 |
31 |
A C++ template project
32 |
36 |
37 | 38 | 39 | 42 | 45 | 46 | 47 | 53 | 54 |
55 |
56 | 61 |
63 |
64 |
65 | 68 |
69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 |
80 |
81 |
82 |
83 |
Loading...
84 |
Searching...
85 |
No Matches
86 |
87 |
88 |
89 |
90 | 91 |
92 |
File List
93 |
94 |
95 |
Here is a list of all files with brief descriptions:
96 |
[detail level 123]
97 | 98 | 99 | 100 | 101 |
 
include
 
cppbase
 
cppbaseAll.hpp
 
factorial.hpp
102 |
103 |
104 |
105 |
106 | 107 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /docs/html/files_dup.js: -------------------------------------------------------------------------------- 1 | var files_dup = 2 | [ 3 | [ "include", "dir_d44c64559bbebec7f509842c48db8b23.html", "dir_d44c64559bbebec7f509842c48db8b23" ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/folderclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/folderclosed.png -------------------------------------------------------------------------------- /docs/html/folderclosed.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/html/folderclosedd.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/html/folderopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/folderopen.png -------------------------------------------------------------------------------- /docs/html/folderopen.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /docs/html/folderopend.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/html/graph_legend.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: Graph Legend 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 |
25 | 26 | 27 | 28 | 33 | 34 | 35 |
29 |
cppbase 1.0 30 |
31 |
A C++ template project
32 |
36 |
37 | 38 | 39 | 42 | 45 | 46 | 47 | 53 | 54 |
55 |
56 | 61 |
63 |
64 |
65 | 68 |
69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 |
80 |
81 |
82 |
83 |
Loading...
84 |
Searching...
85 |
No Matches
86 |
87 |
88 |
89 |
90 | 91 |
92 |
Graph Legend
93 |
94 |
95 |

This page explains how to interpret the graphs that are generated by doxygen.

96 |

Consider the following example:

/*! Invisible class because of truncation */
97 |
class Invisible { };
98 |
99 |
/*! Truncated class, inheritance relation is hidden */
100 |
class Truncated : public Invisible { };
101 |
102 |
/* Class not documented with doxygen comments */
103 |
class Undocumented { };
104 |
105 |
/*! Class that is inherited using public inheritance */
106 |
class PublicBase : public Truncated { };
107 |
108 |
/*! A template class */
109 |
template<class T> class Templ { };
110 |
111 |
/*! Class that is inherited using protected inheritance */
112 |
class ProtectedBase { };
113 |
114 |
/*! Class that is inherited using private inheritance */
115 |
class PrivateBase { };
116 |
117 |
/*! Class that is used by the Inherited class */
118 |
class Used { };
119 |
120 |
/*! Super class that inherits a number of other classes */
121 |
class Inherited : public PublicBase,
122 |
protected ProtectedBase,
123 |
private PrivateBase,
124 |
public Undocumented,
125 |
public Templ<int>
126 |
{
127 |
private:
128 |
Used *m_usedClass;
129 |
};
130 |

This will result in the following graph:

131 |

The boxes in the above graph have the following meaning:

132 |
    133 |
  • 134 | A filled gray box represents the struct or class for which the graph is generated.
  • 135 |
  • 136 | A box with a black border denotes a documented struct or class.
  • 137 |
  • 138 | A box with a gray border denotes an undocumented struct or class.
  • 139 |
  • 140 | A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • 141 |
142 |

The arrows have the following meaning:

143 |
    144 |
  • 145 | A blue arrow is used to visualize a public inheritance relation between two classes.
  • 146 |
  • 147 | A dark green arrow is used for protected inheritance.
  • 148 |
  • 149 | A dark red arrow is used for private inheritance.
  • 150 |
  • 151 | A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible.
  • 152 |
  • 153 | A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.
  • 154 |
155 |
156 |
157 |
158 | 159 | 164 | 165 | 166 | -------------------------------------------------------------------------------- /docs/html/graph_legend.md5: -------------------------------------------------------------------------------- 1 | f74606a252eb303675caf37987d0b7af -------------------------------------------------------------------------------- /docs/html/graph_legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/graph_legend.png -------------------------------------------------------------------------------- /docs/html/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: cppbase 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 |
25 | 26 | 27 | 28 | 33 | 34 | 35 |
29 |
cppbase 1.0 30 |
31 |
A C++ template project
32 |
36 |
37 | 38 | 39 | 42 | 45 | 46 | 47 | 53 | 54 |
55 |
56 | 61 |
63 |
64 |
65 | 68 |
69 |
70 | 71 |
75 |
76 | 77 | 78 |
79 |
80 |
81 |
82 |
83 |
Loading...
84 |
Searching...
85 |
No Matches
86 |
87 |
88 |
89 |
90 | 91 |
92 |
cppbase
93 |
94 |
95 |

96 |

cppbase is a simple CMake-based C++ project. It can be used as a template for new projects.

97 |
98 | 99 |
100 |
101 |
102 | 103 | 108 | 109 | 110 | -------------------------------------------------------------------------------- /docs/html/mainpage_8md.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: /Users/kartikkumar/Documents/education/tu-delft/phd/workspace/cppbase/docs/mainpage.md File Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 |
24 |
cppbase 1.0 25 |
26 |
A C++ template project
27 |
31 |
32 | 33 | 34 | 39 | 40 | 41 | 49 | 50 | 51 |
55 |
56 | 57 | 58 |
59 | 62 |
63 | 64 |
65 |
66 |
/Users/kartikkumar/Documents/education/tu-delft/phd/workspace/cppbase/docs/mainpage.md File Reference
67 |
68 |
69 |
70 | 71 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /docs/html/md_README.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: cppbase 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 |
24 |
cppbase 1.0 25 |
26 |
A C++ template project
27 |
31 |
32 | 33 | 34 | 39 | 40 | 41 | 49 | 50 | 51 |
55 |
56 | 57 | 58 |
59 | 62 |
63 | 64 |
65 |
66 |
cppbase
67 |
68 |
69 |

cppbase is a template for a simple CMake-based C++ project: it can be used as the basis for new projects.

70 |
71 |
72 | 73 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /docs/html/md___users_kartikkumar__documents_education_tu_delft_phd_workspace_cppbase_docs_mainpage.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: mainpage 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 |
24 |
cppbase 1.0 25 |
26 |
A C++ template project
27 |
31 |
32 | 33 | 34 | 39 | 40 | 41 | 49 | 50 | 51 |
55 |
56 | 57 | 58 |
59 | 62 |
63 | 64 |
65 |
66 |
mainpage
67 |
68 |
69 |

Documentation for cppbase

70 |
71 |
72 | 73 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /docs/html/menu.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the JavaScript code in this file. 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (C) 1997-2020 by Dimitri van Heesch 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 9 | and associated documentation files (the "Software"), to deal in the Software without restriction, 10 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 11 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all copies or 15 | substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 18 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | @licend The above is the entire license notice for the JavaScript code in this file 24 | */ 25 | function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { 26 | function makeTree(data,relPath) { 27 | let result=''; 28 | if ('children' in data) { 29 | result+='
    '; 30 | for (let i in data.children) { 31 | let url; 32 | const link = data.children[i].url; 33 | if (link.substring(0,1)=='^') { 34 | url = link.substring(1); 35 | } else { 36 | url = relPath+link; 37 | } 38 | result+='
  • '+ 39 | data.children[i].text+''+ 40 | makeTree(data.children[i],relPath)+'
  • '; 41 | } 42 | result+='
'; 43 | } 44 | return result; 45 | } 46 | let searchBoxHtml; 47 | if (searchEnabled) { 48 | if (serverSide) { 49 | searchBoxHtml='
'+ 50 | '
'+ 51 | '
'+ 53 | ''+ 56 | '
'+ 57 | '
'+ 58 | '
'+ 59 | '
'; 60 | } else { 61 | searchBoxHtml='
'+ 62 | ''+ 63 | ''+ 65 | ''+ 69 | ''+ 70 | ''+ 72 | '
'+ 73 | '
'+ 74 | '
'; 75 | } 76 | } 77 | 78 | $('#main-nav').before('
'+ 79 | ''+ 82 | ''+ 83 | '
'); 84 | $('#main-nav').append(makeTree(menudata,relPath)); 85 | $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); 86 | $('#main-menu').append('
  • '); 87 | const $mainMenuState = $('#main-menu-state'); 88 | let prevWidth = 0; 89 | if ($mainMenuState.length) { 90 | const initResizableIfExists = function() { 91 | if (typeof initResizable==='function') initResizable(treeview); 92 | } 93 | // animate mobile menu 94 | $mainMenuState.change(function() { 95 | const $menu = $('#main-menu'); 96 | let options = { duration: 250, step: initResizableIfExists }; 97 | if (this.checked) { 98 | options['complete'] = () => $menu.css('display', 'block'); 99 | $menu.hide().slideDown(options); 100 | } else { 101 | options['complete'] = () => $menu.css('display', 'none'); 102 | $menu.show().slideUp(options); 103 | } 104 | }); 105 | // set default menu visibility 106 | const resetState = function() { 107 | const $menu = $('#main-menu'); 108 | const newWidth = $(window).outerWidth(); 109 | if (newWidth!=prevWidth) { 110 | if ($(window).outerWidth()<768) { 111 | $mainMenuState.prop('checked',false); $menu.hide(); 112 | $('#searchBoxPos1').html(searchBoxHtml); 113 | $('#searchBoxPos2').hide(); 114 | } else { 115 | $menu.show(); 116 | $('#searchBoxPos1').empty(); 117 | $('#searchBoxPos2').html(searchBoxHtml); 118 | $('#searchBoxPos2').show(); 119 | } 120 | if (typeof searchBox!=='undefined') { 121 | searchBox.CloseResultsWindow(); 122 | } 123 | prevWidth = newWidth; 124 | } 125 | } 126 | $(window).ready(function() { resetState(); initResizableIfExists(); }); 127 | $(window).resize(resetState); 128 | } 129 | $('#main-menu').smartmenus(); 130 | } 131 | /* @license-end */ 132 | -------------------------------------------------------------------------------- /docs/html/menudata.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the JavaScript code in this file. 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (C) 1997-2020 by Dimitri van Heesch 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 9 | and associated documentation files (the "Software"), to deal in the Software without restriction, 10 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 11 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all copies or 15 | substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 18 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | @licend The above is the entire license notice for the JavaScript code in this file 24 | */ 25 | var menudata={children:[ 26 | {text:"Main Page",url:"index.html"}, 27 | {text:"Namespaces",url:"namespaces.html",children:[ 28 | {text:"Namespace List",url:"namespaces.html"}, 29 | {text:"Namespace Members",url:"namespacemembers.html",children:[ 30 | {text:"All",url:"namespacemembers.html"}, 31 | {text:"Functions",url:"namespacemembers_func.html"}]}]}, 32 | {text:"Files",url:"files.html",children:[ 33 | {text:"File List",url:"files.html"}]}]} 34 | -------------------------------------------------------------------------------- /docs/html/minus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/html/minusd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/html/namespacecppbase.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: cppbase Namespace Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
    24 |
    25 | 26 | 27 | 28 | 33 | 34 | 35 |
    29 |
    cppbase 1.0 30 |
    31 |
    A C++ template project
    32 |
    36 |
    37 | 38 | 39 | 42 | 45 | 46 | 47 | 53 | 54 |
    55 |
    56 | 61 |
    63 |
    64 |
    65 | 68 |
    69 |
    70 | 71 |
    75 |
    76 | 77 | 78 |
    79 |
    80 |
    81 |
    82 |
    83 |
    Loading...
    84 |
    Searching...
    85 |
    No Matches
    86 |
    87 |
    88 |
    89 |
    90 | 91 |
    92 |
    cppbase Namespace Reference
    93 |
    94 |
    95 | 96 | 98 | 99 | 100 |

    97 | Functions

    int computeFactorial (const int integerNumber)
     Compute factorial.
    101 |

    Function Documentation

    102 | 103 |

    ◆ computeFactorial()

    104 | 105 |
    106 |
    107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 |
    int cppbase::computeFactorial (const int integerNumber)
    115 |
    116 |

    Computes factorial of a given integer.

    117 |
    Parameters
    118 | 119 | 120 |
    [in]integerNumberInteger number to compute factorial of
    121 |
    122 |
    123 |
    Returns
    Value of factorial of integer number
    124 | 125 |
    126 |
    127 |
    128 |
    129 | 136 |
    137 | 138 | 144 | 145 | 146 | -------------------------------------------------------------------------------- /docs/html/namespacemembers.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: Namespace Members 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
    24 |
    25 | 26 | 27 | 28 | 33 | 34 | 35 |
    29 |
    cppbase 1.0 30 |
    31 |
    A C++ template project
    32 |
    36 |
    37 | 38 | 39 | 42 | 45 | 46 | 47 | 53 | 54 |
    55 |
    56 | 61 |
    63 |
    64 |
    65 | 68 |
    69 |
    70 | 71 |
    75 |
    76 | 77 | 78 |
    79 |
    80 |
    81 |
    82 |
    83 |
    Loading...
    84 |
    Searching...
    85 |
    No Matches
    86 |
    87 |
    88 |
    89 |
    90 | 91 |
    92 |
    Here is a list of all namespace members with links to the namespace documentation for each member:
      93 |
    • computeFactorial() : cppbase
    • 94 |
    95 |
    96 |
    97 |
    98 | 99 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /docs/html/namespacemembers_func.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: Namespace Members 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
    24 |
    25 | 26 | 27 | 28 | 33 | 34 | 35 |
    29 |
    cppbase 1.0 30 |
    31 |
    A C++ template project
    32 |
    36 |
    37 | 38 | 39 | 42 | 45 | 46 | 47 | 53 | 54 |
    55 |
    56 | 61 |
    63 |
    64 |
    65 | 68 |
    69 |
    70 | 71 |
    75 |
    76 | 77 | 78 |
    79 |
    80 |
    81 |
    82 |
    83 |
    Loading...
    84 |
    Searching...
    85 |
    No Matches
    86 |
    87 |
    88 |
    89 |
    90 | 91 |
    92 |
    Here is a list of all namespace functions with links to the namespace documentation for each function:
      93 |
    • computeFactorial() : cppbase
    • 94 |
    95 |
    96 |
    97 |
    98 | 99 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /docs/html/namespaces.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: Namespace List 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
    24 |
    25 | 26 | 27 | 28 | 33 | 34 | 35 |
    29 |
    cppbase 1.0 30 |
    31 |
    A C++ template project
    32 |
    36 |
    37 | 38 | 39 | 42 | 45 | 46 | 47 | 53 | 54 |
    55 |
    56 | 61 |
    63 |
    64 |
    65 | 68 |
    69 |
    70 | 71 |
    75 |
    76 | 77 | 78 |
    79 |
    80 |
    81 |
    82 |
    83 |
    Loading...
    84 |
    Searching...
    85 |
    No Matches
    86 |
    87 |
    88 |
    89 |
    90 | 91 |
    92 |
    Namespace List
    93 |
    94 |
    95 |
    Here is a list of all namespaces with brief descriptions:
    96 | 97 | 98 |
     Ncppbase
    99 |
    100 |
    101 |
    102 |
    103 | 104 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /docs/html/namespaces_dup.js: -------------------------------------------------------------------------------- 1 | var namespaces_dup = 2 | [ 3 | [ "cppbase", "namespacecppbase.html", [ 4 | [ "computeFactorial", "namespacecppbase.html#a286730dfdeb99c4514f1f51c47b250d0", null ] 5 | ] ] 6 | ]; -------------------------------------------------------------------------------- /docs/html/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/nav_f.png -------------------------------------------------------------------------------- /docs/html/nav_fd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/nav_fd.png -------------------------------------------------------------------------------- /docs/html/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/nav_g.png -------------------------------------------------------------------------------- /docs/html/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/nav_h.png -------------------------------------------------------------------------------- /docs/html/nav_hd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/nav_hd.png -------------------------------------------------------------------------------- /docs/html/navtree.css: -------------------------------------------------------------------------------- 1 | #nav-tree .children_ul { 2 | margin:0; 3 | padding:4px; 4 | } 5 | 6 | #nav-tree ul { 7 | list-style:none outside none; 8 | margin:0px; 9 | padding:0px; 10 | } 11 | 12 | #nav-tree li { 13 | white-space:nowrap; 14 | margin:0; 15 | padding:0; 16 | } 17 | 18 | #nav-tree .plus { 19 | margin:0px; 20 | } 21 | 22 | #nav-tree .selected { 23 | position: relative; 24 | background-color: var(--nav-menu-active-bg); 25 | border-radius: 0 6px 6px 0; 26 | /*margin-right: 5px;*/ 27 | } 28 | 29 | #nav-tree img { 30 | margin:0px; 31 | padding:0px; 32 | border:0px; 33 | vertical-align: middle; 34 | } 35 | 36 | #nav-tree a { 37 | text-decoration:none; 38 | padding:0px; 39 | margin:0px; 40 | } 41 | 42 | #nav-tree .label { 43 | margin:0px; 44 | padding:0px; 45 | font: 12px var(--font-family-nav); 46 | line-height: 22px; 47 | } 48 | 49 | #nav-tree .label a { 50 | padding:2px; 51 | } 52 | 53 | #nav-tree .selected a { 54 | text-decoration:none; 55 | color:var(--page-link-color); 56 | } 57 | 58 | #nav-tree .children_ul { 59 | margin:0px; 60 | padding:0px; 61 | } 62 | 63 | #nav-tree .item { 64 | margin: 0 6px 0 -5px; 65 | padding: 0 0 0 5px; 66 | height: 22px; 67 | } 68 | 69 | #nav-tree { 70 | padding: 0px 0px; 71 | font-size:14px; 72 | overflow:auto; 73 | } 74 | 75 | #doc-content { 76 | overflow:auto; 77 | display:block; 78 | padding:0px; 79 | margin:0px; 80 | -webkit-overflow-scrolling : touch; /* iOS 5+ */ 81 | } 82 | 83 | #side-nav { 84 | padding:0 6px 0 0; 85 | margin: 0px; 86 | display:block; 87 | position: absolute; 88 | left: 0px; 89 | overflow : hidden; 90 | } 91 | 92 | .ui-resizable .ui-resizable-handle { 93 | display:block; 94 | } 95 | 96 | .ui-resizable-e { 97 | transition: opacity 0.5s ease; 98 | background-color: var(--nav-splitbar-bg-color); 99 | opacity:0; 100 | cursor:col-resize; 101 | height:100%; 102 | right:0; 103 | top:0; 104 | width:6px; 105 | position: relative; 106 | } 107 | 108 | .ui-resizable-e:after { 109 | content: ''; 110 | display: block; 111 | top: 50%; 112 | left: 1px; 113 | width: 2px; 114 | height: 15px; 115 | border-left: 1px solid var(--nav-splitbar-handle-color); 116 | border-right: 1px solid var(--nav-splitbar-handle-color); 117 | position: absolute; 118 | } 119 | 120 | .ui-resizable-e:hover { 121 | opacity: 1; 122 | } 123 | 124 | .ui-resizable-handle { 125 | display:none; 126 | font-size:0.1px; 127 | position:absolute; 128 | z-index:1; 129 | } 130 | 131 | #nav-tree-contents { 132 | margin: 6px 0px 0px 0px; 133 | } 134 | 135 | #nav-tree { 136 | background-color: var(--nav-background-color); 137 | -webkit-overflow-scrolling : touch; /* iOS 5+ */ 138 | scrollbar-width: thin; 139 | border-right: 1px solid var(--nav-border-color); 140 | padding-left: 5px; 141 | } 142 | 143 | #nav-sync { 144 | position:absolute; 145 | top:0px; 146 | right:0px; 147 | z-index:1; 148 | } 149 | 150 | #nav-sync img { 151 | opacity:0.3; 152 | } 153 | 154 | div.nav-sync-icon { 155 | position: relative; 156 | width: 24px; 157 | height: 17px; 158 | left: -6px; 159 | top: -1px; 160 | opacity: 0.7; 161 | display: inline-block; 162 | background-color: var(--sync-icon-background-color); 163 | border: 1px solid var(--sync-icon-border-color); 164 | box-sizing: content-box; 165 | } 166 | 167 | div.nav-sync-icon:hover { 168 | background-color: var(--sync-icon-selected-background-color); 169 | opacity: 1.0; 170 | } 171 | 172 | div.nav-sync-icon.active:after { 173 | content: ''; 174 | background-color: var(--sync-icon-background-color); 175 | border-top: 2px solid var(--sync-icon-color); 176 | position: absolute; 177 | width: 16px; 178 | height: 0px; 179 | top: 7px; 180 | left: 4px; 181 | } 182 | 183 | div.nav-sync-icon.active:hover:after { 184 | border-top: 2px solid var(--sync-icon-selected-color); 185 | } 186 | 187 | span.sync-icon-left { 188 | position: absolute; 189 | padding: 0; 190 | margin: 0; 191 | top: 3px; 192 | left: 4px; 193 | display: inline-block; 194 | width: 8px; 195 | height: 8px; 196 | border-left: 2px solid var(--sync-icon-color); 197 | border-top: 2px solid var(--sync-icon-color); 198 | transform: rotate(-45deg); 199 | } 200 | 201 | span.sync-icon-right { 202 | position: absolute; 203 | padding: 0; 204 | margin: 0; 205 | top: 3px; 206 | left: 10px; 207 | display: inline-block; 208 | width: 8px; 209 | height: 8px; 210 | border-right: 2px solid var(--sync-icon-color); 211 | border-bottom: 2px solid var(--sync-icon-color); 212 | transform: rotate(-45deg); 213 | } 214 | 215 | div.nav-sync-icon:hover span.sync-icon-left { 216 | border-left: 2px solid var(--sync-icon-selected-color); 217 | border-top: 2px solid var(--sync-icon-selected-color); 218 | } 219 | 220 | div.nav-sync-icon:hover span.sync-icon-right { 221 | border-right: 2px solid var(--sync-icon-selected-color); 222 | border-bottom: 2px solid var(--sync-icon-selected-color); 223 | } 224 | 225 | #nav-path ul { 226 | border-top: 1px solid var(--nav-breadcrumb-separator-color); 227 | } 228 | 229 | @media print 230 | { 231 | #nav-tree { display: none; } 232 | div.ui-resizable-handle { display: none; position: relative; } 233 | } 234 | 235 | /*---------------------------*/ 236 | #container { 237 | display: grid; 238 | grid-template-columns: auto auto; 239 | overflow: hidden; 240 | } 241 | 242 | #page-nav { 243 | background: var(--nav-background-color); 244 | display: block; 245 | width: 250px; 246 | box-sizing: content-box; 247 | position: relative; 248 | border-left: 1px solid var(--nav-border-color); 249 | } 250 | 251 | #page-nav-tree { 252 | display: inline-block; 253 | } 254 | 255 | #page-nav-resize-handle { 256 | transition: opacity 0.5s ease; 257 | background-color: var(--nav-splitbar-bg-color); 258 | opacity:0; 259 | cursor:col-resize; 260 | height:100%; 261 | right:0; 262 | top:0; 263 | width:6px; 264 | position: relative; 265 | z-index: 1; 266 | user-select: none; 267 | } 268 | 269 | #page-nav-resize-handle:after { 270 | content: ''; 271 | display: block; 272 | top: 50%; 273 | left: 1px; 274 | width: 2px; 275 | height: 15px; 276 | border-left: 1px solid var(--nav-splitbar-handle-color); 277 | border-right: 1px solid var(--nav-splitbar-handle-color); 278 | position: absolute; 279 | } 280 | 281 | #page-nav-resize-handle.dragging, 282 | #page-nav-resize-handle:hover { 283 | opacity: 1; 284 | } 285 | 286 | #page-nav-contents { 287 | padding: 0; 288 | margin: 0; 289 | display: block; 290 | top: 0; 291 | left: 0; 292 | height: 100%; 293 | width: 100%; 294 | position: absolute; 295 | overflow: auto; 296 | scrollbar-width: thin; 297 | -webkit-overflow-scrolling : touch; /* iOS 5+ */ 298 | } 299 | 300 | ul.page-outline, 301 | ul.page-outline ul { 302 | text-indent: 0; 303 | list-style: none outside none; 304 | padding: 0 0 0 4px; 305 | } 306 | 307 | ul.page-outline { 308 | margin: 0 4px 4px 6px; 309 | } 310 | 311 | ul.page-outline div.item { 312 | font: 12px var(--font-family-nav); 313 | line-height: 22px; 314 | } 315 | 316 | ul.page-outline li { 317 | white-space: nowrap; 318 | } 319 | 320 | ul.page-outline li.vis { 321 | background-color: var(--nav-breadcrumb-active-bg); 322 | } 323 | 324 | #container.resizing { 325 | cursor: col-resize; 326 | user-select: none; 327 | } 328 | -------------------------------------------------------------------------------- /docs/html/navtreedata.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the JavaScript code in this file. 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (C) 1997-2020 by Dimitri van Heesch 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 9 | and associated documentation files (the "Software"), to deal in the Software without restriction, 10 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 11 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all copies or 15 | substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 18 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | @licend The above is the entire license notice for the JavaScript code in this file 24 | */ 25 | var NAVTREE = 26 | [ 27 | [ "cppbase", "index.html", [ 28 | [ "Namespaces", "namespaces.html", [ 29 | [ "Namespace List", "namespaces.html", "namespaces_dup" ], 30 | [ "Namespace Members", "namespacemembers.html", [ 31 | [ "All", "namespacemembers.html", null ], 32 | [ "Functions", "namespacemembers_func.html", null ] 33 | ] ] 34 | ] ], 35 | [ "Files", "files.html", [ 36 | [ "File List", "files.html", "files_dup" ] 37 | ] ] 38 | ] ] 39 | ]; 40 | 41 | var NAVTREEINDEX = 42 | [ 43 | "cppbaseAll_8hpp.html" 44 | ]; 45 | 46 | var SYNCONMSG = 'click to disable panel synchronization'; 47 | var SYNCOFFMSG = 'click to enable panel synchronization'; 48 | var LISTOFALLMEMBERS = 'List of all members'; -------------------------------------------------------------------------------- /docs/html/navtreeindex0.js: -------------------------------------------------------------------------------- 1 | var NAVTREEINDEX0 = 2 | { 3 | "cppbaseAll_8hpp.html":[1,0,0,0,0], 4 | "cppbaseAll_8hpp_source.html":[1,0,0,0,0], 5 | "dir_d1bd97ed40e89648596a0852aac26258.html":[1,0,0,0], 6 | "dir_d44c64559bbebec7f509842c48db8b23.html":[1,0,0], 7 | "factorial_8hpp.html":[1,0,0,0,1], 8 | "factorial_8hpp_source.html":[1,0,0,0,1], 9 | "files.html":[1,0], 10 | "index.html":[], 11 | "namespacecppbase.html":[0,0,0], 12 | "namespacecppbase.html#a286730dfdeb99c4514f1f51c47b250d0":[0,0,0,0], 13 | "namespacemembers.html":[0,1,0], 14 | "namespacemembers_func.html":[0,1,1], 15 | "namespaces.html":[0,0], 16 | "pages.html":[] 17 | }; 18 | -------------------------------------------------------------------------------- /docs/html/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/open.png -------------------------------------------------------------------------------- /docs/html/pages.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | cppbase: Related Pages 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 |
    20 | 21 | 22 | 23 | 28 | 29 | 30 |
    24 |
    cppbase 1.0 25 |
    26 |
    A C++ template project
    27 |
    31 |
    32 | 33 | 34 | 39 | 40 | 41 | 49 | 50 |
    51 | 52 |
    56 |
    57 | 58 | 59 |
    60 | 63 |
    64 | 65 |
    66 |
    Related Pages
    67 |
    68 |
    69 |
    Here is a list of all related documentation pages:
    70 | 71 | 72 |
     cppbase
    73 |
    74 |
    75 | 76 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /docs/html/plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/html/plusd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/html/resize.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the JavaScript code in this file. 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (C) 1997-2020 by Dimitri van Heesch 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 9 | and associated documentation files (the "Software"), to deal in the Software without restriction, 10 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 11 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all copies or 15 | substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 18 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | @licend The above is the entire license notice for the JavaScript code in this file 24 | */ 25 | 26 | function initResizable(treeview) { 27 | let sidenav,navtree,content,header,footer,barWidth=6; 28 | const RESIZE_COOKIE_NAME = ''+'width'; 29 | 30 | function resizeWidth() { 31 | const sidenavWidth = $(sidenav).outerWidth(); 32 | content.css({marginLeft:parseInt(sidenavWidth)+"px"}); 33 | if (typeof page_layout!=='undefined' && page_layout==1) { 34 | footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); 35 | } 36 | Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); 37 | } 38 | 39 | function restoreWidth(navWidth) { 40 | content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); 41 | if (typeof page_layout!=='undefined' && page_layout==1) { 42 | footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); 43 | } 44 | sidenav.css({width:navWidth + "px"}); 45 | } 46 | 47 | function resizeHeight(treeview) { 48 | const headerHeight = header.outerHeight(); 49 | const windowHeight = $(window).height(); 50 | let contentHeight; 51 | if (treeview) 52 | { 53 | const footerHeight = footer.outerHeight(); 54 | let navtreeHeight,sideNavHeight; 55 | if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ 56 | contentHeight = windowHeight - headerHeight - footerHeight; 57 | navtreeHeight = contentHeight; 58 | sideNavHeight = contentHeight; 59 | } else if (page_layout==1) { /* DISABLE_INDEX=YES */ 60 | contentHeight = windowHeight - footerHeight; 61 | navtreeHeight = windowHeight - headerHeight; 62 | sideNavHeight = windowHeight; 63 | } 64 | navtree.css({height:navtreeHeight + "px"}); 65 | sidenav.css({height:sideNavHeight + "px"}); 66 | } 67 | else 68 | { 69 | contentHeight = windowHeight - headerHeight; 70 | } 71 | content.css({height:contentHeight + "px"}); 72 | if (location.hash.slice(1)) { 73 | (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); 74 | } 75 | } 76 | 77 | function collapseExpand() { 78 | let newWidth; 79 | if (sidenav.width()>0) { 80 | newWidth=0; 81 | } else { 82 | const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); 83 | newWidth = (width>250 && width<$(window).width()) ? width : 250; 84 | } 85 | restoreWidth(newWidth); 86 | const sidenavWidth = $(sidenav).outerWidth(); 87 | Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); 88 | } 89 | 90 | header = $("#top"); 91 | content = $("#doc-content"); 92 | footer = $("#nav-path"); 93 | sidenav = $("#side-nav"); 94 | if (!treeview) { 95 | // title = $("#titlearea"); 96 | // titleH = $(title).height(); 97 | // let animating = false; 98 | // content.on("scroll", function() { 99 | // slideOpts = { duration: 200, 100 | // step: function() { 101 | // contentHeight = $(window).height() - header.outerHeight(); 102 | // content.css({ height : contentHeight + "px" }); 103 | // }, 104 | // done: function() { animating=false; } 105 | // }; 106 | // if (content.scrollTop()>titleH && title.css('display')!='none' && !animating) { 107 | // title.slideUp(slideOpts); 108 | // animating=true; 109 | // } else if (content.scrollTop()<=titleH && title.css('display')=='none' && !animating) { 110 | // title.slideDown(slideOpts); 111 | // animating=true; 112 | // } 113 | // }); 114 | } else { 115 | navtree = $("#nav-tree"); 116 | $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); 117 | $(sidenav).resizable({ minWidth: 0 }); 118 | } 119 | $(window).resize(function() { resizeHeight(treeview); }); 120 | if (treeview) 121 | { 122 | const device = navigator.userAgent.toLowerCase(); 123 | const touch_device = device.match(/(iphone|ipod|ipad|android)/); 124 | if (touch_device) { /* wider split bar for touch only devices */ 125 | $(sidenav).css({ paddingRight:'20px' }); 126 | $('.ui-resizable-e').css({ width:'20px' }); 127 | $('#nav-sync').css({ right:'34px' }); 128 | barWidth=20; 129 | } 130 | const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); 131 | if (width) { restoreWidth(width); } else { resizeWidth(); } 132 | } 133 | resizeHeight(treeview); 134 | const url = location.href; 135 | const i=url.indexOf("#"); 136 | if (i>=0) window.location.hash=url.substr(i); 137 | const _preventDefault = function(evt) { evt.preventDefault(); }; 138 | if (treeview) 139 | { 140 | $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); 141 | $(".ui-resizable-handle").dblclick(collapseExpand); 142 | // workaround for firefox 143 | $("body").css({overflow: "hidden"}); 144 | } 145 | $(window).on('load',function() { resizeHeight(treeview); }); 146 | } 147 | /* @license-end */ 148 | -------------------------------------------------------------------------------- /docs/html/search/all_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['computefactorial_0',['computeFactorial',['../namespacecppbase.html#a286730dfdeb99c4514f1f51c47b250d0',1,'cppbase']]], 4 | ['cppbase_1',['cppbase',['../namespacecppbase.html',1,'cppbase'],['../index.html',1,'cppbase']]], 5 | ['cppbaseall_2ehpp_2',['cppbaseAll.hpp',['../cppbaseAll_8hpp.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/all_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/all_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['factorial_2ehpp_0',['factorial.hpp',['../factorial_8hpp.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/all_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/all_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['readme_2emd_0',['README.md',['../README_8md.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 12 | 14 | 18 | 19 | -------------------------------------------------------------------------------- /docs/html/search/files_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/files_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['cppbaseall_2ehpp_0',['cppbaseAll.hpp',['../cppbaseAll_8hpp.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/files_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/files_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['factorial_2ehpp_0',['factorial.hpp',['../factorial_8hpp.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/files_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/files_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['readme_2emd_0',['README.md',['../README_8md.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/functions_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/functions_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['computefactorial_0',['computeFactorial',['../namespacecppbase.html#a286730dfdeb99c4514f1f51c47b250d0',1,'cppbase']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/mag.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 12 | 14 | 20 | 24 | 25 | -------------------------------------------------------------------------------- /docs/html/search/mag_d.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 12 | 14 | 20 | 24 | 25 | -------------------------------------------------------------------------------- /docs/html/search/mag_sel.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 13 | 15 | 21 | 26 | 31 | 32 | -------------------------------------------------------------------------------- /docs/html/search/mag_seld.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 13 | 15 | 21 | 26 | 31 | 32 | -------------------------------------------------------------------------------- /docs/html/search/namespaces_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/namespaces_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['cppbase_0',['cppbase',['../namespacecppbase.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/nomatches.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
    10 |
    No Matches
    11 |
    12 | 13 | 14 | -------------------------------------------------------------------------------- /docs/html/search/pages_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/pages_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['cppbase_0',['cppbase',['../index.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/search_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/search/search_l.png -------------------------------------------------------------------------------- /docs/html/search/search_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/search/search_m.png -------------------------------------------------------------------------------- /docs/html/search/search_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/search/search_r.png -------------------------------------------------------------------------------- /docs/html/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "cfr", 4 | 1: "c", 5 | 2: "cfr", 6 | 3: "c", 7 | 4: "c" 8 | }; 9 | 10 | var indexSectionNames = 11 | { 12 | 0: "all", 13 | 1: "namespaces", 14 | 2: "files", 15 | 3: "functions", 16 | 4: "pages" 17 | }; 18 | 19 | var indexSectionLabels = 20 | { 21 | 0: "All", 22 | 1: "Namespaces", 23 | 2: "Files", 24 | 3: "Functions", 25 | 4: "Pages" 26 | }; 27 | 28 | -------------------------------------------------------------------------------- /docs/html/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/splitbar.png -------------------------------------------------------------------------------- /docs/html/splitbard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/splitbard.png -------------------------------------------------------------------------------- /docs/html/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/sync_off.png -------------------------------------------------------------------------------- /docs/html/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/sync_on.png -------------------------------------------------------------------------------- /docs/html/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/tab_a.png -------------------------------------------------------------------------------- /docs/html/tab_ad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/tab_ad.png -------------------------------------------------------------------------------- /docs/html/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/tab_b.png -------------------------------------------------------------------------------- /docs/html/tab_bd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/tab_bd.png -------------------------------------------------------------------------------- /docs/html/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/tab_h.png -------------------------------------------------------------------------------- /docs/html/tab_hd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/tab_hd.png -------------------------------------------------------------------------------- /docs/html/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/tab_s.png -------------------------------------------------------------------------------- /docs/html/tab_sd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kartikkumar/cppbase/864261d5e029821220a748154a6bb88b86c82b5d/docs/html/tab_sd.png -------------------------------------------------------------------------------- /include/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com) 2 | # Distributed under the MIT License. 3 | # See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT 4 | 5 | # The CMake setup for this project is based off of the following source: 6 | # - https://cliutils.gitlab.io/modern-cmake 7 | 8 | # Add interface library for a header-only library 9 | # Uncomment add_subdirectory(include) in the main CMakeLists.txt to enable this 10 | add_library(cppbase_lib INTERFACE) 11 | target_include_directories(cppbase_lib INTERFACE .) 12 | -------------------------------------------------------------------------------- /include/cppbase/cppbaseAll.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com) 3 | * Distributed under the MIT License. 4 | * See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT 5 | */ 6 | 7 | #pragma once 8 | 9 | #include "cppbase/factorial.hpp" 10 | -------------------------------------------------------------------------------- /include/cppbase/factorial.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com) 3 | * Distributed under the MIT License. 4 | * See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT 5 | */ 6 | 7 | #pragma once 8 | 9 | namespace cppbase 10 | { 11 | 12 | //! Compute factorial. 13 | /*! 14 | * Computes factorial of a given integer. 15 | * 16 | * @param[in] integerNumber Integer number to compute factorial of 17 | * @return Value of factorial of integer number 18 | */ 19 | int computeFactorial(const int integerNumber); 20 | 21 | } // namespace cppbase 22 | -------------------------------------------------------------------------------- /src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com) 2 | # Distributed under the MIT License. 3 | # See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT 4 | 5 | # The CMake setup for this project is based off of the following source: 6 | # - https://cliutils.gitlab.io/modern-cmake 7 | 8 | # ----------------------------------------------- 9 | 10 | # List all files that should be included in the library here 11 | set( 12 | SOURCE_LIST 13 | factorial.cpp 14 | ) 15 | 16 | # ----------------------------------------------- 17 | 18 | # Grab a list of all header files 19 | file(GLOB HEADER_LIST CONFIGURE_DEPENDS "${PROJECT_SOURCE_DIR}/include/cppbase/*.hpp") 20 | 21 | # Make an automatic library - will be static or dynamic based on user setting 22 | # Note that headers are optional, and do not affect add_library, but they will not 23 | # show up in IDEs unless they are listed in add_library 24 | add_library( 25 | cppbase_lib 26 | ${SOURCE_LIST} 27 | ${HEADER_LIST} 28 | ) 29 | target_include_directories(cppbase_lib PUBLIC ../include) 30 | target_compile_features(cppbase_lib PUBLIC cxx_std_11) 31 | 32 | # IDEs should put the headers in a nice place 33 | source_group( 34 | TREE "${PROJECT_SOURCE_DIR}/include" 35 | PREFIX "Header Files" 36 | FILES ${HEADER_LIST} 37 | ) 38 | -------------------------------------------------------------------------------- /src/factorial.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com) 3 | * Distributed under the MIT License. 4 | * See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT 5 | */ 6 | 7 | #include 8 | 9 | #include "cppbase/factorial.hpp" 10 | 11 | namespace cppbase 12 | { 13 | 14 | //! Compute factorial. 15 | int computeFactorial(const int integerNumber) 16 | { 17 | assert(integerNumber >= 0); 18 | return (integerNumber == 0) ? 1 : integerNumber * computeFactorial(integerNumber-1); 19 | } 20 | 21 | } // namespace cppbase 22 | -------------------------------------------------------------------------------- /tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com) 2 | # Distributed under the MIT License. 3 | # See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT 4 | 5 | # The CMake setup for this project is based off of the following sources: 6 | # - https://cliutils.gitlab.io/modern-cmake 7 | # - https://github.com/catchorg/Catch2/blob/devel/docs/cmake-integration.md 8 | 9 | # @TODO: add find_package call to use Catch2 that is already present and only fetch otherwise 10 | # @TODO: consider only using the Catch2 single header to avoid building the whole library (slow) 11 | 12 | # Fetch Catch2 testing library 13 | FetchContent_Declare( 14 | Catch2 15 | GIT_REPOSITORY https://github.com/catchorg/Catch2.git 16 | GIT_TAG v3.8.1 # or a later release 17 | ) 18 | FetchContent_MakeAvailable(Catch2) 19 | 20 | # Add test executables and linked libraries 21 | add_executable(cppbase_tests testFactorial.cpp) 22 | target_compile_features(cppbase_tests PRIVATE cxx_std_11) 23 | target_link_libraries(cppbase_tests PRIVATE cppbase_lib Catch2::Catch2WithMain) 24 | 25 | # Register tests in CTest 26 | include(Catch) 27 | catch_discover_tests(cppbase_tests) 28 | -------------------------------------------------------------------------------- /tests/testFactorial.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com) 3 | * Distributed under the MIT License. 4 | * See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT 5 | */ 6 | 7 | #include 8 | 9 | #include "cppbase/factorial.hpp" 10 | 11 | namespace cppbase 12 | { 13 | namespace tests 14 | { 15 | 16 | TEST_CASE("Compute factorials", "[factorial]") 17 | { 18 | REQUIRE(computeFactorial(1) == 1); 19 | REQUIRE(computeFactorial(2) == 2); 20 | REQUIRE(computeFactorial(3) == 6); 21 | REQUIRE(computeFactorial(10) == 3628800); 22 | 23 | // @TODO: find a way to test assert statement in computeFactorial() 24 | } 25 | 26 | } // namespace tests 27 | } // namespace cppbase 28 | -------------------------------------------------------------------------------- /version.hpp.in: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2025 Kartik Kumar (me@kartikkumar.com) 3 | * Distributed under the MIT License. 4 | * See accompanying file LICENSE or copy at http://opensource.org/licenses/MIT 5 | */ 6 | 7 | #pragma once 8 | 9 | #define VERSION_MAJOR @PROJECT_VERSION_MAJOR@ 10 | #define VERSION_MINOR @PROJECT_VERSION_MINOR@ 11 | #define VERSION_PATCH @PROJECT_VERSION_PATCH@ 12 | #define VERSION_TWEAK @PROJECT_VERSION_TWEAK@ 13 | #define VERSION "@PROJECT_VERSION@" 14 | --------------------------------------------------------------------------------