From 1b9217544faaf94cb98320fe799cb350585d7f24 Mon Sep 17 00:00:00 2001 From: HeZongLun <13425468+hezonglun@user.noreply.gitee.com> Date: Mon, 6 Oct 2025 20:55:21 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=20BSON=20?= =?UTF-8?q?=E8=AF=BB=E5=8F=96=E6=A8=A1=E5=9D=97=E3=80=81JSON=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=86=99=E5=85=A5=E5=99=A8=E3=80=81YAML=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=86=99=E5=85=A5=E5=99=A8=EF=BC=8C=E5=88=86=E7=A6=BB?= =?UTF-8?q?=E4=BA=86=20NahidaProject.BuildExample=20=E7=A4=BA=E4=BE=8B?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AutoInstallScript.ps1 | 25 - NahidaProject.BuildExample/.gitignore | 4 - NahidaProject.BuildExample/BuildExample.sln | 233 -------- ...roject-Console-DynamicBuildExample.vcxproj | 135 ----- ...onsole-DynamicBuildExample.vcxproj.filters | 22 - ...t-Console-DynamicBuildExample.vcxproj.user | 4 - .../main.cpp | 71 --- ...oject-Database-DynamicBuildExample.vcxproj | 135 ----- ...tabase-DynamicBuildExample.vcxproj.filters | 22 - ...-Database-DynamicBuildExample.vcxproj.user | 4 - .../main.cpp | 41 -- ...roject-Generic-DynamicBuildExample.vcxproj | 135 ----- ...eneric-DynamicBuildExample.vcxproj.filters | 22 - ...t-Generic-DynamicBuildExample.vcxproj.user | 4 - .../main.cpp | 84 --- ...ect-Mathmatics-DynamicBuildExample.vcxproj | 135 ----- ...matics-DynamicBuildExample.vcxproj.filters | 22 - ...athmatics-DynamicBuildExample.vcxproj.user | 4 - .../main.cpp | 66 --- ...aProject-Other-DynamicBuildExample.vcxproj | 135 ----- ...-Other-DynamicBuildExample.vcxproj.filters | 22 - ...ect-Other-DynamicBuildExample.vcxproj.user | 4 - .../main.cpp | 21 - ...-Serialization-DynamicBuildExample.vcxproj | 135 ----- ...zation-DynamicBuildExample.vcxproj.filters | 22 - ...alization-DynamicBuildExample.vcxproj.user | 4 - .../main.cpp | 126 ---- ...Project-Thread-DynamicBuildExample.vcxproj | 135 ----- ...Thread-DynamicBuildExample.vcxproj.filters | 22 - ...ct-Thread-DynamicBuildExample.vcxproj.user | 4 - .../main.cpp | 105 ---- ...oject-UnitTest-DynamicBuildExample.vcxproj | 135 ----- ...itTest-DynamicBuildExample.vcxproj.filters | 22 - ...-UnitTest-DynamicBuildExample.vcxproj.user | 4 - .../main.cpp | 87 --- NahidaProject.BuildExample/README.md | 22 - ...NahidaProject-Console-BuildExample.vcxproj | 135 ----- ...oject-Console-BuildExample.vcxproj.filters | 22 - ...aProject-Console-BuildExample.vcxproj.user | 4 - .../main.cpp | 70 --- ...ahidaProject-Database-BuildExample.vcxproj | 135 ----- ...ject-Database-BuildExample.vcxproj.filters | 22 - ...Project-Database-BuildExample.vcxproj.user | 4 - .../main.cpp | 41 -- ...NahidaProject-Generic-BuildExample.vcxproj | 135 ----- ...oject-Generic-BuildExample.vcxproj.filters | 22 - ...aProject-Generic-BuildExample.vcxproj.user | 4 - .../TestRead.log | 4 - .../main.cpp | 84 --- ...daProject-Mathematics-BuildExample.vcxproj | 135 ----- ...t-Mathematics-BuildExample.vcxproj.filters | 22 - ...ject-Mathematics-BuildExample.vcxproj.user | 4 - .../main.cpp | 66 --- .../NahidaProject-Other-BuildExample.vcxproj | 134 ----- ...Project-Other-BuildExample.vcxproj.filters | 22 - ...idaProject-Other-BuildExample.vcxproj.user | 4 - .../NahidaProject-Other-BuildExample/main.cpp | 21 - ...Project-Serialization-BuildExample.vcxproj | 135 ----- ...Serialization-BuildExample.vcxproj.filters | 22 - ...ct-Serialization-BuildExample.vcxproj.user | 4 - .../TestRead.csv | 8 - .../main.cpp | 126 ---- ...ystem-DynamicInjector-BuildExample.vcxproj | 134 ----- ...namicInjector-BuildExample.vcxproj.filters | 22 - ...-DynamicInjector-BuildExample.vcxproj.user | 4 - .../main.cpp | 21 - ...-System-RegisterTable-BuildExample.vcxproj | 135 ----- ...RegisterTable-BuildExample.vcxproj.filters | 22 - ...em-RegisterTable-BuildExample.vcxproj.user | 4 - .../main.cpp | 26 - ...roject-System-Service-BuildExample.vcxproj | 131 ----- ...ystem-Service-BuildExample.vcxproj.filters | 22 - ...t-System-Service-BuildExample.vcxproj.user | 4 - .../main.cpp | 93 --- .../TestMaterials/DynamicLinkedLibrary.dll | Bin 60416 -> 0 bytes .../TestMaterials/ExecutableFile.exe | Bin 179200 -> 0 bytes .../NahidaProject-Thread-BuildExample.vcxproj | 135 ----- ...roject-Thread-BuildExample.vcxproj.filters | 22 - ...daProject-Thread-BuildExample.vcxproj.user | 4 - .../main.cpp | 106 ---- ...ahidaProject-UnitTest-BuildExample.vcxproj | 134 ----- ...ject-UnitTest-BuildExample.vcxproj.filters | 22 - ...Project-UnitTest-BuildExample.vcxproj.user | 4 - .../main.cpp | 87 --- .../sample-atof-dist.txt | 539 ------------------ .../sample-atof.txt | 1 - .../sample-sscanf-dist.txt | 284 --------- .../sample-sscanf.txt | 1 - .../sample-stod-dist.txt | 260 --------- .../sample-stod.txt | 1 - .../sample-strtod-dist.txt | 272 --------- .../sample-strtod.txt | 1 - NahidaProject.Serialization/CMakeLists.txt | 4 - NahidaProject.Serialization/Sources/BSON.cpp | 460 +++++++++++++++ NahidaProject.Serialization/Sources/BSON.h | 204 +++++++ .../Sources/JSON/JSONWriter.cpp | 179 ++++++ .../Sources/JSON/JSONWriter.h | 61 ++ .../Sources/{ => YAML}/YAML.cpp | 0 .../Sources/{ => YAML}/YAML.h | 0 .../Sources/YAML/YAMLWriter.cpp | 231 ++++++++ .../Sources/YAML/YAMLWriter.h | 51 ++ .../Tests/ModuleUnitTestFile.cpp | 85 ++- README.md | 5 +- 103 files changed, 1272 insertions(+), 6057 deletions(-) delete mode 100644 AutoInstallScript.ps1 delete mode 100644 NahidaProject.BuildExample/.gitignore delete mode 100644 NahidaProject.BuildExample/BuildExample.sln delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Console-DynamicBuildExample/NahidaProject-Console-DynamicBuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Console-DynamicBuildExample/NahidaProject-Console-DynamicBuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Console-DynamicBuildExample/NahidaProject-Console-DynamicBuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Console-DynamicBuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Database-DynamicBuildExample/NahidaProject-Database-DynamicBuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Database-DynamicBuildExample/NahidaProject-Database-DynamicBuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Database-DynamicBuildExample/NahidaProject-Database-DynamicBuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Database-DynamicBuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Generic-DynamicBuildExample/NahidaProject-Generic-DynamicBuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Generic-DynamicBuildExample/NahidaProject-Generic-DynamicBuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Generic-DynamicBuildExample/NahidaProject-Generic-DynamicBuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Generic-DynamicBuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Mathmatics-DynamicBuildExample/NahidaProject-Mathmatics-DynamicBuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Mathmatics-DynamicBuildExample/NahidaProject-Mathmatics-DynamicBuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Mathmatics-DynamicBuildExample/NahidaProject-Mathmatics-DynamicBuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Mathmatics-DynamicBuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Other-DynamicBuildExample/NahidaProject-Other-DynamicBuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Other-DynamicBuildExample/NahidaProject-Other-DynamicBuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Other-DynamicBuildExample/NahidaProject-Other-DynamicBuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Other-DynamicBuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Serialization-DynamicBuildExample/NahidaProject-Serialization-DynamicBuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Serialization-DynamicBuildExample/NahidaProject-Serialization-DynamicBuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Serialization-DynamicBuildExample/NahidaProject-Serialization-DynamicBuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Serialization-DynamicBuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Thread-DynamicBuildExample/NahidaProject-Thread-DynamicBuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Thread-DynamicBuildExample/NahidaProject-Thread-DynamicBuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Thread-DynamicBuildExample/NahidaProject-Thread-DynamicBuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Thread-DynamicBuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-UnitTest-DynamicBuildExample/NahidaProject-UnitTest-DynamicBuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-UnitTest-DynamicBuildExample/NahidaProject-UnitTest-DynamicBuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-UnitTest-DynamicBuildExample/NahidaProject-UnitTest-DynamicBuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/DynamicLibrary/NahidaProject-UnitTest-DynamicBuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/README.md delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Console-BuildExample/NahidaProject-Console-BuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Console-BuildExample/NahidaProject-Console-BuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Console-BuildExample/NahidaProject-Console-BuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Console-BuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Database-BuildExample/NahidaProject-Database-BuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Database-BuildExample/NahidaProject-Database-BuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Database-BuildExample/NahidaProject-Database-BuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Database-BuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/NahidaProject-Generic-BuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/NahidaProject-Generic-BuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/NahidaProject-Generic-BuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/TestRead.log delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Mathematics-BuildExample/NahidaProject-Mathematics-BuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Mathematics-BuildExample/NahidaProject-Mathematics-BuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Mathematics-BuildExample/NahidaProject-Mathematics-BuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Mathematics-BuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Other-BuildExample/NahidaProject-Other-BuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Other-BuildExample/NahidaProject-Other-BuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Other-BuildExample/NahidaProject-Other-BuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Other-BuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/NahidaProject-Serialization-BuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/NahidaProject-Serialization-BuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/NahidaProject-Serialization-BuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/TestRead.csv delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-DynamicInjector-BuildExample/NahidaProject-System-DynamicInjector-BuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-DynamicInjector-BuildExample/NahidaProject-System-DynamicInjector-BuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-DynamicInjector-BuildExample/NahidaProject-System-DynamicInjector-BuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-DynamicInjector-BuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-RegisterTable-BuildExample/NahidaProject-System-RegisterTable-BuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-RegisterTable-BuildExample/NahidaProject-System-RegisterTable-BuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-RegisterTable-BuildExample/NahidaProject-System-RegisterTable-BuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-RegisterTable-BuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-Service-BuildExample/NahidaProject-System-Service-BuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-Service-BuildExample/NahidaProject-System-Service-BuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-Service-BuildExample/NahidaProject-System-Service-BuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-Service-BuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/TestMaterials/DynamicLinkedLibrary.dll delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/TestMaterials/ExecutableFile.exe delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Thread-BuildExample/NahidaProject-Thread-BuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Thread-BuildExample/NahidaProject-Thread-BuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Thread-BuildExample/NahidaProject-Thread-BuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-Thread-BuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/NahidaProject-UnitTest-BuildExample.vcxproj delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/NahidaProject-UnitTest-BuildExample.vcxproj.filters delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/NahidaProject-UnitTest-BuildExample.vcxproj.user delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/main.cpp delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-atof-dist.txt delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-atof.txt delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-sscanf-dist.txt delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-sscanf.txt delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-stod-dist.txt delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-stod.txt delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-strtod-dist.txt delete mode 100644 NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-strtod.txt create mode 100644 NahidaProject.Serialization/Sources/BSON.cpp create mode 100644 NahidaProject.Serialization/Sources/BSON.h create mode 100644 NahidaProject.Serialization/Sources/JSON/JSONWriter.cpp create mode 100644 NahidaProject.Serialization/Sources/JSON/JSONWriter.h rename NahidaProject.Serialization/Sources/{ => YAML}/YAML.cpp (100%) rename NahidaProject.Serialization/Sources/{ => YAML}/YAML.h (100%) create mode 100644 NahidaProject.Serialization/Sources/YAML/YAMLWriter.cpp create mode 100644 NahidaProject.Serialization/Sources/YAML/YAMLWriter.h diff --git a/AutoInstallScript.ps1 b/AutoInstallScript.ps1 deleted file mode 100644 index e015c68..0000000 --- a/AutoInstallScript.ps1 +++ /dev/null @@ -1,25 +0,0 @@ -$destinationFolder = ".\NahidaProject-InstallDirectory" - -$files = Get-ChildItem -Path "." -Recurse -File - -mkdir $destinationFolder\bin -mkdir $destinationFolder\include -mkdir $destinationFolder\lib - -foreach ($file in $files) { - if ($file.Extension -eq ".h") { - Copy-Item -Path $file.FullName -Destination $destinationFolder\include - } - - if ($file.Extension -eq ".lib") { - Copy-Item -Path $file.FullName -Destination $destinationFolder\lib - } - - if ($file.Extension -eq ".dll") { - Copy-Item -Path $file.FullName -Destination $destinationFolder\bin - } - - if ($file.Extension -eq ".exe") { - Copy-Item -Path $file.FullName -Destination $destinationFolder\bin - } -} diff --git a/NahidaProject.BuildExample/.gitignore b/NahidaProject.BuildExample/.gitignore deleted file mode 100644 index 27b4ded..0000000 --- a/NahidaProject.BuildExample/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -### Microsoft Visual Studio ### -.vs -out -x64 \ No newline at end of file diff --git a/NahidaProject.BuildExample/BuildExample.sln b/NahidaProject.BuildExample/BuildExample.sln deleted file mode 100644 index bc0d34e..0000000 --- a/NahidaProject.BuildExample/BuildExample.sln +++ /dev/null @@ -1,233 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.14.36414.22 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "StaticLibrary", "StaticLibrary", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DynamicLibrary", "DynamicLibrary", "{B805787D-97BB-49ED-A89C-450C399C2EBA}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "解决方案项", "解决方案项", "{9FA3D6BD-1EC1-3BA5-80CB-CE02773A58D5}" - ProjectSection(SolutionItems) = preProject - README.md = README.md - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-Console-BuildExample", "StaticLibrary\NahidaProject-Console-BuildExample\NahidaProject-Console-BuildExample.vcxproj", "{1FE1E600-D455-4D87-87DE-09E3DA2B37E9}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-Database-BuildExample", "StaticLibrary\NahidaProject-Database-BuildExample\NahidaProject-Database-BuildExample.vcxproj", "{611D584B-6C3B-4431-A919-3CD6AA41F537}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-Generic-BuildExample", "StaticLibrary\NahidaProject-Generic-BuildExample\NahidaProject-Generic-BuildExample.vcxproj", "{564E3D40-1DBE-474A-9682-E01D5B9DCA3B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-Mathematics-BuildExample", "StaticLibrary\NahidaProject-Mathematics-BuildExample\NahidaProject-Mathematics-BuildExample.vcxproj", "{4912051C-E982-480E-AD1E-87DD20992A18}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-Other-BuildExample", "StaticLibrary\NahidaProject-Other-BuildExample\NahidaProject-Other-BuildExample.vcxproj", "{0A4A2D60-5612-4073-86A5-A991FD77F2C2}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-Serialization-BuildExample", "StaticLibrary\NahidaProject-Serialization-BuildExample\NahidaProject-Serialization-BuildExample.vcxproj", "{7B64F4C4-529C-435A-858F-7ACA4DB71A19}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-Thread-BuildExample", "StaticLibrary\NahidaProject-Thread-BuildExample\NahidaProject-Thread-BuildExample.vcxproj", "{E0A15B33-3D20-499C-9B1A-9FFFDA0FC264}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-UnitTest-BuildExample", "StaticLibrary\NahidaProject-UnitTest-BuildExample\NahidaProject-UnitTest-BuildExample.vcxproj", "{4E03C889-0182-44B5-93DE-43ED4E8F674B}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NahidaProject-System-BuildExample", "NahidaProject-System-BuildExample", "{3923C0D7-0F63-4BF0-965B-BDEC656090F8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-System-RegisterTable-BuildExample", "StaticLibrary\NahidaProject-System-BuildExample\NahidaProject-System-RegisterTable-BuildExample\NahidaProject-System-RegisterTable-BuildExample.vcxproj", "{B8841332-02B5-40BA-A0D2-C05A77B1F6C2}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-System-DynamicInjector-BuildExample", "StaticLibrary\NahidaProject-System-BuildExample\NahidaProject-System-DynamicInjector-BuildExample\NahidaProject-System-DynamicInjector-BuildExample.vcxproj", "{57A71F29-EAC5-4A75-AFF3-59309D746EE1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-Console-DynamicBuildExample", "DynamicLibrary\NahidaProject-Console-DynamicBuildExample\NahidaProject-Console-DynamicBuildExample.vcxproj", "{32676108-7AA5-4F1C-AB59-CDF34A4A79F2}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-Database-DynamicBuildExample", "DynamicLibrary\NahidaProject-Database-DynamicBuildExample\NahidaProject-Database-DynamicBuildExample.vcxproj", "{0C4C9927-FFFD-429A-BF0A-181D534E0334}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-Generic-DynamicBuildExample", "DynamicLibrary\NahidaProject-Generic-DynamicBuildExample\NahidaProject-Generic-DynamicBuildExample.vcxproj", "{FF3275AB-A387-4455-9F96-016D9043C4B5}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-Mathmatics-DynamicBuildExample", "DynamicLibrary\NahidaProject-Mathmatics-DynamicBuildExample\NahidaProject-Mathmatics-DynamicBuildExample.vcxproj", "{4DF6BD22-24EC-433C-A2A6-B993AC97D364}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-Other-DynamicBuildExample", "DynamicLibrary\NahidaProject-Other-DynamicBuildExample\NahidaProject-Other-DynamicBuildExample.vcxproj", "{4949239E-B4C4-4062-8DE0-F76CDF292485}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-Serialization-DynamicBuildExample", "DynamicLibrary\NahidaProject-Serialization-DynamicBuildExample\NahidaProject-Serialization-DynamicBuildExample.vcxproj", "{A94AF18B-6503-4367-AE83-F8B51E9B013A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-Thread-DynamicBuildExample", "DynamicLibrary\NahidaProject-Thread-DynamicBuildExample\NahidaProject-Thread-DynamicBuildExample.vcxproj", "{8D8FF154-0920-416F-AB6B-30E02EC0F12B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NahidaProject-UnitTest-DynamicBuildExample", "DynamicLibrary\NahidaProject-UnitTest-DynamicBuildExample\NahidaProject-UnitTest-DynamicBuildExample.vcxproj", "{453D2957-FC8E-43AD-9D49-4F30737B213D}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {1FE1E600-D455-4D87-87DE-09E3DA2B37E9}.Debug|x64.ActiveCfg = Debug|x64 - {1FE1E600-D455-4D87-87DE-09E3DA2B37E9}.Debug|x64.Build.0 = Debug|x64 - {1FE1E600-D455-4D87-87DE-09E3DA2B37E9}.Debug|x86.ActiveCfg = Debug|Win32 - {1FE1E600-D455-4D87-87DE-09E3DA2B37E9}.Debug|x86.Build.0 = Debug|Win32 - {1FE1E600-D455-4D87-87DE-09E3DA2B37E9}.Release|x64.ActiveCfg = Release|x64 - {1FE1E600-D455-4D87-87DE-09E3DA2B37E9}.Release|x64.Build.0 = Release|x64 - {1FE1E600-D455-4D87-87DE-09E3DA2B37E9}.Release|x86.ActiveCfg = Release|Win32 - {1FE1E600-D455-4D87-87DE-09E3DA2B37E9}.Release|x86.Build.0 = Release|Win32 - {611D584B-6C3B-4431-A919-3CD6AA41F537}.Debug|x64.ActiveCfg = Debug|x64 - {611D584B-6C3B-4431-A919-3CD6AA41F537}.Debug|x64.Build.0 = Debug|x64 - {611D584B-6C3B-4431-A919-3CD6AA41F537}.Debug|x86.ActiveCfg = Debug|Win32 - {611D584B-6C3B-4431-A919-3CD6AA41F537}.Debug|x86.Build.0 = Debug|Win32 - {611D584B-6C3B-4431-A919-3CD6AA41F537}.Release|x64.ActiveCfg = Release|x64 - {611D584B-6C3B-4431-A919-3CD6AA41F537}.Release|x64.Build.0 = Release|x64 - {611D584B-6C3B-4431-A919-3CD6AA41F537}.Release|x86.ActiveCfg = Release|Win32 - {611D584B-6C3B-4431-A919-3CD6AA41F537}.Release|x86.Build.0 = Release|Win32 - {564E3D40-1DBE-474A-9682-E01D5B9DCA3B}.Debug|x64.ActiveCfg = Debug|x64 - {564E3D40-1DBE-474A-9682-E01D5B9DCA3B}.Debug|x64.Build.0 = Debug|x64 - {564E3D40-1DBE-474A-9682-E01D5B9DCA3B}.Debug|x86.ActiveCfg = Debug|Win32 - {564E3D40-1DBE-474A-9682-E01D5B9DCA3B}.Debug|x86.Build.0 = Debug|Win32 - {564E3D40-1DBE-474A-9682-E01D5B9DCA3B}.Release|x64.ActiveCfg = Release|x64 - {564E3D40-1DBE-474A-9682-E01D5B9DCA3B}.Release|x64.Build.0 = Release|x64 - {564E3D40-1DBE-474A-9682-E01D5B9DCA3B}.Release|x86.ActiveCfg = Release|Win32 - {564E3D40-1DBE-474A-9682-E01D5B9DCA3B}.Release|x86.Build.0 = Release|Win32 - {4912051C-E982-480E-AD1E-87DD20992A18}.Debug|x64.ActiveCfg = Debug|x64 - {4912051C-E982-480E-AD1E-87DD20992A18}.Debug|x64.Build.0 = Debug|x64 - {4912051C-E982-480E-AD1E-87DD20992A18}.Debug|x86.ActiveCfg = Debug|Win32 - {4912051C-E982-480E-AD1E-87DD20992A18}.Debug|x86.Build.0 = Debug|Win32 - {4912051C-E982-480E-AD1E-87DD20992A18}.Release|x64.ActiveCfg = Release|x64 - {4912051C-E982-480E-AD1E-87DD20992A18}.Release|x64.Build.0 = Release|x64 - {4912051C-E982-480E-AD1E-87DD20992A18}.Release|x86.ActiveCfg = Release|Win32 - {4912051C-E982-480E-AD1E-87DD20992A18}.Release|x86.Build.0 = Release|Win32 - {0A4A2D60-5612-4073-86A5-A991FD77F2C2}.Debug|x64.ActiveCfg = Debug|x64 - {0A4A2D60-5612-4073-86A5-A991FD77F2C2}.Debug|x64.Build.0 = Debug|x64 - {0A4A2D60-5612-4073-86A5-A991FD77F2C2}.Debug|x86.ActiveCfg = Debug|Win32 - {0A4A2D60-5612-4073-86A5-A991FD77F2C2}.Debug|x86.Build.0 = Debug|Win32 - {0A4A2D60-5612-4073-86A5-A991FD77F2C2}.Release|x64.ActiveCfg = Release|x64 - {0A4A2D60-5612-4073-86A5-A991FD77F2C2}.Release|x64.Build.0 = Release|x64 - {0A4A2D60-5612-4073-86A5-A991FD77F2C2}.Release|x86.ActiveCfg = Release|Win32 - {0A4A2D60-5612-4073-86A5-A991FD77F2C2}.Release|x86.Build.0 = Release|Win32 - {7B64F4C4-529C-435A-858F-7ACA4DB71A19}.Debug|x64.ActiveCfg = Debug|x64 - {7B64F4C4-529C-435A-858F-7ACA4DB71A19}.Debug|x64.Build.0 = Debug|x64 - {7B64F4C4-529C-435A-858F-7ACA4DB71A19}.Debug|x86.ActiveCfg = Debug|Win32 - {7B64F4C4-529C-435A-858F-7ACA4DB71A19}.Debug|x86.Build.0 = Debug|Win32 - {7B64F4C4-529C-435A-858F-7ACA4DB71A19}.Release|x64.ActiveCfg = Release|x64 - {7B64F4C4-529C-435A-858F-7ACA4DB71A19}.Release|x64.Build.0 = Release|x64 - {7B64F4C4-529C-435A-858F-7ACA4DB71A19}.Release|x86.ActiveCfg = Release|Win32 - {7B64F4C4-529C-435A-858F-7ACA4DB71A19}.Release|x86.Build.0 = Release|Win32 - {E0A15B33-3D20-499C-9B1A-9FFFDA0FC264}.Debug|x64.ActiveCfg = Debug|x64 - {E0A15B33-3D20-499C-9B1A-9FFFDA0FC264}.Debug|x64.Build.0 = Debug|x64 - {E0A15B33-3D20-499C-9B1A-9FFFDA0FC264}.Debug|x86.ActiveCfg = Debug|Win32 - {E0A15B33-3D20-499C-9B1A-9FFFDA0FC264}.Debug|x86.Build.0 = Debug|Win32 - {E0A15B33-3D20-499C-9B1A-9FFFDA0FC264}.Release|x64.ActiveCfg = Release|x64 - {E0A15B33-3D20-499C-9B1A-9FFFDA0FC264}.Release|x64.Build.0 = Release|x64 - {E0A15B33-3D20-499C-9B1A-9FFFDA0FC264}.Release|x86.ActiveCfg = Release|Win32 - {E0A15B33-3D20-499C-9B1A-9FFFDA0FC264}.Release|x86.Build.0 = Release|Win32 - {4E03C889-0182-44B5-93DE-43ED4E8F674B}.Debug|x64.ActiveCfg = Debug|x64 - {4E03C889-0182-44B5-93DE-43ED4E8F674B}.Debug|x64.Build.0 = Debug|x64 - {4E03C889-0182-44B5-93DE-43ED4E8F674B}.Debug|x86.ActiveCfg = Debug|Win32 - {4E03C889-0182-44B5-93DE-43ED4E8F674B}.Debug|x86.Build.0 = Debug|Win32 - {4E03C889-0182-44B5-93DE-43ED4E8F674B}.Release|x64.ActiveCfg = Release|x64 - {4E03C889-0182-44B5-93DE-43ED4E8F674B}.Release|x64.Build.0 = Release|x64 - {4E03C889-0182-44B5-93DE-43ED4E8F674B}.Release|x86.ActiveCfg = Release|Win32 - {4E03C889-0182-44B5-93DE-43ED4E8F674B}.Release|x86.Build.0 = Release|Win32 - {B8841332-02B5-40BA-A0D2-C05A77B1F6C2}.Debug|x64.ActiveCfg = Debug|x64 - {B8841332-02B5-40BA-A0D2-C05A77B1F6C2}.Debug|x64.Build.0 = Debug|x64 - {B8841332-02B5-40BA-A0D2-C05A77B1F6C2}.Debug|x86.ActiveCfg = Debug|Win32 - {B8841332-02B5-40BA-A0D2-C05A77B1F6C2}.Debug|x86.Build.0 = Debug|Win32 - {B8841332-02B5-40BA-A0D2-C05A77B1F6C2}.Release|x64.ActiveCfg = Release|x64 - {B8841332-02B5-40BA-A0D2-C05A77B1F6C2}.Release|x64.Build.0 = Release|x64 - {B8841332-02B5-40BA-A0D2-C05A77B1F6C2}.Release|x86.ActiveCfg = Release|Win32 - {B8841332-02B5-40BA-A0D2-C05A77B1F6C2}.Release|x86.Build.0 = Release|Win32 - {57A71F29-EAC5-4A75-AFF3-59309D746EE1}.Debug|x64.ActiveCfg = Debug|x64 - {57A71F29-EAC5-4A75-AFF3-59309D746EE1}.Debug|x64.Build.0 = Debug|x64 - {57A71F29-EAC5-4A75-AFF3-59309D746EE1}.Debug|x86.ActiveCfg = Debug|Win32 - {57A71F29-EAC5-4A75-AFF3-59309D746EE1}.Debug|x86.Build.0 = Debug|Win32 - {57A71F29-EAC5-4A75-AFF3-59309D746EE1}.Release|x64.ActiveCfg = Release|x64 - {57A71F29-EAC5-4A75-AFF3-59309D746EE1}.Release|x64.Build.0 = Release|x64 - {57A71F29-EAC5-4A75-AFF3-59309D746EE1}.Release|x86.ActiveCfg = Release|Win32 - {57A71F29-EAC5-4A75-AFF3-59309D746EE1}.Release|x86.Build.0 = Release|Win32 - {32676108-7AA5-4F1C-AB59-CDF34A4A79F2}.Debug|x64.ActiveCfg = Debug|x64 - {32676108-7AA5-4F1C-AB59-CDF34A4A79F2}.Debug|x64.Build.0 = Debug|x64 - {32676108-7AA5-4F1C-AB59-CDF34A4A79F2}.Debug|x86.ActiveCfg = Debug|Win32 - {32676108-7AA5-4F1C-AB59-CDF34A4A79F2}.Debug|x86.Build.0 = Debug|Win32 - {32676108-7AA5-4F1C-AB59-CDF34A4A79F2}.Release|x64.ActiveCfg = Release|x64 - {32676108-7AA5-4F1C-AB59-CDF34A4A79F2}.Release|x64.Build.0 = Release|x64 - {32676108-7AA5-4F1C-AB59-CDF34A4A79F2}.Release|x86.ActiveCfg = Release|Win32 - {32676108-7AA5-4F1C-AB59-CDF34A4A79F2}.Release|x86.Build.0 = Release|Win32 - {0C4C9927-FFFD-429A-BF0A-181D534E0334}.Debug|x64.ActiveCfg = Debug|x64 - {0C4C9927-FFFD-429A-BF0A-181D534E0334}.Debug|x64.Build.0 = Debug|x64 - {0C4C9927-FFFD-429A-BF0A-181D534E0334}.Debug|x86.ActiveCfg = Debug|Win32 - {0C4C9927-FFFD-429A-BF0A-181D534E0334}.Debug|x86.Build.0 = Debug|Win32 - {0C4C9927-FFFD-429A-BF0A-181D534E0334}.Release|x64.ActiveCfg = Release|x64 - {0C4C9927-FFFD-429A-BF0A-181D534E0334}.Release|x64.Build.0 = Release|x64 - {0C4C9927-FFFD-429A-BF0A-181D534E0334}.Release|x86.ActiveCfg = Release|Win32 - {0C4C9927-FFFD-429A-BF0A-181D534E0334}.Release|x86.Build.0 = Release|Win32 - {FF3275AB-A387-4455-9F96-016D9043C4B5}.Debug|x64.ActiveCfg = Debug|x64 - {FF3275AB-A387-4455-9F96-016D9043C4B5}.Debug|x64.Build.0 = Debug|x64 - {FF3275AB-A387-4455-9F96-016D9043C4B5}.Debug|x86.ActiveCfg = Debug|Win32 - {FF3275AB-A387-4455-9F96-016D9043C4B5}.Debug|x86.Build.0 = Debug|Win32 - {FF3275AB-A387-4455-9F96-016D9043C4B5}.Release|x64.ActiveCfg = Release|x64 - {FF3275AB-A387-4455-9F96-016D9043C4B5}.Release|x64.Build.0 = Release|x64 - {FF3275AB-A387-4455-9F96-016D9043C4B5}.Release|x86.ActiveCfg = Release|Win32 - {FF3275AB-A387-4455-9F96-016D9043C4B5}.Release|x86.Build.0 = Release|Win32 - {4DF6BD22-24EC-433C-A2A6-B993AC97D364}.Debug|x64.ActiveCfg = Debug|x64 - {4DF6BD22-24EC-433C-A2A6-B993AC97D364}.Debug|x64.Build.0 = Debug|x64 - {4DF6BD22-24EC-433C-A2A6-B993AC97D364}.Debug|x86.ActiveCfg = Debug|Win32 - {4DF6BD22-24EC-433C-A2A6-B993AC97D364}.Debug|x86.Build.0 = Debug|Win32 - {4DF6BD22-24EC-433C-A2A6-B993AC97D364}.Release|x64.ActiveCfg = Release|x64 - {4DF6BD22-24EC-433C-A2A6-B993AC97D364}.Release|x64.Build.0 = Release|x64 - {4DF6BD22-24EC-433C-A2A6-B993AC97D364}.Release|x86.ActiveCfg = Release|Win32 - {4DF6BD22-24EC-433C-A2A6-B993AC97D364}.Release|x86.Build.0 = Release|Win32 - {4949239E-B4C4-4062-8DE0-F76CDF292485}.Debug|x64.ActiveCfg = Debug|x64 - {4949239E-B4C4-4062-8DE0-F76CDF292485}.Debug|x64.Build.0 = Debug|x64 - {4949239E-B4C4-4062-8DE0-F76CDF292485}.Debug|x86.ActiveCfg = Debug|Win32 - {4949239E-B4C4-4062-8DE0-F76CDF292485}.Debug|x86.Build.0 = Debug|Win32 - {4949239E-B4C4-4062-8DE0-F76CDF292485}.Release|x64.ActiveCfg = Release|x64 - {4949239E-B4C4-4062-8DE0-F76CDF292485}.Release|x64.Build.0 = Release|x64 - {4949239E-B4C4-4062-8DE0-F76CDF292485}.Release|x86.ActiveCfg = Release|Win32 - {4949239E-B4C4-4062-8DE0-F76CDF292485}.Release|x86.Build.0 = Release|Win32 - {A94AF18B-6503-4367-AE83-F8B51E9B013A}.Debug|x64.ActiveCfg = Debug|x64 - {A94AF18B-6503-4367-AE83-F8B51E9B013A}.Debug|x64.Build.0 = Debug|x64 - {A94AF18B-6503-4367-AE83-F8B51E9B013A}.Debug|x86.ActiveCfg = Debug|Win32 - {A94AF18B-6503-4367-AE83-F8B51E9B013A}.Debug|x86.Build.0 = Debug|Win32 - {A94AF18B-6503-4367-AE83-F8B51E9B013A}.Release|x64.ActiveCfg = Release|x64 - {A94AF18B-6503-4367-AE83-F8B51E9B013A}.Release|x64.Build.0 = Release|x64 - {A94AF18B-6503-4367-AE83-F8B51E9B013A}.Release|x86.ActiveCfg = Release|Win32 - {A94AF18B-6503-4367-AE83-F8B51E9B013A}.Release|x86.Build.0 = Release|Win32 - {8D8FF154-0920-416F-AB6B-30E02EC0F12B}.Debug|x64.ActiveCfg = Debug|x64 - {8D8FF154-0920-416F-AB6B-30E02EC0F12B}.Debug|x64.Build.0 = Debug|x64 - {8D8FF154-0920-416F-AB6B-30E02EC0F12B}.Debug|x86.ActiveCfg = Debug|Win32 - {8D8FF154-0920-416F-AB6B-30E02EC0F12B}.Debug|x86.Build.0 = Debug|Win32 - {8D8FF154-0920-416F-AB6B-30E02EC0F12B}.Release|x64.ActiveCfg = Release|x64 - {8D8FF154-0920-416F-AB6B-30E02EC0F12B}.Release|x64.Build.0 = Release|x64 - {8D8FF154-0920-416F-AB6B-30E02EC0F12B}.Release|x86.ActiveCfg = Release|Win32 - {8D8FF154-0920-416F-AB6B-30E02EC0F12B}.Release|x86.Build.0 = Release|Win32 - {453D2957-FC8E-43AD-9D49-4F30737B213D}.Debug|x64.ActiveCfg = Debug|x64 - {453D2957-FC8E-43AD-9D49-4F30737B213D}.Debug|x64.Build.0 = Debug|x64 - {453D2957-FC8E-43AD-9D49-4F30737B213D}.Debug|x86.ActiveCfg = Debug|Win32 - {453D2957-FC8E-43AD-9D49-4F30737B213D}.Debug|x86.Build.0 = Debug|Win32 - {453D2957-FC8E-43AD-9D49-4F30737B213D}.Release|x64.ActiveCfg = Release|x64 - {453D2957-FC8E-43AD-9D49-4F30737B213D}.Release|x64.Build.0 = Release|x64 - {453D2957-FC8E-43AD-9D49-4F30737B213D}.Release|x86.ActiveCfg = Release|Win32 - {453D2957-FC8E-43AD-9D49-4F30737B213D}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {1FE1E600-D455-4D87-87DE-09E3DA2B37E9} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {611D584B-6C3B-4431-A919-3CD6AA41F537} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {564E3D40-1DBE-474A-9682-E01D5B9DCA3B} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {4912051C-E982-480E-AD1E-87DD20992A18} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {0A4A2D60-5612-4073-86A5-A991FD77F2C2} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {7B64F4C4-529C-435A-858F-7ACA4DB71A19} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {E0A15B33-3D20-499C-9B1A-9FFFDA0FC264} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {4E03C889-0182-44B5-93DE-43ED4E8F674B} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {3923C0D7-0F63-4BF0-965B-BDEC656090F8} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} - {B8841332-02B5-40BA-A0D2-C05A77B1F6C2} = {3923C0D7-0F63-4BF0-965B-BDEC656090F8} - {57A71F29-EAC5-4A75-AFF3-59309D746EE1} = {3923C0D7-0F63-4BF0-965B-BDEC656090F8} - {32676108-7AA5-4F1C-AB59-CDF34A4A79F2} = {B805787D-97BB-49ED-A89C-450C399C2EBA} - {0C4C9927-FFFD-429A-BF0A-181D534E0334} = {B805787D-97BB-49ED-A89C-450C399C2EBA} - {FF3275AB-A387-4455-9F96-016D9043C4B5} = {B805787D-97BB-49ED-A89C-450C399C2EBA} - {4DF6BD22-24EC-433C-A2A6-B993AC97D364} = {B805787D-97BB-49ED-A89C-450C399C2EBA} - {4949239E-B4C4-4062-8DE0-F76CDF292485} = {B805787D-97BB-49ED-A89C-450C399C2EBA} - {A94AF18B-6503-4367-AE83-F8B51E9B013A} = {B805787D-97BB-49ED-A89C-450C399C2EBA} - {8D8FF154-0920-416F-AB6B-30E02EC0F12B} = {B805787D-97BB-49ED-A89C-450C399C2EBA} - {453D2957-FC8E-43AD-9D49-4F30737B213D} = {B805787D-97BB-49ED-A89C-450C399C2EBA} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {1EEC9B8E-6A4D-44AF-983A-614A10CCE3CE} - EndGlobalSection -EndGlobal diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Console-DynamicBuildExample/NahidaProject-Console-DynamicBuildExample.vcxproj b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Console-DynamicBuildExample/NahidaProject-Console-DynamicBuildExample.vcxproj deleted file mode 100644 index e02b947..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Console-DynamicBuildExample/NahidaProject-Console-DynamicBuildExample.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {32676108-7aa5-4f1c-ab59-cdf34a4a79f2} - NahidaProjectConsoleDynamicBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - stdcpp20 - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-Console.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Console-DynamicBuildExample/NahidaProject-Console-DynamicBuildExample.vcxproj.filters b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Console-DynamicBuildExample/NahidaProject-Console-DynamicBuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Console-DynamicBuildExample/NahidaProject-Console-DynamicBuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Console-DynamicBuildExample/NahidaProject-Console-DynamicBuildExample.vcxproj.user b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Console-DynamicBuildExample/NahidaProject-Console-DynamicBuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Console-DynamicBuildExample/NahidaProject-Console-DynamicBuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Console-DynamicBuildExample/main.cpp b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Console-DynamicBuildExample/main.cpp deleted file mode 100644 index 3808e6a..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Console-DynamicBuildExample/main.cpp +++ /dev/null @@ -1,71 +0,0 @@ -// NahidaProject-Console-DynamicBuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#include -#include -#include -#include - -int main(int argc, char** argv) { - NahidaProject::ChooseDialog::CheckboxMenu cbm(L"Choose 1", 5); - cbm.AddOption(L"Option 1", L"desc1", TRUE); - cbm.AddOption(L"Option 2", L"desc2", TRUE); - cbm.AddOption(L"Option 3", L"desc3", TRUE); - cbm.AddOption(L"Option 4", L"desc4"); - cbm.AddOption(L"Option 5", L"desc5"); - cbm.AddOption(L"Option 6", L"desc6"); - - cbm.Execute(); - NahidaProject::ChooseDialog::MenuState cbmState = cbm.GetState(); - - std::wcout << L"OPTION\t DESCRIPTION\t\t SELECTED" << std::endl; - for (NahidaProject::ChooseDialog::Option opt : cbmState.options) { - std::wcout << opt._displayName << L"\t " << opt._description << L"\t\t " << opt.IsSelected() << std::endl; - } - - NahidaProject::ChooseDialog::RadioMenu radioMenu(L"Choose 2"); - radioMenu.AddOption(L"Option 1", L"Description 1"); - radioMenu.AddOption(L"Option 2", L"Description 2"); - radioMenu.AddOption(L"Option 3", L"Description 3"); - radioMenu.AddOption(L"Option 4", L"Description 4"); - radioMenu.AddOption(L"Option 5", L"Description 5"); - radioMenu.AddOption(L"Option 6", L"Description 6"); - - radioMenu.Execute(); - NahidaProject::ChooseDialog::MenuState rmState = radioMenu.GetState(); - - NahidaProject::ChooseDialog::Option select1 = rmState.GetSelectedOptions()[0]; - std::wcout << "SELECTED OPTION: " << select1._displayName << std::endl; - - NahidaProject::ChooseDialog::PromptMenu promptMenu(L"Question 1"); - promptMenu.AddOption(L"Choose 1", L"Description 1"); - promptMenu.AddOption(L"Choose 2", L"Description 2"); - promptMenu.AddOption(L"Choose 3", L"Description 3"); - - promptMenu.Execute(); - NahidaProject::ChooseDialog::MenuState promptMenuState = promptMenu.GetState(); - - NahidaProject::ChooseDialog::Option select2 = promptMenuState.GetSelectedOptions()[0]; - std::wcout << "\r\nSELECTED OPTION: " << select2._displayName << std::endl; - - NahidaProject::TablePrint tablePrint({ "Column1", "Column2", "Column3", "Column4", "Column5" }, { { "Data1", "Data2", "Data3", "Data4", "Data5"}, {"Data6", "Data7", "Data8", "Data9", "Data10"} }); - tablePrint.PrintTable(); - - std::cout << "我神州," << "称华夏。" << NahidaProject::TerminalColor::Yellow << "山川美," << NahidaProject::TerminalColor::Green << "可入画。" << NahidaProject::TerminalColor::Reset << std::endl; - std::cout << "黄河奔," << "长江涌。" << "长城长," << "珠峰耸。" << std::endl; - std::cout << NahidaProject::TerminalColor::BackgroundRed << "台湾岛," << "隔海峡。" << "与大陆," << "是一家。" << NahidaProject::TerminalColor::Reset << std::endl; - std::cout << NahidaProject::TerminalColor::Cyan << "各民族," << NahidaProject::TerminalColor::Yellow << "齐奋发。" << NahidaProject::TerminalColor::Red << "争朝夕," << "兴中华。" << NahidaProject::TerminalColor::Reset << std::endl; - - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Database-DynamicBuildExample/NahidaProject-Database-DynamicBuildExample.vcxproj b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Database-DynamicBuildExample/NahidaProject-Database-DynamicBuildExample.vcxproj deleted file mode 100644 index da76f04..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Database-DynamicBuildExample/NahidaProject-Database-DynamicBuildExample.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {0c4c9927-fffd-429a-bf0a-181d534e0334} - NahidaProjectDatabaseDynamicBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - stdcpp20 - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-Database.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Database-DynamicBuildExample/NahidaProject-Database-DynamicBuildExample.vcxproj.filters b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Database-DynamicBuildExample/NahidaProject-Database-DynamicBuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Database-DynamicBuildExample/NahidaProject-Database-DynamicBuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Database-DynamicBuildExample/NahidaProject-Database-DynamicBuildExample.vcxproj.user b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Database-DynamicBuildExample/NahidaProject-Database-DynamicBuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Database-DynamicBuildExample/NahidaProject-Database-DynamicBuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Database-DynamicBuildExample/main.cpp b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Database-DynamicBuildExample/main.cpp deleted file mode 100644 index ee5c684..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Database-DynamicBuildExample/main.cpp +++ /dev/null @@ -1,41 +0,0 @@ -// NahidaProject-Database-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#include - -#include - -int main(int agc, char** argv) { - NahidaProject::ODBC odbc; - std::cout << odbc.Connect((SQLCHAR*)"SQL Server Datasource", (SQLCHAR*)"sa", (SQLCHAR*)"081105") << std::endl; - std::cout << odbc.ExecuteSQLWithoutResult((SQLCHAR*)"SELECT @@VERSION;") << std::endl; - std::vector> a = odbc.ExecuteSQLWithResult((SQLCHAR*)"SELECT * FROM Northwind.dbo.Products;"); - - for (std::vector item1 : a) { - for (std::string item2 : item1) { - std::cout << item2 << std::endl; - } - } - - odbc.RegisterTransaction("Transaction1", [&]() { - odbc.ExecuteSQLWithoutResult((SQLCHAR*)"DROP TABLE dbo.Products;"); - }); - - odbc.InvokeTransaction("Transaction1"); - odbc.UndoTransaction(); - - odbc.Close(); - - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Generic-DynamicBuildExample/NahidaProject-Generic-DynamicBuildExample.vcxproj b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Generic-DynamicBuildExample/NahidaProject-Generic-DynamicBuildExample.vcxproj deleted file mode 100644 index 0189c04..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Generic-DynamicBuildExample/NahidaProject-Generic-DynamicBuildExample.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {ff3275ab-a387-4455-9f96-016d9043c4b5} - NahidaProjectGenericDynamicBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - stdcpp20 - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-Generic.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Generic-DynamicBuildExample/NahidaProject-Generic-DynamicBuildExample.vcxproj.filters b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Generic-DynamicBuildExample/NahidaProject-Generic-DynamicBuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Generic-DynamicBuildExample/NahidaProject-Generic-DynamicBuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Generic-DynamicBuildExample/NahidaProject-Generic-DynamicBuildExample.vcxproj.user b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Generic-DynamicBuildExample/NahidaProject-Generic-DynamicBuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Generic-DynamicBuildExample/NahidaProject-Generic-DynamicBuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Generic-DynamicBuildExample/main.cpp b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Generic-DynamicBuildExample/main.cpp deleted file mode 100644 index 30157f8..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Generic-DynamicBuildExample/main.cpp +++ /dev/null @@ -1,84 +0,0 @@ -// NahidaProject-Generic-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#include -#include - -#include -#include -#include -#include - -int main(int argc, char** argv) { - NahidaProject::BloomFilter<100> bloomFilter; - - bloomFilter.Set("Object A"); - bloomFilter.Set("Object B"); - bloomFilter.Set("Object C"); - - assert(bloomFilter.Test("Object A") == 1); - - assert(bloomFilter.Test("Object A") == 1); - assert(bloomFilter.Test("Object B") == 1); - assert(bloomFilter.Test("Object C") == 1); - assert(bloomFilter.Test("Object D") == 0); - - assert(bloomFilter.EstimateElementCount(), 3); - - std::cout << "Used bits: " << bloomFilter.GetUsedBits() << std::endl; - std::cout << "Load factor: " << bloomFilter.LoadFactor() << std::endl; - std::cout << "False positive rate: " << bloomFilter.EstimateFalsePositiveRate(3) << std::endl; - bloomFilter.Clear(); - assert(bloomFilter.GetUsedBits() == 0); - - NahidaProject::HTTPRequest::AsyncHTTPRequest request; - request.SetHeader("Authorization", "Bearer 123"); - request.SetHeader("User-Agent", "HTTPRequest/1.0"); - - request.Post("http://postman-echo.com/post", [](const std::string& response) { - std::cout << "Echo post:\n\n" << response << "\n\n"; - }, NahidaProject::HTTPRequest::ContentType::json, R"({"name": "olli", "job": "pro coder"})"); - - while (!request.Server()) { - - } - - request.Get("http://postman-echo.com/get", [](const std::string& response) { - std::cout << response << std::endl; - }); - - while (!request.Server()) { - - } - - std::cout << "" << std::endl; - - NahidaProject::Logger::GetInstance()->Open("TestRead.log"); - NahidaProject::Logger::GetInstance()->SetMax(1024); - - Debug("This is a debug imformation"); - Information("This is a imformation imformation"); - Warning("This is a %s imformation", "warning"); - Error("This is a error imformation"); - // FATAL("Hello NahidaProject"); Will be stop and return -1 - - std::vector a = { 5, 6, 7, 2, 1, 4, 3 }; - std::vector b = { 1, 2, 3, 4, 5, 6, 7 }; - - assert(NahidaProject::SortModule::BubbleSort(a) == b); - assert(NahidaProject::SortModule::InsertSort(a) == b); - assert(NahidaProject::SortModule::SelectSort(a) == b); - - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Mathmatics-DynamicBuildExample/NahidaProject-Mathmatics-DynamicBuildExample.vcxproj b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Mathmatics-DynamicBuildExample/NahidaProject-Mathmatics-DynamicBuildExample.vcxproj deleted file mode 100644 index 376975e..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Mathmatics-DynamicBuildExample/NahidaProject-Mathmatics-DynamicBuildExample.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {4df6bd22-24ec-433c-a2a6-b993ac97d364} - NahidaProjectMathmaticsDynamicBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - stdcpp20 - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-Mathematics.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Mathmatics-DynamicBuildExample/NahidaProject-Mathmatics-DynamicBuildExample.vcxproj.filters b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Mathmatics-DynamicBuildExample/NahidaProject-Mathmatics-DynamicBuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Mathmatics-DynamicBuildExample/NahidaProject-Mathmatics-DynamicBuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Mathmatics-DynamicBuildExample/NahidaProject-Mathmatics-DynamicBuildExample.vcxproj.user b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Mathmatics-DynamicBuildExample/NahidaProject-Mathmatics-DynamicBuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Mathmatics-DynamicBuildExample/NahidaProject-Mathmatics-DynamicBuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Mathmatics-DynamicBuildExample/main.cpp b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Mathmatics-DynamicBuildExample/main.cpp deleted file mode 100644 index c798573..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Mathmatics-DynamicBuildExample/main.cpp +++ /dev/null @@ -1,66 +0,0 @@ -// NahidaProject-Mathematics-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#include -#include -#include -#include - -#include -#include -#include - -int main(int argc, char** argv) { - NahidaProject::BigInteger bigInteger1("1234567891011121314151617181920"); - NahidaProject::BigInteger bigInteger2("5235786413218674561046854651351"); - - assert((bigInteger1 + bigInteger2) == (NahidaProject::BigInteger)"6470354304229795875198471833271"); - assert((bigInteger1 - bigInteger2) == (NahidaProject::BigInteger)"-4001218522207553246895237469431"); - assert((bigInteger1 * bigInteger2) == (NahidaProject::BigInteger)"6463933789952062400179139910666398683694552102531682740773920"); - - NahidaProject::RandomGenerator random; - - assert(random.Next(42) >= 0 or random.Next(42) <= 42); - assert(random.NextInt(1, 100) >= 1 or random.NextInt(1, 100) <= 100); - assert(random.NextDouble() >= 0.0 or random.NextDouble() <= 1.0); - assert(random.NextDouble(1.5, 3.5) >= 1.5 or random.NextDouble(1.5, 3.5) <= 3.5); - - std::vector vec(10); - random.Fill(vec, -10, 10); - for (int item : vec) { - assert(item >= -10 or item <= 10); - } - - std::vector numbers = { 1, 2, 3, 4, 5 }; - random.Shuffle(numbers); - - for (int number : numbers) { - std::cout << number << " "; - } - std::cout << "" << std::endl; - - std::deque data{ 1, 2, 3, 5, 6, 8, 4, 9, 9, 4, 6, 4, 3, 7, 1, 0, 0, 6, 8, 9 }; - NahidaProject::Statistics statistics(data.begin(), data.end()); - - assert(statistics.Count() == 20); - assert(statistics.Maximum() == 9); - assert(statistics.Mean() == 4); - assert(statistics.Minimum() == 0); - assert(statistics.StandardDeviation() == 3); - assert(statistics.Sum() == 95); - assert(statistics.SumOfSquares() == 625); - assert(statistics.Variance() == 15); - - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Other-DynamicBuildExample/NahidaProject-Other-DynamicBuildExample.vcxproj b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Other-DynamicBuildExample/NahidaProject-Other-DynamicBuildExample.vcxproj deleted file mode 100644 index 9719f6e..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Other-DynamicBuildExample/NahidaProject-Other-DynamicBuildExample.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {4949239e-b4c4-4062-8de0-f76cdf292485} - NahidaProjectOtherDynamicBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - stdcpp20 - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-Other.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Other-DynamicBuildExample/NahidaProject-Other-DynamicBuildExample.vcxproj.filters b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Other-DynamicBuildExample/NahidaProject-Other-DynamicBuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Other-DynamicBuildExample/NahidaProject-Other-DynamicBuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Other-DynamicBuildExample/NahidaProject-Other-DynamicBuildExample.vcxproj.user b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Other-DynamicBuildExample/NahidaProject-Other-DynamicBuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Other-DynamicBuildExample/NahidaProject-Other-DynamicBuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Other-DynamicBuildExample/main.cpp b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Other-DynamicBuildExample/main.cpp deleted file mode 100644 index 8f9ca91..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Other-DynamicBuildExample/main.cpp +++ /dev/null @@ -1,21 +0,0 @@ -// NahidaProject-Other-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#include -#include - -int main(int argc, char** argv) { - std::cout << NahidaProject::CowSay::Cow("Moo") << std::endl; - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Serialization-DynamicBuildExample/NahidaProject-Serialization-DynamicBuildExample.vcxproj b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Serialization-DynamicBuildExample/NahidaProject-Serialization-DynamicBuildExample.vcxproj deleted file mode 100644 index b62dee0..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Serialization-DynamicBuildExample/NahidaProject-Serialization-DynamicBuildExample.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {a94af18b-6503-4367-ae83-f8b51e9b013a} - NahidaProjectSerializationDynamicBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - stdcpp20 - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-Serialization.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Serialization-DynamicBuildExample/NahidaProject-Serialization-DynamicBuildExample.vcxproj.filters b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Serialization-DynamicBuildExample/NahidaProject-Serialization-DynamicBuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Serialization-DynamicBuildExample/NahidaProject-Serialization-DynamicBuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Serialization-DynamicBuildExample/NahidaProject-Serialization-DynamicBuildExample.vcxproj.user b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Serialization-DynamicBuildExample/NahidaProject-Serialization-DynamicBuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Serialization-DynamicBuildExample/NahidaProject-Serialization-DynamicBuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Serialization-DynamicBuildExample/main.cpp b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Serialization-DynamicBuildExample/main.cpp deleted file mode 100644 index c39a66d..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Serialization-DynamicBuildExample/main.cpp +++ /dev/null @@ -1,126 +0,0 @@ -// NahidaProject-Serialization-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - - -int main(int argc, char** argv) { - std::ofstream ofs("TestRead.csv", std::ios::out | std::ios::app); - ofs << R"(a,b,c -1,2,3 -4,5,6 -7,8,9)" << std::endl; - ofs.close(); - - std::ifstream file("TestRead.csv"); - NahidaProject::CSV::CSV csv(file); - - for (auto& row : csv) { - for (auto& field : row) { - std::cout << field << " | "; - } - std::cout << "" << std::endl; - } - - ::remove("TestRead.csv"); - - NahidaProject::INIWriter writer; - writer.SetFileValue("Section1", "Key1", "Value1"); - writer.SetFileValue("Section1", "Key2", "Value2"); - writer.SetFileValue("Section1", "Key3", "Value3"); - writer.SetFileValue("Section2", "Key1", "Value1"); - writer.SetFileValue("Section2", "Key2", "Value2"); - writer.SetFileValue("Section2", "Key3", "Value3"); - - writer.WriteINIFile("TestRead.ini"); - - NahidaProject::INIReader reader; - reader.ReadFile("TestRead.ini"); - - assert(reader.GetValue("Section1", "Key1") == "Value1"); - assert(reader.GetValue("Section1", "Key2") == "Value2"); - assert(reader.GetValue("Section1", "Key3") == "Value3"); - assert(reader.GetValue("Section2", "Key1") == "Value1"); - assert(reader.GetValue("Section2", "Key2") == "Value2"); - assert(reader.GetValue("Section2", "Key3") == "Value3"); - - ::remove("TestRead.ini"); - - NahidaProject::JSON json; - json.Parse(R"({"name": "Jack", "age": 18, "area": ["c++", "php", "python", "go"], "hobby": {"hobby1": "reading", "hobby2": "coding", "hobby3": "basketball"}})"); - assert(json["name"].ToString() == "\"Jack\""); - assert(json["age"].ToString() == "18"); - assert(json["area"].ToString() == R"(["c++","php","python","go"])"); - assert(json["hobby"]["hobby1"].ToString() == "\"reading\""); - assert(json["hobby"]["hobby2"].ToString() == "\"coding\""); - assert(json["hobby"]["hobby3"].ToString() == "\"basketball\""); - - json.Clear(); - - NahidaProject::XMLWriter xmlWriter; - NahidaProject::XMLWriterNode& documentNode = xmlWriter["DocumentNode"]; - documentNode["Key0"]("Index", "0")("Size", "test"); - documentNode["Key1"]("Index", "1")("Size", "test"); - documentNode["Key2"]("Index", "2")("Size", "test"); - - documentNode["Key0"]["AnotherKey"] = "Value0"; - documentNode["Key1"]["AnotherKey"] = "Value1"; - documentNode["Key2"]["AnotherKey"] = "Value2"; - - documentNode["Key0"]["AnotherKey"]["Another"]("Attribute0", "Value0") = "Test0"; - documentNode["Key1"]["AnotherKey"]["Another"]("Attribute0", "Value0") = "Test1"; - - xmlWriter.OutputFile("TestRead.xml"); - - /* - XMLReader::XMLNode xmlNode; - std::cout << xmlNode.FromFile("TestRead.xml"); - xmlNode.Print(); - XMLReader::XMLNode* node2 = xmlNode.GetChildPtrByName("xml"); - XMLReader::XMLNode* node3 = node2->GetChildPtrByName("DocumentNode"); - XMLReader::XMLNode* node4 = node3->GetChildPtrByName("Key0"); - std::cout << node4->GetAttribute("Index") << std::endl; - */ - ::remove("TestRead.xml"); - - std::ofstream ofs1("TestRead.yml", std::ios::out | std::ios::app); - ofs1 << R"(text: How are you? I am fine Thank you -number: 78.91 -boolValue: true -outer_object: - inner_object: - name: Ningguang - name: Ganyu)" << std::endl; - ofs1.close(); - - NahidaProject::YAML::YAML yaml("TestRead.yml"); - assert(yaml["text"].cast() == "How are you? I am fine Thank you"); - assert(yaml["number"].cast() == 78.91); - assert(yaml["boolValue"].cast()); - assert(yaml["outer_object"]["inner_object"]["name"].cast() == "Ningguang"); - assert(yaml["outer_object"]["name"].cast() == "Ganyu"); - - ::remove("TestRead.yml"); - - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Thread-DynamicBuildExample/NahidaProject-Thread-DynamicBuildExample.vcxproj b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Thread-DynamicBuildExample/NahidaProject-Thread-DynamicBuildExample.vcxproj deleted file mode 100644 index 5f0d6e6..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Thread-DynamicBuildExample/NahidaProject-Thread-DynamicBuildExample.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {8d8ff154-0920-416f-ab6b-30e02ec0f12b} - NahidaProjectThreadDynamicBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - stdcpp20 - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-Thread.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Thread-DynamicBuildExample/NahidaProject-Thread-DynamicBuildExample.vcxproj.filters b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Thread-DynamicBuildExample/NahidaProject-Thread-DynamicBuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Thread-DynamicBuildExample/NahidaProject-Thread-DynamicBuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Thread-DynamicBuildExample/NahidaProject-Thread-DynamicBuildExample.vcxproj.user b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Thread-DynamicBuildExample/NahidaProject-Thread-DynamicBuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Thread-DynamicBuildExample/NahidaProject-Thread-DynamicBuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Thread-DynamicBuildExample/main.cpp b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Thread-DynamicBuildExample/main.cpp deleted file mode 100644 index cbb010a..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-Thread-DynamicBuildExample/main.cpp +++ /dev/null @@ -1,105 +0,0 @@ -// NahidaProject-Thread-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#include -#include - -#include -#include -#include -#include - -SetEventBusEvent(TestEvent); - -class HandlerTest : public NahidaProject::EventBus::EventBusHandler { -private: - bool _success; -public: - HandlerTest() : _success(false) { - - } - - void OnEvent(const TestEvent&) override { - _success ^= true; - } - - inline bool isSuccess() const { - return _success; - } -}; - -constexpr float Calculate(float value, int scalar) { - return value * static_cast(scalar); -} - -int main(int argc, char** argv) { - NahidaProject::EventBus::EventBus eventBus; - HandlerTest handler; - TestEvent event; - - eventBus.Subscribe(handler); - eventBus.Publish(event); - - if (!handler.isSuccess()) { - std::cerr << "Failed to execute the handler" << std::endl; - } - - eventBus.Unsubscribe(handler); - eventBus.Publish(event); - if (!handler.isSuccess()) { - std::cerr << "Failed to unsubscribe" << std::endl; - } - - std::cout << "Executed the handler" << std::endl; - - NahidaProject::MemoryPool pool(32, 10); - std::cout << pool.PrintFreeBlocks() << std::endl; - void* ptr1 = pool.Allocate(); - void* ptr2 = pool.Allocate(); - void* ptr3 = pool.Allocate(); - std::cout << pool.PrintFreeBlocks() << std::endl; - pool.Deallocate(ptr2); - std::cout << pool.PrintFreeBlocks() << std::endl; - void* ptr4 = pool.Allocate(); - std::cout << pool.PrintFreeBlocks() << std::endl; - - NahidaProject::Signal signal; - auto connection = signal.Connect([](int a) { - std::cout << "Current Number is " << a << std::endl; - }); - - signal(20); - signal(50); - connection.Disconnect(); - - NahidaProject::ThreadPool::SafeQueue::ThreadPool threadPool{}; - - constexpr float num1 = 12.25f; - constexpr float num2 = 17.75f; - constexpr int scalar = 2; - auto foo = threadPool.Enqueue([num1] { - return num1 * static_cast(scalar); - }); - - auto bar = threadPool.Enqueue(Calculate, num2, scalar); - - const auto result_foo = foo.get(); - const auto result_bar = bar.get(); - - std::cout << result_foo << std::endl; - std::cout << result_bar << std::endl; - std::cout << result_foo + result_bar << std::endl; - - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-UnitTest-DynamicBuildExample/NahidaProject-UnitTest-DynamicBuildExample.vcxproj b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-UnitTest-DynamicBuildExample/NahidaProject-UnitTest-DynamicBuildExample.vcxproj deleted file mode 100644 index 7aaa1d5..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-UnitTest-DynamicBuildExample/NahidaProject-UnitTest-DynamicBuildExample.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {453d2957-fc8e-43ad-9d49-4f30737b213d} - NahidaProjectUnitTestDynamicBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - stdcpp20 - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-UnitTest.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-UnitTest-DynamicBuildExample/NahidaProject-UnitTest-DynamicBuildExample.vcxproj.filters b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-UnitTest-DynamicBuildExample/NahidaProject-UnitTest-DynamicBuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-UnitTest-DynamicBuildExample/NahidaProject-UnitTest-DynamicBuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-UnitTest-DynamicBuildExample/NahidaProject-UnitTest-DynamicBuildExample.vcxproj.user b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-UnitTest-DynamicBuildExample/NahidaProject-UnitTest-DynamicBuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-UnitTest-DynamicBuildExample/NahidaProject-UnitTest-DynamicBuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-UnitTest-DynamicBuildExample/main.cpp b/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-UnitTest-DynamicBuildExample/main.cpp deleted file mode 100644 index f4c2201..0000000 --- a/NahidaProject.BuildExample/DynamicLibrary/NahidaProject-UnitTest-DynamicBuildExample/main.cpp +++ /dev/null @@ -1,87 +0,0 @@ -// NahidaProject-UnitTest-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#define _CRT_SECURE_NO_WARNINGS - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include - -using namespace std; - -class Calculator { -public: - virtual int Add(int a, int b) = 0; -}; - -class MockCalculator : public Calculator { -public: - MockMethod(int, Add, (int, int)); -}; - -TESTCASE(BenchmarkTestTest) { - string val = "3.141592653589793238462643383279502884"; - int count = 1000000; - - auto rt = NahidaProject::NahidaBenchmarkTest::Time(count, { {"atof", [val]() {double d = atof(val.data()); }},{"strtod", [val]() {double d = strtod(val.data(), nullptr); }},{"sscanf", [val]() {double d; sscanf(val.data(), "%lf", &d); }},{"stod", [val]() {double d = stod(val, nullptr); }} }); - - auto comp = NahidaProject::NahidaBenchmarkTest::Compare(rt); - NahidaProject::NahidaBenchmarkTest::PrintResult(comp); - cout << endl << "runtimes in milliseconds:" << endl; - NahidaProject::NahidaBenchmarkTest::PrintResult(comp); - cout << endl << "runtimes with min, max, mean, variance and standard deviation" << endl; - cout << endl << "nanoseconds" << endl; - NahidaProject::NahidaBenchmarkTest::PrintResult(rt); - cout << endl << "microseconds" << endl; - NahidaProject::NahidaBenchmarkTest::PrintResult(rt, 3); - cout << endl << "milliseconds" << endl; - NahidaProject::NahidaBenchmarkTest::PrintResult(rt, 5); - - if (NahidaProject::NahidaBenchmarkTest::WriteResult("sample", rt)) { - cout << endl << "successfully wrote runtimes to sample-*.txt files" << endl << endl; - } - else { - cerr << endl << "there were problems: " << strerror(errno) << endl << endl; - } -} - -TESTCASE(MockTestTest) { - MockCalculator calculator; - When(calculator.Add).Return(3); - JUDGE_EQUAL(calculator.Add(1, 2), 3); -} - -TESTCASE(UnitTestMacroTest) { - JUDGE_EQUAL(78 + 13, 91); - JUDGE_NOTEQUAL(1 + 1, 10086); - JUDGE_TRUE(true); - JUDGE_FALSE(false); - JUDGE_THROWEXCEPTION(throw std::runtime_error("This is a test exception"), std::runtime_error); - JUDGE_TIMEOUT([]() { - std::this_thread::sleep_for(std::chrono::seconds(3)); - }, 5000); -} - -int main(int argc, char** argv) { - NahidaProject::NahidaUnitTest::RunAllTests(); - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/README.md b/NahidaProject.BuildExample/README.md deleted file mode 100644 index a4e2005..0000000 --- a/NahidaProject.BuildExample/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# BuildExample - -## - - NahidaProject Microsoft Visual Studio е - -ǿҽÿû NahidaProject ɺִЩĿ̬ӿͶ̬ӿá - -⣬뼰ʱϱ - -û⣬뾡á - -## - -* һĿ > > C/C++ > > ӰĿ¼ include ļС -* > > ӿĿ¼ lib ļС -* ٴε > > -* ھ̬ӿļ `LibNahidaProject-XXX-IMPLEMENT` ׺ľ̬ӿ⡣벢۲н -* ڶ̬ӿļΪ `LibNahidaProject-XXX` ľ̬ӿ⡣ -* ʹö̬ӿʱ bin ļҵӦĶ̬ӿļ붯̬ӿɵĿִļһ𡣲۲н -* ʹĸ롢Ƿ -* 뼰ʱ \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Console-BuildExample/NahidaProject-Console-BuildExample.vcxproj b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Console-BuildExample/NahidaProject-Console-BuildExample.vcxproj deleted file mode 100644 index 763cd8c..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Console-BuildExample/NahidaProject-Console-BuildExample.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {1fe1e600-d455-4d87-87de-09e3da2b37e9} - NahidaProjectConsoleBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - stdcpp20 - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-Console-IMPLEMENT.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Console-BuildExample/NahidaProject-Console-BuildExample.vcxproj.filters b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Console-BuildExample/NahidaProject-Console-BuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Console-BuildExample/NahidaProject-Console-BuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Console-BuildExample/NahidaProject-Console-BuildExample.vcxproj.user b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Console-BuildExample/NahidaProject-Console-BuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Console-BuildExample/NahidaProject-Console-BuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Console-BuildExample/main.cpp b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Console-BuildExample/main.cpp deleted file mode 100644 index d9b57bb..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Console-BuildExample/main.cpp +++ /dev/null @@ -1,70 +0,0 @@ -// NahidaProject-Console-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 - -#include -#include -#include -#include - -int main(int argc, char **argv) { - NahidaProject::ChooseDialog::CheckboxMenu cbm(L"Choose 1", 5); - cbm.AddOption(L"Option 1", L"desc1", TRUE); - cbm.AddOption(L"Option 2", L"desc2", TRUE); - cbm.AddOption(L"Option 3", L"desc3", TRUE); - cbm.AddOption(L"Option 4", L"desc4"); - cbm.AddOption(L"Option 5", L"desc5"); - cbm.AddOption(L"Option 6", L"desc6"); - - cbm.Execute(); - NahidaProject::ChooseDialog::MenuState cbmState = cbm.GetState(); - - std::wcout << L"OPTION\t DESCRIPTION\t\t SELECTED" << std::endl; - for (NahidaProject::ChooseDialog::Option opt : cbmState.options) { - std::wcout << opt._displayName << L"\t " << opt._description << L"\t\t " << opt.IsSelected() << std::endl; - } - - NahidaProject::ChooseDialog::RadioMenu radioMenu(L"Choose 2"); - radioMenu.AddOption(L"Option 1", L"Description 1"); - radioMenu.AddOption(L"Option 2", L"Description 2"); - radioMenu.AddOption(L"Option 3", L"Description 3"); - radioMenu.AddOption(L"Option 4", L"Description 4"); - radioMenu.AddOption(L"Option 5", L"Description 5"); - radioMenu.AddOption(L"Option 6", L"Description 6"); - - radioMenu.Execute(); - NahidaProject::ChooseDialog::MenuState rmState = radioMenu.GetState(); - - NahidaProject::ChooseDialog::Option select1 = rmState.GetSelectedOptions()[0]; - std::wcout << "SELECTED OPTION: " << select1._displayName << std::endl; - - NahidaProject::ChooseDialog::PromptMenu promptMenu(L"Question 1"); - promptMenu.AddOption(L"Choose 1", L"Description 1"); - promptMenu.AddOption(L"Choose 2", L"Description 2"); - promptMenu.AddOption(L"Choose 3", L"Description 3"); - - promptMenu.Execute(); - NahidaProject::ChooseDialog::MenuState promptMenuState = promptMenu.GetState(); - - NahidaProject::ChooseDialog::Option select2 = promptMenuState.GetSelectedOptions()[0]; - std::wcout << "\r\nSELECTED OPTION: " << select2._displayName << std::endl; - - NahidaProject::TablePrint tablePrint({ "Column1", "Column2", "Column3", "Column4", "Column5" }, { { "Data1", "Data2", "Data3", "Data4", "Data5"}, {"Data6", "Data7", "Data8", "Data9", "Data10"} }); - tablePrint.PrintTable(); - - std::cout << "我神州," << "称华夏。" << NahidaProject::TerminalColor::Yellow << "山川美," << NahidaProject::TerminalColor::Green << "可入画。" << NahidaProject::TerminalColor::Reset << std::endl; - std::cout << "黄河奔," << "长江涌。" << "长城长," << "珠峰耸。" << std::endl; - std::cout << NahidaProject::TerminalColor::BackgroundRed << "台湾岛," << "隔海峡。" << "与大陆," << "是一家。" << NahidaProject::TerminalColor::Reset << std::endl; - std::cout << NahidaProject::TerminalColor::Cyan << "各民族," << NahidaProject::TerminalColor::Yellow << "齐奋发。" << NahidaProject::TerminalColor::Red << "争朝夕," << "兴中华。" << NahidaProject::TerminalColor::Reset << std::endl; - - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Database-BuildExample/NahidaProject-Database-BuildExample.vcxproj b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Database-BuildExample/NahidaProject-Database-BuildExample.vcxproj deleted file mode 100644 index 694246a..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Database-BuildExample/NahidaProject-Database-BuildExample.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {611d584b-6c3b-4431-a919-3cd6aa41f537} - NahidaProjectDatabaseBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - stdcpp20 - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-Database-IMPLEMENT.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Database-BuildExample/NahidaProject-Database-BuildExample.vcxproj.filters b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Database-BuildExample/NahidaProject-Database-BuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Database-BuildExample/NahidaProject-Database-BuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Database-BuildExample/NahidaProject-Database-BuildExample.vcxproj.user b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Database-BuildExample/NahidaProject-Database-BuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Database-BuildExample/NahidaProject-Database-BuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Database-BuildExample/main.cpp b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Database-BuildExample/main.cpp deleted file mode 100644 index 69fd5b7..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Database-BuildExample/main.cpp +++ /dev/null @@ -1,41 +0,0 @@ -// NahidaProject-Database-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#include - -#include - -int main(int agc, char **argv){ - NahidaProject::ODBC odbc; - std::cout << odbc.Connect((SQLCHAR*)"SQL Server Datasource", (SQLCHAR*)"sa", (SQLCHAR*)"081105") << std::endl; - std::cout << odbc.ExecuteSQLWithoutResult((SQLCHAR*)"SELECT @@VERSION;") << std::endl; - std::vector> a = odbc.ExecuteSQLWithResult((SQLCHAR*)"SELECT * FROM Northwind.dbo.Products;"); - - for (std::vector item1 : a) { - for (std::string item2 : item1) { - std::cout << item2 << std::endl; - } - } - - odbc.RegisterTransaction("Transaction1", [&]() { - odbc.ExecuteSQLWithoutResult((SQLCHAR*)"DROP TABLE dbo.Products;"); - }); - - odbc.InvokeTransaction("Transaction1"); - odbc.UndoTransaction(); - - odbc.Close(); - - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/NahidaProject-Generic-BuildExample.vcxproj b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/NahidaProject-Generic-BuildExample.vcxproj deleted file mode 100644 index c367cde..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/NahidaProject-Generic-BuildExample.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {564e3d40-1dbe-474a-9682-e01d5b9dca3b} - NahidaProjectGenericBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - stdcpp20 - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-Generic-IMPLEMENT.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/NahidaProject-Generic-BuildExample.vcxproj.filters b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/NahidaProject-Generic-BuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/NahidaProject-Generic-BuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/NahidaProject-Generic-BuildExample.vcxproj.user b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/NahidaProject-Generic-BuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/NahidaProject-Generic-BuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/TestRead.log b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/TestRead.log deleted file mode 100644 index be63e25..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/TestRead.log +++ /dev/null @@ -1,4 +0,0 @@ -[2025-08-25 20:08:35] [DEBUG] main.cpp[LINE 59]This is a debug imformation -[2025-08-25 20:08:35] [INFO] main.cpp[LINE 60]This is a imformation imformation -[2025-08-25 20:08:35] [WARN] main.cpp[LINE 61]This is a warning imformation -[2025-08-25 20:08:35] [ERROR] main.cpp[LINE 62]This is a error imformation diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/main.cpp b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/main.cpp deleted file mode 100644 index 76731c6..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Generic-BuildExample/main.cpp +++ /dev/null @@ -1,84 +0,0 @@ -// NahidaProject-Generic-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#include -#include - -#include -#include -#include -#include - -int main(int argc, char ** argv) { - NahidaProject::BloomFilter<100> bloomFilter; - - bloomFilter.Set("Object A"); - bloomFilter.Set("Object B"); - bloomFilter.Set("Object C"); - - assert(bloomFilter.Test("Object A") == 1); - - assert(bloomFilter.Test("Object A") == 1); - assert(bloomFilter.Test("Object B") == 1); - assert(bloomFilter.Test("Object C") == 1); - assert(bloomFilter.Test("Object D") == 0); - - assert(bloomFilter.EstimateElementCount(), 3); - - std::cout << "Used bits: " << bloomFilter.GetUsedBits() << std::endl; - std::cout << "Load factor: " << bloomFilter.LoadFactor() << std::endl; - std::cout << "False positive rate: " << bloomFilter.EstimateFalsePositiveRate(3) << std::endl; - bloomFilter.Clear(); - assert(bloomFilter.GetUsedBits() == 0); - - NahidaProject::HTTPRequest::AsyncHTTPRequest request; - request.SetHeader("Authorization", "Bearer 123"); - request.SetHeader("User-Agent", "HTTPRequest/1.0"); - - request.Post("http://postman-echo.com/post", [](const std::string& response) { - std::cout << "Echo post:\n\n" << response << "\n\n"; - }, NahidaProject::HTTPRequest::ContentType::json, R"({"name": "olli", "job": "pro coder"})"); - - while (!request.Server()) { - - } - - request.Get("http://postman-echo.com/get", [](const std::string& response) { - std::cout << response << std::endl; - }); - - while (!request.Server()) { - - } - - std::cout << "" << std::endl; - - NahidaProject::Logger::GetInstance()->Open("TestRead.log"); - NahidaProject::Logger::GetInstance()->SetMax(1024); - - Debug("This is a debug imformation"); - Information("This is a imformation imformation"); - Warning("This is a %s imformation", "warning"); - Error("This is a error imformation"); - // FATAL("Hello NahidaProject"); Will be stop and return -1 - - std::vector a = { 5, 6, 7, 2, 1, 4, 3 }; - std::vector b = { 1, 2, 3, 4, 5, 6, 7 }; - - assert(NahidaProject::SortModule::BubbleSort(a) == b); - assert(NahidaProject::SortModule::InsertSort(a) == b); - assert(NahidaProject::SortModule::SelectSort(a) == b); - - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Mathematics-BuildExample/NahidaProject-Mathematics-BuildExample.vcxproj b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Mathematics-BuildExample/NahidaProject-Mathematics-BuildExample.vcxproj deleted file mode 100644 index cb072f1..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Mathematics-BuildExample/NahidaProject-Mathematics-BuildExample.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {4912051c-e982-480e-ad1e-87dd20992a18} - NahidaProjectMathematicsBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - stdcpp20 - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-Mathematics-IMPLEMENT.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Mathematics-BuildExample/NahidaProject-Mathematics-BuildExample.vcxproj.filters b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Mathematics-BuildExample/NahidaProject-Mathematics-BuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Mathematics-BuildExample/NahidaProject-Mathematics-BuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Mathematics-BuildExample/NahidaProject-Mathematics-BuildExample.vcxproj.user b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Mathematics-BuildExample/NahidaProject-Mathematics-BuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Mathematics-BuildExample/NahidaProject-Mathematics-BuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Mathematics-BuildExample/main.cpp b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Mathematics-BuildExample/main.cpp deleted file mode 100644 index 00c5a34..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Mathematics-BuildExample/main.cpp +++ /dev/null @@ -1,66 +0,0 @@ -// NahidaProject-Mathematics-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#include -#include -#include -#include - -#include -#include -#include - -int main(int argc, char ** argv) { - NahidaProject::BigInteger bigInteger1("1234567891011121314151617181920"); - NahidaProject::BigInteger bigInteger2("5235786413218674561046854651351"); - - assert((bigInteger1 + bigInteger2) == (NahidaProject::BigInteger)"6470354304229795875198471833271"); - assert((bigInteger1 - bigInteger2) == (NahidaProject::BigInteger)"-4001218522207553246895237469431"); - assert((bigInteger1 * bigInteger2) == (NahidaProject::BigInteger)"6463933789952062400179139910666398683694552102531682740773920"); - - NahidaProject::RandomGenerator random; - - assert(random.Next(42) >= 0 or random.Next(42) <= 42); - assert(random.NextInt(1, 100) >= 1 or random.NextInt(1, 100) <= 100); - assert(random.NextDouble() >= 0.0 or random.NextDouble() <= 1.0); - assert(random.NextDouble(1.5, 3.5) >= 1.5 or random.NextDouble(1.5, 3.5) <= 3.5); - - std::vector vec(10); - random.Fill(vec, -10, 10); - for (int item : vec) { - assert(item >= -10 or item <= 10); - } - - std::vector numbers = { 1, 2, 3, 4, 5 }; - random.Shuffle(numbers); - - for (int number : numbers) { - std::cout << number << " "; - } - std::cout << "" << std::endl; - - std::deque data{ 1, 2, 3, 5, 6, 8, 4, 9, 9, 4, 6, 4, 3, 7, 1, 0, 0, 6, 8, 9 }; - NahidaProject::Statistics statistics(data.begin(), data.end()); - - assert(statistics.Count() == 20); - assert(statistics.Maximum() == 9); - assert(statistics.Mean() == 4); - assert(statistics.Minimum() == 0); - assert(statistics.StandardDeviation() == 3); - assert(statistics.Sum() == 95); - assert(statistics.SumOfSquares() == 625); - assert(statistics.Variance() == 15); - - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Other-BuildExample/NahidaProject-Other-BuildExample.vcxproj b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Other-BuildExample/NahidaProject-Other-BuildExample.vcxproj deleted file mode 100644 index 214f8e7..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Other-BuildExample/NahidaProject-Other-BuildExample.vcxproj +++ /dev/null @@ -1,134 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {0a4a2d60-5612-4073-86a5-a991fd77f2c2} - NahidaProjectOtherBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-Other-IMPLEMENT.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Other-BuildExample/NahidaProject-Other-BuildExample.vcxproj.filters b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Other-BuildExample/NahidaProject-Other-BuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Other-BuildExample/NahidaProject-Other-BuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Other-BuildExample/NahidaProject-Other-BuildExample.vcxproj.user b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Other-BuildExample/NahidaProject-Other-BuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Other-BuildExample/NahidaProject-Other-BuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Other-BuildExample/main.cpp b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Other-BuildExample/main.cpp deleted file mode 100644 index 601305e..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Other-BuildExample/main.cpp +++ /dev/null @@ -1,21 +0,0 @@ -// NahidaProject-Other-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#include -#include - -int main(int argc, char** argv){ - std::cout << NahidaProject::CowSay::Cow("Moo") << std::endl; - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/NahidaProject-Serialization-BuildExample.vcxproj b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/NahidaProject-Serialization-BuildExample.vcxproj deleted file mode 100644 index 75a9149..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/NahidaProject-Serialization-BuildExample.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {7b64f4c4-529c-435a-858f-7aca4db71a19} - NahidaProjectSerializationBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - stdcpp20 - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-Serialization-IMPLEMENT.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/NahidaProject-Serialization-BuildExample.vcxproj.filters b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/NahidaProject-Serialization-BuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/NahidaProject-Serialization-BuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/NahidaProject-Serialization-BuildExample.vcxproj.user b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/NahidaProject-Serialization-BuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/NahidaProject-Serialization-BuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/TestRead.csv b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/TestRead.csv deleted file mode 100644 index 071ba6b..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/TestRead.csv +++ /dev/null @@ -1,8 +0,0 @@ -a,b,c -1,2,3 -4,5,6 -7,8,9 -a,b,c -1,2,3 -4,5,6 -7,8,9 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/main.cpp b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/main.cpp deleted file mode 100644 index c39a66d..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Serialization-BuildExample/main.cpp +++ /dev/null @@ -1,126 +0,0 @@ -// NahidaProject-Serialization-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - - -int main(int argc, char** argv) { - std::ofstream ofs("TestRead.csv", std::ios::out | std::ios::app); - ofs << R"(a,b,c -1,2,3 -4,5,6 -7,8,9)" << std::endl; - ofs.close(); - - std::ifstream file("TestRead.csv"); - NahidaProject::CSV::CSV csv(file); - - for (auto& row : csv) { - for (auto& field : row) { - std::cout << field << " | "; - } - std::cout << "" << std::endl; - } - - ::remove("TestRead.csv"); - - NahidaProject::INIWriter writer; - writer.SetFileValue("Section1", "Key1", "Value1"); - writer.SetFileValue("Section1", "Key2", "Value2"); - writer.SetFileValue("Section1", "Key3", "Value3"); - writer.SetFileValue("Section2", "Key1", "Value1"); - writer.SetFileValue("Section2", "Key2", "Value2"); - writer.SetFileValue("Section2", "Key3", "Value3"); - - writer.WriteINIFile("TestRead.ini"); - - NahidaProject::INIReader reader; - reader.ReadFile("TestRead.ini"); - - assert(reader.GetValue("Section1", "Key1") == "Value1"); - assert(reader.GetValue("Section1", "Key2") == "Value2"); - assert(reader.GetValue("Section1", "Key3") == "Value3"); - assert(reader.GetValue("Section2", "Key1") == "Value1"); - assert(reader.GetValue("Section2", "Key2") == "Value2"); - assert(reader.GetValue("Section2", "Key3") == "Value3"); - - ::remove("TestRead.ini"); - - NahidaProject::JSON json; - json.Parse(R"({"name": "Jack", "age": 18, "area": ["c++", "php", "python", "go"], "hobby": {"hobby1": "reading", "hobby2": "coding", "hobby3": "basketball"}})"); - assert(json["name"].ToString() == "\"Jack\""); - assert(json["age"].ToString() == "18"); - assert(json["area"].ToString() == R"(["c++","php","python","go"])"); - assert(json["hobby"]["hobby1"].ToString() == "\"reading\""); - assert(json["hobby"]["hobby2"].ToString() == "\"coding\""); - assert(json["hobby"]["hobby3"].ToString() == "\"basketball\""); - - json.Clear(); - - NahidaProject::XMLWriter xmlWriter; - NahidaProject::XMLWriterNode& documentNode = xmlWriter["DocumentNode"]; - documentNode["Key0"]("Index", "0")("Size", "test"); - documentNode["Key1"]("Index", "1")("Size", "test"); - documentNode["Key2"]("Index", "2")("Size", "test"); - - documentNode["Key0"]["AnotherKey"] = "Value0"; - documentNode["Key1"]["AnotherKey"] = "Value1"; - documentNode["Key2"]["AnotherKey"] = "Value2"; - - documentNode["Key0"]["AnotherKey"]["Another"]("Attribute0", "Value0") = "Test0"; - documentNode["Key1"]["AnotherKey"]["Another"]("Attribute0", "Value0") = "Test1"; - - xmlWriter.OutputFile("TestRead.xml"); - - /* - XMLReader::XMLNode xmlNode; - std::cout << xmlNode.FromFile("TestRead.xml"); - xmlNode.Print(); - XMLReader::XMLNode* node2 = xmlNode.GetChildPtrByName("xml"); - XMLReader::XMLNode* node3 = node2->GetChildPtrByName("DocumentNode"); - XMLReader::XMLNode* node4 = node3->GetChildPtrByName("Key0"); - std::cout << node4->GetAttribute("Index") << std::endl; - */ - ::remove("TestRead.xml"); - - std::ofstream ofs1("TestRead.yml", std::ios::out | std::ios::app); - ofs1 << R"(text: How are you? I am fine Thank you -number: 78.91 -boolValue: true -outer_object: - inner_object: - name: Ningguang - name: Ganyu)" << std::endl; - ofs1.close(); - - NahidaProject::YAML::YAML yaml("TestRead.yml"); - assert(yaml["text"].cast() == "How are you? I am fine Thank you"); - assert(yaml["number"].cast() == 78.91); - assert(yaml["boolValue"].cast()); - assert(yaml["outer_object"]["inner_object"]["name"].cast() == "Ningguang"); - assert(yaml["outer_object"]["name"].cast() == "Ganyu"); - - ::remove("TestRead.yml"); - - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-DynamicInjector-BuildExample/NahidaProject-System-DynamicInjector-BuildExample.vcxproj b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-DynamicInjector-BuildExample/NahidaProject-System-DynamicInjector-BuildExample.vcxproj deleted file mode 100644 index b07f4ab..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-DynamicInjector-BuildExample/NahidaProject-System-DynamicInjector-BuildExample.vcxproj +++ /dev/null @@ -1,134 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {57a71f29-eac5-4a75-aff3-59309d746ee1} - NahidaProjectSystemDynamicInjectorBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-System-IMPLEMENT.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-DynamicInjector-BuildExample/NahidaProject-System-DynamicInjector-BuildExample.vcxproj.filters b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-DynamicInjector-BuildExample/NahidaProject-System-DynamicInjector-BuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-DynamicInjector-BuildExample/NahidaProject-System-DynamicInjector-BuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-DynamicInjector-BuildExample/NahidaProject-System-DynamicInjector-BuildExample.vcxproj.user b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-DynamicInjector-BuildExample/NahidaProject-System-DynamicInjector-BuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-DynamicInjector-BuildExample/NahidaProject-System-DynamicInjector-BuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-DynamicInjector-BuildExample/main.cpp b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-DynamicInjector-BuildExample/main.cpp deleted file mode 100644 index 689de6b..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-DynamicInjector-BuildExample/main.cpp +++ /dev/null @@ -1,21 +0,0 @@ -// NahidaProject-System-DynamicInjector-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#include -#include - -int main(int argc, char** argv){ - NahidaProject::DynamicLibraryInjector dynamicLibraryInjector; - dynamicLibraryInjector.Inject("ExecutableFile", "F:\\52406\\Microsoft Visual Studio Projects\\NahidaProject\\BuildExample\\StaticLibrary\\NahidaProject-System-BuildExample\\TestMaterials\\DynamicLinkedLibrary.dll"); -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-RegisterTable-BuildExample/NahidaProject-System-RegisterTable-BuildExample.vcxproj b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-RegisterTable-BuildExample/NahidaProject-System-RegisterTable-BuildExample.vcxproj deleted file mode 100644 index b68f4ac..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-RegisterTable-BuildExample/NahidaProject-System-RegisterTable-BuildExample.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {b8841332-02b5-40ba-a0d2-c05a77b1f6c2} - NahidaProjectSystemRegisterTableBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - stdcpp20 - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-System-IMPLEMENT.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-RegisterTable-BuildExample/NahidaProject-System-RegisterTable-BuildExample.vcxproj.filters b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-RegisterTable-BuildExample/NahidaProject-System-RegisterTable-BuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-RegisterTable-BuildExample/NahidaProject-System-RegisterTable-BuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-RegisterTable-BuildExample/NahidaProject-System-RegisterTable-BuildExample.vcxproj.user b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-RegisterTable-BuildExample/NahidaProject-System-RegisterTable-BuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-RegisterTable-BuildExample/NahidaProject-System-RegisterTable-BuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-RegisterTable-BuildExample/main.cpp b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-RegisterTable-BuildExample/main.cpp deleted file mode 100644 index d601d9d..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-RegisterTable-BuildExample/main.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// NahidaProject-System-RegisterTable-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#include -#include - -int main(int argc, char** argv) { - NahidaProject::RegisterTable registerTable("Software\\ExampleCache"); - registerTable.SetValue("Key1", "Value1"); - registerTable.SetValue("Key2", "Value2"); - std::cout << registerTable.GetValue("Key1") << std::endl; - std::cout << registerTable.GetValue("Key2") << std::endl; - - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-Service-BuildExample/NahidaProject-System-Service-BuildExample.vcxproj b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-Service-BuildExample/NahidaProject-System-Service-BuildExample.vcxproj deleted file mode 100644 index 514377c..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-Service-BuildExample/NahidaProject-System-Service-BuildExample.vcxproj +++ /dev/null @@ -1,131 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {1456a6d6-b626-418c-a887-76b317799836} - NahidaProjectSystemServiceBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-Service-BuildExample/NahidaProject-System-Service-BuildExample.vcxproj.filters b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-Service-BuildExample/NahidaProject-System-Service-BuildExample.vcxproj.filters deleted file mode 100644 index 29c1c78..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-Service-BuildExample/NahidaProject-System-Service-BuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-Service-BuildExample/NahidaProject-System-Service-BuildExample.vcxproj.user b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-Service-BuildExample/NahidaProject-System-Service-BuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-Service-BuildExample/NahidaProject-System-Service-BuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-Service-BuildExample/main.cpp b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-Service-BuildExample/main.cpp deleted file mode 100644 index a5794fa..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/NahidaProject-System-Service-BuildExample/main.cpp +++ /dev/null @@ -1,93 +0,0 @@ -// NahidaProject-System-Service-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -class Service : public WindowsService { - using WindowsService::WindowsService; - -protected: - virtual DWORD WINAPI worker(LPVOID) { - // Periodically check if the service has been requested to stop - while (WaitForSingleObject(stopEvent, 0) != WAIT_OBJECT_0) { - - // Pause on pauseEvent - if (WaitForSingleObject(pauseEvent, 0) != WAIT_OBJECT_0) { - - /* - * Perform main service functionality here - */ - - // Simulate work - Sleep(3000); - - } - else { - confirm_pause(); - // Wait for continue to be thrown - WaitForSingleObject(continueEvent, INFINITE); - confirm_continue(); - } - } - - return ERROR_SUCCESS; - } - - // Gets called during startup. - virtual void on_startup() { - /* - * Perform tasks necessary to start the service here. - */ - } - - // Gets called when pause is thrown and pause/continue is enabled. - virtual void on_pause() { - /* - * Perform tasks necessary to pause the service here. - */ - } - - // Gets called when continue is thrown and pause/continue is enabled. - virtual void on_continue() { - /* - * Perform tasks necessary to continue the service here. - */ - } - - // Gets called when the windows service controller tells service to stop, but BEFORE stopEvent is thrown. - virtual void on_stop() { - /* - * Perform tasks necessary to stop the service loop here. - */ - } - - // Gets called all the way at the end of the liecycle. - virtual void on_exit() { - /* - * Perform tasks necessary for cleanup. - */ - } - - // What to do when the service fails to regiser. - // By default it runs test_startStop(); - virtual void on_failedRegistration() { - /* - * what to do when registration fails... - */ - test_startStop(); - } -}; - -int main(int, TCHAR) { - Service testService("TestService", true); - return testService.run(); -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/TestMaterials/DynamicLinkedLibrary.dll b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/TestMaterials/DynamicLinkedLibrary.dll deleted file mode 100644 index 1952736d9bdcc01b53107cfdfc58399076540edc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60416 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 bW1F%zNt>LTT$?I4fouIN1S|ypMG^RaS`ZGp diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/TestMaterials/ExecutableFile.exe b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-System-BuildExample/TestMaterials/ExecutableFile.exe deleted file mode 100644 index 70b3a84d9bf5ed58f2b6fb57d7e0858a29073635..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179200 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 - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {e0a15b33-3d20-499c-9b1a-9fffda0fc264} - NahidaProjectThreadBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - stdcpp20 - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-Thread-IMPLEMENT.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Thread-BuildExample/NahidaProject-Thread-BuildExample.vcxproj.filters b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Thread-BuildExample/NahidaProject-Thread-BuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Thread-BuildExample/NahidaProject-Thread-BuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Thread-BuildExample/NahidaProject-Thread-BuildExample.vcxproj.user b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Thread-BuildExample/NahidaProject-Thread-BuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Thread-BuildExample/NahidaProject-Thread-BuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Thread-BuildExample/main.cpp b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Thread-BuildExample/main.cpp deleted file mode 100644 index 51f31fd..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-Thread-BuildExample/main.cpp +++ /dev/null @@ -1,106 +0,0 @@ -// NahidaProject-Thread-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#include -#include - -#include -#include -#include -#include - -SetEventBusEvent(TestEvent); - -class HandlerTest : public NahidaProject::EventBus::EventBusHandler { -private: - bool _success; -public: - HandlerTest() : _success(false) { - - } - - void OnEvent(const TestEvent&) override { - _success ^= true; - } - - inline bool isSuccess() const { - return _success; - } -}; - -constexpr float Calculate(float value, int scalar) { - return value * static_cast(scalar); -} - -int main(int argc, char** argv) { - NahidaProject::EventBus::EventBus eventBus; - HandlerTest handler; - TestEvent event; - - eventBus.Subscribe(handler); - eventBus.Publish(event); - - if (!handler.isSuccess()) { - std::cerr << "Failed to execute the handler" << std::endl; - } - - eventBus.Unsubscribe(handler); - eventBus.Publish(event); - if (!handler.isSuccess()) { - std::cerr << "Failed to unsubscribe" << std::endl; - } - - std::cout << "Executed the handler" << std::endl; - - NahidaProject::MemoryPool pool(32, 10); - assert(pool.PrintFreeBlocks(), 10); - void* ptr1 = pool.Allocate(); - void* ptr2 = pool.Allocate(); - void* ptr3 = pool.Allocate(); - assert(pool.PrintFreeBlocks(), 7); - pool.Deallocate(ptr1); - pool.Deallocate(ptr2); - assert(pool.PrintFreeBlocks(), 9); - void* ptr4 = pool.Allocate(); - assert(pool.PrintFreeBlocks(), 8); - - NahidaProject::Signal signal; - auto connection = signal.Connect([](int a) { - std::cout << "Current Number is " << a << std::endl; - }); - - signal(20); - signal(50); - connection.Disconnect(); - - NahidaProject::ThreadPool::SafeQueue::ThreadPool threadPool{}; - - constexpr float num1 = 12.25f; - constexpr float num2 = 17.75f; - constexpr int scalar = 2; - auto foo = threadPool.Enqueue([num1] { - return num1 * static_cast(scalar); - }); - - auto bar = threadPool.Enqueue(Calculate, num2, scalar); - - const auto result_foo = foo.get(); - const auto result_bar = bar.get(); - - assert(result_foo, 24.5); - assert(result_bar, 35.5); - assert(result_foo + result_bar, 60); - - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/NahidaProject-UnitTest-BuildExample.vcxproj b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/NahidaProject-UnitTest-BuildExample.vcxproj deleted file mode 100644 index d6b8693..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/NahidaProject-UnitTest-BuildExample.vcxproj +++ /dev/null @@ -1,134 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 17.0 - Win32Proj - {4e03c889-0182-44b5-93de-43ed4e8f674b} - NahidaProjectUnitTestBuildExample - 10.0 - - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - Application - true - v143 - Unicode - - - Application - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\include;%(AdditionalIncludeDirectories) - - - Console - true - F:\52406\Microsoft Visual Studio Projects\NahidaProject-BuildProduced\lib;%(AdditionalLibraryDirectories) - LibNahidaProject-UnitTest-IMPLEMENT.lib;%(AdditionalDependencies) - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/NahidaProject-UnitTest-BuildExample.vcxproj.filters b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/NahidaProject-UnitTest-BuildExample.vcxproj.filters deleted file mode 100644 index 65fa6d5..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/NahidaProject-UnitTest-BuildExample.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - 源文件 - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/NahidaProject-UnitTest-BuildExample.vcxproj.user b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/NahidaProject-UnitTest-BuildExample.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/NahidaProject-UnitTest-BuildExample.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/main.cpp b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/main.cpp deleted file mode 100644 index 3e7a26b..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/main.cpp +++ /dev/null @@ -1,87 +0,0 @@ -// NahidaProject-UnitTest-BuildExample.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 -// - -#define _CRT_SECURE_NO_WARNINGS - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include - -using namespace std; - -class Calculator { -public: - virtual int Add(int a, int b) = 0; -}; - -class MockCalculator : public Calculator { -public: - MockMethod(int, Add, (int, int)); -}; - -TESTCASE(BenchmarkTestTest) { - string val = "3.141592653589793238462643383279502884"; - int count = 1000000; - - auto rt = NahidaProject::NahidaBenchmarkTest::Time(count, { {"atof", [val]() {double d = atof(val.data()); }},{"strtod", [val]() {double d = strtod(val.data(), nullptr); }},{"sscanf", [val]() {double d; sscanf(val.data(), "%lf", &d); }},{"stod", [val]() {double d = stod(val, nullptr); }} }); - - auto comp = NahidaProject::NahidaBenchmarkTest::Compare(rt); - NahidaProject::NahidaBenchmarkTest::PrintResult(comp); - cout << endl << "runtimes in milliseconds:" << endl; - NahidaProject::NahidaBenchmarkTest::PrintResult(comp); - cout << endl << "runtimes with min, max, mean, variance and standard deviation" << endl; - cout << endl << "nanoseconds" << endl; - NahidaProject::NahidaBenchmarkTest::PrintResult(rt); - cout << endl << "microseconds" << endl; - NahidaProject::NahidaBenchmarkTest::PrintResult(rt, 3); - cout << endl << "milliseconds" << endl; - NahidaProject::NahidaBenchmarkTest::PrintResult(rt, 5); - - if (NahidaProject::NahidaBenchmarkTest::WriteResult("sample", rt)) { - cout << endl << "successfully wrote runtimes to sample-*.txt files" << endl << endl; - } - else { - cerr << endl << "there were problems: " << strerror(errno) << endl << endl; - } -} - -TESTCASE(MockTestTest) { - MockCalculator calculator; - When(calculator.Add).Return(3); - JUDGE_EQUAL(calculator.Add(1, 2), 3); -} - -TESTCASE(UnitTestMacroTest) { - JUDGE_EQUAL(78 + 13, 91); - JUDGE_NOTEQUAL(1 + 1, 10086); - JUDGE_TRUE(true); - JUDGE_FALSE(false); - JUDGE_THROWEXCEPTION(throw std::runtime_error("This is a test exception"), std::runtime_error); - JUDGE_TIMEOUT([]() { - std::this_thread::sleep_for(std::chrono::seconds(3)); - }, 5000); -} - -int main(int argc, char** argv) { - NahidaProject::NahidaUnitTest::RunAllTests(); - return 0; -} - -// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 -// 调试程序: F5 或调试 >“开始调试”菜单 - -// 入门使用技巧: -// 1. 使用解决方案资源管理器窗口添加/管理文件 -// 2. 使用团队资源管理器窗口连接到源代码管理 -// 3. 使用输出窗口查看生成输出和其他消息 -// 4. 使用错误列表窗口查看错误 -// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 -// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-atof-dist.txt b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-atof-dist.txt deleted file mode 100644 index d7cd411..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-atof-dist.txt +++ /dev/null @@ -1,539 +0,0 @@ -1300 15547 -1400 632577 -1500 329155 -1600 16069 -1700 2660 -1800 1038 -1900 474 -2000 294 -2100 183 -2200 130 -2300 76 -2400 70 -2500 48 -2600 61 -2700 46 -2800 48 -2900 29 -3000 29 -3100 30 -3200 31 -3300 28 -3400 24 -3500 36 -3600 29 -3700 24 -3800 18 -3900 17 -4000 28 -4100 22 -4200 20 -4300 20 -4400 29 -4500 25 -4600 22 -4700 15 -4800 19 -4900 18 -5000 12 -5100 9 -5200 11 -5300 10 -5400 7 -5500 8 -5600 13 -5700 15 -5800 6 -5900 14 -6000 6 -6100 7 -6200 4 -6300 5 -6400 6 -6500 5 -6600 6 -6700 14 -6800 17 -6900 13 -7000 7 -7100 5 -7200 7 -7300 3 -7400 1 -7600 2 -7700 2 -7800 5 -7900 6 -8000 1 -8100 3 -8200 2 -8300 4 -8400 3 -8500 3 -8600 4 -8700 1 -8800 3 -8900 5 -9000 2 -9100 6 -9200 4 -9300 3 -9400 4 -9500 9 -9600 3 -9800 1 -9900 2 -10000 2 -10100 1 -10200 4 -10300 4 -10400 2 -10600 2 -10700 2 -10800 4 -10900 1 -11000 3 -11100 5 -11200 3 -11400 2 -11500 3 -11600 2 -11700 1 -12000 3 -12100 1 -12300 3 -12400 1 -12600 3 -12700 1 -12900 2 -13000 1 -13200 2 -13300 1 -13500 3 -13700 3 -13800 2 -13900 2 -14000 2 -14100 1 -14200 1 -14300 2 -14400 2 -14600 1 -14700 3 -14800 1 -15000 2 -15100 3 -15200 1 -15600 1 -15800 1 -15900 1 -16000 6 -16100 2 -16200 2 -16300 2 -16400 1 -16500 2 -16600 3 -16700 1 -16800 2 -16900 2 -17100 5 -17200 2 -17400 1 -17500 2 -17600 1 -17800 3 -17900 1 -18000 1 -18100 2 -18400 1 -18700 7 -18800 3 -18900 3 -19100 3 -19200 3 -19300 6 -19400 1 -19500 3 -19600 4 -19700 1 -19800 6 -19900 1 -20000 2 -20100 4 -20200 1 -20300 1 -20400 5 -20500 5 -20600 3 -20700 2 -20800 1 -20900 5 -21100 3 -21200 3 -21300 2 -21400 3 -21500 2 -21600 1 -21700 4 -21800 4 -21900 4 -22000 3 -22100 2 -22200 1 -22300 1 -22500 3 -22600 1 -22700 2 -22800 2 -22900 3 -23000 2 -23100 3 -23300 4 -23400 2 -23500 1 -23600 1 -23700 1 -23800 7 -23900 2 -24100 2 -24200 2 -24300 1 -24500 1 -24600 1 -24700 1 -24800 3 -24900 1 -25000 1 -25100 1 -25200 1 -25300 1 -25400 2 -25700 2 -25800 1 -25900 1 -26000 1 -26200 2 -26300 1 -26400 2 -26500 3 -26700 1 -26800 3 -26900 1 -27000 2 -27100 2 -27200 3 -27300 3 -27400 1 -27500 1 -27600 2 -27700 2 -27800 1 -28000 1 -28200 3 -28300 2 -28400 1 -28500 1 -28700 1 -28800 1 -29200 2 -29300 2 -29400 1 -29500 1 -29600 2 -29800 1 -30000 1 -30100 1 -30400 2 -30500 2 -30700 1 -30900 1 -31000 1 -31200 2 -31400 4 -31600 2 -31700 1 -31800 1 -31900 1 -32000 3 -32100 1 -32200 3 -32400 2 -32700 1 -32800 2 -32900 1 -33100 1 -33200 1 -33400 1 -33600 2 -33800 4 -33900 1 -34100 4 -34200 1 -34300 4 -34600 1 -34700 1 -34800 3 -35000 5 -35100 2 -35200 2 -35300 2 -35400 3 -35500 1 -35600 1 -35900 1 -36000 1 -36200 1 -36400 1 -36500 1 -36600 1 -36700 3 -36800 1 -37000 2 -37100 1 -37200 1 -37300 1 -37700 3 -38000 2 -38100 4 -38200 3 -38400 1 -38500 2 -38600 2 -38700 2 -38800 1 -38900 1 -39000 1 -39200 1 -39400 1 -39800 1 -40200 1 -40300 2 -40400 2 -40600 1 -40700 1 -40800 1 -40900 1 -41100 1 -41300 1 -41700 1 -41800 1 -41900 1 -42200 1 -42400 1 -42500 1 -42700 1 -42800 1 -43300 3 -43400 1 -44000 1 -44700 1 -44800 1 -44900 1 -45300 1 -45600 1 -46400 1 -46500 1 -46600 2 -46700 1 -47000 1 -47200 1 -47400 2 -47600 2 -47700 2 -47800 1 -48400 1 -48900 2 -49000 2 -49100 1 -49600 1 -50500 1 -50700 1 -50800 1 -51000 1 -51400 2 -51500 1 -51800 1 -51900 1 -52400 1 -52600 1 -52700 1 -52800 1 -52900 1 -53500 1 -53700 1 -54000 1 -54100 1 -54200 1 -54600 1 -54800 2 -55000 1 -55100 1 -55200 1 -55300 1 -55400 1 -55700 1 -55900 1 -56100 2 -56200 1 -56300 1 -56500 1 -56600 1 -56700 1 -56800 1 -56900 2 -57700 1 -57900 1 -58100 1 -58300 1 -58500 2 -58600 1 -58700 1 -58800 2 -59100 1 -59200 1 -59300 3 -59500 1 -59800 1 -60000 2 -60200 1 -60600 1 -60700 2 -60800 4 -61000 3 -61200 1 -61500 1 -61600 2 -62000 1 -62100 1 -62300 1 -62500 1 -62800 2 -62900 1 -63600 1 -63700 1 -63900 1 -64000 1 -64400 1 -64600 2 -64800 1 -65100 2 -65300 1 -65800 1 -66100 1 -66400 1 -66500 1 -66800 1 -66900 1 -67000 1 -67200 1 -67800 2 -68000 1 -68600 1 -68700 1 -68800 2 -69600 1 -70300 1 -70600 1 -70700 2 -71500 1 -71600 1 -71900 2 -72800 1 -73200 1 -73800 1 -75200 1 -75600 1 -76200 1 -76700 1 -77100 1 -77200 3 -77400 1 -77600 2 -77700 1 -78100 2 -78400 1 -78600 1 -79300 1 -79600 1 -79900 1 -81600 1 -82000 1 -83300 1 -83400 1 -83700 1 -85100 1 -85400 1 -85500 1 -85600 1 -85700 1 -86600 1 -88000 1 -90000 1 -90200 1 -92900 1 -93400 1 -94900 1 -95000 1 -97100 1 -99300 1 -103800 1 -105900 1 -106000 1 -106100 1 -106400 1 -108300 1 -118600 1 -122000 1 -123000 1 -124000 1 -124400 1 -128600 1 -147900 1 -149800 1 -151000 1 -151100 1 -152000 1 -153000 1 -154500 1 -155400 1 -156500 1 -158800 1 -164900 1 -175700 1 -190100 1 -192800 1 -193500 1 -201400 1 -235300 1 -244100 1 -257200 1 -282800 1 -294200 1 -311600 1 -323000 1 -329400 1 -336700 1 -363900 1 -366200 1 -371800 1 -421100 1 -433800 1 -461100 1 -549200 1 -598900 1 -644600 1 -728200 1 -735600 1 -846400 1 -860100 1 -952400 1 -1026600 1 -1151000 1 -1545700 1 -1585400 1 -1602800 1 -2748000 1 -3387400 1 -6451800 1 -10890800 1 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-atof.txt b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-atof.txt deleted file mode 100644 index 79dc48e..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-atof.txt +++ /dev/null @@ -1 +0,0 @@ -1507205 1.30000 10890.80000 1.50721 196881.53449 14.03145 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-sscanf-dist.txt b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-sscanf-dist.txt deleted file mode 100644 index 11207fb..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-sscanf-dist.txt +++ /dev/null @@ -1,284 +0,0 @@ -2000 32698 -2100 592650 -2200 353586 -2300 18895 -2400 1014 -2500 193 -2600 82 -2700 51 -2800 50 -2900 28 -3000 23 -3100 18 -3200 5 -3300 18 -3400 17 -3500 9 -3600 8 -3700 18 -3800 13 -3900 8 -4000 9 -4100 12 -4200 8 -4300 17 -4400 9 -4500 9 -4600 13 -4700 12 -4800 8 -4900 10 -5000 7 -5100 2 -5200 8 -5300 8 -5400 7 -5500 9 -5600 2 -5700 2 -5800 8 -5900 3 -6000 4 -6100 5 -6200 6 -6300 7 -6400 9 -6500 17 -6600 6 -6700 9 -6800 8 -6900 8 -7000 5 -7100 5 -7200 6 -7300 6 -7400 3 -7500 4 -7700 7 -7800 4 -7900 5 -8000 7 -8100 1 -8200 1 -8300 3 -8500 1 -8600 3 -8700 3 -8800 7 -8900 2 -9000 3 -9100 7 -9200 3 -9400 2 -9500 4 -9600 2 -9900 1 -10000 1 -10100 1 -10200 2 -10300 2 -10400 1 -10500 2 -10700 2 -10900 3 -11000 1 -11100 2 -11200 1 -11300 3 -11400 1 -11500 2 -11700 1 -11800 1 -12100 1 -12200 3 -12500 1 -12600 3 -12700 3 -13100 1 -13200 2 -13300 1 -13400 1 -13500 2 -13600 2 -13700 2 -13800 1 -14000 3 -14100 1 -14200 5 -14400 1 -14500 1 -14600 2 -14700 1 -14800 1 -15000 1 -15100 1 -15500 1 -15600 3 -15700 3 -15800 1 -16000 1 -16200 1 -16300 1 -16400 1 -16700 1 -16800 2 -17000 1 -17100 2 -17200 1 -17300 2 -17400 2 -17900 3 -18000 2 -18200 1 -18400 3 -18500 1 -18600 4 -18700 2 -18900 1 -19200 1 -19300 1 -19400 1 -19700 2 -19900 1 -20000 2 -20100 1 -20300 2 -20400 1 -20500 1 -20600 1 -20700 2 -20800 4 -20900 1 -21000 1 -21100 1 -21300 3 -21600 1 -21800 1 -21900 1 -22000 1 -22200 1 -22400 2 -22700 1 -22800 1 -22900 1 -23200 1 -23300 1 -23500 1 -23600 1 -23700 1 -23900 1 -24000 2 -24100 1 -24200 2 -24400 2 -24500 1 -24600 1 -24800 1 -25000 1 -25600 1 -25800 1 -25900 1 -26000 1 -26600 3 -26700 1 -27000 1 -27200 1 -27300 2 -27500 1 -27700 1 -28000 2 -28100 1 -28600 1 -29400 1 -29700 1 -30000 1 -30100 1 -30200 1 -30300 1 -30700 1 -30800 1 -31300 1 -31500 2 -31700 2 -32000 1 -32300 1 -33000 1 -33100 2 -33400 1 -33500 1 -33600 2 -33900 2 -34200 1 -34300 1 -34400 1 -34700 1 -35100 1 -35700 1 -36100 2 -36200 1 -36800 1 -37500 1 -38500 1 -39400 1 -39500 1 -41100 1 -42200 1 -43400 2 -44500 1 -46200 1 -50200 2 -50600 1 -50900 2 -53000 1 -53100 1 -54900 1 -55100 1 -55200 1 -57400 1 -57900 1 -58300 1 -59300 1 -59500 1 -60600 1 -60700 1 -61000 1 -61900 1 -62000 1 -64200 1 -66100 1 -67100 1 -67900 1 -68400 1 -71300 1 -75900 1 -76700 1 -78100 1 -78600 1 -81100 1 -81500 1 -84800 1 -84900 1 -89000 1 -91300 1 -94800 1 -104000 1 -106700 1 -115900 1 -119200 1 -123100 1 -131700 1 -134700 1 -138100 1 -141900 1 -145300 1 -148700 1 -153200 1 -166300 1 -170000 1 -186200 1 -248200 1 -345700 1 -458500 1 -479000 1 -581200 1 -2525600 1 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-sscanf.txt b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-sscanf.txt deleted file mode 100644 index d29c77b..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-sscanf.txt +++ /dev/null @@ -1 +0,0 @@ -2151197 2.00000 2525.60000 2.15120 7869.64744 2.80529 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-stod-dist.txt b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-stod-dist.txt deleted file mode 100644 index 5b543da..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-stod-dist.txt +++ /dev/null @@ -1,260 +0,0 @@ -1400 43617 -1500 675875 -1600 271798 -1700 7234 -1800 507 -1900 214 -2000 84 -2100 44 -2200 26 -2300 14 -2400 14 -2500 8 -2600 12 -2700 12 -2800 10 -2900 13 -3000 15 -3100 17 -3200 10 -3300 7 -3400 18 -3500 10 -3600 12 -3700 8 -3800 10 -3900 12 -4000 8 -4100 6 -4200 8 -4300 8 -4400 6 -4500 2 -4600 3 -4700 5 -4800 8 -4900 3 -5000 5 -5100 4 -5200 7 -5300 4 -5400 4 -5500 9 -5600 3 -5700 1 -5800 2 -5900 2 -6000 2 -6100 3 -6200 3 -6300 2 -6400 1 -6500 2 -6600 1 -6800 2 -6900 2 -7000 3 -7100 4 -7200 3 -7300 1 -7500 1 -8200 3 -8300 2 -8500 2 -8600 2 -8800 1 -9100 2 -9200 2 -9400 3 -9500 1 -9600 1 -9800 3 -9900 2 -10000 2 -10300 1 -10500 1 -10700 1 -10800 1 -11000 1 -11300 1 -11400 1 -11500 3 -11600 4 -11700 1 -11800 1 -11900 1 -12000 2 -12200 1 -12400 1 -12600 1 -12700 1 -12800 1 -13100 2 -13400 1 -13500 3 -13600 1 -13700 1 -13800 2 -14100 3 -14300 1 -14400 2 -14700 3 -14800 1 -14900 1 -15200 1 -15300 1 -15400 2 -15500 1 -15700 1 -15800 1 -15900 1 -16100 2 -16200 2 -16300 2 -16600 2 -16700 1 -16800 2 -16900 1 -17000 2 -17100 1 -17200 4 -17300 1 -17400 1 -17500 1 -17700 1 -17800 1 -17900 1 -18000 1 -18100 3 -18200 2 -18300 1 -18400 1 -18600 4 -18700 3 -18900 1 -19000 1 -19100 1 -19200 1 -19300 1 -19400 1 -19500 1 -19600 2 -19900 3 -20000 3 -20300 2 -20400 1 -20800 1 -20900 2 -21100 3 -21200 2 -21700 1 -21800 2 -22000 1 -22200 1 -22300 1 -22400 1 -22500 1 -22700 1 -22900 1 -23300 1 -23400 1 -23600 1 -24000 1 -24200 2 -24400 1 -24600 1 -24800 1 -25400 1 -25700 1 -25800 1 -25900 1 -26500 1 -26700 1 -27000 1 -27400 2 -28700 1 -28900 1 -29000 1 -29200 1 -29400 1 -29700 1 -29800 1 -30000 1 -30600 1 -30900 2 -31400 3 -31700 1 -32400 1 -32500 3 -33200 1 -33500 1 -33700 1 -33800 1 -33900 1 -34100 1 -34200 2 -34500 1 -34800 1 -35100 1 -35200 1 -35300 1 -36200 1 -36300 2 -37400 1 -38400 1 -39000 2 -39400 1 -39700 1 -40600 1 -41500 1 -41700 1 -41800 1 -43300 1 -43700 1 -43800 2 -43900 2 -44300 1 -49600 1 -50200 1 -50600 1 -51600 1 -53600 1 -53800 1 -55200 1 -57400 1 -58100 1 -58600 1 -59400 1 -59600 1 -61000 2 -61600 1 -62200 1 -63100 1 -64100 1 -64300 2 -65800 1 -68000 1 -70000 1 -70700 1 -72700 1 -81800 1 -88300 1 -110400 1 -113300 1 -118600 1 -122000 1 -123100 1 -128300 1 -130000 1 -135100 1 -143700 1 -145400 1 -150400 1 -150500 1 -156400 1 -168100 1 -174300 1 -229400 1 -289600 1 -418200 1 -428500 1 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-stod.txt b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-stod.txt deleted file mode 100644 index 69a8cff..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-stod.txt +++ /dev/null @@ -1 +0,0 @@ -1534767 1.40000 428.50000 1.53477 985.42494 0.99269 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-strtod-dist.txt b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-strtod-dist.txt deleted file mode 100644 index cc965c5..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-strtod-dist.txt +++ /dev/null @@ -1,272 +0,0 @@ -1300 16203 -1400 635213 -1500 338594 -1600 8764 -1700 298 -1800 120 -1900 64 -2000 28 -2100 24 -2200 14 -2300 14 -2400 16 -2500 15 -2600 28 -2700 19 -2800 11 -2900 17 -3000 22 -3100 13 -3200 16 -3300 21 -3400 10 -3500 16 -3600 12 -3700 9 -3800 14 -3900 9 -4000 2 -4100 9 -4200 3 -4300 4 -4400 5 -4500 7 -4600 4 -4700 6 -4800 2 -5000 1 -5100 3 -5200 4 -5300 3 -5400 3 -5500 5 -5600 2 -5800 5 -5900 6 -6000 2 -6100 4 -6200 1 -6300 1 -6400 1 -6500 1 -6600 9 -6700 11 -6800 11 -6900 17 -7000 6 -7100 5 -7200 2 -7300 4 -7400 2 -7600 2 -7700 1 -7800 1 -7900 1 -8000 1 -8100 2 -8300 2 -8400 2 -8500 1 -8900 2 -9000 1 -9200 1 -9300 4 -9400 1 -9500 1 -9600 1 -9800 1 -9900 1 -10000 1 -10100 1 -10300 2 -10400 2 -10700 3 -10900 1 -11000 2 -11200 3 -11300 2 -11600 2 -11700 1 -11900 1 -12000 1 -12300 1 -12500 1 -12600 1 -12800 1 -12900 1 -13000 1 -13200 1 -13300 1 -13400 1 -13600 3 -13700 1 -14000 2 -14100 1 -14400 2 -14500 1 -14600 1 -14700 2 -14800 1 -15200 1 -15300 1 -15400 1 -15600 1 -15700 2 -15800 1 -15900 1 -16000 1 -16200 1 -16300 1 -16400 1 -16500 2 -16600 1 -16700 2 -16800 3 -16900 2 -17100 1 -17200 1 -17300 1 -17500 3 -17600 1 -18200 2 -18300 1 -18400 1 -18600 2 -18700 2 -18800 1 -18900 1 -19000 1 -19100 1 -19200 2 -19600 1 -19700 1 -19900 2 -20000 1 -20100 2 -20300 1 -20400 1 -20600 2 -20700 1 -20900 1 -21000 1 -21100 1 -21200 1 -21300 1 -21400 2 -21500 1 -21600 1 -22100 2 -22400 1 -22600 1 -22700 2 -22800 1 -23200 4 -23400 1 -23600 1 -23700 2 -23900 1 -24000 1 -24400 1 -24800 2 -25000 2 -25400 1 -25700 1 -25800 1 -26100 1 -26400 1 -26600 1 -26700 1 -27100 1 -27200 1 -27300 1 -27400 1 -27700 2 -28000 1 -28200 2 -28600 1 -28900 1 -29100 1 -29200 1 -30000 1 -30200 1 -30400 1 -30600 1 -30700 1 -30900 1 -31000 1 -31300 1 -32100 1 -33400 1 -33500 1 -33700 1 -34000 1 -34100 1 -34200 2 -34500 2 -34600 1 -35200 1 -35600 1 -35900 1 -37700 1 -38000 1 -38200 1 -38300 1 -38400 1 -39000 1 -39500 1 -39600 1 -40500 1 -41000 1 -41800 1 -42600 1 -43200 1 -43300 1 -44600 1 -46700 1 -47500 1 -48500 1 -48600 2 -49700 1 -49900 1 -50500 2 -52200 1 -52800 1 -53000 1 -54200 1 -54400 1 -54500 1 -56100 1 -57000 1 -57300 1 -57500 1 -58700 1 -58900 1 -59100 1 -60900 1 -63400 1 -66700 1 -69300 1 -70500 1 -74500 1 -82100 1 -85900 1 -93000 1 -101700 1 -109300 1 -112800 1 -130600 1 -132700 1 -136400 1 -139300 1 -145500 1 -147800 1 -149700 1 -151300 1 -160800 1 -179700 1 -180500 1 -183500 2 -234800 1 -272700 1 -343900 1 -416100 1 diff --git a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-strtod.txt b/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-strtod.txt deleted file mode 100644 index 2e0c21c..0000000 --- a/NahidaProject.BuildExample/StaticLibrary/NahidaProject-UnitTest-BuildExample/sample-strtod.txt +++ /dev/null @@ -1 +0,0 @@ -1444729 1.30000 416.10000 1.44473 972.74103 0.98628 diff --git a/NahidaProject.Serialization/CMakeLists.txt b/NahidaProject.Serialization/CMakeLists.txt index cb657e2..bf9060d 100644 --- a/NahidaProject.Serialization/CMakeLists.txt +++ b/NahidaProject.Serialization/CMakeLists.txt @@ -19,10 +19,6 @@ FILE(GLOB ALL_SOURCEANDTESTCODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Tests/ModuleUnitTestFile.cpp ) -foreach(item ${ALL_SOURCEANDTESTCODE}) - message(${item}) -endforeach() - ADD_EXECUTABLE(NahidaProject.${MODULEID}Tests ${ALL_SOURCEANDTESTCODE}) ADD_LIBRARY(NahidaProject.${MODULEID}.IMPLEMENT STATIC ${ALL_SOURCECODE} ${ALL_HEADERFILE}) diff --git a/NahidaProject.Serialization/Sources/BSON.cpp b/NahidaProject.Serialization/Sources/BSON.cpp new file mode 100644 index 0000000..a05e8b9 --- /dev/null +++ b/NahidaProject.Serialization/Sources/BSON.cpp @@ -0,0 +1,460 @@ +#include "BSON.h" + +NahidaProject::BSONType NahidaProject::BSONDouble::GetType() const { + return BSONType::DOUBLE; +} + +double NahidaProject::BSONDouble::GetValue() const { + return value; +} + +std::string NahidaProject::BSONDouble::ToString() const { + return std::to_string(value); +} + +std::unique_ptr NahidaProject::BSONDouble::Clone() const { + return std::make_unique(*this); +} + +NahidaProject::BSONType NahidaProject::BSONString::GetType() const { + return BSONType::STRING; +} + +const std::string& NahidaProject::BSONString::GetValue() const { + return value; +} + +std::string NahidaProject::BSONString::ToString() const { + return "\"" + value + "\""; +} + +std::unique_ptr NahidaProject::BSONString::Clone() const { + return std::make_unique(*this); +} + +NahidaProject::BSONType NahidaProject::BSONBoolean::GetType() const { + return BSONType::BOOLEAN; +} + +bool NahidaProject::BSONBoolean::GetValue() const { + return value; +} + +std::string NahidaProject::BSONBoolean::ToString() const { + return value ? "true" : "false"; +} + +std::unique_ptr NahidaProject::BSONBoolean::Clone() const { + return std::make_unique(*this); +} + +NahidaProject::BSONType NahidaProject::BSONInt32::GetType() const { + return BSONType::INT32; +} + +int32_t NahidaProject::BSONInt32::GetValue() const { + return value; +} + +std::string NahidaProject::BSONInt32::ToString() const { + return std::to_string(value); +} + +std::unique_ptr NahidaProject::BSONInt32::Clone() const { + return std::make_unique(*this); +} + +NahidaProject::BSONType NahidaProject::BSONInt64::GetType() const { + return BSONType::INT64; +} + +int64_t NahidaProject::BSONInt64::GetValue() const { + return value; +} + +std::string NahidaProject::BSONInt64::ToString() const { + return std::to_string(value); +} + +std::unique_ptr NahidaProject::BSONInt64::Clone() const { + return std::make_unique(*this); +} + +// ֵ +NahidaProject::BSONElement& NahidaProject::BSONElement::operator=(const BSONElement& other) { + if (this != &other) { + name = other.name; + value = other.value ? other.value->Clone() : nullptr; + } + return *this; +} + +// ƶֵ +NahidaProject::BSONElement& NahidaProject::BSONElement::operator=(BSONElement&& other) noexcept { + if (this != &other) { + name = std::move(other.name); + value = std::move(other.value); + } + return *this; +} + +const std::string& NahidaProject::BSONElement::GetName() const { + return name; +} + +const NahidaProject::BSONValue* NahidaProject::BSONElement::GetValue() const { + return value.get(); +} + +NahidaProject::BSONType NahidaProject::BSONElement::GetType() const { + return value ? value->GetType() : BSONType::EOO; +} + +std::string NahidaProject::BSONElement::ToString() const { + return "\"" + name + "\": " + (value ? value->ToString() : "null"); +} + +NahidaProject::BSONDocument& NahidaProject::BSONDocument::operator=(const BSONDocument& other) { + if (this != &other) { + elements = other.elements; + nameIndex = other.nameIndex; + } + return *this; +} + +// ƶֵ +NahidaProject::BSONDocument& NahidaProject::BSONDocument::operator=(BSONDocument&& other) noexcept { + if (this != &other) { + elements = std::move(other.elements); + nameIndex = std::move(other.nameIndex); + } + return *this; +} + +NahidaProject::BSONType NahidaProject::BSONDocument::GetType() const { + return BSONType::DOCUMENT; +} + +void NahidaProject::BSONDocument::AddElement(const std::string& name, std::unique_ptr value) { + nameIndex[name] = elements.size(); + elements.emplace_back(name, std::move(value)); +} + +const NahidaProject::BSONElement* NahidaProject::BSONDocument::GetElement(const std::string& name) const { + auto it = nameIndex.find(name); + if (it != nameIndex.end()) { + return &elements[it->second]; + } + return nullptr; +} + +const std::vector& NahidaProject::BSONDocument::GetElements() const { + return elements; +} + +void NahidaProject::BSONDocument::AppendDouble(const std::string& name, double value) { + AddElement(name, std::make_unique(value)); +} + +void NahidaProject::BSONDocument::AppendString(const std::string& name, const std::string& value) { + AddElement(name, std::make_unique(value)); +} + +void NahidaProject::BSONDocument::AppendBool(const std::string& name, bool value) { + AddElement(name, std::make_unique(value)); +} + +void NahidaProject::BSONDocument::AppendInt32(const std::string& name, int32_t value) { + AddElement(name, std::make_unique(value)); +} + +void NahidaProject::BSONDocument::AppendInt64(const std::string& name, int64_t value) { + AddElement(name, std::make_unique(value)); +} + +void NahidaProject::BSONDocument::AppendBSONDocument(const std::string& name, const BSONDocument& doc) { + BSONDocument* newDoc = new BSONDocument(doc); + AddElement(name, std::unique_ptr(newDoc)); +} + +std::string NahidaProject::BSONDocument::ToString() const { + std::string result = "{"; + for (size_t i = 0; i < elements.size(); ++i) { + if (i > 0) result += ", "; + result += elements[i].ToString(); + } + result += "}"; + return result; +} + +std::unique_ptr NahidaProject::BSONDocument::Clone() const { + return std::make_unique(*this); +} + +// ȡض͵ֵ +double NahidaProject::BSONDocument::GetDouble(const std::string& name) const { + const BSONElement* elem = GetElement(name); + if (elem && elem->GetType() == BSONType::DOUBLE) { + return static_cast(elem->GetValue())->GetValue(); + } + throw std::runtime_error("Field not found or wrong type: " + name); +} + +std::string NahidaProject::BSONDocument::GetString(const std::string& name) const { + const BSONElement* elem = GetElement(name); + if (elem && elem->GetType() == BSONType::STRING) { + return static_cast(elem->GetValue())->GetValue(); + } + throw std::runtime_error("Field not found or wrong type: " + name); +} + +bool NahidaProject::BSONDocument::GetBoolean(const std::string& name) const { + const BSONElement* elem = GetElement(name); + if (elem && elem->GetType() == BSONType::BOOLEAN) { + return static_cast(elem->GetValue())->GetValue(); + } + throw std::runtime_error("Field not found or wrong type: " + name); +} + +int32_t NahidaProject::BSONDocument::GetInt32(const std::string& name) const { + const BSONElement* elem = GetElement(name); + if (elem && elem->GetType() == BSONType::INT32) { + return static_cast(elem->GetValue())->GetValue(); + } + throw std::runtime_error("Field not found or wrong type: " + name); +} + +int64_t NahidaProject::BSONDocument::GetInt64(const std::string& name) const { + const BSONElement* elem = GetElement(name); + if (elem && elem->GetType() == BSONType::INT64) { + return static_cast(elem->GetValue())->GetValue(); + } + throw std::runtime_error("Field not found or wrong type: " + name); +} + +NahidaProject::BSONDocument NahidaProject::BSONDocument::GetBSONDocument(const std::string& name) const { + const BSONElement* elem = GetElement(name); + if (elem && elem->GetType() == BSONType::DOCUMENT) { + return *static_cast(elem->GetValue()); + } + throw std::runtime_error("Field not found or wrong type: " + name); +} + +// ȡַnullβ +std::string NahidaProject::BSONParser::ReadCString() { + std::string result; + while (position < data.size() && data[position] != 0) { + result += static_cast(data[position++]); + } + if (position < data.size()) position++; // nullֹ + return result; +} + +// ȡǰ׺ַ +std::string NahidaProject::BSONParser::ReadString() { + int32_t length = ReadLittleEndian(); + std::string result; + for (int32_t i = 0; i < length - 1; ++i) { // -1 Ϊnullֹ + result += static_cast(data[position++]); + } + position++; // nullֹ + return result; +} + +// д볤ǰ׺ַ +void NahidaProject::BSONParser::WriteString(const std::string& str) { + int32_t length = static_cast(str.length() + 1); + WriteLittleEndian(length); + for (char c : str) { + data.push_back(static_cast(c)); + } + data.push_back(0); // nullֹ +} + +// дCString +void NahidaProject::BSONParser::WriteCString(const std::string& str) { + for (char c : str) { + data.push_back(static_cast(c)); + } + data.push_back(0); // nullֹ +} + +// Ԫ +NahidaProject::BSONElement NahidaProject::BSONParser::ParseElement() { + BSONType type = static_cast(data[position++]); + std::string name = ReadCString(); + + std::unique_ptr value; + + switch (type) { + case BSONType::DOUBLE: { + double val = ReadLittleEndian(); + value = std::make_unique(val); + break; + } + case BSONType::STRING: { + std::string val = ReadString(); + value = std::make_unique(val); + break; + } + case BSONType::DOCUMENT: { + BSONDocument doc = ParseDocument(); + value = std::make_unique(std::move(doc)); + break; + } + case BSONType::BOOLEAN: { + bool val = (data[position++] != 0); + value = std::make_unique(val); + break; + } + case BSONType::INT32: { + int32_t val = ReadLittleEndian(); + value = std::make_unique(val); + break; + } + case BSONType::INT64: { + int64_t val = ReadLittleEndian(); + value = std::make_unique(val); + break; + } + case BSONType::EOO: + break; + default: + throw std::runtime_error("Unsupported BSON type: " + std::to_string(static_cast(type))); + } + + return BSONElement(name, std::move(value)); +} + +// ĵ +NahidaProject::BSONDocument NahidaProject::BSONParser::ParseDocument() { + BSONDocument doc; + + int32_t documentSize = ReadLittleEndian(); + size_t endPosition = position + documentSize - 4; // ȥѶȡĴСֶ + + while (position < endPosition && data[position] != 0x00) { + BSONElement element = ParseElement(); + doc.elements.push_back(std::move(element)); + const std::string& name = doc.elements.back().GetName(); + doc.nameIndex[name] = doc.elements.size() - 1; + } + + if (position < data.size() && data[position] == 0x00) { + position++; // EOO + } + + return doc; +} + +// лԪ +void NahidaProject::BSONParser::SerializeElement(const BSONElement& element) { + data.push_back(static_cast(element.GetType())); + WriteCString(element.GetName()); + SerializeValue(element.GetValue()); +} + +// лֵ +void NahidaProject::BSONParser::SerializeValue(const BSONValue* value) { + if (!value) return; + + switch (value->GetType()) { + case BSONType::DOUBLE: { + const BSONDouble* doubleVal = static_cast(value); + WriteLittleEndian(doubleVal->GetValue()); + break; + } + case BSONType::STRING: { + const BSONString* stringVal = static_cast(value); + WriteString(stringVal->GetValue()); + break; + } + case BSONType::DOCUMENT: { + const BSONDocument* docVal = static_cast(value); + SerializeDocument(*docVal); + break; + } + case BSONType::BOOLEAN: { + const BSONBoolean* boolVal = static_cast(value); + data.push_back(boolVal->GetValue() ? 1 : 0); + break; + } + case BSONType::INT32: { + const BSONInt32* int32Val = static_cast(value); + WriteLittleEndian(int32Val->GetValue()); + break; + } + case BSONType::INT64: { + const BSONInt64* int64Val = static_cast(value); + WriteLittleEndian(int64Val->GetValue()); + break; + } + default: + throw std::runtime_error("Unsupported BSON type for serialization"); + } +} + +// лĵ +void NahidaProject::BSONParser::SerializeDocument(const BSONDocument& doc) { + size_t sizePosition = data.size(); + WriteLittleEndian(0); // ԤСֶ + + for (const auto& element : doc.GetElements()) { + SerializeElement(element); + } + + data.push_back(0x00); // EOO + + // ´Сֶ + int32_t documentSize = static_cast(data.size() - sizePosition); + memcpy(&data[sizePosition], &documentSize, sizeof(int32_t)); +} + +// ļȡBSON +NahidaProject::BSONDocument NahidaProject::BSONParser::ReadFromFile(const std::string& filename) { + std::ifstream file(filename, std::ios::binary); + if (!file.is_open()) { + throw std::runtime_error("Cannot open file: " + filename); + } + + file.seekg(0, std::ios::end); + size_t fileSize = file.tellg(); + file.seekg(0, std::ios::beg); + + data.resize(fileSize); + file.read(reinterpret_cast(data.data()), fileSize); + file.close(); + + position = 0; + return ParseDocument(); +} + +// BSONдļ +void NahidaProject::BSONParser::WriteToFile(const BSONDocument& doc, const std::string& filename) { + data.clear(); + position = 0; + SerializeDocument(doc); + + std::ofstream file(filename, std::ios::binary); + if (!file.is_open()) { + throw std::runtime_error("Cannot create file: " + filename); + } + + file.write(reinterpret_cast(data.data()), data.size()); + file.close(); +} + +// ڴݽ +NahidaProject::BSONDocument NahidaProject::BSONParser::ParseFromData(const std::vector& bsonData) { + data = bsonData; + position = 0; + return ParseDocument(); +} + +// лڴ +std::vector NahidaProject::BSONParser::SerializeToData(const BSONDocument& doc) { + data.clear(); + position = 0; + SerializeDocument(doc); + return data; +} diff --git a/NahidaProject.Serialization/Sources/BSON.h b/NahidaProject.Serialization/Sources/BSON.h new file mode 100644 index 0000000..3f5a339 --- /dev/null +++ b/NahidaProject.Serialization/Sources/BSON.h @@ -0,0 +1,204 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace NahidaProject { + enum class BSONType : uint8_t {EOO = 0x00, DOUBLE = 0x01, STRING = 0x02, DOCUMENT = 0x03, ARRAY = 0x04, BINARY = 0x05, UNDEFINED = 0x06, OBJECTID = 0x07, BOOLEAN = 0x08, DATETIME = 0x09, NULL_VALUE = 0x0A, REGEX = 0x0B, DBPOINTER = 0x0C, JAVASCRIPT = 0x0D, SYMBOL = 0x0E, JAVASCRIPT_SCOPE = 0x0F, INT32 = 0x10, TIMESTAMP = 0x11, INT64 = 0x12, DECIMAL128 = 0x13, MIN_KEY = 0xFF, MAX_KEY = 0x7F }; + class BSONElement; + class BSONDocument; + + class BSONValue { + public: + virtual ~BSONValue() = default; + virtual BSONType GetType() const = 0; + virtual std::string ToString() const = 0; + virtual std::unique_ptr Clone() const = 0; + }; + + class BSONDouble : public BSONValue { + private: + double value; + + public: + BSONDouble(double val) : value(val) {} + + BSONType GetType() const override; + double GetValue() const; + std::string ToString() const override; + std::unique_ptr Clone() const override; + }; + + class BSONString : public BSONValue { + private: + std::string value; + + public: + BSONString(const std::string& val) : value(val) {} + + BSONType GetType() const override; + const std::string& GetValue() const; + std::string ToString() const override; + std::unique_ptr Clone() const override; + }; + + // ֵ + class BSONBoolean : public BSONValue { + private: + bool value; + + public: + BSONBoolean(bool val) : value(val) {} + + BSONType GetType() const override; + bool GetValue() const; + std::string ToString() const override; + std::unique_ptr Clone() const override; + }; + + // 32λ + class BSONInt32 : public BSONValue { + private: + int32_t value; + + public: + BSONInt32(int32_t val) : value(val) {} + + BSONType GetType() const override; + int32_t GetValue() const; + std::string ToString() const override; + std::unique_ptr Clone() const override; + }; + + // 64λ + class BSONInt64 : public BSONValue { + private: + int64_t value; + + public: + BSONInt64(int64_t val) : value(val) {} + + BSONType GetType() const override; + int64_t GetValue() const; + std::string ToString() const override; + std::unique_ptr Clone() const override; + }; + + // BSON Ԫ + class BSONElement { + private: + std::string name; + std::unique_ptr value; + + public: + // 캯 + BSONElement(const std::string& n, std::unique_ptr v) : name(n), value(std::move(v)) { + + } + + // 캯 + BSONElement(const BSONElement& other) : name(other.name), value(other.value ? other.value->Clone() : nullptr) { + + } + + // ƶ캯 + BSONElement(BSONElement&& other) noexcept : name(std::move(other.name)), value(std::move(other.value)) { + + } + + BSONElement& operator=(const BSONElement& other); + BSONElement& operator=(BSONElement&& other) noexcept; + const std::string& GetName() const; + const BSONValue* GetValue() const; + BSONType GetType() const; + std::string ToString() const; + }; + + // BSON ĵ + class BSONDocument : public BSONValue { + private: + std::vector elements; + std::map nameIndex; + friend class BSONParser; + public: + BSONDocument() = default; + + // 캯 + BSONDocument(const BSONDocument& other) : elements(other.elements), nameIndex(other.nameIndex) { + + } + + // ƶ캯 + BSONDocument(BSONDocument&& other) noexcept : elements(std::move(other.elements)), nameIndex(std::move(other.nameIndex)) { + + } + + BSONDocument& operator=(const BSONDocument& other); + BSONDocument& operator=(BSONDocument&& other) noexcept; + BSONType GetType() const override; + void AddElement(const std::string& name, std::unique_ptr value); + const BSONElement* GetElement(const std::string& name) const; + const std::vector& GetElements() const; + void AppendDouble(const std::string& name, double value); + void AppendString(const std::string& name, const std::string& value); + void AppendBool(const std::string& name, bool value); + void AppendInt32(const std::string& name, int32_t value); + void AppendInt64(const std::string& name, int64_t value); + void AppendBSONDocument(const std::string& name, const BSONDocument& doc); + std::string ToString() const override; + std::unique_ptr Clone() const override; + double GetDouble(const std::string& name) const; + std::string GetString(const std::string& name) const; + bool GetBoolean(const std::string& name) const; + int32_t GetInt32(const std::string& name) const; + int64_t GetInt64(const std::string& name) const; + BSONDocument GetBSONDocument(const std::string& name) const; + }; + + // BSON + class BSONParser { + private: + std::vector data; + size_t position; + + // ȡС + template T ReadLittleEndian() { + T value; + memcpy(&value, &data[position], sizeof(T)); + position += sizeof(T); + return value; + } + + // дС + template void WriteLittleEndian(T value) { + uint8_t* bytes = reinterpret_cast(&value); + for (size_t i = 0; i < sizeof(T); ++i) { + data.push_back(bytes[i]); + } + } + + // ȡַnullβ + std::string ReadCString(); + std::string ReadString(); + void WriteString(const std::string& str); + void WriteCString(const std::string& str); + BSONElement ParseElement(); + BSONDocument ParseDocument(); + void SerializeElement(const BSONElement& element); + void SerializeValue(const BSONValue* value); + void SerializeDocument(const BSONDocument& doc); + + public: + BSONDocument ReadFromFile(const std::string& filename); + void WriteToFile(const BSONDocument& doc, const std::string& filename); + BSONDocument ParseFromData(const std::vector& bsonData); + std::vector SerializeToData(const BSONDocument& doc); + }; +} diff --git a/NahidaProject.Serialization/Sources/JSON/JSONWriter.cpp b/NahidaProject.Serialization/Sources/JSON/JSONWriter.cpp new file mode 100644 index 0000000..e5cff2d --- /dev/null +++ b/NahidaProject.Serialization/Sources/JSON/JSONWriter.cpp @@ -0,0 +1,179 @@ +#include "JSONWriter.h" + +// ȡ +NahidaProject::JSONValue::Type NahidaProject::JSONValue::GetType() const { + return type; +} + +// +void NahidaProject::JSONValue::AddArrayElement(const JSONValue& value) { + if (type == NULL_TYPE) { + type = ARRAY_TYPE; + } + if (type == ARRAY_TYPE) { + arrayValue.push_back(value); + } +} + +// +void NahidaProject::JSONValue::AddObjectMember(const std::string& key, const JSONValue& value) { + if (type == NULL_TYPE) { + type = OBJECT_TYPE; + } + if (type == OBJECT_TYPE) { + objectValue[key] = value; + } +} + +// תΪJSONַ +std::string NahidaProject::JSONValue::ToString() const { + std::stringstream ss; + WriteValue(ss, 0); + return ss.str(); +} + +// д뵽ļ +bool NahidaProject::JSONValue::WriteToFile(const std::string& filename) const { + std::ofstream file(filename); + if (!file.is_open()) { + return false; + } + file << ToString(); + file.close(); + return true; +} + +// תַеַ +std::string NahidaProject::JSONValue::EscapeString(const std::string& str) const { + std::string result; + for (size_t i = 0; i < str.length(); ++i) { + char c = str[i]; + switch (c) { + case '\"': result += "\\\""; break; + case '\\': result += "\\\\"; break; + case '\b': result += "\\b"; break; + case '\f': result += "\\f"; break; + case '\n': result += "\\n"; break; + case '\r': result += "\\r"; break; + case '\t': result += "\\t"; break; + default: + if (c >= 0 && c < 32) { + // ַת + char buffer[8]; + sprintf(buffer, "\\u%04x", c); + result += buffer; + } + else { + result += c; + } + break; + } + } + return result; +} + +// д +void NahidaProject::JSONValue::WriteIndent(std::stringstream& ss, int indent) const { + for (int i = 0; i < indent; ++i) { + ss << " "; + } +} + +// дֵ +void NahidaProject::JSONValue::WriteValue(std::stringstream& ss, int indent) const { + switch (type) { + case NULL_TYPE: + ss << "null"; + break; + + case BOOLEAN_TYPE: + ss << (boolValue ? "true" : "false"); + break; + + case NUMBER_TYPE: + ss << numberValue; + break; + + case STRING_TYPE: + ss << "\"" << EscapeString(stringValue) << "\""; + break; + + case ARRAY_TYPE: + WriteArray(ss, indent); + break; + + case OBJECT_TYPE: + WriteObject(ss, indent); + break; + } +} + +// д +void NahidaProject::JSONValue::WriteArray(std::stringstream& ss, int indent) const { + if (arrayValue.empty()) { + ss << "[]"; + return; + } + + ss << "[\n"; + for (size_t i = 0; i < arrayValue.size(); ++i) { + WriteIndent(ss, indent + 1); + arrayValue[i].WriteValue(ss, indent + 1); + if (i < arrayValue.size() - 1) { + ss << ","; + } + ss << "\n"; + } + WriteIndent(ss, indent); + ss << "]"; +} + +// д +void NahidaProject::JSONValue::WriteObject(std::stringstream& ss, int indent) const { + if (objectValue.empty()) { + ss << "{}"; + return; + } + + ss << "{\n"; + size_t count = 0; + size_t total = objectValue.size(); + + for (std::map::const_iterator it = objectValue.begin(); + it != objectValue.end(); ++it) { + WriteIndent(ss, indent + 1); + ss << "\"" << EscapeString(it->first) << "\": "; + it->second.WriteValue(ss, indent + 1); + if (count < total - 1) { + ss << ","; + } + ss << "\n"; + count++; + } + WriteIndent(ss, indent); + ss << "}"; +} + +void NahidaProject::JSONWriter::SetRoot(const JSONValue& value) { + root = value; +} + +NahidaProject::JSONValue NahidaProject::JSONWriter::CreateObject() { + return JSONValue(); +} + +NahidaProject::JSONValue NahidaProject::JSONWriter::CreateArray() { + return JSONValue(); +} + +void NahidaProject::JSONWriter::Print() const { + std::cout << root.ToString() << std::endl; +} + +bool NahidaProject::JSONWriter::WriteToFile(const std::string& filename) const { + return root.WriteToFile(filename); +} + +std::string NahidaProject::JSONWriter::GetJSONString() const { + return root.ToString(); +} diff --git a/NahidaProject.Serialization/Sources/JSON/JSONWriter.h b/NahidaProject.Serialization/Sources/JSON/JSONWriter.h new file mode 100644 index 0000000..8ad112a --- /dev/null +++ b/NahidaProject.Serialization/Sources/JSON/JSONWriter.h @@ -0,0 +1,61 @@ +#include +#include +#include +#include +#include +#include + +namespace NahidaProject { + class JSONValue { + public: + enum Type { NULL_TYPE, BOOLEAN_TYPE, NUMBER_TYPE, STRING_TYPE, ARRAY_TYPE, OBJECT_TYPE }; + + private: + Type type; + + // 洢ͬ͵ֵ + bool boolValue; + double numberValue; + std::string stringValue; + std::vector arrayValue; + std::map objectValue; + + public: + JSONValue() : type(NULL_TYPE) {} + JSONValue(bool value) : type(BOOLEAN_TYPE), boolValue(value) {} + JSONValue(int value) : type(NUMBER_TYPE), numberValue(value) {} + JSONValue(double value) : type(NUMBER_TYPE), numberValue(value) {} + JSONValue(const std::string& value) : type(STRING_TYPE), stringValue(value) {} + JSONValue(const char* value) : type(STRING_TYPE), stringValue(value) {} + + Type GetType() const; + void AddArrayElement(const JSONValue& value); + void AddObjectMember(const std::string& key, const JSONValue& value); + std::string ToString() const; + bool WriteToFile(const std::string& filename) const; + + private: + std::string EscapeString(const std::string& str) const; + void WriteIndent(std::stringstream& ss, int indent) const; + void WriteValue(std::stringstream& ss, int indent) const; + void WriteArray(std::stringstream& ss, int indent) const; + void WriteObject(std::stringstream& ss, int indent) const; + }; + + // JsonWriter ṩݵĽӿ + class JSONWriter { + private: + JSONValue root; + + public: + JSONWriter() {} + + // øֵ + void SetRoot(const JSONValue& value); + JSONValue CreateObject(); + JSONValue CreateArray(); + void Print() const; + bool WriteToFile(const std::string& filename) const; + std::string GetJSONString() const; + }; +} diff --git a/NahidaProject.Serialization/Sources/YAML.cpp b/NahidaProject.Serialization/Sources/YAML/YAML.cpp similarity index 100% rename from NahidaProject.Serialization/Sources/YAML.cpp rename to NahidaProject.Serialization/Sources/YAML/YAML.cpp diff --git a/NahidaProject.Serialization/Sources/YAML.h b/NahidaProject.Serialization/Sources/YAML/YAML.h similarity index 100% rename from NahidaProject.Serialization/Sources/YAML.h rename to NahidaProject.Serialization/Sources/YAML/YAML.h diff --git a/NahidaProject.Serialization/Sources/YAML/YAMLWriter.cpp b/NahidaProject.Serialization/Sources/YAML/YAMLWriter.cpp new file mode 100644 index 0000000..3f88def --- /dev/null +++ b/NahidaProject.Serialization/Sources/YAML/YAMLWriter.cpp @@ -0,0 +1,231 @@ +#include "YAMLWriter.h" + +std::string NahidaProject::YAMLWriter::FormatString(const std::string& str) { + // ǷҪ + bool needsQuotes = false; + for (char c : str) { + if (c == ' ' || c == ':' || c == '{' || c == '}' || c == '[' || c == ']' || c == ',' || c == '&' || c == '*' || c == '#' || c == '?' || c == '|' || c == '-' || c == '<' || c == '>' || c == '=' || c == '!' || c == '%' || c == '@' || c == '`') { + needsQuotes = true; + break; + } + } + + if (needsQuotes || str.empty()) { + std::string result = "\""; + for (char c : str) { + if (c == '"' || c == '\\') { + result += '\\'; + } + result += c; + } + result += "\""; + return result; + } + return str; +} + +// +std::string NahidaProject::YAMLWriter::GetIndent(int level = -1) { + if (level == -1) level = currentIndent; + return std::string(level * INDENT_SIZE, ' '); +} + +// е +void NahidaProject::YAMLWriter::AddLine(const std::string& line) { + content += line + "\n"; +} + +// ļ +bool NahidaProject::YAMLWriter::OpenFile(const std::string& filename) { + file.open(filename); + return file.is_open(); +} + +// رļд +void NahidaProject::YAMLWriter::CloseFile() { + if (file.is_open()) { + file << content; + file.close(); + } +} + +// ʼĵ +void NahidaProject::YAMLWriter::BeginDocument() { + AddLine("---"); +} + +// ĵ +void NahidaProject::YAMLWriter::EndDocument() { + AddLine("..."); +} + +// дֵ +void NahidaProject::YAMLWriter::WriteKeyValue(const std::string& key, const std::string& value) { + AddLine(GetIndent() + key + ": " + FormatString(value)); +} + +void NahidaProject::YAMLWriter::WriteKeyValue(const std::string& key, int value) { + AddLine(GetIndent() + key + ": " + std::to_string(value)); +} + +void NahidaProject::YAMLWriter::WriteKeyValue(const std::string& key, double value) { + std::ostringstream oss; + oss << std::fixed << std::setprecision(6) << value; + AddLine(GetIndent() + key + ": " + oss.str()); +} + +void NahidaProject::YAMLWriter::WriteKeyValue(const std::string& key, bool value) { + AddLine(GetIndent() + key + ": " + (value ? "true" : "false")); +} + +// дַ +void NahidaProject::YAMLWriter::WriteArray(const std::string& key, const std::vector& values) { + if (values.empty()) { + AddLine(GetIndent() + key + ": []"); + return; + } + + AddLine(GetIndent() + key + ":"); + currentIndent++; + for (const auto& value : values) { + AddLine(GetIndent() + "- " + FormatString(value)); + } + currentIndent--; +} + +// д +void NahidaProject::YAMLWriter::WriteArray(const std::string& key, const std::vector& values) { + if (values.empty()) { + AddLine(GetIndent() + key + ": []"); + return; + } + + AddLine(GetIndent() + key + ":"); + currentIndent++; + for (int value : values) { + AddLine(GetIndent() + "- " + std::to_string(value)); + } + currentIndent--; +} + +// д븡 +void NahidaProject::YAMLWriter::WriteArray(const std::string& key, const std::vector& values) { + if (values.empty()) { + AddLine(GetIndent() + key + ": []"); + return; + } + + AddLine(GetIndent() + key + ":"); + currentIndent++; + for (double value : values) { + std::ostringstream oss; + oss << std::fixed << std::setprecision(6) << value; + AddLine(GetIndent() + "- " + oss.str()); + } + currentIndent--; +} + +// д벼 +void NahidaProject::YAMLWriter::WriteArray(const std::string& key, const std::vector& values) { + if (values.empty()) { + AddLine(GetIndent() + key + ": []"); + return; + } + + AddLine(GetIndent() + key + ":"); + currentIndent++; + for (bool value : values) { + AddLine(GetIndent() + "- " + (value ? "true" : "false")); + } + currentIndent--; +} + +// ʼ +void NahidaProject::YAMLWriter::BeginObject(const std::string& key) { + if (!key.empty()) { + AddLine(GetIndent() + key + ":"); + } + currentIndent++; +} + +// +void NahidaProject::YAMLWriter::EndObject() { + if (currentIndent > 0) { + currentIndent--; + } +} + +// ʼ +void NahidaProject::YAMLWriter::BeginArray(const std::string& key) { + AddLine(GetIndent() + key + ":"); + currentIndent++; +} + +// Ԫ +void NahidaProject::YAMLWriter::AddArrayElement(const std::string& value) { + AddLine(GetIndent() + "- " + FormatString(value)); +} + +void NahidaProject::YAMLWriter::AddArrayElement(int value) { + AddLine(GetIndent() + "- " + std::to_string(value)); +} + +void NahidaProject::YAMLWriter::AddArrayElement(double value) { + std::ostringstream oss; + oss << std::fixed << std::setprecision(6) << value; + AddLine(GetIndent() + "- " + oss.str()); +} + +void NahidaProject::YAMLWriter::AddArrayElement(bool value) { + AddLine(GetIndent() + "- " + (value ? "true" : "false")); +} + +// +void NahidaProject::YAMLWriter::EndArray() { + EndObject(); +} + +// дע +void NahidaProject::YAMLWriter::WriteComment(const std::string& comment) { + AddLine(GetIndent() + "# " + comment); +} + +// дַ +void NahidaProject::YAMLWriter::WriteMultilineString(const std::string& key, const std::string& value) { + AddLine(GetIndent() + key + ": |"); + currentIndent++; + std::istringstream iss(value); + std::string line; + while (std::getline(iss, line)) { + AddLine(GetIndent() + line); + } + currentIndent--; +} + +// д۵ַ +void NahidaProject::YAMLWriter::WriteFoldedString(const std::string& key, const std::string& value) { + AddLine(GetIndent() + key + ": >"); + currentIndent++; + std::istringstream iss(value); + std::string line; + while (std::getline(iss, line)) { + AddLine(GetIndent() + line); + } + currentIndent--; +} + +// ȡǰ +std::string NahidaProject::YAMLWriter::GetContent() const { + return content; +} + +// +void NahidaProject::YAMLWriter::Clear() { + content.clear(); + currentIndent = 0; +} + +// ֱдԭʼ +void NahidaProject::YAMLWriter::WriteRaw(const std::string& rawContent) { + AddLine(rawContent); +} \ No newline at end of file diff --git a/NahidaProject.Serialization/Sources/YAML/YAMLWriter.h b/NahidaProject.Serialization/Sources/YAML/YAMLWriter.h new file mode 100644 index 0000000..32297c1 --- /dev/null +++ b/NahidaProject.Serialization/Sources/YAML/YAMLWriter.h @@ -0,0 +1,51 @@ +#include +#include +#include +#include +#include +#include +#include + +namespace NahidaProject { + class YAMLWriter { + private: + std::ofstream file; + std::string content; + int currentIndent; + static const int INDENT_SIZE = 2; + + std::string FormatString(const std::string& str); + std::string GetIndent(int level = -1); + void AddLine(const std::string& line); + + public: + YAMLWriter() : currentIndent(0) {} + + bool OpenFile(const std::string& filename); + void CloseFile(); + void BeginDocument(); + void EndDocument(); + void WriteKeyValue(const std::string& key, const std::string& value); + void WriteKeyValue(const std::string& key, int value); + void WriteKeyValue(const std::string& key, double value); + void WriteKeyValue(const std::string& key, bool value); + void WriteArray(const std::string& key, const std::vector& values); + void WriteArray(const std::string& key, const std::vector& values); + void WriteArray(const std::string& key, const std::vector& values); + void WriteArray(const std::string& key, const std::vector& values); + void BeginObject(const std::string& key = ""); + void EndObject(); + void BeginArray(const std::string& key); + void AddArrayElement(const std::string& value); + void AddArrayElement(int value); + void AddArrayElement(double value); + void AddArrayElement(bool value); + void EndArray(); + void WriteComment(const std::string& comment); + void WriteMultilineString(const std::string& key, const std::string& value); + void WriteFoldedString(const std::string& key, const std::string& value); + std::string GetContent() const; + void Clear(); + void WriteRaw(const std::string& rawContent); + }; +} diff --git a/NahidaProject.Serialization/Tests/ModuleUnitTestFile.cpp b/NahidaProject.Serialization/Tests/ModuleUnitTestFile.cpp index 4a7850b..7cd984c 100644 --- a/NahidaProject.Serialization/Tests/ModuleUnitTestFile.cpp +++ b/NahidaProject.Serialization/Tests/ModuleUnitTestFile.cpp @@ -1,15 +1,62 @@ #include "..\..\NahidaProject.UnitTest\Sources\NahidaUnitTest.h" +#include "..\Sources\BSON.h" #include "..\Sources\CSV.h" #include "..\Sources\INI\INIReader.h" #include "..\Sources\INI\INIWriter.h" #include "..\Sources\JSON\JSON.h" +#include "..\Sources\JSON\JSONWriter.h" #include "..\Sources\MessagePack.h" #include "..\Sources\XML\XMLDocument.h" #include "..\Sources\XML\XMLElement.h" #include "..\Sources\XML\XMLParser.h" #include "..\Sources\XML\XMLWriter.h" -#include "..\Sources\YAML.h" +#include "..\Sources\YAML\YAML.h" + +Test(BSONTest) { + try { + NahidaProject::BSONDocument doc; + doc.AppendString("name", "John Doe"); + doc.AppendInt32("age", 30); + doc.AppendDouble("height", 5.9); + doc.AppendBool("isStudent", false); + + NahidaProject::BSONDocument address; + address.AppendString("street", "123 Main St"); + address.AppendString("city", "New York"); + address.AppendInt32("zip", 10001); + doc.AppendBSONDocument("address", address); + + NahidaProject::BSONDocument hobbies; + hobbies.AppendString("0", "reading"); + hobbies.AppendString("1", "swimming"); + hobbies.AppendString("2", "coding"); + doc.AppendBSONDocument("hobbies", hobbies); + + NahidaProject::BSONParser parser; + + parser.WriteToFile(doc, "test.bson"); + std::cout << "BSON written to file successfully\n"; + std::cout << "Document: " << doc.ToString() << std::endl; + + NahidaProject::BSONDocument readDoc = parser.ReadFromFile("test.bson"); + std::cout << "\nBSON read from file successfully\n"; + std::cout << "Read document: " << readDoc.ToString() << std::endl; + + NahidaProject::BSONDocument readAddress = readDoc.GetBSONDocument("address"); + std::cout << "\nNested document 'address': " << readAddress.ToString() << std::endl; + + std::cout << "\nField access examples:" << std::endl; + std::cout << "Name: " << readDoc.GetString("name") << std::endl; + std::cout << "Age: " << readDoc.GetInt32("age") << std::endl; + std::cout << "Height: " << readDoc.GetDouble("height") << std::endl; + std::cout << "Is Student: " << (readDoc.GetBoolean("isStudent") ? "true" : "false") << std::endl; + std::cout << "City: " << readDoc.GetBSONDocument("address").GetString("city") << std::endl; + } + catch (const std::exception& e) { + std::cerr << "Error: " << e.what() << std::endl; + } +} Test(CSVTest) { std::ofstream ofs("TestRead.csv", std::ios::out | std::ios::app); @@ -57,8 +104,40 @@ Test(INIReadAndWriteTest) { } Test(JSONParseTest) { + + // JSONд + NahidaProject::JSONWriter writer; + + // һӵJSON + NahidaProject::JSONValue person; + + // ӻֶ + person.AddObjectMember("name", NahidaProject::JSONValue("Jack")); + person.AddObjectMember("age", NahidaProject::JSONValue(18)); + + NahidaProject::JSONValue area; + area.AddArrayElement(NahidaProject::JSONValue("c++")); + area.AddArrayElement(NahidaProject::JSONValue("php")); + area.AddArrayElement(NahidaProject::JSONValue("python")); + area.AddArrayElement(NahidaProject::JSONValue("go")); + person.AddObjectMember("area", area); + + NahidaProject::JSONValue hobby; + hobby.AddObjectMember("hobby1", NahidaProject::JSONValue("reading")); + hobby.AddObjectMember("hobby2", NahidaProject::JSONValue("coding")); + hobby.AddObjectMember("hobby3", NahidaProject::JSONValue("basketball")); + person.AddObjectMember("hobby", hobby); + + writer.SetRoot(person); + if (writer.WriteToFile("output.json")) { + std::cout << "\nJSONѳɹд뵽 output.json ļ" << std::endl; + } + else { + std::cout << "\nдļʧ" << std::endl; + } + NahidaProject::JSON json; - json.Parse(R"({"name": "Jack", "age": 18, "area": ["c++", "php", "python", "go"], "hobby": {"hobby1": "reading", "hobby2": "coding", "hobby3": "basketball"}})"); + json.Parse(""); AssertEqual(json["name"].ToString(), "\"Jack\""); AssertEqual(json["age"].ToString(), "18"); AssertEqual(json["area"].ToString(), R"(["c++","php","python","go"])"); @@ -113,6 +192,8 @@ Test(MessagePackTest) { catch (const std::exception& e) { std::cerr << "Error: " << e.what() << std::endl; } + + ::remove("output.json"); } Test(XMLReadTest) { diff --git a/README.md b/README.md index 5146070..c8ad8c7 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ NahidaProject 是 C++ 常用代码的整理归纳,可以减少开发时间和开发难度。 +虽然目前我们不支持 Linux。 但在未来,我们会做到跨平台运行。 + NahidaProject 十分小巧,却包含了常用的模块: |模块名称 | 模块用途 | @@ -152,8 +154,7 @@ NahidaProject 中的代码,可以直接引入使用。但是我们更建议编 - 使用 Microsoft Visual Studio Community 直接打开文件夹,等待初始化 CMake 项目。 - 对每个模块生成 NahidaProject.XXXTests.exe 以测试库代码和物料配置没有问题。 - 右键项目根目录,选择切换到 CMake 目标视图,生成所有编译产物。 -- 编译完成后,请运行 `AutoInstallScript.ps1` 以自动吸取散落的编译产物。 -- 复制 `NahidaProject-InstallDirectory` 到你喜欢的路径下使用。 +- 复制所有的编译产物到你喜欢的路径下使用。 请不要使用 CMake 生成出的 Microsoft Visual Studio 项目文件来构建这个库,会导致编码问题。 -- Gitee From 3c2035feabd9f544ba1827d20bf6fbc7d82a81ec Mon Sep 17 00:00:00 2001 From: HeZongLun <13425468+hezonglun@user.noreply.gitee.com> Date: Tue, 7 Oct 2025 20:17:21 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=86=20YAMLWriter=20?= =?UTF-8?q?=E7=B1=BB=EF=BC=8C=E6=95=B4=E7=90=86=E4=BA=86=20CMake=20?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E8=84=9A=E6=9C=AC=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BA=86=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeModules/RegisterSubproject.cmake | 30 +++++++++++++ NahidaProject.Console/CMakeLists.txt | 20 ++------- NahidaProject.Database/CMakeLists.txt | 25 +++-------- NahidaProject.Generic/CMakeLists.txt | 25 +++-------- NahidaProject.HashAlgorithm/CMakeLists.txt | 20 ++------- NahidaProject.Mathematics/CMakeLists.txt | 20 ++------- NahidaProject.Other/CMakeLists.txt | 20 ++------- NahidaProject.Other/Sources/Turtle.cpp | 0 NahidaProject.Other/Sources/Turtle.h | 0 NahidaProject.Serialization/CMakeLists.txt | 32 ++----------- .../Sources/YAML/YAMLWriter.cpp | 8 ++-- .../Sources/YAML/YAMLWriter.h | 2 +- .../Tests/ModuleUnitTestFile.cpp | 45 ++++++++++++------- NahidaProject.Thread/CMakeLists.txt | 20 ++------- README.md | 8 +++- 15 files changed, 102 insertions(+), 173 deletions(-) create mode 100644 CMakeModules/RegisterSubproject.cmake delete mode 100644 NahidaProject.Other/Sources/Turtle.cpp delete mode 100644 NahidaProject.Other/Sources/Turtle.h diff --git a/CMakeModules/RegisterSubproject.cmake b/CMakeModules/RegisterSubproject.cmake new file mode 100644 index 0000000..e8eb785 --- /dev/null +++ b/CMakeModules/RegisterSubproject.cmake @@ -0,0 +1,30 @@ +# CMakeList.txt: NahidaProject CMake ģ飬ڴ˴Ŀضȫ߼ + +FUNCTION(REGISTER_SUBPROJECT MODULEID) + FILE(GLOB TESTFILE + ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.cpp + ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.h + ) + + FILE(GLOB_RECURSE ALL_SOURCECODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.cpp) + FILE(GLOB_RECURSE ALL_HEADERFILE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.h) + + FILE(GLOB ALL_SOURCEANDTESTCODE + ${TESTFILE} + ${ALL_SOURCECODE} + ${ALL_HEADERFILE} + ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Tests/ModuleUnitTestFile.cpp + ) + + ADD_EXECUTABLE(NahidaProject.${MODULEID}Tests ${ALL_SOURCEANDTESTCODE}) + ADD_LIBRARY(NahidaProject.${MODULEID}.IMPLEMENT STATIC ${ALL_SOURCECODE} ${ALL_HEADERFILE}) + ADD_LIBRARY(NahidaProject.${MODULEID} SHARED ${ALL_SOURCECODE} ${ALL_HEADERFILE}) + + IF(CMAKE_VERSION VERSION_GREATER 3.12) + SET_PROPERTY(TARGET NahidaProject.${MODULEID}Tests PROPERTY CXX_STANDARD 20) + SET_PROPERTY(TARGET NahidaProject.${MODULEID}.IMPLEMENT PROPERTY CXX_STANDARD 20) + SET_PROPERTY(TARGET NahidaProject.${MODULEID} PROPERTY CXX_STANDARD 20) + ENDIF() + + MESSAGE("Load subproject [${MODULEID}] done.") +ENDFUNCTION() \ No newline at end of file diff --git a/NahidaProject.Console/CMakeLists.txt b/NahidaProject.Console/CMakeLists.txt index 236a886..fd22946 100644 --- a/NahidaProject.Console/CMakeLists.txt +++ b/NahidaProject.Console/CMakeLists.txt @@ -2,20 +2,6 @@ # ԴӵĿĿִļ CMAKE_MINIMUM_REQUIRED(VERSION 3.31 FATAL_ERROR) -SET(MODULEID "Console") - -FILE(GLOB TESTFILE ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.cpp ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.h) -FILE(GLOB ALL_SOURCECODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.cpp) -FILE(GLOB ALL_HEADERFILE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.h) -FILE(GLOB ALL_SOURCEANDTESTCODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.cpp ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.h ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Tests/*.cpp) -ADD_EXECUTABLE(NahidaProject.${MODULEID}Tests ${ALL_SOURCEANDTESTCODE} ${TESTFILE}) -ADD_LIBRARY(NahidaProject.${MODULEID}.IMPLEMENT STATIC ${ALL_SOURCECODE}) -ADD_LIBRARY(NahidaProject.${MODULEID} SHARED ${ALL_SOURCECODE}) - -IF(CMAKE_VERSION VERSION_GREATER 3.12) - SET_PROPERTY(TARGET NahidaProject.${MODULEID}Tests PROPERTY CXX_STANDARD 20) - SET_PROPERTY(TARGET NahidaProject.${MODULEID}.IMPLEMENT PROPERTY CXX_STANDARD 20) - SET_PROPERTY(TARGET NahidaProject.${MODULEID} PROPERTY CXX_STANDARD 20) -ENDIF() - -MESSAGE(STATUS "Build module [${MODULEID}] done.") \ No newline at end of file +SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMakeModules) +INCLUDE(RegisterSubproject) +REGISTER_SUBPROJECT("Console") \ No newline at end of file diff --git a/NahidaProject.Database/CMakeLists.txt b/NahidaProject.Database/CMakeLists.txt index 5caaa78..0325383 100644 --- a/NahidaProject.Database/CMakeLists.txt +++ b/NahidaProject.Database/CMakeLists.txt @@ -2,23 +2,10 @@ # 将源代码添加到此项目的可执行文件。 CMAKE_MINIMUM_REQUIRED(VERSION 3.31 FATAL_ERROR) -SET(MODULEID "Database") +SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMakeModules) +INCLUDE(RegisterSubproject) +REGISTER_SUBPROJECT("Database") -FILE(GLOB TESTFILE ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.cpp ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.h) -FILE(GLOB ALL_SOURCECODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.cpp) -FILE(GLOB ALL_HEADERFILE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.h) -FILE(GLOB ALL_SOURCEANDTESTCODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.cpp ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.h ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Tests/*.cpp) -ADD_EXECUTABLE(NahidaProject.${MODULEID}Tests ${ALL_SOURCEANDTESTCODE} ${TESTFILE}) -ADD_LIBRARY(NahidaProject.${MODULEID}.IMPLEMENT STATIC ${ALL_SOURCECODE}) -ADD_LIBRARY(NahidaProject.${MODULEID} SHARED ${ALL_SOURCECODE}) - -IF(CMAKE_VERSION VERSION_GREATER 3.12) - SET_PROPERTY(TARGET NahidaProject.${MODULEID}Tests PROPERTY CXX_STANDARD 20) - SET_PROPERTY(TARGET NahidaProject.${MODULEID}.IMPLEMENT PROPERTY CXX_STANDARD 20) - SET_PROPERTY(TARGET NahidaProject.${MODULEID} PROPERTY CXX_STANDARD 20) -ENDIF() - -TARGET_LINK_LIBRARIES(NahidaProject.${MODULEID}Tests PUBLIC odbc32) -TARGET_LINK_LIBRARIES(NahidaProject.${MODULEID} PUBLIC odbc32) - -MESSAGE(STATUS "Build module [${MODULEID}] done.") +TARGET_LINK_LIBRARIES(NahidaProject.DatabaseTests PUBLIC odbc32) +TARGET_LINK_LIBRARIES(NahidaProject.Database.IMPLEMENT PUBLIC odbc32) +TARGET_LINK_LIBRARIES(NahidaProject.Database PUBLIC odbc32) diff --git a/NahidaProject.Generic/CMakeLists.txt b/NahidaProject.Generic/CMakeLists.txt index 03faf17..c9a738b 100644 --- a/NahidaProject.Generic/CMakeLists.txt +++ b/NahidaProject.Generic/CMakeLists.txt @@ -2,23 +2,10 @@ # 将源代码添加到此项目的可执行文件。 CMAKE_MINIMUM_REQUIRED(VERSION 3.31 FATAL_ERROR) -SET(MODULEID "Generic") +SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMakeModules) +INCLUDE(RegisterSubproject) +REGISTER_SUBPROJECT("Generic") -FILE(GLOB TESTFILE ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.cpp ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.h) -FILE(GLOB ALL_SOURCECODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.cpp) -FILE(GLOB ALL_HEADERFILE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.h) -FILE(GLOB ALL_SOURCEANDTESTCODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.cpp ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.h ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Tests/*.cpp) -ADD_EXECUTABLE(NahidaProject.${MODULEID}Tests ${ALL_SOURCEANDTESTCODE} ${TESTFILE}) -ADD_LIBRARY(NahidaProject.${MODULEID}.IMPLEMENT STATIC ${ALL_SOURCECODE}) -ADD_LIBRARY(NahidaProject.${MODULEID} SHARED ${ALL_SOURCECODE}) - -IF(CMAKE_VERSION VERSION_GREATER 3.12) - SET_PROPERTY(TARGET NahidaProject.${MODULEID}Tests PROPERTY CXX_STANDARD 20) - SET_PROPERTY(TARGET NahidaProject.${MODULEID}.IMPLEMENT PROPERTY CXX_STANDARD 20) - SET_PROPERTY(TARGET NahidaProject.${MODULEID} PROPERTY CXX_STANDARD 20) -ENDIF() - -TARGET_LINK_LIBRARIES(NahidaProject.${MODULEID}Tests PUBLIC ws2_32) -TARGET_LINK_LIBRARIES(NahidaProject.${MODULEID} PUBLIC ws2_32) - -MESSAGE(STATUS "Build module [${MODULEID}] done.") +TARGET_LINK_LIBRARIES(NahidaProject.GenericTests PUBLIC ws2_32) +TARGET_LINK_LIBRARIES(NahidaProject.Generic.IMPLEMENT PUBLIC ws2_32) +TARGET_LINK_LIBRARIES(NahidaProject.Generic PUBLIC ws2_32) diff --git a/NahidaProject.HashAlgorithm/CMakeLists.txt b/NahidaProject.HashAlgorithm/CMakeLists.txt index 84521dd..d15fa7c 100644 --- a/NahidaProject.HashAlgorithm/CMakeLists.txt +++ b/NahidaProject.HashAlgorithm/CMakeLists.txt @@ -2,20 +2,6 @@ # ԴӵĿĿִļ CMAKE_MINIMUM_REQUIRED(VERSION 3.31 FATAL_ERROR) -SET(MODULEID "HashAlgorithm") - -FILE(GLOB TESTFILE ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.cpp ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.h) -FILE(GLOB ALL_SOURCECODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.cpp) -FILE(GLOB ALL_HEADERFILE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.h) -FILE(GLOB ALL_SOURCEANDTESTCODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.cpp ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.h ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Tests/*.cpp) -ADD_EXECUTABLE(NahidaProject.${MODULEID}Tests ${ALL_SOURCEANDTESTCODE} ${TESTFILE}) -ADD_LIBRARY(NahidaProject.${MODULEID}.IMPLEMENT STATIC ${ALL_SOURCECODE}) -ADD_LIBRARY(NahidaProject.${MODULEID} SHARED ${ALL_SOURCECODE}) - -IF(CMAKE_VERSION VERSION_GREATER 3.12) - SET_PROPERTY(TARGET NahidaProject.${MODULEID}Tests PROPERTY CXX_STANDARD 20) - SET_PROPERTY(TARGET NahidaProject.${MODULEID}.IMPLEMENT PROPERTY CXX_STANDARD 20) - SET_PROPERTY(TARGET NahidaProject.${MODULEID} PROPERTY CXX_STANDARD 20) -ENDIF() - -MESSAGE(STATUS "Build module [${MODULEID}] done.") +SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMakeModules) +INCLUDE(RegisterSubproject) +REGISTER_SUBPROJECT("HashAlgorithm") diff --git a/NahidaProject.Mathematics/CMakeLists.txt b/NahidaProject.Mathematics/CMakeLists.txt index 4cb8fe9..6cda15f 100644 --- a/NahidaProject.Mathematics/CMakeLists.txt +++ b/NahidaProject.Mathematics/CMakeLists.txt @@ -2,20 +2,6 @@ # ԴӵĿĿִļ CMAKE_MINIMUM_REQUIRED(VERSION 3.31 FATAL_ERROR) -SET(MODULEID "Mathematics") - -FILE(GLOB TESTFILE ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.cpp ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.h) -FILE(GLOB ALL_SOURCECODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.cpp) -FILE(GLOB ALL_HEADERFILE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.h) -FILE(GLOB ALL_SOURCEANDTESTCODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.cpp ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.h ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Tests/*.cpp) -ADD_EXECUTABLE(NahidaProject.${MODULEID}Tests ${ALL_SOURCEANDTESTCODE} ${TESTFILE}) -ADD_LIBRARY(NahidaProject.${MODULEID}.IMPLEMENT STATIC ${ALL_SOURCECODE}) -ADD_LIBRARY(NahidaProject.${MODULEID} SHARED ${ALL_SOURCECODE}) - -IF(CMAKE_VERSION VERSION_GREATER 3.12) - SET_PROPERTY(TARGET NahidaProject.${MODULEID}Tests PROPERTY CXX_STANDARD 20) - SET_PROPERTY(TARGET NahidaProject.${MODULEID}.IMPLEMENT PROPERTY CXX_STANDARD 20) - SET_PROPERTY(TARGET NahidaProject.${MODULEID} PROPERTY CXX_STANDARD 20) -ENDIF() - -MESSAGE(STATUS "Build module [${MODULEID}] done.") +SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMakeModules) +INCLUDE(RegisterSubproject) +REGISTER_SUBPROJECT("Mathematics") diff --git a/NahidaProject.Other/CMakeLists.txt b/NahidaProject.Other/CMakeLists.txt index 181f402..cfbcb91 100644 --- a/NahidaProject.Other/CMakeLists.txt +++ b/NahidaProject.Other/CMakeLists.txt @@ -2,20 +2,6 @@ # ԴӵĿĿִļ CMAKE_MINIMUM_REQUIRED(VERSION 3.31 FATAL_ERROR) -SET(MODULEID "Other") - -FILE(GLOB TESTFILE ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.cpp ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.h) -FILE(GLOB ALL_SOURCECODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.cpp) -FILE(GLOB ALL_HEADERFILE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.h) -FILE(GLOB ALL_SOURCEANDTESTCODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.cpp ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.h ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Tests/*.cpp) -ADD_EXECUTABLE(NahidaProject.${MODULEID}Tests ${ALL_SOURCEANDTESTCODE} ${TESTFILE}) -ADD_LIBRARY(NahidaProject.${MODULEID}.IMPLEMENT STATIC ${ALL_SOURCECODE}) -ADD_LIBRARY(NahidaProject.${MODULEID} SHARED ${ALL_SOURCECODE}) - -IF(CMAKE_VERSION VERSION_GREATER 3.12) - SET_PROPERTY(TARGET NahidaProject.${MODULEID}Tests PROPERTY CXX_STANDARD 20) - SET_PROPERTY(TARGET NahidaProject.${MODULEID}.IMPLEMENT PROPERTY CXX_STANDARD 20) - SET_PROPERTY(TARGET NahidaProject.${MODULEID} PROPERTY CXX_STANDARD 20) -ENDIF() - -MESSAGE(STATUS "Build module [${MODULEID}] done.") +SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMakeModules) +INCLUDE(RegisterSubproject) +REGISTER_SUBPROJECT("Other") diff --git a/NahidaProject.Other/Sources/Turtle.cpp b/NahidaProject.Other/Sources/Turtle.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/NahidaProject.Other/Sources/Turtle.h b/NahidaProject.Other/Sources/Turtle.h deleted file mode 100644 index e69de29..0000000 diff --git a/NahidaProject.Serialization/CMakeLists.txt b/NahidaProject.Serialization/CMakeLists.txt index bf9060d..7c5aca8 100644 --- a/NahidaProject.Serialization/CMakeLists.txt +++ b/NahidaProject.Serialization/CMakeLists.txt @@ -2,32 +2,6 @@ # 将源代码添加到此项目的可执行文件。 CMAKE_MINIMUM_REQUIRED(VERSION 3.31 FATAL_ERROR) -SET(MODULEID "Serialization") - -FILE(GLOB TESTFILE - ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.cpp - ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.h -) - -FILE(GLOB_RECURSE ALL_SOURCECODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.cpp) -FILE(GLOB_RECURSE ALL_HEADERFILE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.h) - -FILE(GLOB ALL_SOURCEANDTESTCODE - ${TESTFILE} - ${ALL_SOURCECODE} - ${ALL_HEADERFILE} - ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Tests/ModuleUnitTestFile.cpp -) - -ADD_EXECUTABLE(NahidaProject.${MODULEID}Tests ${ALL_SOURCEANDTESTCODE}) - -ADD_LIBRARY(NahidaProject.${MODULEID}.IMPLEMENT STATIC ${ALL_SOURCECODE} ${ALL_HEADERFILE}) -ADD_LIBRARY(NahidaProject.${MODULEID} SHARED ${ALL_SOURCECODE} ${ALL_HEADERFILE}) - -IF(CMAKE_VERSION VERSION_GREATER 3.12) - SET_PROPERTY(TARGET NahidaProject.${MODULEID}Tests PROPERTY CXX_STANDARD 20) - SET_PROPERTY(TARGET NahidaProject.${MODULEID}.IMPLEMENT PROPERTY CXX_STANDARD 20) - SET_PROPERTY(TARGET NahidaProject.${MODULEID} PROPERTY CXX_STANDARD 20) -ENDIF() - -MESSAGE(STATUS "Build module [${MODULEID}] done.") +SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMakeModules) +INCLUDE(RegisterSubproject) +REGISTER_SUBPROJECT("Serialization") diff --git a/NahidaProject.Serialization/Sources/YAML/YAMLWriter.cpp b/NahidaProject.Serialization/Sources/YAML/YAMLWriter.cpp index 3f88def..e965c17 100644 --- a/NahidaProject.Serialization/Sources/YAML/YAMLWriter.cpp +++ b/NahidaProject.Serialization/Sources/YAML/YAMLWriter.cpp @@ -25,7 +25,7 @@ std::string NahidaProject::YAMLWriter::FormatString(const std::string& str) { } // -std::string NahidaProject::YAMLWriter::GetIndent(int level = -1) { +std::string NahidaProject::YAMLWriter::GetIndent(int level) { if (level == -1) level = currentIndent; return std::string(level * INDENT_SIZE, ' '); } @@ -51,16 +51,16 @@ void NahidaProject::YAMLWriter::CloseFile() { // ʼĵ void NahidaProject::YAMLWriter::BeginDocument() { - AddLine("---"); + //AddLine("---"); } // ĵ void NahidaProject::YAMLWriter::EndDocument() { - AddLine("..."); + //AddLine("..."); } // дֵ -void NahidaProject::YAMLWriter::WriteKeyValue(const std::string& key, const std::string& value) { +void NahidaProject::YAMLWriter::WriteStringKeyValue(const std::string& key, const std::string& value) { AddLine(GetIndent() + key + ": " + FormatString(value)); } diff --git a/NahidaProject.Serialization/Sources/YAML/YAMLWriter.h b/NahidaProject.Serialization/Sources/YAML/YAMLWriter.h index 32297c1..f41d0a1 100644 --- a/NahidaProject.Serialization/Sources/YAML/YAMLWriter.h +++ b/NahidaProject.Serialization/Sources/YAML/YAMLWriter.h @@ -25,7 +25,7 @@ namespace NahidaProject { void CloseFile(); void BeginDocument(); void EndDocument(); - void WriteKeyValue(const std::string& key, const std::string& value); + void WriteStringKeyValue(const std::string& key, const std::string& value); void WriteKeyValue(const std::string& key, int value); void WriteKeyValue(const std::string& key, double value); void WriteKeyValue(const std::string& key, bool value); diff --git a/NahidaProject.Serialization/Tests/ModuleUnitTestFile.cpp b/NahidaProject.Serialization/Tests/ModuleUnitTestFile.cpp index 7cd984c..201e39d 100644 --- a/NahidaProject.Serialization/Tests/ModuleUnitTestFile.cpp +++ b/NahidaProject.Serialization/Tests/ModuleUnitTestFile.cpp @@ -12,6 +12,7 @@ #include "..\Sources\XML\XMLParser.h" #include "..\Sources\XML\XMLWriter.h" #include "..\Sources\YAML\YAML.h" +#include "..\Sources\YAML\YAMLWriter.h" Test(BSONTest) { try { @@ -56,6 +57,8 @@ Test(BSONTest) { catch (const std::exception& e) { std::cerr << "Error: " << e.what() << std::endl; } + + ::remove("test.bson"); } Test(CSVTest) { @@ -136,8 +139,12 @@ Test(JSONParseTest) { std::cout << "\nдļʧ" << std::endl; } + std::ifstream inputStream("output.json", std::ios::in); + std::ostringstream buffer; + buffer << inputStream.rdbuf(); + NahidaProject::JSON json; - json.Parse(""); + json.Parse(buffer.str()); AssertEqual(json["name"].ToString(), "\"Jack\""); AssertEqual(json["age"].ToString(), "18"); AssertEqual(json["area"].ToString(), R"(["c++","php","python","go"])"); @@ -146,6 +153,8 @@ Test(JSONParseTest) { AssertEqual(json["hobby"]["hobby3"].ToString(), "\"basketball\""); json.Clear(); + + ::remove("output.json"); } Test(MessagePackTest) { @@ -253,7 +262,7 @@ Test(XMLReadTest) { std::cout << " Price: " << price->GetText() << " " << price->GetAttribute("currency") << "\n"; } - std::cout << "\n"; + std::cout << "" << std::endl; } } } @@ -282,24 +291,30 @@ Test(XMLWriteTest) { } Test(YAMLTest) { - std::ofstream ofs("TestRead.yml", std::ios::out | std::ios::app); - ofs << R"(text: How are you? I am fine Thank you -number: 78.91 -boolValue: true -outer_object: - inner_object: - name: Ningguang - name: Ganyu)" << std::endl; - ofs.close(); - - NahidaProject::YAML::YAML yaml("TestRead.yml"); - AssertEqual(yaml["text"].cast(), "How are you? I am fine Thank you"); + NahidaProject::YAMLWriter writer; + + writer.OpenFile("example.yml"); + writer.BeginDocument(); + writer.WriteStringKeyValue("text", "How are you? I am fine Thank you"); + writer.WriteKeyValue("number", 78.91); + writer.WriteKeyValue("boolValue", true); + writer.BeginObject("outer_object"); + writer.BeginObject("inner_object"); + writer.WriteStringKeyValue("name", "Ningguang"); + writer.EndObject(); + writer.WriteStringKeyValue("name", "Ganyu"); + writer.EndObject(); + writer.EndDocument(); + writer.CloseFile(); + + NahidaProject::YAML::YAML yaml("example.yml"); + AssertEqual(yaml["text"].cast(), R"("How are you? I am fine Thank you")"); AssertEqual(yaml["number"].cast(), 78.91); AssertEqual(yaml["boolValue"].cast(), true); AssertEqual(yaml["outer_object"]["inner_object"]["name"].cast(), "Ningguang"); AssertEqual(yaml["outer_object"]["name"].cast(), "Ganyu"); - ::remove("TestRead.yml"); + ::remove("example.yml"); } int main() { diff --git a/NahidaProject.Thread/CMakeLists.txt b/NahidaProject.Thread/CMakeLists.txt index f56ea5c..cf98310 100644 --- a/NahidaProject.Thread/CMakeLists.txt +++ b/NahidaProject.Thread/CMakeLists.txt @@ -2,20 +2,6 @@ # ԴӵĿĿִļ CMAKE_MINIMUM_REQUIRED(VERSION 3.31 FATAL_ERROR) -SET(MODULEID "Thread") - -FILE(GLOB TESTFILE ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.cpp ${CMAKE_SOURCE_DIR}/NahidaProject.UnitTest/Sources/*.h) -FILE(GLOB ALL_SOURCECODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.cpp) -FILE(GLOB ALL_HEADERFILE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.h) -FILE(GLOB ALL_SOURCEANDTESTCODE ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.cpp ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Sources/*.h ${CMAKE_SOURCE_DIR}/NahidaProject.${MODULEID}/Tests/*.cpp) -ADD_EXECUTABLE(NahidaProject.${MODULEID}Tests ${ALL_SOURCEANDTESTCODE} ${TESTFILE}) -ADD_LIBRARY(NahidaProject.${MODULEID}.IMPLEMENT STATIC ${ALL_SOURCECODE}) -ADD_LIBRARY(NahidaProject.${MODULEID} SHARED ${ALL_SOURCECODE}) - -IF(CMAKE_VERSION VERSION_GREATER 3.12) - SET_PROPERTY(TARGET NahidaProject.${MODULEID}Tests PROPERTY CXX_STANDARD 20) - SET_PROPERTY(TARGET NahidaProject.${MODULEID}.IMPLEMENT PROPERTY CXX_STANDARD 20) - SET_PROPERTY(TARGET NahidaProject.${MODULEID} PROPERTY CXX_STANDARD 20) -ENDIF() - -MESSAGE(STATUS "Build module [${MODULEID}] done.") +SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMakeModules) +INCLUDE(RegisterSubproject) +REGISTER_SUBPROJECT("Thread") \ No newline at end of file diff --git a/README.md b/README.md index c8ad8c7..7803593 100644 --- a/README.md +++ b/README.md @@ -16,12 +16,18 @@ NahidaProject 十分小巧,却包含了常用的模块: |NahidaProject.Console |控制台模块 | |NahidaProject.Database |数据库模块 | |NahidaProject.Generic |通用模块 | +|NahidaProject.HashAlgorithm|散列计算模块 | |NahidaProject.Mathmatics |数学与算法模块 | |NahidaProject.Other |其他模块 | |NahidaProject.Serialization|序列化模块 | |NahidaProject.Thread |与线程,流程控制有关的模块 | |NahidaProject.UnitTest |微型单元、基准、模拟测试模块 | +### 代码的来源 + +* 开发者口口相传 +* 自己编写整理 + ## 参考文档 - [开发文档](https://gitee.com/hezonglun/nahida-project/tree/master/Documents) @@ -200,7 +206,7 @@ NahidaProject 中的代码,可以直接引入使用。但是我们更建议编 别忘了目录布局 ``` -├─NahidaProject-XXX +├─NahidaProject.XXX │ ├─Sources ---> 放置源代码 │ └─Tests ---> 放置单元测试代码 ``` -- Gitee