From a9cdaec4537ecd1be45084eb0bca08a092c79a5c Mon Sep 17 00:00:00 2001 From: oshkines <102374345+oshkines@users.noreply.github.com> Date: Sat, 28 Feb 2026 15:44:00 +0300 Subject: [PATCH 01/35] Update main.cpp --- main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index 18861d612..08956abd2 100644 --- a/main.cpp +++ b/main.cpp @@ -4,6 +4,6 @@ int main(int, char **) { std::cout << "Version: " << version() << std::endl; - std::cout << "Hello, world!" << std::endl; + std::cout << "Hello, otus!" << std::endl; return 0; } From 2d62d5ff9685c3ec184689ff9b60ab7b03315836 Mon Sep 17 00:00:00 2001 From: oshkines <102374345+oshkines@users.noreply.github.com> Date: Sat, 28 Feb 2026 15:47:49 +0300 Subject: [PATCH 02/35] Update main.cpp --- main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index 08956abd2..03b6da59a 100644 --- a/main.cpp +++ b/main.cpp @@ -4,6 +4,6 @@ int main(int, char **) { std::cout << "Version: " << version() << std::endl; - std::cout << "Hello, otus!" << std::endl; + std::cout << "Hello, otus!" << std::endl; return 0; } From de47e1bc9d15842a3ef55d21f8541c4a7a8cd795 Mon Sep 17 00:00:00 2001 From: oshkines Date: Wed, 4 Mar 2026 18:32:21 +0300 Subject: [PATCH 03/35] FileIgnore --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..d8572c6eb --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +**/.idea/ +**/.settings/ +**/.vscode/ +**/build/ +**/debug/ +**/release/ \ No newline at end of file From d90317ce07dde0b3b524cfc0c81ceb6d65589725 Mon Sep 17 00:00:00 2001 From: oshkines Date: Thu, 5 Mar 2026 21:42:54 +0300 Subject: [PATCH 04/35] Lesson2 --- CMakeLists.txt | 4 +- ip_filter.tsv | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++ main.cpp | 189 ++++++++- 3 files changed, 1182 insertions(+), 11 deletions(-) create mode 100644 ip_filter.tsv diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b57fe738..2da74cf3f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,7 +13,7 @@ add_executable(helloworld_cli main.cpp) add_library(helloworld lib.cpp) set_target_properties(helloworld_cli helloworld PROPERTIES - CXX_STANDARD 14 + CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON ) @@ -30,7 +30,7 @@ if(WITH_BOOST_TEST) add_executable(test_version test_version.cpp) set_target_properties(test_version PROPERTIES - CXX_STANDARD 14 + CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON ) diff --git a/ip_filter.tsv b/ip_filter.tsv new file mode 100644 index 000000000..6cf6d5b9e --- /dev/null +++ b/ip_filter.tsv @@ -0,0 +1,1000 @@ +113.162.145.156 111 0 +157.39.22.224 5 6 +79.180.73.190 2 1 +179.210.145.4 22 0 +219.102.120.135 486 0 +67.232.81.208 1 0 +85.254.10.197 0 7 +23.240.215.189 6 0 +1.29.168.152 17 0 +185.69.186.168 1 3 +110.152.103.161 0 1 +185.182.81.131 1 1 +68.45.152.8 2 0 +114.221.179.117 0 1 +185.89.100.249 752 0 +46.70.113.73 1 0 +188.68.0.38 1 0 +119.42.115.97 11 0 +194.106.108.214 0 3 +24.210.239.177 1 0 +166.88.193.116 9 0 +62.205.202.214 0 2 +188.166.87.191 0 50 +103.62.147.2 1 6 +95.181.177.197 1 0 +95.181.177.197 1 0 +149.107.0.27 3 0 +182.186.69.18 96 0 +73.21.168.251 2 0 +113.190.198.73 3 0 +91.15.15.33 9 0 +188.72.96.184 30 0 +50.254.198.161 2 0 +98.219.109.151 1 1 +123.133.114.213 2 0 +89.177.68.136 0 1 +89.177.68.136 0 1 +65.208.151.112 1 0 +183.198.27.25 16 100 +187.189.75.118 42 0 +188.212.33.157 6 0 +94.240.192.2 0 6 +69.160.110.157 1 0 +81.198.169.232 5 2 +185.89.100.47 34 0 +46.182.19.219 920 960 +183.88.197.193 11 0 +49.74.228.23 3 136 +124.224.214.76 1 0 +107.185.11.105 1 0 +41.235.16.95 1 0 +68.37.186.197 1 0 +188.72.127.199 117 1 +173.171.247.113 2 0 +173.171.247.113 2 0 +49.35.12.51 0 1 +67.167.96.234 0 1 +204.11.243.70 59 0 +182.58.201.28 0 2 +168.167.95.164 3 0 +153.151.156.27 3 0 +79.110.28.59 112 0 +37.188.189.227 2 0 +188.69.198.152 0 2 +98.196.145.69 2 0 +68.202.216.62 1 0 +68.202.216.62 1 0 +68.202.216.62 1 0 +5.189.203.79 30 0 +197.42.2.124 0 2 +95.10.3.43 72 0 +180.251.148.71 1 0 +113.144.6.220 6 0 +89.236.227.204 0 1 +67.250.31.212 1 0 +67.250.31.212 1 0 +177.66.186.82 2 0 +107.209.121.224 2 0 +213.103.211.108 0 2 +27.49.172.153 0 3 +78.158.5.183 0 1 +78.158.5.183 0 1 +27.109.142.224 0 4 +103.101.109.70 0 4 +117.241.3.153 2 4 +86.146.190.166 1 0 +68.60.148.11 1 0 +89.146.70.220 0 1 +171.5.117.72 25 0 +66.169.196.128 0 4 +5.8.47.226 278 0 +165.255.112.201 24 0 +207.191.252.36 294 0 +123.231.108.232 124 0 +185.146.112.69 1 3 +187.190.255.160 0 1 +187.190.255.160 0 1 +191.209.77.60 152 0 +58.126.159.88 1 0 +222.42.146.225 2 0 +193.78.85.148 0 1 +66.102.6.107 1 1 +5.189.202.254 121 0 +188.72.126.149 48 0 +185.217.68.210 1 0 +190.62.36.205 0 1 +190.62.36.205 0 1 +114.243.13.43 47 0 +128.199.42.73 10 5 +5.188.216.44 122 0 +74.124.159.77 1 0 +103.74.19.104 5 1 +183.182.99.139 26 0 +188.72.126.153 74 0 +173.211.75.241 1 0 +163.172.151.47 358 19 +180.183.42.174 1 0 +93.237.52.162 0 1 +60.127.180.251 2 0 +84.132.45.217 0 2 +37.9.45.225 9 0 +82.67.92.27 3 0 +123.191.149.173 21 0 +73.90.162.151 1 0 +178.200.214.178 0 3 +70.123.153.26 1 0 +177.81.192.15 6 0 +47.29.8.38 0 2 +123.21.121.123 6 0 +73.11.30.103 1 0 +73.11.30.103 1 0 +112.79.133.183 1 0 +151.251.24.30 0 3 +47.217.153.6 2 0 +47.208.114.106 1 0 +93.179.90.113 20 0 +149.107.0.31 27 0 +188.166.66.232 3 4 +64.89.99.122 17 0 +116.18.33.248 1 0 +211.226.114.169 3 0 +69.76.232.100 1 0 +69.76.232.100 1 0 +69.76.232.100 1 0 +69.76.232.100 1 0 +193.70.91.227 5 0 +191.101.165.168 39 0 +195.205.28.27 7 0 +177.81.184.55 5 0 +24.163.91.199 5 0 +197.48.69.176 1 0 +45.127.57.74 57 0 +14.169.83.98 12 0 +47.11.217.253 0 2 +222.173.235.246 1 0 +172.2.146.147 1 0 +67.183.246.205 2 0 +218.185.237.250 5 0 +74.136.5.194 8 0 +14.187.212.140 11 0 +149.3.43.228 0 1 +141.101.132.191 63 0 +189.216.159.43 2 0 +5.8.47.84 83 0 +50.26.133.146 2 0 +83.221.180.18 0 4 +117.213.109.57 0 1 +109.193.71.64 0 1 +46.70.147.26 1 0 +188.166.49.134 3 2 +117.198.224.130 0 1 +77.179.162.181 0 2 +27.251.253.58 2017 0 +75.69.188.107 7 0 +198.48.136.200 169 0 +186.92.150.52 0 1 +184.170.28.62 1 0 +47.44.49.2 4 0 +24.23.88.218 1 0 +24.23.88.218 1 0 +220.180.121.6 1 0 +99.114.89.48 3 0 +116.25.102.111 13 0 +93.183.170.145 0 1 +47.29.254.116 0 1 +18.248.2.85 360 20 +141.101.132.73 936 0 +47.220.163.51 1 0 +47.220.163.51 1 0 +123.20.104.253 2 0 +184.183.34.140 1 0 +128.199.99.114 1 0 +93.179.90.77 44 0 +5.62.159.66 163 0 +87.118.92.43 218 83 +185.14.194.116 184 0 +161.0.198.138 0 2 +49.118.223.200 0 1 +188.72.126.130 77 0 +42.54.29.150 1 108 +14.182.208.223 2 0 +14.182.208.223 2 0 +73.197.19.19 1 0 +49.206.125.56 0 2 +67.165.212.104 0 2 +71.90.169.184 2 0 +117.207.33.172 0 1 +195.234.85.219 0 8 +5.152.151.166 11 0 +90.191.74.74 2 5 +184.58.77.155 1 0 +104.218.63.75 603 65 +117.3.82.3 3 0 +188.211.226.16 1495 0 +107.175.234.130 33 0 +85.253.112.79 0 4 +190.213.37.222 1 3 +70.234.198.76 2 0 +70.234.198.76 2 0 +5.188.216.204 136 0 +69.251.6.155 2 0 +93.34.197.129 0 2 +5.8.47.202 77 0 +14.162.206.233 6 0 +1.231.69.33 1 0 +69.23.42.183 3 0 +63.87.226.66 1 0 +5.254.65.190 0 3 +37.33.109.179 0 2 +1.1.234.8 0 1 +119.201.4.165 1 0 +179.218.84.120 13 0 +5.101.217.139 322 0 +96.92.198.213 1 0 +96.92.198.213 1 0 +117.248.24.152 0 1 +85.253.148.39 0 2 +27.70.17.38 5 0 +211.225.89.44 1 0 +184.91.78.121 1 0 +95.181.176.189 209 0 +178.6.12.226 1 0 +131.221.56.20 3 0 +84.108.11.149 0 6 +164.126.188.157 1 1 +107.223.148.60 1 0 +218.7.166.58 19 0 +177.42.212.125 94 0 +191.101.54.77 2 0 +191.101.54.77 2 0 +94.30.173.135 0 18 +92.105.136.141 0 1 +41.159.26.123 884 0 +24.191.211.63 3 1 +202.74.243.112 92 0 +108.73.108.163 1 0 +67.188.13.100 1 0 +123.20.181.120 4 0 +179.211.81.134 30 0 +64.40.152.168 1 0 +68.43.142.235 3 0 +173.211.75.62 2 0 +50.81.221.73 7 0 +103.203.133.202 46 0 +47.74.157.18 1 0 +84.252.26.213 0 1 +84.252.26.213 0 1 +71.234.84.132 1 0 +186.125.174.10 3 0 +113.182.239.185 300 0 +106.67.36.120 0 1 +189.100.88.211 2 0 +184.170.35.121 1 0 +181.215.20.38 2 0 +185.3.147.64 82 22 +187.64.27.167 19 0 +73.55.95.93 1 0 +45.32.140.209 148 0 +37.110.213.11 0 1 +177.32.68.231 2 0 +203.192.225.115 1 18 +189.181.251.184 0 1 +82.199.206.151 112 0 +73.224.202.251 2 0 +75.90.211.217 1 0 +173.211.75.55 2 0 +115.221.10.154 3 0 +190.39.83.68 1 0 +112.124.39.77 17 0 +5.189.200.175 69 0 +181.169.25.33 84 0 +202.166.194.217 8 0 +108.18.251.109 1 0 +188.72.127.216 46 0 +76.94.181.14 1 0 +141.196.77.153 0 4 +69.227.160.129 2 0 +5.101.221.37 82 0 +59.42.27.180 98 0 +188.68.0.207 225 0 +173.24.113.249 1 0 +173.24.113.249 1 0 +14.231.56.112 5 0 +5.62.159.140 54 0 +141.101.132.179 21 0 +95.90.191.205 0 2 +193.93.192.122 34 0 +75.65.190.40 3 0 +91.204.190.7 0 3 +131.129.231.39 0 1 +186.86.29.56 701 0 +91.135.176.211 4 0 +154.160.1.180 3 0 +83.143.86.155 1 0 +60.7.107.169 21 0 +89.249.207.229 40 0 +95.181.176.155 4 0 +95.181.176.155 4 0 +41.199.158.154 2 0 +36.5.146.30 15 0 +217.72.94.100 0 1 +217.72.94.100 0 1 +217.72.94.100 0 1 +217.72.94.100 0 1 +217.72.94.100 0 1 +14.231.214.53 11 0 +89.163.155.202 33 15 +85.187.105.45 0 1 +77.13.117.195 0 1 +70.91.13.106 1 0 +126.241.3.145 1 0 +114.249.117.72 3 0 +113.173.67.60 1 0 +183.87.196.93 0 7 +49.203.248.26 1 0 +49.203.248.26 1 0 +185.89.100.59 11 0 +95.181.177.241 3 0 +125.43.69.142 0 5 +37.186.67.25 5 0 +185.46.85.204 8 0 +73.91.213.154 1 0 +111.61.78.76 15 0 +75.114.69.42 18 0 +95.181.177.50 191 0 +95.90.254.195 1 0 +109.192.168.38 2 22 +5.101.217.48 1 0 +86.34.133.118 6 0 +46.101.163.119 3 3 +189.6.128.228 12 0 +202.9.43.222 1 0 +202.142.76.12 0 1 +105.73.25.26 1 0 +119.184.218.145 23 0 +179.219.241.71 2 0 +156.212.169.72 1 0 +103.66.196.13 3 0 +68.41.149.247 1 0 +117.102.78.2 3 0 +14.186.245.237 8 0 +93.179.90.24 206 0 +39.88.253.245 17 138 +187.3.66.189 2264 0 +24.17.1.75 1 0 +24.17.1.75 1 0 +188.72.127.249 74 0 +46.161.60.92 156 0 +72.77.71.111 1 0 +114.47.230.91 61 0 +177.87.9.192 13 0 +49.156.211.218 1 4 +187.65.248.41 1 0 +73.244.53.54 1 0 +117.213.254.4 1 7 +187.39.197.81 2 0 +78.84.243.190 0 2 +188.72.126.152 106 0 +141.101.132.158 109 0 +178.253.240.126 2 0 +46.101.127.145 150 51 +154.16.89.9 4 0 +139.167.0.12 1 0 +168.196.9.47 1 0 +107.77.72.118 1 0 +72.181.175.235 1 0 +72.181.175.235 1 0 +104.222.165.144 4 0 +98.214.16.13 2 0 +171.221.113.228 2 0 +46.55.46.98 0 2 +47.39.211.31 4 0 +45.248.186.76 0 1 +77.234.45.173 5 0 +185.163.24.76 0 2 +113.89.239.241 4 2 +113.206.92.243 6 794 +107.167.109.164 6 1 +185.46.86.131 2 0 +185.46.86.131 2 0 +75.171.214.8 1 0 +95.181.176.240 24 0 +95.181.176.240 24 0 +217.159.171.6 0 3 +195.250.178.88 1 3 +89.236.251.247 0 3 +68.46.218.208 7 0 +71.88.10.118 1 0 +176.90.14.232 3 0 +99.251.8.64 0 3 +101.98.164.130 0 4 +71.52.72.142 1 0 +84.15.185.66 0 1 +45.124.191.237 1 2 +168.195.231.1 5464 0 +73.141.213.207 2 0 +78.171.131.126 2 0 +73.166.52.138 0 1 +73.166.52.138 0 1 +103.203.241.89 2 2 +188.68.0.102 156 0 +108.30.39.3 0 1 +108.30.39.3 0 1 +191.207.27.171 1 0 +123.116.254.111 7 0 +113.77.173.249 3 0 +81.151.71.218 0 6 +191.191.197.98 32 0 +188.166.49.134 15 4 +108.180.26.133 0 2 +108.180.26.133 0 2 +45.62.234.109 3 0 +177.43.57.48 20 0 +95.181.176.136 123 0 +117.196.197.139 1 3 +23.240.217.243 1 3 +70.180.91.246 2 0 +159.203.13.174 5 0 +186.46.222.194 0 6 +141.101.132.93 128 0 +186.179.100.193 1 0 +181.215.16.39 2 0 +114.95.157.203 321 0 +189.7.220.132 10 0 +189.251.241.73 0 7 +172.97.129.82 1 0 +64.237.226.172 3 0 +50.32.39.122 1 0 +37.201.203.88 0 1 +170.80.252.30 37 0 +89.170.3.145 1 0 +156.204.84.209 31 0 +78.84.60.71 0 1 +78.84.60.71 0 1 +78.84.60.71 0 1 +78.10.207.6 0 2 +99.169.226.169 1 0 +99.169.226.169 1 0 +99.169.226.169 1 0 +99.169.226.169 1 0 +73.104.80.103 1 0 +73.104.80.103 1 0 +79.206.209.45 0 1 +103.220.209.173 0 1 +66.249.92.198 6 0 +47.16.77.236 0 2 +89.38.96.66 7 0 +75.206.129.73 1 0 +129.56.12.56 30 0 +5.8.47.44 961 0 +193.24.92.54 0 4 +156.222.243.190 1 0 +176.228.138.151 0 1 +176.228.138.151 0 1 +176.228.138.151 0 1 +181.122.209.200 3 0 +35.193.144.59 803 0 +101.24.171.210 32 50 +188.68.0.185 34 0 +113.195.165.235 5 0 +41.242.141.134 2061 0 +146.185.206.53 6 0 +95.181.177.111 75 0 +67.174.152.35 1 1 +78.100.196.199 11 0 +220.132.196.75 4 0 +14.167.215.198 7 0 +66.183.9.162 1 0 +189.62.20.66 2 0 +68.172.234.141 2 0 +1.87.203.225 1 112 +32.215.162.52 1 0 +32.215.162.52 1 0 +32.215.162.52 1 0 +5.62.159.232 69 0 +81.213.167.197 1 0 +180.246.83.253 16 0 +91.204.14.185 15 0 +49.213.19.115 4 3 +74.116.59.8 50 0 +202.129.0.27 22470 0 +94.141.76.33 0 1 +37.110.210.153 0 1 +125.165.131.226 1 0 +61.74.152.228 1 0 +61.74.152.228 1 0 +217.174.230.98 0 2 +173.225.247.123 2 0 +77.68.40.185 0 1 +182.75.81.122 2 0 +182.75.81.122 2 0 +79.184.219.107 11 0 +97.95.65.151 1 0 +49.213.19.137 5 6 +118.114.86.199 1 0 +175.192.51.84 18 0 +97.82.75.243 1 0 +72.79.56.37 27 0 +117.2.125.26 13 0 +193.194.132.76 0 2 +119.15.93.202 3 0 +119.15.93.202 3 0 +119.15.93.202 3 0 +107.174.108.194 12 0 +103.207.242.56 1 24 +78.109.65.21 0 7 +171.77.145.44 0 1 +45.123.220.122 2 0 +5.189.202.198 4 0 +88.91.160.177 1 6 +149.154.167.161 1 0 +109.75.90.41 1 4 +188.97.225.180 0 1 +76.112.220.160 2 0 +5.101.221.76 104 0 +114.125.118.9 2 0 +188.237.136.152 1 3 +213.225.6.88 0 2 +14.187.178.209 1 0 +46.251.197.23 1 0 +189.121.253.246 78 0 +109.127.20.122 0 2 +118.96.117.80 31 0 +27.97.226.94 0 1 +96.94.121.25 2 0 +5.8.47.202 34 0 +46.161.56.203 6 0 +193.136.199.50 1 0 +121.27.48.172 6 0 +36.67.5.186 1 0 +89.28.76.171 50 0 +46.161.56.174 92 0 +188.2.221.111 4 1 +85.253.176.102 0 1 +79.15.208.108 4 0 +5.62.154.58 51 0 +85.114.239.251 0 10 +46.161.56.106 3 0 +46.161.56.106 3 0 +67.5.105.174 1 0 +181.215.0.59 5 0 +95.181.176.58 653 0 +72.193.106.165 1 0 +217.61.224.38 1 0 +185.89.100.44 102 0 +188.72.126.41 40 0 +46.70.225.39 0 3 +80.133.65.104 0 1 +82.196.6.103 4 0 +185.158.116.188 11 0 +94.30.155.174 0 1 +5.101.219.107 12 0 +197.48.89.171 1 0 +164.132.3.102 2 0 +79.100.201.157 11 0 +47.11.7.112 0 1 +82.32.174.146 1 0 +189.217.133.144 0 1 +146.185.177.103 919 76 +217.25.18.126 0 1 +5.62.154.52 39 0 +187.188.129.136 1 0 +217.82.152.217 1 0 +106.51.30.215 0 1 +68.106.156.3 2 0 +109.185.152.20 0 7 +45.247.3.119 2 1 +108.171.129.171 0 2 +189.102.186.9 4 0 +189.175.155.108 3 0 +103.28.36.56 3 0 +212.56.210.90 0 1 +204.232.108.181 1 1 +85.180.234.65 0 1 +188.166.49.33 13 0 +188.166.72.33 2 1 +156.220.35.15 8 0 +41.227.84.129 3 0 +188.68.0.30 120 0 +176.12.58.180 13 0 +85.118.110.10 0 11 +162.247.72.217 56 15 +67.205.174.171 1 0 +185.89.217.170 1 1 +176.241.89.82 3 0 +123.23.148.249 4 0 +123.23.148.249 4 0 +183.147.179.187 2 0 +111.222.25.83 0 1 +91.204.14.239 96 0 +60.174.233.154 4 0 +157.37.38.188 0 2 +50.80.193.175 1 0 +37.221.176.236 1 0 +118.69.205.201 20 0 +113.173.98.95 4 0 +5.146.199.53 0 1 +213.213.103.190 60 0 +141.101.132.120 73 0 +171.221.26.73 30 0 +188.68.0.171 116 0 +151.53.178.221 0 2 +146.185.204.136 111 0 +117.209.246.210 0 1 +193.40.12.10 0 2 +77.215.105.50 2 24 +122.40.163.51 18906 0 +182.69.22.32 3 6 +95.181.176.30 0 1 +188.72.96.177 38 0 +108.49.29.94 0 3 +108.49.29.94 0 3 +23.254.17.73 3 0 +46.161.61.51 61 0 +73.175.73.131 1 0 +79.208.172.72 0 1 +36.102.236.203 0 9 +95.90.254.195 4 0 +138.122.123.42 6 0 +126.218.40.164 2 0 +5.62.153.169 10 0 +83.128.50.47 3 0 +83.128.50.47 3 0 +78.129.149.3 0 1 +78.129.149.3 0 1 +146.255.242.234 0 7 +14.177.248.167 8 0 +213.219.115.76 1 10 +185.46.87.231 37 0 +188.72.96.77 59 0 +109.91.38.1 0 5 +201.219.180.58 789 0 +85.65.43.232 3 7 +73.87.94.81 1 0 +73.87.94.81 1 0 +5.62.154.49 96 0 +162.236.216.26 1 0 +190.198.255.34 1 0 +183.88.77.2 6 0 +95.181.177.213 42 0 +73.76.58.22 2 0 +47.149.142.171 1 0 +47.149.142.171 1 0 +119.55.121.74 1 0 +188.209.233.110 0 1 +188.209.233.110 0 1 +181.215.6.120 1 0 +181.215.6.120 1 0 +61.98.171.199 1 0 +187.187.193.21 0 1 +165.225.81.66 0 3 +98.64.84.57 1 0 +46.161.63.66 71 0 +67.215.250.146 7 0 +103.251.226.120 2 0 +199.249.223.75 172 6 +47.11.7.240 0 1 +117.200.96.91 0 3 +191.101.54.244 10 0 +95.89.126.115 2 0 +203.249.55.94 2 0 +49.34.5.58 0 1 +14.97.7.246 0 2 +2.29.170.242 4456 0 +14.17.122.207 44 0 +185.213.20.252 93 0 +73.185.49.225 2 0 +47.11.210.118 0 2 +14.232.172.139 1 0 +5.101.222.205 18 0 +134.48.22.110 6 0 +93.179.90.237 2 0 +171.6.156.117 1 0 +171.6.156.117 1 0 +185.117.149.113 1 0 +46.161.58.202 6 0 +191.101.145.250 1 0 +191.101.145.250 1 0 +116.68.105.105 0 2 +125.163.151.121 48 0 +81.198.25.242 0 7 +92.161.182.241 0 5 +194.208.63.191 48 0 +90.114.80.144 2 0 +5.189.200.116 36 0 +186.182.82.240 60 0 +122.15.212.146 0 1 +122.15.212.146 0 1 +122.15.212.146 0 1 +137.97.9.40 0 1 +189.122.18.125 15 0 +187.188.28.45 1 0 +190.9.214.105 0 5 +222.130.177.64 3 0 +123.136.249.120 0 1 +178.220.115.243 0 2 +14.102.246.210 1 0 +178.119.240.143 3 0 +98.89.83.30 1 0 +50.106.25.168 4 0 +185.89.217.189 1 0 +5.62.159.38 181 0 +186.95.24.238 2 0 +5.189.202.171 8 0 +71.223.161.63 1 0 +14.207.158.135 120 0 +216.239.90.19 301 18 +176.153.26.5 1 2 +99.61.192.35 1 0 +73.48.161.172 1 0 +73.48.161.172 1 0 +73.48.161.172 1 0 +188.166.82.41 1 1 +117.5.75.127 2 0 +183.83.78.172 1 0 +172.243.2.129 4 0 +84.146.103.72 0 1 +5.101.217.177 112 0 +110.167.197.122 1 0 +5.189.203.43 4 0 +95.213.218.108 3 0 +185.46.86.22 98 0 +191.101.54.127 95 0 +194.135.166.12 14 0 +79.237.168.168 0 1 +45.32.108.44 6 0 +186.204.34.46 20 0 +117.5.211.1 49 0 +69.57.247.218 8 0 +70.121.9.224 36 0 +209.107.214.71 12 0 +189.34.176.93 924 0 +80.78.237.5 30 0 +14.186.176.190 1 0 +84.108.20.44 0 2 +176.126.83.77 16 0 +104.174.173.170 1 0 +219.92.33.137 46 0 +78.48.70.89 0 1 +186.37.202.178 1 0 +71.223.241.223 1 0 +71.223.241.223 1 0 +73.140.229.40 1 0 +188.188.19.204 0 2 +195.154.232.98 0 5 +112.28.106.231 1 0 +62.219.224.250 0 1 +93.171.216.68 9 0 +37.26.142.184 4 4 +87.255.69.86 0 1 +87.255.69.86 0 1 +157.48.15.35 0 6 +50.3.197.73 4 0 +23.27.228.81 7 0 +190.56.99.94 409 0 +76.228.35.48 2 0 +5.8.47.100 5 0 +110.77.199.103 0 17 +54.205.123.87 2 0 +183.89.22.222 1 0 +14.139.41.109 0 1 +186.43.29.31 1 0 +173.31.96.193 1 0 +173.31.96.193 1 0 +77.79.38.5 0 1 +95.85.80.229 66 0 +191.101.144.238 2 0 +50.25.139.252 1 0 +50.25.139.252 1 0 +177.82.171.180 3 0 +113.87.26.63 100 0 +77.181.225.187 5 4 +103.89.255.122 1 4 +107.222.35.45 187 0 +200.125.116.65 101 0 +202.5.196.66 0 4 +158.181.40.154 5 0 +86.115.0.94 0 1 +68.108.194.244 1 0 +68.108.194.244 1 0 +68.108.194.244 1 0 +110.87.118.235 3 0 +105.158.16.153 1 0 +188.72.96.182 744 0 +14.187.132.10 2 0 +85.253.45.35 0 4 +188.166.36.54 10 0 +111.37.37.235 1 0 +111.37.37.235 1 0 +79.184.223.137 7 0 +34.214.132.226 0 9 +74.96.79.23 0 1 +188.166.41.162 35 14 +117.5.169.43 109 0 +76.221.68.186 2 0 +185.89.100.48 12 0 +74.132.249.206 3 0 +91.126.205.238 34 0 +5.62.159.143 6 0 +188.146.232.177 0 1 +188.68.3.92 193 0 +200.5.83.150 2391 0 +93.179.90.116 78 0 +94.185.80.235 87 0 +188.104.116.79 0 3 +177.232.136.107 0 1 +123.16.114.132 29 0 +178.254.168.220 2 0 +66.249.93.2 1 0 +96.30.65.207 58 0 +73.84.200.187 3 0 +70.35.215.94 0 1 +139.0.6.42 4 0 +185.46.86.132 6 0 +89.177.29.121 0 2 +118.44.17.181 1 0 +146.185.204.191 1 0 +146.185.204.191 1 0 +190.111.195.137 30 0 +146.185.206.106 5 0 +185.2.32.173 641 0 +96.31.53.251 1 0 +207.41.189.106 2 0 +36.63.28.208 28 0 +31.170.161.42 3 0 +209.107.196.159 4 0 +185.46.85.78 15 0 +183.12.241.137 1 0 +184.167.219.223 3 0 +177.34.62.115 4 0 +5.189.200.201 87 0 +47.11.5.9 0 1 +179.218.5.141 11 0 +5.62.159.25 4 0 +32.209.238.246 1 0 +32.209.238.246 1 0 +32.209.238.246 1 0 +32.209.238.246 1 0 +46.70.29.76 1 0 +104.222.164.236 2 0 +194.152.37.147 3 41 +177.80.227.215 342 0 +5.101.217.197 84 0 +47.8.5.240 2 1 +192.40.95.34 1 0 +103.244.252.242 1 0 +185.89.100.129 64 0 +178.82.94.82 0 2 +202.100.206.36 0 7 +45.249.48.124 44 0 +84.42.249.4 0 1 +62.12.93.76 4 0 +77.93.192.43 0 3 +141.101.132.50 101 0 +89.201.7.164 0 6 +5.15.220.203 3 0 +185.69.186.227 3 4 +24.193.178.168 0 3 +65.26.31.140 62 0 +83.99.166.35 1 0 +103.254.155.74 2 0 +49.34.2.43 0 1 +91.142.208.226 3 0 +193.93.192.134 736 0 +188.68.0.249 39 0 +79.110.28.78 151 0 +71.211.2.230 1 0 +188.72.127.48 110 0 +185.217.68.209 1 0 +99.242.220.241 1 3 +5.62.159.148 407 0 +1.70.44.170 4665 0 +191.23.199.126 1 0 +98.242.127.228 2 0 +59.99.48.248 1 6 +67.191.200.150 2 0 +213.6.149.66 35 0 +77.109.86.105 1 3 +123.30.177.138 44 0 +185.14.194.82 79 0 +39.46.86.85 139 0 +220.189.194.162 39 0 +5.189.200.97 86 0 +24.91.41.150 1 0 +209.197.20.206 6 0 +12.155.92.10 1 0 +12.155.92.10 1 0 +205.186.180.34 3 0 +46.161.60.35 716 0 +73.115.6.159 1 0 +222.82.198.61 2 7 +213.200.15.167 0 1 +5.101.220.79 98 0 +98.122.86.197 319 0 +14.231.215.204 25 0 +76.94.77.14 1 0 +73.58.220.10 1 0 +73.58.220.10 1 0 +73.58.220.10 1 0 +193.93.192.165 92 0 +189.122.214.227 709 0 +191.101.54.148 2 0 +84.109.80.89 0 2 +84.109.80.89 0 2 +84.109.80.89 0 2 +70.95.65.80 2 0 +70.95.65.80 2 0 +70.95.65.80 2 0 +113.182.18.30 4 0 +113.182.18.30 4 0 +144.217.161.119 117 24 +46.223.254.56 0 1 +46.223.254.56 0 1 +71.90.148.209 3 0 +156.220.69.153 1 0 +158.181.19.102 40 0 +59.84.240.60 1 0 +95.181.176.106 66 0 +189.120.152.120 6 0 +153.136.8.214 0 18 +101.21.80.126 1 0 +198.73.50.71 286 82 +68.227.43.14 3 0 +172.248.74.10 1 0 +172.248.74.10 1 0 +46.161.56.241 37 0 +66.249.93.49 3 0 +59.89.245.157 0 5 +163.172.73.168 25 0 +5.62.154.110 191 0 +61.148.243.183 1 7 +81.171.81.234 1 0 +81.171.81.234 1 0 +5.189.203.46 118 0 +197.48.60.53 1 0 +46.49.43.85 0 2 +73.115.17.146 1 0 +193.93.192.192 2 0 +193.93.192.192 2 0 +146.185.206.166 3 0 +69.245.162.12 1 0 +69.245.162.12 1 0 +69.245.162.12 1 0 +69.245.162.12 1 0 +189.33.47.50 17 0 +95.42.141.179 2 0 +95.42.141.179 2 0 +180.66.236.162 1 0 +162.13.152.211 2 0 +99.109.226.233 2 0 +217.78.6.205 1 2 +79.235.120.32 0 2 +187.37.143.79 530 0 +158.135.163.135 2 0 +5.101.219.197 17 0 +158.140.180.27 2 0 +142.118.105.137 1 0 +72.201.118.80 2 0 +112.215.243.201 1 0 +187.137.61.82 2 9 +179.218.101.97 19949 0 +181.215.39.116 12 0 +82.45.10.45 1 0 +205.185.209.141 1 0 +180.241.150.70 29 0 +5.101.221.20 98 0 +188.68.0.19 675 0 +47.183.128.151 2 0 +47.183.128.151 2 0 +103.252.169.182 9 0 +162.237.21.238 0 1 +103.240.127.33 0 1 +171.4.234.224 0 3 +76.118.206.235 3 0 +37.142.228.191 2 3 +67.183.105.87 1 0 +67.183.105.87 1 0 +67.183.105.87 1 0 +91.64.189.196 0 2 +93.179.90.82 74 0 diff --git a/main.cpp b/main.cpp index 03b6da59a..9cecc1efb 100644 --- a/main.cpp +++ b/main.cpp @@ -1,9 +1,180 @@ -#include "lib.h" - -#include - -int main(int, char **) { - std::cout << "Version: " << version() << std::endl; - std::cout << "Hello, otus!" << std::endl; - return 0; -} +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "lib.h" + +#ifdef _WIN32 + #include +#endif + +#include + +void setupConsole() { + #ifdef _WIN32 + SetConsoleOutputCP(CP_UTF8); + SetConsoleCP(CP_UTF8); + setlocale(LC_ALL, "Russian"); + setlocale(LC_ALL, "ru_RU.UTF-8"); + #endif + std::ios_base::sync_with_stdio(false); + std::cin.tie(nullptr); +} + +// std::vector readLinesFromFile(const std::string& filename) { +// std::vector lines; +// std::ifstream file(filename); +// if (!file.is_open()) { +// throw std::runtime_error("Cannot open file: " + filename); +// } +// std::string line; +// while (std::getline(file, line)) { +// // Удаляем символ возврата каретки (\r) для Windows-файлов +// if (!line.empty() && line.back() == '\r') { +// line.pop_back(); +// } +// lines.push_back(line); +// } +// return lines; +// } + +void processInput(std::istream& in, std::vector>& ipVector) { + std::string line; + while (std::getline(in, line)) { + if (line.empty()) continue; + + // Находим первую табуляцию, чтобы отсечь text2 и text3 + size_t tab_pos = line.find('\t'); + std::string ip_part = (tab_pos != std::string::npos) ? line.substr(0, tab_pos) : line; + + // Заменяем точки на пробелы для удобного чтения через stringstream + std::replace(ip_part.begin(), ip_part.end(), '.', ' '); + std::stringstream ss(ip_part); + + int a, b, c, d; + if (ss >> a >> b >> c >> d) { + ipVector.push_back({ + static_cast(a), + static_cast(b), + static_cast(c), + static_cast(d) + }); + } + } +} + +int main(int argc, char const *argv[]) +{ + + setupConsole(); + + std::vector> ipVector; + + if (argc > 1) { + // Режим отладки: передаем файл аргументом (./ip_filter test.tsv) + std::ifstream file(argv[1]); + if (!file) { + std::cerr << "Error: " << argv[1] << " not found" << std::endl; + return 1; + } + processInput(file, ipVector); + } else { + // Режим сдачи: читаем из pipe (cat data.tsv | ./ip_filter) + processInput(std::cin, ipVector); + } + + std::sort(ipVector.begin(), ipVector.end(), [](const auto& a, const auto& b) { return a > b; }); + + auto print_ip = [](const auto& ip) + { + std::cout << (int)ip[0] << "." << (int)ip[1] << "." + << (int)ip[2] << "." << (int)ip[3] << "\n"; + }; + + // for (const auto& ip : ipVector) { + // std::cout << (int)ip[0] << "." << (int)ip[1] << "." << (int)ip[2] << "." << (int)ip[3] << "\n"; + // } + for (const auto& ip : ipVector) print_ip(ip); + + // // 2. Первый байт равен 1 + // for (const auto& ip : ipVector) { + // if (ip[0] == 1) { + // std::cout << (int)ip[0] << "." << (int)ip[1] << "." << (int)ip[2] << "." << (int)ip[3] << "\n"; + // } + // } + + // // 3. Первый байт 46, второй 70 + // for (const auto& ip : ipVector) { + // if (ip[0] == 46 && ip[1] == 70) { + // std::cout << (int)ip[0] << "." << (int)ip[1] << "." << (int)ip[2] << "." << (int)ip[3] << "\n"; + // } + // } + + // // 4. Любой байт равен 46 (используем std::any_of из C++11) + // for (const auto& ip : ipVector) { + // if (std::any_of(ip.begin(), ip.end(), [](uint8_t byte){ return byte == 46; })) { + // std::cout << (int)ip[0] << "." << (int)ip[1] << "." << (int)ip[2] << "." << (int)ip[3] << "\n"; + // } + // } + + // 2. Первый байт равен 1 + for (const auto& ip : ipVector) { + if (ip[0] == 1) print_ip(ip); + } + + // 3. Первый байт 46, второй 70 + for (const auto& ip : ipVector) { + if (ip[0] == 46 && ip[1] == 70) print_ip(ip); + } + + // 4. Любой байт равен 46 + for (const auto& ip : ipVector) { + if (std::any_of(ip.begin(), ip.end(), [](uint8_t byte){ return byte == 46; })) { + print_ip(ip); + } + } + + // auto lines = readLinesFromFile("ip_filter.tsv"); + // std::cout << "Прочитано строк: " << lines.size() << "\n\n"; + + // std::vector> ipVector; + // ipVector.reserve(lines.size()); + + // try + // { + // for (const auto& line : lines) + // { + // if (line.empty()) continue; + // std::stringstream ss(line); + // int part[4]; + // char dot; + // int dummy; // Для остальных чисел в строке + // if (ss >> part[0] >> dot >> part[1] >> dot >> part[2] >> dot >> part[3]) { + // ipVector.push_back({ + // static_cast(part[0]), + // static_cast(part[1]), + // static_cast(part[2]), + // static_cast(part[3]) + // }); + // } + // } + // std::cout << "распарсили файл, взяли ip адрес в вектор массивов" << "\n\n"; + + // std::sort(ipVector.begin(), ipVector.end(), [](const auto& a, const auto& b) { + // return a > b; + // }); + + // } + // catch(const std::exception &e) + // { + // std::cerr << e.what() << std::endl; + // return -1; + // } + + return 0; +} From 5802d73cbf1e56974a0d2f78ed832458437bda3d Mon Sep 17 00:00:00 2001 From: oshkines <102374345+oshkines@users.noreply.github.com> Date: Thu, 5 Mar 2026 21:51:36 +0300 Subject: [PATCH 05/35] Update release.yml --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2f63ec18d..36ee686ce 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,6 +35,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./helloworld-0.0.${{ github.run_number }}-Linux.deb - asset_name: helloworld-0.0.${{ github.run_number }}-Linux.deb - asset_content_type: application/vnd.debian.binary-package \ No newline at end of file + asset_path: ./ip_filter-0.0.${{ github.run_number }}-Linux.deb + asset_name: ip_filter-0.0.${{ github.run_number }}-Linux.deb + asset_content_type: application/vnd.debian.binary-package From 54c755834b2c7f4c35927a71bcaf95436c051a41 Mon Sep 17 00:00:00 2001 From: oshkines <102374345+oshkines@users.noreply.github.com> Date: Thu, 5 Mar 2026 22:41:54 +0300 Subject: [PATCH 06/35] Update main.cpp --- main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index 9cecc1efb..5e73a07fd 100644 --- a/main.cpp +++ b/main.cpp @@ -10,7 +10,7 @@ #include "lib.h" #ifdef _WIN32 - #include + #include #endif #include @@ -178,3 +178,4 @@ int main(int argc, char const *argv[]) return 0; } + From 2ed0fe995e499516dc82c2bfed9ea056c72f5466 Mon Sep 17 00:00:00 2001 From: oshkines <102374345+oshkines@users.noreply.github.com> Date: Thu, 5 Mar 2026 22:44:22 +0300 Subject: [PATCH 07/35] Update release.yml --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 36ee686ce..c3c4e5910 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,7 +4,7 @@ on: push: branches: - master - - feature/github_actions + - feature/github_actions jobs: build: From 0eeecc356a263349ba99aa788c0778bd2d8413a6 Mon Sep 17 00:00:00 2001 From: oshkines Date: Thu, 5 Mar 2026 22:46:04 +0300 Subject: [PATCH 08/35] Trigger Actions From 38392f5e6fc2a777d8456d258c4418a9c2525334 Mon Sep 17 00:00:00 2001 From: oshkines <102374345+oshkines@users.noreply.github.com> Date: Thu, 5 Mar 2026 22:59:14 +0300 Subject: [PATCH 09/35] Update releaseAddMain.yml --- .github/workflows/release.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c3c4e5910..ecb18a99f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,9 +3,10 @@ name: 'C++ CI' on: push: branches: + - main - master - feature/github_actions - + workflow_dispatch: jobs: build: runs-on: ubuntu-latest From 04384be9da5f4382c8e839e2511b2bf83f7b77c9 Mon Sep 17 00:00:00 2001 From: oshkines <102374345+oshkines@users.noreply.github.com> Date: Thu, 5 Mar 2026 23:06:42 +0300 Subject: [PATCH 10/35] Update release.yml --- .github/workflows/release.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ecb18a99f..9ac4a516c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,8 +17,9 @@ jobs: - run: sudo apt-get update && sudo apt-get install libboost-test-dev -y - run: cmake . -DPATCH_VERSION=${{ github.run_number }} -DWITH_BOOST_TEST=ON - run: cmake --build . - - run: cmake --build . --target test - - run: cmake --build . --target package + # временно закоментировал + #- run: cmake --build . --target test + #- run: cmake --build . --target package - name: Create Release id: create_release uses: actions/create-release@v1 From 317a1bfc23096aef70390e5428867a68f39d66d3 Mon Sep 17 00:00:00 2001 From: oshkines <102374345+oshkines@users.noreply.github.com> Date: Thu, 5 Mar 2026 23:08:17 +0300 Subject: [PATCH 11/35] Update release.yml --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9ac4a516c..5b039800f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,8 +18,8 @@ jobs: - run: cmake . -DPATCH_VERSION=${{ github.run_number }} -DWITH_BOOST_TEST=ON - run: cmake --build . # временно закоментировал - #- run: cmake --build . --target test - #- run: cmake --build . --target package + - run: cmake --build . --target test + - run: cmake --build . --target package - name: Create Release id: create_release uses: actions/create-release@v1 From d52f3dba791d1f1d21e72ef8c6df75b39a38350e Mon Sep 17 00:00:00 2001 From: oshkines <102374345+oshkines@users.noreply.github.com> Date: Thu, 5 Mar 2026 23:10:41 +0300 Subject: [PATCH 12/35] Update CMakeLists.txt --- CMakeLists.txt | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2da74cf3f..3f29bacb5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,26 +3,26 @@ cmake_minimum_required(VERSION 3.12) set(PATCH_VERSION "1" CACHE INTERNAL "Patch version") set(PROJECT_VESRION 0.0.${PATCH_VERSION}) -project(helloworld VERSION ${PROJECT_VESRION}) +project(ip_filter VERSION ${PROJECT_VESRION}) option(WITH_BOOST_TEST "Whether to build Boost test" ON) configure_file(version.h.in version.h) -add_executable(helloworld_cli main.cpp) -add_library(helloworld lib.cpp) +add_executable(ip_filter_cli main.cpp) +add_library(ip_filter lib.cpp) -set_target_properties(helloworld_cli helloworld PROPERTIES +set_target_properties(ip_filter_cli ip_filter PROPERTIES CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON ) -target_include_directories(helloworld +target_include_directories(ip_filter PRIVATE "${CMAKE_BINARY_DIR}" ) -target_link_libraries(helloworld_cli PRIVATE - helloworld +target_link_libraries(ip_filter_cli PRIVATE + ip_filter ) if(WITH_BOOST_TEST) @@ -41,15 +41,15 @@ if(WITH_BOOST_TEST) target_link_libraries(test_version ${Boost_LIBRARIES} - helloworld + ip_filter ) endif() if (MSVC) - target_compile_options(helloworld_cli PRIVATE + target_compile_options(ip_filter_cli PRIVATE /W4 ) - target_compile_options(helloworld PRIVATE + target_compile_options(ip_filter PRIVATE /W4 ) if(WITH_BOOST_TEST) @@ -58,10 +58,10 @@ if (MSVC) ) endif() else () - target_compile_options(helloworld_cli PRIVATE + target_compile_options(ip_filter_cli PRIVATE -Wall -Wextra -pedantic -Werror ) - target_compile_options(helloworld PRIVATE + target_compile_options(ip_filter PRIVATE -Wall -Wextra -pedantic -Werror ) if(WITH_BOOST_TEST) @@ -71,7 +71,7 @@ else () endif() endif() -install(TARGETS helloworld_cli RUNTIME DESTINATION bin) +install(TARGETS ip_filter_cli RUNTIME DESTINATION bin) set(CPACK_GENERATOR DEB) set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") From 5a106fc616765499daa1820e539386221b137720 Mon Sep 17 00:00:00 2001 From: oshkines Date: Sat, 28 Mar 2026 14:43:13 +0300 Subject: [PATCH 13/35] Lesson6: Actual version --- CMakeLists.txt | 26 ++-- main.cpp | 341 ++++++++++++++++++++++++++----------------------- 2 files changed, 196 insertions(+), 171 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f29bacb5..b6483929d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,26 +3,26 @@ cmake_minimum_required(VERSION 3.12) set(PATCH_VERSION "1" CACHE INTERNAL "Patch version") set(PROJECT_VESRION 0.0.${PATCH_VERSION}) -project(ip_filter VERSION ${PROJECT_VESRION}) +project(allocator VERSION ${PROJECT_VESRION}) option(WITH_BOOST_TEST "Whether to build Boost test" ON) configure_file(version.h.in version.h) -add_executable(ip_filter_cli main.cpp) -add_library(ip_filter lib.cpp) +add_executable(allocator_cli main.cpp) +add_library(allocator lib.cpp) -set_target_properties(ip_filter_cli ip_filter PROPERTIES +set_target_properties(allocator_cli allocator PROPERTIES CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON ) -target_include_directories(ip_filter +target_include_directories(allocator PRIVATE "${CMAKE_BINARY_DIR}" ) -target_link_libraries(ip_filter_cli PRIVATE - ip_filter +target_link_libraries(allocator_cli PRIVATE + allocator ) if(WITH_BOOST_TEST) @@ -41,15 +41,15 @@ if(WITH_BOOST_TEST) target_link_libraries(test_version ${Boost_LIBRARIES} - ip_filter + allocator ) endif() if (MSVC) - target_compile_options(ip_filter_cli PRIVATE + target_compile_options(allocator_cli PRIVATE /W4 ) - target_compile_options(ip_filter PRIVATE + target_compile_options(allocator PRIVATE /W4 ) if(WITH_BOOST_TEST) @@ -58,10 +58,10 @@ if (MSVC) ) endif() else () - target_compile_options(ip_filter_cli PRIVATE + target_compile_options(allocator_cli PRIVATE -Wall -Wextra -pedantic -Werror ) - target_compile_options(ip_filter PRIVATE + target_compile_options(allocator PRIVATE -Wall -Wextra -pedantic -Werror ) if(WITH_BOOST_TEST) @@ -71,7 +71,7 @@ else () endif() endif() -install(TARGETS ip_filter_cli RUNTIME DESTINATION bin) +install(TARGETS allocator_cli RUNTIME DESTINATION bin) set(CPACK_GENERATOR DEB) set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") diff --git a/main.cpp b/main.cpp index 5e73a07fd..fc0996dc9 100644 --- a/main.cpp +++ b/main.cpp @@ -1,181 +1,206 @@ -#include -#include #include -#include +#include #include -#include -#include -#include +#include +#include #include -#include "lib.h" - -#ifdef _WIN32 - #include -#endif - -#include - -void setupConsole() { - #ifdef _WIN32 - SetConsoleOutputCP(CP_UTF8); - SetConsoleCP(CP_UTF8); - setlocale(LC_ALL, "Russian"); - setlocale(LC_ALL, "ru_RU.UTF-8"); - #endif - std::ios_base::sync_with_stdio(false); - std::cin.tie(nullptr); -} - -// std::vector readLinesFromFile(const std::string& filename) { -// std::vector lines; -// std::ifstream file(filename); -// if (!file.is_open()) { -// throw std::runtime_error("Cannot open file: " + filename); -// } -// std::string line; -// while (std::getline(file, line)) { -// // Удаляем символ возврата каретки (\r) для Windows-файлов -// if (!line.empty() && line.back() == '\r') { -// line.pop_back(); -// } -// lines.push_back(line); -// } -// return lines; -// } - -void processInput(std::istream& in, std::vector>& ipVector) { - std::string line; - while (std::getline(in, line)) { - if (line.empty()) continue; - - // Находим первую табуляцию, чтобы отсечь text2 и text3 - size_t tab_pos = line.find('\t'); - std::string ip_part = (tab_pos != std::string::npos) ? line.substr(0, tab_pos) : line; - - // Заменяем точки на пробелы для удобного чтения через stringstream - std::replace(ip_part.begin(), ip_part.end(), '.', ' '); - std::stringstream ss(ip_part); - - int a, b, c, d; - if (ss >> a >> b >> c >> d) { - ipVector.push_back({ - static_cast(a), - static_cast(b), - static_cast(c), - static_cast(d) - }); +#include +#include "lib.h" + +// ============================================================ +// Аллокатор с фиксированным количеством элементов (статический пул) +// ============================================================ +template +class FixedAllocator { + struct Pool { + T* storage; + std::vector free_list; + + Pool() { + storage = static_cast(::operator new(sizeof(T) * N)); + for (size_t i = N; i > 0; --i) + free_list.push_back(i - 1); } + ~Pool() { + ::operator delete(storage); + } + Pool(const Pool&) = delete; + Pool& operator=(const Pool&) = delete; + }; + + static Pool& get_pool() { + static Pool pool; + return pool; } -} -int main(int argc, char const *argv[]) -{ +public: + using value_type = T; + using pointer = T*; + using const_pointer = const T*; + using reference = T&; + using const_reference = const T&; + using size_type = size_t; + using difference_type = ptrdiff_t; + + FixedAllocator() = default; + + template + FixedAllocator(const FixedAllocator&) {} + + pointer allocate(size_type n) { + if (n != 1) throw std::bad_alloc(); + Pool& pool = get_pool(); + if (pool.free_list.empty()) throw std::bad_alloc(); + size_t idx = pool.free_list.back(); + pool.free_list.pop_back(); + return pool.storage + idx; + } - setupConsole(); + void deallocate(pointer p, size_type n) noexcept { + if (p == nullptr || n == 0) return; + Pool& pool = get_pool(); + size_t idx = p - pool.storage; + pool.free_list.push_back(idx); + } - std::vector> ipVector; + template + void construct(U* p, Args&&... args) { + ::new(static_cast(p)) U(std::forward(args)...); + } - if (argc > 1) { - // Режим отладки: передаем файл аргументом (./ip_filter test.tsv) - std::ifstream file(argv[1]); - if (!file) { - std::cerr << "Error: " << argv[1] << " not found" << std::endl; - return 1; - } - processInput(file, ipVector); - } else { - // Режим сдачи: читаем из pipe (cat data.tsv | ./ip_filter) - processInput(std::cin, ipVector); + template + void destroy(U* p) { + p->~U(); } - std::sort(ipVector.begin(), ipVector.end(), [](const auto& a, const auto& b) { return a > b; }); + template + struct rebind { + using other = FixedAllocator; + }; - auto print_ip = [](const auto& ip) - { - std::cout << (int)ip[0] << "." << (int)ip[1] << "." - << (int)ip[2] << "." << (int)ip[3] << "\n"; + bool operator==(const FixedAllocator&) const { return true; } + bool operator!=(const FixedAllocator&) const { return false; } +}; + +// ============================================================ +// Собственный контейнер (односвязный список) с аллокатором +// ============================================================ +template> +class MyContainer { +public: + using value_type = T; + using allocator_type = Allocator; + using size_type = size_t; + +private: + struct Node { + T value; + Node* next; }; - // for (const auto& ip : ipVector) { - // std::cout << (int)ip[0] << "." << (int)ip[1] << "." << (int)ip[2] << "." << (int)ip[3] << "\n"; - // } - for (const auto& ip : ipVector) print_ip(ip); - - // // 2. Первый байт равен 1 - // for (const auto& ip : ipVector) { - // if (ip[0] == 1) { - // std::cout << (int)ip[0] << "." << (int)ip[1] << "." << (int)ip[2] << "." << (int)ip[3] << "\n"; - // } - // } - - // // 3. Первый байт 46, второй 70 - // for (const auto& ip : ipVector) { - // if (ip[0] == 46 && ip[1] == 70) { - // std::cout << (int)ip[0] << "." << (int)ip[1] << "." << (int)ip[2] << "." << (int)ip[3] << "\n"; - // } - // } - - // // 4. Любой байт равен 46 (используем std::any_of из C++11) - // for (const auto& ip : ipVector) { - // if (std::any_of(ip.begin(), ip.end(), [](uint8_t byte){ return byte == 46; })) { - // std::cout << (int)ip[0] << "." << (int)ip[1] << "." << (int)ip[2] << "." << (int)ip[3] << "\n"; - // } - // } - - // 2. Первый байт равен 1 - for (const auto& ip : ipVector) { - if (ip[0] == 1) print_ip(ip); - } + using NodeAllocator = typename std::allocator_traits::template rebind_alloc; + NodeAllocator node_alloc_; + Node* head_; + Node* tail_; + size_type size_; + +public: + MyContainer() : head_(nullptr), tail_(nullptr), size_(0), node_alloc_() {} + explicit MyContainer(const Allocator& alloc) : head_(nullptr), tail_(nullptr), size_(0), node_alloc_(alloc) {} - // 3. Первый байт 46, второй 70 - for (const auto& ip : ipVector) { - if (ip[0] == 46 && ip[1] == 70) print_ip(ip); + ~MyContainer() { + clear(); } - // 4. Любой байт равен 46 - for (const auto& ip : ipVector) { - if (std::any_of(ip.begin(), ip.end(), [](uint8_t byte){ return byte == 46; })) { - print_ip(ip); + void push_back(const T& value) { + Node* new_node = node_alloc_.allocate(1); + std::allocator_traits::construct(node_alloc_, new_node, Node{value, nullptr}); + if (tail_) { + tail_->next = new_node; + tail_ = new_node; + } else { + head_ = tail_ = new_node; } + ++size_; } - // auto lines = readLinesFromFile("ip_filter.tsv"); - // std::cout << "Прочитано строк: " << lines.size() << "\n\n"; - - // std::vector> ipVector; - // ipVector.reserve(lines.size()); - - // try - // { - // for (const auto& line : lines) - // { - // if (line.empty()) continue; - // std::stringstream ss(line); - // int part[4]; - // char dot; - // int dummy; // Для остальных чисел в строке - // if (ss >> part[0] >> dot >> part[1] >> dot >> part[2] >> dot >> part[3]) { - // ipVector.push_back({ - // static_cast(part[0]), - // static_cast(part[1]), - // static_cast(part[2]), - // static_cast(part[3]) - // }); - // } - // } - // std::cout << "распарсили файл, взяли ip адрес в вектор массивов" << "\n\n"; - - // std::sort(ipVector.begin(), ipVector.end(), [](const auto& a, const auto& b) { - // return a > b; - // }); - - // } - // catch(const std::exception &e) - // { - // std::cerr << e.what() << std::endl; - // return -1; - // } + size_type size() const { return size_; } + bool empty() const { return size_ == 0; } + + class iterator { + public: + using iterator_category = std::forward_iterator_tag; + using value_type = T; + using difference_type = ptrdiff_t; + using pointer = T*; + using reference = T&; + + iterator(Node* node) : node_(node) {} + reference operator*() const { return node_->value; } + pointer operator->() const { return &node_->value; } + iterator& operator++() { node_ = node_->next; return *this; } + iterator operator++(int) { iterator tmp = *this; ++(*this); return tmp; } + bool operator==(const iterator& other) const { return node_ == other.node_; } + bool operator!=(const iterator& other) const { return !(*this == other); } + private: + Node* node_; + }; - return 0; + iterator begin() { return iterator(head_); } + iterator end() { return iterator(nullptr); } + +private: + void clear() { + Node* cur = head_; + while (cur) { + Node* next = cur->next; + std::allocator_traits::destroy(node_alloc_, cur); + node_alloc_.deallocate(cur, 1); + cur = next; + } + head_ = tail_ = nullptr; + size_ = 0; + } +}; + +int factorial(int n) { + int result = 1; + for (int i = 1; i <= n; ++i) result *= i; + return result; } +int main() { + // 1. std::map с обычным аллокатором + std::map map1; + for (int i = 0; i < 10; ++i) map1[i] = factorial(i); + + // 2. std::map с нашим аллокатором, ограниченным 11 элементами (учитываем служебный узел) + FixedAllocator, 11> alloc; + std::map, FixedAllocator, 11>> map2(alloc); + for (int i = 0; i < 10; ++i) map2[i] = factorial(i); + + std::cout << "std::map with default allocator:\n"; + for (const auto& p : map1) std::cout << p.first << " " << p.second << "\n"; + + std::cout << "\nstd::map with FixedAllocator<11>:\n"; + for (const auto& p : map2) std::cout << p.first << " " << p.second << "\n"; + + // 3. Свой контейнер с обычным аллокатором + MyContainer cont1; + for (int i = 0; i < 10; ++i) cont1.push_back(i); + + // 4. Свой контейнер с нашим аллокатором для int (10 элементов) + FixedAllocator int_alloc; + MyContainer> cont2(int_alloc); + for (int i = 0; i < 10; ++i) cont2.push_back(i); + + std::cout << "\nMyContainer with default allocator:\n"; + for (auto val : cont1) std::cout << val << " "; + std::cout << "\n"; + + std::cout << "\nMyContainer with FixedAllocator:\n"; + for (auto val : cont2) std::cout << val << " "; + std::cout << "\n"; + + return 0; +} \ No newline at end of file From 130a928a1c675f12131f07b7d64371f8364f689b Mon Sep 17 00:00:00 2001 From: oshkines Date: Sat, 28 Mar 2026 14:54:52 +0300 Subject: [PATCH 14/35] Lesson6: Actual version v.2 --- ip_filter.tsv | 1000 ------------------------------------------------- main.cpp | 6 +- 2 files changed, 3 insertions(+), 1003 deletions(-) delete mode 100644 ip_filter.tsv diff --git a/ip_filter.tsv b/ip_filter.tsv deleted file mode 100644 index 6cf6d5b9e..000000000 --- a/ip_filter.tsv +++ /dev/null @@ -1,1000 +0,0 @@ -113.162.145.156 111 0 -157.39.22.224 5 6 -79.180.73.190 2 1 -179.210.145.4 22 0 -219.102.120.135 486 0 -67.232.81.208 1 0 -85.254.10.197 0 7 -23.240.215.189 6 0 -1.29.168.152 17 0 -185.69.186.168 1 3 -110.152.103.161 0 1 -185.182.81.131 1 1 -68.45.152.8 2 0 -114.221.179.117 0 1 -185.89.100.249 752 0 -46.70.113.73 1 0 -188.68.0.38 1 0 -119.42.115.97 11 0 -194.106.108.214 0 3 -24.210.239.177 1 0 -166.88.193.116 9 0 -62.205.202.214 0 2 -188.166.87.191 0 50 -103.62.147.2 1 6 -95.181.177.197 1 0 -95.181.177.197 1 0 -149.107.0.27 3 0 -182.186.69.18 96 0 -73.21.168.251 2 0 -113.190.198.73 3 0 -91.15.15.33 9 0 -188.72.96.184 30 0 -50.254.198.161 2 0 -98.219.109.151 1 1 -123.133.114.213 2 0 -89.177.68.136 0 1 -89.177.68.136 0 1 -65.208.151.112 1 0 -183.198.27.25 16 100 -187.189.75.118 42 0 -188.212.33.157 6 0 -94.240.192.2 0 6 -69.160.110.157 1 0 -81.198.169.232 5 2 -185.89.100.47 34 0 -46.182.19.219 920 960 -183.88.197.193 11 0 -49.74.228.23 3 136 -124.224.214.76 1 0 -107.185.11.105 1 0 -41.235.16.95 1 0 -68.37.186.197 1 0 -188.72.127.199 117 1 -173.171.247.113 2 0 -173.171.247.113 2 0 -49.35.12.51 0 1 -67.167.96.234 0 1 -204.11.243.70 59 0 -182.58.201.28 0 2 -168.167.95.164 3 0 -153.151.156.27 3 0 -79.110.28.59 112 0 -37.188.189.227 2 0 -188.69.198.152 0 2 -98.196.145.69 2 0 -68.202.216.62 1 0 -68.202.216.62 1 0 -68.202.216.62 1 0 -5.189.203.79 30 0 -197.42.2.124 0 2 -95.10.3.43 72 0 -180.251.148.71 1 0 -113.144.6.220 6 0 -89.236.227.204 0 1 -67.250.31.212 1 0 -67.250.31.212 1 0 -177.66.186.82 2 0 -107.209.121.224 2 0 -213.103.211.108 0 2 -27.49.172.153 0 3 -78.158.5.183 0 1 -78.158.5.183 0 1 -27.109.142.224 0 4 -103.101.109.70 0 4 -117.241.3.153 2 4 -86.146.190.166 1 0 -68.60.148.11 1 0 -89.146.70.220 0 1 -171.5.117.72 25 0 -66.169.196.128 0 4 -5.8.47.226 278 0 -165.255.112.201 24 0 -207.191.252.36 294 0 -123.231.108.232 124 0 -185.146.112.69 1 3 -187.190.255.160 0 1 -187.190.255.160 0 1 -191.209.77.60 152 0 -58.126.159.88 1 0 -222.42.146.225 2 0 -193.78.85.148 0 1 -66.102.6.107 1 1 -5.189.202.254 121 0 -188.72.126.149 48 0 -185.217.68.210 1 0 -190.62.36.205 0 1 -190.62.36.205 0 1 -114.243.13.43 47 0 -128.199.42.73 10 5 -5.188.216.44 122 0 -74.124.159.77 1 0 -103.74.19.104 5 1 -183.182.99.139 26 0 -188.72.126.153 74 0 -173.211.75.241 1 0 -163.172.151.47 358 19 -180.183.42.174 1 0 -93.237.52.162 0 1 -60.127.180.251 2 0 -84.132.45.217 0 2 -37.9.45.225 9 0 -82.67.92.27 3 0 -123.191.149.173 21 0 -73.90.162.151 1 0 -178.200.214.178 0 3 -70.123.153.26 1 0 -177.81.192.15 6 0 -47.29.8.38 0 2 -123.21.121.123 6 0 -73.11.30.103 1 0 -73.11.30.103 1 0 -112.79.133.183 1 0 -151.251.24.30 0 3 -47.217.153.6 2 0 -47.208.114.106 1 0 -93.179.90.113 20 0 -149.107.0.31 27 0 -188.166.66.232 3 4 -64.89.99.122 17 0 -116.18.33.248 1 0 -211.226.114.169 3 0 -69.76.232.100 1 0 -69.76.232.100 1 0 -69.76.232.100 1 0 -69.76.232.100 1 0 -193.70.91.227 5 0 -191.101.165.168 39 0 -195.205.28.27 7 0 -177.81.184.55 5 0 -24.163.91.199 5 0 -197.48.69.176 1 0 -45.127.57.74 57 0 -14.169.83.98 12 0 -47.11.217.253 0 2 -222.173.235.246 1 0 -172.2.146.147 1 0 -67.183.246.205 2 0 -218.185.237.250 5 0 -74.136.5.194 8 0 -14.187.212.140 11 0 -149.3.43.228 0 1 -141.101.132.191 63 0 -189.216.159.43 2 0 -5.8.47.84 83 0 -50.26.133.146 2 0 -83.221.180.18 0 4 -117.213.109.57 0 1 -109.193.71.64 0 1 -46.70.147.26 1 0 -188.166.49.134 3 2 -117.198.224.130 0 1 -77.179.162.181 0 2 -27.251.253.58 2017 0 -75.69.188.107 7 0 -198.48.136.200 169 0 -186.92.150.52 0 1 -184.170.28.62 1 0 -47.44.49.2 4 0 -24.23.88.218 1 0 -24.23.88.218 1 0 -220.180.121.6 1 0 -99.114.89.48 3 0 -116.25.102.111 13 0 -93.183.170.145 0 1 -47.29.254.116 0 1 -18.248.2.85 360 20 -141.101.132.73 936 0 -47.220.163.51 1 0 -47.220.163.51 1 0 -123.20.104.253 2 0 -184.183.34.140 1 0 -128.199.99.114 1 0 -93.179.90.77 44 0 -5.62.159.66 163 0 -87.118.92.43 218 83 -185.14.194.116 184 0 -161.0.198.138 0 2 -49.118.223.200 0 1 -188.72.126.130 77 0 -42.54.29.150 1 108 -14.182.208.223 2 0 -14.182.208.223 2 0 -73.197.19.19 1 0 -49.206.125.56 0 2 -67.165.212.104 0 2 -71.90.169.184 2 0 -117.207.33.172 0 1 -195.234.85.219 0 8 -5.152.151.166 11 0 -90.191.74.74 2 5 -184.58.77.155 1 0 -104.218.63.75 603 65 -117.3.82.3 3 0 -188.211.226.16 1495 0 -107.175.234.130 33 0 -85.253.112.79 0 4 -190.213.37.222 1 3 -70.234.198.76 2 0 -70.234.198.76 2 0 -5.188.216.204 136 0 -69.251.6.155 2 0 -93.34.197.129 0 2 -5.8.47.202 77 0 -14.162.206.233 6 0 -1.231.69.33 1 0 -69.23.42.183 3 0 -63.87.226.66 1 0 -5.254.65.190 0 3 -37.33.109.179 0 2 -1.1.234.8 0 1 -119.201.4.165 1 0 -179.218.84.120 13 0 -5.101.217.139 322 0 -96.92.198.213 1 0 -96.92.198.213 1 0 -117.248.24.152 0 1 -85.253.148.39 0 2 -27.70.17.38 5 0 -211.225.89.44 1 0 -184.91.78.121 1 0 -95.181.176.189 209 0 -178.6.12.226 1 0 -131.221.56.20 3 0 -84.108.11.149 0 6 -164.126.188.157 1 1 -107.223.148.60 1 0 -218.7.166.58 19 0 -177.42.212.125 94 0 -191.101.54.77 2 0 -191.101.54.77 2 0 -94.30.173.135 0 18 -92.105.136.141 0 1 -41.159.26.123 884 0 -24.191.211.63 3 1 -202.74.243.112 92 0 -108.73.108.163 1 0 -67.188.13.100 1 0 -123.20.181.120 4 0 -179.211.81.134 30 0 -64.40.152.168 1 0 -68.43.142.235 3 0 -173.211.75.62 2 0 -50.81.221.73 7 0 -103.203.133.202 46 0 -47.74.157.18 1 0 -84.252.26.213 0 1 -84.252.26.213 0 1 -71.234.84.132 1 0 -186.125.174.10 3 0 -113.182.239.185 300 0 -106.67.36.120 0 1 -189.100.88.211 2 0 -184.170.35.121 1 0 -181.215.20.38 2 0 -185.3.147.64 82 22 -187.64.27.167 19 0 -73.55.95.93 1 0 -45.32.140.209 148 0 -37.110.213.11 0 1 -177.32.68.231 2 0 -203.192.225.115 1 18 -189.181.251.184 0 1 -82.199.206.151 112 0 -73.224.202.251 2 0 -75.90.211.217 1 0 -173.211.75.55 2 0 -115.221.10.154 3 0 -190.39.83.68 1 0 -112.124.39.77 17 0 -5.189.200.175 69 0 -181.169.25.33 84 0 -202.166.194.217 8 0 -108.18.251.109 1 0 -188.72.127.216 46 0 -76.94.181.14 1 0 -141.196.77.153 0 4 -69.227.160.129 2 0 -5.101.221.37 82 0 -59.42.27.180 98 0 -188.68.0.207 225 0 -173.24.113.249 1 0 -173.24.113.249 1 0 -14.231.56.112 5 0 -5.62.159.140 54 0 -141.101.132.179 21 0 -95.90.191.205 0 2 -193.93.192.122 34 0 -75.65.190.40 3 0 -91.204.190.7 0 3 -131.129.231.39 0 1 -186.86.29.56 701 0 -91.135.176.211 4 0 -154.160.1.180 3 0 -83.143.86.155 1 0 -60.7.107.169 21 0 -89.249.207.229 40 0 -95.181.176.155 4 0 -95.181.176.155 4 0 -41.199.158.154 2 0 -36.5.146.30 15 0 -217.72.94.100 0 1 -217.72.94.100 0 1 -217.72.94.100 0 1 -217.72.94.100 0 1 -217.72.94.100 0 1 -14.231.214.53 11 0 -89.163.155.202 33 15 -85.187.105.45 0 1 -77.13.117.195 0 1 -70.91.13.106 1 0 -126.241.3.145 1 0 -114.249.117.72 3 0 -113.173.67.60 1 0 -183.87.196.93 0 7 -49.203.248.26 1 0 -49.203.248.26 1 0 -185.89.100.59 11 0 -95.181.177.241 3 0 -125.43.69.142 0 5 -37.186.67.25 5 0 -185.46.85.204 8 0 -73.91.213.154 1 0 -111.61.78.76 15 0 -75.114.69.42 18 0 -95.181.177.50 191 0 -95.90.254.195 1 0 -109.192.168.38 2 22 -5.101.217.48 1 0 -86.34.133.118 6 0 -46.101.163.119 3 3 -189.6.128.228 12 0 -202.9.43.222 1 0 -202.142.76.12 0 1 -105.73.25.26 1 0 -119.184.218.145 23 0 -179.219.241.71 2 0 -156.212.169.72 1 0 -103.66.196.13 3 0 -68.41.149.247 1 0 -117.102.78.2 3 0 -14.186.245.237 8 0 -93.179.90.24 206 0 -39.88.253.245 17 138 -187.3.66.189 2264 0 -24.17.1.75 1 0 -24.17.1.75 1 0 -188.72.127.249 74 0 -46.161.60.92 156 0 -72.77.71.111 1 0 -114.47.230.91 61 0 -177.87.9.192 13 0 -49.156.211.218 1 4 -187.65.248.41 1 0 -73.244.53.54 1 0 -117.213.254.4 1 7 -187.39.197.81 2 0 -78.84.243.190 0 2 -188.72.126.152 106 0 -141.101.132.158 109 0 -178.253.240.126 2 0 -46.101.127.145 150 51 -154.16.89.9 4 0 -139.167.0.12 1 0 -168.196.9.47 1 0 -107.77.72.118 1 0 -72.181.175.235 1 0 -72.181.175.235 1 0 -104.222.165.144 4 0 -98.214.16.13 2 0 -171.221.113.228 2 0 -46.55.46.98 0 2 -47.39.211.31 4 0 -45.248.186.76 0 1 -77.234.45.173 5 0 -185.163.24.76 0 2 -113.89.239.241 4 2 -113.206.92.243 6 794 -107.167.109.164 6 1 -185.46.86.131 2 0 -185.46.86.131 2 0 -75.171.214.8 1 0 -95.181.176.240 24 0 -95.181.176.240 24 0 -217.159.171.6 0 3 -195.250.178.88 1 3 -89.236.251.247 0 3 -68.46.218.208 7 0 -71.88.10.118 1 0 -176.90.14.232 3 0 -99.251.8.64 0 3 -101.98.164.130 0 4 -71.52.72.142 1 0 -84.15.185.66 0 1 -45.124.191.237 1 2 -168.195.231.1 5464 0 -73.141.213.207 2 0 -78.171.131.126 2 0 -73.166.52.138 0 1 -73.166.52.138 0 1 -103.203.241.89 2 2 -188.68.0.102 156 0 -108.30.39.3 0 1 -108.30.39.3 0 1 -191.207.27.171 1 0 -123.116.254.111 7 0 -113.77.173.249 3 0 -81.151.71.218 0 6 -191.191.197.98 32 0 -188.166.49.134 15 4 -108.180.26.133 0 2 -108.180.26.133 0 2 -45.62.234.109 3 0 -177.43.57.48 20 0 -95.181.176.136 123 0 -117.196.197.139 1 3 -23.240.217.243 1 3 -70.180.91.246 2 0 -159.203.13.174 5 0 -186.46.222.194 0 6 -141.101.132.93 128 0 -186.179.100.193 1 0 -181.215.16.39 2 0 -114.95.157.203 321 0 -189.7.220.132 10 0 -189.251.241.73 0 7 -172.97.129.82 1 0 -64.237.226.172 3 0 -50.32.39.122 1 0 -37.201.203.88 0 1 -170.80.252.30 37 0 -89.170.3.145 1 0 -156.204.84.209 31 0 -78.84.60.71 0 1 -78.84.60.71 0 1 -78.84.60.71 0 1 -78.10.207.6 0 2 -99.169.226.169 1 0 -99.169.226.169 1 0 -99.169.226.169 1 0 -99.169.226.169 1 0 -73.104.80.103 1 0 -73.104.80.103 1 0 -79.206.209.45 0 1 -103.220.209.173 0 1 -66.249.92.198 6 0 -47.16.77.236 0 2 -89.38.96.66 7 0 -75.206.129.73 1 0 -129.56.12.56 30 0 -5.8.47.44 961 0 -193.24.92.54 0 4 -156.222.243.190 1 0 -176.228.138.151 0 1 -176.228.138.151 0 1 -176.228.138.151 0 1 -181.122.209.200 3 0 -35.193.144.59 803 0 -101.24.171.210 32 50 -188.68.0.185 34 0 -113.195.165.235 5 0 -41.242.141.134 2061 0 -146.185.206.53 6 0 -95.181.177.111 75 0 -67.174.152.35 1 1 -78.100.196.199 11 0 -220.132.196.75 4 0 -14.167.215.198 7 0 -66.183.9.162 1 0 -189.62.20.66 2 0 -68.172.234.141 2 0 -1.87.203.225 1 112 -32.215.162.52 1 0 -32.215.162.52 1 0 -32.215.162.52 1 0 -5.62.159.232 69 0 -81.213.167.197 1 0 -180.246.83.253 16 0 -91.204.14.185 15 0 -49.213.19.115 4 3 -74.116.59.8 50 0 -202.129.0.27 22470 0 -94.141.76.33 0 1 -37.110.210.153 0 1 -125.165.131.226 1 0 -61.74.152.228 1 0 -61.74.152.228 1 0 -217.174.230.98 0 2 -173.225.247.123 2 0 -77.68.40.185 0 1 -182.75.81.122 2 0 -182.75.81.122 2 0 -79.184.219.107 11 0 -97.95.65.151 1 0 -49.213.19.137 5 6 -118.114.86.199 1 0 -175.192.51.84 18 0 -97.82.75.243 1 0 -72.79.56.37 27 0 -117.2.125.26 13 0 -193.194.132.76 0 2 -119.15.93.202 3 0 -119.15.93.202 3 0 -119.15.93.202 3 0 -107.174.108.194 12 0 -103.207.242.56 1 24 -78.109.65.21 0 7 -171.77.145.44 0 1 -45.123.220.122 2 0 -5.189.202.198 4 0 -88.91.160.177 1 6 -149.154.167.161 1 0 -109.75.90.41 1 4 -188.97.225.180 0 1 -76.112.220.160 2 0 -5.101.221.76 104 0 -114.125.118.9 2 0 -188.237.136.152 1 3 -213.225.6.88 0 2 -14.187.178.209 1 0 -46.251.197.23 1 0 -189.121.253.246 78 0 -109.127.20.122 0 2 -118.96.117.80 31 0 -27.97.226.94 0 1 -96.94.121.25 2 0 -5.8.47.202 34 0 -46.161.56.203 6 0 -193.136.199.50 1 0 -121.27.48.172 6 0 -36.67.5.186 1 0 -89.28.76.171 50 0 -46.161.56.174 92 0 -188.2.221.111 4 1 -85.253.176.102 0 1 -79.15.208.108 4 0 -5.62.154.58 51 0 -85.114.239.251 0 10 -46.161.56.106 3 0 -46.161.56.106 3 0 -67.5.105.174 1 0 -181.215.0.59 5 0 -95.181.176.58 653 0 -72.193.106.165 1 0 -217.61.224.38 1 0 -185.89.100.44 102 0 -188.72.126.41 40 0 -46.70.225.39 0 3 -80.133.65.104 0 1 -82.196.6.103 4 0 -185.158.116.188 11 0 -94.30.155.174 0 1 -5.101.219.107 12 0 -197.48.89.171 1 0 -164.132.3.102 2 0 -79.100.201.157 11 0 -47.11.7.112 0 1 -82.32.174.146 1 0 -189.217.133.144 0 1 -146.185.177.103 919 76 -217.25.18.126 0 1 -5.62.154.52 39 0 -187.188.129.136 1 0 -217.82.152.217 1 0 -106.51.30.215 0 1 -68.106.156.3 2 0 -109.185.152.20 0 7 -45.247.3.119 2 1 -108.171.129.171 0 2 -189.102.186.9 4 0 -189.175.155.108 3 0 -103.28.36.56 3 0 -212.56.210.90 0 1 -204.232.108.181 1 1 -85.180.234.65 0 1 -188.166.49.33 13 0 -188.166.72.33 2 1 -156.220.35.15 8 0 -41.227.84.129 3 0 -188.68.0.30 120 0 -176.12.58.180 13 0 -85.118.110.10 0 11 -162.247.72.217 56 15 -67.205.174.171 1 0 -185.89.217.170 1 1 -176.241.89.82 3 0 -123.23.148.249 4 0 -123.23.148.249 4 0 -183.147.179.187 2 0 -111.222.25.83 0 1 -91.204.14.239 96 0 -60.174.233.154 4 0 -157.37.38.188 0 2 -50.80.193.175 1 0 -37.221.176.236 1 0 -118.69.205.201 20 0 -113.173.98.95 4 0 -5.146.199.53 0 1 -213.213.103.190 60 0 -141.101.132.120 73 0 -171.221.26.73 30 0 -188.68.0.171 116 0 -151.53.178.221 0 2 -146.185.204.136 111 0 -117.209.246.210 0 1 -193.40.12.10 0 2 -77.215.105.50 2 24 -122.40.163.51 18906 0 -182.69.22.32 3 6 -95.181.176.30 0 1 -188.72.96.177 38 0 -108.49.29.94 0 3 -108.49.29.94 0 3 -23.254.17.73 3 0 -46.161.61.51 61 0 -73.175.73.131 1 0 -79.208.172.72 0 1 -36.102.236.203 0 9 -95.90.254.195 4 0 -138.122.123.42 6 0 -126.218.40.164 2 0 -5.62.153.169 10 0 -83.128.50.47 3 0 -83.128.50.47 3 0 -78.129.149.3 0 1 -78.129.149.3 0 1 -146.255.242.234 0 7 -14.177.248.167 8 0 -213.219.115.76 1 10 -185.46.87.231 37 0 -188.72.96.77 59 0 -109.91.38.1 0 5 -201.219.180.58 789 0 -85.65.43.232 3 7 -73.87.94.81 1 0 -73.87.94.81 1 0 -5.62.154.49 96 0 -162.236.216.26 1 0 -190.198.255.34 1 0 -183.88.77.2 6 0 -95.181.177.213 42 0 -73.76.58.22 2 0 -47.149.142.171 1 0 -47.149.142.171 1 0 -119.55.121.74 1 0 -188.209.233.110 0 1 -188.209.233.110 0 1 -181.215.6.120 1 0 -181.215.6.120 1 0 -61.98.171.199 1 0 -187.187.193.21 0 1 -165.225.81.66 0 3 -98.64.84.57 1 0 -46.161.63.66 71 0 -67.215.250.146 7 0 -103.251.226.120 2 0 -199.249.223.75 172 6 -47.11.7.240 0 1 -117.200.96.91 0 3 -191.101.54.244 10 0 -95.89.126.115 2 0 -203.249.55.94 2 0 -49.34.5.58 0 1 -14.97.7.246 0 2 -2.29.170.242 4456 0 -14.17.122.207 44 0 -185.213.20.252 93 0 -73.185.49.225 2 0 -47.11.210.118 0 2 -14.232.172.139 1 0 -5.101.222.205 18 0 -134.48.22.110 6 0 -93.179.90.237 2 0 -171.6.156.117 1 0 -171.6.156.117 1 0 -185.117.149.113 1 0 -46.161.58.202 6 0 -191.101.145.250 1 0 -191.101.145.250 1 0 -116.68.105.105 0 2 -125.163.151.121 48 0 -81.198.25.242 0 7 -92.161.182.241 0 5 -194.208.63.191 48 0 -90.114.80.144 2 0 -5.189.200.116 36 0 -186.182.82.240 60 0 -122.15.212.146 0 1 -122.15.212.146 0 1 -122.15.212.146 0 1 -137.97.9.40 0 1 -189.122.18.125 15 0 -187.188.28.45 1 0 -190.9.214.105 0 5 -222.130.177.64 3 0 -123.136.249.120 0 1 -178.220.115.243 0 2 -14.102.246.210 1 0 -178.119.240.143 3 0 -98.89.83.30 1 0 -50.106.25.168 4 0 -185.89.217.189 1 0 -5.62.159.38 181 0 -186.95.24.238 2 0 -5.189.202.171 8 0 -71.223.161.63 1 0 -14.207.158.135 120 0 -216.239.90.19 301 18 -176.153.26.5 1 2 -99.61.192.35 1 0 -73.48.161.172 1 0 -73.48.161.172 1 0 -73.48.161.172 1 0 -188.166.82.41 1 1 -117.5.75.127 2 0 -183.83.78.172 1 0 -172.243.2.129 4 0 -84.146.103.72 0 1 -5.101.217.177 112 0 -110.167.197.122 1 0 -5.189.203.43 4 0 -95.213.218.108 3 0 -185.46.86.22 98 0 -191.101.54.127 95 0 -194.135.166.12 14 0 -79.237.168.168 0 1 -45.32.108.44 6 0 -186.204.34.46 20 0 -117.5.211.1 49 0 -69.57.247.218 8 0 -70.121.9.224 36 0 -209.107.214.71 12 0 -189.34.176.93 924 0 -80.78.237.5 30 0 -14.186.176.190 1 0 -84.108.20.44 0 2 -176.126.83.77 16 0 -104.174.173.170 1 0 -219.92.33.137 46 0 -78.48.70.89 0 1 -186.37.202.178 1 0 -71.223.241.223 1 0 -71.223.241.223 1 0 -73.140.229.40 1 0 -188.188.19.204 0 2 -195.154.232.98 0 5 -112.28.106.231 1 0 -62.219.224.250 0 1 -93.171.216.68 9 0 -37.26.142.184 4 4 -87.255.69.86 0 1 -87.255.69.86 0 1 -157.48.15.35 0 6 -50.3.197.73 4 0 -23.27.228.81 7 0 -190.56.99.94 409 0 -76.228.35.48 2 0 -5.8.47.100 5 0 -110.77.199.103 0 17 -54.205.123.87 2 0 -183.89.22.222 1 0 -14.139.41.109 0 1 -186.43.29.31 1 0 -173.31.96.193 1 0 -173.31.96.193 1 0 -77.79.38.5 0 1 -95.85.80.229 66 0 -191.101.144.238 2 0 -50.25.139.252 1 0 -50.25.139.252 1 0 -177.82.171.180 3 0 -113.87.26.63 100 0 -77.181.225.187 5 4 -103.89.255.122 1 4 -107.222.35.45 187 0 -200.125.116.65 101 0 -202.5.196.66 0 4 -158.181.40.154 5 0 -86.115.0.94 0 1 -68.108.194.244 1 0 -68.108.194.244 1 0 -68.108.194.244 1 0 -110.87.118.235 3 0 -105.158.16.153 1 0 -188.72.96.182 744 0 -14.187.132.10 2 0 -85.253.45.35 0 4 -188.166.36.54 10 0 -111.37.37.235 1 0 -111.37.37.235 1 0 -79.184.223.137 7 0 -34.214.132.226 0 9 -74.96.79.23 0 1 -188.166.41.162 35 14 -117.5.169.43 109 0 -76.221.68.186 2 0 -185.89.100.48 12 0 -74.132.249.206 3 0 -91.126.205.238 34 0 -5.62.159.143 6 0 -188.146.232.177 0 1 -188.68.3.92 193 0 -200.5.83.150 2391 0 -93.179.90.116 78 0 -94.185.80.235 87 0 -188.104.116.79 0 3 -177.232.136.107 0 1 -123.16.114.132 29 0 -178.254.168.220 2 0 -66.249.93.2 1 0 -96.30.65.207 58 0 -73.84.200.187 3 0 -70.35.215.94 0 1 -139.0.6.42 4 0 -185.46.86.132 6 0 -89.177.29.121 0 2 -118.44.17.181 1 0 -146.185.204.191 1 0 -146.185.204.191 1 0 -190.111.195.137 30 0 -146.185.206.106 5 0 -185.2.32.173 641 0 -96.31.53.251 1 0 -207.41.189.106 2 0 -36.63.28.208 28 0 -31.170.161.42 3 0 -209.107.196.159 4 0 -185.46.85.78 15 0 -183.12.241.137 1 0 -184.167.219.223 3 0 -177.34.62.115 4 0 -5.189.200.201 87 0 -47.11.5.9 0 1 -179.218.5.141 11 0 -5.62.159.25 4 0 -32.209.238.246 1 0 -32.209.238.246 1 0 -32.209.238.246 1 0 -32.209.238.246 1 0 -46.70.29.76 1 0 -104.222.164.236 2 0 -194.152.37.147 3 41 -177.80.227.215 342 0 -5.101.217.197 84 0 -47.8.5.240 2 1 -192.40.95.34 1 0 -103.244.252.242 1 0 -185.89.100.129 64 0 -178.82.94.82 0 2 -202.100.206.36 0 7 -45.249.48.124 44 0 -84.42.249.4 0 1 -62.12.93.76 4 0 -77.93.192.43 0 3 -141.101.132.50 101 0 -89.201.7.164 0 6 -5.15.220.203 3 0 -185.69.186.227 3 4 -24.193.178.168 0 3 -65.26.31.140 62 0 -83.99.166.35 1 0 -103.254.155.74 2 0 -49.34.2.43 0 1 -91.142.208.226 3 0 -193.93.192.134 736 0 -188.68.0.249 39 0 -79.110.28.78 151 0 -71.211.2.230 1 0 -188.72.127.48 110 0 -185.217.68.209 1 0 -99.242.220.241 1 3 -5.62.159.148 407 0 -1.70.44.170 4665 0 -191.23.199.126 1 0 -98.242.127.228 2 0 -59.99.48.248 1 6 -67.191.200.150 2 0 -213.6.149.66 35 0 -77.109.86.105 1 3 -123.30.177.138 44 0 -185.14.194.82 79 0 -39.46.86.85 139 0 -220.189.194.162 39 0 -5.189.200.97 86 0 -24.91.41.150 1 0 -209.197.20.206 6 0 -12.155.92.10 1 0 -12.155.92.10 1 0 -205.186.180.34 3 0 -46.161.60.35 716 0 -73.115.6.159 1 0 -222.82.198.61 2 7 -213.200.15.167 0 1 -5.101.220.79 98 0 -98.122.86.197 319 0 -14.231.215.204 25 0 -76.94.77.14 1 0 -73.58.220.10 1 0 -73.58.220.10 1 0 -73.58.220.10 1 0 -193.93.192.165 92 0 -189.122.214.227 709 0 -191.101.54.148 2 0 -84.109.80.89 0 2 -84.109.80.89 0 2 -84.109.80.89 0 2 -70.95.65.80 2 0 -70.95.65.80 2 0 -70.95.65.80 2 0 -113.182.18.30 4 0 -113.182.18.30 4 0 -144.217.161.119 117 24 -46.223.254.56 0 1 -46.223.254.56 0 1 -71.90.148.209 3 0 -156.220.69.153 1 0 -158.181.19.102 40 0 -59.84.240.60 1 0 -95.181.176.106 66 0 -189.120.152.120 6 0 -153.136.8.214 0 18 -101.21.80.126 1 0 -198.73.50.71 286 82 -68.227.43.14 3 0 -172.248.74.10 1 0 -172.248.74.10 1 0 -46.161.56.241 37 0 -66.249.93.49 3 0 -59.89.245.157 0 5 -163.172.73.168 25 0 -5.62.154.110 191 0 -61.148.243.183 1 7 -81.171.81.234 1 0 -81.171.81.234 1 0 -5.189.203.46 118 0 -197.48.60.53 1 0 -46.49.43.85 0 2 -73.115.17.146 1 0 -193.93.192.192 2 0 -193.93.192.192 2 0 -146.185.206.166 3 0 -69.245.162.12 1 0 -69.245.162.12 1 0 -69.245.162.12 1 0 -69.245.162.12 1 0 -189.33.47.50 17 0 -95.42.141.179 2 0 -95.42.141.179 2 0 -180.66.236.162 1 0 -162.13.152.211 2 0 -99.109.226.233 2 0 -217.78.6.205 1 2 -79.235.120.32 0 2 -187.37.143.79 530 0 -158.135.163.135 2 0 -5.101.219.197 17 0 -158.140.180.27 2 0 -142.118.105.137 1 0 -72.201.118.80 2 0 -112.215.243.201 1 0 -187.137.61.82 2 9 -179.218.101.97 19949 0 -181.215.39.116 12 0 -82.45.10.45 1 0 -205.185.209.141 1 0 -180.241.150.70 29 0 -5.101.221.20 98 0 -188.68.0.19 675 0 -47.183.128.151 2 0 -47.183.128.151 2 0 -103.252.169.182 9 0 -162.237.21.238 0 1 -103.240.127.33 0 1 -171.4.234.224 0 3 -76.118.206.235 3 0 -37.142.228.191 2 3 -67.183.105.87 1 0 -67.183.105.87 1 0 -67.183.105.87 1 0 -91.64.189.196 0 2 -93.179.90.82 74 0 diff --git a/main.cpp b/main.cpp index fc0996dc9..f87743d18 100644 --- a/main.cpp +++ b/main.cpp @@ -5,7 +5,7 @@ #include #include #include -#include "lib.h" +#include "lib.h" // ============================================================ // Аллокатор с фиксированным количеством элементов (статический пул) @@ -105,8 +105,8 @@ class MyContainer { size_type size_; public: - MyContainer() : head_(nullptr), tail_(nullptr), size_(0), node_alloc_() {} - explicit MyContainer(const Allocator& alloc) : head_(nullptr), tail_(nullptr), size_(0), node_alloc_(alloc) {} + MyContainer() : node_alloc_(), head_(nullptr), tail_(nullptr), size_(0) {} + explicit MyContainer(const Allocator& alloc) : node_alloc_(alloc), head_(nullptr), tail_(nullptr), size_(0) {} ~MyContainer() { clear(); From 42eaa5cc4709eec1dd6d90f8cf8fa098b0fecd24 Mon Sep 17 00:00:00 2001 From: oshkines <102374345+oshkines@users.noreply.github.com> Date: Sat, 28 Mar 2026 15:00:42 +0300 Subject: [PATCH 15/35] correct name project Lesson6 for Update release.yml --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5b039800f..d49902ff6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,6 +37,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./ip_filter-0.0.${{ github.run_number }}-Linux.deb - asset_name: ip_filter-0.0.${{ github.run_number }}-Linux.deb + asset_path: ./allocator-0.0.${{ github.run_number }}-Linux.deb + asset_name: allocator-0.0.${{ github.run_number }}-Linux.deb asset_content_type: application/vnd.debian.binary-package From 37aa3552c45dacecc0d91d7f34692cd4b329cdf2 Mon Sep 17 00:00:00 2001 From: oshkines Date: Sat, 11 Apr 2026 15:58:01 +0300 Subject: [PATCH 16/35] Lesson7: SFINAE + Doxygen --- CMakeLists.txt | 87 +- Doxyfile | 3037 +++++++++++++++++ docs/html/_c_make_c_compiler_id_8c.html | 464 +++ docs/html/_c_make_c_compiler_id_8c.js | 22 + docs/html/_c_make_c_x_x_compiler_id_8cpp.html | 508 +++ docs/html/_c_make_c_x_x_compiler_id_8cpp.js | 24 + docs/html/annotated.html | 115 + docs/html/annotated_dup.js | 10 + docs/html/classes.html | 113 + docs/html/clipboard.js | 61 + docs/html/cookie.js | 58 + .../dir_27b67fd794816a7270923aca24fbfa96.html | 123 + .../dir_27b67fd794816a7270923aca24fbfa96.js | 5 + ...r_27b67fd794816a7270923aca24fbfa96_dep.dot | 17 + .../dir_4fef79e7177ba769987a8da36c892c5f.html | 117 + .../dir_4fef79e7177ba769987a8da36c892c5f.js | 4 + .../dir_63772b626f2709090f0bdca0f40827b4.html | 122 + .../dir_63772b626f2709090f0bdca0f40827b4.js | 4 + ...r_63772b626f2709090f0bdca0f40827b4_dep.dot | 16 + .../dir_a76051230be419d4bac823c497445a38.html | 122 + .../dir_a76051230be419d4bac823c497445a38.js | 4 + ...r_a76051230be419d4bac823c497445a38_dep.dot | 12 + .../dir_c31aeadaf6f673c02df0fd4a82385ea9.html | 122 + .../dir_c31aeadaf6f673c02df0fd4a82385ea9.js | 4 + ...r_c31aeadaf6f673c02df0fd4a82385ea9_dep.dot | 12 + docs/html/doxygen.css | 2540 ++++++++++++++ docs/html/doxygen.svg | 28 + docs/html/doxygen_crawl.html | 88 + docs/html/dynsections.js | 191 ++ docs/html/files.html | 116 + docs/html/files_dup.js | 5 + docs/html/functions.html | 104 + docs/html/functions_vars.html | 104 + docs/html/globals.html | 166 + docs/html/globals_defs.html | 123 + docs/html/globals_func.html | 105 + docs/html/globals_type.html | 105 + docs/html/globals_vars.html | 108 + docs/html/graph_legend.dot | 24 + docs/html/graph_legend.html | 164 + docs/html/hierarchy.html | 122 + docs/html/hierarchy.js | 17 + docs/html/index.html | 105 + docs/html/inherit_graph_0.dot | 27 + docs/html/inherits.html | 110 + docs/html/jquery.js | 204 ++ docs/html/main_8cpp.html | 222 ++ docs/html/main_8cpp.js | 14 + docs/html/main_8cpp__incl.dot | 24 + docs/html/menu.js | 131 + docs/html/menudata.js | 50 + docs/html/navtree.css | 327 ++ docs/html/navtree.js | 901 +++++ docs/html/navtreedata.js | 57 + docs/html/navtreeindex0.js | 75 + docs/html/search/all_0.js | 4 + docs/html/search/all_1.js | 4 + docs/html/search/all_2.js | 18 + docs/html/search/all_3.js | 4 + docs/html/search/all_4.js | 4 + docs/html/search/all_5.js | 14 + docs/html/search/all_6.js | 5 + docs/html/search/all_7.js | 5 + docs/html/search/all_8.js | 5 + docs/html/search/all_9.js | 6 + docs/html/search/all_a.js | 4 + docs/html/search/classes_0.js | 7 + docs/html/search/classes_1.js | 6 + docs/html/search/defines_0.js | 4 + docs/html/search/defines_1.js | 4 + docs/html/search/defines_2.js | 16 + docs/html/search/defines_3.js | 4 + docs/html/search/defines_4.js | 4 + docs/html/search/defines_5.js | 4 + docs/html/search/defines_6.js | 5 + docs/html/search/files_0.js | 5 + docs/html/search/files_1.js | 4 + docs/html/search/functions_0.js | 4 + docs/html/search/functions_1.js | 4 + docs/html/search/search.css | 377 ++ docs/html/search/search.js | 708 ++++ docs/html/search/searchdata.js | 33 + docs/html/search/typedefs_0.js | 5 + docs/html/search/variables_0.js | 8 + docs/html/search/variables_1.js | 4 + docs/html/structis__container.html | 125 + ...7_08_82110f518f51120a0027e3b0989988c4e.dot | 12 + ...7_08_8a09124ac9783520665c1d861f3b89b76.dot | 12 + ..._08_8b8de4275c57050e20d163d06e3eb847c.html | 125 + .../html/structis__container__coll__graph.dot | 10 + .../structis__container__inherit__graph.dot | 10 + docs/html/structis__tuple.html | 125 + ...1std_1_1tuple_3_01_ts_8_8_8_01_4_01_4.html | 125 + ...e_3_01_ts_8_8_8_01_4_01_4__coll__graph.dot | 12 + ..._01_ts_8_8_8_01_4_01_4__inherit__graph.dot | 12 + docs/html/structis__tuple__coll__graph.dot | 10 + docs/html/structis__tuple__inherit__graph.dot | 10 + docs/html/structtuple__types__are__equal.html | 125 + ...01_t_00_01_ts_8_8_8_01_4_01_4-members.html | 108 + ...tuple_3_01_t_00_01_ts_8_8_8_01_4_01_4.html | 155 + ..._00_01_ts_8_8_8_01_4_01_4__coll__graph.dot | 10 + ..._01_ts_8_8_8_01_4_01_4__inherit__graph.dot | 10 + ...ual_3_01std_1_1tuple_3_01_t_01_4_01_4.html | 125 + ...1_1tuple_3_01_t_01_4_01_4__coll__graph.dot | 12 + ...tuple_3_01_t_01_4_01_4__inherit__graph.dot | 12 + ...ttuple__types__are__equal__coll__graph.dot | 10 + ...ple__types__are__equal__inherit__graph.dot | 10 + docs/html/tabs.css | 1 + docs/latex/Makefile | 42 + docs/latex/_c_make_c_compiler_id_8c.tex | 236 ++ docs/latex/_c_make_c_x_x_compiler_id_8cpp.tex | 267 ++ docs/latex/annotated.tex | 10 + .../dir_27b67fd794816a7270923aca24fbfa96.tex | 3 + ...r_27b67fd794816a7270923aca24fbfa96.tex.tmp | 11 + ...r_27b67fd794816a7270923aca24fbfa96_dep.dot | 17 + .../dir_4fef79e7177ba769987a8da36c892c5f.tex | 7 + .../dir_63772b626f2709090f0bdca0f40827b4.tex | 9 + ...r_63772b626f2709090f0bdca0f40827b4_dep.dot | 16 + .../dir_a76051230be419d4bac823c497445a38.tex | 9 + ...r_a76051230be419d4bac823c497445a38_dep.dot | 12 + .../dir_c31aeadaf6f673c02df0fd4a82385ea9.tex | 9 + ...r_c31aeadaf6f673c02df0fd4a82385ea9_dep.dot | 12 + docs/latex/dirs.tex | 53 + docs/latex/doxygen.sty | 898 +++++ docs/latex/etoc_doxygen.sty | 2178 ++++++++++++ docs/latex/files.tex | 6 + docs/latex/hierarchy.tex | 17 + docs/latex/main_8cpp.tex | 87 + docs/latex/main_8cpp__incl.dot | 24 + docs/latex/make.bat | 67 + docs/latex/refman.tex | 262 ++ docs/latex/structis__container.tex | 15 + ...7_08_82110f518f51120a0027e3b0989988c4e.dot | 12 + ...7_08_8a09124ac9783520665c1d861f3b89b76.dot | 12 + ...7_08_8b8de4275c57050e20d163d06e3eb847c.tex | 15 + .../structis__container__coll__graph.dot | 10 + .../structis__container__inherit__graph.dot | 10 + docs/latex/structis__tuple.tex | 15 + ...01std_1_1tuple_3_01_ts_8_8_8_01_4_01_4.tex | 15 + ...e_3_01_ts_8_8_8_01_4_01_4__coll__graph.dot | 12 + ..._01_ts_8_8_8_01_4_01_4__inherit__graph.dot | 12 + docs/latex/structis__tuple__coll__graph.dot | 10 + .../latex/structis__tuple__inherit__graph.dot | 10 + docs/latex/structtuple__types__are__equal.tex | 15 + ...1tuple_3_01_t_00_01_ts_8_8_8_01_4_01_4.tex | 32 + ..._00_01_ts_8_8_8_01_4_01_4__coll__graph.dot | 10 + ..._01_ts_8_8_8_01_4_01_4__inherit__graph.dot | 10 + ...qual_3_01std_1_1tuple_3_01_t_01_4_01_4.tex | 15 + ...1_1tuple_3_01_t_01_4_01_4__coll__graph.dot | 12 + ...tuple_3_01_t_01_4_01_4__inherit__graph.dot | 12 + ...ttuple__types__are__equal__coll__graph.dot | 10 + ...ple__types__are__equal__inherit__graph.dot | 10 + main.cpp | 274 +- workflows/docs.yml | 22 + 154 files changed, 18537 insertions(+), 270 deletions(-) create mode 100644 Doxyfile create mode 100644 docs/html/_c_make_c_compiler_id_8c.html create mode 100644 docs/html/_c_make_c_compiler_id_8c.js create mode 100644 docs/html/_c_make_c_x_x_compiler_id_8cpp.html create mode 100644 docs/html/_c_make_c_x_x_compiler_id_8cpp.js create mode 100644 docs/html/annotated.html create mode 100644 docs/html/annotated_dup.js create mode 100644 docs/html/classes.html create mode 100644 docs/html/clipboard.js create mode 100644 docs/html/cookie.js create mode 100644 docs/html/dir_27b67fd794816a7270923aca24fbfa96.html create mode 100644 docs/html/dir_27b67fd794816a7270923aca24fbfa96.js create mode 100644 docs/html/dir_27b67fd794816a7270923aca24fbfa96_dep.dot create mode 100644 docs/html/dir_4fef79e7177ba769987a8da36c892c5f.html create mode 100644 docs/html/dir_4fef79e7177ba769987a8da36c892c5f.js create mode 100644 docs/html/dir_63772b626f2709090f0bdca0f40827b4.html create mode 100644 docs/html/dir_63772b626f2709090f0bdca0f40827b4.js create mode 100644 docs/html/dir_63772b626f2709090f0bdca0f40827b4_dep.dot create mode 100644 docs/html/dir_a76051230be419d4bac823c497445a38.html create mode 100644 docs/html/dir_a76051230be419d4bac823c497445a38.js create mode 100644 docs/html/dir_a76051230be419d4bac823c497445a38_dep.dot create mode 100644 docs/html/dir_c31aeadaf6f673c02df0fd4a82385ea9.html create mode 100644 docs/html/dir_c31aeadaf6f673c02df0fd4a82385ea9.js create mode 100644 docs/html/dir_c31aeadaf6f673c02df0fd4a82385ea9_dep.dot create mode 100644 docs/html/doxygen.css create mode 100644 docs/html/doxygen.svg create mode 100644 docs/html/doxygen_crawl.html create mode 100644 docs/html/dynsections.js create mode 100644 docs/html/files.html create mode 100644 docs/html/files_dup.js create mode 100644 docs/html/functions.html create mode 100644 docs/html/functions_vars.html create mode 100644 docs/html/globals.html create mode 100644 docs/html/globals_defs.html create mode 100644 docs/html/globals_func.html create mode 100644 docs/html/globals_type.html create mode 100644 docs/html/globals_vars.html create mode 100644 docs/html/graph_legend.dot create mode 100644 docs/html/graph_legend.html create mode 100644 docs/html/hierarchy.html create mode 100644 docs/html/hierarchy.js create mode 100644 docs/html/index.html create mode 100644 docs/html/inherit_graph_0.dot create mode 100644 docs/html/inherits.html create mode 100644 docs/html/jquery.js create mode 100644 docs/html/main_8cpp.html create mode 100644 docs/html/main_8cpp.js create mode 100644 docs/html/main_8cpp__incl.dot create mode 100644 docs/html/menu.js create mode 100644 docs/html/menudata.js create mode 100644 docs/html/navtree.css create mode 100644 docs/html/navtree.js create mode 100644 docs/html/navtreedata.js create mode 100644 docs/html/navtreeindex0.js create mode 100644 docs/html/search/all_0.js create mode 100644 docs/html/search/all_1.js create mode 100644 docs/html/search/all_2.js create mode 100644 docs/html/search/all_3.js create mode 100644 docs/html/search/all_4.js create mode 100644 docs/html/search/all_5.js create mode 100644 docs/html/search/all_6.js create mode 100644 docs/html/search/all_7.js create mode 100644 docs/html/search/all_8.js create mode 100644 docs/html/search/all_9.js create mode 100644 docs/html/search/all_a.js create mode 100644 docs/html/search/classes_0.js create mode 100644 docs/html/search/classes_1.js create mode 100644 docs/html/search/defines_0.js create mode 100644 docs/html/search/defines_1.js create mode 100644 docs/html/search/defines_2.js create mode 100644 docs/html/search/defines_3.js create mode 100644 docs/html/search/defines_4.js create mode 100644 docs/html/search/defines_5.js create mode 100644 docs/html/search/defines_6.js create mode 100644 docs/html/search/files_0.js create mode 100644 docs/html/search/files_1.js create mode 100644 docs/html/search/functions_0.js create mode 100644 docs/html/search/functions_1.js create mode 100644 docs/html/search/search.css create mode 100644 docs/html/search/search.js create mode 100644 docs/html/search/searchdata.js create mode 100644 docs/html/search/typedefs_0.js create mode 100644 docs/html/search/variables_0.js create mode 100644 docs/html/search/variables_1.js create mode 100644 docs/html/structis__container.html create mode 100644 docs/html/structis__container_3_01_t_00_01std_1_1void__t_3_01decltype_07std_1_1declval_3_01_t_01_4_07_08_82110f518f51120a0027e3b0989988c4e.dot create mode 100644 docs/html/structis__container_3_01_t_00_01std_1_1void__t_3_01decltype_07std_1_1declval_3_01_t_01_4_07_08_8a09124ac9783520665c1d861f3b89b76.dot create mode 100644 docs/html/structis__container_3_01_t_00_01std_1_1void__t_3_01decltype_07std_1_1declval_3_01_t_01_4_07_08_8b8de4275c57050e20d163d06e3eb847c.html create mode 100644 docs/html/structis__container__coll__graph.dot create mode 100644 docs/html/structis__container__inherit__graph.dot create mode 100644 docs/html/structis__tuple.html create mode 100644 docs/html/structis__tuple_3_01std_1_1tuple_3_01_ts_8_8_8_01_4_01_4.html create mode 100644 docs/html/structis__tuple_3_01std_1_1tuple_3_01_ts_8_8_8_01_4_01_4__coll__graph.dot create mode 100644 docs/html/structis__tuple_3_01std_1_1tuple_3_01_ts_8_8_8_01_4_01_4__inherit__graph.dot create mode 100644 docs/html/structis__tuple__coll__graph.dot create mode 100644 docs/html/structis__tuple__inherit__graph.dot create mode 100644 docs/html/structtuple__types__are__equal.html create mode 100644 docs/html/structtuple__types__are__equal_3_01std_1_1tuple_3_01_t_00_01_ts_8_8_8_01_4_01_4-members.html create mode 100644 docs/html/structtuple__types__are__equal_3_01std_1_1tuple_3_01_t_00_01_ts_8_8_8_01_4_01_4.html create mode 100644 docs/html/structtuple__types__are__equal_3_01std_1_1tuple_3_01_t_00_01_ts_8_8_8_01_4_01_4__coll__graph.dot create mode 100644 docs/html/structtuple__types__are__equal_3_01std_1_1tuple_3_01_t_00_01_ts_8_8_8_01_4_01_4__inherit__graph.dot create mode 100644 docs/html/structtuple__types__are__equal_3_01std_1_1tuple_3_01_t_01_4_01_4.html create mode 100644 docs/html/structtuple__types__are__equal_3_01std_1_1tuple_3_01_t_01_4_01_4__coll__graph.dot create mode 100644 docs/html/structtuple__types__are__equal_3_01std_1_1tuple_3_01_t_01_4_01_4__inherit__graph.dot create mode 100644 docs/html/structtuple__types__are__equal__coll__graph.dot create mode 100644 docs/html/structtuple__types__are__equal__inherit__graph.dot create mode 100644 docs/html/tabs.css create mode 100644 docs/latex/Makefile create mode 100644 docs/latex/_c_make_c_compiler_id_8c.tex create mode 100644 docs/latex/_c_make_c_x_x_compiler_id_8cpp.tex create mode 100644 docs/latex/annotated.tex create mode 100644 docs/latex/dir_27b67fd794816a7270923aca24fbfa96.tex create mode 100644 docs/latex/dir_27b67fd794816a7270923aca24fbfa96.tex.tmp create mode 100644 docs/latex/dir_27b67fd794816a7270923aca24fbfa96_dep.dot create mode 100644 docs/latex/dir_4fef79e7177ba769987a8da36c892c5f.tex create mode 100644 docs/latex/dir_63772b626f2709090f0bdca0f40827b4.tex create mode 100644 docs/latex/dir_63772b626f2709090f0bdca0f40827b4_dep.dot create mode 100644 docs/latex/dir_a76051230be419d4bac823c497445a38.tex create mode 100644 docs/latex/dir_a76051230be419d4bac823c497445a38_dep.dot create mode 100644 docs/latex/dir_c31aeadaf6f673c02df0fd4a82385ea9.tex create mode 100644 docs/latex/dir_c31aeadaf6f673c02df0fd4a82385ea9_dep.dot create mode 100644 docs/latex/dirs.tex create mode 100644 docs/latex/doxygen.sty create mode 100644 docs/latex/etoc_doxygen.sty create mode 100644 docs/latex/files.tex create mode 100644 docs/latex/hierarchy.tex create mode 100644 docs/latex/main_8cpp.tex create mode 100644 docs/latex/main_8cpp__incl.dot create mode 100644 docs/latex/make.bat create mode 100644 docs/latex/refman.tex create mode 100644 docs/latex/structis__container.tex create mode 100644 docs/latex/structis__container_3_01_t_00_01std_1_1void__t_3_01decltype_07std_1_1declval_3_01_t_01_4_07_08_82110f518f51120a0027e3b0989988c4e.dot create mode 100644 docs/latex/structis__container_3_01_t_00_01std_1_1void__t_3_01decltype_07std_1_1declval_3_01_t_01_4_07_08_8a09124ac9783520665c1d861f3b89b76.dot create mode 100644 docs/latex/structis__container_3_01_t_00_01std_1_1void__t_3_01decltype_07std_1_1declval_3_01_t_01_4_07_08_8b8de4275c57050e20d163d06e3eb847c.tex create mode 100644 docs/latex/structis__container__coll__graph.dot create mode 100644 docs/latex/structis__container__inherit__graph.dot create mode 100644 docs/latex/structis__tuple.tex create mode 100644 docs/latex/structis__tuple_3_01std_1_1tuple_3_01_ts_8_8_8_01_4_01_4.tex create mode 100644 docs/latex/structis__tuple_3_01std_1_1tuple_3_01_ts_8_8_8_01_4_01_4__coll__graph.dot create mode 100644 docs/latex/structis__tuple_3_01std_1_1tuple_3_01_ts_8_8_8_01_4_01_4__inherit__graph.dot create mode 100644 docs/latex/structis__tuple__coll__graph.dot create mode 100644 docs/latex/structis__tuple__inherit__graph.dot create mode 100644 docs/latex/structtuple__types__are__equal.tex create mode 100644 docs/latex/structtuple__types__are__equal_3_01std_1_1tuple_3_01_t_00_01_ts_8_8_8_01_4_01_4.tex create mode 100644 docs/latex/structtuple__types__are__equal_3_01std_1_1tuple_3_01_t_00_01_ts_8_8_8_01_4_01_4__coll__graph.dot create mode 100644 docs/latex/structtuple__types__are__equal_3_01std_1_1tuple_3_01_t_00_01_ts_8_8_8_01_4_01_4__inherit__graph.dot create mode 100644 docs/latex/structtuple__types__are__equal_3_01std_1_1tuple_3_01_t_01_4_01_4.tex create mode 100644 docs/latex/structtuple__types__are__equal_3_01std_1_1tuple_3_01_t_01_4_01_4__coll__graph.dot create mode 100644 docs/latex/structtuple__types__are__equal_3_01std_1_1tuple_3_01_t_01_4_01_4__inherit__graph.dot create mode 100644 docs/latex/structtuple__types__are__equal__coll__graph.dot create mode 100644 docs/latex/structtuple__types__are__equal__inherit__graph.dot create mode 100644 workflows/docs.yml diff --git a/CMakeLists.txt b/CMakeLists.txt index b6483929d..4d8612010 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,86 +1,7 @@ cmake_minimum_required(VERSION 3.12) +project(print_ip) -set(PATCH_VERSION "1" CACHE INTERNAL "Patch version") -set(PROJECT_VESRION 0.0.${PATCH_VERSION}) +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) -project(allocator VERSION ${PROJECT_VESRION}) - -option(WITH_BOOST_TEST "Whether to build Boost test" ON) - -configure_file(version.h.in version.h) - -add_executable(allocator_cli main.cpp) -add_library(allocator lib.cpp) - -set_target_properties(allocator_cli allocator PROPERTIES - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED ON -) - -target_include_directories(allocator - PRIVATE "${CMAKE_BINARY_DIR}" -) - -target_link_libraries(allocator_cli PRIVATE - allocator -) - -if(WITH_BOOST_TEST) - find_package(Boost COMPONENTS unit_test_framework REQUIRED) - add_executable(test_version test_version.cpp) - - set_target_properties(test_version PROPERTIES - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED ON - ) - - set_target_properties(test_version PROPERTIES - COMPILE_DEFINITIONS BOOST_TEST_DYN_LINK - INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR} - ) - - target_link_libraries(test_version - ${Boost_LIBRARIES} - allocator - ) -endif() - -if (MSVC) - target_compile_options(allocator_cli PRIVATE - /W4 - ) - target_compile_options(allocator PRIVATE - /W4 - ) - if(WITH_BOOST_TEST) - target_compile_options(test_version PRIVATE - /W4 - ) - endif() -else () - target_compile_options(allocator_cli PRIVATE - -Wall -Wextra -pedantic -Werror - ) - target_compile_options(allocator PRIVATE - -Wall -Wextra -pedantic -Werror - ) - if(WITH_BOOST_TEST) - target_compile_options(test_version PRIVATE - -Wall -Wextra -pedantic -Werror - ) - endif() -endif() - -install(TARGETS allocator_cli RUNTIME DESTINATION bin) - -set(CPACK_GENERATOR DEB) -set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") -set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") -set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") -set(CPACK_PACKAGE_CONTACT example@example.com) -include(CPack) - -if(WITH_BOOST_TEST) - enable_testing() - add_test(test_version test_version) -endif() +add_executable(print_ip main.cpp) \ No newline at end of file diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 000000000..ed682d21f --- /dev/null +++ b/Doxyfile @@ -0,0 +1,3037 @@ +# Doxyfile 1.16.1 + +# This file describes the settings to be used by the documentation system +# Doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). +# +# Note: +# +# Use Doxygen to compare the used configuration file with the template +# configuration file: +# doxygen -x [configFile] +# Use Doxygen to compare the used configuration file with the template +# configuration file without replacing the environment variables or CMake type +# replacement variables: +# doxygen -x_noenv [configFile] + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "Print IP" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewers a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# With the PROJECT_ICON tag one can specify an icon that is included in the tabs +# when the HTML document is shown. Doxygen will copy the logo to the output +# directory. + +PROJECT_ICON = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where Doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = docs + +# If the CREATE_SUBDIRS tag is set to YES then Doxygen will create up to 4096 +# sub-directories (in 2 levels) under the output directory of each output format +# and will distribute the generated files over these directories. Enabling this +# option can be useful when feeding Doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise cause +# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to +# control the number of sub-directories. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# Controls the number of sub-directories that will be created when +# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every +# level increment doubles the number of directories, resulting in 4096 +# directories at level 8 which is the default and also the maximum value. The +# sub-directories are organized in 2 levels, the first level always has a fixed +# number of 16 directories. +# Minimum value: 0, maximum value: 8, default value: 8. +# This tag requires that the tag CREATE_SUBDIRS is set to YES. + +CREATE_SUBDIRS_LEVEL = 8 + +# If the ALLOW_UNICODE_NAMES tag is set to YES, Doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by Doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, +# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English +# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, +# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with +# English messages), Korean, Korean-en (Korean with English messages), Latvian, +# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, +# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, +# Swedish, Turkish, Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, Doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, Doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, Doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, Doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which Doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where Doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, Doxygen will generate much shorter (but +# less readable) file names. This can be useful if your file system doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen will interpret the +# first line (until the first dot, question mark or exclamation mark) of a +# Javadoc-style comment as the brief description. If set to NO, the Javadoc- +# style will behave just like regular Qt-style comments (thus requiring an +# explicit @brief command for a brief description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the JAVADOC_BANNER tag is set to YES then Doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by Doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will interpret the first +# line (until the first dot, question mark or exclamation mark) of a Qt-style +# comment as the brief description. If set to NO, the Qt-style will behave just +# like regular Qt-style comments (thus requiring an explicit \brief command for +# a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# By default Python docstrings are displayed as preformatted text and Doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# Doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as Doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then Doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:^^" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by Doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make Doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by Doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then Doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by Doxygen, so you can +# mix Doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# If the MARKDOWN_STRICT tag is enabled then Doxygen treats text in comments as +# Markdown formatted also in cases where Doxygen's native markup format +# conflicts with that of Markdown. This is only relevant in cases where +# backticks are used. Doxygen's native markup style allows a single quote to end +# a text fragment started with a backtick and then treat it as a piece of quoted +# text, whereas in Markdown such text fragment is treated as verbatim and only +# ends when a second matching backtick is found. Also, Doxygen's native markup +# format requires double quotes to be escaped when they appear in a backtick +# section, whereas this is not needed for Markdown. +# The default value is: YES. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +MARKDOWN_STRICT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 6. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 6 + +# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to +# generate identifiers for the Markdown headings. Note: Every identifier is +# unique. +# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a +# sequence number starting at 0 and GITHUB use the lower case version of title +# with any whitespace replaced by '-' and punctuation characters removed. +# The default value is: DOXYGEN. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +MARKDOWN_ID_STYLE = DOXYGEN + +# When enabled Doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. Words listed in the +# AUTOLINK_IGNORE_WORDS tag are excluded from automatic linking. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# This tag specifies a list of words that, when matching the start of a word in +# the documentation, will suppress auto links generation, if it is enabled via +# AUTOLINK_SUPPORT. This list does not affect links explicitly created using # +# or the \link or \ref commands. +# This tag requires that the tag AUTOLINK_SUPPORT is set to YES. + +AUTOLINK_IGNORE_WORDS = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let Doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also makes the inheritance and +# collaboration diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software) sources only. Doxygen will parse +# them like normal C++ but will assume all classes use public instead of private +# inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# Doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then Doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, Doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# Doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run Doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +# The NUM_PROC_THREADS specifies the number of threads Doxygen is allowed to use +# during processing. When set to 0 Doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which effectively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 512, default value: 1. + +NUM_PROC_THREADS = 1 + +# If the TIMESTAMP tag is set different from NO then each generated page will +# contain the date or date and time when the page was generated. Setting this to +# NO can help when comparing the output of multiple runs. +# Possible values are: YES, NO, DATETIME and DATE. +# The default value is: NO. + +TIMESTAMP = NO + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, Doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# will also hide undocumented C++ concepts if enabled. This option has no effect +# if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_UNDOC_NAMESPACES tag is set to YES, Doxygen will hide all +# undocumented namespaces that are normally visible in the namespace hierarchy. +# If set to NO, these namespaces will be included in the various overviews. This +# option has no effect if EXTRACT_ALL is enabled. +# The default value is: YES. + +HIDE_UNDOC_NAMESPACES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# With the correct setting of option CASE_SENSE_NAMES Doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and macOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# Possible values are: SYSTEM, NO and YES. +# The default value is: SYSTEM. + +CASE_SENSE_NAMES = SYSTEM + +# If the HIDE_SCOPE_NAMES tag is set to NO then Doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then Doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + +SHOW_HEADERFILE = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES then Doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then Doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then Doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then Doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then Doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and Doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING Doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The GENERATE_REQUIREMENTS tag can be used to enable (YES) or disable (NO) the +# requirements page. When enabled, this page is automatically created when at +# least one comment block with a \requirement command appears in the input. +# The default value is: YES. + +GENERATE_REQUIREMENTS = YES + +# The REQ_TRACEABILITY_INFO tag controls if traceability information is shown on +# the requirements page (only relevant when using \requirement comment blocks). +# The setting NO will disable the traceablility information altogether. The +# setting UNSATISFIED_ONLY will show a list of requirements that are missing a +# satisfies relation (through the command: \satisfies). Similarly the setting +# UNVERIFIED_ONLY will show a list of requirements that are missing a verifies +# relation (through the command: \verifies). Setting the tag to YES (the +# default) will show both lists if applicable. +# Possible values are: YES, NO, UNSATISFIED_ONLY and UNVERIFIED_ONLY. +# The default value is: YES. +# This tag requires that the tag GENERATE_REQUIREMENTS is set to YES. + +REQ_TRACEABILITY_INFO = YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# Doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by Doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by Doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents Doxygen's defaults, run Doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. +# +# Note that if you run Doxygen from a directory containing a file called +# DoxygenLayout.xml, Doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +# The EXTERNAL_TOOL_PATH tag can be used to extend the search path (PATH +# environment variable) so that external tools such as latex and gs can be +# found. +# Note: Directories specified with EXTERNAL_TOOL_PATH are added in front of the +# path already specified by the PATH variable, and are added in the order +# specified. +# Note: This option is particularly useful for macOS version 14 (Sonoma) and +# higher, when running Doxygen from Doxywizard, because in this case any user- +# defined changes to the PATH are ignored. A typical example on macOS is to set +# EXTERNAL_TOOL_PATH = /Library/TeX/texbin /usr/local/bin +# together with the standard path, the full search path used by doxygen when +# launching external tools will then become +# PATH=/Library/TeX/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin + +EXTERNAL_TOOL_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by Doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by Doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then Doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, Doxygen will generate warnings for +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# If WARN_IF_INCOMPLETE_DOC is set to YES, Doxygen will warn about incomplete +# function parameter documentation. If set to NO, Doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + +WARN_IF_INCOMPLETE_DOC = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, Doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, Doxygen will warn about +# undocumented enumeration values. If set to NO, Doxygen will accept +# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: NO. + +WARN_IF_UNDOC_ENUM_VAL = NO + +# If WARN_LAYOUT_FILE option is set to YES, Doxygen will warn about issues found +# while parsing the user defined layout file, such as missing or wrong elements. +# See also LAYOUT_FILE for details. If set to NO, problems with the layout file +# will be suppressed. +# The default value is: YES. + +WARN_LAYOUT_FILE = YES + +# If the WARN_AS_ERROR tag is set to YES then Doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then Doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the Doxygen process Doxygen will return with a non-zero status. +# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then Doxygen behaves +# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined Doxygen will not +# write the warning messages in between other messages but write them at the end +# of a run, in case a WARN_LOGFILE is defined the warning messages will be +# besides being in the defined file also be shown at the end of a run, unless +# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case +# the behavior will remain as with the setting FAIL_ON_WARNINGS. +# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that Doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# See also: WARN_LINE_FORMAT +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# In the $text part of the WARN_FORMAT command it is possible that a reference +# to a more specific place is given. To make it easier to jump to this place +# (outside of Doxygen) the user can define a custom "cut" / "paste" string. +# Example: +# WARN_LINE_FORMAT = "'vi $file +$line'" +# See also: WARN_FORMAT +# The default value is: at line $line of file $file. + +WARN_LINE_FORMAT = "at line $line of file $file" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = . + +# This tag can be used to specify the character encoding of the source files +# that Doxygen parses. Internally Doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# See also: INPUT_FILE_ENCODING +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# This tag can be used to specify the character encoding of the source files +# that Doxygen parses. The INPUT_FILE_ENCODING tag can be used to specify +# character encoding on a per file pattern basis. Doxygen will compare the file +# name with each pattern and apply the encoding instead of the default +# INPUT_ENCODING if there is a match. The character encodings are a list of the +# form: pattern=encoding (like *.php=ISO-8859-1). +# See also: INPUT_ENCODING for further information on supported encodings. + +INPUT_FILE_ENCODING = + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by Doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm, +# *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, +# *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, +# *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be +# provided as Doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cxxm \ + *.cpp \ + *.cppm \ + *.ccm \ + *.c++ \ + *.c++m \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.l \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f18 \ + *.f \ + *.for \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf \ + *.ice + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which Doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# ANamespace::AClass, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that Doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that Doxygen will use the data processed and written to standard output +# for further processing, therefore nothing else, like debug statements or used +# commands (so in case of a Windows batch file always use @echo OFF), should be +# written to standard output. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by Doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by Doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the Doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +# If the IMPLICIT_DIR_DOCS tag is set to YES, any README.md file found in sub- +# directories of the project's root, is used as the documentation for that sub- +# directory, except when the README.md starts with a \dir, \page or \mainpage +# command. If set to NO, the README.md file needs to start with an explicit \dir +# command in order to be used as directory documentation. +# The default value is: YES. + +IMPLICIT_DIR_DOCS = YES + +# The Fortran standard specifies that for fixed formatted Fortran code all +# characters from position 72 are to be considered as comment. A common +# extension is to allow longer lines before the automatic comment starts. The +# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can +# be processed before the automatic comment starts. +# Minimum value: 7, maximum value: 10000, default value: 72. + +FORTRAN_COMMENT_AFTER = 72 + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# multi-line macros, enums or list initialized variables directly into the +# documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct Doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of Doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by Doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then Doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then Doxygen will use the +# clang parser (see: +# http://clang.llvm.org/) for more accurate parsing at the cost of reduced +# performance. This can be particularly helpful with template rich C++ code for +# which Doxygen's built-in parser lacks the necessary type information. +# Note: The availability of this option depends on whether or not Doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS +# tag is set to YES then Doxygen will add the directory of each input to the +# include path. +# The default value is: YES. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_ADD_INC_PATHS = YES + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by Doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the directory containing a file called compile_commands.json. This +# file is the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the +# options used when the source files were built. This is equivalent to +# specifying the -p option to a clang tool, such as clang-check. These options +# will then be passed to the parser. Any options specified with CLANG_OPTIONS +# will be added as well. +# Note: The availability of this option depends on whether or not Doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) +# that should be ignored while generating the index headers. The IGNORE_PREFIX +# tag works for classes, function and member names. The entity will be placed in +# the alphabetical list under the first letter of the entity name that remains +# after removing the prefix. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, Doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank Doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that Doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that Doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of Doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank Doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that Doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank Doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that Doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by Doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output +# should be rendered with a dark or light theme. +# Possible values are: LIGHT always generates light mode output, DARK always +# generates dark mode output, AUTO_LIGHT automatically sets the mode according +# to the user preference, uses light mode if no preference is set (the default), +# AUTO_DARK automatically sets the mode according to the user preference, uses +# dark mode if no preference is set and TOGGLE allows a user to switch between +# light and dark mode via a button. +# The default value is: AUTO_LIGHT. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE = AUTO_LIGHT + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a color-wheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use gray-scales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be +# dynamically folded and expanded in the generated HTML source code. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_CODE_FOLDING = YES + +# If the HTML_COPY_CLIPBOARD tag is set to YES then Doxygen will show an icon in +# the top right corner of code and text fragments that allows the user to copy +# its content to the clipboard. Note this only works if supported by the browser +# and the web page is served via a secure context (see: +# https://www.w3.org/TR/secure-contexts/), i.e. using the https: or file: +# protocol. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COPY_CLIPBOARD = YES + +# Doxygen stores a couple of settings persistently in the browser (via e.g. +# cookies). By default these settings apply to all HTML pages generated by +# Doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store +# the settings under a project specific key, such that the user preferences will +# be stored separately. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_PROJECT_COOKIE = + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, Doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then Doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline (the HTML help workshop was already many +# years in maintenance mode). You can download the HTML help workshop from the +# web archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by Doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# Doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# The SITEMAP_URL tag is used to specify the full URL of the place where the +# generated documentation will be placed on the server by the user during the +# deployment of the documentation. The generated sitemap is called sitemap.xml +# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL +# is specified no sitemap is generated. For information about the sitemap +# protocol see https://www.sitemaps.org +# This tag requires that the tag GENERATE_HTML is set to YES. + +SITEMAP_URL = + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty Doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by Doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has more details information than the tab index, you +# could consider setting DISABLE_INDEX to YES when enabling this option. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# When GENERATE_TREEVIEW is set to YES, the PAGE_OUTLINE_PANEL option determines +# if an additional navigation panel is shown at the right hand side of the +# screen, displaying an outline of the contents of the main page, similar to +# e.g. https://developer.android.com/reference If GENERATE_TREEVIEW is set to +# NO, this option has no effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +PAGE_OUTLINE_PANEL = YES + +# When GENERATE_TREEVIEW is set to YES, the FULL_SIDEBAR option determines if +# the side bar is limited to only the treeview area (value NO) or if it should +# extend to the full height of the window (value YES). Setting this to YES gives +# a layout similar to e.g. https://docs.readthedocs.io with more room for +# contents, but less room for the project logo, title, and description. If +# GENERATE_TREEVIEW is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FULL_SIDEBAR = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# Doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# When the SHOW_ENUM_VALUES tag is set doxygen will show the specified +# enumeration values besides the enumeration mnemonics. +# The default value is: NO. + +SHOW_ENUM_VALUES = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, Doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# If the OBFUSCATE_EMAILS tag is set to YES, Doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +OBFUSCATE_EMAILS = YES + +# If the HTML_FORMULA_FORMAT option is set to svg, Doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# Doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2, MathJax_3 and MathJax_4. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_VERSION = MathJax_2 + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# https://docs.mathjax.org/en/v2.7/output.html), MathJax version 3 (see: +# https://docs.mathjax.org/en/v3.2/output/index.html) and MathJax version 4 +# (see: +# https://docs.mathjax.org/en/v4.0/output/index.htm). +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for MathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. For Mathjax version 2 the +# destination directory should contain the MathJax.js script. For instance, if +# the mathjax directory is located at the same level as the HTML output +# directory, then MATHJAX_RELPATH should be ../mathjax.s For Mathjax versions 3 +# and 4 the destination directory should contain the tex-.js script +# (where is either chtml or svg). The default value points to the +# MathJax Content Delivery Network so you can quickly see the result without +# installing MathJax. However, it is strongly recommended to install a local +# copy of MathJax from https://www.mathjax.org before deployment. The default +# value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 +# - in case of MathJax version 4: https://cdn.jsdelivr.net/npm/mathjax@4 +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see https://docs.mathjax.org/en/v2.7/tex.html): +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# https://docs.mathjax.org/en/v3.2/input/tex/extensions/): +# MATHJAX_EXTENSIONS = ams +# For example for MathJax version 4 (see +# https://docs.mathjax.org/en/v4.0/input/tex/extensions/): +# MATHJAX_EXTENSIONS = units +# Note that for Mathjax version 4 quite a few extensions are already +# automatically loaded. To disable a package in Mathjax version 4 one can use +# the package name prepended with a minus sign (- like MATHJAX_EXTENSIONS += +# -textmacros) +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with JavaScript pieces +# of code that will be used on startup of the MathJax code. See the Mathjax site +# for more details: +# - MathJax version 2 (see: +# https://docs.mathjax.org/en/v2.7/) +# - MathJax version 3 (see: +# https://docs.mathjax.org/en/v3.2/) +# - MathJax version 4 (see: +# https://docs.mathjax.org/en/v4.0/) For an example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled Doxygen will generate a search box for +# the HTML output. The underlying search engine uses JavaScript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the JavaScript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /