From d75e68c02791102dafd47e8efe7a152567ba1f4d Mon Sep 17 00:00:00 2001 From: Aleksandar Fabijanic Date: Mon, 23 Apr 2012 01:14:34 +0000 Subject: [PATCH] new trunk (base for 1.5) windows build only --- ApacheConnector/ApacheConnector.progen | 17 + ApacheConnector/ApacheConnector_VS71.sln | 21 + ApacheConnector/ApacheConnector_VS71.vcproj | 181 + ApacheConnector/ApacheConnector_VS80.sln | 21 + ApacheConnector/ApacheConnector_VS80.vcproj | 194 + ApacheConnector/ApacheConnector_vs100.sln | 21 + ApacheConnector/ApacheConnector_vs100.vcxproj | 133 + .../ApacheConnector_vs100.vcxproj.filters | 57 + ApacheConnector/ApacheConnector_vs90.sln | 21 + ApacheConnector/ApacheConnector_vs90.vcproj | 193 + ApacheConnector/ApacheConnector_x64_vs100.sln | 21 + .../ApacheConnector_x64_vs100.vcxproj | 133 + .../ApacheConnector_x64_vs100.vcxproj.filters | 57 + ApacheConnector/ApacheConnector_x64_vs90.sln | 21 + .../ApacheConnector_x64_vs90.vcproj | 194 + ApacheConnector/Makefile | 28 + ApacheConnector/dependencies | 4 + .../doc/ApacheConnectorUserGuide.page | 148 + ApacheConnector/include/ApacheApplication.h | 78 + ApacheConnector/include/ApacheChannel.h | 52 + ApacheConnector/include/ApacheConnector.h | 108 + .../include/ApacheRequestHandlerFactory.h | 77 + ApacheConnector/include/ApacheServerRequest.h | 120 + .../include/ApacheServerResponse.h | 144 + ApacheConnector/include/ApacheStream.h | 125 + .../samples/FormServer/FormServer.progen | 11 + .../FormServer/FormServer_vs100.vcxproj | 115 + .../FormServer_vs100.vcxproj.filters | 17 + .../samples/FormServer/FormServer_vs71.vcproj | 151 + .../samples/FormServer/FormServer_vs80.vcproj | 165 + .../samples/FormServer/FormServer_vs90.vcproj | 165 + .../FormServer/FormServer_x64_vs100.vcxproj | 115 + .../FormServer_x64_vs100.vcxproj.filters | 17 + .../FormServer/FormServer_x64_vs90.vcproj | 165 + ApacheConnector/samples/FormServer/Makefile | 17 + .../samples/FormServer/src/FormServer.cpp | 206 + ApacheConnector/samples/Makefile | 13 + ApacheConnector/samples/TimeServer/Makefile | 17 + .../samples/TimeServer/TimeServer.progen | 11 + .../TimeServer/TimeServer_vs100.vcxproj | 115 + .../TimeServer_vs100.vcxproj.filters | 17 + .../samples/TimeServer/TimeServer_vs71.vcproj | 151 + .../samples/TimeServer/TimeServer_vs80.vcproj | 165 + .../samples/TimeServer/TimeServer_vs90.vcproj | 165 + .../TimeServer/TimeServer_x64_vs100.vcxproj | 115 + .../TimeServer_x64_vs100.vcxproj.filters | 17 + .../TimeServer/TimeServer_x64_vs90.vcproj | 165 + .../samples/TimeServer/src/TimeServer.cpp | 95 + ApacheConnector/samples/dependencies | 4 + ApacheConnector/samples/samples.progen | 6 + ApacheConnector/samples/samples_vs100.sln | 29 + ApacheConnector/samples/samples_vs71.sln | 29 + ApacheConnector/samples/samples_vs80.sln | 29 + ApacheConnector/samples/samples_vs90.sln | 29 + ApacheConnector/samples/samples_x64_vs100.sln | 29 + ApacheConnector/samples/samples_x64_vs90.sln | 29 + ApacheConnector/src/ApacheApplication.cpp | 75 + ApacheConnector/src/ApacheChannel.cpp | 51 + ApacheConnector/src/ApacheConnector.cpp | 309 + .../src/ApacheRequestHandlerFactory.cpp | 136 + ApacheConnector/src/ApacheServerRequest.cpp | 82 + ApacheConnector/src/ApacheServerResponse.cpp | 151 + ApacheConnector/src/ApacheStream.cpp | 142 + CHANGELOG | 1695 + CONTRIBUTORS | 26 + CppParser/CppParser.progen | 17 + CppParser/CppParser_vs100.sln | 60 + CppParser/CppParser_vs100.vcxproj | 308 + CppParser/CppParser_vs100.vcxproj.filters | 135 + CppParser/CppParser_vs71.sln | 50 + CppParser/CppParser_vs71.vcproj | 458 + CppParser/CppParser_vs80.sln | 60 + CppParser/CppParser_vs80.vcproj | 479 + CppParser/CppParser_vs90.sln | 60 + CppParser/CppParser_vs90.vcproj | 478 + CppParser/CppParser_x64_vs100.sln | 60 + CppParser/CppParser_x64_vs100.vcxproj | 306 + CppParser/CppParser_x64_vs100.vcxproj.filters | 135 + CppParser/CppParser_x64_vs90.sln | 60 + CppParser/CppParser_x64_vs90.vcproj | 483 + CppParser/Makefile | 21 + CppParser/dependencies | 1 + CppParser/include/Poco/CppParser/Attributes.h | 141 + .../include/Poco/CppParser/AttributesParser.h | 136 + CppParser/include/Poco/CppParser/CppParser.h | 91 + CppParser/include/Poco/CppParser/CppToken.h | 293 + CppParser/include/Poco/CppParser/Decl.h | 84 + CppParser/include/Poco/CppParser/Enum.h | 99 + CppParser/include/Poco/CppParser/EnumValue.h | 88 + CppParser/include/Poco/CppParser/Function.h | 168 + CppParser/include/Poco/CppParser/NameSpace.h | 160 + CppParser/include/Poco/CppParser/Parameter.h | 164 + CppParser/include/Poco/CppParser/Parser.h | 149 + CppParser/include/Poco/CppParser/Struct.h | 208 + CppParser/include/Poco/CppParser/Symbol.h | 278 + CppParser/include/Poco/CppParser/Tokenizer.h | 66 + CppParser/include/Poco/CppParser/TypeDef.h | 71 + CppParser/include/Poco/CppParser/Utility.h | 107 + CppParser/include/Poco/CppParser/Variable.h | 114 + CppParser/src/Attributes.cpp | 168 + CppParser/src/AttributesParser.cpp | 169 + CppParser/src/CppToken.cpp | 749 + CppParser/src/Decl.cpp | 64 + CppParser/src/Enum.cpp | 115 + CppParser/src/EnumValue.cpp | 76 + CppParser/src/Function.cpp | 248 + CppParser/src/NameSpace.cpp | 268 + CppParser/src/Parameter.cpp | 167 + CppParser/src/Parser.cpp | 927 + CppParser/src/Struct.cpp | 277 + CppParser/src/Symbol.cpp | 238 + CppParser/src/Tokenizer.cpp | 68 + CppParser/src/TypeDef.cpp | 79 + CppParser/src/Utility.cpp | 316 + CppParser/src/Variable.cpp | 98 + CppParser/testsuite/Makefile | 19 + CppParser/testsuite/TestSuite.progen | 12 + CppParser/testsuite/TestSuite.vmsbuild | 9 + CppParser/testsuite/TestSuite_CE_vs90.vcproj | 512 + CppParser/testsuite/TestSuite_vs100.vcxproj | 317 + .../testsuite/TestSuite_vs100.vcxproj.filters | 69 + CppParser/testsuite/TestSuite_vs71.vcproj | 447 + CppParser/testsuite/TestSuite_vs80.vcproj | 487 + CppParser/testsuite/TestSuite_vs90.vcproj | 487 + .../testsuite/TestSuite_x64_vs100.vcxproj | 317 + .../TestSuite_x64_vs100.vcxproj.filters | 69 + CppParser/testsuite/TestSuite_x64_vs90.vcproj | 487 + .../testsuite/src/AttributesParserTest.cpp | 158 + .../testsuite/src/AttributesParserTest.h | 66 + .../testsuite/src/AttributesTestSuite.cpp | 44 + CppParser/testsuite/src/AttributesTestSuite.h | 49 + CppParser/testsuite/src/CppParserTest.cpp | 156 + CppParser/testsuite/src/CppParserTest.h | 61 + .../testsuite/src/CppParserTestSuite.cpp | 46 + CppParser/testsuite/src/CppParserTestSuite.h | 49 + CppParser/testsuite/src/Driver.cpp | 39 + CppParser/testsuite/src/WinDriver.cpp | 50 + CppUnit/CppUnit.vxbuild | 16 + CppUnit/CppUnit_CE_vs90.sln | 37 + CppUnit/CppUnit_CE_vs90.vcproj | 696 + CppUnit/CppUnit_vs100.sln | 49 + CppUnit/CppUnit_vs100.vcxproj | 409 + CppUnit/CppUnit_vs100.vcxproj.filters | 89 + CppUnit/CppUnit_vs71.sln | 50 + CppUnit/CppUnit_vs71.vcproj | 541 + CppUnit/CppUnit_vs80.sln | 48 + CppUnit/CppUnit_vs80.vcproj | 724 + CppUnit/CppUnit_vs90.sln | 48 + CppUnit/CppUnit_vs90.vcproj | 670 + CppUnit/CppUnit_x64_vs100.sln | 49 + CppUnit/CppUnit_x64_vs100.vcxproj | 409 + CppUnit/CppUnit_x64_vs100.vcxproj.filters | 89 + CppUnit/CppUnit_x64_vs90.sln | 49 + CppUnit/CppUnit_x64_vs90.vcproj | 670 + CppUnit/Makefile | 18 + .../WinTestRunner/WinTestRunner_vs100.vcxproj | 433 + .../WinTestRunner_vs100.vcxproj.filters | 61 + .../WinTestRunner/WinTestRunner_vs71.vcproj | 504 + .../WinTestRunner/WinTestRunner_vs80.vcproj | 678 + .../WinTestRunner/WinTestRunner_vs90.vcproj | 674 + .../WinTestRunner_x64_vs100.vcxproj | 433 + .../WinTestRunner_x64_vs100.vcxproj.filters | 61 + .../WinTestRunner_x64_vs90.vcproj | 674 + .../include/WinTestRunner/WinTestRunner.h | 77 + CppUnit/WinTestRunner/res/Resource.h | 27 + CppUnit/WinTestRunner/res/TestRunner.rc2 | 13 + CppUnit/WinTestRunner/res/WinTestRunner.rc | 175 + CppUnit/WinTestRunner/src/ActiveTest.cpp | 44 + CppUnit/WinTestRunner/src/ActiveTest.h | 89 + CppUnit/WinTestRunner/src/DLLMain.cpp | 50 + CppUnit/WinTestRunner/src/GUITestResult.cpp | 52 + CppUnit/WinTestRunner/src/GUITestResult.h | 83 + CppUnit/WinTestRunner/src/ProgressBar.cpp | 140 + CppUnit/WinTestRunner/src/ProgressBar.h | 74 + .../src/SynchronizedTestResult.h | 106 + .../WinTestRunner/src/TestResultDecorator.h | 102 + CppUnit/WinTestRunner/src/TestRunnerDlg.cpp | 439 + CppUnit/WinTestRunner/src/TestRunnerDlg.h | 94 + CppUnit/WinTestRunner/src/WinTestRunner.cpp | 96 + CppUnit/cppunit.vmsbuild | 14 + CppUnit/doc/README.html | 75 + CppUnit/doc/cookbook.htm | 164 + CppUnit/doc/license.htm | 15 + CppUnit/doc/test.gif | Bin 0 -> 19349 bytes CppUnit/include/CppUnit/CppUnit.h | 56 + CppUnit/include/CppUnit/CppUnitException.h | 141 + CppUnit/include/CppUnit/Guards.h | 19 + CppUnit/include/CppUnit/Orthodox.h | 105 + CppUnit/include/CppUnit/RepeatedTest.h | 77 + CppUnit/include/CppUnit/Test.h | 65 + CppUnit/include/CppUnit/TestCaller.h | 95 + CppUnit/include/CppUnit/TestCase.h | 249 + CppUnit/include/CppUnit/TestDecorator.h | 52 + CppUnit/include/CppUnit/TestFailure.h | 86 + CppUnit/include/CppUnit/TestResult.h | 231 + CppUnit/include/CppUnit/TestRunner.h | 103 + CppUnit/include/CppUnit/TestSetup.h | 57 + CppUnit/include/CppUnit/TestSuite.h | 98 + CppUnit/include/CppUnit/TextTestResult.h | 53 + CppUnit/include/CppUnit/estring.h | 73 + CppUnit/src/CppUnitException.cpp | 18 + CppUnit/src/TestCase.cpp | 182 + CppUnit/src/TestDecorator.cpp | 43 + CppUnit/src/TestFailure.cpp | 22 + CppUnit/src/TestResult.cpp | 29 + CppUnit/src/TestRunner.cpp | 188 + CppUnit/src/TestSuite.cpp | 49 + CppUnit/src/TextTestResult.cpp | 186 + Crypto/Crypto.progen | 23 + Crypto/Crypto_CE_VS90.sln | 60 + Crypto/Crypto_CE_VS90.vcproj | 560 + Crypto/Crypto_VS71.sln | 50 + Crypto/Crypto_VS71.vcproj | 492 + Crypto/Crypto_VS80.sln | 60 + Crypto/Crypto_VS80.vcproj | 513 + Crypto/Crypto_VS90.sln | 60 + Crypto/Crypto_VS90.vcproj | 512 + Crypto/Crypto_vs100.sln | 60 + Crypto/Crypto_vs100.vcxproj | 310 + Crypto/Crypto_vs100.vcxproj.filters | 129 + Crypto/Crypto_x64_vs100.sln | 60 + Crypto/Crypto_x64_vs100.vcxproj | 308 + Crypto/Crypto_x64_vs100.vcxproj.filters | 129 + Crypto/Crypto_x64_vs90.sln | 60 + Crypto/Crypto_x64_vs90.vcproj | 517 + Crypto/Makefile | 21 + Crypto/dependencies | 1 + Crypto/include/Poco/Crypto/Cipher.h | 160 + Crypto/include/Poco/Crypto/CipherFactory.h | 97 + Crypto/include/Poco/Crypto/CipherImpl.h | 91 + Crypto/include/Poco/Crypto/CipherKey.h | 204 + Crypto/include/Poco/Crypto/CipherKeyImpl.h | 192 + Crypto/include/Poco/Crypto/Crypto.h | 135 + Crypto/include/Poco/Crypto/CryptoStream.h | 214 + Crypto/include/Poco/Crypto/CryptoTransform.h | 92 + .../include/Poco/Crypto/OpenSSLInitializer.h | 133 + Crypto/include/Poco/Crypto/RSACipherImpl.h | 99 + Crypto/include/Poco/Crypto/RSADigestEngine.h | 128 + Crypto/include/Poco/Crypto/RSAKey.h | 145 + Crypto/include/Poco/Crypto/RSAKeyImpl.h | 150 + Crypto/include/Poco/Crypto/X509Certificate.h | 205 + Crypto/samples/Makefile | 12 + Crypto/samples/dependencies | 2 + Crypto/samples/genrsakey/Makefile | 19 + Crypto/samples/genrsakey/genrsakey.progen | 18 + .../genrsakey/genrsakey_CE_VS90.vcproj | 468 + .../samples/genrsakey/genrsakey_VS71.vcproj | 395 + .../samples/genrsakey/genrsakey_VS80.vcproj | 435 + .../samples/genrsakey/genrsakey_VS90.vcproj | 435 + .../samples/genrsakey/genrsakey_vs100.vcxproj | 299 + .../genrsakey/genrsakey_vs100.vcxproj.filters | 16 + .../genrsakey/genrsakey_x64_vs100.vcxproj | 299 + .../genrsakey_x64_vs100.vcxproj.filters | 16 + .../genrsakey/genrsakey_x64_vs90.vcproj | 435 + Crypto/samples/genrsakey/src/genrsakey.cpp | 218 + Crypto/samples/samples.progen | 4 + Crypto/samples/samples_CE_VS90.sln | 37 + Crypto/samples/samples_VS71.sln | 33 + Crypto/samples/samples_VS80.sln | 37 + Crypto/samples/samples_VS90.sln | 37 + Crypto/samples/samples_vs100.sln | 37 + Crypto/samples/samples_x64_vs100.sln | 37 + Crypto/samples/samples_x64_vs90.sln | 37 + Crypto/src/Cipher.cpp | 162 + Crypto/src/CipherFactory.cpp | 87 + Crypto/src/CipherImpl.cpp | 203 + Crypto/src/CipherKey.cpp | 67 + Crypto/src/CipherKeyImpl.cpp | 218 + Crypto/src/CryptoStream.cpp | 377 + Crypto/src/CryptoTransform.cpp | 54 + Crypto/src/OpenSSLInitializer.cpp | 172 + Crypto/src/RSACipherImpl.cpp | 340 + Crypto/src/RSADigestEngine.cpp | 113 + Crypto/src/RSAKey.cpp | 127 + Crypto/src/RSAKeyImpl.cpp | 339 + Crypto/src/X509Certificate.cpp | 303 + Crypto/testsuite/Makefile | 20 + Crypto/testsuite/TestSuite.progen | 16 + Crypto/testsuite/TestSuite.vmsbuild | 9 + Crypto/testsuite/TestSuite_CE_VS90.vcproj | 499 + Crypto/testsuite/TestSuite_VS71.vcproj | 434 + Crypto/testsuite/TestSuite_VS80.vcproj | 474 + Crypto/testsuite/TestSuite_VS90.vcproj | 474 + Crypto/testsuite/TestSuite_vs100.vcxproj | 315 + .../testsuite/TestSuite_vs100.vcxproj.filters | 54 + Crypto/testsuite/TestSuite_x64_vs100.vcxproj | 315 + .../TestSuite_x64_vs100.vcxproj.filters | 54 + Crypto/testsuite/TestSuite_x64_vs90.vcproj | 474 + Crypto/testsuite/src/CryptoTest.cpp | 225 + Crypto/testsuite/src/CryptoTest.h | 68 + Crypto/testsuite/src/CryptoTestSuite.cpp | 46 + Crypto/testsuite/src/CryptoTestSuite.h | 49 + Crypto/testsuite/src/Driver.cpp | 65 + Crypto/testsuite/src/RSATest.cpp | 253 + Crypto/testsuite/src/RSATest.h | 65 + Crypto/testsuite/src/WinCEDriver.cpp | 70 + Crypto/testsuite/src/WinDriver.cpp | 68 + DLLVersion.rc | 40 + Data/CMakeLists.txt | 52 + Data/Data.progen | 16 + Data/Data_VS71.sln | 42 + Data/Data_VS71.vcproj | 540 + Data/Data_VS80.sln | 38 + Data/Data_VS80.vcproj | 721 + Data/Data_VS90.sln | 38 + Data/Data_VS90.vcproj | 726 + Data/Data_vs100.sln | 90 + Data/Data_vs100.vcxproj | 617 + Data/Data_vs100.vcxproj.filters | 288 + Data/Makefile | 24 + Data/MySQL/CMakeLists.txt | 31 + Data/MySQL/Makefile | 23 + Data/MySQL/MySQL.progen | 17 + Data/MySQL/MySQL_VS80.sln | 36 + Data/MySQL/MySQL_VS80.vcproj | 279 + Data/MySQL/MySQL_VS90.sln | 39 + Data/MySQL/MySQL_VS90.vcproj | 278 + Data/MySQL/MySQL_vs100.sln | 90 + Data/MySQL/MySQL_vs100.vcxproj | 549 + Data/MySQL/MySQL_vs100.vcxproj.filters | 78 + Data/MySQL/include/Poco/Data/MySQL/Binder.h | 272 + .../MySQL/include/Poco/Data/MySQL/Connector.h | 80 + .../MySQL/include/Poco/Data/MySQL/Extractor.h | 353 + Data/MySQL/include/Poco/Data/MySQL/MySQL.h | 90 + .../include/Poco/Data/MySQL/MySQLException.h | 178 + .../Poco/Data/MySQL/MySQLStatementImpl.h | 125 + .../include/Poco/Data/MySQL/ResultMetadata.h | 89 + .../include/Poco/Data/MySQL/SessionHandle.h | 114 + .../include/Poco/Data/MySQL/SessionImpl.h | 252 + .../Poco/Data/MySQL/StatementExecutor.h | 118 + Data/MySQL/src/Binder.cpp | 643 + Data/MySQL/src/Connector.cpp | 93 + Data/MySQL/src/Extractor.cpp | 656 + Data/MySQL/src/MySQLException.cpp | 160 + Data/MySQL/src/MySQLStatementImpl.cpp | 181 + Data/MySQL/src/ResultMetadata.cpp | 246 + Data/MySQL/src/SessionHandle.cpp | 134 + Data/MySQL/src/SessionImpl.cpp | 289 + Data/MySQL/src/StatementExecutor.cpp | 153 + Data/MySQL/testsuite/CMakeLists.txt | 19 + Data/MySQL/testsuite/Makefile | 20 + Data/MySQL/testsuite/TestSuite.progen | 10 + Data/MySQL/testsuite/TestSuite_VS80.vcproj | 259 + Data/MySQL/testsuite/TestSuite_VS90.vcproj | 258 + Data/MySQL/testsuite/TestSuite_vs100.vcxproj | 599 + .../testsuite/TestSuite_vs100.vcxproj.filters | 54 + Data/MySQL/testsuite/src/Driver.cpp | 39 + Data/MySQL/testsuite/src/MySQLTest.cpp | 829 + Data/MySQL/testsuite/src/MySQLTest.h | 146 + Data/MySQL/testsuite/src/MySQLTestSuite.cpp | 48 + Data/MySQL/testsuite/src/MySQLTestSuite.h | 51 + Data/MySQL/testsuite/src/SQLExecutor.cpp | 1846 + Data/MySQL/testsuite/src/SQLExecutor.h | 125 + Data/MySQL/testsuite/src/WinDriver.cpp | 50 + Data/ODBC/CMakeLists.txt | 44 + Data/ODBC/Makefile | 51 + Data/ODBC/ODBC.progen | 17 + Data/ODBC/ODBC_VS71.sln | 42 + Data/ODBC/ODBC_VS71.vcproj | 465 + Data/ODBC/ODBC_VS80.sln | 38 + Data/ODBC/ODBC_VS80.vcproj | 573 + Data/ODBC/ODBC_VS90.sln | 38 + Data/ODBC/ODBC_VS90.vcproj | 567 + Data/ODBC/ODBC_vs100.sln | 90 + Data/ODBC/ODBC_vs100.vcxproj | 561 + Data/ODBC/ODBC_vs100.vcxproj.filters | 111 + Data/ODBC/dependencies | 2 + Data/ODBC/include/Poco/Data/ODBC/Binder.h | 1390 + .../include/Poco/Data/ODBC/ConnectionHandle.h | 118 + Data/ODBC/include/Poco/Data/ODBC/Connector.h | 93 + .../ODBC/include/Poco/Data/ODBC/Diagnostics.h | 261 + .../Poco/Data/ODBC/EnvironmentHandle.h | 116 + Data/ODBC/include/Poco/Data/ODBC/Error.h | 146 + Data/ODBC/include/Poco/Data/ODBC/Extractor.h | 687 + Data/ODBC/include/Poco/Data/ODBC/Handle.h | 131 + Data/ODBC/include/Poco/Data/ODBC/ODBC.h | 99 + .../include/Poco/Data/ODBC/ODBCException.h | 171 + .../include/Poco/Data/ODBC/ODBCMetaColumn.h | 111 + .../Poco/Data/ODBC/ODBCStatementImpl.h | 228 + Data/ODBC/include/Poco/Data/ODBC/Parameter.h | 133 + Data/ODBC/include/Poco/Data/ODBC/Preparator.h | 1226 + .../ODBC/include/Poco/Data/ODBC/SessionImpl.h | 281 + Data/ODBC/include/Poco/Data/ODBC/TypeInfo.h | 139 + Data/ODBC/include/Poco/Data/ODBC/Unicode.h | 1007 + .../include/Poco/Data/ODBC/Unicode_UNIXODBC.h | 73 + .../include/Poco/Data/ODBC/Unicode_WIN32.h | 87 + Data/ODBC/include/Poco/Data/ODBC/Utility.h | 229 + Data/ODBC/src/Binder.cpp | 473 + Data/ODBC/src/ConnectionHandle.cpp | 72 + Data/ODBC/src/Connector.cpp | 79 + Data/ODBC/src/EnvironmentHandle.cpp | 69 + Data/ODBC/src/Extractor.cpp | 1215 + Data/ODBC/src/ODBCException.cpp | 52 + Data/ODBC/src/ODBCMetaColumn.cpp | 163 + Data/ODBC/src/ODBCStatementImpl.cpp | 466 + Data/ODBC/src/Parameter.cpp | 75 + Data/ODBC/src/Preparator.cpp | 212 + Data/ODBC/src/SessionImpl.cpp | 421 + Data/ODBC/src/TypeInfo.cpp | 287 + Data/ODBC/src/Unicode.cpp | 44 + Data/ODBC/src/Unicode_UNIXODBC.cpp | 797 + Data/ODBC/src/Unicode_WIN32.cpp | 781 + Data/ODBC/src/Utility.cpp | 181 + Data/ODBC/testsuite/CMakeLists.txt | 26 + Data/ODBC/testsuite/Makefile | 44 + Data/ODBC/testsuite/TestSuite.progen | 10 + Data/ODBC/testsuite/TestSuite_VS71.vcproj | 351 + Data/ODBC/testsuite/TestSuite_VS80.vcproj | 491 + Data/ODBC/testsuite/TestSuite_VS90.vcproj | 488 + Data/ODBC/testsuite/TestSuite_vs100.vcxproj | 613 + .../testsuite/TestSuite_vs100.vcxproj.filters | 96 + Data/ODBC/testsuite/src/Driver.cpp | 39 + Data/ODBC/testsuite/src/ODBCAccessTest.cpp | 237 + Data/ODBC/testsuite/src/ODBCAccessTest.h | 80 + Data/ODBC/testsuite/src/ODBCDB2Test.cpp | 690 + Data/ODBC/testsuite/src/ODBCDB2Test.h | 94 + Data/ODBC/testsuite/src/ODBCMySQLTest.cpp | 506 + Data/ODBC/testsuite/src/ODBCMySQLTest.h | 99 + Data/ODBC/testsuite/src/ODBCOracleTest.cpp | 942 + Data/ODBC/testsuite/src/ODBCOracleTest.h | 112 + .../ODBC/testsuite/src/ODBCPostgreSQLTest.cpp | 668 + Data/ODBC/testsuite/src/ODBCPostgreSQLTest.h | 116 + Data/ODBC/testsuite/src/ODBCSQLServerTest.cpp | 818 + Data/ODBC/testsuite/src/ODBCSQLServerTest.h | 107 + Data/ODBC/testsuite/src/ODBCSQLiteTest.cpp | 409 + Data/ODBC/testsuite/src/ODBCSQLiteTest.h | 86 + Data/ODBC/testsuite/src/ODBCTest.cpp | 1304 + Data/ODBC/testsuite/src/ODBCTest.h | 417 + Data/ODBC/testsuite/src/ODBCTestSuite.cpp | 81 + Data/ODBC/testsuite/src/ODBCTestSuite.h | 52 + Data/ODBC/testsuite/src/SQLExecutor.cpp | 3827 + Data/ODBC/testsuite/src/SQLExecutor.h | 542 + Data/ODBC/testsuite/src/WinDriver.cpp | 50 + Data/ODBC/testsuite/test.mdb | Bin 0 -> 516096 bytes Data/SQLite/CMakeLists.txt | 48 + Data/SQLite/Makefile | 30 + Data/SQLite/SQLite.progen | 18 + Data/SQLite/SQLite_VS71.sln | 42 + Data/SQLite/SQLite_VS71.vcproj | 328 + Data/SQLite/SQLite_VS80.sln | 38 + Data/SQLite/SQLite_VS80.vcproj | 449 + Data/SQLite/SQLite_VS90.sln | 38 + Data/SQLite/SQLite_VS90.vcproj | 446 + Data/SQLite/SQLite_vs100.sln | 90 + Data/SQLite/SQLite_vs100.vcxproj | 547 + Data/SQLite/SQLite_vs100.vcxproj.filters | 78 + Data/SQLite/dependencies | 2 + Data/SQLite/include/Poco/Data/SQLite/Binder.h | 239 + .../include/Poco/Data/SQLite/Connector.h | 101 + .../include/Poco/Data/SQLite/Extractor.h | 328 + Data/SQLite/include/Poco/Data/SQLite/SQLite.h | 92 + .../Poco/Data/SQLite/SQLiteException.h | 82 + .../Poco/Data/SQLite/SQLiteStatementImpl.h | 177 + .../include/Poco/Data/SQLite/SessionImpl.h | 163 + .../SQLite/include/Poco/Data/SQLite/Utility.h | 104 + Data/SQLite/src/Binder.cpp | 142 + Data/SQLite/src/Connector.cpp | 96 + Data/SQLite/src/Extractor.cpp | 262 + Data/SQLite/src/SQLiteException.cpp | 73 + Data/SQLite/src/SQLiteStatementImpl.cpp | 311 + Data/SQLite/src/SessionImpl.cpp | 229 + Data/SQLite/src/Utility.cpp | 258 + Data/SQLite/src/sqlite3.c | 133611 +++++++++++++++ Data/SQLite/src/sqlite3.h | 6949 + Data/SQLite/testsuite/CMakeLists.txt | 18 + Data/SQLite/testsuite/Makefile | 18 + Data/SQLite/testsuite/TestSuite.progen | 9 + Data/SQLite/testsuite/TestSuite_VS71.vcproj | 303 + Data/SQLite/testsuite/TestSuite_VS80.vcproj | 426 + Data/SQLite/testsuite/TestSuite_VS90.vcproj | 420 + Data/SQLite/testsuite/TestSuite_vs100.vcxproj | 597 + .../testsuite/TestSuite_vs100.vcxproj.filters | 48 + Data/SQLite/testsuite/dsk.db | Bin 0 -> 3072 bytes Data/SQLite/testsuite/dummy.db | Bin 0 -> 19456 bytes Data/SQLite/testsuite/src/Driver.cpp | 39 + Data/SQLite/testsuite/src/SQLiteTest.cpp | 2581 + Data/SQLite/testsuite/src/SQLiteTest.h | 144 + Data/SQLite/testsuite/src/SQLiteTestSuite.cpp | 44 + Data/SQLite/testsuite/src/SQLiteTestSuite.h | 49 + Data/SQLite/testsuite/src/WinDriver.cpp | 50 + Data/dependencies | 1 + Data/doc/DataDeveloperManual.page | 429 + Data/doc/DataReleaseNotes.page | 26 + Data/doc/DataUserManual.page | 529 + Data/doc/info.txt | 3 + Data/include/Poco/Data/AbstractBinder.h | 379 + Data/include/Poco/Data/AbstractBinding.h | 164 + Data/include/Poco/Data/AbstractExtraction.h | 265 + Data/include/Poco/Data/AbstractExtractor.h | 355 + Data/include/Poco/Data/AbstractPreparation.h | 87 + Data/include/Poco/Data/AbstractPreparator.h | 392 + Data/include/Poco/Data/AbstractSessionImpl.h | 334 + Data/include/Poco/Data/ArchiveStrategy.h | 244 + Data/include/Poco/Data/AutoTransaction.h | 57 + Data/include/Poco/Data/Binding.h | 1472 + Data/include/Poco/Data/Bulk.h | 118 + Data/include/Poco/Data/BulkBinding.h | 170 + Data/include/Poco/Data/BulkExtraction.h | 289 + Data/include/Poco/Data/Column.h | 512 + Data/include/Poco/Data/Connector.h | 78 + Data/include/Poco/Data/Constants.h | 58 + Data/include/Poco/Data/Data.h | 92 + Data/include/Poco/Data/DataException.h | 72 + Data/include/Poco/Data/Date.h | 247 + Data/include/Poco/Data/DynamicDateTime.h | 69 + Data/include/Poco/Data/DynamicLOB.h | 67 + Data/include/Poco/Data/Extraction.h | 815 + Data/include/Poco/Data/LOB.h | 330 + Data/include/Poco/Data/LOBStream.h | 172 + Data/include/Poco/Data/Limit.h | 133 + Data/include/Poco/Data/MetaColumn.h | 209 + Data/include/Poco/Data/Nullable.h | 217 + Data/include/Poco/Data/PooledSessionHolder.h | 121 + Data/include/Poco/Data/PooledSessionImpl.h | 119 + Data/include/Poco/Data/Position.h | 97 + Data/include/Poco/Data/Preparation.h | 183 + Data/include/Poco/Data/Range.h | 126 + Data/include/Poco/Data/RecordSet.h | 676 + Data/include/Poco/Data/Row.h | 337 + Data/include/Poco/Data/RowFilter.h | 285 + Data/include/Poco/Data/RowFormatter.h | 256 + Data/include/Poco/Data/RowIterator.h | 171 + Data/include/Poco/Data/SQLChannel.h | 239 + Data/include/Poco/Data/Session.h | 506 + Data/include/Poco/Data/SessionFactory.h | 119 + Data/include/Poco/Data/SessionImpl.h | 243 + Data/include/Poco/Data/SessionPool.h | 239 + Data/include/Poco/Data/SessionPoolContainer.h | 120 + Data/include/Poco/Data/SimpleRowFormatter.h | 133 + Data/include/Poco/Data/Statement.h | 847 + Data/include/Poco/Data/StatementCreator.h | 95 + Data/include/Poco/Data/StatementImpl.h | 645 + Data/include/Poco/Data/Time.h | 251 + Data/include/Poco/Data/Transaction.h | 216 + Data/include/Poco/Data/TypeHandler.h | 2117 + Data/samples/Binding/Binding.progen | 10 + Data/samples/Binding/Binding_vs100.vcxproj | 299 + .../Binding/Binding_vs100.vcxproj.filters | 16 + Data/samples/Binding/Binding_vs71.vcproj | 263 + Data/samples/Binding/Binding_vs80.vcproj | 386 + Data/samples/Binding/Binding_vs90.vcproj | 376 + Data/samples/Binding/CMakeLists.txt | 8 + Data/samples/Binding/Makefile | 17 + Data/samples/Binding/src/Binding.cpp | 115 + Data/samples/CMakeLists.txt | 5 + Data/samples/Makefile | 16 + Data/samples/RecordSet/CMakeLists.txt | 8 + Data/samples/RecordSet/Makefile | 17 + Data/samples/RecordSet/RecordSet.progen | 10 + .../samples/RecordSet/RecordSet_vs100.vcxproj | 299 + .../RecordSet/RecordSet_vs100.vcxproj.filters | 16 + Data/samples/RecordSet/RecordSet_vs71.vcproj | 263 + Data/samples/RecordSet/RecordSet_vs80.vcproj | 386 + Data/samples/RecordSet/RecordSet_vs90.vcproj | 376 + Data/samples/RecordSet/src/RecordSet.cpp | 101 + Data/samples/RowFormatter/CMakeLists.txt | 8 + Data/samples/RowFormatter/Makefile | 17 + .../RowFormatter/RowFormatter_vs71.vcproj | 263 + .../RowFormatter/RowFormatter_vs80.vcproj | 386 + .../RowFormatter/RowFormatter_vs90.vcproj | 376 + .../samples/RowFormatter/src/RowFormatter.cpp | 137 + Data/samples/Tuple/CMakeLists.txt | 8 + Data/samples/Tuple/Makefile | 17 + Data/samples/Tuple/Tuple.progen | 10 + Data/samples/Tuple/Tuple_vs100.vcxproj | 299 + .../samples/Tuple/Tuple_vs100.vcxproj.filters | 16 + Data/samples/Tuple/Tuple_vs71.vcproj | 263 + Data/samples/Tuple/Tuple_vs80.vcproj | 386 + Data/samples/Tuple/Tuple_vs90.vcproj | 376 + Data/samples/Tuple/src/Tuple.cpp | 90 + Data/samples/TypeHandler/CMakeLists.txt | 8 + Data/samples/TypeHandler/Makefile | 17 + Data/samples/TypeHandler/TypeHandler.progen | 10 + .../TypeHandler/TypeHandler_vs100.vcxproj | 299 + .../TypeHandler_vs100.vcxproj.filters | 16 + .../TypeHandler/TypeHandler_vs71.vcproj | 263 + .../TypeHandler/TypeHandler_vs80.vcproj | 382 + .../TypeHandler/TypeHandler_vs90.vcproj | 376 + Data/samples/TypeHandler/src/TypeHandler.cpp | 155 + Data/samples/dependencies | 2 + Data/samples/samples.progen | 8 + Data/samples/samples_vs100.sln | 97 + Data/samples/samples_vs71.sln | 77 + Data/samples/samples_vs80.sln | 66 + Data/samples/samples_vs90.sln | 66 + Data/src/AbstractBinder.cpp | 517 + Data/src/AbstractBinding.cpp | 67 + Data/src/AbstractExtraction.cpp | 73 + Data/src/AbstractExtractor.cpp | 435 + Data/src/AbstractPreparation.cpp | 56 + Data/src/AbstractPreparator.cpp | 436 + Data/src/ArchiveStrategy.cpp | 168 + Data/src/Bulk.cpp | 59 + Data/src/Connector.cpp | 54 + Data/src/DataException.cpp | 63 + Data/src/Date.cpp | 150 + Data/src/DynamicLOB.cpp | 85 + Data/src/Limit.cpp | 57 + Data/src/MetaColumn.cpp | 70 + Data/src/PooledSessionHolder.cpp | 56 + Data/src/PooledSessionImpl.cpp | 207 + Data/src/Position.cpp | 54 + Data/src/Range.cpp | 62 + Data/src/RecordSet.cpp | 390 + Data/src/Row.cpp | 410 + Data/src/RowFilter.cpp | 230 + Data/src/RowFormatter.cpp | 102 + Data/src/RowIterator.cpp | 229 + Data/src/SQLChannel.cpp | 306 + Data/src/Session.cpp | 100 + Data/src/SessionFactory.cpp | 112 + Data/src/SessionImpl.cpp | 74 + Data/src/SessionPool.cpp | 317 + Data/src/SessionPoolContainer.cpp | 128 + Data/src/SimpleRowFormatter.cpp | 130 + Data/src/Statement.cpp | 318 + Data/src/StatementCreator.cpp | 82 + Data/src/StatementImpl.cpp | 485 + Data/src/Time.cpp | 147 + Data/src/Transaction.cpp | 134 + Data/testsuite/CMakeLists.txt | 25 + Data/testsuite/Makefile | 27 + Data/testsuite/TestSuite.progen | 9 + Data/testsuite/TestSuite.vmsbuild | 16 + Data/testsuite/TestSuite_VS71.vcproj | 369 + Data/testsuite/TestSuite_VS80.vcproj | 507 + Data/testsuite/TestSuite_VS90.vcproj | 504 + Data/testsuite/TestSuite_vs100.vcxproj | 611 + .../testsuite/TestSuite_vs100.vcxproj.filters | 108 + Data/testsuite/src/Binder.cpp | 165 + Data/testsuite/src/Binder.h | 129 + Data/testsuite/src/Connector.cpp | 75 + Data/testsuite/src/Connector.h | 87 + Data/testsuite/src/DataTest.cpp | 1420 + Data/testsuite/src/DataTest.h | 89 + Data/testsuite/src/DataTestSuite.cpp | 46 + Data/testsuite/src/DataTestSuite.h | 49 + Data/testsuite/src/Driver.cpp | 39 + Data/testsuite/src/Extractor.cpp | 195 + Data/testsuite/src/Extractor.h | 143 + Data/testsuite/src/Preparator.cpp | 160 + Data/testsuite/src/Preparator.h | 128 + Data/testsuite/src/SessionImpl.cpp | 190 + Data/testsuite/src/SessionImpl.h | 133 + Data/testsuite/src/SessionPoolTest.cpp | 275 + Data/testsuite/src/SessionPoolTest.h | 61 + Data/testsuite/src/StatementImpl.cpp | 104 + Data/testsuite/src/StatementImpl.h | 113 + Data/testsuite/src/TestStatementImpl.cpp | 123 + Data/testsuite/src/TestStatementImpl.h | 139 + Data/testsuite/src/WinDriver.cpp | 50 + Foundation/Foundation.vxbuild | 159 + Foundation/Foundation_CE_vs90.sln | 107 + Foundation/Foundation_CE_vs90.vcproj | 6729 + Foundation/Foundation_vs100.sln | 85 + Foundation/Foundation_vs100.vcxproj | 1308 + Foundation/Foundation_vs100.vcxproj.filters | 1814 + Foundation/Foundation_vs71.sln | 85 + Foundation/Foundation_vs71.vcproj | 4637 + Foundation/Foundation_vs80.sln | 81 + Foundation/Foundation_vs80.vcproj | 6009 + Foundation/Foundation_vs90.sln | 81 + Foundation/Foundation_vs90.vcproj | 6006 + Foundation/Foundation_x64_vs100.sln | 83 + Foundation/Foundation_x64_vs100.vcxproj | 1309 + .../Foundation_x64_vs100.vcxproj.filters | 1775 + Foundation/Foundation_x64_vs90.sln | 83 + Foundation/Foundation_x64_vs90.vcproj | 6004 + Foundation/Makefile | 62 + Foundation/extradirs | 1 + Foundation/foundation.vmsbuild | 126 + Foundation/include/Poco/ASCIIEncoding.h | 73 + Foundation/include/Poco/AbstractCache.h | 381 + Foundation/include/Poco/AbstractDelegate.h | 92 + Foundation/include/Poco/AbstractEvent.h | 351 + Foundation/include/Poco/AbstractObserver.h | 72 + .../include/Poco/AbstractPriorityDelegate.h | 85 + Foundation/include/Poco/AbstractStrategy.h | 99 + .../include/Poco/AccessExpirationDecorator.h | 105 + Foundation/include/Poco/AccessExpireCache.h | 85 + .../include/Poco/AccessExpireLRUCache.h | 84 + .../include/Poco/AccessExpireStrategy.h | 93 + Foundation/include/Poco/ActiveDispatcher.h | 138 + Foundation/include/Poco/ActiveMethod.h | 240 + Foundation/include/Poco/ActiveResult.h | 517 + Foundation/include/Poco/ActiveRunnable.h | 253 + Foundation/include/Poco/ActiveStarter.h | 70 + Foundation/include/Poco/Activity.h | 218 + Foundation/include/Poco/Any.h | 286 + Foundation/include/Poco/ArchiveStrategy.h | 168 + Foundation/include/Poco/Array.h | 271 + Foundation/include/Poco/Ascii.h | 242 + Foundation/include/Poco/AsyncChannel.h | 122 + Foundation/include/Poco/AtomicCounter.h | 375 + Foundation/include/Poco/AutoPtr.h | 378 + Foundation/include/Poco/AutoReleasePool.h | 108 + Foundation/include/Poco/Base64Decoder.h | 126 + Foundation/include/Poco/Base64Encoder.h | 144 + Foundation/include/Poco/BasicEvent.h | 82 + Foundation/include/Poco/BinaryReader.h | 220 + Foundation/include/Poco/BinaryWriter.h | 229 + Foundation/include/Poco/Buffer.h | 148 + Foundation/include/Poco/BufferAllocator.h | 74 + .../Poco/BufferedBidirectionalStreamBuf.h | 196 + Foundation/include/Poco/BufferedStreamBuf.h | 188 + Foundation/include/Poco/Bugcheck.h | 184 + Foundation/include/Poco/ByteOrder.h | 227 + Foundation/include/Poco/Channel.h | 100 + Foundation/include/Poco/Checksum.h | 130 + Foundation/include/Poco/ClassLibrary.h | 123 + Foundation/include/Poco/ClassLoader.h | 385 + Foundation/include/Poco/Condition.h | 159 + Foundation/include/Poco/Config.h | 122 + Foundation/include/Poco/Configurable.h | 92 + Foundation/include/Poco/ConsoleChannel.h | 89 + Foundation/include/Poco/CountingStream.h | 241 + Foundation/include/Poco/DateTime.h | 437 + Foundation/include/Poco/DateTimeFormat.h | 131 + Foundation/include/Poco/DateTimeFormatter.h | 237 + Foundation/include/Poco/DateTimeParser.h | 130 + Foundation/include/Poco/Debugger.h | 95 + Foundation/include/Poco/DefaultStrategy.h | 135 + Foundation/include/Poco/DeflatingStream.h | 223 + Foundation/include/Poco/Delegate.h | 269 + Foundation/include/Poco/DigestEngine.h | 125 + Foundation/include/Poco/DigestStream.h | 122 + Foundation/include/Poco/DirectoryIterator.h | 173 + .../include/Poco/DirectoryIterator_UNIX.h | 94 + .../include/Poco/DirectoryIterator_VMS.h | 97 + .../include/Poco/DirectoryIterator_WIN32.h | 95 + .../include/Poco/DirectoryIterator_WIN32U.h | 95 + Foundation/include/Poco/Dynamic/Pair.h | 427 + Foundation/include/Poco/Dynamic/Struct.h | 564 + Foundation/include/Poco/Dynamic/Var.h | 1968 + Foundation/include/Poco/Dynamic/VarHolder.h | 3046 + Foundation/include/Poco/DynamicAny.h | 46 + Foundation/include/Poco/DynamicAnyHolder.h | 46 + Foundation/include/Poco/DynamicFactory.h | 158 + Foundation/include/Poco/DynamicStruct.h | 46 + Foundation/include/Poco/Environment.h | 131 + Foundation/include/Poco/Environment_UNIX.h | 78 + Foundation/include/Poco/Environment_VMS.h | 79 + Foundation/include/Poco/Environment_VX.h | 78 + Foundation/include/Poco/Environment_WIN32.h | 70 + Foundation/include/Poco/Environment_WIN32U.h | 70 + Foundation/include/Poco/Environment_WINCE.h | 81 + Foundation/include/Poco/ErrorHandler.h | 142 + Foundation/include/Poco/Event.h | 145 + Foundation/include/Poco/EventArgs.h | 67 + Foundation/include/Poco/EventLogChannel.h | 127 + Foundation/include/Poco/Event_POSIX.h | 99 + Foundation/include/Poco/Event_VX.h | 71 + Foundation/include/Poco/Event_WIN32.h | 90 + Foundation/include/Poco/Exception.h | 280 + Foundation/include/Poco/ExpirationDecorator.h | 114 + Foundation/include/Poco/Expire.h | 135 + Foundation/include/Poco/ExpireCache.h | 87 + Foundation/include/Poco/ExpireLRUCache.h | 84 + Foundation/include/Poco/ExpireStrategy.h | 152 + Foundation/include/Poco/FIFOEvent.h | 85 + Foundation/include/Poco/FIFOStrategy.h | 81 + Foundation/include/Poco/FPEnvironment.h | 227 + Foundation/include/Poco/FPEnvironment_C99.h | 147 + Foundation/include/Poco/FPEnvironment_DEC.h | 111 + Foundation/include/Poco/FPEnvironment_DUMMY.h | 147 + Foundation/include/Poco/FPEnvironment_SUN.h | 96 + Foundation/include/Poco/FPEnvironment_WIN32.h | 153 + Foundation/include/Poco/File.h | 302 + Foundation/include/Poco/FileChannel.h | 258 + Foundation/include/Poco/FileStream.h | 198 + Foundation/include/Poco/FileStreamFactory.h | 83 + Foundation/include/Poco/FileStream_POSIX.h | 94 + Foundation/include/Poco/FileStream_WIN32.h | 93 + Foundation/include/Poco/File_UNIX.h | 102 + Foundation/include/Poco/File_VMS.h | 101 + Foundation/include/Poco/File_VX.h | 102 + Foundation/include/Poco/File_WIN32.h | 104 + Foundation/include/Poco/File_WIN32U.h | 105 + Foundation/include/Poco/File_WINCE.h | 105 + Foundation/include/Poco/Format.h | 152 + Foundation/include/Poco/Formatter.h | 96 + Foundation/include/Poco/FormattingChannel.h | 118 + Foundation/include/Poco/Foundation.h | 150 + Foundation/include/Poco/FunctionDelegate.h | 260 + .../include/Poco/FunctionPriorityDelegate.h | 266 + Foundation/include/Poco/Glob.h | 162 + Foundation/include/Poco/HMACEngine.h | 168 + Foundation/include/Poco/Hash.h | 127 + Foundation/include/Poco/HashFunction.h | 79 + Foundation/include/Poco/HashMap.h | 244 + Foundation/include/Poco/HashSet.h | 199 + Foundation/include/Poco/HashStatistic.h | 148 + Foundation/include/Poco/HashTable.h | 392 + Foundation/include/Poco/HexBinaryDecoder.h | 116 + Foundation/include/Poco/HexBinaryEncoder.h | 139 + Foundation/include/Poco/InflatingStream.h | 232 + Foundation/include/Poco/Instantiator.h | 104 + Foundation/include/Poco/KeyValueArgs.h | 95 + Foundation/include/Poco/LRUCache.h | 78 + Foundation/include/Poco/LRUStrategy.h | 162 + Foundation/include/Poco/Latin1Encoding.h | 73 + Foundation/include/Poco/Latin2Encoding.h | 76 + Foundation/include/Poco/Latin9Encoding.h | 76 + Foundation/include/Poco/LineEndingConverter.h | 203 + Foundation/include/Poco/LinearHashTable.h | 509 + Foundation/include/Poco/LocalDateTime.h | 410 + Foundation/include/Poco/LogFile.h | 115 + Foundation/include/Poco/LogFile_STD.h | 74 + Foundation/include/Poco/LogFile_VMS.h | 75 + Foundation/include/Poco/LogFile_WIN32.h | 76 + Foundation/include/Poco/LogFile_WIN32U.h | 76 + Foundation/include/Poco/LogStream.h | 207 + Foundation/include/Poco/Logger.h | 772 + Foundation/include/Poco/LoggingFactory.h | 115 + Foundation/include/Poco/LoggingRegistry.h | 121 + Foundation/include/Poco/MD2Engine.h | 0 Foundation/include/Poco/MD4Engine.h | 117 + Foundation/include/Poco/MD5Engine.h | 117 + Foundation/include/Poco/Manifest.h | 202 + Foundation/include/Poco/MemoryPool.h | 135 + Foundation/include/Poco/MemoryStream.h | 199 + Foundation/include/Poco/Message.h | 276 + Foundation/include/Poco/MetaObject.h | 223 + Foundation/include/Poco/MetaProgramming.h | 155 + Foundation/include/Poco/Mutex.h | 291 + Foundation/include/Poco/Mutex_POSIX.h | 108 + Foundation/include/Poco/Mutex_VX.h | 102 + Foundation/include/Poco/Mutex_WIN32.h | 107 + Foundation/include/Poco/Mutex_WINCE.h | 72 + Foundation/include/Poco/NObserver.h | 148 + Foundation/include/Poco/NamedEvent.h | 120 + Foundation/include/Poco/NamedEvent_Android.h | 62 + Foundation/include/Poco/NamedEvent_UNIX.h | 77 + Foundation/include/Poco/NamedEvent_VMS.h | 66 + Foundation/include/Poco/NamedEvent_WIN32.h | 67 + Foundation/include/Poco/NamedEvent_WIN32U.h | 68 + Foundation/include/Poco/NamedMutex.h | 134 + Foundation/include/Poco/NamedMutex_Android.h | 63 + Foundation/include/Poco/NamedMutex_UNIX.h | 80 + Foundation/include/Poco/NamedMutex_VMS.h | 70 + Foundation/include/Poco/NamedMutex_WIN32.h | 68 + Foundation/include/Poco/NamedMutex_WIN32U.h | 69 + Foundation/include/Poco/NamedTuple.h | 4484 + .../include/Poco/NestedDiagnosticContext.h | 196 + Foundation/include/Poco/Notification.h | 77 + Foundation/include/Poco/NotificationCenter.h | 158 + Foundation/include/Poco/NotificationQueue.h | 177 + .../include/Poco/NotificationStrategy.h | 87 + Foundation/include/Poco/NullChannel.h | 77 + Foundation/include/Poco/NullStream.h | 112 + Foundation/include/Poco/Nullable.h | 179 + Foundation/include/Poco/NumberFormatter.h | 669 + Foundation/include/Poco/NumberParser.h | 124 + Foundation/include/Poco/Observer.h | 146 + Foundation/include/Poco/OpcomChannel.h | 102 + Foundation/include/Poco/Path.h | 495 + Foundation/include/Poco/Path_UNIX.h | 65 + Foundation/include/Poco/Path_VMS.h | 65 + Foundation/include/Poco/Path_WIN32.h | 65 + Foundation/include/Poco/Path_WIN32U.h | 70 + Foundation/include/Poco/Path_WINCE.h | 71 + Foundation/include/Poco/PatternFormatter.h | 149 + Foundation/include/Poco/Pipe.h | 164 + Foundation/include/Poco/PipeImpl.h | 59 + Foundation/include/Poco/PipeImpl_DUMMY.h | 71 + Foundation/include/Poco/PipeImpl_POSIX.h | 75 + Foundation/include/Poco/PipeImpl_WIN32.h | 76 + Foundation/include/Poco/PipeStream.h | 142 + Foundation/include/Poco/Platform.h | 209 + Foundation/include/Poco/Platform_POSIX.h | 57 + Foundation/include/Poco/Platform_VMS.h | 92 + Foundation/include/Poco/Platform_VX.h | 51 + Foundation/include/Poco/Platform_WIN32.h | 93 + Foundation/include/Poco/Poco.h | 46 + Foundation/include/Poco/PriorityDelegate.h | 274 + Foundation/include/Poco/PriorityEvent.h | 83 + Foundation/include/Poco/PriorityExpire.h | 136 + .../include/Poco/PriorityNotificationQueue.h | 180 + Foundation/include/Poco/PriorityStrategy.h | 142 + Foundation/include/Poco/Process.h | 281 + Foundation/include/Poco/Process_UNIX.h | 106 + Foundation/include/Poco/Process_VMS.h | 97 + Foundation/include/Poco/Process_VX.h | 98 + Foundation/include/Poco/Process_WIN32.h | 102 + Foundation/include/Poco/Process_WIN32U.h | 102 + Foundation/include/Poco/Process_WINCE.h | 102 + Foundation/include/Poco/PurgeStrategy.h | 119 + Foundation/include/Poco/RWLock.h | 218 + Foundation/include/Poco/RWLock_Android.h | 119 + Foundation/include/Poco/RWLock_POSIX.h | 121 + Foundation/include/Poco/RWLock_VX.h | 114 + Foundation/include/Poco/RWLock_WIN32.h | 79 + Foundation/include/Poco/RWLock_WINCE.h | 83 + Foundation/include/Poco/Random.h | 187 + Foundation/include/Poco/RandomStream.h | 95 + Foundation/include/Poco/RefCountedObject.h | 109 + Foundation/include/Poco/RegularExpression.h | 279 + Foundation/include/Poco/RotateStrategy.h | 187 + Foundation/include/Poco/Runnable.h | 67 + Foundation/include/Poco/RunnableAdapter.h | 100 + Foundation/include/Poco/SHA1Engine.h | 103 + Foundation/include/Poco/ScopedLock.h | 129 + Foundation/include/Poco/ScopedUnlock.h | 79 + Foundation/include/Poco/Semaphore.h | 159 + Foundation/include/Poco/Semaphore_POSIX.h | 97 + Foundation/include/Poco/Semaphore_VX.h | 78 + Foundation/include/Poco/Semaphore_WIN32.h | 80 + Foundation/include/Poco/SharedLibrary.h | 156 + Foundation/include/Poco/SharedLibrary_HPUX.h | 73 + Foundation/include/Poco/SharedLibrary_UNIX.h | 78 + Foundation/include/Poco/SharedLibrary_VMS.h | 71 + Foundation/include/Poco/SharedLibrary_VX.h | 73 + Foundation/include/Poco/SharedLibrary_WIN32.h | 72 + .../include/Poco/SharedLibrary_WIN32U.h | 72 + Foundation/include/Poco/SharedMemory.h | 135 + Foundation/include/Poco/SharedMemory_DUMMY.h | 110 + Foundation/include/Poco/SharedMemory_POSIX.h | 129 + Foundation/include/Poco/SharedMemory_WIN32.h | 125 + Foundation/include/Poco/SharedPtr.h | 437 + Foundation/include/Poco/SignalHandler.h | 151 + Foundation/include/Poco/SimpleFileChannel.h | 156 + Foundation/include/Poco/SimpleHashTable.h | 419 + Foundation/include/Poco/SingletonHolder.h | 91 + Foundation/include/Poco/SplitterChannel.h | 99 + Foundation/include/Poco/Stopwatch.h | 135 + Foundation/include/Poco/StrategyCollection.h | 155 + Foundation/include/Poco/StreamChannel.h | 81 + Foundation/include/Poco/StreamConverter.h | 150 + Foundation/include/Poco/StreamCopier.h | 107 + Foundation/include/Poco/StreamTokenizer.h | 119 + Foundation/include/Poco/StreamUtil.h | 114 + Foundation/include/Poco/String.h | 599 + Foundation/include/Poco/StringTokenizer.h | 131 + Foundation/include/Poco/SynchronizedObject.h | 153 + Foundation/include/Poco/SyslogChannel.h | 131 + Foundation/include/Poco/Task.h | 211 + Foundation/include/Poco/TaskManager.h | 159 + Foundation/include/Poco/TaskNotification.h | 192 + Foundation/include/Poco/TeeStream.h | 154 + Foundation/include/Poco/TemporaryFile.h | 106 + Foundation/include/Poco/TextBufferIterator.h | 167 + Foundation/include/Poco/TextConverter.h | 115 + Foundation/include/Poco/TextEncoding.h | 205 + Foundation/include/Poco/TextIterator.h | 163 + Foundation/include/Poco/Thread.h | 318 + Foundation/include/Poco/ThreadLocal.h | 179 + Foundation/include/Poco/ThreadPool.h | 230 + Foundation/include/Poco/ThreadTarget.h | 109 + Foundation/include/Poco/Thread_POSIX.h | 225 + Foundation/include/Poco/Thread_VX.h | 186 + Foundation/include/Poco/Thread_WIN32.h | 218 + Foundation/include/Poco/Thread_WINCE.h | 209 + .../include/Poco/TimedNotificationQueue.h | 153 + Foundation/include/Poco/Timer.h | 251 + Foundation/include/Poco/Timespan.h | 320 + Foundation/include/Poco/Timestamp.h | 265 + Foundation/include/Poco/Timezone.h | 89 + Foundation/include/Poco/Token.h | 183 + Foundation/include/Poco/Tuple.h | 1769 + Foundation/include/Poco/TypeList.h | 487 + Foundation/include/Poco/Types.h | 226 + Foundation/include/Poco/URI.h | 365 + Foundation/include/Poco/URIStreamFactory.h | 119 + Foundation/include/Poco/URIStreamOpener.h | 157 + Foundation/include/Poco/UTF16Encoding.h | 107 + Foundation/include/Poco/UTF8Encoding.h | 83 + Foundation/include/Poco/UTF8String.h | 80 + Foundation/include/Poco/UUID.h | 239 + Foundation/include/Poco/UUIDGenerator.h | 119 + Foundation/include/Poco/UnWindows.h | 110 + Foundation/include/Poco/UnbufferedStreamBuf.h | 194 + Foundation/include/Poco/Unicode.h | 290 + Foundation/include/Poco/UnicodeConverter.h | 81 + .../include/Poco/UniqueAccessExpireCache.h | 95 + .../include/Poco/UniqueAccessExpireLRUCache.h | 93 + .../include/Poco/UniqueAccessExpireStrategy.h | 178 + Foundation/include/Poco/UniqueExpireCache.h | 94 + .../include/Poco/UniqueExpireLRUCache.h | 92 + .../include/Poco/UniqueExpireStrategy.h | 160 + Foundation/include/Poco/ValidArgs.h | 96 + Foundation/include/Poco/Version.h | 60 + Foundation/include/Poco/Void.h | 95 + Foundation/include/Poco/Windows1250Encoding.h | 74 + Foundation/include/Poco/Windows1251Encoding.h | 74 + Foundation/include/Poco/Windows1252Encoding.h | 73 + .../include/Poco/WindowsConsoleChannel.h | 89 + Foundation/include/Poco/zconf.h | 430 + Foundation/include/Poco/zlib.h | 1613 + .../samples/ActiveMethod/ActiveMethod.progen | 12 + .../ActiveMethod/ActiveMethod.vmsbuild | 8 + .../ActiveMethod/ActiveMethod_CE_vs90.vcproj | 468 + .../ActiveMethod/ActiveMethod_vs100.vcxproj | 299 + .../ActiveMethod_vs100.vcxproj.filters | 16 + .../ActiveMethod/ActiveMethod_vs71.vcproj | 395 + .../ActiveMethod/ActiveMethod_vs80.vcproj | 435 + .../ActiveMethod/ActiveMethod_vs90.vcproj | 435 + .../ActiveMethod_x64_vs100.vcxproj | 299 + .../ActiveMethod_x64_vs100.vcxproj.filters | 16 + .../ActiveMethod/ActiveMethod_x64_vs90.vcproj | 435 + Foundation/samples/ActiveMethod/Makefile | 17 + .../samples/ActiveMethod/src/ActiveMethod.cpp | 78 + Foundation/samples/Activity/Activity.progen | 12 + Foundation/samples/Activity/Activity.vmsbuild | 8 + .../samples/Activity/Activity_CE_vs90.vcproj | 468 + .../samples/Activity/Activity_vs100.vcxproj | 299 + .../Activity/Activity_vs100.vcxproj.filters | 16 + .../samples/Activity/Activity_vs71.vcproj | 395 + .../samples/Activity/Activity_vs80.vcproj | 435 + .../samples/Activity/Activity_vs90.vcproj | 435 + .../Activity/Activity_x64_vs100.vcxproj | 299 + .../Activity_x64_vs100.vcxproj.filters | 16 + .../samples/Activity/Activity_x64_vs90.vcproj | 435 + Foundation/samples/Activity/Makefile | 17 + Foundation/samples/Activity/src/Activity.cpp | 90 + .../BinaryReaderWriter.progen | 12 + .../BinaryReaderWriter.vmsbuild | 8 + .../BinaryReaderWriter_CE_vs90.vcproj | 468 + .../BinaryReaderWriter_vs100.vcxproj | 299 + .../BinaryReaderWriter_vs100.vcxproj.filters | 16 + .../BinaryReaderWriter_vs71.vcproj | 395 + .../BinaryReaderWriter_vs80.vcproj | 435 + .../BinaryReaderWriter_vs90.vcproj | 435 + .../BinaryReaderWriter_x64_vs100.vcxproj | 299 + ...naryReaderWriter_x64_vs100.vcxproj.filters | 16 + .../BinaryReaderWriter_x64_vs90.vcproj | 435 + .../samples/BinaryReaderWriter/Makefile | 17 + .../src/BinaryReaderWriter.cpp | 76 + Foundation/samples/DateTime/DateTime.progen | 12 + Foundation/samples/DateTime/DateTime.vmsbuild | 8 + .../samples/DateTime/DateTime_CE_vs90.vcproj | 468 + .../samples/DateTime/DateTime_vs100.vcxproj | 299 + .../DateTime/DateTime_vs100.vcxproj.filters | 16 + .../samples/DateTime/DateTime_vs71.vcproj | 395 + .../samples/DateTime/DateTime_vs80.vcproj | 435 + .../samples/DateTime/DateTime_vs90.vcproj | 435 + .../DateTime/DateTime_x64_vs100.vcxproj | 299 + .../DateTime_x64_vs100.vcxproj.filters | 16 + .../samples/DateTime/DateTime_x64_vs90.vcproj | 435 + Foundation/samples/DateTime/Makefile | 17 + Foundation/samples/DateTime/src/DateTime.cpp | 61 + .../samples/LogRotation/LogRotation.progen | 12 + .../samples/LogRotation/LogRotation.vmsbuild | 8 + .../LogRotation/LogRotation_CE_vs90.vcproj | 468 + .../LogRotation/LogRotation_vs100.vcxproj | 299 + .../LogRotation_vs100.vcxproj.filters | 16 + .../LogRotation/LogRotation_vs71.vcproj | 395 + .../LogRotation/LogRotation_vs80.vcproj | 435 + .../LogRotation/LogRotation_vs90.vcproj | 435 + .../LogRotation/LogRotation_x64_vs100.vcxproj | 299 + .../LogRotation_x64_vs100.vcxproj.filters | 16 + .../LogRotation/LogRotation_x64_vs90.vcproj | 435 + Foundation/samples/LogRotation/Makefile | 17 + .../samples/LogRotation/src/LogRotation.cpp | 88 + Foundation/samples/Logger/Logger.progen | 12 + Foundation/samples/Logger/Logger.vmsbuild | 8 + .../samples/Logger/Logger_CE_vs90.vcproj | 468 + .../samples/Logger/Logger_vs100.vcxproj | 299 + .../Logger/Logger_vs100.vcxproj.filters | 16 + Foundation/samples/Logger/Logger_vs71.vcproj | 395 + Foundation/samples/Logger/Logger_vs80.vcproj | 435 + Foundation/samples/Logger/Logger_vs90.vcproj | 435 + .../samples/Logger/Logger_x64_vs100.vcxproj | 299 + .../Logger/Logger_x64_vs100.vcxproj.filters | 16 + .../samples/Logger/Logger_x64_vs90.vcproj | 435 + Foundation/samples/Logger/Makefile | 17 + Foundation/samples/Logger/src/Logger.cpp | 85 + Foundation/samples/Makefile | 29 + Foundation/samples/NotificationQueue/Makefile | 17 + .../NotificationQueue.progen | 12 + .../NotificationQueue.vmsbuild | 8 + .../NotificationQueue_CE_vs90.vcproj | 468 + .../NotificationQueue_vs100.vcxproj | 299 + .../NotificationQueue_vs100.vcxproj.filters | 16 + .../NotificationQueue_vs71.vcproj | 395 + .../NotificationQueue_vs80.vcproj | 435 + .../NotificationQueue_vs90.vcproj | 435 + .../NotificationQueue_x64_vs100.vcxproj | 299 + ...otificationQueue_x64_vs100.vcxproj.filters | 16 + .../NotificationQueue_x64_vs90.vcproj | 435 + .../src/NotificationQueue.cpp | 150 + Foundation/samples/StringTokenizer/Makefile | 17 + .../StringTokenizer/StringTokenizer.progen | 12 + .../StringTokenizer/StringTokenizer.vmsbuild | 8 + .../StringTokenizer_CE_vs90.vcproj | 468 + .../StringTokenizer_vs100.vcxproj | 299 + .../StringTokenizer_vs100.vcxproj.filters | 16 + .../StringTokenizer_vs71.vcproj | 395 + .../StringTokenizer_vs80.vcproj | 435 + .../StringTokenizer_vs90.vcproj | 435 + .../StringTokenizer_x64_vs100.vcxproj | 299 + .../StringTokenizer_x64_vs100.vcxproj.filters | 16 + .../StringTokenizer_x64_vs90.vcproj | 435 + .../StringTokenizer/src/StringTokenizer.cpp | 51 + Foundation/samples/Timer/Makefile | 17 + Foundation/samples/Timer/Timer.progen | 12 + Foundation/samples/Timer/Timer.vmsbuild | 8 + Foundation/samples/Timer/Timer_CE_vs90.vcproj | 468 + Foundation/samples/Timer/Timer_vs100.vcxproj | 299 + .../samples/Timer/Timer_vs100.vcxproj.filters | 16 + Foundation/samples/Timer/Timer_vs71.vcproj | 395 + Foundation/samples/Timer/Timer_vs80.vcproj | 435 + Foundation/samples/Timer/Timer_vs90.vcproj | 435 + .../samples/Timer/Timer_x64_vs100.vcxproj | 299 + .../Timer/Timer_x64_vs100.vcxproj.filters | 16 + .../samples/Timer/Timer_x64_vs90.vcproj | 435 + Foundation/samples/Timer/src/Timer.cpp | 77 + Foundation/samples/URI/Makefile | 17 + Foundation/samples/URI/URI.progen | 12 + Foundation/samples/URI/URI.vmsbuild | 8 + Foundation/samples/URI/URI_CE_vs90.vcproj | 468 + Foundation/samples/URI/URI_vs100.vcxproj | 299 + .../samples/URI/URI_vs100.vcxproj.filters | 16 + Foundation/samples/URI/URI_vs71.vcproj | 395 + Foundation/samples/URI/URI_vs80.vcproj | 435 + Foundation/samples/URI/URI_vs90.vcproj | 435 + Foundation/samples/URI/URI_x64_vs100.vcxproj | 299 + .../samples/URI/URI_x64_vs100.vcxproj.filters | 16 + Foundation/samples/URI/URI_x64_vs90.vcproj | 435 + Foundation/samples/URI/src/URI.cpp | 60 + Foundation/samples/base64decode/Makefile | 17 + .../samples/base64decode/base64decode.progen | 12 + .../base64decode/base64decode.vmsbuild | 8 + .../base64decode/base64decode_CE_vs90.vcproj | 468 + .../base64decode/base64decode_vs100.vcxproj | 299 + .../base64decode_vs100.vcxproj.filters | 16 + .../base64decode/base64decode_vs71.vcproj | 395 + .../base64decode/base64decode_vs80.vcproj | 435 + .../base64decode/base64decode_vs90.vcproj | 435 + .../base64decode_x64_vs100.vcxproj | 299 + .../base64decode_x64_vs100.vcxproj.filters | 16 + .../base64decode/base64decode_x64_vs90.vcproj | 435 + .../samples/base64decode/src/base64decode.cpp | 78 + Foundation/samples/base64encode/Makefile | 17 + .../samples/base64encode/base64encode.progen | 12 + .../base64encode/base64encode.vmsbuild | 8 + .../base64encode/base64encode_CE_vs90.vcproj | 468 + .../base64encode/base64encode_vs100.vcxproj | 299 + .../base64encode_vs100.vcxproj.filters | 16 + .../base64encode/base64encode_vs71.vcproj | 395 + .../base64encode/base64encode_vs80.vcproj | 435 + .../base64encode/base64encode_vs90.vcproj | 435 + .../base64encode_x64_vs100.vcxproj | 299 + .../base64encode_x64_vs100.vcxproj.filters | 16 + .../base64encode/base64encode_x64_vs90.vcproj | 435 + .../samples/base64encode/src/base64encode.cpp | 78 + Foundation/samples/deflate/Makefile | 17 + Foundation/samples/deflate/deflate.progen | 12 + Foundation/samples/deflate/deflate.vmsbuild | 8 + .../samples/deflate/deflate_CE_vs90.vcproj | 468 + .../samples/deflate/deflate_vs100.vcxproj | 299 + .../deflate/deflate_vs100.vcxproj.filters | 16 + .../samples/deflate/deflate_vs71.vcproj | 395 + .../samples/deflate/deflate_vs80.vcproj | 435 + .../samples/deflate/deflate_vs90.vcproj | 435 + .../samples/deflate/deflate_x64_vs100.vcxproj | 299 + .../deflate/deflate_x64_vs100.vcxproj.filters | 16 + .../samples/deflate/deflate_x64_vs90.vcproj | 435 + Foundation/samples/deflate/src/deflate.cpp | 78 + Foundation/samples/dir/Makefile | 17 + Foundation/samples/dir/dir.progen | 12 + Foundation/samples/dir/dir.vmsbuild | 8 + Foundation/samples/dir/dir_CE_vs90.vcproj | 468 + Foundation/samples/dir/dir_vs100.vcxproj | 299 + .../samples/dir/dir_vs100.vcxproj.filters | 16 + Foundation/samples/dir/dir_vs71.vcproj | 395 + Foundation/samples/dir/dir_vs80.vcproj | 435 + Foundation/samples/dir/dir_vs90.vcproj | 435 + Foundation/samples/dir/dir_x64_vs100.vcxproj | 299 + .../samples/dir/dir_x64_vs100.vcxproj.filters | 16 + Foundation/samples/dir/dir_x64_vs90.vcproj | 435 + Foundation/samples/dir/src/dir.cpp | 84 + Foundation/samples/grep/Makefile | 17 + Foundation/samples/grep/grep.progen | 12 + Foundation/samples/grep/grep.vmsbuild | 8 + Foundation/samples/grep/grep_CE_vs90.vcproj | 468 + Foundation/samples/grep/grep_vs100.vcxproj | 299 + .../samples/grep/grep_vs100.vcxproj.filters | 16 + Foundation/samples/grep/grep_vs71.vcproj | 395 + Foundation/samples/grep/grep_vs80.vcproj | 435 + Foundation/samples/grep/grep_vs90.vcproj | 435 + .../samples/grep/grep_x64_vs100.vcxproj | 299 + .../grep/grep_x64_vs100.vcxproj.filters | 16 + Foundation/samples/grep/grep_x64_vs90.vcproj | 435 + Foundation/samples/grep/src/grep.cpp | 83 + Foundation/samples/hmacmd5/Makefile | 17 + Foundation/samples/hmacmd5/hmacmd5.progen | 12 + Foundation/samples/hmacmd5/hmacmd5.vmsbuild | 8 + .../samples/hmacmd5/hmacmd5_CE_vs90.vcproj | 468 + .../samples/hmacmd5/hmacmd5_vs100.vcxproj | 299 + .../hmacmd5/hmacmd5_vs100.vcxproj.filters | 16 + .../samples/hmacmd5/hmacmd5_vs71.vcproj | 395 + .../samples/hmacmd5/hmacmd5_vs80.vcproj | 435 + .../samples/hmacmd5/hmacmd5_vs90.vcproj | 435 + .../samples/hmacmd5/hmacmd5_x64_vs100.vcxproj | 299 + .../hmacmd5/hmacmd5_x64_vs100.vcxproj.filters | 16 + .../samples/hmacmd5/hmacmd5_x64_vs90.vcproj | 435 + Foundation/samples/hmacmd5/src/hmacmd5.cpp | 77 + Foundation/samples/inflate/Makefile | 17 + Foundation/samples/inflate/inflate.progen | 12 + Foundation/samples/inflate/inflate.vmsbuild | 8 + .../samples/inflate/inflate_CE_vs90.vcproj | 468 + .../samples/inflate/inflate_vs100.vcxproj | 299 + .../inflate/inflate_vs100.vcxproj.filters | 16 + .../samples/inflate/inflate_vs71.vcproj | 395 + .../samples/inflate/inflate_vs80.vcproj | 435 + .../samples/inflate/inflate_vs90.vcproj | 435 + .../samples/inflate/inflate_x64_vs100.vcxproj | 299 + .../inflate/inflate_x64_vs100.vcxproj.filters | 16 + .../samples/inflate/inflate_x64_vs90.vcproj | 435 + Foundation/samples/inflate/src/inflate.cpp | 78 + Foundation/samples/md5/Makefile | 17 + Foundation/samples/md5/md5.progen | 12 + Foundation/samples/md5/md5.vmsbuild | 8 + Foundation/samples/md5/md5_CE_vs90.vcproj | 468 + Foundation/samples/md5/md5_vs100.vcxproj | 299 + .../samples/md5/md5_vs100.vcxproj.filters | 16 + Foundation/samples/md5/md5_vs71.vcproj | 395 + Foundation/samples/md5/md5_vs80.vcproj | 435 + Foundation/samples/md5/md5_vs90.vcproj | 435 + Foundation/samples/md5/md5_x64_vs100.vcxproj | 299 + .../samples/md5/md5_x64_vs100.vcxproj.filters | 16 + Foundation/samples/md5/md5_x64_vs90.vcproj | 435 + Foundation/samples/md5/src/md5.cpp | 74 + Foundation/samples/samples.progen | 23 + Foundation/samples/samples_CE_vs90.sln | 397 + Foundation/samples/samples_vs100.sln | 397 + Foundation/samples/samples_vs71.sln | 321 + Foundation/samples/samples_vs80.sln | 397 + Foundation/samples/samples_vs90.sln | 397 + Foundation/samples/samples_x64_vs100.sln | 397 + Foundation/samples/samples_x64_vs90.sln | 397 + Foundation/samples/uuidgen/Makefile | 17 + Foundation/samples/uuidgen/src/uuidgen.cpp | 72 + Foundation/samples/uuidgen/uuidgen.progen | 12 + Foundation/samples/uuidgen/uuidgen.vmsbuild | 8 + .../samples/uuidgen/uuidgen_CE_vs90.vcproj | 468 + .../samples/uuidgen/uuidgen_vs100.vcxproj | 299 + .../uuidgen/uuidgen_vs100.vcxproj.filters | 16 + .../samples/uuidgen/uuidgen_vs71.vcproj | 395 + .../samples/uuidgen/uuidgen_vs80.vcproj | 435 + .../samples/uuidgen/uuidgen_vs90.vcproj | 435 + .../samples/uuidgen/uuidgen_x64_vs100.vcxproj | 299 + .../uuidgen/uuidgen_x64_vs100.vcxproj.filters | 16 + .../samples/uuidgen/uuidgen_x64_vs90.vcproj | 435 + Foundation/src/ASCIIEncoding.cpp | 138 + Foundation/src/AbstractObserver.cpp | 64 + Foundation/src/ActiveDispatcher.cpp | 133 + Foundation/src/ArchiveStrategy.cpp | 211 + Foundation/src/Ascii.cpp | 176 + Foundation/src/AsyncChannel.cpp | 183 + Foundation/src/AtomicCounter.cpp | 212 + Foundation/src/Base64Decoder.cpp | 158 + Foundation/src/Base64Encoder.cpp | 184 + Foundation/src/BinaryReader.cpp | 309 + Foundation/src/BinaryWriter.cpp | 373 + Foundation/src/Bugcheck.cpp | 103 + Foundation/src/ByteOrder.cpp | 37 + Foundation/src/Channel.cpp | 75 + Foundation/src/Checksum.cpp | 80 + Foundation/src/Condition.cpp | 101 + Foundation/src/Configurable.cpp | 53 + Foundation/src/ConsoleChannel.cpp | 71 + Foundation/src/CountingStream.cpp | 185 + Foundation/src/DateTime.cpp | 423 + Foundation/src/DateTimeFormat.cpp | 83 + Foundation/src/DateTimeFormatter.cpp | 177 + Foundation/src/DateTimeParser.cpp | 401 + Foundation/src/Debugger.cpp | 184 + Foundation/src/DeflatingStream.cpp | 399 + Foundation/src/DigestEngine.cpp | 68 + Foundation/src/DigestStream.cpp | 172 + Foundation/src/DirectoryIterator.cpp | 169 + Foundation/src/DirectoryIterator_UNIX.cpp | 86 + Foundation/src/DirectoryIterator_VMS.cpp | 87 + Foundation/src/DirectoryIterator_WIN32.cpp | 88 + Foundation/src/DirectoryIterator_WIN32U.cpp | 97 + Foundation/src/Environment.cpp | 154 + Foundation/src/Environment_UNIX.cpp | 331 + Foundation/src/Environment_VMS.cpp | 240 + Foundation/src/Environment_VX.cpp | 181 + Foundation/src/Environment_WIN32.cpp | 242 + Foundation/src/Environment_WIN32U.cpp | 256 + Foundation/src/Environment_WINCE.cpp | 265 + Foundation/src/ErrorHandler.cpp | 136 + Foundation/src/Event.cpp | 62 + Foundation/src/EventArgs.cpp | 55 + Foundation/src/EventLogChannel.cpp | 315 + Foundation/src/Event_POSIX.cpp | 138 + Foundation/src/Event_VX.cpp | 101 + Foundation/src/Event_WIN32.cpp | 83 + Foundation/src/Exception.cpp | 199 + Foundation/src/FPEnvironment.cpp | 107 + Foundation/src/FPEnvironment_C99.cpp | 104 + Foundation/src/FPEnvironment_DEC.cpp | 217 + Foundation/src/FPEnvironment_DUMMY.cpp | 101 + Foundation/src/FPEnvironment_SUN.cpp | 161 + Foundation/src/FPEnvironment_WIN32.cpp | 98 + Foundation/src/File.cpp | 358 + Foundation/src/FileChannel.cpp | 364 + Foundation/src/FileStream.cpp | 143 + Foundation/src/FileStreamFactory.cpp | 86 + Foundation/src/FileStream_POSIX.cpp | 192 + Foundation/src/FileStream_WIN32.cpp | 230 + Foundation/src/File_UNIX.cpp | 474 + Foundation/src/File_VMS.cpp | 407 + Foundation/src/File_VX.cpp | 388 + Foundation/src/File_WIN32.cpp | 422 + Foundation/src/File_WIN32U.cpp | 430 + Foundation/src/File_WINCE.cpp | 423 + Foundation/src/Format.cpp | 404 + Foundation/src/Formatter.cpp | 66 + Foundation/src/FormattingChannel.cpp | 148 + Foundation/src/Glob.cpp | 295 + Foundation/src/Hash.cpp | 56 + Foundation/src/HashStatistic.cpp | 86 + Foundation/src/HexBinaryDecoder.cpp | 116 + Foundation/src/HexBinaryEncoder.cpp | 139 + Foundation/src/InflatingStream.cpp | 367 + Foundation/src/Latin1Encoding.cpp | 140 + Foundation/src/Latin2Encoding.cpp | 151 + Foundation/src/Latin9Encoding.cpp | 151 + Foundation/src/LineEndingConverter.cpp | 204 + Foundation/src/LocalDateTime.cpp | 339 + Foundation/src/LogFile.cpp | 64 + Foundation/src/LogFile_STD.cpp | 86 + Foundation/src/LogFile_VMS.cpp | 91 + Foundation/src/LogFile_WIN32.cpp | 130 + Foundation/src/LogFile_WIN32U.cpp | 135 + Foundation/src/LogStream.cpp | 237 + Foundation/src/Logger.cpp | 486 + Foundation/src/LoggingFactory.cpp | 141 + Foundation/src/LoggingRegistry.cpp | 139 + Foundation/src/MD4Engine.cpp | 300 + Foundation/src/MD5Engine.cpp | 331 + Foundation/src/MSG00001.bin | Bin 0 -> 232 bytes Foundation/src/Manifest.cpp | 53 + Foundation/src/MemoryPool.cpp | 104 + Foundation/src/MemoryStream.cpp | 79 + Foundation/src/Message.cpp | 243 + Foundation/src/Mutex.cpp | 76 + Foundation/src/Mutex_POSIX.cpp | 177 + Foundation/src/Mutex_VX.cpp | 90 + Foundation/src/Mutex_WIN32.cpp | 81 + Foundation/src/Mutex_WINCE.cpp | 102 + Foundation/src/NamedEvent.cpp | 67 + Foundation/src/NamedEvent_Android.cpp | 66 + Foundation/src/NamedEvent_UNIX.cpp | 169 + Foundation/src/NamedEvent_VMS.cpp | 85 + Foundation/src/NamedEvent_WIN32.cpp | 78 + Foundation/src/NamedEvent_WIN32U.cpp | 80 + Foundation/src/NamedMutex.cpp | 67 + Foundation/src/NamedMutex_Android.cpp | 72 + Foundation/src/NamedMutex_UNIX.cpp | 183 + Foundation/src/NamedMutex_VMS.cpp | 87 + Foundation/src/NamedMutex_WIN32.cpp | 95 + Foundation/src/NamedMutex_WIN32U.cpp | 97 + Foundation/src/NestedDiagnosticContext.cpp | 151 + Foundation/src/Notification.cpp | 60 + Foundation/src/NotificationCenter.cpp | 121 + Foundation/src/NotificationQueue.cpp | 226 + Foundation/src/NullChannel.cpp | 63 + Foundation/src/NullStream.cpp | 96 + Foundation/src/NumberFormatter.cpp | 408 + Foundation/src/NumberParser.cpp | 189 + Foundation/src/OpcomChannel.cpp | 199 + Foundation/src/Path.cpp | 1060 + Foundation/src/Path_UNIX.cpp | 173 + Foundation/src/Path_VMS.cpp | 139 + Foundation/src/Path_WIN32.cpp | 122 + Foundation/src/Path_WIN32U.cpp | 139 + Foundation/src/Path_WINCE.cpp | 145 + Foundation/src/PatternFormatter.cpp | 198 + Foundation/src/Pipe.cpp | 92 + Foundation/src/PipeImpl.cpp | 50 + Foundation/src/PipeImpl_DUMMY.cpp | 87 + Foundation/src/PipeImpl_POSIX.cpp | 133 + Foundation/src/PipeImpl_WIN32.cpp | 119 + Foundation/src/PipeStream.cpp | 149 + Foundation/src/PriorityNotificationQueue.cpp | 210 + Foundation/src/Process.cpp | 221 + Foundation/src/Process_UNIX.cpp | 246 + Foundation/src/Process_VMS.cpp | 172 + Foundation/src/Process_VX.cpp | 110 + Foundation/src/Process_WIN32.cpp | 284 + Foundation/src/Process_WIN32U.cpp | 290 + Foundation/src/Process_WINCE.cpp | 214 + Foundation/src/PurgeStrategy.cpp | 153 + Foundation/src/RWLock.cpp | 68 + Foundation/src/RWLock_Android.cpp | 61 + Foundation/src/RWLock_POSIX.cpp | 56 + Foundation/src/RWLock_VX.cpp | 70 + Foundation/src/RWLock_WIN32.cpp | 229 + Foundation/src/RWLock_WINCE.cpp | 196 + Foundation/src/Random.cpp | 386 + Foundation/src/RandomStream.cpp | 149 + Foundation/src/RefCountedObject.cpp | 53 + Foundation/src/RegularExpression.cpp | 305 + Foundation/src/RotateStrategy.cpp | 135 + Foundation/src/Runnable.cpp | 53 + Foundation/src/SHA1Engine.cpp | 305 + Foundation/src/Semaphore.cpp | 67 + Foundation/src/Semaphore_POSIX.cpp | 139 + Foundation/src/Semaphore_VX.cpp | 74 + Foundation/src/Semaphore_WIN32.cpp | 87 + Foundation/src/SharedLibrary.cpp | 133 + Foundation/src/SharedLibrary_HPUX.cpp | 116 + Foundation/src/SharedLibrary_UNIX.cpp | 152 + Foundation/src/SharedLibrary_VMS.cpp | 139 + Foundation/src/SharedLibrary_VX.cpp | 157 + Foundation/src/SharedLibrary_WIN32.cpp | 120 + Foundation/src/SharedLibrary_WIN32U.cpp | 131 + Foundation/src/SharedMemory.cpp | 118 + Foundation/src/SharedMemory_DUMMY.cpp | 58 + Foundation/src/SharedMemory_POSIX.cpp | 156 + Foundation/src/SharedMemory_WIN32.cpp | 166 + Foundation/src/SignalHandler.cpp | 133 + Foundation/src/SimpleFileChannel.cpp | 228 + Foundation/src/SplitterChannel.cpp | 128 + Foundation/src/Stopwatch.cpp | 82 + Foundation/src/StreamChannel.cpp | 62 + Foundation/src/StreamConverter.cpp | 214 + Foundation/src/StreamCopier.cpp | 172 + Foundation/src/StreamTokenizer.cpp | 127 + Foundation/src/String.cpp | 221 + Foundation/src/StringTokenizer.cpp | 86 + Foundation/src/SynchronizedObject.cpp | 53 + Foundation/src/SyslogChannel.cpp | 278 + Foundation/src/Task.cpp | 151 + Foundation/src/TaskManager.cpp | 177 + Foundation/src/TaskNotification.cpp | 114 + Foundation/src/TeeStream.cpp | 155 + Foundation/src/TemporaryFile.cpp | 170 + Foundation/src/TextBufferIterator.cpp | 200 + Foundation/src/TextConverter.cpp | 150 + Foundation/src/TextEncoding.cpp | 230 + Foundation/src/TextIterator.cpp | 197 + Foundation/src/Thread.cpp | 175 + Foundation/src/ThreadLocal.cpp | 107 + Foundation/src/ThreadPool.cpp | 535 + Foundation/src/ThreadTarget.cpp | 65 + Foundation/src/Thread_POSIX.cpp | 455 + Foundation/src/Thread_VX.cpp | 295 + Foundation/src/Thread_WIN32.cpp | 294 + Foundation/src/Thread_WINCE.cpp | 227 + Foundation/src/TimedNotificationQueue.cpp | 203 + Foundation/src/Timer.cpp | 248 + Foundation/src/Timespan.cpp | 172 + Foundation/src/Timestamp.cpp | 294 + Foundation/src/Timezone.cpp | 63 + Foundation/src/Timezone_UNIX.cpp | 121 + Foundation/src/Timezone_VX.cpp | 100 + Foundation/src/Timezone_WIN32.cpp | 123 + Foundation/src/Timezone_WINCE.cpp | 106 + Foundation/src/Token.cpp | 168 + Foundation/src/URI.cpp | 860 + Foundation/src/URIStreamFactory.cpp | 80 + Foundation/src/URIStreamOpener.cpp | 203 + Foundation/src/UTF16Encoding.cpp | 295 + Foundation/src/UTF8Encoding.cpp | 272 + Foundation/src/UTF8String.cpp | 201 + Foundation/src/UUID.cpp | 370 + Foundation/src/UUIDGenerator.cpp | 164 + Foundation/src/Unicode.cpp | 77 + Foundation/src/UnicodeConverter.cpp | 165 + Foundation/src/Var.cpp | 486 + Foundation/src/VarHolder.cpp | 77 + Foundation/src/Void.cpp | 64 + Foundation/src/Windows1250Encoding.cpp | 140 + Foundation/src/Windows1251Encoding.cpp | 139 + Foundation/src/Windows1252Encoding.cpp | 171 + Foundation/src/WindowsConsoleChannel.cpp | 88 + Foundation/src/adler32.c | 169 + Foundation/src/compress.c | 80 + Foundation/src/crc32.c | 442 + Foundation/src/crc32.h | 441 + Foundation/src/deflate.c | 1834 + Foundation/src/deflate.h | 342 + Foundation/src/infback.c | 632 + Foundation/src/inffast.c | 340 + Foundation/src/inffast.h | 11 + Foundation/src/inffixed.h | 94 + Foundation/src/inflate.c | 1480 + Foundation/src/inflate.h | 122 + Foundation/src/inftrees.c | 330 + Foundation/src/inftrees.h | 62 + Foundation/src/pcre.h | 304 + Foundation/src/pcre_chartables.c | 195 + Foundation/src/pcre_compile.c | 6380 + Foundation/src/pcre_config.h | 275 + Foundation/src/pcre_exec.c | 4997 + Foundation/src/pcre_fullinfo.c | 162 + Foundation/src/pcre_globals.c | 60 + Foundation/src/pcre_internal.h | 1176 + Foundation/src/pcre_maketables.c | 141 + Foundation/src/pcre_newline.c | 161 + Foundation/src/pcre_ord2utf8.c | 84 + Foundation/src/pcre_study.c | 585 + Foundation/src/pcre_tables.c | 353 + Foundation/src/pcre_try_flipped.c | 134 + Foundation/src/pcre_ucd.c | 2608 + Foundation/src/pcre_valid_utf8.c | 162 + Foundation/src/pcre_xclass.c | 144 + Foundation/src/pocomsg.mc | 89 + Foundation/src/trees.c | 1244 + Foundation/src/trees.h | 128 + Foundation/src/ucp.h | 146 + Foundation/src/zconf.h | 430 + Foundation/src/zlib.h | 1613 + Foundation/src/zutil.c | 318 + Foundation/src/zutil.h | 274 + Foundation/testsuite/Makefile | 14 + Foundation/testsuite/Makefile-Driver | 48 + Foundation/testsuite/Makefile-TestApp | 17 + Foundation/testsuite/Makefile-TestLibrary | 17 + Foundation/testsuite/TestApp_CE_vs90.vcproj | 582 + Foundation/testsuite/TestApp_vs100.vcxproj | 304 + .../testsuite/TestApp_vs100.vcxproj.filters | 13 + Foundation/testsuite/TestApp_vs71.vcproj | 390 + Foundation/testsuite/TestApp_vs80.vcproj | 555 + Foundation/testsuite/TestApp_vs90.vcproj | 541 + .../testsuite/TestApp_x64_vs100.vcxproj | 304 + .../TestApp_x64_vs100.vcxproj.filters | 13 + Foundation/testsuite/TestApp_x64_vs90.vcproj | 535 + .../testsuite/TestLibrary_CE_vs90.vcproj | 616 + .../testsuite/TestLibrary_vs100.vcxproj | 126 + .../TestLibrary_vs100.vcxproj.filters | 25 + Foundation/testsuite/TestLibrary_vs71.vcproj | 162 + Foundation/testsuite/TestLibrary_vs80.vcproj | 225 + Foundation/testsuite/TestLibrary_vs90.vcproj | 219 + .../testsuite/TestLibrary_x64_vs100.vcxproj | 126 + .../TestLibrary_x64_vs100.vcxproj.filters | 25 + .../testsuite/TestLibrary_x64_vs90.vcproj | 217 + Foundation/testsuite/TestSuite.vxbuild | 128 + Foundation/testsuite/TestSuite_CE_vs90.vcproj | 1826 + Foundation/testsuite/TestSuite_vs100.vcxproj | 564 + .../testsuite/TestSuite_vs100.vcxproj.filters | 951 + Foundation/testsuite/TestSuite_vs71.vcproj | 1380 + Foundation/testsuite/TestSuite_vs80.vcproj | 1791 + Foundation/testsuite/TestSuite_vs90.vcproj | 1773 + .../testsuite/TestSuite_x64_vs100.vcxproj | 562 + .../TestSuite_x64_vs100.vcxproj.filters | 936 + .../testsuite/TestSuite_x64_vs90.vcproj | 1767 + Foundation/testsuite/data/testdata.txt | 26 + Foundation/testsuite/nonexistent.txt | 0 .../testsuite/src/ActiveDispatcherTest.cpp | 256 + .../testsuite/src/ActiveDispatcherTest.h | 79 + Foundation/testsuite/src/ActiveMethodTest.cpp | 283 + Foundation/testsuite/src/ActiveMethodTest.h | 67 + Foundation/testsuite/src/ActivityTest.cpp | 124 + Foundation/testsuite/src/ActivityTest.h | 60 + Foundation/testsuite/src/AnyTest.cpp | 142 + Foundation/testsuite/src/AnyTest.h | 58 + Foundation/testsuite/src/ArrayTest.cpp | 253 + Foundation/testsuite/src/ArrayTest.h | 66 + Foundation/testsuite/src/AutoPtrTest.cpp | 208 + Foundation/testsuite/src/AutoPtrTest.h | 61 + .../testsuite/src/AutoReleasePoolTest.cpp | 126 + .../testsuite/src/AutoReleasePoolTest.h | 60 + Foundation/testsuite/src/Base64Test.cpp | 199 + Foundation/testsuite/src/Base64Test.h | 62 + Foundation/testsuite/src/BasicEventTest.cpp | 427 + Foundation/testsuite/src/BasicEventTest.h | 94 + .../testsuite/src/BinaryReaderWriterTest.cpp | 267 + .../testsuite/src/BinaryReaderWriterTest.h | 66 + Foundation/testsuite/src/ByteOrderTest.cpp | 633 + Foundation/testsuite/src/ByteOrderTest.h | 63 + Foundation/testsuite/src/CacheTestSuite.cpp | 51 + Foundation/testsuite/src/CacheTestSuite.h | 49 + Foundation/testsuite/src/ChannelTest.cpp | 160 + Foundation/testsuite/src/ChannelTest.h | 64 + Foundation/testsuite/src/ClassLoaderTest.cpp | 234 + Foundation/testsuite/src/ClassLoaderTest.h | 62 + Foundation/testsuite/src/ConditionTest.cpp | 214 + Foundation/testsuite/src/ConditionTest.h | 61 + Foundation/testsuite/src/CoreTest.cpp | 384 + Foundation/testsuite/src/CoreTest.h | 68 + Foundation/testsuite/src/CoreTestSuite.cpp | 92 + Foundation/testsuite/src/CoreTestSuite.h | 49 + .../testsuite/src/CountingStreamTest.cpp | 124 + Foundation/testsuite/src/CountingStreamTest.h | 61 + Foundation/testsuite/src/CryptTestSuite.cpp | 56 + Foundation/testsuite/src/CryptTestSuite.h | 49 + .../testsuite/src/DateTimeFormatterTest.cpp | 245 + .../testsuite/src/DateTimeFormatterTest.h | 70 + .../testsuite/src/DateTimeParserTest.cpp | 761 + Foundation/testsuite/src/DateTimeParserTest.h | 72 + Foundation/testsuite/src/DateTimeTest.cpp | 881 + Foundation/testsuite/src/DateTimeTest.h | 75 + .../testsuite/src/DateTimeTestSuite.cpp | 56 + Foundation/testsuite/src/DateTimeTestSuite.h | 49 + Foundation/testsuite/src/DigestStreamTest.cpp | 115 + Foundation/testsuite/src/DigestStreamTest.h | 62 + Foundation/testsuite/src/Driver.cpp | 39 + Foundation/testsuite/src/DummyDelegate.cpp | 55 + Foundation/testsuite/src/DummyDelegate.h | 50 + Foundation/testsuite/src/DynamicAnyTest.h | 168 + .../testsuite/src/DynamicFactoryTest.cpp | 138 + Foundation/testsuite/src/DynamicFactoryTest.h | 60 + Foundation/testsuite/src/DynamicTestSuite.cpp | 44 + Foundation/testsuite/src/DynamicTestSuite.h | 49 + Foundation/testsuite/src/EventTestSuite.cpp | 47 + Foundation/testsuite/src/EventTestSuite.h | 49 + Foundation/testsuite/src/ExpireCacheTest.cpp | 234 + Foundation/testsuite/src/ExpireCacheTest.h | 62 + .../testsuite/src/ExpireLRUCacheTest.cpp | 353 + Foundation/testsuite/src/ExpireLRUCacheTest.h | 64 + Foundation/testsuite/src/FIFOEventTest.cpp | 439 + Foundation/testsuite/src/FIFOEventTest.h | 91 + Foundation/testsuite/src/FPETest.cpp | 172 + Foundation/testsuite/src/FPETest.h | 62 + Foundation/testsuite/src/FileChannelTest.cpp | 541 + Foundation/testsuite/src/FileChannelTest.h | 81 + Foundation/testsuite/src/FileStreamTest.cpp | 355 + Foundation/testsuite/src/FileStreamTest.h | 70 + Foundation/testsuite/src/FileTest.cpp | 550 + Foundation/testsuite/src/FileTest.h | 72 + .../testsuite/src/FilesystemTestSuite.cpp | 48 + .../testsuite/src/FilesystemTestSuite.h | 49 + Foundation/testsuite/src/FormatTest.cpp | 395 + Foundation/testsuite/src/FormatTest.h | 81 + .../testsuite/src/FoundationTestSuite.cpp | 80 + .../testsuite/src/FoundationTestSuite.h | 49 + Foundation/testsuite/src/GlobTest.cpp | 549 + Foundation/testsuite/src/GlobTest.h | 70 + Foundation/testsuite/src/HMACEngineTest.cpp | 99 + Foundation/testsuite/src/HMACEngineTest.h | 60 + Foundation/testsuite/src/HashMapTest.cpp | 242 + Foundation/testsuite/src/HashMapTest.h | 64 + Foundation/testsuite/src/HashSetTest.cpp | 206 + Foundation/testsuite/src/HashSetTest.h | 63 + Foundation/testsuite/src/HashTableTest.cpp | 224 + Foundation/testsuite/src/HashTableTest.h | 65 + Foundation/testsuite/src/HashingTestSuite.cpp | 52 + Foundation/testsuite/src/HashingTestSuite.h | 49 + Foundation/testsuite/src/HexBinaryTest.cpp | 227 + Foundation/testsuite/src/HexBinaryTest.h | 62 + Foundation/testsuite/src/LRUCacheTest.cpp | 242 + Foundation/testsuite/src/LRUCacheTest.h | 61 + .../testsuite/src/LineEndingConverterTest.cpp | 165 + .../testsuite/src/LineEndingConverterTest.h | 67 + .../testsuite/src/LinearHashTableTest.cpp | 378 + .../testsuite/src/LinearHashTableTest.h | 65 + .../testsuite/src/LocalDateTimeTest.cpp | 501 + Foundation/testsuite/src/LocalDateTimeTest.h | 70 + Foundation/testsuite/src/LogStreamTest.cpp | 109 + Foundation/testsuite/src/LogStreamTest.h | 73 + Foundation/testsuite/src/LoggerTest.cpp | 251 + Foundation/testsuite/src/LoggerTest.h | 62 + .../testsuite/src/LoggingFactoryTest.cpp | 167 + Foundation/testsuite/src/LoggingFactoryTest.h | 61 + .../testsuite/src/LoggingRegistryTest.cpp | 188 + .../testsuite/src/LoggingRegistryTest.h | 62 + Foundation/testsuite/src/LoggingTestSuite.cpp | 58 + Foundation/testsuite/src/LoggingTestSuite.h | 49 + Foundation/testsuite/src/MD2EngineTest.cpp | 100 + Foundation/testsuite/src/MD2EngineTest.h | 60 + Foundation/testsuite/src/MD4EngineTest.cpp | 100 + Foundation/testsuite/src/MD4EngineTest.h | 60 + Foundation/testsuite/src/MD5EngineTest.cpp | 100 + Foundation/testsuite/src/MD5EngineTest.h | 60 + Foundation/testsuite/src/ManifestTest.cpp | 136 + Foundation/testsuite/src/ManifestTest.h | 60 + Foundation/testsuite/src/MemoryPoolTest.cpp | 110 + Foundation/testsuite/src/MemoryPoolTest.h | 60 + Foundation/testsuite/src/MemoryStreamTest.cpp | 128 + Foundation/testsuite/src/MemoryStreamTest.h | 61 + Foundation/testsuite/src/NDCTest.cpp | 107 + Foundation/testsuite/src/NDCTest.h | 61 + Foundation/testsuite/src/NamedEventTest.cpp | 122 + Foundation/testsuite/src/NamedEventTest.h | 60 + Foundation/testsuite/src/NamedMutexTest.cpp | 160 + Foundation/testsuite/src/NamedMutexTest.h | 61 + Foundation/testsuite/src/NamedTuplesTest.cpp | 1663 + Foundation/testsuite/src/NamedTuplesTest.h | 79 + .../testsuite/src/NotificationCenterTest.cpp | 228 + .../testsuite/src/NotificationCenterTest.h | 80 + .../testsuite/src/NotificationQueueTest.cpp | 252 + .../testsuite/src/NotificationQueueTest.h | 73 + .../testsuite/src/NotificationsTestSuite.cpp | 50 + .../testsuite/src/NotificationsTestSuite.h | 49 + Foundation/testsuite/src/NullStreamTest.cpp | 91 + Foundation/testsuite/src/NullStreamTest.h | 61 + .../testsuite/src/NumberFormatterTest.cpp | 181 + .../testsuite/src/NumberFormatterTest.h | 63 + Foundation/testsuite/src/NumberParserTest.cpp | 196 + Foundation/testsuite/src/NumberParserTest.h | 61 + Foundation/testsuite/src/PathTest.cpp | 1672 + Foundation/testsuite/src/PathTest.h | 86 + .../testsuite/src/PatternFormatterTest.cpp | 121 + .../testsuite/src/PatternFormatterTest.h | 60 + .../testsuite/src/PriorityEventTest.cpp | 512 + Foundation/testsuite/src/PriorityEventTest.h | 95 + .../src/PriorityNotificationQueueTest.cpp | 234 + .../src/PriorityNotificationQueueTest.h | 72 + Foundation/testsuite/src/ProcessTest.cpp | 200 + Foundation/testsuite/src/ProcessTest.h | 63 + .../testsuite/src/ProcessesTestSuite.cpp | 50 + Foundation/testsuite/src/ProcessesTestSuite.h | 49 + Foundation/testsuite/src/RWLockTest.cpp | 238 + Foundation/testsuite/src/RWLockTest.h | 61 + Foundation/testsuite/src/RandomStreamTest.cpp | 97 + Foundation/testsuite/src/RandomStreamTest.h | 60 + Foundation/testsuite/src/RandomTest.cpp | 172 + Foundation/testsuite/src/RandomTest.h | 64 + .../testsuite/src/RegularExpressionTest.cpp | 319 + .../testsuite/src/RegularExpressionTest.h | 74 + Foundation/testsuite/src/SHA1EngineTest.cpp | 88 + Foundation/testsuite/src/SHA1EngineTest.h | 60 + Foundation/testsuite/src/SemaphoreTest.cpp | 167 + Foundation/testsuite/src/SemaphoreTest.h | 61 + .../testsuite/src/SharedLibraryTest.cpp | 171 + Foundation/testsuite/src/SharedLibraryTest.h | 62 + .../testsuite/src/SharedLibraryTestSuite.cpp | 51 + .../testsuite/src/SharedLibraryTestSuite.h | 49 + Foundation/testsuite/src/SharedMemoryTest.cpp | 116 + Foundation/testsuite/src/SharedMemoryTest.h | 64 + Foundation/testsuite/src/SharedPtrTest.cpp | 239 + Foundation/testsuite/src/SharedPtrTest.h | 63 + .../testsuite/src/SimpleFileChannelTest.cpp | 147 + .../testsuite/src/SimpleFileChannelTest.h | 62 + .../testsuite/src/SimpleHashTableTest.cpp | 177 + .../testsuite/src/SimpleHashTableTest.h | 65 + Foundation/testsuite/src/StopwatchTest.cpp | 98 + Foundation/testsuite/src/StopwatchTest.h | 60 + .../testsuite/src/StreamConverterTest.cpp | 335 + .../testsuite/src/StreamConverterTest.h | 69 + Foundation/testsuite/src/StreamCopierTest.cpp | 210 + Foundation/testsuite/src/StreamCopierTest.h | 67 + .../testsuite/src/StreamTokenizerTest.cpp | 311 + .../testsuite/src/StreamTokenizerTest.h | 66 + Foundation/testsuite/src/StreamsTestSuite.cpp | 66 + Foundation/testsuite/src/StreamsTestSuite.h | 49 + Foundation/testsuite/src/StringTest.cpp | 380 + Foundation/testsuite/src/StringTest.h | 73 + .../testsuite/src/StringTokenizerTest.cpp | 307 + .../testsuite/src/StringTokenizerTest.h | 60 + Foundation/testsuite/src/TaskManagerTest.cpp | 521 + Foundation/testsuite/src/TaskManagerTest.h | 71 + Foundation/testsuite/src/TaskTest.cpp | 161 + Foundation/testsuite/src/TaskTest.h | 62 + Foundation/testsuite/src/TaskTestSuite.cpp | 46 + Foundation/testsuite/src/TaskTestSuite.h | 49 + Foundation/testsuite/src/TeeStreamTest.cpp | 96 + Foundation/testsuite/src/TeeStreamTest.h | 61 + Foundation/testsuite/src/TestApp.cpp | 66 + Foundation/testsuite/src/TestApp_WINCE.cpp | 55 + Foundation/testsuite/src/TestChannel.cpp | 61 + Foundation/testsuite/src/TestChannel.h | 61 + Foundation/testsuite/src/TestLibrary.cpp | 117 + Foundation/testsuite/src/TestPlugin.cpp | 43 + Foundation/testsuite/src/TestPlugin.h | 51 + .../testsuite/src/TextBufferIteratorTest.cpp | 286 + .../testsuite/src/TextBufferIteratorTest.h | 68 + .../testsuite/src/TextConverterTest.cpp | 240 + Foundation/testsuite/src/TextConverterTest.h | 64 + Foundation/testsuite/src/TextEncodingTest.cpp | 94 + Foundation/testsuite/src/TextEncodingTest.h | 60 + Foundation/testsuite/src/TextIteratorTest.cpp | 292 + Foundation/testsuite/src/TextIteratorTest.h | 68 + Foundation/testsuite/src/TextTestSuite.cpp | 60 + Foundation/testsuite/src/TextTestSuite.h | 49 + Foundation/testsuite/src/ThreadLocalTest.cpp | 144 + Foundation/testsuite/src/ThreadLocalTest.h | 61 + Foundation/testsuite/src/ThreadPoolTest.cpp | 184 + Foundation/testsuite/src/ThreadPoolTest.h | 68 + Foundation/testsuite/src/ThreadTest.cpp | 339 + Foundation/testsuite/src/ThreadTest.h | 68 + .../testsuite/src/ThreadingTestSuite.cpp | 62 + Foundation/testsuite/src/ThreadingTestSuite.h | 49 + .../src/TimedNotificationQueueTest.cpp | 291 + .../src/TimedNotificationQueueTest.h | 68 + Foundation/testsuite/src/TimerTest.cpp | 118 + Foundation/testsuite/src/TimerTest.h | 67 + Foundation/testsuite/src/TimespanTest.cpp | 180 + Foundation/testsuite/src/TimespanTest.h | 63 + Foundation/testsuite/src/TimestampTest.cpp | 122 + Foundation/testsuite/src/TimestampTest.h | 60 + Foundation/testsuite/src/TimezoneTest.cpp | 83 + Foundation/testsuite/src/TimezoneTest.h | 60 + Foundation/testsuite/src/TuplesTest.cpp | 607 + Foundation/testsuite/src/TuplesTest.h | 88 + Foundation/testsuite/src/TypeListTest.cpp | 323 + Foundation/testsuite/src/TypeListTest.h | 59 + .../testsuite/src/URIStreamOpenerTest.cpp | 246 + .../testsuite/src/URIStreamOpenerTest.h | 66 + Foundation/testsuite/src/URITest.cpp | 794 + Foundation/testsuite/src/URITest.h | 67 + Foundation/testsuite/src/URITestSuite.cpp | 46 + Foundation/testsuite/src/URITestSuite.h | 49 + Foundation/testsuite/src/UTF8StringTest.cpp | 126 + Foundation/testsuite/src/UTF8StringTest.h | 61 + .../testsuite/src/UUIDGeneratorTest.cpp | 129 + Foundation/testsuite/src/UUIDGeneratorTest.h | 62 + Foundation/testsuite/src/UUIDTest.cpp | 200 + Foundation/testsuite/src/UUIDTest.h | 66 + Foundation/testsuite/src/UUIDTestSuite.cpp | 46 + Foundation/testsuite/src/UUIDTestSuite.h | 49 + .../testsuite/src/UnicodeConverterTest.cpp | 115 + .../testsuite/src/UnicodeConverterTest.h | 62 + .../testsuite/src/UniqueExpireCacheTest.cpp | 276 + .../testsuite/src/UniqueExpireCacheTest.h | 64 + .../src/UniqueExpireLRUCacheTest.cpp | 347 + .../testsuite/src/UniqueExpireLRUCacheTest.h | 64 + Foundation/testsuite/src/VarTest.cpp | 2506 + Foundation/testsuite/src/VarTest.h | 187 + Foundation/testsuite/src/WinCEDriver.cpp | 52 + Foundation/testsuite/src/WinDriver.cpp | 50 + Foundation/testsuite/src/ZLibTest.cpp | 204 + Foundation/testsuite/src/ZLibTest.h | 65 + Foundation/testsuite/test.txt | 3 + Foundation/testsuite/testapp.vmsbuild | 7 + Foundation/testsuite/testlibrary.opt | 1 + Foundation/testsuite/testlibrary.vmsbuild | 8 + Foundation/testsuite/testsuite.vmsbuild | 106 + Foundation/wcelibcex-1.0/AUTHORS.txt | 13 + Foundation/wcelibcex-1.0/BUILD.txt | 41 + Foundation/wcelibcex-1.0/COPYING.txt | 9 + Foundation/wcelibcex-1.0/LICENSE.txt | 24 + Foundation/wcelibcex-1.0/README.txt | 22 + .../wcelibcex-1.0/msvc80/wcelibcex.vsprops | 15 + .../wcelibcex-1.0/msvc80/wcelibcex_lib.sln | 46 + .../wcelibcex-1.0/msvc80/wcelibcex_lib.vcproj | 817 + Foundation/wcelibcex-1.0/src/errno.h | 49 + Foundation/wcelibcex-1.0/src/fcntl.h | 48 + Foundation/wcelibcex-1.0/src/wce_abort.c | 62 + Foundation/wcelibcex-1.0/src/wce_access.c | 101 + Foundation/wcelibcex-1.0/src/wce_asctime.c | 138 + Foundation/wcelibcex-1.0/src/wce_bsearch.c | 90 + Foundation/wcelibcex-1.0/src/wce_clock.c | 87 + Foundation/wcelibcex-1.0/src/wce_ctime.c | 100 + Foundation/wcelibcex-1.0/src/wce_direct.h | 58 + .../src/wce_directorymanagement.c | 227 + Foundation/wcelibcex-1.0/src/wce_errno.c | 42 + Foundation/wcelibcex-1.0/src/wce_errno.h | 105 + Foundation/wcelibcex-1.0/src/wce_fcntl.h | 79 + Foundation/wcelibcex-1.0/src/wce_findfile.c | 183 + Foundation/wcelibcex-1.0/src/wce_getenv.c | 53 + Foundation/wcelibcex-1.0/src/wce_getopt.c | 154 + .../wcelibcex-1.0/src/wce_gettimeofday.c | 83 + Foundation/wcelibcex-1.0/src/wce_io.h | 110 + Foundation/wcelibcex-1.0/src/wce_lfind.c | 81 + Foundation/wcelibcex-1.0/src/wce_localtime.c | 228 + Foundation/wcelibcex-1.0/src/wce_mkdir.c | 112 + Foundation/wcelibcex-1.0/src/wce_mktime.c | 155 + Foundation/wcelibcex-1.0/src/wce_path.c | 479 + Foundation/wcelibcex-1.0/src/wce_rename.c | 91 + Foundation/wcelibcex-1.0/src/wce_rewind.c | 100 + Foundation/wcelibcex-1.0/src/wce_rmdir.c | 92 + Foundation/wcelibcex-1.0/src/wce_setlocale.c | 56 + Foundation/wcelibcex-1.0/src/wce_stat.c | 233 + Foundation/wcelibcex-1.0/src/wce_stat.h | 142 + Foundation/wcelibcex-1.0/src/wce_stdio.h | 61 + Foundation/wcelibcex-1.0/src/wce_stdlib.h | 102 + Foundation/wcelibcex-1.0/src/wce_strerror.c | 58 + Foundation/wcelibcex-1.0/src/wce_string.h | 59 + Foundation/wcelibcex-1.0/src/wce_time.c | 126 + Foundation/wcelibcex-1.0/src/wce_time.h | 156 + Foundation/wcelibcex-1.0/src/wce_timesys.c | 138 + Foundation/wcelibcex-1.0/src/wce_timesys.h | 59 + Foundation/wcelibcex-1.0/src/wce_types.h | 62 + Foundation/wcelibcex-1.0/src/wce_unistd.h | 72 + Foundation/wcelibcex-1.0/src/wce_unlink.c | 100 + Foundation/wcelibcex-1.0/src/wce_winbase.c | 38 + Foundation/wcelibcex-1.0/src/wce_winbase.h | 54 + LICENSE | 23 + MANIFEST | 3443 + Makefile | 198 + NEWS | 5 + Net/Makefile | 40 + Net/Net.progen | 19 + Net/Net.vmsbuild | 7 + Net/Net.vxbuild | 96 + Net/Net_CE_vs90.sln | 60 + Net/Net_CE_vs90.vcproj | 962 + Net/Net_vs100.sln | 60 + Net/Net_vs100.vcxproj | 466 + Net/Net_vs100.vcxproj.filters | 687 + Net/Net_vs71.sln | 50 + Net/Net_vs71.vcproj | 894 + Net/Net_vs80.sln | 60 + Net/Net_vs80.vcproj | 915 + Net/Net_vs90.sln | 60 + Net/Net_vs90.vcproj | 914 + Net/Net_x64_vs100.sln | 60 + Net/Net_x64_vs100.vcxproj | 464 + Net/Net_x64_vs100.vcxproj.filters | 687 + Net/Net_x64_vs90.sln | 60 + Net/Net_x64_vs90.vcproj | 919 + Net/dependencies | 1 + .../Poco/Net/AbstractHTTPRequestHandler.h | 158 + Net/include/Poco/Net/DNS.h | 143 + Net/include/Poco/Net/DatagramSocket.h | 169 + Net/include/Poco/Net/DatagramSocketImpl.h | 81 + Net/include/Poco/Net/DialogSocket.h | 231 + Net/include/Poco/Net/FTPClientSession.h | 387 + Net/include/Poco/Net/FTPStreamFactory.h | 138 + Net/include/Poco/Net/FilePartSource.h | 95 + Net/include/Poco/Net/HTMLForm.h | 260 + .../Poco/Net/HTTPAuthenticationParams.h | 123 + Net/include/Poco/Net/HTTPBasicCredentials.h | 133 + Net/include/Poco/Net/HTTPBasicStreamBuf.h | 58 + Net/include/Poco/Net/HTTPBufferAllocator.h | 72 + Net/include/Poco/Net/HTTPChunkedStream.h | 127 + Net/include/Poco/Net/HTTPClientSession.h | 383 + Net/include/Poco/Net/HTTPCookie.h | 279 + Net/include/Poco/Net/HTTPCredentials.h | 213 + Net/include/Poco/Net/HTTPDigestCredentials.h | 192 + Net/include/Poco/Net/HTTPFixedLengthStream.h | 126 + Net/include/Poco/Net/HTTPHeaderStream.h | 124 + Net/include/Poco/Net/HTTPIOStream.h | 110 + Net/include/Poco/Net/HTTPMessage.h | 198 + Net/include/Poco/Net/HTTPRequest.h | 211 + Net/include/Poco/Net/HTTPRequestHandler.h | 89 + .../Poco/Net/HTTPRequestHandlerFactory.h | 84 + Net/include/Poco/Net/HTTPResponse.h | 271 + Net/include/Poco/Net/HTTPServer.h | 94 + Net/include/Poco/Net/HTTPServerConnection.h | 83 + .../Poco/Net/HTTPServerConnectionFactory.h | 77 + Net/include/Poco/Net/HTTPServerParams.h | 176 + Net/include/Poco/Net/HTTPServerRequest.h | 100 + Net/include/Poco/Net/HTTPServerRequestImpl.h | 155 + Net/include/Poco/Net/HTTPServerResponse.h | 138 + Net/include/Poco/Net/HTTPServerResponseImpl.h | 149 + Net/include/Poco/Net/HTTPServerSession.h | 98 + Net/include/Poco/Net/HTTPSession.h | 255 + Net/include/Poco/Net/HTTPSessionFactory.h | 177 + .../Poco/Net/HTTPSessionInstantiator.h | 139 + Net/include/Poco/Net/HTTPStream.h | 125 + Net/include/Poco/Net/HTTPStreamFactory.h | 114 + Net/include/Poco/Net/HostEntry.h | 137 + Net/include/Poco/Net/ICMPClient.h | 107 + Net/include/Poco/Net/ICMPEventArgs.h | 185 + Net/include/Poco/Net/ICMPPacket.h | 111 + Net/include/Poco/Net/ICMPPacketImpl.h | 163 + Net/include/Poco/Net/ICMPSocket.h | 139 + Net/include/Poco/Net/ICMPSocketImpl.h | 85 + Net/include/Poco/Net/ICMPv4PacketImpl.h | 186 + Net/include/Poco/Net/IPAddress.h | 380 + Net/include/Poco/Net/MailMessage.h | 293 + Net/include/Poco/Net/MailRecipient.h | 142 + Net/include/Poco/Net/MailStream.h | 168 + Net/include/Poco/Net/MediaType.h | 191 + Net/include/Poco/Net/MessageHeader.h | 181 + Net/include/Poco/Net/MulticastSocket.h | 138 + Net/include/Poco/Net/MultipartReader.h | 182 + Net/include/Poco/Net/MultipartWriter.h | 131 + Net/include/Poco/Net/NameValueCollection.h | 155 + Net/include/Poco/Net/Net.h | 99 + Net/include/Poco/Net/NetException.h | 79 + Net/include/Poco/Net/NetworkInterface.h | 197 + Net/include/Poco/Net/NullPartHandler.h | 69 + Net/include/Poco/Net/POP3ClientSession.h | 207 + Net/include/Poco/Net/PartHandler.h | 90 + Net/include/Poco/Net/PartSource.h | 125 + Net/include/Poco/Net/QuotedPrintableDecoder.h | 108 + Net/include/Poco/Net/QuotedPrintableEncoder.h | 107 + Net/include/Poco/Net/RawSocket.h | 169 + Net/include/Poco/Net/RawSocketImpl.h | 78 + Net/include/Poco/Net/RemoteSyslogChannel.h | 172 + Net/include/Poco/Net/RemoteSyslogListener.h | 138 + Net/include/Poco/Net/SMTPClientSession.h | 220 + Net/include/Poco/Net/ServerSocket.h | 189 + Net/include/Poco/Net/ServerSocketImpl.h | 67 + Net/include/Poco/Net/Socket.h | 610 + Net/include/Poco/Net/SocketAcceptor.h | 184 + Net/include/Poco/Net/SocketAddress.h | 186 + Net/include/Poco/Net/SocketConnector.h | 227 + Net/include/Poco/Net/SocketDefs.h | 274 + Net/include/Poco/Net/SocketImpl.h | 481 + Net/include/Poco/Net/SocketNotification.h | 175 + Net/include/Poco/Net/SocketNotifier.h | 123 + Net/include/Poco/Net/SocketReactor.h | 245 + Net/include/Poco/Net/SocketStream.h | 199 + Net/include/Poco/Net/StreamSocket.h | 168 + Net/include/Poco/Net/StreamSocketImpl.h | 81 + Net/include/Poco/Net/StringPartSource.h | 90 + Net/include/Poco/Net/TCPServer.h | 192 + Net/include/Poco/Net/TCPServerConnection.h | 108 + .../Poco/Net/TCPServerConnectionFactory.h | 111 + Net/include/Poco/Net/TCPServerDispatcher.h | 145 + Net/include/Poco/Net/TCPServerParams.h | 159 + Net/include/Poco/Net/WebSocket.h | 265 + Net/include/Poco/Net/WebSocketImpl.h | 126 + Net/samples/EchoServer/EchoServer.progen | 12 + Net/samples/EchoServer/EchoServer.properties | 10 + Net/samples/EchoServer/EchoServer.vmsbuild | 8 + .../EchoServer/EchoServer_CE_vs90.vcproj | 471 + .../EchoServer/EchoServer_vs100.vcxproj | 302 + .../EchoServer_vs100.vcxproj.filters | 21 + Net/samples/EchoServer/EchoServer_vs71.vcproj | 398 + Net/samples/EchoServer/EchoServer_vs80.vcproj | 438 + Net/samples/EchoServer/EchoServer_vs90.vcproj | 438 + .../EchoServer/EchoServer_x64_vs100.vcxproj | 302 + .../EchoServer_x64_vs100.vcxproj.filters | 21 + .../EchoServer/EchoServer_x64_vs90.vcproj | 438 + Net/samples/EchoServer/Makefile | 17 + Net/samples/EchoServer/src/EchoServer.cpp | 228 + .../HTTPFormServer/HTTPFormServer.progen | 12 + .../HTTPFormServer/HTTPFormServer.properties | 10 + .../HTTPFormServer/HTTPFormServer.vmsbuild | 8 + .../HTTPFormServer_CE_vs90.vcproj | 471 + .../HTTPFormServer_vs100.vcxproj | 302 + .../HTTPFormServer_vs100.vcxproj.filters | 21 + .../HTTPFormServer/HTTPFormServer_vs71.vcproj | 398 + .../HTTPFormServer/HTTPFormServer_vs80.vcproj | 438 + .../HTTPFormServer/HTTPFormServer_vs90.vcproj | 438 + .../HTTPFormServer_x64_vs100.vcxproj | 302 + .../HTTPFormServer_x64_vs100.vcxproj.filters | 21 + .../HTTPFormServer_x64_vs90.vcproj | 438 + Net/samples/HTTPFormServer/Makefile | 17 + .../HTTPFormServer/src/HTTPFormServer.cpp | 326 + Net/samples/HTTPLoadTest/HTTPLoadTest.progen | 12 + .../HTTPLoadTest/HTTPLoadTest.vmsbuild | 7 + .../HTTPLoadTest/HTTPLoadTest_CE_vs90.vcproj | 466 + .../HTTPLoadTest/HTTPLoadTest_vs100.vcxproj | 299 + .../HTTPLoadTest_vs100.vcxproj.filters | 13 + .../HTTPLoadTest/HTTPLoadTest_vs71.vcproj | 393 + .../HTTPLoadTest/HTTPLoadTest_vs80.vcproj | 433 + .../HTTPLoadTest/HTTPLoadTest_vs90.vcproj | 433 + .../HTTPLoadTest_x64_vs100.vcxproj | 299 + .../HTTPLoadTest_x64_vs100.vcxproj.filters | 13 + .../HTTPLoadTest/HTTPLoadTest_x64_vs90.vcproj | 433 + Net/samples/HTTPLoadTest/Makefile | 17 + Net/samples/HTTPLoadTest/src/HTTPLoadTest.cpp | 395 + .../HTTPTimeServer/HTTPTimeServer.progen | 12 + .../HTTPTimeServer/HTTPTimeServer.properties | 13 + .../HTTPTimeServer/HTTPTimeServer.vmsbuild | 8 + .../HTTPTimeServer_CE_vs90.vcproj | 471 + .../HTTPTimeServer_vs100.vcxproj | 302 + .../HTTPTimeServer_vs100.vcxproj.filters | 21 + .../HTTPTimeServer/HTTPTimeServer_vs71.vcproj | 398 + .../HTTPTimeServer/HTTPTimeServer_vs80.vcproj | 438 + .../HTTPTimeServer/HTTPTimeServer_vs90.vcproj | 438 + .../HTTPTimeServer_x64_vs100.vcxproj | 302 + .../HTTPTimeServer_x64_vs100.vcxproj.filters | 21 + .../HTTPTimeServer_x64_vs90.vcproj | 438 + Net/samples/HTTPTimeServer/Makefile | 17 + .../HTTPTimeServer/src/HTTPTimeServer.cpp | 236 + Net/samples/Mail/Mail.progen | 12 + Net/samples/Mail/Mail.vmsbuild | 8 + Net/samples/Mail/Mail_CE_vs90.vcproj | 468 + Net/samples/Mail/Mail_vs100.vcxproj | 302 + Net/samples/Mail/Mail_vs100.vcxproj.filters | 18 + Net/samples/Mail/Mail_vs71.vcproj | 395 + Net/samples/Mail/Mail_vs80.vcproj | 435 + Net/samples/Mail/Mail_vs90.vcproj | 435 + Net/samples/Mail/Mail_x64_vs100.vcxproj | 302 + .../Mail/Mail_x64_vs100.vcxproj.filters | 18 + Net/samples/Mail/Mail_x64_vs90.vcproj | 435 + Net/samples/Mail/Makefile | 17 + Net/samples/Mail/src/Mail.cpp | 99 + Net/samples/Mail/src/PocoLogo.hpp | 134 + Net/samples/Makefile | 23 + Net/samples/Ping/Makefile | 17 + Net/samples/Ping/Ping.progen | 12 + Net/samples/Ping/Ping.vmsbuild | 7 + Net/samples/Ping/Ping_CE_vs90.vcproj | 471 + Net/samples/Ping/Ping_vs100.vcxproj | 302 + Net/samples/Ping/Ping_vs100.vcxproj.filters | 21 + Net/samples/Ping/Ping_vs71.vcproj | 398 + Net/samples/Ping/Ping_vs80.vcproj | 438 + Net/samples/Ping/Ping_vs90.vcproj | 438 + Net/samples/Ping/Ping_x64_vs100.vcxproj | 302 + .../Ping/Ping_x64_vs100.vcxproj.filters | 21 + Net/samples/Ping/Ping_x64_vs90.vcproj | 438 + Net/samples/Ping/ping.properties | 8 + Net/samples/Ping/src/Ping.cpp | 219 + Net/samples/TimeServer/Makefile | 17 + Net/samples/TimeServer/TimeServer.progen | 12 + Net/samples/TimeServer/TimeServer.properties | 11 + Net/samples/TimeServer/TimeServer.vmsbuild | 8 + .../TimeServer/TimeServer_CE_vs90.vcproj | 471 + .../TimeServer/TimeServer_vs100.vcxproj | 302 + .../TimeServer_vs100.vcxproj.filters | 21 + Net/samples/TimeServer/TimeServer_vs71.vcproj | 398 + Net/samples/TimeServer/TimeServer_vs80.vcproj | 438 + Net/samples/TimeServer/TimeServer_vs90.vcproj | 438 + .../TimeServer/TimeServer_x64_vs100.vcxproj | 302 + .../TimeServer_x64_vs100.vcxproj.filters | 21 + .../TimeServer/TimeServer_x64_vs90.vcproj | 438 + Net/samples/TimeServer/src/TimeServer.cpp | 222 + Net/samples/TwitterClient/Makefile | 17 + .../TwitterClient/TwitterClient.progen | 12 + .../TwitterClient_CE_vs90.vcproj | 473 + .../TwitterClient/TwitterClient_vs100.vcxproj | 303 + .../TwitterClient_vs100.vcxproj.filters | 24 + .../TwitterClient/TwitterClient_vs71.vcproj | 400 + .../TwitterClient/TwitterClient_vs80.vcproj | 440 + .../TwitterClient/TwitterClient_vs90.vcproj | 440 + .../TwitterClient_x64_vs100.vcxproj | 303 + .../TwitterClient_x64_vs100.vcxproj.filters | 24 + .../TwitterClient_x64_vs90.vcproj | 440 + Net/samples/TwitterClient/src/TweetApp.cpp | 146 + Net/samples/TwitterClient/src/Twitter.cpp | 135 + Net/samples/TwitterClient/src/Twitter.h | 92 + Net/samples/WebSocketServer/Makefile | 17 + .../WebSocketServer/WebSocketServer.progen | 12 + .../WebSocketServer_CE_vs90.vcproj | 466 + .../WebSocketServer_vs100.vcxproj | 299 + .../WebSocketServer_vs100.vcxproj.filters | 13 + .../WebSocketServer_vs71.vcproj | 393 + .../WebSocketServer_vs80.vcproj | 433 + .../WebSocketServer_vs90.vcproj | 433 + .../WebSocketServer_x64_vs100.vcxproj | 299 + .../WebSocketServer_x64_vs100.vcxproj.filters | 13 + .../WebSocketServer_x64_vs90.vcproj | 433 + .../WebSocketServer/src/WebSocketServer.cpp | 291 + Net/samples/dependencies | 3 + Net/samples/dict/Makefile | 17 + Net/samples/dict/dict.progen | 12 + Net/samples/dict/dict.vmsbuild | 8 + Net/samples/dict/dict_CE_vs90.vcproj | 466 + Net/samples/dict/dict_vs100.vcxproj | 299 + Net/samples/dict/dict_vs100.vcxproj.filters | 13 + Net/samples/dict/dict_vs71.vcproj | 393 + Net/samples/dict/dict_vs80.vcproj | 433 + Net/samples/dict/dict_vs90.vcproj | 433 + Net/samples/dict/dict_x64_vs100.vcxproj | 299 + .../dict/dict_x64_vs100.vcxproj.filters | 13 + Net/samples/dict/dict_x64_vs90.vcproj | 433 + Net/samples/dict/src/dict.cpp | 85 + Net/samples/download/Makefile | 17 + Net/samples/download/download.progen | 12 + Net/samples/download/download.vmsbuild | 8 + Net/samples/download/download_CE_vs90.vcproj | 466 + Net/samples/download/download_vs100.vcxproj | 299 + .../download/download_vs100.vcxproj.filters | 13 + Net/samples/download/download_vs71.vcproj | 393 + Net/samples/download/download_vs80.vcproj | 433 + Net/samples/download/download_vs90.vcproj | 433 + .../download/download_x64_vs100.vcxproj | 299 + .../download_x64_vs100.vcxproj.filters | 13 + Net/samples/download/download_x64_vs90.vcproj | 433 + Net/samples/download/src/download.cpp | 82 + Net/samples/httpget/Makefile | 17 + Net/samples/httpget/httpget.progen | 12 + Net/samples/httpget/httpget.vmsbuild | 8 + Net/samples/httpget/httpget_CE_vs90.vcproj | 466 + Net/samples/httpget/httpget_vs100.vcxproj | 299 + .../httpget/httpget_vs100.vcxproj.filters | 13 + Net/samples/httpget/httpget_vs71.vcproj | 393 + Net/samples/httpget/httpget_vs80.vcproj | 433 + Net/samples/httpget/httpget_vs90.vcproj | 433 + Net/samples/httpget/httpget_x64_vs100.vcxproj | 299 + .../httpget/httpget_x64_vs100.vcxproj.filters | 13 + Net/samples/httpget/httpget_x64_vs90.vcproj | 433 + Net/samples/httpget/src/httpget.cpp | 116 + Net/samples/samples.progen | 16 + Net/samples/samples_CE_vs90.sln | 257 + Net/samples/samples_vs100.sln | 257 + Net/samples/samples_vs71.sln | 209 + Net/samples/samples_vs80.sln | 257 + Net/samples/samples_vs90.sln | 257 + Net/samples/samples_x64_vs100.sln | 257 + Net/samples/samples_x64_vs90.sln | 257 + Net/src/AbstractHTTPRequestHandler.cpp | 131 + Net/src/DNS.cpp | 304 + Net/src/DatagramSocket.cpp | 130 + Net/src/DatagramSocketImpl.cpp | 82 + Net/src/DialogSocket.cpp | 310 + Net/src/FTPClientSession.cpp | 509 + Net/src/FTPStreamFactory.cpp | 257 + Net/src/FilePartSource.cpp | 99 + Net/src/HTMLForm.cpp | 400 + Net/src/HTTPAuthenticationParams.cpp | 326 + Net/src/HTTPBasicCredentials.cpp | 149 + Net/src/HTTPBufferAllocator.cpp | 66 + Net/src/HTTPChunkedStream.cpp | 220 + Net/src/HTTPClientSession.cpp | 441 + Net/src/HTTPCookie.cpp | 341 + Net/src/HTTPCredentials.cpp | 230 + Net/src/HTTPDigestCredentials.cpp | 321 + Net/src/HTTPFixedLengthStream.cpp | 189 + Net/src/HTTPHeaderStream.cpp | 186 + Net/src/HTTPIOStream.cpp | 85 + Net/src/HTTPMessage.cpp | 206 + Net/src/HTTPRequest.cpp | 268 + Net/src/HTTPRequestHandler.cpp | 54 + Net/src/HTTPRequestHandlerFactory.cpp | 54 + Net/src/HTTPResponse.cpp | 343 + Net/src/HTTPServer.cpp | 62 + Net/src/HTTPServerConnection.cpp | 127 + Net/src/HTTPServerConnectionFactory.cpp | 65 + Net/src/HTTPServerParams.cpp | 95 + Net/src/HTTPServerRequest.cpp | 54 + Net/src/HTTPServerRequestImpl.cpp | 106 + Net/src/HTTPServerResponse.cpp | 54 + Net/src/HTTPServerResponseImpl.cpp | 181 + Net/src/HTTPServerSession.cpp | 92 + Net/src/HTTPSession.cpp | 244 + Net/src/HTTPSessionFactory.cpp | 168 + Net/src/HTTPSessionInstantiator.cpp | 96 + Net/src/HTTPStream.cpp | 180 + Net/src/HTTPStreamFactory.cpp | 183 + Net/src/HostEntry.cpp | 157 + Net/src/ICMPClient.cpp | 166 + Net/src/ICMPEventArgs.cpp | 190 + Net/src/ICMPPacket.cpp | 132 + Net/src/ICMPPacketImpl.cpp | 125 + Net/src/ICMPSocket.cpp | 101 + Net/src/ICMPSocketImpl.cpp | 120 + Net/src/ICMPv4PacketImpl.cpp | 284 + Net/src/IPAddress.cpp | 894 + Net/src/MailMessage.cpp | 577 + Net/src/MailRecipient.cpp | 116 + Net/src/MailStream.cpp | 241 + Net/src/MediaType.cpp | 213 + Net/src/MessageHeader.cpp | 263 + Net/src/MulticastSocket.cpp | 263 + Net/src/MultipartReader.cpp | 320 + Net/src/MultipartWriter.cpp | 108 + Net/src/NameValueCollection.cpp | 175 + Net/src/NetException.cpp | 73 + Net/src/NetworkInterface.cpp | 889 + Net/src/NullPartHandler.cpp | 68 + Net/src/POP3ClientSession.cpp | 302 + Net/src/PartHandler.cpp | 54 + Net/src/PartSource.cpp | 73 + Net/src/QuotedPrintableDecoder.cpp | 124 + Net/src/QuotedPrintableEncoder.cpp | 172 + Net/src/RawSocket.cpp | 133 + Net/src/RawSocketImpl.cpp | 91 + Net/src/RemoteSyslogChannel.cpp | 355 + Net/src/RemoteSyslogListener.cpp | 579 + Net/src/SMTPClientSession.cpp | 373 + Net/src/ServerSocket.cpp | 144 + Net/src/ServerSocketImpl.cpp | 54 + Net/src/Socket.cpp | 340 + Net/src/SocketAddress.cpp | 422 + Net/src/SocketImpl.cpp | 1017 + Net/src/SocketNotification.cpp | 127 + Net/src/SocketNotifier.cpp | 111 + Net/src/SocketReactor.cpp | 288 + Net/src/SocketStream.cpp | 178 + Net/src/StreamSocket.cpp | 148 + Net/src/StreamSocketImpl.cpp | 95 + Net/src/StringPartSource.cpp | 83 + Net/src/TCPServer.cpp | 179 + Net/src/TCPServerConnection.cpp | 82 + Net/src/TCPServerConnectionFactory.cpp | 54 + Net/src/TCPServerDispatcher.cpp | 258 + Net/src/TCPServerParams.cpp | 86 + Net/src/WebSocket.cpp | 244 + Net/src/WebSocketImpl.cpp | 279 + Net/testsuite/Makefile | 35 + Net/testsuite/TestSuite.progen | 12 + Net/testsuite/TestSuite.vmsbuild | 9 + Net/testsuite/TestSuite.vxbuild | 67 + Net/testsuite/TestSuite_CE_vs90.vcproj | 824 + Net/testsuite/TestSuite_vs100.vcxproj | 419 + Net/testsuite/TestSuite_vs100.vcxproj.filters | 483 + Net/testsuite/TestSuite_vs71.vcproj | 759 + Net/testsuite/TestSuite_vs80.vcproj | 799 + Net/testsuite/TestSuite_vs90.vcproj | 799 + Net/testsuite/TestSuite_x64_vs100.vcxproj | 419 + .../TestSuite_x64_vs100.vcxproj.filters | 483 + Net/testsuite/TestSuite_x64_vs90.vcproj | 799 + Net/testsuite/src/DNSTest.cpp | 135 + Net/testsuite/src/DNSTest.h | 62 + Net/testsuite/src/DatagramSocketTest.cpp | 141 + Net/testsuite/src/DatagramSocketTest.h | 62 + Net/testsuite/src/DialogServer.cpp | 190 + Net/testsuite/src/DialogServer.h | 103 + Net/testsuite/src/DialogSocketTest.cpp | 132 + Net/testsuite/src/DialogSocketTest.h | 60 + Net/testsuite/src/Driver.cpp | 39 + Net/testsuite/src/EchoServer.cpp | 94 + Net/testsuite/src/EchoServer.h | 70 + Net/testsuite/src/FTPClientSessionTest.cpp | 550 + Net/testsuite/src/FTPClientSessionTest.h | 69 + Net/testsuite/src/FTPClientTestSuite.cpp | 46 + Net/testsuite/src/FTPClientTestSuite.h | 49 + Net/testsuite/src/FTPStreamFactoryTest.cpp | 279 + Net/testsuite/src/FTPStreamFactoryTest.h | 64 + Net/testsuite/src/HTMLFormTest.cpp | 373 + Net/testsuite/src/HTMLFormTest.h | 69 + Net/testsuite/src/HTMLTestSuite.cpp | 44 + Net/testsuite/src/HTMLTestSuite.h | 49 + Net/testsuite/src/HTTPClientSessionTest.cpp | 328 + Net/testsuite/src/HTTPClientSessionTest.h | 71 + Net/testsuite/src/HTTPClientTestSuite.cpp | 46 + Net/testsuite/src/HTTPClientTestSuite.h | 49 + Net/testsuite/src/HTTPCookieTest.cpp | 121 + Net/testsuite/src/HTTPCookieTest.h | 62 + Net/testsuite/src/HTTPCredentialsTest.cpp | 331 + Net/testsuite/src/HTTPCredentialsTest.h | 72 + Net/testsuite/src/HTTPRequestTest.cpp | 275 + Net/testsuite/src/HTTPRequestTest.h | 70 + Net/testsuite/src/HTTPResponseTest.cpp | 235 + Net/testsuite/src/HTTPResponseTest.h | 67 + Net/testsuite/src/HTTPServerTest.cpp | 580 + Net/testsuite/src/HTTPServerTest.h | 73 + Net/testsuite/src/HTTPServerTestSuite.cpp | 44 + Net/testsuite/src/HTTPServerTestSuite.h | 49 + Net/testsuite/src/HTTPStreamFactoryTest.cpp | 154 + Net/testsuite/src/HTTPStreamFactoryTest.h | 64 + Net/testsuite/src/HTTPTestServer.cpp | 244 + Net/testsuite/src/HTTPTestServer.h | 81 + Net/testsuite/src/HTTPTestSuite.cpp | 50 + Net/testsuite/src/HTTPTestSuite.h | 49 + Net/testsuite/src/ICMPClientTest.cpp | 152 + Net/testsuite/src/ICMPClientTest.h | 68 + Net/testsuite/src/ICMPClientTestSuite.cpp | 44 + Net/testsuite/src/ICMPClientTestSuite.h | 49 + Net/testsuite/src/ICMPSocketTest.cpp | 115 + Net/testsuite/src/ICMPSocketTest.h | 61 + Net/testsuite/src/IPAddressTest.cpp | 573 + Net/testsuite/src/IPAddressTest.h | 70 + Net/testsuite/src/MailMessageTest.cpp | 466 + Net/testsuite/src/MailMessageTest.h | 68 + Net/testsuite/src/MailStreamTest.cpp | 141 + Net/testsuite/src/MailStreamTest.h | 61 + Net/testsuite/src/MailTestSuite.cpp | 50 + Net/testsuite/src/MailTestSuite.h | 49 + Net/testsuite/src/MediaTypeTest.cpp | 154 + Net/testsuite/src/MediaTypeTest.h | 63 + Net/testsuite/src/MessageHeaderTest.cpp | 417 + Net/testsuite/src/MessageHeaderTest.h | 75 + Net/testsuite/src/MessagesTestSuite.cpp | 54 + Net/testsuite/src/MessagesTestSuite.h | 49 + Net/testsuite/src/MulticastEchoServer.cpp | 117 + Net/testsuite/src/MulticastEchoServer.h | 85 + Net/testsuite/src/MulticastSocketTest.cpp | 96 + Net/testsuite/src/MulticastSocketTest.h | 60 + Net/testsuite/src/MultipartReaderTest.cpp | 400 + Net/testsuite/src/MultipartReaderTest.h | 68 + Net/testsuite/src/MultipartWriterTest.cpp | 116 + Net/testsuite/src/MultipartWriterTest.h | 62 + Net/testsuite/src/NameValueCollectionTest.cpp | 148 + Net/testsuite/src/NameValueCollectionTest.h | 60 + Net/testsuite/src/NetCoreTestSuite.cpp | 48 + Net/testsuite/src/NetCoreTestSuite.h | 49 + Net/testsuite/src/NetTestSuite.cpp | 70 + Net/testsuite/src/NetTestSuite.h | 49 + Net/testsuite/src/NetworkInterfaceTest.cpp | 124 + Net/testsuite/src/NetworkInterfaceTest.h | 63 + Net/testsuite/src/POP3ClientSessionTest.cpp | 318 + Net/testsuite/src/POP3ClientSessionTest.h | 67 + Net/testsuite/src/QuotedPrintableTest.cpp | 122 + Net/testsuite/src/QuotedPrintableTest.h | 61 + Net/testsuite/src/RawSocketTest.cpp | 127 + Net/testsuite/src/RawSocketTest.h | 61 + Net/testsuite/src/ReactorTestSuite.cpp | 44 + Net/testsuite/src/ReactorTestSuite.h | 49 + Net/testsuite/src/SMTPClientSessionTest.cpp | 216 + Net/testsuite/src/SMTPClientSessionTest.h | 64 + Net/testsuite/src/SocketAddressTest.cpp | 166 + Net/testsuite/src/SocketAddressTest.h | 61 + Net/testsuite/src/SocketReactorTest.cpp | 300 + Net/testsuite/src/SocketReactorTest.h | 62 + Net/testsuite/src/SocketStreamTest.cpp | 137 + Net/testsuite/src/SocketStreamTest.h | 61 + Net/testsuite/src/SocketTest.cpp | 493 + Net/testsuite/src/SocketTest.h | 74 + Net/testsuite/src/SocketsTestSuite.cpp | 56 + Net/testsuite/src/SocketsTestSuite.h | 49 + Net/testsuite/src/SyslogTest.cpp | 215 + Net/testsuite/src/SyslogTest.h | 61 + Net/testsuite/src/TCPServerTest.cpp | 276 + Net/testsuite/src/TCPServerTest.h | 62 + Net/testsuite/src/TCPServerTestSuite.cpp | 44 + Net/testsuite/src/TCPServerTestSuite.h | 49 + Net/testsuite/src/UDPEchoServer.cpp | 105 + Net/testsuite/src/UDPEchoServer.h | 78 + Net/testsuite/src/WebSocketTest.cpp | 172 + Net/testsuite/src/WebSocketTest.h | 60 + Net/testsuite/src/WebSocketTestSuite.cpp | 44 + Net/testsuite/src/WebSocketTestSuite.h | 49 + Net/testsuite/src/WinCEDriver.cpp | 52 + Net/testsuite/src/WinDriver.cpp | 50 + NetSSL_OpenSSL/Makefile | 27 + NetSSL_OpenSSL/NetSSL_OpenSSL.progen | 25 + NetSSL_OpenSSL/NetSSL_OpenSSL_CE_vs90.sln | 60 + NetSSL_OpenSSL/NetSSL_OpenSSL_CE_vs90.vcproj | 616 + NetSSL_OpenSSL/NetSSL_OpenSSL_vs100.sln | 60 + NetSSL_OpenSSL/NetSSL_OpenSSL_vs100.vcxproj | 338 + .../NetSSL_OpenSSL_vs100.vcxproj.filters | 213 + NetSSL_OpenSSL/NetSSL_OpenSSL_vs71.sln | 50 + NetSSL_OpenSSL/NetSSL_OpenSSL_vs71.vcproj | 548 + NetSSL_OpenSSL/NetSSL_OpenSSL_vs80.sln | 60 + NetSSL_OpenSSL/NetSSL_OpenSSL_vs80.vcproj | 569 + NetSSL_OpenSSL/NetSSL_OpenSSL_vs90.sln | 60 + NetSSL_OpenSSL/NetSSL_OpenSSL_vs90.vcproj | 568 + NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs100.sln | 60 + .../NetSSL_OpenSSL_x64_vs100.vcxproj | 336 + .../NetSSL_OpenSSL_x64_vs100.vcxproj.filters | 213 + NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs90.sln | 60 + NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs90.vcproj | 573 + NetSSL_OpenSSL/dependencies | 4 + NetSSL_OpenSSL/doc/howtobuild.txt | 36 + .../Poco/Net/AcceptCertificateHandler.h | 74 + .../Poco/Net/CertificateHandlerFactory.h | 115 + .../Poco/Net/CertificateHandlerFactoryMgr.h | 86 + .../Poco/Net/ConsoleCertificateHandler.h | 72 + NetSSL_OpenSSL/include/Poco/Net/Context.h | 332 + .../include/Poco/Net/HTTPSClientSession.h | 186 + .../Poco/Net/HTTPSSessionInstantiator.h | 77 + .../include/Poco/Net/HTTPSStreamFactory.h | 101 + .../Poco/Net/InvalidCertificateHandler.h | 102 + .../include/Poco/Net/KeyConsoleHandler.h | 69 + .../include/Poco/Net/KeyFileHandler.h | 73 + NetSSL_OpenSSL/include/Poco/Net/NetSSL.h | 109 + .../include/Poco/Net/PrivateKeyFactory.h | 117 + .../include/Poco/Net/PrivateKeyFactoryMgr.h | 86 + .../Poco/Net/PrivateKeyPassphraseHandler.h | 106 + .../Poco/Net/RejectCertificateHandler.h | 70 + .../include/Poco/Net/SSLException.h | 61 + NetSSL_OpenSSL/include/Poco/Net/SSLManager.h | 387 + .../Poco/Net/SecureSMTPClientSession.h | 115 + .../include/Poco/Net/SecureServerSocket.h | 158 + .../include/Poco/Net/SecureServerSocketImpl.h | 168 + .../include/Poco/Net/SecureSocketImpl.h | 271 + .../include/Poco/Net/SecureStreamSocket.h | 294 + .../include/Poco/Net/SecureStreamSocketImpl.h | 321 + NetSSL_OpenSSL/include/Poco/Net/Session.h | 101 + NetSSL_OpenSSL/include/Poco/Net/Utility.h | 74 + .../include/Poco/Net/VerificationErrorArgs.h | 130 + .../include/Poco/Net/X509Certificate.h | 124 + .../HTTPSTimeServer/HTTPSTimeServer.progen | 18 + .../HTTPSTimeServer.properties | 27 + .../HTTPSTimeServer/HTTPSTimeServer.vmsbuild | 7 + .../HTTPSTimeServer_CE_vs90.vcproj | 471 + .../HTTPSTimeServer_vs100.vcxproj | 302 + .../HTTPSTimeServer_vs100.vcxproj.filters | 21 + .../HTTPSTimeServer_vs71.vcproj | 398 + .../HTTPSTimeServer_vs80.vcproj | 438 + .../HTTPSTimeServer_vs90.vcproj | 438 + .../HTTPSTimeServer_x64_vs100.vcxproj | 302 + .../HTTPSTimeServer_x64_vs100.vcxproj.filters | 21 + .../HTTPSTimeServer_x64_vs90.vcproj | 438 + .../samples/HTTPSTimeServer/Makefile | 19 + .../samples/HTTPSTimeServer/any.pem | 54 + .../samples/HTTPSTimeServer/rootcert.pem | 25 + .../HTTPSTimeServer/src/HTTPSTimeServer.cpp | 256 + NetSSL_OpenSSL/samples/Mail/Mail.progen | 18 + NetSSL_OpenSSL/samples/Mail/Mail.vmsbuild | 8 + .../samples/Mail/Mail_CE_vs90.vcproj | 468 + .../samples/Mail/Mail_vs100.vcxproj | 302 + .../samples/Mail/Mail_vs100.vcxproj.filters | 18 + NetSSL_OpenSSL/samples/Mail/Mail_vs71.vcproj | 395 + NetSSL_OpenSSL/samples/Mail/Mail_vs80.vcproj | 435 + NetSSL_OpenSSL/samples/Mail/Mail_vs90.vcproj | 435 + .../samples/Mail/Mail_x64_vs100.vcxproj | 302 + .../Mail/Mail_x64_vs100.vcxproj.filters | 18 + .../samples/Mail/Mail_x64_vs90.vcproj | 435 + NetSSL_OpenSSL/samples/Mail/Makefile | 17 + NetSSL_OpenSSL/samples/Mail/src/Mail.cpp | 140 + NetSSL_OpenSSL/samples/Mail/src/PocoLogo.hpp | 134 + NetSSL_OpenSSL/samples/Makefile | 12 + NetSSL_OpenSSL/samples/download/Makefile | 19 + .../samples/download/doc/readme.txt | 3 + .../samples/download/download.progen | 18 + .../samples/download/download.vmsbuild | 8 + .../samples/download/download_CE_vs90.vcproj | 466 + .../samples/download/download_vs100.vcxproj | 299 + .../download/download_vs100.vcxproj.filters | 13 + .../samples/download/download_vs71.vcproj | 393 + .../samples/download/download_vs80.vcproj | 433 + .../samples/download/download_vs90.vcproj | 433 + .../download/download_x64_vs100.vcxproj | 299 + .../download_x64_vs100.vcxproj.filters | 13 + .../samples/download/download_x64_vs90.vcproj | 433 + NetSSL_OpenSSL/samples/download/rootcert.pem | 3971 + .../samples/download/src/download.cpp | 117 + NetSSL_OpenSSL/samples/samples.progen | 7 + NetSSL_OpenSSL/samples/samples_CE_vs90.sln | 77 + NetSSL_OpenSSL/samples/samples_vs100.sln | 77 + NetSSL_OpenSSL/samples/samples_vs71.sln | 65 + NetSSL_OpenSSL/samples/samples_vs80.sln | 77 + NetSSL_OpenSSL/samples/samples_vs90.sln | 77 + NetSSL_OpenSSL/samples/samples_x64_vs100.sln | 77 + NetSSL_OpenSSL/samples/samples_x64_vs90.sln | 77 + .../src/AcceptCertificateHandler.cpp | 60 + .../src/CertificateHandlerFactory.cpp | 66 + .../src/CertificateHandlerFactoryMgr.cpp | 91 + .../src/ConsoleCertificateHandler.cpp | 75 + NetSSL_OpenSSL/src/Context.cpp | 362 + NetSSL_OpenSSL/src/HTTPSClientSession.cpp | 199 + .../src/HTTPSSessionInstantiator.cpp | 78 + NetSSL_OpenSSL/src/HTTPSStreamFactory.cpp | 189 + .../src/InvalidCertificateHandler.cpp | 67 + NetSSL_OpenSSL/src/KeyConsoleHandler.cpp | 62 + NetSSL_OpenSSL/src/KeyFileHandler.cpp | 83 + NetSSL_OpenSSL/src/PrivateKeyFactory.cpp | 66 + NetSSL_OpenSSL/src/PrivateKeyFactoryMgr.cpp | 89 + .../src/PrivateKeyPassphraseHandler.cpp | 61 + .../src/RejectCertificateHandler.cpp | 60 + NetSSL_OpenSSL/src/SSLException.cpp | 52 + NetSSL_OpenSSL/src/SSLManager.cpp | 397 + .../src/SecureSMTPClientSession.cpp | 85 + NetSSL_OpenSSL/src/SecureServerSocket.cpp | 143 + NetSSL_OpenSSL/src/SecureServerSocketImpl.cpp | 136 + NetSSL_OpenSSL/src/SecureSocketImpl.cpp | 500 + NetSSL_OpenSSL/src/SecureStreamSocket.cpp | 291 + NetSSL_OpenSSL/src/SecureStreamSocketImpl.cpp | 261 + NetSSL_OpenSSL/src/Session.cpp | 62 + NetSSL_OpenSSL/src/Utility.cpp | 93 + NetSSL_OpenSSL/src/VerificationErrorArgs.cpp | 59 + NetSSL_OpenSSL/src/X509Certificate.cpp | 195 + NetSSL_OpenSSL/testsuite/Makefile | 21 + NetSSL_OpenSSL/testsuite/TestSuite.progen | 18 + NetSSL_OpenSSL/testsuite/TestSuite.vmsbuild | 9 + NetSSL_OpenSSL/testsuite/TestSuite.xml | 48 + .../testsuite/TestSuite_CE_vs90.vcproj | 550 + .../testsuite/TestSuite_vs100.vcxproj | 327 + .../testsuite/TestSuite_vs100.vcxproj.filters | 117 + .../testsuite/TestSuite_vs71.vcproj | 485 + .../testsuite/TestSuite_vs80.vcproj | 525 + .../testsuite/TestSuite_vs90.vcproj | 525 + .../testsuite/TestSuite_x64_vs100.vcxproj | 327 + .../TestSuite_x64_vs100.vcxproj.filters | 117 + .../testsuite/TestSuite_x64_vs90.vcproj | 525 + NetSSL_OpenSSL/testsuite/TestSuitemt.xml | 48 + NetSSL_OpenSSL/testsuite/any.pem | 54 + NetSSL_OpenSSL/testsuite/rootcert.pem | 3971 + NetSSL_OpenSSL/testsuite/src/Driver.cpp | 97 + .../testsuite/src/HTTPSClientSessionTest.cpp | 465 + .../testsuite/src/HTTPSClientSessionTest.h | 71 + .../testsuite/src/HTTPSClientTestSuite.cpp | 46 + .../testsuite/src/HTTPSClientTestSuite.h | 49 + .../testsuite/src/HTTPSServerTest.cpp | 371 + .../testsuite/src/HTTPSServerTest.h | 67 + .../testsuite/src/HTTPSServerTestSuite.cpp | 44 + .../testsuite/src/HTTPSServerTestSuite.h | 49 + .../testsuite/src/HTTPSStreamFactoryTest.cpp | 159 + .../testsuite/src/HTTPSStreamFactoryTest.h | 64 + .../testsuite/src/HTTPSTestServer.cpp | 252 + .../testsuite/src/HTTPSTestServer.h | 84 + .../testsuite/src/NetSSLTestSuite.cpp | 50 + .../testsuite/src/NetSSLTestSuite.h | 49 + .../testsuite/src/TCPServerTest.cpp | 427 + NetSSL_OpenSSL/testsuite/src/TCPServerTest.h | 64 + .../testsuite/src/TCPServerTestSuite.cpp | 44 + .../testsuite/src/TCPServerTestSuite.h | 49 + NetSSL_OpenSSL/testsuite/src/WinCEDriver.cpp | 110 + NetSSL_OpenSSL/testsuite/src/WinDriver.cpp | 97 + NetSSL_OpenSSL/testsuite/testrunner.xml | 48 + PDF/Makefile | 36 + PDF/PDF_vs80.sln | 26 + PDF/PDF_vs80.vcproj | 807 + PDF/include/Poco/PDF/Destination.h | 152 + PDF/include/Poco/PDF/Document.h | 506 + PDF/include/Poco/PDF/Encoder.h | 135 + PDF/include/Poco/PDF/Font.h | 171 + PDF/include/Poco/PDF/Image.h | 141 + PDF/include/Poco/PDF/LinkAnnotation.h | 103 + PDF/include/Poco/PDF/Outline.h | 106 + PDF/include/Poco/PDF/PDF.h | 93 + PDF/include/Poco/PDF/PDFException.h | 63 + PDF/include/Poco/PDF/Page.h | 1161 + PDF/include/Poco/PDF/Resource.h | 149 + PDF/include/Poco/PDF/TextAnnotation.h | 110 + PDF/include/Poco/PDF/adler32.c | 149 + PDF/include/Poco/PDF/crc32.h | 441 + PDF/include/Poco/PDF/deflate.c | 1736 + PDF/include/Poco/PDF/deflate.h | 331 + PDF/include/Poco/PDF/hpdf.h | 1227 + PDF/include/Poco/PDF/hpdf_annotation.h | 74 + PDF/include/Poco/PDF/hpdf_catalog.h | 81 + PDF/include/Poco/PDF/hpdf_conf.h | 76 + PDF/include/Poco/PDF/hpdf_consts.h | 549 + PDF/include/Poco/PDF/hpdf_destination.h | 41 + PDF/include/Poco/PDF/hpdf_doc.h | 159 + PDF/include/Poco/PDF/hpdf_encoder.h | 311 + PDF/include/Poco/PDF/hpdf_encrypt.h | 156 + PDF/include/Poco/PDF/hpdf_encryptdict.h | 66 + PDF/include/Poco/PDF/hpdf_error.h | 201 + PDF/include/Poco/PDF/hpdf_ext_gstate.h | 38 + PDF/include/Poco/PDF/hpdf_font.h | 112 + PDF/include/Poco/PDF/hpdf_fontdef.h | 403 + PDF/include/Poco/PDF/hpdf_gstate.h | 80 + PDF/include/Poco/PDF/hpdf_image.h | 72 + PDF/include/Poco/PDF/hpdf_info.h | 48 + PDF/include/Poco/PDF/hpdf_list.h | 85 + PDF/include/Poco/PDF/hpdf_mmgr.h | 82 + PDF/include/Poco/PDF/hpdf_objects.h | 587 + PDF/include/Poco/PDF/hpdf_outline.h | 74 + PDF/include/Poco/PDF/hpdf_page_label.h | 35 + PDF/include/Poco/PDF/hpdf_pages.h | 128 + PDF/include/Poco/PDF/hpdf_streams.h | 276 + PDF/include/Poco/PDF/hpdf_types.h | 488 + PDF/include/Poco/PDF/hpdf_utils.h | 161 + PDF/include/Poco/PDF/inffast.h | 11 + PDF/include/Poco/PDF/inffixed.h | 94 + PDF/include/Poco/PDF/inflate.h | 115 + PDF/include/Poco/PDF/inftrees.h | 55 + PDF/include/Poco/PDF/png.h | 3549 + PDF/include/Poco/PDF/pngconf.h | 1481 + PDF/include/Poco/PDF/trees.h | 128 + PDF/include/Poco/PDF/zconf.h | 332 + PDF/include/Poco/PDF/zlib.h | 1357 + PDF/include/Poco/PDF/zutil.h | 269 + PDF/samples/Image/Image_vs80.vcproj | 212 + PDF/samples/Image/Makefile | 17 + PDF/samples/Image/logo.PNG | Bin 0 -> 3079 bytes PDF/samples/Image/src/Image.cpp | 65 + PDF/samples/Makefile | 13 + PDF/samples/Text/Makefile | 17 + PDF/samples/Text/Text_vs80.vcproj | 212 + PDF/samples/Text/src/Text.cpp | 53 + PDF/samples/samples_vs80.sln | 26 + PDF/src/Destination.cpp | 58 + PDF/src/Document.cpp | 366 + PDF/src/Encoder.cpp | 58 + PDF/src/Font.cpp | 56 + PDF/src/Image.cpp | 56 + PDF/src/LinkAnnotation.cpp | 58 + PDF/src/Outline.cpp | 71 + PDF/src/PDFException.cpp | 293 + PDF/src/Page.cpp | 207 + PDF/src/TextAnnotation.cpp | 60 + PDF/src/adler32.c | 149 + PDF/src/compress.c | 79 + PDF/src/crc32.c | 423 + PDF/src/deflate.c | 1736 + PDF/src/gzio.c | 1026 + PDF/src/hpdf_annotation.c | 415 + PDF/src/hpdf_array.c | 344 + PDF/src/hpdf_binary.c | 117 + PDF/src/hpdf_boolean.c | 47 + PDF/src/hpdf_catalog.c | 354 + PDF/src/hpdf_destination.c | 339 + PDF/src/hpdf_dict.c | 488 + PDF/src/hpdf_doc.c | 2020 + PDF/src/hpdf_doc_png.c | 137 + PDF/src/hpdf_encoder.c | 2991 + PDF/src/hpdf_encoder_cns.c | 36359 ++++ PDF/src/hpdf_encoder_cnt.c | 15307 ++ PDF/src/hpdf_encoder_jp.c | 16125 ++ PDF/src/hpdf_encoder_kr.c | 27978 +++ PDF/src/hpdf_encrypt.c | 632 + PDF/src/hpdf_encryptdict.c | 240 + PDF/src/hpdf_error.c | 114 + PDF/src/hpdf_ext_gstate.c | 150 + PDF/src/hpdf_font.c | 229 + PDF/src/hpdf_font_cid.c | 1030 + PDF/src/hpdf_font_tt.c | 406 + PDF/src/hpdf_font_type1.c | 391 + PDF/src/hpdf_fontdef.c | 56 + PDF/src/hpdf_fontdef_base14.c | 4506 + PDF/src/hpdf_fontdef_cid.c | 194 + PDF/src/hpdf_fontdef_cns.c | 471 + PDF/src/hpdf_fontdef_cnt.c | 250 + PDF/src/hpdf_fontdef_jp.c | 1904 + PDF/src/hpdf_fontdef_kr.c | 1572 + PDF/src/hpdf_fontdef_tt.c | 2230 + PDF/src/hpdf_fontdef_type1.c | 524 + PDF/src/hpdf_gstate.c | 119 + PDF/src/hpdf_image.c | 568 + PDF/src/hpdf_image_png.c | 424 + PDF/src/hpdf_info.c | 164 + PDF/src/hpdf_list.c | 333 + PDF/src/hpdf_mmgr.c | 243 + PDF/src/hpdf_name.c | 71 + PDF/src/hpdf_null.c | 31 + PDF/src/hpdf_number.c | 49 + PDF/src/hpdf_objects.c | 172 + PDF/src/hpdf_outline.c | 329 + PDF/src/hpdf_page_label.c | 74 + PDF/src/hpdf_page_operator.c | 2764 + PDF/src/hpdf_pages.c | 1508 + PDF/src/hpdf_real.c | 61 + PDF/src/hpdf_streams.c | 1435 + PDF/src/hpdf_string.c | 189 + PDF/src/hpdf_utils.c | 438 + PDF/src/hpdf_xref.c | 348 + PDF/src/infback.c | 623 + PDF/src/inffast.c | 318 + PDF/src/inflate.c | 1368 + PDF/src/inftrees.c | 329 + PDF/src/png.c | 798 + PDF/src/pngerror.c | 343 + PDF/src/pnggccrd.c | 101 + PDF/src/pngget.c | 901 + PDF/src/pngmem.c | 608 + PDF/src/pngpread.c | 1586 + PDF/src/pngread.c | 1473 + PDF/src/pngrio.c | 167 + PDF/src/pngrtran.c | 4284 + PDF/src/pngrutil.c | 3164 + PDF/src/pngset.c | 1250 + PDF/src/pngtest.c | 1556 + PDF/src/pngtrans.c | 662 + PDF/src/pngvcrd.c | 1 + PDF/src/pngwio.c | 234 + PDF/src/pngwrite.c | 1516 + PDF/src/pngwtran.c | 572 + PDF/src/pngwutil.c | 2792 + PDF/src/trees.c | 1223 + PDF/src/zutil.c | 318 + PDF/testsuite/Makefile | 17 + PDF/testsuite/TestSuite_VS80.vcproj | 251 + PDF/testsuite/src/Driver.cpp | 39 + PDF/testsuite/src/PDFTest.cpp | 120 + PDF/testsuite/src/PDFTest.h | 65 + PDF/testsuite/src/PDFTestSuite.cpp | 44 + PDF/testsuite/src/PDFTestSuite.h | 49 + PDF/testsuite/src/WinDriver.cpp | 50 + PageCompiler/File2Page/File2Page.progen | 16 + PageCompiler/File2Page/File2Page_vs100.sln | 37 + .../File2Page/File2Page_vs100.vcxproj | 299 + .../File2Page/File2Page_vs100.vcxproj.filters | 16 + PageCompiler/File2Page/File2Page_vs71.sln | 33 + PageCompiler/File2Page/File2Page_vs71.vcproj | 395 + PageCompiler/File2Page/File2Page_vs80.sln | 37 + PageCompiler/File2Page/File2Page_vs80.vcproj | 435 + PageCompiler/File2Page/File2Page_vs90.sln | 37 + PageCompiler/File2Page/File2Page_vs90.vcproj | 435 + .../File2Page/File2Page_x64_vs100.sln | 37 + .../File2Page/File2Page_x64_vs100.vcxproj | 299 + .../File2Page_x64_vs100.vcxproj.filters | 16 + PageCompiler/File2Page/File2Page_x64_vs90.sln | 37 + .../File2Page/File2Page_x64_vs90.vcproj | 435 + PageCompiler/File2Page/Makefile | 17 + PageCompiler/File2Page/dependencies | 4 + PageCompiler/File2Page/src/File2Page.cpp | 298 + PageCompiler/Makefile | 19 + PageCompiler/PageCompiler.progen | 16 + PageCompiler/PageCompiler_vs100.sln | 37 + PageCompiler/PageCompiler_vs100.vcxproj | 314 + .../PageCompiler_vs100.vcxproj.filters | 56 + PageCompiler/PageCompiler_vs71.sln | 33 + PageCompiler/PageCompiler_vs71.vcproj | 421 + PageCompiler/PageCompiler_vs80.sln | 37 + PageCompiler/PageCompiler_vs80.vcproj | 461 + PageCompiler/PageCompiler_vs90.sln | 37 + PageCompiler/PageCompiler_vs90.vcproj | 461 + PageCompiler/PageCompiler_x64_vs100.sln | 37 + PageCompiler/PageCompiler_x64_vs100.vcxproj | 314 + .../PageCompiler_x64_vs100.vcxproj.filters | 56 + PageCompiler/PageCompiler_x64_vs90.sln | 37 + PageCompiler/PageCompiler_x64_vs90.vcproj | 461 + PageCompiler/cpspc.properties | 1 + PageCompiler/dependencies | 4 + PageCompiler/doc/PageCompilerUserGuide.page | 375 + .../HTTPTimeServer/HTTPTimeServer.progen | 12 + .../HTTPTimeServer_CE_vs90.vcproj | 478 + .../HTTPTimeServer_vs100.vcxproj | 306 + .../HTTPTimeServer_vs100.vcxproj.filters | 32 + .../HTTPTimeServer/HTTPTimeServer_vs71.vcproj | 405 + .../HTTPTimeServer/HTTPTimeServer_vs80.vcproj | 445 + .../HTTPTimeServer/HTTPTimeServer_vs90.vcproj | 445 + .../HTTPTimeServer_x64_vs100.vcxproj | 306 + .../HTTPTimeServer_x64_vs100.vcxproj.filters | 32 + .../HTTPTimeServer_x64_vs90.vcproj | 445 + PageCompiler/samples/HTTPTimeServer/Makefile | 25 + .../HTTPTimeServer/src/HTTPTimeServerApp.cpp | 179 + .../HTTPTimeServer/src/TimeHandler.cpp | 49 + .../HTTPTimeServer/src/TimeHandler.cpsp | 18 + .../samples/HTTPTimeServer/src/TimeHandler.h | 22 + PageCompiler/samples/Makefile | 12 + PageCompiler/samples/samples.progen | 4 + PageCompiler/samples/samples_CE_vs90.sln | 37 + PageCompiler/samples/samples_vs100.sln | 37 + PageCompiler/samples/samples_vs71.sln | 33 + PageCompiler/samples/samples_vs80.sln | 37 + PageCompiler/samples/samples_vs90.sln | 37 + PageCompiler/samples/samples_x64_vs100.sln | 37 + PageCompiler/samples/samples_x64_vs90.sln | 37 + PageCompiler/src/ApacheCodeWriter.cpp | 84 + PageCompiler/src/ApacheCodeWriter.h | 59 + PageCompiler/src/CodeWriter.cpp | 353 + PageCompiler/src/CodeWriter.h | 116 + PageCompiler/src/OSPCodeWriter.cpp | 149 + PageCompiler/src/OSPCodeWriter.h | 62 + PageCompiler/src/Page.cpp | 57 + PageCompiler/src/Page.h | 149 + PageCompiler/src/PageCompiler.cpp | 354 + PageCompiler/src/PageReader.cpp | 407 + PageCompiler/src/PageReader.h | 110 + PageCompiler/test/test.cpsp | 26 + PocoDoc/Makefile | 17 + PocoDoc/PocoDoc.progen | 16 + PocoDoc/PocoDoc_vs100.sln | 37 + PocoDoc/PocoDoc_vs100.vcxproj | 303 + PocoDoc/PocoDoc_vs100.vcxproj.filters | 36 + PocoDoc/PocoDoc_vs71.sln | 33 + PocoDoc/PocoDoc_vs71.vcproj | 411 + PocoDoc/PocoDoc_vs80.sln | 37 + PocoDoc/PocoDoc_vs80.vcproj | 451 + PocoDoc/PocoDoc_vs90.sln | 37 + PocoDoc/PocoDoc_vs90.vcproj | 451 + PocoDoc/PocoDoc_x64_vs100.sln | 37 + PocoDoc/PocoDoc_x64_vs100.vcxproj | 303 + PocoDoc/PocoDoc_x64_vs100.vcxproj.filters | 36 + PocoDoc/PocoDoc_x64_vs90.sln | 37 + PocoDoc/PocoDoc_x64_vs90.vcproj | 451 + PocoDoc/cfg/mkdoc-poco.xml | 103 + PocoDoc/dependencies | 4 + PocoDoc/images/%inline.psd | Bin 0 -> 24133 bytes PocoDoc/images/%protected.psd | Bin 0 -> 21829 bytes PocoDoc/images/%static.psd | Bin 0 -> 24601 bytes PocoDoc/images/%virtual.psd | Bin 0 -> 25620 bytes PocoDoc/images/Icons.key/color-profile | Bin 0 -> 54588 bytes PocoDoc/images/Icons.key/index.apxl.gz | Bin 0 -> 139015 bytes PocoDoc/images/inline.psd | Bin 0 -> 22700 bytes PocoDoc/images/protected.psd | Bin 0 -> 18140 bytes PocoDoc/images/static.psd | Bin 0 -> 22087 bytes PocoDoc/images/virtual.psd | Bin 0 -> 25370 bytes PocoDoc/pages/samplePage.page | 39 + PocoDoc/resources/css/prettify.css | 27 + PocoDoc/resources/css/styles.css | 1 + PocoDoc/resources/go.php | 30 + PocoDoc/resources/images/arrow.gif | Bin 0 -> 325 bytes PocoDoc/resources/images/background.jpg | Bin 0 -> 810 bytes PocoDoc/resources/images/bottom.jpg | Bin 0 -> 557 bytes PocoDoc/resources/images/bullet.gif | Bin 0 -> 77 bytes PocoDoc/resources/images/header.jpg | Bin 0 -> 11056 bytes PocoDoc/resources/images/inline.gif | Bin 0 -> 336 bytes PocoDoc/resources/images/poco.png | Bin 0 -> 16388 bytes PocoDoc/resources/images/protected.gif | Bin 0 -> 338 bytes PocoDoc/resources/images/static.gif | Bin 0 -> 336 bytes PocoDoc/resources/images/title.jpg | Bin 0 -> 77289 bytes PocoDoc/resources/images/virtual.gif | Bin 0 -> 336 bytes PocoDoc/resources/index.html | 18 + PocoDoc/resources/js/prettify.js | 1432 + PocoDoc/resources/platform/go.php | 30 + .../resources/platform/images/%headerlogo.png | Bin 0 -> 49119 bytes .../resources/platform/images/headerlogo.png | Bin 0 -> 2584 bytes PocoDoc/resources/platform/index.html | 18 + PocoDoc/resources/platform/welcome.thtml | 32 + PocoDoc/resources/welcome.thtml | 30 + PocoDoc/src/DocWriter.cpp | 2313 + PocoDoc/src/DocWriter.h | 245 + PocoDoc/src/PocoDoc.cpp | 511 + ProGen/ProGen_vs100.sln | 37 + ProGen/ProGen_vs100.vcxproj | 306 + ProGen/ProGen_vs100.vcxproj.filters | 32 + ProGen/ProGen_vs71.sln | 33 + ProGen/ProGen_vs71.vcproj | 405 + ProGen/ProGen_vs80.sln | 37 + ProGen/ProGen_vs80.vcproj | 445 + ProGen/ProGen_vs90.sln | 37 + ProGen/ProGen_vs90.vcproj | 445 + ProGen/ProGen_x64_vs100.sln | 37 + ProGen/ProGen_x64_vs100.vcxproj | 306 + ProGen/ProGen_x64_vs100.vcxproj.filters | 32 + ProGen/ProGen_x64_vs90.sln | 37 + ProGen/ProGen_x64_vs90.vcproj | 445 + ProGen/progen.properties | 15 + ProGen/src/ProGen.cpp | 829 + ProGen/src/VSXMLWriter.cpp | 217 + ProGen/src/VSXMLWriter.h | 80 + .../Win32/executable/debug_shared.template | 85 + .../Win32/executable/debug_static_md.template | 85 + .../Win32/executable/debug_static_mt.template | 85 + .../vs100/Win32/executable/project.properties | 9 + .../vs100/Win32/executable/project.template | 26 + .../Win32/executable/release_shared.template | 87 + .../executable/release_static_md.template | 87 + .../executable/release_static_mt.template | 87 + .../vs100/Win32/library/debug_shared.template | 86 + .../Win32/library/debug_static_md.template | 72 + .../Win32/library/debug_static_mt.template | 72 + .../vs100/Win32/library/project.properties | 9 + .../vs100/Win32/library/project.template | 26 + .../Win32/library/release_shared.template | 89 + .../Win32/library/release_static_md.template | 75 + .../Win32/library/release_static_mt.template | 73 + .../vs100/Win32/plugin/debug_shared.template | 85 + .../vs100/Win32/plugin/project.properties | 5 + .../vs100/Win32/plugin/project.template | 26 + .../Win32/plugin/release_shared.template | 88 + .../Win32/testsuite/debug_shared.template | 86 + .../Win32/testsuite/debug_static_md.template | 86 + .../Win32/testsuite/debug_static_mt.template | 87 + .../vs100/Win32/testsuite/project.properties | 9 + .../vs100/Win32/testsuite/project.template | 26 + .../Win32/testsuite/release_shared.template | 88 + .../testsuite/release_static_md.template | 88 + .../testsuite/release_static_mt.template | 89 + .../x64/executable/debug_shared.template | 85 + .../x64/executable/debug_static_md.template | 85 + .../x64/executable/debug_static_mt.template | 85 + .../vs100/x64/executable/project.properties | 10 + .../vs100/x64/executable/project.template | 26 + .../x64/executable/release_shared.template | 87 + .../x64/executable/release_static_md.template | 87 + .../x64/executable/release_static_mt.template | 87 + .../vs100/x64/library/debug_shared.template | 86 + .../x64/library/debug_static_md.template | 73 + .../x64/library/debug_static_mt.template | 73 + .../vs100/x64/library/project.properties | 10 + .../vs100/x64/library/project.template | 26 + .../vs100/x64/library/release_shared.template | 90 + .../x64/library/release_static_md.template | 74 + .../x64/library/release_static_mt.template | 74 + .../vs100/x64/plugin/debug_shared.template | 85 + .../vs100/x64/plugin/project.properties | 6 + .../vs100/x64/plugin/project.template | 26 + .../vs100/x64/plugin/release_shared.template | 89 + .../vs100/x64/testsuite/debug_shared.template | 86 + .../x64/testsuite/debug_static_md.template | 86 + .../x64/testsuite/debug_static_mt.template | 87 + .../vs100/x64/testsuite/project.properties | 10 + .../vs100/x64/testsuite/project.template | 26 + .../x64/testsuite/release_shared.template | 88 + .../x64/testsuite/release_static_md.template | 88 + .../x64/testsuite/release_static_mt.template | 89 + .../Win32/executable/debug_shared.template | 59 + .../Win32/executable/debug_static_md.template | 59 + .../Win32/executable/debug_static_mt.template | 59 + .../vs71/Win32/executable/project.properties | 2 + .../vs71/Win32/executable/project.template | 21 + .../Win32/executable/release_shared.template | 65 + .../executable/release_static_md.template | 65 + .../executable/release_static_mt.template | 65 + .../vs71/Win32/library/debug_shared.template | 62 + .../Win32/library/debug_static_md.template | 53 + .../Win32/library/debug_static_mt.template | 53 + .../vs71/Win32/library/project.properties | 2 + .../vs71/Win32/library/project.template | 21 + .../Win32/library/release_shared.template | 66 + .../Win32/library/release_static_md.template | 56 + .../Win32/library/release_static_mt.template | 56 + .../vs71/Win32/plugin/debug_shared.template | 61 + .../vs71/Win32/plugin/project.properties | 2 + .../vs71/Win32/plugin/project.template | 21 + .../vs71/Win32/plugin/release_shared.template | 65 + .../Win32/testsuite/debug_shared.template | 60 + .../Win32/testsuite/debug_static_md.template | 60 + .../Win32/testsuite/debug_static_mt.template | 61 + .../vs71/Win32/testsuite/project.properties | 2 + .../vs71/Win32/testsuite/project.template | 21 + .../Win32/testsuite/release_shared.template | 66 + .../testsuite/release_static_md.template | 66 + .../testsuite/release_static_mt.template | 67 + .../Win32/executable/debug_shared.template | 85 + .../Win32/executable/debug_static_md.template | 85 + .../Win32/executable/debug_static_mt.template | 85 + .../vs80/Win32/executable/project.properties | 1 + .../vs80/Win32/executable/project.template | 25 + .../Win32/executable/release_shared.template | 87 + .../executable/release_static_md.template | 87 + .../executable/release_static_mt.template | 87 + .../vs80/Win32/library/debug_shared.template | 86 + .../Win32/library/debug_static_md.template | 72 + .../Win32/library/debug_static_mt.template | 72 + .../vs80/Win32/library/project.properties | 1 + .../vs80/Win32/library/project.template | 25 + .../Win32/library/release_shared.template | 90 + .../Win32/library/release_static_md.template | 73 + .../Win32/library/release_static_mt.template | 73 + .../vs80/Win32/plugin/debug_shared.template | 85 + .../vs80/Win32/plugin/project.properties | 1 + .../vs80/Win32/plugin/project.template | 25 + .../vs80/Win32/plugin/release_shared.template | 89 + .../Win32/testsuite/debug_shared.template | 86 + .../Win32/testsuite/debug_static_md.template | 86 + .../Win32/testsuite/debug_static_mt.template | 87 + .../vs80/Win32/testsuite/project.properties | 1 + .../vs80/Win32/testsuite/project.template | 25 + .../Win32/testsuite/release_shared.template | 88 + .../testsuite/release_static_md.template | 88 + .../testsuite/release_static_mt.template | 89 + .../Win32/executable/debug_shared.template | 85 + .../Win32/executable/debug_static_md.template | 85 + .../Win32/executable/debug_static_mt.template | 85 + .../vs90/Win32/executable/project.properties | 1 + .../vs90/Win32/executable/project.template | 26 + .../Win32/executable/release_shared.template | 87 + .../executable/release_static_md.template | 87 + .../executable/release_static_mt.template | 87 + .../vs90/Win32/library/debug_shared.template | 86 + .../Win32/library/debug_static_md.template | 72 + .../Win32/library/debug_static_mt.template | 72 + .../vs90/Win32/library/project.properties | 1 + .../vs90/Win32/library/project.template | 26 + .../Win32/library/release_shared.template | 89 + .../Win32/library/release_static_md.template | 73 + .../Win32/library/release_static_mt.template | 73 + .../vs90/Win32/plugin/debug_shared.template | 85 + .../vs90/Win32/plugin/project.properties | 1 + .../vs90/Win32/plugin/project.template | 26 + .../vs90/Win32/plugin/release_shared.template | 88 + .../Win32/testsuite/debug_shared.template | 86 + .../Win32/testsuite/debug_static_md.template | 86 + .../Win32/testsuite/debug_static_mt.template | 87 + .../vs90/Win32/testsuite/project.properties | 1 + .../vs90/Win32/testsuite/project.template | 26 + .../Win32/testsuite/release_shared.template | 88 + .../testsuite/release_static_md.template | 88 + .../testsuite/release_static_mt.template | 89 + .../WinCE/executable/debug_shared.template | 91 + .../WinCE/executable/debug_static_md.template | 91 + .../WinCE/executable/debug_static_mt.template | 91 + .../vs90/WinCE/executable/project.properties | 4 + .../vs90/WinCE/executable/project.template | 26 + .../WinCE/executable/release_shared.template | 92 + .../executable/release_static_md.template | 95 + .../executable/release_static_mt.template | 95 + .../vs90/WinCE/library/debug_shared.template | 96 + .../WinCE/library/debug_static_md.template | 83 + .../WinCE/library/debug_static_mt.template | 83 + .../vs90/WinCE/library/project.properties | 4 + .../vs90/WinCE/library/project.template | 26 + .../WinCE/library/release_shared.template | 97 + .../WinCE/library/release_static_md.template | 84 + .../WinCE/library/release_static_mt.template | 84 + .../vs90/WinCE/plugin/debug_shared.template | 94 + .../vs90/WinCE/plugin/project.properties | 4 + .../vs90/WinCE/plugin/project.template | 26 + .../vs90/WinCE/plugin/release_shared.template | 95 + .../WinCE/testsuite/debug_shared.template | 91 + .../WinCE/testsuite/debug_static_md.template | 91 + .../WinCE/testsuite/debug_static_mt.template | 91 + .../vs90/WinCE/testsuite/project.properties | 5 + .../vs90/WinCE/testsuite/project.template | 26 + .../WinCE/testsuite/release_shared.template | 92 + .../testsuite/release_static_md.template | 95 + .../testsuite/release_static_mt.template | 95 + .../vs90/x64/executable/debug_shared.template | 85 + .../x64/executable/debug_static_md.template | 85 + .../x64/executable/debug_static_mt.template | 85 + .../vs90/x64/executable/project.properties | 2 + .../vs90/x64/executable/project.template | 26 + .../x64/executable/release_shared.template | 87 + .../x64/executable/release_static_md.template | 87 + .../x64/executable/release_static_mt.template | 87 + .../vs90/x64/library/debug_shared.template | 86 + .../vs90/x64/library/debug_static_md.template | 73 + .../vs90/x64/library/debug_static_mt.template | 73 + .../vs90/x64/library/project.properties | 2 + .../vs90/x64/library/project.template | 26 + .../vs90/x64/library/release_shared.template | 90 + .../x64/library/release_static_md.template | 74 + .../x64/library/release_static_mt.template | 74 + .../vs90/x64/plugin/debug_shared.template | 85 + .../vs90/x64/plugin/project.properties | 2 + .../vs90/x64/plugin/project.template | 26 + .../vs90/x64/plugin/release_shared.template | 89 + .../vs90/x64/testsuite/debug_shared.template | 86 + .../x64/testsuite/debug_static_md.template | 86 + .../x64/testsuite/debug_static_mt.template | 87 + .../vs90/x64/testsuite/project.properties | 2 + .../vs90/x64/testsuite/project.template | 26 + .../x64/testsuite/release_shared.template | 88 + .../x64/testsuite/release_static_md.template | 88 + .../x64/testsuite/release_static_mt.template | 89 + README | 294 + Util/Makefile | 28 + Util/Util.progen | 16 + Util/Util.vmsbuild | 26 + Util/Util.vxbuild | 36 + Util/Util_CE_vs90.sln | 60 + Util/Util_CE_vs90.vcproj | 643 + Util/Util_vs100.sln | 60 + Util/Util_vs100.vcxproj | 343 + Util/Util_vs100.vcxproj.filters | 246 + Util/Util_vs71.sln | 50 + Util/Util_vs71.vcproj | 575 + Util/Util_vs80.sln | 60 + Util/Util_vs80.vcproj | 596 + Util/Util_vs90.sln | 60 + Util/Util_vs90.vcproj | 595 + Util/Util_x64_vs100.sln | 60 + Util/Util_x64_vs100.vcxproj | 341 + Util/Util_x64_vs100.vcxproj.filters | 246 + Util/Util_x64_vs90.sln | 60 + Util/Util_x64_vs90.vcproj | 600 + Util/dependencies | 2 + .../include/Poco/Util/AbstractConfiguration.h | 320 + Util/include/Poco/Util/Application.h | 534 + Util/include/Poco/Util/ConfigurationMapper.h | 116 + Util/include/Poco/Util/ConfigurationView.h | 104 + .../Poco/Util/FilesystemConfiguration.h | 115 + Util/include/Poco/Util/HelpFormatter.h | 224 + Util/include/Poco/Util/IniFileConfiguration.h | 113 + Util/include/Poco/Util/IntValidator.h | 78 + Util/include/Poco/Util/LayeredConfiguration.h | 170 + Util/include/Poco/Util/LoggingConfigurator.h | 161 + Util/include/Poco/Util/LoggingSubsystem.h | 74 + Util/include/Poco/Util/MapConfiguration.h | 83 + Util/include/Poco/Util/Option.h | 354 + Util/include/Poco/Util/OptionCallback.h | 131 + Util/include/Poco/Util/OptionException.h | 66 + Util/include/Poco/Util/OptionProcessor.h | 159 + Util/include/Poco/Util/OptionSet.h | 110 + .../Poco/Util/PropertyFileConfiguration.h | 121 + Util/include/Poco/Util/RegExpValidator.h | 76 + Util/include/Poco/Util/ServerApplication.h | 281 + Util/include/Poco/Util/Subsystem.h | 120 + Util/include/Poco/Util/SystemConfiguration.h | 111 + Util/include/Poco/Util/Timer.h | 146 + Util/include/Poco/Util/TimerTask.h | 117 + Util/include/Poco/Util/TimerTaskAdapter.h | 91 + Util/include/Poco/Util/Units.h | 1324 + Util/include/Poco/Util/Util.h | 80 + Util/include/Poco/Util/Validator.h | 79 + .../Poco/Util/WinRegistryConfiguration.h | 92 + Util/include/Poco/Util/WinRegistryKey.h | 187 + Util/include/Poco/Util/WinService.h | 163 + Util/include/Poco/Util/XMLConfiguration.h | 217 + Util/samples/Makefile | 14 + Util/samples/SampleApp/Makefile | 17 + Util/samples/SampleApp/SampleApp.progen | 12 + Util/samples/SampleApp/SampleApp.properties | 8 + Util/samples/SampleApp/SampleApp.vmsbuild | 7 + .../SampleApp/SampleApp_CE_vs90.vcproj | 471 + .../samples/SampleApp/SampleApp_vs100.vcxproj | 302 + .../SampleApp/SampleApp_vs100.vcxproj.filters | 21 + Util/samples/SampleApp/SampleApp_vs71.vcproj | 398 + Util/samples/SampleApp/SampleApp_vs80.vcproj | 438 + Util/samples/SampleApp/SampleApp_vs90.vcproj | 438 + .../SampleApp/SampleApp_x64_vs100.vcxproj | 302 + .../SampleApp_x64_vs100.vcxproj.filters | 21 + .../SampleApp/SampleApp_x64_vs90.vcproj | 438 + Util/samples/SampleApp/src/SampleApp.cpp | 204 + Util/samples/SampleServer/Makefile | 17 + Util/samples/SampleServer/SampleServer.progen | 12 + .../SampleServer/SampleServer.properties | 5 + .../SampleServer/SampleServer.vmsbuild | 8 + .../SampleServer/SampleServer_CE_vs90.vcproj | 468 + .../SampleServer/SampleServer_vs100.vcxproj | 299 + .../SampleServer_vs100.vcxproj.filters | 16 + .../SampleServer/SampleServer_vs71.vcproj | 395 + .../SampleServer/SampleServer_vs80.vcproj | 435 + .../SampleServer/SampleServer_vs90.vcproj | 435 + .../SampleServer_x64_vs100.vcxproj | 299 + .../SampleServer_x64_vs100.vcxproj.filters | 16 + .../SampleServer/SampleServer_x64_vs90.vcproj | 435 + .../samples/SampleServer/src/SampleServer.cpp | 144 + Util/samples/pkill/Makefile | 17 + Util/samples/pkill/pkill.progen | 12 + Util/samples/pkill/pkill_CE_vs90.vcproj | 466 + Util/samples/pkill/pkill_vs100.vcxproj | 299 + .../samples/pkill/pkill_vs100.vcxproj.filters | 13 + Util/samples/pkill/pkill_vs71.vcproj | 393 + Util/samples/pkill/pkill_vs80.vcproj | 433 + Util/samples/pkill/pkill_vs90.vcproj | 433 + Util/samples/pkill/pkill_x64_vs100.vcxproj | 299 + .../pkill/pkill_x64_vs100.vcxproj.filters | 13 + Util/samples/pkill/pkill_x64_vs90.vcproj | 433 + Util/samples/pkill/src/pkill.cpp | 125 + Util/samples/samples.progen | 7 + Util/samples/samples_CE_vs90.sln | 77 + Util/samples/samples_vs100.sln | 77 + Util/samples/samples_vs71.sln | 65 + Util/samples/samples_vs80.sln | 77 + Util/samples/samples_vs90.sln | 77 + Util/samples/samples_x64_vs100.sln | 77 + Util/samples/samples_x64_vs90.sln | 77 + Util/src/AbstractConfiguration.cpp | 425 + Util/src/Application.cpp | 516 + Util/src/ConfigurationMapper.cpp | 123 + Util/src/ConfigurationView.cpp | 97 + Util/src/FilesystemConfiguration.cpp | 149 + Util/src/HelpFormatter.cpp | 318 + Util/src/IniFileConfiguration.cpp | 204 + Util/src/IntValidator.cpp | 76 + Util/src/LayeredConfiguration.cpp | 211 + Util/src/LoggingConfigurator.cpp | 225 + Util/src/LoggingSubsystem.cpp | 80 + Util/src/MapConfiguration.cpp | 135 + Util/src/Option.cpp | 314 + Util/src/OptionCallback.cpp | 59 + Util/src/OptionException.cpp | 57 + Util/src/OptionProcessor.cpp | 181 + Util/src/OptionSet.cpp | 144 + Util/src/PropertyFileConfiguration.cpp | 187 + Util/src/RegExpValidator.cpp | 69 + Util/src/ServerApplication.cpp | 825 + Util/src/Subsystem.cpp | 66 + Util/src/SystemConfiguration.cpp | 203 + Util/src/Timer.cpp | 316 + Util/src/TimerTask.cpp | 62 + Util/src/Validator.cpp | 54 + Util/src/WinRegistryConfiguration.cpp | 150 + Util/src/WinRegistryKey.cpp | 601 + Util/src/WinService.cpp | 352 + Util/src/XMLConfiguration.cpp | 486 + Util/testsuite/Makefile | 25 + Util/testsuite/TestSuite.progen | 9 + Util/testsuite/TestSuite.vmsbuild | 25 + Util/testsuite/TestSuite.vxbuild | 34 + Util/testsuite/TestSuite_CE_vs90.vcproj | 821 + Util/testsuite/TestSuite_vs100.vcxproj | 357 + .../testsuite/TestSuite_vs100.vcxproj.filters | 216 + Util/testsuite/TestSuite_vs71.vcproj | 552 + Util/testsuite/TestSuite_vs80.vcproj | 592 + Util/testsuite/TestSuite_vs90.vcproj | 592 + Util/testsuite/TestSuite_x64_vs100.vcxproj | 357 + .../TestSuite_x64_vs100.vcxproj.filters | 216 + Util/testsuite/TestSuite_x64_vs90.vcproj | 592 + .../src/AbstractConfigurationTest.cpp | 444 + .../testsuite/src/AbstractConfigurationTest.h | 106 + .../testsuite/src/ConfigurationMapperTest.cpp | 221 + Util/testsuite/src/ConfigurationMapperTest.h | 64 + Util/testsuite/src/ConfigurationTestSuite.cpp | 63 + Util/testsuite/src/ConfigurationTestSuite.h | 49 + Util/testsuite/src/ConfigurationViewTest.cpp | 150 + Util/testsuite/src/ConfigurationViewTest.h | 61 + Util/testsuite/src/Driver.cpp | 39 + .../src/FilesystemConfigurationTest.cpp | 136 + .../src/FilesystemConfigurationTest.h | 64 + Util/testsuite/src/HelpFormatterTest.cpp | 131 + Util/testsuite/src/HelpFormatterTest.h | 60 + .../src/IniFileConfigurationTest.cpp | 176 + Util/testsuite/src/IniFileConfigurationTest.h | 62 + .../src/LayeredConfigurationTest.cpp | 255 + Util/testsuite/src/LayeredConfigurationTest.h | 65 + .../testsuite/src/LoggingConfiguratorTest.cpp | 331 + Util/testsuite/src/LoggingConfiguratorTest.h | 64 + Util/testsuite/src/MapConfigurationTest.cpp | 91 + Util/testsuite/src/MapConfigurationTest.h | 61 + Util/testsuite/src/OptionProcessorTest.cpp | 399 + Util/testsuite/src/OptionProcessorTest.h | 63 + Util/testsuite/src/OptionSetTest.cpp | 171 + Util/testsuite/src/OptionSetTest.h | 60 + Util/testsuite/src/OptionTest.cpp | 371 + Util/testsuite/src/OptionTest.h | 64 + Util/testsuite/src/OptionsTestSuite.cpp | 52 + Util/testsuite/src/OptionsTestSuite.h | 49 + .../src/PropertyFileConfigurationTest.cpp | 153 + .../src/PropertyFileConfigurationTest.h | 62 + .../testsuite/src/SystemConfigurationTest.cpp | 145 + Util/testsuite/src/SystemConfigurationTest.h | 61 + Util/testsuite/src/TimerTest.cpp | 158 + Util/testsuite/src/TimerTest.h | 67 + Util/testsuite/src/TimerTestSuite.cpp | 44 + Util/testsuite/src/TimerTestSuite.h | 49 + Util/testsuite/src/UtilTestSuite.cpp | 54 + Util/testsuite/src/UtilTestSuite.h | 49 + Util/testsuite/src/ValidatorTest.cpp | 177 + Util/testsuite/src/ValidatorTest.h | 61 + Util/testsuite/src/WinCEDriver.cpp | 52 + Util/testsuite/src/WinConfigurationTest.cpp | 97 + Util/testsuite/src/WinConfigurationTest.h | 60 + Util/testsuite/src/WinDriver.cpp | 50 + Util/testsuite/src/WinRegistryTest.cpp | 125 + Util/testsuite/src/WinRegistryTest.h | 60 + Util/testsuite/src/WindowsTestSuite.cpp | 46 + Util/testsuite/src/WindowsTestSuite.h | 49 + Util/testsuite/src/XMLConfigurationTest.cpp | 316 + Util/testsuite/src/XMLConfigurationTest.h | 64 + VERSION | 1 + XML/Makefile | 39 + XML/XML.progen | 16 + XML/XML.vmsbuild | 76 + XML/XML.vxbuild | 82 + XML/XML_CE_vs90.sln | 60 + XML/XML_CE_vs90.vcproj | 890 + XML/XML_vs100.sln | 60 + XML/XML_vs100.vcxproj | 452 + XML/XML_vs100.vcxproj.filters | 513 + XML/XML_vs71.sln | 50 + XML/XML_vs71.vcproj | 822 + XML/XML_vs80.sln | 60 + XML/XML_vs80.vcproj | 843 + XML/XML_vs90.sln | 60 + XML/XML_vs90.vcproj | 842 + XML/XML_x64_vs100.sln | 60 + XML/XML_x64_vs100.vcxproj | 450 + XML/XML_x64_vs100.vcxproj.filters | 513 + XML/XML_x64_vs90.sln | 60 + XML/XML_x64_vs90.vcproj | 847 + XML/dependencies | 1 + XML/include/Poco/DOM/AbstractContainerNode.h | 98 + XML/include/Poco/DOM/AbstractNode.h | 147 + XML/include/Poco/DOM/Attr.h | 202 + XML/include/Poco/DOM/AttrMap.h | 87 + XML/include/Poco/DOM/AutoPtr.h | 57 + XML/include/Poco/DOM/CDATASection.h | 106 + XML/include/Poco/DOM/CharacterData.h | 145 + XML/include/Poco/DOM/ChildNodesList.h | 77 + XML/include/Poco/DOM/Comment.h | 80 + XML/include/Poco/DOM/DOMBuilder.h | 134 + XML/include/Poco/DOM/DOMException.h | 134 + XML/include/Poco/DOM/DOMImplementation.h | 104 + XML/include/Poco/DOM/DOMObject.h | 125 + XML/include/Poco/DOM/DOMParser.h | 129 + XML/include/Poco/DOM/DOMSerializer.h | 144 + XML/include/Poco/DOM/DOMWriter.h | 149 + XML/include/Poco/DOM/DTDMap.h | 89 + XML/include/Poco/DOM/Document.h | 299 + XML/include/Poco/DOM/DocumentEvent.h | 87 + XML/include/Poco/DOM/DocumentFragment.h | 106 + XML/include/Poco/DOM/DocumentType.h | 147 + XML/include/Poco/DOM/Element.h | 241 + XML/include/Poco/DOM/ElementsByTagNameList.h | 108 + XML/include/Poco/DOM/Entity.h | 148 + XML/include/Poco/DOM/EntityReference.h | 95 + XML/include/Poco/DOM/Event.h | 231 + XML/include/Poco/DOM/EventDispatcher.h | 119 + XML/include/Poco/DOM/EventException.h | 103 + XML/include/Poco/DOM/EventListener.h | 79 + XML/include/Poco/DOM/EventTarget.h | 98 + XML/include/Poco/DOM/MutationEvent.h | 165 + XML/include/Poco/DOM/NamedNodeMap.h | 115 + XML/include/Poco/DOM/Node.h | 307 + XML/include/Poco/DOM/NodeAppender.h | 103 + XML/include/Poco/DOM/NodeFilter.h | 168 + XML/include/Poco/DOM/NodeIterator.h | 189 + XML/include/Poco/DOM/NodeList.h | 83 + XML/include/Poco/DOM/Notation.h | 115 + XML/include/Poco/DOM/ProcessingInstruction.h | 121 + XML/include/Poco/DOM/Text.h | 101 + XML/include/Poco/DOM/TreeWalker.h | 233 + XML/include/Poco/SAX/Attributes.h | 142 + XML/include/Poco/SAX/AttributesImpl.h | 318 + XML/include/Poco/SAX/ContentHandler.h | 262 + XML/include/Poco/SAX/DTDHandler.h | 108 + XML/include/Poco/SAX/DeclHandler.h | 113 + XML/include/Poco/SAX/DefaultHandler.h | 105 + XML/include/Poco/SAX/EntityResolver.h | 108 + XML/include/Poco/SAX/EntityResolverImpl.h | 100 + XML/include/Poco/SAX/ErrorHandler.h | 114 + XML/include/Poco/SAX/InputSource.h | 191 + XML/include/Poco/SAX/LexicalHandler.h | 147 + XML/include/Poco/SAX/Locator.h | 125 + XML/include/Poco/SAX/LocatorImpl.h | 110 + XML/include/Poco/SAX/NamespaceSupport.h | 217 + XML/include/Poco/SAX/SAXException.h | 198 + XML/include/Poco/SAX/SAXParser.h | 125 + XML/include/Poco/SAX/WhitespaceFilter.h | 103 + XML/include/Poco/SAX/XMLFilter.h | 83 + XML/include/Poco/SAX/XMLFilterImpl.h | 154 + XML/include/Poco/SAX/XMLReader.h | 227 + XML/include/Poco/XML/Name.h | 160 + XML/include/Poco/XML/NamePool.h | 96 + XML/include/Poco/XML/NamespaceStrategy.h | 137 + XML/include/Poco/XML/ParserEngine.h | 380 + XML/include/Poco/XML/XML.h | 80 + XML/include/Poco/XML/XMLException.h | 59 + XML/include/Poco/XML/XMLStream.h | 93 + XML/include/Poco/XML/XMLString.h | 109 + XML/include/Poco/XML/XMLWriter.h | 363 + XML/include/Poco/XML/expat.h | 1014 + XML/include/Poco/XML/expat_external.h | 115 + XML/samples/DOMParser/DOMParser.progen | 12 + XML/samples/DOMParser/DOMParser.vmsbuild | 8 + .../DOMParser/DOMParser_CE_vs90.vcproj | 468 + XML/samples/DOMParser/DOMParser_vs100.vcxproj | 299 + .../DOMParser/DOMParser_vs100.vcxproj.filters | 16 + XML/samples/DOMParser/DOMParser_vs71.vcproj | 395 + XML/samples/DOMParser/DOMParser_vs80.vcproj | 435 + XML/samples/DOMParser/DOMParser_vs90.vcproj | 435 + .../DOMParser/DOMParser_x64_vs100.vcxproj | 299 + .../DOMParser_x64_vs100.vcxproj.filters | 16 + .../DOMParser/DOMParser_x64_vs90.vcproj | 435 + XML/samples/DOMParser/Makefile | 17 + XML/samples/DOMParser/src/DOMParser.cpp | 81 + XML/samples/DOMWriter/DOMWriter.progen | 12 + XML/samples/DOMWriter/DOMWriter.vmsbuild | 8 + .../DOMWriter/DOMWriter_CE_vs90.vcproj | 468 + XML/samples/DOMWriter/DOMWriter_vs100.vcxproj | 299 + .../DOMWriter/DOMWriter_vs100.vcxproj.filters | 16 + XML/samples/DOMWriter/DOMWriter_vs71.vcproj | 395 + XML/samples/DOMWriter/DOMWriter_vs80.vcproj | 435 + XML/samples/DOMWriter/DOMWriter_vs90.vcproj | 435 + .../DOMWriter/DOMWriter_x64_vs100.vcxproj | 299 + .../DOMWriter_x64_vs100.vcxproj.filters | 16 + .../DOMWriter/DOMWriter_x64_vs90.vcproj | 435 + XML/samples/DOMWriter/Makefile | 17 + XML/samples/DOMWriter/src/DOMWriter.cpp | 78 + XML/samples/Makefile | 15 + XML/samples/PrettyPrint/Makefile | 17 + XML/samples/PrettyPrint/PrettyPrint.progen | 12 + XML/samples/PrettyPrint/PrettyPrint.vmsbuild | 8 + .../PrettyPrint/PrettyPrint_CE_vs90.vcproj | 468 + .../PrettyPrint/PrettyPrint_vs100.vcxproj | 299 + .../PrettyPrint_vs100.vcxproj.filters | 16 + .../PrettyPrint/PrettyPrint_vs71.vcproj | 395 + .../PrettyPrint/PrettyPrint_vs80.vcproj | 435 + .../PrettyPrint/PrettyPrint_vs90.vcproj | 435 + .../PrettyPrint/PrettyPrint_x64_vs100.vcxproj | 299 + .../PrettyPrint_x64_vs100.vcxproj.filters | 16 + .../PrettyPrint/PrettyPrint_x64_vs90.vcproj | 435 + XML/samples/PrettyPrint/src/PrettyPrint.cpp | 78 + XML/samples/SAXParser/Makefile | 17 + XML/samples/SAXParser/SAXParser.progen | 12 + XML/samples/SAXParser/SAXParser.vmsbuild | 8 + .../SAXParser/SAXParser_CE_vs90.vcproj | 468 + XML/samples/SAXParser/SAXParser_vs100.vcxproj | 299 + .../SAXParser/SAXParser_vs100.vcxproj.filters | 16 + XML/samples/SAXParser/SAXParser_vs71.vcproj | 395 + XML/samples/SAXParser/SAXParser_vs80.vcproj | 435 + XML/samples/SAXParser/SAXParser_vs90.vcproj | 435 + .../SAXParser/SAXParser_x64_vs100.vcxproj | 299 + .../SAXParser_x64_vs100.vcxproj.filters | 16 + .../SAXParser/SAXParser_x64_vs90.vcproj | 435 + XML/samples/SAXParser/src/SAXParser.cpp | 215 + XML/samples/data/sample.xml | 22 + XML/samples/samples.progen | 8 + XML/samples/samples_CE_vs90.sln | 97 + XML/samples/samples_vs100.sln | 97 + XML/samples/samples_vs71.sln | 81 + XML/samples/samples_vs80.sln | 97 + XML/samples/samples_vs90.sln | 97 + XML/samples/samples_x64_vs100.sln | 97 + XML/samples/samples_x64_vs90.sln | 97 + XML/src/AbstractContainerNode.cpp | 571 + XML/src/AbstractNode.cpp | 389 + XML/src/Attr.cpp | 155 + XML/src/AttrMap.cpp | 145 + XML/src/Attributes.cpp | 49 + XML/src/AttributesImpl.cpp | 302 + XML/src/CDATASection.cpp | 96 + XML/src/CharacterData.cpp | 141 + XML/src/ChildNodesList.cpp | 92 + XML/src/Comment.cpp | 82 + XML/src/ContentHandler.cpp | 49 + XML/src/DOMBuilder.cpp | 334 + XML/src/DOMException.cpp | 129 + XML/src/DOMImplementation.cpp | 108 + XML/src/DOMObject.cpp | 54 + XML/src/DOMParser.cpp | 170 + XML/src/DOMSerializer.cpp | 345 + XML/src/DOMWriter.cpp | 124 + XML/src/DTDHandler.cpp | 49 + XML/src/DTDMap.cpp | 139 + XML/src/DeclHandler.cpp | 49 + XML/src/DefaultHandler.cpp | 145 + XML/src/Document.cpp | 325 + XML/src/DocumentEvent.cpp | 49 + XML/src/DocumentFragment.cpp | 92 + XML/src/DocumentType.cpp | 106 + XML/src/Element.cpp | 466 + XML/src/ElementsByTagNameList.cpp | 173 + XML/src/Entity.cpp | 90 + XML/src/EntityReference.cpp | 81 + XML/src/EntityResolver.cpp | 49 + XML/src/EntityResolverImpl.cpp | 100 + XML/src/ErrorHandler.cpp | 49 + XML/src/Event.cpp | 124 + XML/src/EventDispatcher.cpp | 168 + XML/src/EventException.cpp | 87 + XML/src/EventListener.cpp | 49 + XML/src/EventTarget.cpp | 49 + XML/src/InputSource.cpp | 102 + XML/src/LexicalHandler.cpp | 49 + XML/src/Locator.cpp | 49 + XML/src/LocatorImpl.cpp | 126 + XML/src/MutationEvent.cpp | 98 + XML/src/Name.cpp | 192 + XML/src/NamePool.cpp | 148 + XML/src/NamedNodeMap.cpp | 49 + XML/src/NamespaceStrategy.cpp | 217 + XML/src/NamespaceSupport.cpp | 209 + XML/src/Node.cpp | 49 + XML/src/NodeAppender.cpp | 104 + XML/src/NodeFilter.cpp | 49 + XML/src/NodeIterator.cpp | 198 + XML/src/NodeList.cpp | 49 + XML/src/Notation.cpp | 85 + XML/src/ParserEngine.cpp | 900 + XML/src/ProcessingInstruction.cpp | 101 + XML/src/SAXException.cpp | 160 + XML/src/SAXParser.cpp | 260 + XML/src/Text.cpp | 102 + XML/src/TreeWalker.cpp | 249 + XML/src/WhitespaceFilter.cpp | 234 + XML/src/XMLException.cpp | 51 + XML/src/XMLFilter.cpp | 49 + XML/src/XMLFilterImpl.cpp | 335 + XML/src/XMLReader.cpp | 59 + XML/src/XMLString.cpp | 86 + XML/src/XMLWriter.cpp | 893 + XML/src/ascii.h | 92 + XML/src/asciitab.h | 36 + XML/src/expat_config.h | 61 + XML/src/iasciitab.h | 37 + XML/src/internal.h | 73 + XML/src/latin1tab.h | 36 + XML/src/nametab.h | 150 + XML/src/utf8tab.h | 37 + XML/src/xmlparse.cpp | 6291 + XML/src/xmlrole.c | 1336 + XML/src/xmlrole.h | 114 + XML/src/xmltok.c | 1651 + XML/src/xmltok.h | 316 + XML/src/xmltok_impl.c | 1783 + XML/src/xmltok_impl.h | 46 + XML/src/xmltok_ns.c | 115 + XML/testsuite/Makefile | 21 + XML/testsuite/TestSuite.progen | 9 + XML/testsuite/TestSuite.vmsbuild | 26 + XML/testsuite/TestSuite.vxbuild | 32 + XML/testsuite/TestSuite_CE_vs90.vcproj | 585 + XML/testsuite/TestSuite_vs100.vcxproj | 349 + XML/testsuite/TestSuite_vs100.vcxproj.filters | 174 + XML/testsuite/TestSuite_vs71.vcproj | 520 + XML/testsuite/TestSuite_vs80.vcproj | 560 + XML/testsuite/TestSuite_vs90.vcproj | 560 + XML/testsuite/TestSuite_x64_vs100.vcxproj | 349 + .../TestSuite_x64_vs100.vcxproj.filters | 174 + XML/testsuite/TestSuite_x64_vs90.vcproj | 560 + XML/testsuite/rss.xml | 478 + XML/testsuite/src/AttributesImplTest.cpp | 266 + XML/testsuite/src/AttributesImplTest.h | 63 + XML/testsuite/src/ChildNodesTest.cpp | 124 + XML/testsuite/src/ChildNodesTest.h | 60 + XML/testsuite/src/DOMTestSuite.cpp | 64 + XML/testsuite/src/DOMTestSuite.h | 49 + XML/testsuite/src/DocumentTest.cpp | 310 + XML/testsuite/src/DocumentTest.h | 66 + XML/testsuite/src/DocumentTypeTest.cpp | 130 + XML/testsuite/src/DocumentTypeTest.h | 60 + XML/testsuite/src/Driver.cpp | 39 + XML/testsuite/src/ElementTest.cpp | 934 + XML/testsuite/src/ElementTest.h | 70 + XML/testsuite/src/EventTest.cpp | 593 + XML/testsuite/src/EventTest.h | 68 + XML/testsuite/src/NamePoolTest.cpp | 94 + XML/testsuite/src/NamePoolTest.h | 60 + XML/testsuite/src/NameTest.cpp | 193 + XML/testsuite/src/NameTest.h | 65 + XML/testsuite/src/NamespaceSupportTest.cpp | 212 + XML/testsuite/src/NamespaceSupportTest.h | 60 + XML/testsuite/src/NodeAppenderTest.cpp | 162 + XML/testsuite/src/NodeAppenderTest.h | 61 + XML/testsuite/src/NodeIteratorTest.cpp | 210 + XML/testsuite/src/NodeIteratorTest.h | 63 + XML/testsuite/src/NodeTest.cpp | 1126 + XML/testsuite/src/NodeTest.h | 72 + XML/testsuite/src/ParserWriterTest.cpp | 191 + XML/testsuite/src/ParserWriterTest.h | 65 + XML/testsuite/src/SAXParserTest.cpp | 1193 + XML/testsuite/src/SAXParserTest.h | 104 + XML/testsuite/src/SAXTestSuite.cpp | 48 + XML/testsuite/src/SAXTestSuite.h | 49 + XML/testsuite/src/TextTest.cpp | 189 + XML/testsuite/src/TextTest.h | 67 + XML/testsuite/src/TreeWalkerTest.cpp | 329 + XML/testsuite/src/TreeWalkerTest.h | 63 + XML/testsuite/src/WinCEDriver.cpp | 52 + XML/testsuite/src/WinDriver.cpp | 50 + XML/testsuite/src/XMLTestSuite.cpp | 52 + XML/testsuite/src/XMLTestSuite.h | 49 + XML/testsuite/src/XMLWriterTest.cpp | 652 + XML/testsuite/src/XMLWriterTest.h | 93 + Zip/Makefile | 20 + Zip/Zip.progen | 20 + Zip/Zip.vmsbuild | 16 + Zip/Zip.vxbuild | 31 + Zip/Zip_CE_vs90.sln | 60 + Zip/Zip_CE_vs90.vcproj | 578 + Zip/Zip_VS71.sln | 50 + Zip/Zip_VS71.vcproj | 510 + Zip/Zip_VS80.sln | 60 + Zip/Zip_VS80.vcproj | 531 + Zip/Zip_vs100.sln | 60 + Zip/Zip_vs100.vcxproj | 328 + Zip/Zip_vs100.vcxproj.filters | 165 + Zip/Zip_vs90.sln | 60 + Zip/Zip_vs90.vcproj | 530 + Zip/Zip_x64_vs100.sln | 60 + Zip/Zip_x64_vs100.vcxproj | 326 + Zip/Zip_x64_vs100.vcxproj.filters | 165 + Zip/Zip_x64_vs90.sln | 60 + Zip/Zip_x64_vs90.vcproj | 535 + Zip/dependencies | 4 + Zip/doc/ZIP Spec.txt | 1636 + Zip/doc/ZipUserGuide.page | 161 + Zip/include/Poco/Zip/Add.h | 73 + Zip/include/Poco/Zip/AutoDetectStream.h | 152 + Zip/include/Poco/Zip/Compress.h | 136 + Zip/include/Poco/Zip/Decompress.h | 112 + Zip/include/Poco/Zip/Delete.h | 70 + Zip/include/Poco/Zip/Keep.h | 71 + Zip/include/Poco/Zip/ParseCallback.h | 76 + Zip/include/Poco/Zip/PartialStream.h | 209 + Zip/include/Poco/Zip/Rename.h | 71 + Zip/include/Poco/Zip/Replace.h | 72 + Zip/include/Poco/Zip/SkipCallback.h | 68 + Zip/include/Poco/Zip/Zip.h | 80 + Zip/include/Poco/Zip/ZipArchive.h | 138 + Zip/include/Poco/Zip/ZipArchiveInfo.h | 213 + Zip/include/Poco/Zip/ZipCommon.h | 119 + Zip/include/Poco/Zip/ZipDataInfo.h | 160 + Zip/include/Poco/Zip/ZipException.h | 58 + Zip/include/Poco/Zip/ZipFileInfo.h | 484 + Zip/include/Poco/Zip/ZipLocalFileHeader.h | 486 + Zip/include/Poco/Zip/ZipManipulator.h | 131 + Zip/include/Poco/Zip/ZipOperation.h | 78 + Zip/include/Poco/Zip/ZipStream.h | 171 + Zip/include/Poco/Zip/ZipUtil.h | 120 + Zip/samples/Makefile | 13 + Zip/samples/samples.progen | 6 + Zip/samples/samples_CE_vs90.sln | 57 + Zip/samples/samples_vs100.sln | 57 + Zip/samples/samples_vs71.sln | 49 + Zip/samples/samples_vs80.sln | 57 + Zip/samples/samples_vs90.sln | 57 + Zip/samples/samples_x64_vs100.sln | 57 + Zip/samples/samples_x64_vs90.sln | 57 + Zip/samples/unzip/Makefile | 17 + Zip/samples/unzip/src/unzip.cpp | 182 + Zip/samples/unzip/unzip.progen | 12 + Zip/samples/unzip/unzip_CE_vs90.vcproj | 468 + Zip/samples/unzip/unzip_vs100.vcxproj | 299 + Zip/samples/unzip/unzip_vs100.vcxproj.filters | 16 + Zip/samples/unzip/unzip_vs71.vcproj | 395 + Zip/samples/unzip/unzip_vs80.vcproj | 435 + Zip/samples/unzip/unzip_vs90.vcproj | 435 + Zip/samples/unzip/unzip_x64_vs100.vcxproj | 299 + .../unzip/unzip_x64_vs100.vcxproj.filters | 16 + Zip/samples/unzip/unzip_x64_vs90.vcproj | 435 + Zip/samples/zip/Makefile | 17 + Zip/samples/zip/src/zip.cpp | 183 + Zip/samples/zip/zip.progen | 12 + Zip/samples/zip/zip_CE_vs90.vcproj | 466 + Zip/samples/zip/zip_vs100.vcxproj | 299 + Zip/samples/zip/zip_vs100.vcxproj.filters | 13 + Zip/samples/zip/zip_vs71.vcproj | 393 + Zip/samples/zip/zip_vs80.vcproj | 433 + Zip/samples/zip/zip_vs90.vcproj | 433 + Zip/samples/zip/zip_x64_vs100.vcxproj | 299 + Zip/samples/zip/zip_x64_vs100.vcxproj.filters | 13 + Zip/samples/zip/zip_x64_vs90.vcproj | 433 + Zip/src/Add.cpp | 60 + Zip/src/AutoDetectStream.cpp | 252 + Zip/src/Compress.cpp | 317 + Zip/src/Decompress.cpp | 187 + Zip/src/Delete.cpp | 56 + Zip/src/Keep.cpp | 59 + Zip/src/ParseCallback.cpp | 54 + Zip/src/PartialStream.cpp | 269 + Zip/src/Rename.cpp | 58 + Zip/src/Replace.cpp | 59 + Zip/src/SkipCallback.cpp | 66 + Zip/src/ZipArchive.cpp | 129 + Zip/src/ZipArchiveInfo.cpp | 121 + Zip/src/ZipCommon.cpp | 47 + Zip/src/ZipDataInfo.cpp | 79 + Zip/src/ZipException.cpp | 49 + Zip/src/ZipFileInfo.cpp | 159 + Zip/src/ZipLocalFileHeader.cpp | 238 + Zip/src/ZipManipulator.cpp | 193 + Zip/src/ZipOperation.cpp | 54 + Zip/src/ZipStream.cpp | 322 + Zip/src/ZipUtil.cpp | 212 + Zip/testsuite/Makefile | 18 + Zip/testsuite/TestSuite.progen | 9 + Zip/testsuite/TestSuite.vmsbuild | 9 + Zip/testsuite/TestSuite.vxbuild | 16 + Zip/testsuite/TestSuite_CE_vs90.vcproj | 503 + Zip/testsuite/TestSuite_VS71.vcproj | 438 + Zip/testsuite/TestSuite_VS80.vcproj | 478 + Zip/testsuite/TestSuite_vs100.vcxproj | 317 + Zip/testsuite/TestSuite_vs100.vcxproj.filters | 60 + Zip/testsuite/TestSuite_vs90.vcproj | 478 + Zip/testsuite/TestSuite_x64_vs100.vcxproj | 317 + .../TestSuite_x64_vs100.vcxproj.filters | 60 + Zip/testsuite/TestSuite_x64_vs90.vcproj | 478 + Zip/testsuite/appinf.zip | Bin 0 -> 7020 bytes Zip/testsuite/appinf.zip.bak | Bin 0 -> 1712 bytes Zip/testsuite/comment.zip | Bin 0 -> 1728 bytes Zip/testsuite/data/data.zip | Bin 0 -> 5838 bytes Zip/testsuite/data/doc.zip | Bin 0 -> 7030 bytes Zip/testsuite/data/test.zip | Bin 0 -> 5838 bytes Zip/testsuite/pocobin.zip | Bin 0 -> 828 bytes Zip/testsuite/some/recursive/dir/test.file | 1 + Zip/testsuite/src/CompressTest.cpp | 179 + Zip/testsuite/src/CompressTest.h | 65 + Zip/testsuite/src/Driver.cpp | 39 + Zip/testsuite/src/PartialStreamTest.cpp | 139 + Zip/testsuite/src/PartialStreamTest.h | 63 + Zip/testsuite/src/WinCEDriver.cpp | 52 + Zip/testsuite/src/WinDriver.cpp | 50 + Zip/testsuite/src/ZipTest.cpp | 215 + Zip/testsuite/src/ZipTest.h | 72 + Zip/testsuite/src/ZipTestSuite.cpp | 48 + Zip/testsuite/src/ZipTestSuite.h | 49 + Zip/testsuite/test.dat | 49 + Zip/testsuite/testdir/testdir2/testfile3.txt | 49 + Zip/testsuite/testdir/testfile.txt | 49 + Zip/testsuite/testdir/testfile2.txt | 49 + Zip/testsuite/testfile.txt | 49 + Zip/testsuite/testfile2.txt | 49 + Zip/testsuite/testfile3.txt | 49 + build/config/AIX | 74 + build/config/ARM-Linux | 77 + build/config/Android | 91 + build/config/Angstrom | 73 + build/config/CEGCCARM | 77 + build/config/CYGWIN | 72 + build/config/CygLinux | 74 + build/config/Darwin | 77 + build/config/Darwin-clang | 77 + build/config/Darwin32 | 14 + build/config/Darwin32-clang | 14 + build/config/Darwin64 | 14 + build/config/Darwin64-clang | 14 + build/config/DigiEL | 73 + build/config/ELDK | 74 + build/config/FreeBSD | 71 + build/config/GCCEMBEDLINUX | 74 + build/config/HP-UX | 70 + build/config/Linux | 71 + build/config/MinGW | 74 + build/config/MinGW-CrossEnv | 76 + build/config/NIOS2-Linux | 74 + build/config/OSF1 | 71 + build/config/PPC-Linux | 73 + build/config/QNX | 90 + build/config/SH-Linux | 73 + build/config/SSV-LINUX | 74 + build/config/SunOS | 9 + build/config/SunOS-GCC | 71 + build/config/SunOS-SunForte | 70 + build/config/SunOS-SunStudio | 70 + build/config/SunOS-SunStudio11 | 69 + build/config/SunOS-stdcxx-x86_64 | 70 + build/config/iPhone | 97 + build/config/iPhoneSimulator | 13 + build/rules/compile | 81 + build/rules/dylib | 77 + build/rules/exec | 67 + build/rules/global | 265 + build/rules/lib | 82 + build/rules/sample | 100 + build/script/makedepend.SunCC | 24 + build/script/makedepend.aCC | 27 + build/script/makedepend.clang | 31 + build/script/makedepend.cxx | 24 + build/script/makedepend.gcc | 24 + build/script/makedepend.qcc | 23 + build/script/makedepend.xlC | 31 + build/script/makeldpath | 27 + build/script/projname | 19 + build/script/shlibln | 28 + build/script/vxprogen | 173 + build/vms/build.com | 168 + build/vms/pococc.com | 40 + build/vms/pococxx.com | 42 + build/vms/pocolib.com | 37 + build/vms/pocolnk.com | 87 + build/vxconfig/PPC440diab_debug | 65 + build/vxconfig/PPC440diab_release | 65 + build_CE_vs90.cmd | 2 + build_vcexpress2008.cmd | 2 + build_vcexpress2010.cmd | 2 + build_vs100.cmd | 2 + build_vs71.cmd | 2 + build_vs80.cmd | 2 + build_vs90.cmd | 2 + buildvms.com | 32 + buildwin.cmd | 320 + components | 20 + configure | 299 + contrib/cmake/CMakeLists.txt | 121 + contrib/cmake/PocoConfig.cmake | 143 + contrib/cmake/README | 36 + contrib/poco-doc.pl | 47 + doc/00100-GuidedTour.page | 443 + doc/00200-GettingStarted.page | 301 + doc/80100-HowToGetHelp.page | 21 + doc/90100-Acknowledgements.page | 191 + doc/99100-ReleaseNotes.page | 1005 + doc/99150-GMakeBuildNotes.page | 799 + doc/99150-WindowsPlatformNotes.page | 50 + doc/99200-WinCEPlatformNotes.page | 132 + doc/99250-VxWorksPlatformNotes.page | 233 + doc/99300-AndroidPlatformNotes.page | 276 + doc/Acknowledgements.html | 222 + libversion | 1 + patches/AIX/xlC8.diff | 439 + release/script/cpproj | 184 + release/script/mkrelease | 378 + 3760 files changed, 1058456 insertions(+) create mode 100644 ApacheConnector/ApacheConnector.progen create mode 100644 ApacheConnector/ApacheConnector_VS71.sln create mode 100644 ApacheConnector/ApacheConnector_VS71.vcproj create mode 100644 ApacheConnector/ApacheConnector_VS80.sln create mode 100644 ApacheConnector/ApacheConnector_VS80.vcproj create mode 100644 ApacheConnector/ApacheConnector_vs100.sln create mode 100644 ApacheConnector/ApacheConnector_vs100.vcxproj create mode 100644 ApacheConnector/ApacheConnector_vs100.vcxproj.filters create mode 100644 ApacheConnector/ApacheConnector_vs90.sln create mode 100644 ApacheConnector/ApacheConnector_vs90.vcproj create mode 100644 ApacheConnector/ApacheConnector_x64_vs100.sln create mode 100644 ApacheConnector/ApacheConnector_x64_vs100.vcxproj create mode 100644 ApacheConnector/ApacheConnector_x64_vs100.vcxproj.filters create mode 100644 ApacheConnector/ApacheConnector_x64_vs90.sln create mode 100644 ApacheConnector/ApacheConnector_x64_vs90.vcproj create mode 100644 ApacheConnector/Makefile create mode 100644 ApacheConnector/dependencies create mode 100644 ApacheConnector/doc/ApacheConnectorUserGuide.page create mode 100644 ApacheConnector/include/ApacheApplication.h create mode 100644 ApacheConnector/include/ApacheChannel.h create mode 100644 ApacheConnector/include/ApacheConnector.h create mode 100644 ApacheConnector/include/ApacheRequestHandlerFactory.h create mode 100644 ApacheConnector/include/ApacheServerRequest.h create mode 100644 ApacheConnector/include/ApacheServerResponse.h create mode 100644 ApacheConnector/include/ApacheStream.h create mode 100644 ApacheConnector/samples/FormServer/FormServer.progen create mode 100644 ApacheConnector/samples/FormServer/FormServer_vs100.vcxproj create mode 100644 ApacheConnector/samples/FormServer/FormServer_vs100.vcxproj.filters create mode 100644 ApacheConnector/samples/FormServer/FormServer_vs71.vcproj create mode 100644 ApacheConnector/samples/FormServer/FormServer_vs80.vcproj create mode 100644 ApacheConnector/samples/FormServer/FormServer_vs90.vcproj create mode 100644 ApacheConnector/samples/FormServer/FormServer_x64_vs100.vcxproj create mode 100644 ApacheConnector/samples/FormServer/FormServer_x64_vs100.vcxproj.filters create mode 100644 ApacheConnector/samples/FormServer/FormServer_x64_vs90.vcproj create mode 100644 ApacheConnector/samples/FormServer/Makefile create mode 100644 ApacheConnector/samples/FormServer/src/FormServer.cpp create mode 100644 ApacheConnector/samples/Makefile create mode 100644 ApacheConnector/samples/TimeServer/Makefile create mode 100644 ApacheConnector/samples/TimeServer/TimeServer.progen create mode 100644 ApacheConnector/samples/TimeServer/TimeServer_vs100.vcxproj create mode 100644 ApacheConnector/samples/TimeServer/TimeServer_vs100.vcxproj.filters create mode 100644 ApacheConnector/samples/TimeServer/TimeServer_vs71.vcproj create mode 100644 ApacheConnector/samples/TimeServer/TimeServer_vs80.vcproj create mode 100644 ApacheConnector/samples/TimeServer/TimeServer_vs90.vcproj create mode 100644 ApacheConnector/samples/TimeServer/TimeServer_x64_vs100.vcxproj create mode 100644 ApacheConnector/samples/TimeServer/TimeServer_x64_vs100.vcxproj.filters create mode 100644 ApacheConnector/samples/TimeServer/TimeServer_x64_vs90.vcproj create mode 100644 ApacheConnector/samples/TimeServer/src/TimeServer.cpp create mode 100644 ApacheConnector/samples/dependencies create mode 100644 ApacheConnector/samples/samples.progen create mode 100644 ApacheConnector/samples/samples_vs100.sln create mode 100644 ApacheConnector/samples/samples_vs71.sln create mode 100644 ApacheConnector/samples/samples_vs80.sln create mode 100644 ApacheConnector/samples/samples_vs90.sln create mode 100644 ApacheConnector/samples/samples_x64_vs100.sln create mode 100644 ApacheConnector/samples/samples_x64_vs90.sln create mode 100644 ApacheConnector/src/ApacheApplication.cpp create mode 100644 ApacheConnector/src/ApacheChannel.cpp create mode 100644 ApacheConnector/src/ApacheConnector.cpp create mode 100644 ApacheConnector/src/ApacheRequestHandlerFactory.cpp create mode 100644 ApacheConnector/src/ApacheServerRequest.cpp create mode 100644 ApacheConnector/src/ApacheServerResponse.cpp create mode 100644 ApacheConnector/src/ApacheStream.cpp create mode 100644 CHANGELOG create mode 100644 CONTRIBUTORS create mode 100644 CppParser/CppParser.progen create mode 100644 CppParser/CppParser_vs100.sln create mode 100644 CppParser/CppParser_vs100.vcxproj create mode 100644 CppParser/CppParser_vs100.vcxproj.filters create mode 100644 CppParser/CppParser_vs71.sln create mode 100644 CppParser/CppParser_vs71.vcproj create mode 100644 CppParser/CppParser_vs80.sln create mode 100644 CppParser/CppParser_vs80.vcproj create mode 100644 CppParser/CppParser_vs90.sln create mode 100644 CppParser/CppParser_vs90.vcproj create mode 100644 CppParser/CppParser_x64_vs100.sln create mode 100644 CppParser/CppParser_x64_vs100.vcxproj create mode 100644 CppParser/CppParser_x64_vs100.vcxproj.filters create mode 100644 CppParser/CppParser_x64_vs90.sln create mode 100644 CppParser/CppParser_x64_vs90.vcproj create mode 100644 CppParser/Makefile create mode 100644 CppParser/dependencies create mode 100644 CppParser/include/Poco/CppParser/Attributes.h create mode 100644 CppParser/include/Poco/CppParser/AttributesParser.h create mode 100644 CppParser/include/Poco/CppParser/CppParser.h create mode 100644 CppParser/include/Poco/CppParser/CppToken.h create mode 100644 CppParser/include/Poco/CppParser/Decl.h create mode 100644 CppParser/include/Poco/CppParser/Enum.h create mode 100644 CppParser/include/Poco/CppParser/EnumValue.h create mode 100644 CppParser/include/Poco/CppParser/Function.h create mode 100644 CppParser/include/Poco/CppParser/NameSpace.h create mode 100644 CppParser/include/Poco/CppParser/Parameter.h create mode 100644 CppParser/include/Poco/CppParser/Parser.h create mode 100644 CppParser/include/Poco/CppParser/Struct.h create mode 100644 CppParser/include/Poco/CppParser/Symbol.h create mode 100644 CppParser/include/Poco/CppParser/Tokenizer.h create mode 100644 CppParser/include/Poco/CppParser/TypeDef.h create mode 100644 CppParser/include/Poco/CppParser/Utility.h create mode 100644 CppParser/include/Poco/CppParser/Variable.h create mode 100644 CppParser/src/Attributes.cpp create mode 100644 CppParser/src/AttributesParser.cpp create mode 100644 CppParser/src/CppToken.cpp create mode 100644 CppParser/src/Decl.cpp create mode 100644 CppParser/src/Enum.cpp create mode 100644 CppParser/src/EnumValue.cpp create mode 100644 CppParser/src/Function.cpp create mode 100644 CppParser/src/NameSpace.cpp create mode 100644 CppParser/src/Parameter.cpp create mode 100644 CppParser/src/Parser.cpp create mode 100644 CppParser/src/Struct.cpp create mode 100644 CppParser/src/Symbol.cpp create mode 100644 CppParser/src/Tokenizer.cpp create mode 100644 CppParser/src/TypeDef.cpp create mode 100644 CppParser/src/Utility.cpp create mode 100644 CppParser/src/Variable.cpp create mode 100644 CppParser/testsuite/Makefile create mode 100644 CppParser/testsuite/TestSuite.progen create mode 100644 CppParser/testsuite/TestSuite.vmsbuild create mode 100644 CppParser/testsuite/TestSuite_CE_vs90.vcproj create mode 100644 CppParser/testsuite/TestSuite_vs100.vcxproj create mode 100644 CppParser/testsuite/TestSuite_vs100.vcxproj.filters create mode 100644 CppParser/testsuite/TestSuite_vs71.vcproj create mode 100644 CppParser/testsuite/TestSuite_vs80.vcproj create mode 100644 CppParser/testsuite/TestSuite_vs90.vcproj create mode 100644 CppParser/testsuite/TestSuite_x64_vs100.vcxproj create mode 100644 CppParser/testsuite/TestSuite_x64_vs100.vcxproj.filters create mode 100644 CppParser/testsuite/TestSuite_x64_vs90.vcproj create mode 100644 CppParser/testsuite/src/AttributesParserTest.cpp create mode 100644 CppParser/testsuite/src/AttributesParserTest.h create mode 100644 CppParser/testsuite/src/AttributesTestSuite.cpp create mode 100644 CppParser/testsuite/src/AttributesTestSuite.h create mode 100644 CppParser/testsuite/src/CppParserTest.cpp create mode 100644 CppParser/testsuite/src/CppParserTest.h create mode 100644 CppParser/testsuite/src/CppParserTestSuite.cpp create mode 100644 CppParser/testsuite/src/CppParserTestSuite.h create mode 100644 CppParser/testsuite/src/Driver.cpp create mode 100644 CppParser/testsuite/src/WinDriver.cpp create mode 100644 CppUnit/CppUnit.vxbuild create mode 100644 CppUnit/CppUnit_CE_vs90.sln create mode 100644 CppUnit/CppUnit_CE_vs90.vcproj create mode 100644 CppUnit/CppUnit_vs100.sln create mode 100644 CppUnit/CppUnit_vs100.vcxproj create mode 100644 CppUnit/CppUnit_vs100.vcxproj.filters create mode 100644 CppUnit/CppUnit_vs71.sln create mode 100644 CppUnit/CppUnit_vs71.vcproj create mode 100644 CppUnit/CppUnit_vs80.sln create mode 100644 CppUnit/CppUnit_vs80.vcproj create mode 100644 CppUnit/CppUnit_vs90.sln create mode 100644 CppUnit/CppUnit_vs90.vcproj create mode 100644 CppUnit/CppUnit_x64_vs100.sln create mode 100644 CppUnit/CppUnit_x64_vs100.vcxproj create mode 100644 CppUnit/CppUnit_x64_vs100.vcxproj.filters create mode 100644 CppUnit/CppUnit_x64_vs90.sln create mode 100644 CppUnit/CppUnit_x64_vs90.vcproj create mode 100644 CppUnit/Makefile create mode 100644 CppUnit/WinTestRunner/WinTestRunner_vs100.vcxproj create mode 100644 CppUnit/WinTestRunner/WinTestRunner_vs100.vcxproj.filters create mode 100644 CppUnit/WinTestRunner/WinTestRunner_vs71.vcproj create mode 100644 CppUnit/WinTestRunner/WinTestRunner_vs80.vcproj create mode 100644 CppUnit/WinTestRunner/WinTestRunner_vs90.vcproj create mode 100644 CppUnit/WinTestRunner/WinTestRunner_x64_vs100.vcxproj create mode 100644 CppUnit/WinTestRunner/WinTestRunner_x64_vs100.vcxproj.filters create mode 100644 CppUnit/WinTestRunner/WinTestRunner_x64_vs90.vcproj create mode 100644 CppUnit/WinTestRunner/include/WinTestRunner/WinTestRunner.h create mode 100644 CppUnit/WinTestRunner/res/Resource.h create mode 100644 CppUnit/WinTestRunner/res/TestRunner.rc2 create mode 100644 CppUnit/WinTestRunner/res/WinTestRunner.rc create mode 100644 CppUnit/WinTestRunner/src/ActiveTest.cpp create mode 100644 CppUnit/WinTestRunner/src/ActiveTest.h create mode 100644 CppUnit/WinTestRunner/src/DLLMain.cpp create mode 100644 CppUnit/WinTestRunner/src/GUITestResult.cpp create mode 100644 CppUnit/WinTestRunner/src/GUITestResult.h create mode 100644 CppUnit/WinTestRunner/src/ProgressBar.cpp create mode 100644 CppUnit/WinTestRunner/src/ProgressBar.h create mode 100644 CppUnit/WinTestRunner/src/SynchronizedTestResult.h create mode 100644 CppUnit/WinTestRunner/src/TestResultDecorator.h create mode 100644 CppUnit/WinTestRunner/src/TestRunnerDlg.cpp create mode 100644 CppUnit/WinTestRunner/src/TestRunnerDlg.h create mode 100644 CppUnit/WinTestRunner/src/WinTestRunner.cpp create mode 100644 CppUnit/cppunit.vmsbuild create mode 100644 CppUnit/doc/README.html create mode 100644 CppUnit/doc/cookbook.htm create mode 100644 CppUnit/doc/license.htm create mode 100644 CppUnit/doc/test.gif create mode 100644 CppUnit/include/CppUnit/CppUnit.h create mode 100644 CppUnit/include/CppUnit/CppUnitException.h create mode 100644 CppUnit/include/CppUnit/Guards.h create mode 100644 CppUnit/include/CppUnit/Orthodox.h create mode 100644 CppUnit/include/CppUnit/RepeatedTest.h create mode 100644 CppUnit/include/CppUnit/Test.h create mode 100644 CppUnit/include/CppUnit/TestCaller.h create mode 100644 CppUnit/include/CppUnit/TestCase.h create mode 100644 CppUnit/include/CppUnit/TestDecorator.h create mode 100644 CppUnit/include/CppUnit/TestFailure.h create mode 100644 CppUnit/include/CppUnit/TestResult.h create mode 100644 CppUnit/include/CppUnit/TestRunner.h create mode 100644 CppUnit/include/CppUnit/TestSetup.h create mode 100644 CppUnit/include/CppUnit/TestSuite.h create mode 100644 CppUnit/include/CppUnit/TextTestResult.h create mode 100644 CppUnit/include/CppUnit/estring.h create mode 100644 CppUnit/src/CppUnitException.cpp create mode 100644 CppUnit/src/TestCase.cpp create mode 100644 CppUnit/src/TestDecorator.cpp create mode 100644 CppUnit/src/TestFailure.cpp create mode 100644 CppUnit/src/TestResult.cpp create mode 100644 CppUnit/src/TestRunner.cpp create mode 100644 CppUnit/src/TestSuite.cpp create mode 100644 CppUnit/src/TextTestResult.cpp create mode 100644 Crypto/Crypto.progen create mode 100644 Crypto/Crypto_CE_VS90.sln create mode 100644 Crypto/Crypto_CE_VS90.vcproj create mode 100644 Crypto/Crypto_VS71.sln create mode 100644 Crypto/Crypto_VS71.vcproj create mode 100644 Crypto/Crypto_VS80.sln create mode 100644 Crypto/Crypto_VS80.vcproj create mode 100644 Crypto/Crypto_VS90.sln create mode 100644 Crypto/Crypto_VS90.vcproj create mode 100644 Crypto/Crypto_vs100.sln create mode 100644 Crypto/Crypto_vs100.vcxproj create mode 100644 Crypto/Crypto_vs100.vcxproj.filters create mode 100644 Crypto/Crypto_x64_vs100.sln create mode 100644 Crypto/Crypto_x64_vs100.vcxproj create mode 100644 Crypto/Crypto_x64_vs100.vcxproj.filters create mode 100644 Crypto/Crypto_x64_vs90.sln create mode 100644 Crypto/Crypto_x64_vs90.vcproj create mode 100644 Crypto/Makefile create mode 100644 Crypto/dependencies create mode 100644 Crypto/include/Poco/Crypto/Cipher.h create mode 100644 Crypto/include/Poco/Crypto/CipherFactory.h create mode 100644 Crypto/include/Poco/Crypto/CipherImpl.h create mode 100644 Crypto/include/Poco/Crypto/CipherKey.h create mode 100644 Crypto/include/Poco/Crypto/CipherKeyImpl.h create mode 100644 Crypto/include/Poco/Crypto/Crypto.h create mode 100644 Crypto/include/Poco/Crypto/CryptoStream.h create mode 100644 Crypto/include/Poco/Crypto/CryptoTransform.h create mode 100644 Crypto/include/Poco/Crypto/OpenSSLInitializer.h create mode 100644 Crypto/include/Poco/Crypto/RSACipherImpl.h create mode 100644 Crypto/include/Poco/Crypto/RSADigestEngine.h create mode 100644 Crypto/include/Poco/Crypto/RSAKey.h create mode 100644 Crypto/include/Poco/Crypto/RSAKeyImpl.h create mode 100644 Crypto/include/Poco/Crypto/X509Certificate.h create mode 100644 Crypto/samples/Makefile create mode 100644 Crypto/samples/dependencies create mode 100644 Crypto/samples/genrsakey/Makefile create mode 100644 Crypto/samples/genrsakey/genrsakey.progen create mode 100644 Crypto/samples/genrsakey/genrsakey_CE_VS90.vcproj create mode 100644 Crypto/samples/genrsakey/genrsakey_VS71.vcproj create mode 100644 Crypto/samples/genrsakey/genrsakey_VS80.vcproj create mode 100644 Crypto/samples/genrsakey/genrsakey_VS90.vcproj create mode 100644 Crypto/samples/genrsakey/genrsakey_vs100.vcxproj create mode 100644 Crypto/samples/genrsakey/genrsakey_vs100.vcxproj.filters create mode 100644 Crypto/samples/genrsakey/genrsakey_x64_vs100.vcxproj create mode 100644 Crypto/samples/genrsakey/genrsakey_x64_vs100.vcxproj.filters create mode 100644 Crypto/samples/genrsakey/genrsakey_x64_vs90.vcproj create mode 100644 Crypto/samples/genrsakey/src/genrsakey.cpp create mode 100644 Crypto/samples/samples.progen create mode 100644 Crypto/samples/samples_CE_VS90.sln create mode 100644 Crypto/samples/samples_VS71.sln create mode 100644 Crypto/samples/samples_VS80.sln create mode 100644 Crypto/samples/samples_VS90.sln create mode 100644 Crypto/samples/samples_vs100.sln create mode 100644 Crypto/samples/samples_x64_vs100.sln create mode 100644 Crypto/samples/samples_x64_vs90.sln create mode 100644 Crypto/src/Cipher.cpp create mode 100644 Crypto/src/CipherFactory.cpp create mode 100644 Crypto/src/CipherImpl.cpp create mode 100644 Crypto/src/CipherKey.cpp create mode 100644 Crypto/src/CipherKeyImpl.cpp create mode 100644 Crypto/src/CryptoStream.cpp create mode 100644 Crypto/src/CryptoTransform.cpp create mode 100644 Crypto/src/OpenSSLInitializer.cpp create mode 100644 Crypto/src/RSACipherImpl.cpp create mode 100644 Crypto/src/RSADigestEngine.cpp create mode 100644 Crypto/src/RSAKey.cpp create mode 100644 Crypto/src/RSAKeyImpl.cpp create mode 100644 Crypto/src/X509Certificate.cpp create mode 100644 Crypto/testsuite/Makefile create mode 100644 Crypto/testsuite/TestSuite.progen create mode 100644 Crypto/testsuite/TestSuite.vmsbuild create mode 100644 Crypto/testsuite/TestSuite_CE_VS90.vcproj create mode 100644 Crypto/testsuite/TestSuite_VS71.vcproj create mode 100644 Crypto/testsuite/TestSuite_VS80.vcproj create mode 100644 Crypto/testsuite/TestSuite_VS90.vcproj create mode 100644 Crypto/testsuite/TestSuite_vs100.vcxproj create mode 100644 Crypto/testsuite/TestSuite_vs100.vcxproj.filters create mode 100644 Crypto/testsuite/TestSuite_x64_vs100.vcxproj create mode 100644 Crypto/testsuite/TestSuite_x64_vs100.vcxproj.filters create mode 100644 Crypto/testsuite/TestSuite_x64_vs90.vcproj create mode 100644 Crypto/testsuite/src/CryptoTest.cpp create mode 100644 Crypto/testsuite/src/CryptoTest.h create mode 100644 Crypto/testsuite/src/CryptoTestSuite.cpp create mode 100644 Crypto/testsuite/src/CryptoTestSuite.h create mode 100644 Crypto/testsuite/src/Driver.cpp create mode 100644 Crypto/testsuite/src/RSATest.cpp create mode 100644 Crypto/testsuite/src/RSATest.h create mode 100644 Crypto/testsuite/src/WinCEDriver.cpp create mode 100644 Crypto/testsuite/src/WinDriver.cpp create mode 100644 DLLVersion.rc create mode 100644 Data/CMakeLists.txt create mode 100644 Data/Data.progen create mode 100644 Data/Data_VS71.sln create mode 100644 Data/Data_VS71.vcproj create mode 100644 Data/Data_VS80.sln create mode 100644 Data/Data_VS80.vcproj create mode 100644 Data/Data_VS90.sln create mode 100644 Data/Data_VS90.vcproj create mode 100644 Data/Data_vs100.sln create mode 100644 Data/Data_vs100.vcxproj create mode 100644 Data/Data_vs100.vcxproj.filters create mode 100644 Data/Makefile create mode 100644 Data/MySQL/CMakeLists.txt create mode 100644 Data/MySQL/Makefile create mode 100644 Data/MySQL/MySQL.progen create mode 100644 Data/MySQL/MySQL_VS80.sln create mode 100644 Data/MySQL/MySQL_VS80.vcproj create mode 100644 Data/MySQL/MySQL_VS90.sln create mode 100644 Data/MySQL/MySQL_VS90.vcproj create mode 100644 Data/MySQL/MySQL_vs100.sln create mode 100644 Data/MySQL/MySQL_vs100.vcxproj create mode 100644 Data/MySQL/MySQL_vs100.vcxproj.filters create mode 100644 Data/MySQL/include/Poco/Data/MySQL/Binder.h create mode 100644 Data/MySQL/include/Poco/Data/MySQL/Connector.h create mode 100644 Data/MySQL/include/Poco/Data/MySQL/Extractor.h create mode 100644 Data/MySQL/include/Poco/Data/MySQL/MySQL.h create mode 100644 Data/MySQL/include/Poco/Data/MySQL/MySQLException.h create mode 100644 Data/MySQL/include/Poco/Data/MySQL/MySQLStatementImpl.h create mode 100644 Data/MySQL/include/Poco/Data/MySQL/ResultMetadata.h create mode 100644 Data/MySQL/include/Poco/Data/MySQL/SessionHandle.h create mode 100644 Data/MySQL/include/Poco/Data/MySQL/SessionImpl.h create mode 100644 Data/MySQL/include/Poco/Data/MySQL/StatementExecutor.h create mode 100644 Data/MySQL/src/Binder.cpp create mode 100644 Data/MySQL/src/Connector.cpp create mode 100644 Data/MySQL/src/Extractor.cpp create mode 100644 Data/MySQL/src/MySQLException.cpp create mode 100644 Data/MySQL/src/MySQLStatementImpl.cpp create mode 100644 Data/MySQL/src/ResultMetadata.cpp create mode 100644 Data/MySQL/src/SessionHandle.cpp create mode 100644 Data/MySQL/src/SessionImpl.cpp create mode 100644 Data/MySQL/src/StatementExecutor.cpp create mode 100644 Data/MySQL/testsuite/CMakeLists.txt create mode 100644 Data/MySQL/testsuite/Makefile create mode 100644 Data/MySQL/testsuite/TestSuite.progen create mode 100644 Data/MySQL/testsuite/TestSuite_VS80.vcproj create mode 100644 Data/MySQL/testsuite/TestSuite_VS90.vcproj create mode 100644 Data/MySQL/testsuite/TestSuite_vs100.vcxproj create mode 100644 Data/MySQL/testsuite/TestSuite_vs100.vcxproj.filters create mode 100644 Data/MySQL/testsuite/src/Driver.cpp create mode 100644 Data/MySQL/testsuite/src/MySQLTest.cpp create mode 100644 Data/MySQL/testsuite/src/MySQLTest.h create mode 100644 Data/MySQL/testsuite/src/MySQLTestSuite.cpp create mode 100644 Data/MySQL/testsuite/src/MySQLTestSuite.h create mode 100644 Data/MySQL/testsuite/src/SQLExecutor.cpp create mode 100644 Data/MySQL/testsuite/src/SQLExecutor.h create mode 100644 Data/MySQL/testsuite/src/WinDriver.cpp create mode 100644 Data/ODBC/CMakeLists.txt create mode 100644 Data/ODBC/Makefile create mode 100644 Data/ODBC/ODBC.progen create mode 100644 Data/ODBC/ODBC_VS71.sln create mode 100644 Data/ODBC/ODBC_VS71.vcproj create mode 100644 Data/ODBC/ODBC_VS80.sln create mode 100644 Data/ODBC/ODBC_VS80.vcproj create mode 100644 Data/ODBC/ODBC_VS90.sln create mode 100644 Data/ODBC/ODBC_VS90.vcproj create mode 100644 Data/ODBC/ODBC_vs100.sln create mode 100644 Data/ODBC/ODBC_vs100.vcxproj create mode 100644 Data/ODBC/ODBC_vs100.vcxproj.filters create mode 100644 Data/ODBC/dependencies create mode 100644 Data/ODBC/include/Poco/Data/ODBC/Binder.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/ConnectionHandle.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/Connector.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/Diagnostics.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/EnvironmentHandle.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/Error.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/Extractor.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/Handle.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/ODBC.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/ODBCException.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/ODBCMetaColumn.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/ODBCStatementImpl.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/Parameter.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/Preparator.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/SessionImpl.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/TypeInfo.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/Unicode.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/Unicode_UNIXODBC.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/Unicode_WIN32.h create mode 100644 Data/ODBC/include/Poco/Data/ODBC/Utility.h create mode 100644 Data/ODBC/src/Binder.cpp create mode 100644 Data/ODBC/src/ConnectionHandle.cpp create mode 100644 Data/ODBC/src/Connector.cpp create mode 100644 Data/ODBC/src/EnvironmentHandle.cpp create mode 100644 Data/ODBC/src/Extractor.cpp create mode 100644 Data/ODBC/src/ODBCException.cpp create mode 100644 Data/ODBC/src/ODBCMetaColumn.cpp create mode 100644 Data/ODBC/src/ODBCStatementImpl.cpp create mode 100644 Data/ODBC/src/Parameter.cpp create mode 100644 Data/ODBC/src/Preparator.cpp create mode 100644 Data/ODBC/src/SessionImpl.cpp create mode 100644 Data/ODBC/src/TypeInfo.cpp create mode 100644 Data/ODBC/src/Unicode.cpp create mode 100644 Data/ODBC/src/Unicode_UNIXODBC.cpp create mode 100644 Data/ODBC/src/Unicode_WIN32.cpp create mode 100644 Data/ODBC/src/Utility.cpp create mode 100644 Data/ODBC/testsuite/CMakeLists.txt create mode 100644 Data/ODBC/testsuite/Makefile create mode 100644 Data/ODBC/testsuite/TestSuite.progen create mode 100644 Data/ODBC/testsuite/TestSuite_VS71.vcproj create mode 100644 Data/ODBC/testsuite/TestSuite_VS80.vcproj create mode 100644 Data/ODBC/testsuite/TestSuite_VS90.vcproj create mode 100644 Data/ODBC/testsuite/TestSuite_vs100.vcxproj create mode 100644 Data/ODBC/testsuite/TestSuite_vs100.vcxproj.filters create mode 100644 Data/ODBC/testsuite/src/Driver.cpp create mode 100644 Data/ODBC/testsuite/src/ODBCAccessTest.cpp create mode 100644 Data/ODBC/testsuite/src/ODBCAccessTest.h create mode 100644 Data/ODBC/testsuite/src/ODBCDB2Test.cpp create mode 100644 Data/ODBC/testsuite/src/ODBCDB2Test.h create mode 100644 Data/ODBC/testsuite/src/ODBCMySQLTest.cpp create mode 100644 Data/ODBC/testsuite/src/ODBCMySQLTest.h create mode 100644 Data/ODBC/testsuite/src/ODBCOracleTest.cpp create mode 100644 Data/ODBC/testsuite/src/ODBCOracleTest.h create mode 100644 Data/ODBC/testsuite/src/ODBCPostgreSQLTest.cpp create mode 100644 Data/ODBC/testsuite/src/ODBCPostgreSQLTest.h create mode 100644 Data/ODBC/testsuite/src/ODBCSQLServerTest.cpp create mode 100644 Data/ODBC/testsuite/src/ODBCSQLServerTest.h create mode 100644 Data/ODBC/testsuite/src/ODBCSQLiteTest.cpp create mode 100644 Data/ODBC/testsuite/src/ODBCSQLiteTest.h create mode 100644 Data/ODBC/testsuite/src/ODBCTest.cpp create mode 100644 Data/ODBC/testsuite/src/ODBCTest.h create mode 100644 Data/ODBC/testsuite/src/ODBCTestSuite.cpp create mode 100644 Data/ODBC/testsuite/src/ODBCTestSuite.h create mode 100644 Data/ODBC/testsuite/src/SQLExecutor.cpp create mode 100644 Data/ODBC/testsuite/src/SQLExecutor.h create mode 100644 Data/ODBC/testsuite/src/WinDriver.cpp create mode 100644 Data/ODBC/testsuite/test.mdb create mode 100644 Data/SQLite/CMakeLists.txt create mode 100644 Data/SQLite/Makefile create mode 100644 Data/SQLite/SQLite.progen create mode 100644 Data/SQLite/SQLite_VS71.sln create mode 100644 Data/SQLite/SQLite_VS71.vcproj create mode 100644 Data/SQLite/SQLite_VS80.sln create mode 100644 Data/SQLite/SQLite_VS80.vcproj create mode 100644 Data/SQLite/SQLite_VS90.sln create mode 100644 Data/SQLite/SQLite_VS90.vcproj create mode 100644 Data/SQLite/SQLite_vs100.sln create mode 100644 Data/SQLite/SQLite_vs100.vcxproj create mode 100644 Data/SQLite/SQLite_vs100.vcxproj.filters create mode 100644 Data/SQLite/dependencies create mode 100644 Data/SQLite/include/Poco/Data/SQLite/Binder.h create mode 100644 Data/SQLite/include/Poco/Data/SQLite/Connector.h create mode 100644 Data/SQLite/include/Poco/Data/SQLite/Extractor.h create mode 100644 Data/SQLite/include/Poco/Data/SQLite/SQLite.h create mode 100644 Data/SQLite/include/Poco/Data/SQLite/SQLiteException.h create mode 100644 Data/SQLite/include/Poco/Data/SQLite/SQLiteStatementImpl.h create mode 100644 Data/SQLite/include/Poco/Data/SQLite/SessionImpl.h create mode 100644 Data/SQLite/include/Poco/Data/SQLite/Utility.h create mode 100644 Data/SQLite/src/Binder.cpp create mode 100644 Data/SQLite/src/Connector.cpp create mode 100644 Data/SQLite/src/Extractor.cpp create mode 100644 Data/SQLite/src/SQLiteException.cpp create mode 100644 Data/SQLite/src/SQLiteStatementImpl.cpp create mode 100644 Data/SQLite/src/SessionImpl.cpp create mode 100644 Data/SQLite/src/Utility.cpp create mode 100644 Data/SQLite/src/sqlite3.c create mode 100644 Data/SQLite/src/sqlite3.h create mode 100644 Data/SQLite/testsuite/CMakeLists.txt create mode 100644 Data/SQLite/testsuite/Makefile create mode 100644 Data/SQLite/testsuite/TestSuite.progen create mode 100644 Data/SQLite/testsuite/TestSuite_VS71.vcproj create mode 100644 Data/SQLite/testsuite/TestSuite_VS80.vcproj create mode 100644 Data/SQLite/testsuite/TestSuite_VS90.vcproj create mode 100644 Data/SQLite/testsuite/TestSuite_vs100.vcxproj create mode 100644 Data/SQLite/testsuite/TestSuite_vs100.vcxproj.filters create mode 100644 Data/SQLite/testsuite/dsk.db create mode 100644 Data/SQLite/testsuite/dummy.db create mode 100644 Data/SQLite/testsuite/src/Driver.cpp create mode 100644 Data/SQLite/testsuite/src/SQLiteTest.cpp create mode 100644 Data/SQLite/testsuite/src/SQLiteTest.h create mode 100644 Data/SQLite/testsuite/src/SQLiteTestSuite.cpp create mode 100644 Data/SQLite/testsuite/src/SQLiteTestSuite.h create mode 100644 Data/SQLite/testsuite/src/WinDriver.cpp create mode 100644 Data/dependencies create mode 100644 Data/doc/DataDeveloperManual.page create mode 100644 Data/doc/DataReleaseNotes.page create mode 100644 Data/doc/DataUserManual.page create mode 100644 Data/doc/info.txt create mode 100644 Data/include/Poco/Data/AbstractBinder.h create mode 100644 Data/include/Poco/Data/AbstractBinding.h create mode 100644 Data/include/Poco/Data/AbstractExtraction.h create mode 100644 Data/include/Poco/Data/AbstractExtractor.h create mode 100644 Data/include/Poco/Data/AbstractPreparation.h create mode 100644 Data/include/Poco/Data/AbstractPreparator.h create mode 100644 Data/include/Poco/Data/AbstractSessionImpl.h create mode 100644 Data/include/Poco/Data/ArchiveStrategy.h create mode 100644 Data/include/Poco/Data/AutoTransaction.h create mode 100644 Data/include/Poco/Data/Binding.h create mode 100644 Data/include/Poco/Data/Bulk.h create mode 100644 Data/include/Poco/Data/BulkBinding.h create mode 100644 Data/include/Poco/Data/BulkExtraction.h create mode 100644 Data/include/Poco/Data/Column.h create mode 100644 Data/include/Poco/Data/Connector.h create mode 100644 Data/include/Poco/Data/Constants.h create mode 100644 Data/include/Poco/Data/Data.h create mode 100644 Data/include/Poco/Data/DataException.h create mode 100644 Data/include/Poco/Data/Date.h create mode 100644 Data/include/Poco/Data/DynamicDateTime.h create mode 100644 Data/include/Poco/Data/DynamicLOB.h create mode 100644 Data/include/Poco/Data/Extraction.h create mode 100644 Data/include/Poco/Data/LOB.h create mode 100644 Data/include/Poco/Data/LOBStream.h create mode 100644 Data/include/Poco/Data/Limit.h create mode 100644 Data/include/Poco/Data/MetaColumn.h create mode 100644 Data/include/Poco/Data/Nullable.h create mode 100644 Data/include/Poco/Data/PooledSessionHolder.h create mode 100644 Data/include/Poco/Data/PooledSessionImpl.h create mode 100644 Data/include/Poco/Data/Position.h create mode 100644 Data/include/Poco/Data/Preparation.h create mode 100644 Data/include/Poco/Data/Range.h create mode 100644 Data/include/Poco/Data/RecordSet.h create mode 100644 Data/include/Poco/Data/Row.h create mode 100644 Data/include/Poco/Data/RowFilter.h create mode 100644 Data/include/Poco/Data/RowFormatter.h create mode 100644 Data/include/Poco/Data/RowIterator.h create mode 100644 Data/include/Poco/Data/SQLChannel.h create mode 100644 Data/include/Poco/Data/Session.h create mode 100644 Data/include/Poco/Data/SessionFactory.h create mode 100644 Data/include/Poco/Data/SessionImpl.h create mode 100644 Data/include/Poco/Data/SessionPool.h create mode 100644 Data/include/Poco/Data/SessionPoolContainer.h create mode 100644 Data/include/Poco/Data/SimpleRowFormatter.h create mode 100644 Data/include/Poco/Data/Statement.h create mode 100644 Data/include/Poco/Data/StatementCreator.h create mode 100644 Data/include/Poco/Data/StatementImpl.h create mode 100644 Data/include/Poco/Data/Time.h create mode 100644 Data/include/Poco/Data/Transaction.h create mode 100644 Data/include/Poco/Data/TypeHandler.h create mode 100644 Data/samples/Binding/Binding.progen create mode 100644 Data/samples/Binding/Binding_vs100.vcxproj create mode 100644 Data/samples/Binding/Binding_vs100.vcxproj.filters create mode 100644 Data/samples/Binding/Binding_vs71.vcproj create mode 100644 Data/samples/Binding/Binding_vs80.vcproj create mode 100644 Data/samples/Binding/Binding_vs90.vcproj create mode 100644 Data/samples/Binding/CMakeLists.txt create mode 100644 Data/samples/Binding/Makefile create mode 100644 Data/samples/Binding/src/Binding.cpp create mode 100644 Data/samples/CMakeLists.txt create mode 100644 Data/samples/Makefile create mode 100644 Data/samples/RecordSet/CMakeLists.txt create mode 100644 Data/samples/RecordSet/Makefile create mode 100644 Data/samples/RecordSet/RecordSet.progen create mode 100644 Data/samples/RecordSet/RecordSet_vs100.vcxproj create mode 100644 Data/samples/RecordSet/RecordSet_vs100.vcxproj.filters create mode 100644 Data/samples/RecordSet/RecordSet_vs71.vcproj create mode 100644 Data/samples/RecordSet/RecordSet_vs80.vcproj create mode 100644 Data/samples/RecordSet/RecordSet_vs90.vcproj create mode 100644 Data/samples/RecordSet/src/RecordSet.cpp create mode 100644 Data/samples/RowFormatter/CMakeLists.txt create mode 100644 Data/samples/RowFormatter/Makefile create mode 100644 Data/samples/RowFormatter/RowFormatter_vs71.vcproj create mode 100644 Data/samples/RowFormatter/RowFormatter_vs80.vcproj create mode 100644 Data/samples/RowFormatter/RowFormatter_vs90.vcproj create mode 100644 Data/samples/RowFormatter/src/RowFormatter.cpp create mode 100644 Data/samples/Tuple/CMakeLists.txt create mode 100644 Data/samples/Tuple/Makefile create mode 100644 Data/samples/Tuple/Tuple.progen create mode 100644 Data/samples/Tuple/Tuple_vs100.vcxproj create mode 100644 Data/samples/Tuple/Tuple_vs100.vcxproj.filters create mode 100644 Data/samples/Tuple/Tuple_vs71.vcproj create mode 100644 Data/samples/Tuple/Tuple_vs80.vcproj create mode 100644 Data/samples/Tuple/Tuple_vs90.vcproj create mode 100644 Data/samples/Tuple/src/Tuple.cpp create mode 100644 Data/samples/TypeHandler/CMakeLists.txt create mode 100644 Data/samples/TypeHandler/Makefile create mode 100644 Data/samples/TypeHandler/TypeHandler.progen create mode 100644 Data/samples/TypeHandler/TypeHandler_vs100.vcxproj create mode 100644 Data/samples/TypeHandler/TypeHandler_vs100.vcxproj.filters create mode 100644 Data/samples/TypeHandler/TypeHandler_vs71.vcproj create mode 100644 Data/samples/TypeHandler/TypeHandler_vs80.vcproj create mode 100644 Data/samples/TypeHandler/TypeHandler_vs90.vcproj create mode 100644 Data/samples/TypeHandler/src/TypeHandler.cpp create mode 100644 Data/samples/dependencies create mode 100644 Data/samples/samples.progen create mode 100644 Data/samples/samples_vs100.sln create mode 100644 Data/samples/samples_vs71.sln create mode 100644 Data/samples/samples_vs80.sln create mode 100644 Data/samples/samples_vs90.sln create mode 100644 Data/src/AbstractBinder.cpp create mode 100644 Data/src/AbstractBinding.cpp create mode 100644 Data/src/AbstractExtraction.cpp create mode 100644 Data/src/AbstractExtractor.cpp create mode 100644 Data/src/AbstractPreparation.cpp create mode 100644 Data/src/AbstractPreparator.cpp create mode 100644 Data/src/ArchiveStrategy.cpp create mode 100644 Data/src/Bulk.cpp create mode 100644 Data/src/Connector.cpp create mode 100644 Data/src/DataException.cpp create mode 100644 Data/src/Date.cpp create mode 100644 Data/src/DynamicLOB.cpp create mode 100644 Data/src/Limit.cpp create mode 100644 Data/src/MetaColumn.cpp create mode 100644 Data/src/PooledSessionHolder.cpp create mode 100644 Data/src/PooledSessionImpl.cpp create mode 100644 Data/src/Position.cpp create mode 100644 Data/src/Range.cpp create mode 100644 Data/src/RecordSet.cpp create mode 100644 Data/src/Row.cpp create mode 100644 Data/src/RowFilter.cpp create mode 100644 Data/src/RowFormatter.cpp create mode 100644 Data/src/RowIterator.cpp create mode 100644 Data/src/SQLChannel.cpp create mode 100644 Data/src/Session.cpp create mode 100644 Data/src/SessionFactory.cpp create mode 100644 Data/src/SessionImpl.cpp create mode 100644 Data/src/SessionPool.cpp create mode 100644 Data/src/SessionPoolContainer.cpp create mode 100644 Data/src/SimpleRowFormatter.cpp create mode 100644 Data/src/Statement.cpp create mode 100644 Data/src/StatementCreator.cpp create mode 100644 Data/src/StatementImpl.cpp create mode 100644 Data/src/Time.cpp create mode 100644 Data/src/Transaction.cpp create mode 100644 Data/testsuite/CMakeLists.txt create mode 100644 Data/testsuite/Makefile create mode 100644 Data/testsuite/TestSuite.progen create mode 100644 Data/testsuite/TestSuite.vmsbuild create mode 100644 Data/testsuite/TestSuite_VS71.vcproj create mode 100644 Data/testsuite/TestSuite_VS80.vcproj create mode 100644 Data/testsuite/TestSuite_VS90.vcproj create mode 100644 Data/testsuite/TestSuite_vs100.vcxproj create mode 100644 Data/testsuite/TestSuite_vs100.vcxproj.filters create mode 100644 Data/testsuite/src/Binder.cpp create mode 100644 Data/testsuite/src/Binder.h create mode 100644 Data/testsuite/src/Connector.cpp create mode 100644 Data/testsuite/src/Connector.h create mode 100644 Data/testsuite/src/DataTest.cpp create mode 100644 Data/testsuite/src/DataTest.h create mode 100644 Data/testsuite/src/DataTestSuite.cpp create mode 100644 Data/testsuite/src/DataTestSuite.h create mode 100644 Data/testsuite/src/Driver.cpp create mode 100644 Data/testsuite/src/Extractor.cpp create mode 100644 Data/testsuite/src/Extractor.h create mode 100644 Data/testsuite/src/Preparator.cpp create mode 100644 Data/testsuite/src/Preparator.h create mode 100644 Data/testsuite/src/SessionImpl.cpp create mode 100644 Data/testsuite/src/SessionImpl.h create mode 100644 Data/testsuite/src/SessionPoolTest.cpp create mode 100644 Data/testsuite/src/SessionPoolTest.h create mode 100644 Data/testsuite/src/StatementImpl.cpp create mode 100644 Data/testsuite/src/StatementImpl.h create mode 100644 Data/testsuite/src/TestStatementImpl.cpp create mode 100644 Data/testsuite/src/TestStatementImpl.h create mode 100644 Data/testsuite/src/WinDriver.cpp create mode 100644 Foundation/Foundation.vxbuild create mode 100644 Foundation/Foundation_CE_vs90.sln create mode 100644 Foundation/Foundation_CE_vs90.vcproj create mode 100644 Foundation/Foundation_vs100.sln create mode 100644 Foundation/Foundation_vs100.vcxproj create mode 100644 Foundation/Foundation_vs100.vcxproj.filters create mode 100644 Foundation/Foundation_vs71.sln create mode 100644 Foundation/Foundation_vs71.vcproj create mode 100644 Foundation/Foundation_vs80.sln create mode 100644 Foundation/Foundation_vs80.vcproj create mode 100644 Foundation/Foundation_vs90.sln create mode 100644 Foundation/Foundation_vs90.vcproj create mode 100644 Foundation/Foundation_x64_vs100.sln create mode 100644 Foundation/Foundation_x64_vs100.vcxproj create mode 100644 Foundation/Foundation_x64_vs100.vcxproj.filters create mode 100644 Foundation/Foundation_x64_vs90.sln create mode 100644 Foundation/Foundation_x64_vs90.vcproj create mode 100644 Foundation/Makefile create mode 100644 Foundation/extradirs create mode 100644 Foundation/foundation.vmsbuild create mode 100644 Foundation/include/Poco/ASCIIEncoding.h create mode 100644 Foundation/include/Poco/AbstractCache.h create mode 100644 Foundation/include/Poco/AbstractDelegate.h create mode 100644 Foundation/include/Poco/AbstractEvent.h create mode 100644 Foundation/include/Poco/AbstractObserver.h create mode 100644 Foundation/include/Poco/AbstractPriorityDelegate.h create mode 100644 Foundation/include/Poco/AbstractStrategy.h create mode 100644 Foundation/include/Poco/AccessExpirationDecorator.h create mode 100644 Foundation/include/Poco/AccessExpireCache.h create mode 100644 Foundation/include/Poco/AccessExpireLRUCache.h create mode 100644 Foundation/include/Poco/AccessExpireStrategy.h create mode 100644 Foundation/include/Poco/ActiveDispatcher.h create mode 100644 Foundation/include/Poco/ActiveMethod.h create mode 100644 Foundation/include/Poco/ActiveResult.h create mode 100644 Foundation/include/Poco/ActiveRunnable.h create mode 100644 Foundation/include/Poco/ActiveStarter.h create mode 100644 Foundation/include/Poco/Activity.h create mode 100644 Foundation/include/Poco/Any.h create mode 100644 Foundation/include/Poco/ArchiveStrategy.h create mode 100644 Foundation/include/Poco/Array.h create mode 100644 Foundation/include/Poco/Ascii.h create mode 100644 Foundation/include/Poco/AsyncChannel.h create mode 100644 Foundation/include/Poco/AtomicCounter.h create mode 100644 Foundation/include/Poco/AutoPtr.h create mode 100644 Foundation/include/Poco/AutoReleasePool.h create mode 100644 Foundation/include/Poco/Base64Decoder.h create mode 100644 Foundation/include/Poco/Base64Encoder.h create mode 100644 Foundation/include/Poco/BasicEvent.h create mode 100644 Foundation/include/Poco/BinaryReader.h create mode 100644 Foundation/include/Poco/BinaryWriter.h create mode 100644 Foundation/include/Poco/Buffer.h create mode 100644 Foundation/include/Poco/BufferAllocator.h create mode 100644 Foundation/include/Poco/BufferedBidirectionalStreamBuf.h create mode 100644 Foundation/include/Poco/BufferedStreamBuf.h create mode 100644 Foundation/include/Poco/Bugcheck.h create mode 100644 Foundation/include/Poco/ByteOrder.h create mode 100644 Foundation/include/Poco/Channel.h create mode 100644 Foundation/include/Poco/Checksum.h create mode 100644 Foundation/include/Poco/ClassLibrary.h create mode 100644 Foundation/include/Poco/ClassLoader.h create mode 100644 Foundation/include/Poco/Condition.h create mode 100644 Foundation/include/Poco/Config.h create mode 100644 Foundation/include/Poco/Configurable.h create mode 100644 Foundation/include/Poco/ConsoleChannel.h create mode 100644 Foundation/include/Poco/CountingStream.h create mode 100644 Foundation/include/Poco/DateTime.h create mode 100644 Foundation/include/Poco/DateTimeFormat.h create mode 100644 Foundation/include/Poco/DateTimeFormatter.h create mode 100644 Foundation/include/Poco/DateTimeParser.h create mode 100644 Foundation/include/Poco/Debugger.h create mode 100644 Foundation/include/Poco/DefaultStrategy.h create mode 100644 Foundation/include/Poco/DeflatingStream.h create mode 100644 Foundation/include/Poco/Delegate.h create mode 100644 Foundation/include/Poco/DigestEngine.h create mode 100644 Foundation/include/Poco/DigestStream.h create mode 100644 Foundation/include/Poco/DirectoryIterator.h create mode 100644 Foundation/include/Poco/DirectoryIterator_UNIX.h create mode 100644 Foundation/include/Poco/DirectoryIterator_VMS.h create mode 100644 Foundation/include/Poco/DirectoryIterator_WIN32.h create mode 100644 Foundation/include/Poco/DirectoryIterator_WIN32U.h create mode 100644 Foundation/include/Poco/Dynamic/Pair.h create mode 100644 Foundation/include/Poco/Dynamic/Struct.h create mode 100644 Foundation/include/Poco/Dynamic/Var.h create mode 100644 Foundation/include/Poco/Dynamic/VarHolder.h create mode 100644 Foundation/include/Poco/DynamicAny.h create mode 100644 Foundation/include/Poco/DynamicAnyHolder.h create mode 100644 Foundation/include/Poco/DynamicFactory.h create mode 100644 Foundation/include/Poco/DynamicStruct.h create mode 100644 Foundation/include/Poco/Environment.h create mode 100644 Foundation/include/Poco/Environment_UNIX.h create mode 100644 Foundation/include/Poco/Environment_VMS.h create mode 100644 Foundation/include/Poco/Environment_VX.h create mode 100644 Foundation/include/Poco/Environment_WIN32.h create mode 100644 Foundation/include/Poco/Environment_WIN32U.h create mode 100644 Foundation/include/Poco/Environment_WINCE.h create mode 100644 Foundation/include/Poco/ErrorHandler.h create mode 100644 Foundation/include/Poco/Event.h create mode 100644 Foundation/include/Poco/EventArgs.h create mode 100644 Foundation/include/Poco/EventLogChannel.h create mode 100644 Foundation/include/Poco/Event_POSIX.h create mode 100644 Foundation/include/Poco/Event_VX.h create mode 100644 Foundation/include/Poco/Event_WIN32.h create mode 100644 Foundation/include/Poco/Exception.h create mode 100644 Foundation/include/Poco/ExpirationDecorator.h create mode 100644 Foundation/include/Poco/Expire.h create mode 100644 Foundation/include/Poco/ExpireCache.h create mode 100644 Foundation/include/Poco/ExpireLRUCache.h create mode 100644 Foundation/include/Poco/ExpireStrategy.h create mode 100644 Foundation/include/Poco/FIFOEvent.h create mode 100644 Foundation/include/Poco/FIFOStrategy.h create mode 100644 Foundation/include/Poco/FPEnvironment.h create mode 100644 Foundation/include/Poco/FPEnvironment_C99.h create mode 100644 Foundation/include/Poco/FPEnvironment_DEC.h create mode 100644 Foundation/include/Poco/FPEnvironment_DUMMY.h create mode 100644 Foundation/include/Poco/FPEnvironment_SUN.h create mode 100644 Foundation/include/Poco/FPEnvironment_WIN32.h create mode 100644 Foundation/include/Poco/File.h create mode 100644 Foundation/include/Poco/FileChannel.h create mode 100644 Foundation/include/Poco/FileStream.h create mode 100644 Foundation/include/Poco/FileStreamFactory.h create mode 100644 Foundation/include/Poco/FileStream_POSIX.h create mode 100644 Foundation/include/Poco/FileStream_WIN32.h create mode 100644 Foundation/include/Poco/File_UNIX.h create mode 100644 Foundation/include/Poco/File_VMS.h create mode 100644 Foundation/include/Poco/File_VX.h create mode 100644 Foundation/include/Poco/File_WIN32.h create mode 100644 Foundation/include/Poco/File_WIN32U.h create mode 100644 Foundation/include/Poco/File_WINCE.h create mode 100644 Foundation/include/Poco/Format.h create mode 100644 Foundation/include/Poco/Formatter.h create mode 100644 Foundation/include/Poco/FormattingChannel.h create mode 100644 Foundation/include/Poco/Foundation.h create mode 100644 Foundation/include/Poco/FunctionDelegate.h create mode 100644 Foundation/include/Poco/FunctionPriorityDelegate.h create mode 100644 Foundation/include/Poco/Glob.h create mode 100644 Foundation/include/Poco/HMACEngine.h create mode 100644 Foundation/include/Poco/Hash.h create mode 100644 Foundation/include/Poco/HashFunction.h create mode 100644 Foundation/include/Poco/HashMap.h create mode 100644 Foundation/include/Poco/HashSet.h create mode 100644 Foundation/include/Poco/HashStatistic.h create mode 100644 Foundation/include/Poco/HashTable.h create mode 100644 Foundation/include/Poco/HexBinaryDecoder.h create mode 100644 Foundation/include/Poco/HexBinaryEncoder.h create mode 100644 Foundation/include/Poco/InflatingStream.h create mode 100644 Foundation/include/Poco/Instantiator.h create mode 100644 Foundation/include/Poco/KeyValueArgs.h create mode 100644 Foundation/include/Poco/LRUCache.h create mode 100644 Foundation/include/Poco/LRUStrategy.h create mode 100644 Foundation/include/Poco/Latin1Encoding.h create mode 100644 Foundation/include/Poco/Latin2Encoding.h create mode 100644 Foundation/include/Poco/Latin9Encoding.h create mode 100644 Foundation/include/Poco/LineEndingConverter.h create mode 100644 Foundation/include/Poco/LinearHashTable.h create mode 100644 Foundation/include/Poco/LocalDateTime.h create mode 100644 Foundation/include/Poco/LogFile.h create mode 100644 Foundation/include/Poco/LogFile_STD.h create mode 100644 Foundation/include/Poco/LogFile_VMS.h create mode 100644 Foundation/include/Poco/LogFile_WIN32.h create mode 100644 Foundation/include/Poco/LogFile_WIN32U.h create mode 100644 Foundation/include/Poco/LogStream.h create mode 100644 Foundation/include/Poco/Logger.h create mode 100644 Foundation/include/Poco/LoggingFactory.h create mode 100644 Foundation/include/Poco/LoggingRegistry.h create mode 100644 Foundation/include/Poco/MD2Engine.h create mode 100644 Foundation/include/Poco/MD4Engine.h create mode 100644 Foundation/include/Poco/MD5Engine.h create mode 100644 Foundation/include/Poco/Manifest.h create mode 100644 Foundation/include/Poco/MemoryPool.h create mode 100644 Foundation/include/Poco/MemoryStream.h create mode 100644 Foundation/include/Poco/Message.h create mode 100644 Foundation/include/Poco/MetaObject.h create mode 100644 Foundation/include/Poco/MetaProgramming.h create mode 100644 Foundation/include/Poco/Mutex.h create mode 100644 Foundation/include/Poco/Mutex_POSIX.h create mode 100644 Foundation/include/Poco/Mutex_VX.h create mode 100644 Foundation/include/Poco/Mutex_WIN32.h create mode 100644 Foundation/include/Poco/Mutex_WINCE.h create mode 100644 Foundation/include/Poco/NObserver.h create mode 100644 Foundation/include/Poco/NamedEvent.h create mode 100644 Foundation/include/Poco/NamedEvent_Android.h create mode 100644 Foundation/include/Poco/NamedEvent_UNIX.h create mode 100644 Foundation/include/Poco/NamedEvent_VMS.h create mode 100644 Foundation/include/Poco/NamedEvent_WIN32.h create mode 100644 Foundation/include/Poco/NamedEvent_WIN32U.h create mode 100644 Foundation/include/Poco/NamedMutex.h create mode 100644 Foundation/include/Poco/NamedMutex_Android.h create mode 100644 Foundation/include/Poco/NamedMutex_UNIX.h create mode 100644 Foundation/include/Poco/NamedMutex_VMS.h create mode 100644 Foundation/include/Poco/NamedMutex_WIN32.h create mode 100644 Foundation/include/Poco/NamedMutex_WIN32U.h create mode 100644 Foundation/include/Poco/NamedTuple.h create mode 100644 Foundation/include/Poco/NestedDiagnosticContext.h create mode 100644 Foundation/include/Poco/Notification.h create mode 100644 Foundation/include/Poco/NotificationCenter.h create mode 100644 Foundation/include/Poco/NotificationQueue.h create mode 100644 Foundation/include/Poco/NotificationStrategy.h create mode 100644 Foundation/include/Poco/NullChannel.h create mode 100644 Foundation/include/Poco/NullStream.h create mode 100644 Foundation/include/Poco/Nullable.h create mode 100644 Foundation/include/Poco/NumberFormatter.h create mode 100644 Foundation/include/Poco/NumberParser.h create mode 100644 Foundation/include/Poco/Observer.h create mode 100644 Foundation/include/Poco/OpcomChannel.h create mode 100644 Foundation/include/Poco/Path.h create mode 100644 Foundation/include/Poco/Path_UNIX.h create mode 100644 Foundation/include/Poco/Path_VMS.h create mode 100644 Foundation/include/Poco/Path_WIN32.h create mode 100644 Foundation/include/Poco/Path_WIN32U.h create mode 100644 Foundation/include/Poco/Path_WINCE.h create mode 100644 Foundation/include/Poco/PatternFormatter.h create mode 100644 Foundation/include/Poco/Pipe.h create mode 100644 Foundation/include/Poco/PipeImpl.h create mode 100644 Foundation/include/Poco/PipeImpl_DUMMY.h create mode 100644 Foundation/include/Poco/PipeImpl_POSIX.h create mode 100644 Foundation/include/Poco/PipeImpl_WIN32.h create mode 100644 Foundation/include/Poco/PipeStream.h create mode 100644 Foundation/include/Poco/Platform.h create mode 100644 Foundation/include/Poco/Platform_POSIX.h create mode 100644 Foundation/include/Poco/Platform_VMS.h create mode 100644 Foundation/include/Poco/Platform_VX.h create mode 100644 Foundation/include/Poco/Platform_WIN32.h create mode 100644 Foundation/include/Poco/Poco.h create mode 100644 Foundation/include/Poco/PriorityDelegate.h create mode 100644 Foundation/include/Poco/PriorityEvent.h create mode 100644 Foundation/include/Poco/PriorityExpire.h create mode 100644 Foundation/include/Poco/PriorityNotificationQueue.h create mode 100644 Foundation/include/Poco/PriorityStrategy.h create mode 100644 Foundation/include/Poco/Process.h create mode 100644 Foundation/include/Poco/Process_UNIX.h create mode 100644 Foundation/include/Poco/Process_VMS.h create mode 100644 Foundation/include/Poco/Process_VX.h create mode 100644 Foundation/include/Poco/Process_WIN32.h create mode 100644 Foundation/include/Poco/Process_WIN32U.h create mode 100644 Foundation/include/Poco/Process_WINCE.h create mode 100644 Foundation/include/Poco/PurgeStrategy.h create mode 100644 Foundation/include/Poco/RWLock.h create mode 100644 Foundation/include/Poco/RWLock_Android.h create mode 100644 Foundation/include/Poco/RWLock_POSIX.h create mode 100644 Foundation/include/Poco/RWLock_VX.h create mode 100644 Foundation/include/Poco/RWLock_WIN32.h create mode 100644 Foundation/include/Poco/RWLock_WINCE.h create mode 100644 Foundation/include/Poco/Random.h create mode 100644 Foundation/include/Poco/RandomStream.h create mode 100644 Foundation/include/Poco/RefCountedObject.h create mode 100644 Foundation/include/Poco/RegularExpression.h create mode 100644 Foundation/include/Poco/RotateStrategy.h create mode 100644 Foundation/include/Poco/Runnable.h create mode 100644 Foundation/include/Poco/RunnableAdapter.h create mode 100644 Foundation/include/Poco/SHA1Engine.h create mode 100644 Foundation/include/Poco/ScopedLock.h create mode 100644 Foundation/include/Poco/ScopedUnlock.h create mode 100644 Foundation/include/Poco/Semaphore.h create mode 100644 Foundation/include/Poco/Semaphore_POSIX.h create mode 100644 Foundation/include/Poco/Semaphore_VX.h create mode 100644 Foundation/include/Poco/Semaphore_WIN32.h create mode 100644 Foundation/include/Poco/SharedLibrary.h create mode 100644 Foundation/include/Poco/SharedLibrary_HPUX.h create mode 100644 Foundation/include/Poco/SharedLibrary_UNIX.h create mode 100644 Foundation/include/Poco/SharedLibrary_VMS.h create mode 100644 Foundation/include/Poco/SharedLibrary_VX.h create mode 100644 Foundation/include/Poco/SharedLibrary_WIN32.h create mode 100644 Foundation/include/Poco/SharedLibrary_WIN32U.h create mode 100644 Foundation/include/Poco/SharedMemory.h create mode 100644 Foundation/include/Poco/SharedMemory_DUMMY.h create mode 100644 Foundation/include/Poco/SharedMemory_POSIX.h create mode 100644 Foundation/include/Poco/SharedMemory_WIN32.h create mode 100644 Foundation/include/Poco/SharedPtr.h create mode 100644 Foundation/include/Poco/SignalHandler.h create mode 100644 Foundation/include/Poco/SimpleFileChannel.h create mode 100644 Foundation/include/Poco/SimpleHashTable.h create mode 100644 Foundation/include/Poco/SingletonHolder.h create mode 100644 Foundation/include/Poco/SplitterChannel.h create mode 100644 Foundation/include/Poco/Stopwatch.h create mode 100644 Foundation/include/Poco/StrategyCollection.h create mode 100644 Foundation/include/Poco/StreamChannel.h create mode 100644 Foundation/include/Poco/StreamConverter.h create mode 100644 Foundation/include/Poco/StreamCopier.h create mode 100644 Foundation/include/Poco/StreamTokenizer.h create mode 100644 Foundation/include/Poco/StreamUtil.h create mode 100644 Foundation/include/Poco/String.h create mode 100644 Foundation/include/Poco/StringTokenizer.h create mode 100644 Foundation/include/Poco/SynchronizedObject.h create mode 100644 Foundation/include/Poco/SyslogChannel.h create mode 100644 Foundation/include/Poco/Task.h create mode 100644 Foundation/include/Poco/TaskManager.h create mode 100644 Foundation/include/Poco/TaskNotification.h create mode 100644 Foundation/include/Poco/TeeStream.h create mode 100644 Foundation/include/Poco/TemporaryFile.h create mode 100644 Foundation/include/Poco/TextBufferIterator.h create mode 100644 Foundation/include/Poco/TextConverter.h create mode 100644 Foundation/include/Poco/TextEncoding.h create mode 100644 Foundation/include/Poco/TextIterator.h create mode 100644 Foundation/include/Poco/Thread.h create mode 100644 Foundation/include/Poco/ThreadLocal.h create mode 100644 Foundation/include/Poco/ThreadPool.h create mode 100644 Foundation/include/Poco/ThreadTarget.h create mode 100644 Foundation/include/Poco/Thread_POSIX.h create mode 100644 Foundation/include/Poco/Thread_VX.h create mode 100644 Foundation/include/Poco/Thread_WIN32.h create mode 100644 Foundation/include/Poco/Thread_WINCE.h create mode 100644 Foundation/include/Poco/TimedNotificationQueue.h create mode 100644 Foundation/include/Poco/Timer.h create mode 100644 Foundation/include/Poco/Timespan.h create mode 100644 Foundation/include/Poco/Timestamp.h create mode 100644 Foundation/include/Poco/Timezone.h create mode 100644 Foundation/include/Poco/Token.h create mode 100644 Foundation/include/Poco/Tuple.h create mode 100644 Foundation/include/Poco/TypeList.h create mode 100644 Foundation/include/Poco/Types.h create mode 100644 Foundation/include/Poco/URI.h create mode 100644 Foundation/include/Poco/URIStreamFactory.h create mode 100644 Foundation/include/Poco/URIStreamOpener.h create mode 100644 Foundation/include/Poco/UTF16Encoding.h create mode 100644 Foundation/include/Poco/UTF8Encoding.h create mode 100644 Foundation/include/Poco/UTF8String.h create mode 100644 Foundation/include/Poco/UUID.h create mode 100644 Foundation/include/Poco/UUIDGenerator.h create mode 100644 Foundation/include/Poco/UnWindows.h create mode 100644 Foundation/include/Poco/UnbufferedStreamBuf.h create mode 100644 Foundation/include/Poco/Unicode.h create mode 100644 Foundation/include/Poco/UnicodeConverter.h create mode 100644 Foundation/include/Poco/UniqueAccessExpireCache.h create mode 100644 Foundation/include/Poco/UniqueAccessExpireLRUCache.h create mode 100644 Foundation/include/Poco/UniqueAccessExpireStrategy.h create mode 100644 Foundation/include/Poco/UniqueExpireCache.h create mode 100644 Foundation/include/Poco/UniqueExpireLRUCache.h create mode 100644 Foundation/include/Poco/UniqueExpireStrategy.h create mode 100644 Foundation/include/Poco/ValidArgs.h create mode 100644 Foundation/include/Poco/Version.h create mode 100644 Foundation/include/Poco/Void.h create mode 100644 Foundation/include/Poco/Windows1250Encoding.h create mode 100644 Foundation/include/Poco/Windows1251Encoding.h create mode 100644 Foundation/include/Poco/Windows1252Encoding.h create mode 100644 Foundation/include/Poco/WindowsConsoleChannel.h create mode 100644 Foundation/include/Poco/zconf.h create mode 100644 Foundation/include/Poco/zlib.h create mode 100644 Foundation/samples/ActiveMethod/ActiveMethod.progen create mode 100644 Foundation/samples/ActiveMethod/ActiveMethod.vmsbuild create mode 100644 Foundation/samples/ActiveMethod/ActiveMethod_CE_vs90.vcproj create mode 100644 Foundation/samples/ActiveMethod/ActiveMethod_vs100.vcxproj create mode 100644 Foundation/samples/ActiveMethod/ActiveMethod_vs100.vcxproj.filters create mode 100644 Foundation/samples/ActiveMethod/ActiveMethod_vs71.vcproj create mode 100644 Foundation/samples/ActiveMethod/ActiveMethod_vs80.vcproj create mode 100644 Foundation/samples/ActiveMethod/ActiveMethod_vs90.vcproj create mode 100644 Foundation/samples/ActiveMethod/ActiveMethod_x64_vs100.vcxproj create mode 100644 Foundation/samples/ActiveMethod/ActiveMethod_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/ActiveMethod/ActiveMethod_x64_vs90.vcproj create mode 100644 Foundation/samples/ActiveMethod/Makefile create mode 100644 Foundation/samples/ActiveMethod/src/ActiveMethod.cpp create mode 100644 Foundation/samples/Activity/Activity.progen create mode 100644 Foundation/samples/Activity/Activity.vmsbuild create mode 100644 Foundation/samples/Activity/Activity_CE_vs90.vcproj create mode 100644 Foundation/samples/Activity/Activity_vs100.vcxproj create mode 100644 Foundation/samples/Activity/Activity_vs100.vcxproj.filters create mode 100644 Foundation/samples/Activity/Activity_vs71.vcproj create mode 100644 Foundation/samples/Activity/Activity_vs80.vcproj create mode 100644 Foundation/samples/Activity/Activity_vs90.vcproj create mode 100644 Foundation/samples/Activity/Activity_x64_vs100.vcxproj create mode 100644 Foundation/samples/Activity/Activity_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/Activity/Activity_x64_vs90.vcproj create mode 100644 Foundation/samples/Activity/Makefile create mode 100644 Foundation/samples/Activity/src/Activity.cpp create mode 100644 Foundation/samples/BinaryReaderWriter/BinaryReaderWriter.progen create mode 100644 Foundation/samples/BinaryReaderWriter/BinaryReaderWriter.vmsbuild create mode 100644 Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_CE_vs90.vcproj create mode 100644 Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs100.vcxproj create mode 100644 Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs100.vcxproj.filters create mode 100644 Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs71.vcproj create mode 100644 Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs80.vcproj create mode 100644 Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_vs90.vcproj create mode 100644 Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs100.vcxproj create mode 100644 Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/BinaryReaderWriter/BinaryReaderWriter_x64_vs90.vcproj create mode 100644 Foundation/samples/BinaryReaderWriter/Makefile create mode 100644 Foundation/samples/BinaryReaderWriter/src/BinaryReaderWriter.cpp create mode 100644 Foundation/samples/DateTime/DateTime.progen create mode 100644 Foundation/samples/DateTime/DateTime.vmsbuild create mode 100644 Foundation/samples/DateTime/DateTime_CE_vs90.vcproj create mode 100644 Foundation/samples/DateTime/DateTime_vs100.vcxproj create mode 100644 Foundation/samples/DateTime/DateTime_vs100.vcxproj.filters create mode 100644 Foundation/samples/DateTime/DateTime_vs71.vcproj create mode 100644 Foundation/samples/DateTime/DateTime_vs80.vcproj create mode 100644 Foundation/samples/DateTime/DateTime_vs90.vcproj create mode 100644 Foundation/samples/DateTime/DateTime_x64_vs100.vcxproj create mode 100644 Foundation/samples/DateTime/DateTime_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/DateTime/DateTime_x64_vs90.vcproj create mode 100644 Foundation/samples/DateTime/Makefile create mode 100644 Foundation/samples/DateTime/src/DateTime.cpp create mode 100644 Foundation/samples/LogRotation/LogRotation.progen create mode 100644 Foundation/samples/LogRotation/LogRotation.vmsbuild create mode 100644 Foundation/samples/LogRotation/LogRotation_CE_vs90.vcproj create mode 100644 Foundation/samples/LogRotation/LogRotation_vs100.vcxproj create mode 100644 Foundation/samples/LogRotation/LogRotation_vs100.vcxproj.filters create mode 100644 Foundation/samples/LogRotation/LogRotation_vs71.vcproj create mode 100644 Foundation/samples/LogRotation/LogRotation_vs80.vcproj create mode 100644 Foundation/samples/LogRotation/LogRotation_vs90.vcproj create mode 100644 Foundation/samples/LogRotation/LogRotation_x64_vs100.vcxproj create mode 100644 Foundation/samples/LogRotation/LogRotation_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/LogRotation/LogRotation_x64_vs90.vcproj create mode 100644 Foundation/samples/LogRotation/Makefile create mode 100644 Foundation/samples/LogRotation/src/LogRotation.cpp create mode 100644 Foundation/samples/Logger/Logger.progen create mode 100644 Foundation/samples/Logger/Logger.vmsbuild create mode 100644 Foundation/samples/Logger/Logger_CE_vs90.vcproj create mode 100644 Foundation/samples/Logger/Logger_vs100.vcxproj create mode 100644 Foundation/samples/Logger/Logger_vs100.vcxproj.filters create mode 100644 Foundation/samples/Logger/Logger_vs71.vcproj create mode 100644 Foundation/samples/Logger/Logger_vs80.vcproj create mode 100644 Foundation/samples/Logger/Logger_vs90.vcproj create mode 100644 Foundation/samples/Logger/Logger_x64_vs100.vcxproj create mode 100644 Foundation/samples/Logger/Logger_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/Logger/Logger_x64_vs90.vcproj create mode 100644 Foundation/samples/Logger/Makefile create mode 100644 Foundation/samples/Logger/src/Logger.cpp create mode 100644 Foundation/samples/Makefile create mode 100644 Foundation/samples/NotificationQueue/Makefile create mode 100644 Foundation/samples/NotificationQueue/NotificationQueue.progen create mode 100644 Foundation/samples/NotificationQueue/NotificationQueue.vmsbuild create mode 100644 Foundation/samples/NotificationQueue/NotificationQueue_CE_vs90.vcproj create mode 100644 Foundation/samples/NotificationQueue/NotificationQueue_vs100.vcxproj create mode 100644 Foundation/samples/NotificationQueue/NotificationQueue_vs100.vcxproj.filters create mode 100644 Foundation/samples/NotificationQueue/NotificationQueue_vs71.vcproj create mode 100644 Foundation/samples/NotificationQueue/NotificationQueue_vs80.vcproj create mode 100644 Foundation/samples/NotificationQueue/NotificationQueue_vs90.vcproj create mode 100644 Foundation/samples/NotificationQueue/NotificationQueue_x64_vs100.vcxproj create mode 100644 Foundation/samples/NotificationQueue/NotificationQueue_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/NotificationQueue/NotificationQueue_x64_vs90.vcproj create mode 100644 Foundation/samples/NotificationQueue/src/NotificationQueue.cpp create mode 100644 Foundation/samples/StringTokenizer/Makefile create mode 100644 Foundation/samples/StringTokenizer/StringTokenizer.progen create mode 100644 Foundation/samples/StringTokenizer/StringTokenizer.vmsbuild create mode 100644 Foundation/samples/StringTokenizer/StringTokenizer_CE_vs90.vcproj create mode 100644 Foundation/samples/StringTokenizer/StringTokenizer_vs100.vcxproj create mode 100644 Foundation/samples/StringTokenizer/StringTokenizer_vs100.vcxproj.filters create mode 100644 Foundation/samples/StringTokenizer/StringTokenizer_vs71.vcproj create mode 100644 Foundation/samples/StringTokenizer/StringTokenizer_vs80.vcproj create mode 100644 Foundation/samples/StringTokenizer/StringTokenizer_vs90.vcproj create mode 100644 Foundation/samples/StringTokenizer/StringTokenizer_x64_vs100.vcxproj create mode 100644 Foundation/samples/StringTokenizer/StringTokenizer_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/StringTokenizer/StringTokenizer_x64_vs90.vcproj create mode 100644 Foundation/samples/StringTokenizer/src/StringTokenizer.cpp create mode 100644 Foundation/samples/Timer/Makefile create mode 100644 Foundation/samples/Timer/Timer.progen create mode 100644 Foundation/samples/Timer/Timer.vmsbuild create mode 100644 Foundation/samples/Timer/Timer_CE_vs90.vcproj create mode 100644 Foundation/samples/Timer/Timer_vs100.vcxproj create mode 100644 Foundation/samples/Timer/Timer_vs100.vcxproj.filters create mode 100644 Foundation/samples/Timer/Timer_vs71.vcproj create mode 100644 Foundation/samples/Timer/Timer_vs80.vcproj create mode 100644 Foundation/samples/Timer/Timer_vs90.vcproj create mode 100644 Foundation/samples/Timer/Timer_x64_vs100.vcxproj create mode 100644 Foundation/samples/Timer/Timer_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/Timer/Timer_x64_vs90.vcproj create mode 100644 Foundation/samples/Timer/src/Timer.cpp create mode 100644 Foundation/samples/URI/Makefile create mode 100644 Foundation/samples/URI/URI.progen create mode 100644 Foundation/samples/URI/URI.vmsbuild create mode 100644 Foundation/samples/URI/URI_CE_vs90.vcproj create mode 100644 Foundation/samples/URI/URI_vs100.vcxproj create mode 100644 Foundation/samples/URI/URI_vs100.vcxproj.filters create mode 100644 Foundation/samples/URI/URI_vs71.vcproj create mode 100644 Foundation/samples/URI/URI_vs80.vcproj create mode 100644 Foundation/samples/URI/URI_vs90.vcproj create mode 100644 Foundation/samples/URI/URI_x64_vs100.vcxproj create mode 100644 Foundation/samples/URI/URI_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/URI/URI_x64_vs90.vcproj create mode 100644 Foundation/samples/URI/src/URI.cpp create mode 100644 Foundation/samples/base64decode/Makefile create mode 100644 Foundation/samples/base64decode/base64decode.progen create mode 100644 Foundation/samples/base64decode/base64decode.vmsbuild create mode 100644 Foundation/samples/base64decode/base64decode_CE_vs90.vcproj create mode 100644 Foundation/samples/base64decode/base64decode_vs100.vcxproj create mode 100644 Foundation/samples/base64decode/base64decode_vs100.vcxproj.filters create mode 100644 Foundation/samples/base64decode/base64decode_vs71.vcproj create mode 100644 Foundation/samples/base64decode/base64decode_vs80.vcproj create mode 100644 Foundation/samples/base64decode/base64decode_vs90.vcproj create mode 100644 Foundation/samples/base64decode/base64decode_x64_vs100.vcxproj create mode 100644 Foundation/samples/base64decode/base64decode_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/base64decode/base64decode_x64_vs90.vcproj create mode 100644 Foundation/samples/base64decode/src/base64decode.cpp create mode 100644 Foundation/samples/base64encode/Makefile create mode 100644 Foundation/samples/base64encode/base64encode.progen create mode 100644 Foundation/samples/base64encode/base64encode.vmsbuild create mode 100644 Foundation/samples/base64encode/base64encode_CE_vs90.vcproj create mode 100644 Foundation/samples/base64encode/base64encode_vs100.vcxproj create mode 100644 Foundation/samples/base64encode/base64encode_vs100.vcxproj.filters create mode 100644 Foundation/samples/base64encode/base64encode_vs71.vcproj create mode 100644 Foundation/samples/base64encode/base64encode_vs80.vcproj create mode 100644 Foundation/samples/base64encode/base64encode_vs90.vcproj create mode 100644 Foundation/samples/base64encode/base64encode_x64_vs100.vcxproj create mode 100644 Foundation/samples/base64encode/base64encode_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/base64encode/base64encode_x64_vs90.vcproj create mode 100644 Foundation/samples/base64encode/src/base64encode.cpp create mode 100644 Foundation/samples/deflate/Makefile create mode 100644 Foundation/samples/deflate/deflate.progen create mode 100644 Foundation/samples/deflate/deflate.vmsbuild create mode 100644 Foundation/samples/deflate/deflate_CE_vs90.vcproj create mode 100644 Foundation/samples/deflate/deflate_vs100.vcxproj create mode 100644 Foundation/samples/deflate/deflate_vs100.vcxproj.filters create mode 100644 Foundation/samples/deflate/deflate_vs71.vcproj create mode 100644 Foundation/samples/deflate/deflate_vs80.vcproj create mode 100644 Foundation/samples/deflate/deflate_vs90.vcproj create mode 100644 Foundation/samples/deflate/deflate_x64_vs100.vcxproj create mode 100644 Foundation/samples/deflate/deflate_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/deflate/deflate_x64_vs90.vcproj create mode 100644 Foundation/samples/deflate/src/deflate.cpp create mode 100644 Foundation/samples/dir/Makefile create mode 100644 Foundation/samples/dir/dir.progen create mode 100644 Foundation/samples/dir/dir.vmsbuild create mode 100644 Foundation/samples/dir/dir_CE_vs90.vcproj create mode 100644 Foundation/samples/dir/dir_vs100.vcxproj create mode 100644 Foundation/samples/dir/dir_vs100.vcxproj.filters create mode 100644 Foundation/samples/dir/dir_vs71.vcproj create mode 100644 Foundation/samples/dir/dir_vs80.vcproj create mode 100644 Foundation/samples/dir/dir_vs90.vcproj create mode 100644 Foundation/samples/dir/dir_x64_vs100.vcxproj create mode 100644 Foundation/samples/dir/dir_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/dir/dir_x64_vs90.vcproj create mode 100644 Foundation/samples/dir/src/dir.cpp create mode 100644 Foundation/samples/grep/Makefile create mode 100644 Foundation/samples/grep/grep.progen create mode 100644 Foundation/samples/grep/grep.vmsbuild create mode 100644 Foundation/samples/grep/grep_CE_vs90.vcproj create mode 100644 Foundation/samples/grep/grep_vs100.vcxproj create mode 100644 Foundation/samples/grep/grep_vs100.vcxproj.filters create mode 100644 Foundation/samples/grep/grep_vs71.vcproj create mode 100644 Foundation/samples/grep/grep_vs80.vcproj create mode 100644 Foundation/samples/grep/grep_vs90.vcproj create mode 100644 Foundation/samples/grep/grep_x64_vs100.vcxproj create mode 100644 Foundation/samples/grep/grep_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/grep/grep_x64_vs90.vcproj create mode 100644 Foundation/samples/grep/src/grep.cpp create mode 100644 Foundation/samples/hmacmd5/Makefile create mode 100644 Foundation/samples/hmacmd5/hmacmd5.progen create mode 100644 Foundation/samples/hmacmd5/hmacmd5.vmsbuild create mode 100644 Foundation/samples/hmacmd5/hmacmd5_CE_vs90.vcproj create mode 100644 Foundation/samples/hmacmd5/hmacmd5_vs100.vcxproj create mode 100644 Foundation/samples/hmacmd5/hmacmd5_vs100.vcxproj.filters create mode 100644 Foundation/samples/hmacmd5/hmacmd5_vs71.vcproj create mode 100644 Foundation/samples/hmacmd5/hmacmd5_vs80.vcproj create mode 100644 Foundation/samples/hmacmd5/hmacmd5_vs90.vcproj create mode 100644 Foundation/samples/hmacmd5/hmacmd5_x64_vs100.vcxproj create mode 100644 Foundation/samples/hmacmd5/hmacmd5_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/hmacmd5/hmacmd5_x64_vs90.vcproj create mode 100644 Foundation/samples/hmacmd5/src/hmacmd5.cpp create mode 100644 Foundation/samples/inflate/Makefile create mode 100644 Foundation/samples/inflate/inflate.progen create mode 100644 Foundation/samples/inflate/inflate.vmsbuild create mode 100644 Foundation/samples/inflate/inflate_CE_vs90.vcproj create mode 100644 Foundation/samples/inflate/inflate_vs100.vcxproj create mode 100644 Foundation/samples/inflate/inflate_vs100.vcxproj.filters create mode 100644 Foundation/samples/inflate/inflate_vs71.vcproj create mode 100644 Foundation/samples/inflate/inflate_vs80.vcproj create mode 100644 Foundation/samples/inflate/inflate_vs90.vcproj create mode 100644 Foundation/samples/inflate/inflate_x64_vs100.vcxproj create mode 100644 Foundation/samples/inflate/inflate_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/inflate/inflate_x64_vs90.vcproj create mode 100644 Foundation/samples/inflate/src/inflate.cpp create mode 100644 Foundation/samples/md5/Makefile create mode 100644 Foundation/samples/md5/md5.progen create mode 100644 Foundation/samples/md5/md5.vmsbuild create mode 100644 Foundation/samples/md5/md5_CE_vs90.vcproj create mode 100644 Foundation/samples/md5/md5_vs100.vcxproj create mode 100644 Foundation/samples/md5/md5_vs100.vcxproj.filters create mode 100644 Foundation/samples/md5/md5_vs71.vcproj create mode 100644 Foundation/samples/md5/md5_vs80.vcproj create mode 100644 Foundation/samples/md5/md5_vs90.vcproj create mode 100644 Foundation/samples/md5/md5_x64_vs100.vcxproj create mode 100644 Foundation/samples/md5/md5_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/md5/md5_x64_vs90.vcproj create mode 100644 Foundation/samples/md5/src/md5.cpp create mode 100644 Foundation/samples/samples.progen create mode 100644 Foundation/samples/samples_CE_vs90.sln create mode 100644 Foundation/samples/samples_vs100.sln create mode 100644 Foundation/samples/samples_vs71.sln create mode 100644 Foundation/samples/samples_vs80.sln create mode 100644 Foundation/samples/samples_vs90.sln create mode 100644 Foundation/samples/samples_x64_vs100.sln create mode 100644 Foundation/samples/samples_x64_vs90.sln create mode 100644 Foundation/samples/uuidgen/Makefile create mode 100644 Foundation/samples/uuidgen/src/uuidgen.cpp create mode 100644 Foundation/samples/uuidgen/uuidgen.progen create mode 100644 Foundation/samples/uuidgen/uuidgen.vmsbuild create mode 100644 Foundation/samples/uuidgen/uuidgen_CE_vs90.vcproj create mode 100644 Foundation/samples/uuidgen/uuidgen_vs100.vcxproj create mode 100644 Foundation/samples/uuidgen/uuidgen_vs100.vcxproj.filters create mode 100644 Foundation/samples/uuidgen/uuidgen_vs71.vcproj create mode 100644 Foundation/samples/uuidgen/uuidgen_vs80.vcproj create mode 100644 Foundation/samples/uuidgen/uuidgen_vs90.vcproj create mode 100644 Foundation/samples/uuidgen/uuidgen_x64_vs100.vcxproj create mode 100644 Foundation/samples/uuidgen/uuidgen_x64_vs100.vcxproj.filters create mode 100644 Foundation/samples/uuidgen/uuidgen_x64_vs90.vcproj create mode 100644 Foundation/src/ASCIIEncoding.cpp create mode 100644 Foundation/src/AbstractObserver.cpp create mode 100644 Foundation/src/ActiveDispatcher.cpp create mode 100644 Foundation/src/ArchiveStrategy.cpp create mode 100644 Foundation/src/Ascii.cpp create mode 100644 Foundation/src/AsyncChannel.cpp create mode 100644 Foundation/src/AtomicCounter.cpp create mode 100644 Foundation/src/Base64Decoder.cpp create mode 100644 Foundation/src/Base64Encoder.cpp create mode 100644 Foundation/src/BinaryReader.cpp create mode 100644 Foundation/src/BinaryWriter.cpp create mode 100644 Foundation/src/Bugcheck.cpp create mode 100644 Foundation/src/ByteOrder.cpp create mode 100644 Foundation/src/Channel.cpp create mode 100644 Foundation/src/Checksum.cpp create mode 100644 Foundation/src/Condition.cpp create mode 100644 Foundation/src/Configurable.cpp create mode 100644 Foundation/src/ConsoleChannel.cpp create mode 100644 Foundation/src/CountingStream.cpp create mode 100644 Foundation/src/DateTime.cpp create mode 100644 Foundation/src/DateTimeFormat.cpp create mode 100644 Foundation/src/DateTimeFormatter.cpp create mode 100644 Foundation/src/DateTimeParser.cpp create mode 100644 Foundation/src/Debugger.cpp create mode 100644 Foundation/src/DeflatingStream.cpp create mode 100644 Foundation/src/DigestEngine.cpp create mode 100644 Foundation/src/DigestStream.cpp create mode 100644 Foundation/src/DirectoryIterator.cpp create mode 100644 Foundation/src/DirectoryIterator_UNIX.cpp create mode 100644 Foundation/src/DirectoryIterator_VMS.cpp create mode 100644 Foundation/src/DirectoryIterator_WIN32.cpp create mode 100644 Foundation/src/DirectoryIterator_WIN32U.cpp create mode 100644 Foundation/src/Environment.cpp create mode 100644 Foundation/src/Environment_UNIX.cpp create mode 100644 Foundation/src/Environment_VMS.cpp create mode 100644 Foundation/src/Environment_VX.cpp create mode 100644 Foundation/src/Environment_WIN32.cpp create mode 100644 Foundation/src/Environment_WIN32U.cpp create mode 100644 Foundation/src/Environment_WINCE.cpp create mode 100644 Foundation/src/ErrorHandler.cpp create mode 100644 Foundation/src/Event.cpp create mode 100644 Foundation/src/EventArgs.cpp create mode 100644 Foundation/src/EventLogChannel.cpp create mode 100644 Foundation/src/Event_POSIX.cpp create mode 100644 Foundation/src/Event_VX.cpp create mode 100644 Foundation/src/Event_WIN32.cpp create mode 100644 Foundation/src/Exception.cpp create mode 100644 Foundation/src/FPEnvironment.cpp create mode 100644 Foundation/src/FPEnvironment_C99.cpp create mode 100644 Foundation/src/FPEnvironment_DEC.cpp create mode 100644 Foundation/src/FPEnvironment_DUMMY.cpp create mode 100644 Foundation/src/FPEnvironment_SUN.cpp create mode 100644 Foundation/src/FPEnvironment_WIN32.cpp create mode 100644 Foundation/src/File.cpp create mode 100644 Foundation/src/FileChannel.cpp create mode 100644 Foundation/src/FileStream.cpp create mode 100644 Foundation/src/FileStreamFactory.cpp create mode 100644 Foundation/src/FileStream_POSIX.cpp create mode 100644 Foundation/src/FileStream_WIN32.cpp create mode 100644 Foundation/src/File_UNIX.cpp create mode 100644 Foundation/src/File_VMS.cpp create mode 100644 Foundation/src/File_VX.cpp create mode 100644 Foundation/src/File_WIN32.cpp create mode 100644 Foundation/src/File_WIN32U.cpp create mode 100644 Foundation/src/File_WINCE.cpp create mode 100644 Foundation/src/Format.cpp create mode 100644 Foundation/src/Formatter.cpp create mode 100644 Foundation/src/FormattingChannel.cpp create mode 100644 Foundation/src/Glob.cpp create mode 100644 Foundation/src/Hash.cpp create mode 100644 Foundation/src/HashStatistic.cpp create mode 100644 Foundation/src/HexBinaryDecoder.cpp create mode 100644 Foundation/src/HexBinaryEncoder.cpp create mode 100644 Foundation/src/InflatingStream.cpp create mode 100644 Foundation/src/Latin1Encoding.cpp create mode 100644 Foundation/src/Latin2Encoding.cpp create mode 100644 Foundation/src/Latin9Encoding.cpp create mode 100644 Foundation/src/LineEndingConverter.cpp create mode 100644 Foundation/src/LocalDateTime.cpp create mode 100644 Foundation/src/LogFile.cpp create mode 100644 Foundation/src/LogFile_STD.cpp create mode 100644 Foundation/src/LogFile_VMS.cpp create mode 100644 Foundation/src/LogFile_WIN32.cpp create mode 100644 Foundation/src/LogFile_WIN32U.cpp create mode 100644 Foundation/src/LogStream.cpp create mode 100644 Foundation/src/Logger.cpp create mode 100644 Foundation/src/LoggingFactory.cpp create mode 100644 Foundation/src/LoggingRegistry.cpp create mode 100644 Foundation/src/MD4Engine.cpp create mode 100644 Foundation/src/MD5Engine.cpp create mode 100644 Foundation/src/MSG00001.bin create mode 100644 Foundation/src/Manifest.cpp create mode 100644 Foundation/src/MemoryPool.cpp create mode 100644 Foundation/src/MemoryStream.cpp create mode 100644 Foundation/src/Message.cpp create mode 100644 Foundation/src/Mutex.cpp create mode 100644 Foundation/src/Mutex_POSIX.cpp create mode 100644 Foundation/src/Mutex_VX.cpp create mode 100644 Foundation/src/Mutex_WIN32.cpp create mode 100644 Foundation/src/Mutex_WINCE.cpp create mode 100644 Foundation/src/NamedEvent.cpp create mode 100644 Foundation/src/NamedEvent_Android.cpp create mode 100644 Foundation/src/NamedEvent_UNIX.cpp create mode 100644 Foundation/src/NamedEvent_VMS.cpp create mode 100644 Foundation/src/NamedEvent_WIN32.cpp create mode 100644 Foundation/src/NamedEvent_WIN32U.cpp create mode 100644 Foundation/src/NamedMutex.cpp create mode 100644 Foundation/src/NamedMutex_Android.cpp create mode 100644 Foundation/src/NamedMutex_UNIX.cpp create mode 100644 Foundation/src/NamedMutex_VMS.cpp create mode 100644 Foundation/src/NamedMutex_WIN32.cpp create mode 100644 Foundation/src/NamedMutex_WIN32U.cpp create mode 100644 Foundation/src/NestedDiagnosticContext.cpp create mode 100644 Foundation/src/Notification.cpp create mode 100644 Foundation/src/NotificationCenter.cpp create mode 100644 Foundation/src/NotificationQueue.cpp create mode 100644 Foundation/src/NullChannel.cpp create mode 100644 Foundation/src/NullStream.cpp create mode 100644 Foundation/src/NumberFormatter.cpp create mode 100644 Foundation/src/NumberParser.cpp create mode 100644 Foundation/src/OpcomChannel.cpp create mode 100644 Foundation/src/Path.cpp create mode 100644 Foundation/src/Path_UNIX.cpp create mode 100644 Foundation/src/Path_VMS.cpp create mode 100644 Foundation/src/Path_WIN32.cpp create mode 100644 Foundation/src/Path_WIN32U.cpp create mode 100644 Foundation/src/Path_WINCE.cpp create mode 100644 Foundation/src/PatternFormatter.cpp create mode 100644 Foundation/src/Pipe.cpp create mode 100644 Foundation/src/PipeImpl.cpp create mode 100644 Foundation/src/PipeImpl_DUMMY.cpp create mode 100644 Foundation/src/PipeImpl_POSIX.cpp create mode 100644 Foundation/src/PipeImpl_WIN32.cpp create mode 100644 Foundation/src/PipeStream.cpp create mode 100644 Foundation/src/PriorityNotificationQueue.cpp create mode 100644 Foundation/src/Process.cpp create mode 100644 Foundation/src/Process_UNIX.cpp create mode 100644 Foundation/src/Process_VMS.cpp create mode 100644 Foundation/src/Process_VX.cpp create mode 100644 Foundation/src/Process_WIN32.cpp create mode 100644 Foundation/src/Process_WIN32U.cpp create mode 100644 Foundation/src/Process_WINCE.cpp create mode 100644 Foundation/src/PurgeStrategy.cpp create mode 100644 Foundation/src/RWLock.cpp create mode 100644 Foundation/src/RWLock_Android.cpp create mode 100644 Foundation/src/RWLock_POSIX.cpp create mode 100644 Foundation/src/RWLock_VX.cpp create mode 100644 Foundation/src/RWLock_WIN32.cpp create mode 100644 Foundation/src/RWLock_WINCE.cpp create mode 100644 Foundation/src/Random.cpp create mode 100644 Foundation/src/RandomStream.cpp create mode 100644 Foundation/src/RefCountedObject.cpp create mode 100644 Foundation/src/RegularExpression.cpp create mode 100644 Foundation/src/RotateStrategy.cpp create mode 100644 Foundation/src/Runnable.cpp create mode 100644 Foundation/src/SHA1Engine.cpp create mode 100644 Foundation/src/Semaphore.cpp create mode 100644 Foundation/src/Semaphore_POSIX.cpp create mode 100644 Foundation/src/Semaphore_VX.cpp create mode 100644 Foundation/src/Semaphore_WIN32.cpp create mode 100644 Foundation/src/SharedLibrary.cpp create mode 100644 Foundation/src/SharedLibrary_HPUX.cpp create mode 100644 Foundation/src/SharedLibrary_UNIX.cpp create mode 100644 Foundation/src/SharedLibrary_VMS.cpp create mode 100644 Foundation/src/SharedLibrary_VX.cpp create mode 100644 Foundation/src/SharedLibrary_WIN32.cpp create mode 100644 Foundation/src/SharedLibrary_WIN32U.cpp create mode 100644 Foundation/src/SharedMemory.cpp create mode 100644 Foundation/src/SharedMemory_DUMMY.cpp create mode 100644 Foundation/src/SharedMemory_POSIX.cpp create mode 100644 Foundation/src/SharedMemory_WIN32.cpp create mode 100644 Foundation/src/SignalHandler.cpp create mode 100644 Foundation/src/SimpleFileChannel.cpp create mode 100644 Foundation/src/SplitterChannel.cpp create mode 100644 Foundation/src/Stopwatch.cpp create mode 100644 Foundation/src/StreamChannel.cpp create mode 100644 Foundation/src/StreamConverter.cpp create mode 100644 Foundation/src/StreamCopier.cpp create mode 100644 Foundation/src/StreamTokenizer.cpp create mode 100644 Foundation/src/String.cpp create mode 100644 Foundation/src/StringTokenizer.cpp create mode 100644 Foundation/src/SynchronizedObject.cpp create mode 100644 Foundation/src/SyslogChannel.cpp create mode 100644 Foundation/src/Task.cpp create mode 100644 Foundation/src/TaskManager.cpp create mode 100644 Foundation/src/TaskNotification.cpp create mode 100644 Foundation/src/TeeStream.cpp create mode 100644 Foundation/src/TemporaryFile.cpp create mode 100644 Foundation/src/TextBufferIterator.cpp create mode 100644 Foundation/src/TextConverter.cpp create mode 100644 Foundation/src/TextEncoding.cpp create mode 100644 Foundation/src/TextIterator.cpp create mode 100644 Foundation/src/Thread.cpp create mode 100644 Foundation/src/ThreadLocal.cpp create mode 100644 Foundation/src/ThreadPool.cpp create mode 100644 Foundation/src/ThreadTarget.cpp create mode 100644 Foundation/src/Thread_POSIX.cpp create mode 100644 Foundation/src/Thread_VX.cpp create mode 100644 Foundation/src/Thread_WIN32.cpp create mode 100644 Foundation/src/Thread_WINCE.cpp create mode 100644 Foundation/src/TimedNotificationQueue.cpp create mode 100644 Foundation/src/Timer.cpp create mode 100644 Foundation/src/Timespan.cpp create mode 100644 Foundation/src/Timestamp.cpp create mode 100644 Foundation/src/Timezone.cpp create mode 100644 Foundation/src/Timezone_UNIX.cpp create mode 100644 Foundation/src/Timezone_VX.cpp create mode 100644 Foundation/src/Timezone_WIN32.cpp create mode 100644 Foundation/src/Timezone_WINCE.cpp create mode 100644 Foundation/src/Token.cpp create mode 100644 Foundation/src/URI.cpp create mode 100644 Foundation/src/URIStreamFactory.cpp create mode 100644 Foundation/src/URIStreamOpener.cpp create mode 100644 Foundation/src/UTF16Encoding.cpp create mode 100644 Foundation/src/UTF8Encoding.cpp create mode 100644 Foundation/src/UTF8String.cpp create mode 100644 Foundation/src/UUID.cpp create mode 100644 Foundation/src/UUIDGenerator.cpp create mode 100644 Foundation/src/Unicode.cpp create mode 100644 Foundation/src/UnicodeConverter.cpp create mode 100644 Foundation/src/Var.cpp create mode 100644 Foundation/src/VarHolder.cpp create mode 100644 Foundation/src/Void.cpp create mode 100644 Foundation/src/Windows1250Encoding.cpp create mode 100644 Foundation/src/Windows1251Encoding.cpp create mode 100644 Foundation/src/Windows1252Encoding.cpp create mode 100644 Foundation/src/WindowsConsoleChannel.cpp create mode 100644 Foundation/src/adler32.c create mode 100644 Foundation/src/compress.c create mode 100644 Foundation/src/crc32.c create mode 100644 Foundation/src/crc32.h create mode 100644 Foundation/src/deflate.c create mode 100644 Foundation/src/deflate.h create mode 100644 Foundation/src/infback.c create mode 100644 Foundation/src/inffast.c create mode 100644 Foundation/src/inffast.h create mode 100644 Foundation/src/inffixed.h create mode 100644 Foundation/src/inflate.c create mode 100644 Foundation/src/inflate.h create mode 100644 Foundation/src/inftrees.c create mode 100644 Foundation/src/inftrees.h create mode 100644 Foundation/src/pcre.h create mode 100644 Foundation/src/pcre_chartables.c create mode 100644 Foundation/src/pcre_compile.c create mode 100644 Foundation/src/pcre_config.h create mode 100644 Foundation/src/pcre_exec.c create mode 100644 Foundation/src/pcre_fullinfo.c create mode 100644 Foundation/src/pcre_globals.c create mode 100644 Foundation/src/pcre_internal.h create mode 100644 Foundation/src/pcre_maketables.c create mode 100644 Foundation/src/pcre_newline.c create mode 100644 Foundation/src/pcre_ord2utf8.c create mode 100644 Foundation/src/pcre_study.c create mode 100644 Foundation/src/pcre_tables.c create mode 100644 Foundation/src/pcre_try_flipped.c create mode 100644 Foundation/src/pcre_ucd.c create mode 100644 Foundation/src/pcre_valid_utf8.c create mode 100644 Foundation/src/pcre_xclass.c create mode 100644 Foundation/src/pocomsg.mc create mode 100644 Foundation/src/trees.c create mode 100644 Foundation/src/trees.h create mode 100644 Foundation/src/ucp.h create mode 100644 Foundation/src/zconf.h create mode 100644 Foundation/src/zlib.h create mode 100644 Foundation/src/zutil.c create mode 100644 Foundation/src/zutil.h create mode 100644 Foundation/testsuite/Makefile create mode 100644 Foundation/testsuite/Makefile-Driver create mode 100644 Foundation/testsuite/Makefile-TestApp create mode 100644 Foundation/testsuite/Makefile-TestLibrary create mode 100644 Foundation/testsuite/TestApp_CE_vs90.vcproj create mode 100644 Foundation/testsuite/TestApp_vs100.vcxproj create mode 100644 Foundation/testsuite/TestApp_vs100.vcxproj.filters create mode 100644 Foundation/testsuite/TestApp_vs71.vcproj create mode 100644 Foundation/testsuite/TestApp_vs80.vcproj create mode 100644 Foundation/testsuite/TestApp_vs90.vcproj create mode 100644 Foundation/testsuite/TestApp_x64_vs100.vcxproj create mode 100644 Foundation/testsuite/TestApp_x64_vs100.vcxproj.filters create mode 100644 Foundation/testsuite/TestApp_x64_vs90.vcproj create mode 100644 Foundation/testsuite/TestLibrary_CE_vs90.vcproj create mode 100644 Foundation/testsuite/TestLibrary_vs100.vcxproj create mode 100644 Foundation/testsuite/TestLibrary_vs100.vcxproj.filters create mode 100644 Foundation/testsuite/TestLibrary_vs71.vcproj create mode 100644 Foundation/testsuite/TestLibrary_vs80.vcproj create mode 100644 Foundation/testsuite/TestLibrary_vs90.vcproj create mode 100644 Foundation/testsuite/TestLibrary_x64_vs100.vcxproj create mode 100644 Foundation/testsuite/TestLibrary_x64_vs100.vcxproj.filters create mode 100644 Foundation/testsuite/TestLibrary_x64_vs90.vcproj create mode 100644 Foundation/testsuite/TestSuite.vxbuild create mode 100644 Foundation/testsuite/TestSuite_CE_vs90.vcproj create mode 100644 Foundation/testsuite/TestSuite_vs100.vcxproj create mode 100644 Foundation/testsuite/TestSuite_vs100.vcxproj.filters create mode 100644 Foundation/testsuite/TestSuite_vs71.vcproj create mode 100644 Foundation/testsuite/TestSuite_vs80.vcproj create mode 100644 Foundation/testsuite/TestSuite_vs90.vcproj create mode 100644 Foundation/testsuite/TestSuite_x64_vs100.vcxproj create mode 100644 Foundation/testsuite/TestSuite_x64_vs100.vcxproj.filters create mode 100644 Foundation/testsuite/TestSuite_x64_vs90.vcproj create mode 100644 Foundation/testsuite/data/testdata.txt create mode 100644 Foundation/testsuite/nonexistent.txt create mode 100644 Foundation/testsuite/src/ActiveDispatcherTest.cpp create mode 100644 Foundation/testsuite/src/ActiveDispatcherTest.h create mode 100644 Foundation/testsuite/src/ActiveMethodTest.cpp create mode 100644 Foundation/testsuite/src/ActiveMethodTest.h create mode 100644 Foundation/testsuite/src/ActivityTest.cpp create mode 100644 Foundation/testsuite/src/ActivityTest.h create mode 100644 Foundation/testsuite/src/AnyTest.cpp create mode 100644 Foundation/testsuite/src/AnyTest.h create mode 100644 Foundation/testsuite/src/ArrayTest.cpp create mode 100644 Foundation/testsuite/src/ArrayTest.h create mode 100644 Foundation/testsuite/src/AutoPtrTest.cpp create mode 100644 Foundation/testsuite/src/AutoPtrTest.h create mode 100644 Foundation/testsuite/src/AutoReleasePoolTest.cpp create mode 100644 Foundation/testsuite/src/AutoReleasePoolTest.h create mode 100644 Foundation/testsuite/src/Base64Test.cpp create mode 100644 Foundation/testsuite/src/Base64Test.h create mode 100644 Foundation/testsuite/src/BasicEventTest.cpp create mode 100644 Foundation/testsuite/src/BasicEventTest.h create mode 100644 Foundation/testsuite/src/BinaryReaderWriterTest.cpp create mode 100644 Foundation/testsuite/src/BinaryReaderWriterTest.h create mode 100644 Foundation/testsuite/src/ByteOrderTest.cpp create mode 100644 Foundation/testsuite/src/ByteOrderTest.h create mode 100644 Foundation/testsuite/src/CacheTestSuite.cpp create mode 100644 Foundation/testsuite/src/CacheTestSuite.h create mode 100644 Foundation/testsuite/src/ChannelTest.cpp create mode 100644 Foundation/testsuite/src/ChannelTest.h create mode 100644 Foundation/testsuite/src/ClassLoaderTest.cpp create mode 100644 Foundation/testsuite/src/ClassLoaderTest.h create mode 100644 Foundation/testsuite/src/ConditionTest.cpp create mode 100644 Foundation/testsuite/src/ConditionTest.h create mode 100644 Foundation/testsuite/src/CoreTest.cpp create mode 100644 Foundation/testsuite/src/CoreTest.h create mode 100644 Foundation/testsuite/src/CoreTestSuite.cpp create mode 100644 Foundation/testsuite/src/CoreTestSuite.h create mode 100644 Foundation/testsuite/src/CountingStreamTest.cpp create mode 100644 Foundation/testsuite/src/CountingStreamTest.h create mode 100644 Foundation/testsuite/src/CryptTestSuite.cpp create mode 100644 Foundation/testsuite/src/CryptTestSuite.h create mode 100644 Foundation/testsuite/src/DateTimeFormatterTest.cpp create mode 100644 Foundation/testsuite/src/DateTimeFormatterTest.h create mode 100644 Foundation/testsuite/src/DateTimeParserTest.cpp create mode 100644 Foundation/testsuite/src/DateTimeParserTest.h create mode 100644 Foundation/testsuite/src/DateTimeTest.cpp create mode 100644 Foundation/testsuite/src/DateTimeTest.h create mode 100644 Foundation/testsuite/src/DateTimeTestSuite.cpp create mode 100644 Foundation/testsuite/src/DateTimeTestSuite.h create mode 100644 Foundation/testsuite/src/DigestStreamTest.cpp create mode 100644 Foundation/testsuite/src/DigestStreamTest.h create mode 100644 Foundation/testsuite/src/Driver.cpp create mode 100644 Foundation/testsuite/src/DummyDelegate.cpp create mode 100644 Foundation/testsuite/src/DummyDelegate.h create mode 100644 Foundation/testsuite/src/DynamicAnyTest.h create mode 100644 Foundation/testsuite/src/DynamicFactoryTest.cpp create mode 100644 Foundation/testsuite/src/DynamicFactoryTest.h create mode 100644 Foundation/testsuite/src/DynamicTestSuite.cpp create mode 100644 Foundation/testsuite/src/DynamicTestSuite.h create mode 100644 Foundation/testsuite/src/EventTestSuite.cpp create mode 100644 Foundation/testsuite/src/EventTestSuite.h create mode 100644 Foundation/testsuite/src/ExpireCacheTest.cpp create mode 100644 Foundation/testsuite/src/ExpireCacheTest.h create mode 100644 Foundation/testsuite/src/ExpireLRUCacheTest.cpp create mode 100644 Foundation/testsuite/src/ExpireLRUCacheTest.h create mode 100644 Foundation/testsuite/src/FIFOEventTest.cpp create mode 100644 Foundation/testsuite/src/FIFOEventTest.h create mode 100644 Foundation/testsuite/src/FPETest.cpp create mode 100644 Foundation/testsuite/src/FPETest.h create mode 100644 Foundation/testsuite/src/FileChannelTest.cpp create mode 100644 Foundation/testsuite/src/FileChannelTest.h create mode 100644 Foundation/testsuite/src/FileStreamTest.cpp create mode 100644 Foundation/testsuite/src/FileStreamTest.h create mode 100644 Foundation/testsuite/src/FileTest.cpp create mode 100644 Foundation/testsuite/src/FileTest.h create mode 100644 Foundation/testsuite/src/FilesystemTestSuite.cpp create mode 100644 Foundation/testsuite/src/FilesystemTestSuite.h create mode 100644 Foundation/testsuite/src/FormatTest.cpp create mode 100644 Foundation/testsuite/src/FormatTest.h create mode 100644 Foundation/testsuite/src/FoundationTestSuite.cpp create mode 100644 Foundation/testsuite/src/FoundationTestSuite.h create mode 100644 Foundation/testsuite/src/GlobTest.cpp create mode 100644 Foundation/testsuite/src/GlobTest.h create mode 100644 Foundation/testsuite/src/HMACEngineTest.cpp create mode 100644 Foundation/testsuite/src/HMACEngineTest.h create mode 100644 Foundation/testsuite/src/HashMapTest.cpp create mode 100644 Foundation/testsuite/src/HashMapTest.h create mode 100644 Foundation/testsuite/src/HashSetTest.cpp create mode 100644 Foundation/testsuite/src/HashSetTest.h create mode 100644 Foundation/testsuite/src/HashTableTest.cpp create mode 100644 Foundation/testsuite/src/HashTableTest.h create mode 100644 Foundation/testsuite/src/HashingTestSuite.cpp create mode 100644 Foundation/testsuite/src/HashingTestSuite.h create mode 100644 Foundation/testsuite/src/HexBinaryTest.cpp create mode 100644 Foundation/testsuite/src/HexBinaryTest.h create mode 100644 Foundation/testsuite/src/LRUCacheTest.cpp create mode 100644 Foundation/testsuite/src/LRUCacheTest.h create mode 100644 Foundation/testsuite/src/LineEndingConverterTest.cpp create mode 100644 Foundation/testsuite/src/LineEndingConverterTest.h create mode 100644 Foundation/testsuite/src/LinearHashTableTest.cpp create mode 100644 Foundation/testsuite/src/LinearHashTableTest.h create mode 100644 Foundation/testsuite/src/LocalDateTimeTest.cpp create mode 100644 Foundation/testsuite/src/LocalDateTimeTest.h create mode 100644 Foundation/testsuite/src/LogStreamTest.cpp create mode 100644 Foundation/testsuite/src/LogStreamTest.h create mode 100644 Foundation/testsuite/src/LoggerTest.cpp create mode 100644 Foundation/testsuite/src/LoggerTest.h create mode 100644 Foundation/testsuite/src/LoggingFactoryTest.cpp create mode 100644 Foundation/testsuite/src/LoggingFactoryTest.h create mode 100644 Foundation/testsuite/src/LoggingRegistryTest.cpp create mode 100644 Foundation/testsuite/src/LoggingRegistryTest.h create mode 100644 Foundation/testsuite/src/LoggingTestSuite.cpp create mode 100644 Foundation/testsuite/src/LoggingTestSuite.h create mode 100644 Foundation/testsuite/src/MD2EngineTest.cpp create mode 100644 Foundation/testsuite/src/MD2EngineTest.h create mode 100644 Foundation/testsuite/src/MD4EngineTest.cpp create mode 100644 Foundation/testsuite/src/MD4EngineTest.h create mode 100644 Foundation/testsuite/src/MD5EngineTest.cpp create mode 100644 Foundation/testsuite/src/MD5EngineTest.h create mode 100644 Foundation/testsuite/src/ManifestTest.cpp create mode 100644 Foundation/testsuite/src/ManifestTest.h create mode 100644 Foundation/testsuite/src/MemoryPoolTest.cpp create mode 100644 Foundation/testsuite/src/MemoryPoolTest.h create mode 100644 Foundation/testsuite/src/MemoryStreamTest.cpp create mode 100644 Foundation/testsuite/src/MemoryStreamTest.h create mode 100644 Foundation/testsuite/src/NDCTest.cpp create mode 100644 Foundation/testsuite/src/NDCTest.h create mode 100644 Foundation/testsuite/src/NamedEventTest.cpp create mode 100644 Foundation/testsuite/src/NamedEventTest.h create mode 100644 Foundation/testsuite/src/NamedMutexTest.cpp create mode 100644 Foundation/testsuite/src/NamedMutexTest.h create mode 100644 Foundation/testsuite/src/NamedTuplesTest.cpp create mode 100644 Foundation/testsuite/src/NamedTuplesTest.h create mode 100644 Foundation/testsuite/src/NotificationCenterTest.cpp create mode 100644 Foundation/testsuite/src/NotificationCenterTest.h create mode 100644 Foundation/testsuite/src/NotificationQueueTest.cpp create mode 100644 Foundation/testsuite/src/NotificationQueueTest.h create mode 100644 Foundation/testsuite/src/NotificationsTestSuite.cpp create mode 100644 Foundation/testsuite/src/NotificationsTestSuite.h create mode 100644 Foundation/testsuite/src/NullStreamTest.cpp create mode 100644 Foundation/testsuite/src/NullStreamTest.h create mode 100644 Foundation/testsuite/src/NumberFormatterTest.cpp create mode 100644 Foundation/testsuite/src/NumberFormatterTest.h create mode 100644 Foundation/testsuite/src/NumberParserTest.cpp create mode 100644 Foundation/testsuite/src/NumberParserTest.h create mode 100644 Foundation/testsuite/src/PathTest.cpp create mode 100644 Foundation/testsuite/src/PathTest.h create mode 100644 Foundation/testsuite/src/PatternFormatterTest.cpp create mode 100644 Foundation/testsuite/src/PatternFormatterTest.h create mode 100644 Foundation/testsuite/src/PriorityEventTest.cpp create mode 100644 Foundation/testsuite/src/PriorityEventTest.h create mode 100644 Foundation/testsuite/src/PriorityNotificationQueueTest.cpp create mode 100644 Foundation/testsuite/src/PriorityNotificationQueueTest.h create mode 100644 Foundation/testsuite/src/ProcessTest.cpp create mode 100644 Foundation/testsuite/src/ProcessTest.h create mode 100644 Foundation/testsuite/src/ProcessesTestSuite.cpp create mode 100644 Foundation/testsuite/src/ProcessesTestSuite.h create mode 100644 Foundation/testsuite/src/RWLockTest.cpp create mode 100644 Foundation/testsuite/src/RWLockTest.h create mode 100644 Foundation/testsuite/src/RandomStreamTest.cpp create mode 100644 Foundation/testsuite/src/RandomStreamTest.h create mode 100644 Foundation/testsuite/src/RandomTest.cpp create mode 100644 Foundation/testsuite/src/RandomTest.h create mode 100644 Foundation/testsuite/src/RegularExpressionTest.cpp create mode 100644 Foundation/testsuite/src/RegularExpressionTest.h create mode 100644 Foundation/testsuite/src/SHA1EngineTest.cpp create mode 100644 Foundation/testsuite/src/SHA1EngineTest.h create mode 100644 Foundation/testsuite/src/SemaphoreTest.cpp create mode 100644 Foundation/testsuite/src/SemaphoreTest.h create mode 100644 Foundation/testsuite/src/SharedLibraryTest.cpp create mode 100644 Foundation/testsuite/src/SharedLibraryTest.h create mode 100644 Foundation/testsuite/src/SharedLibraryTestSuite.cpp create mode 100644 Foundation/testsuite/src/SharedLibraryTestSuite.h create mode 100644 Foundation/testsuite/src/SharedMemoryTest.cpp create mode 100644 Foundation/testsuite/src/SharedMemoryTest.h create mode 100644 Foundation/testsuite/src/SharedPtrTest.cpp create mode 100644 Foundation/testsuite/src/SharedPtrTest.h create mode 100644 Foundation/testsuite/src/SimpleFileChannelTest.cpp create mode 100644 Foundation/testsuite/src/SimpleFileChannelTest.h create mode 100644 Foundation/testsuite/src/SimpleHashTableTest.cpp create mode 100644 Foundation/testsuite/src/SimpleHashTableTest.h create mode 100644 Foundation/testsuite/src/StopwatchTest.cpp create mode 100644 Foundation/testsuite/src/StopwatchTest.h create mode 100644 Foundation/testsuite/src/StreamConverterTest.cpp create mode 100644 Foundation/testsuite/src/StreamConverterTest.h create mode 100644 Foundation/testsuite/src/StreamCopierTest.cpp create mode 100644 Foundation/testsuite/src/StreamCopierTest.h create mode 100644 Foundation/testsuite/src/StreamTokenizerTest.cpp create mode 100644 Foundation/testsuite/src/StreamTokenizerTest.h create mode 100644 Foundation/testsuite/src/StreamsTestSuite.cpp create mode 100644 Foundation/testsuite/src/StreamsTestSuite.h create mode 100644 Foundation/testsuite/src/StringTest.cpp create mode 100644 Foundation/testsuite/src/StringTest.h create mode 100644 Foundation/testsuite/src/StringTokenizerTest.cpp create mode 100644 Foundation/testsuite/src/StringTokenizerTest.h create mode 100644 Foundation/testsuite/src/TaskManagerTest.cpp create mode 100644 Foundation/testsuite/src/TaskManagerTest.h create mode 100644 Foundation/testsuite/src/TaskTest.cpp create mode 100644 Foundation/testsuite/src/TaskTest.h create mode 100644 Foundation/testsuite/src/TaskTestSuite.cpp create mode 100644 Foundation/testsuite/src/TaskTestSuite.h create mode 100644 Foundation/testsuite/src/TeeStreamTest.cpp create mode 100644 Foundation/testsuite/src/TeeStreamTest.h create mode 100644 Foundation/testsuite/src/TestApp.cpp create mode 100644 Foundation/testsuite/src/TestApp_WINCE.cpp create mode 100644 Foundation/testsuite/src/TestChannel.cpp create mode 100644 Foundation/testsuite/src/TestChannel.h create mode 100644 Foundation/testsuite/src/TestLibrary.cpp create mode 100644 Foundation/testsuite/src/TestPlugin.cpp create mode 100644 Foundation/testsuite/src/TestPlugin.h create mode 100644 Foundation/testsuite/src/TextBufferIteratorTest.cpp create mode 100644 Foundation/testsuite/src/TextBufferIteratorTest.h create mode 100644 Foundation/testsuite/src/TextConverterTest.cpp create mode 100644 Foundation/testsuite/src/TextConverterTest.h create mode 100644 Foundation/testsuite/src/TextEncodingTest.cpp create mode 100644 Foundation/testsuite/src/TextEncodingTest.h create mode 100644 Foundation/testsuite/src/TextIteratorTest.cpp create mode 100644 Foundation/testsuite/src/TextIteratorTest.h create mode 100644 Foundation/testsuite/src/TextTestSuite.cpp create mode 100644 Foundation/testsuite/src/TextTestSuite.h create mode 100644 Foundation/testsuite/src/ThreadLocalTest.cpp create mode 100644 Foundation/testsuite/src/ThreadLocalTest.h create mode 100644 Foundation/testsuite/src/ThreadPoolTest.cpp create mode 100644 Foundation/testsuite/src/ThreadPoolTest.h create mode 100644 Foundation/testsuite/src/ThreadTest.cpp create mode 100644 Foundation/testsuite/src/ThreadTest.h create mode 100644 Foundation/testsuite/src/ThreadingTestSuite.cpp create mode 100644 Foundation/testsuite/src/ThreadingTestSuite.h create mode 100644 Foundation/testsuite/src/TimedNotificationQueueTest.cpp create mode 100644 Foundation/testsuite/src/TimedNotificationQueueTest.h create mode 100644 Foundation/testsuite/src/TimerTest.cpp create mode 100644 Foundation/testsuite/src/TimerTest.h create mode 100644 Foundation/testsuite/src/TimespanTest.cpp create mode 100644 Foundation/testsuite/src/TimespanTest.h create mode 100644 Foundation/testsuite/src/TimestampTest.cpp create mode 100644 Foundation/testsuite/src/TimestampTest.h create mode 100644 Foundation/testsuite/src/TimezoneTest.cpp create mode 100644 Foundation/testsuite/src/TimezoneTest.h create mode 100644 Foundation/testsuite/src/TuplesTest.cpp create mode 100644 Foundation/testsuite/src/TuplesTest.h create mode 100644 Foundation/testsuite/src/TypeListTest.cpp create mode 100644 Foundation/testsuite/src/TypeListTest.h create mode 100644 Foundation/testsuite/src/URIStreamOpenerTest.cpp create mode 100644 Foundation/testsuite/src/URIStreamOpenerTest.h create mode 100644 Foundation/testsuite/src/URITest.cpp create mode 100644 Foundation/testsuite/src/URITest.h create mode 100644 Foundation/testsuite/src/URITestSuite.cpp create mode 100644 Foundation/testsuite/src/URITestSuite.h create mode 100644 Foundation/testsuite/src/UTF8StringTest.cpp create mode 100644 Foundation/testsuite/src/UTF8StringTest.h create mode 100644 Foundation/testsuite/src/UUIDGeneratorTest.cpp create mode 100644 Foundation/testsuite/src/UUIDGeneratorTest.h create mode 100644 Foundation/testsuite/src/UUIDTest.cpp create mode 100644 Foundation/testsuite/src/UUIDTest.h create mode 100644 Foundation/testsuite/src/UUIDTestSuite.cpp create mode 100644 Foundation/testsuite/src/UUIDTestSuite.h create mode 100644 Foundation/testsuite/src/UnicodeConverterTest.cpp create mode 100644 Foundation/testsuite/src/UnicodeConverterTest.h create mode 100644 Foundation/testsuite/src/UniqueExpireCacheTest.cpp create mode 100644 Foundation/testsuite/src/UniqueExpireCacheTest.h create mode 100644 Foundation/testsuite/src/UniqueExpireLRUCacheTest.cpp create mode 100644 Foundation/testsuite/src/UniqueExpireLRUCacheTest.h create mode 100644 Foundation/testsuite/src/VarTest.cpp create mode 100644 Foundation/testsuite/src/VarTest.h create mode 100644 Foundation/testsuite/src/WinCEDriver.cpp create mode 100644 Foundation/testsuite/src/WinDriver.cpp create mode 100644 Foundation/testsuite/src/ZLibTest.cpp create mode 100644 Foundation/testsuite/src/ZLibTest.h create mode 100644 Foundation/testsuite/test.txt create mode 100644 Foundation/testsuite/testapp.vmsbuild create mode 100644 Foundation/testsuite/testlibrary.opt create mode 100644 Foundation/testsuite/testlibrary.vmsbuild create mode 100644 Foundation/testsuite/testsuite.vmsbuild create mode 100644 Foundation/wcelibcex-1.0/AUTHORS.txt create mode 100644 Foundation/wcelibcex-1.0/BUILD.txt create mode 100644 Foundation/wcelibcex-1.0/COPYING.txt create mode 100644 Foundation/wcelibcex-1.0/LICENSE.txt create mode 100644 Foundation/wcelibcex-1.0/README.txt create mode 100644 Foundation/wcelibcex-1.0/msvc80/wcelibcex.vsprops create mode 100644 Foundation/wcelibcex-1.0/msvc80/wcelibcex_lib.sln create mode 100644 Foundation/wcelibcex-1.0/msvc80/wcelibcex_lib.vcproj create mode 100644 Foundation/wcelibcex-1.0/src/errno.h create mode 100644 Foundation/wcelibcex-1.0/src/fcntl.h create mode 100644 Foundation/wcelibcex-1.0/src/wce_abort.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_access.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_asctime.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_bsearch.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_clock.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_ctime.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_direct.h create mode 100644 Foundation/wcelibcex-1.0/src/wce_directorymanagement.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_errno.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_errno.h create mode 100644 Foundation/wcelibcex-1.0/src/wce_fcntl.h create mode 100644 Foundation/wcelibcex-1.0/src/wce_findfile.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_getenv.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_getopt.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_gettimeofday.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_io.h create mode 100644 Foundation/wcelibcex-1.0/src/wce_lfind.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_localtime.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_mkdir.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_mktime.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_path.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_rename.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_rewind.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_rmdir.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_setlocale.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_stat.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_stat.h create mode 100644 Foundation/wcelibcex-1.0/src/wce_stdio.h create mode 100644 Foundation/wcelibcex-1.0/src/wce_stdlib.h create mode 100644 Foundation/wcelibcex-1.0/src/wce_strerror.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_string.h create mode 100644 Foundation/wcelibcex-1.0/src/wce_time.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_time.h create mode 100644 Foundation/wcelibcex-1.0/src/wce_timesys.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_timesys.h create mode 100644 Foundation/wcelibcex-1.0/src/wce_types.h create mode 100644 Foundation/wcelibcex-1.0/src/wce_unistd.h create mode 100644 Foundation/wcelibcex-1.0/src/wce_unlink.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_winbase.c create mode 100644 Foundation/wcelibcex-1.0/src/wce_winbase.h create mode 100644 LICENSE create mode 100644 MANIFEST create mode 100644 Makefile create mode 100644 NEWS create mode 100644 Net/Makefile create mode 100644 Net/Net.progen create mode 100644 Net/Net.vmsbuild create mode 100644 Net/Net.vxbuild create mode 100644 Net/Net_CE_vs90.sln create mode 100644 Net/Net_CE_vs90.vcproj create mode 100644 Net/Net_vs100.sln create mode 100644 Net/Net_vs100.vcxproj create mode 100644 Net/Net_vs100.vcxproj.filters create mode 100644 Net/Net_vs71.sln create mode 100644 Net/Net_vs71.vcproj create mode 100644 Net/Net_vs80.sln create mode 100644 Net/Net_vs80.vcproj create mode 100644 Net/Net_vs90.sln create mode 100644 Net/Net_vs90.vcproj create mode 100644 Net/Net_x64_vs100.sln create mode 100644 Net/Net_x64_vs100.vcxproj create mode 100644 Net/Net_x64_vs100.vcxproj.filters create mode 100644 Net/Net_x64_vs90.sln create mode 100644 Net/Net_x64_vs90.vcproj create mode 100644 Net/dependencies create mode 100644 Net/include/Poco/Net/AbstractHTTPRequestHandler.h create mode 100644 Net/include/Poco/Net/DNS.h create mode 100644 Net/include/Poco/Net/DatagramSocket.h create mode 100644 Net/include/Poco/Net/DatagramSocketImpl.h create mode 100644 Net/include/Poco/Net/DialogSocket.h create mode 100644 Net/include/Poco/Net/FTPClientSession.h create mode 100644 Net/include/Poco/Net/FTPStreamFactory.h create mode 100644 Net/include/Poco/Net/FilePartSource.h create mode 100644 Net/include/Poco/Net/HTMLForm.h create mode 100644 Net/include/Poco/Net/HTTPAuthenticationParams.h create mode 100644 Net/include/Poco/Net/HTTPBasicCredentials.h create mode 100644 Net/include/Poco/Net/HTTPBasicStreamBuf.h create mode 100644 Net/include/Poco/Net/HTTPBufferAllocator.h create mode 100644 Net/include/Poco/Net/HTTPChunkedStream.h create mode 100644 Net/include/Poco/Net/HTTPClientSession.h create mode 100644 Net/include/Poco/Net/HTTPCookie.h create mode 100644 Net/include/Poco/Net/HTTPCredentials.h create mode 100644 Net/include/Poco/Net/HTTPDigestCredentials.h create mode 100644 Net/include/Poco/Net/HTTPFixedLengthStream.h create mode 100644 Net/include/Poco/Net/HTTPHeaderStream.h create mode 100644 Net/include/Poco/Net/HTTPIOStream.h create mode 100644 Net/include/Poco/Net/HTTPMessage.h create mode 100644 Net/include/Poco/Net/HTTPRequest.h create mode 100644 Net/include/Poco/Net/HTTPRequestHandler.h create mode 100644 Net/include/Poco/Net/HTTPRequestHandlerFactory.h create mode 100644 Net/include/Poco/Net/HTTPResponse.h create mode 100644 Net/include/Poco/Net/HTTPServer.h create mode 100644 Net/include/Poco/Net/HTTPServerConnection.h create mode 100644 Net/include/Poco/Net/HTTPServerConnectionFactory.h create mode 100644 Net/include/Poco/Net/HTTPServerParams.h create mode 100644 Net/include/Poco/Net/HTTPServerRequest.h create mode 100644 Net/include/Poco/Net/HTTPServerRequestImpl.h create mode 100644 Net/include/Poco/Net/HTTPServerResponse.h create mode 100644 Net/include/Poco/Net/HTTPServerResponseImpl.h create mode 100644 Net/include/Poco/Net/HTTPServerSession.h create mode 100644 Net/include/Poco/Net/HTTPSession.h create mode 100644 Net/include/Poco/Net/HTTPSessionFactory.h create mode 100644 Net/include/Poco/Net/HTTPSessionInstantiator.h create mode 100644 Net/include/Poco/Net/HTTPStream.h create mode 100644 Net/include/Poco/Net/HTTPStreamFactory.h create mode 100644 Net/include/Poco/Net/HostEntry.h create mode 100644 Net/include/Poco/Net/ICMPClient.h create mode 100644 Net/include/Poco/Net/ICMPEventArgs.h create mode 100644 Net/include/Poco/Net/ICMPPacket.h create mode 100644 Net/include/Poco/Net/ICMPPacketImpl.h create mode 100644 Net/include/Poco/Net/ICMPSocket.h create mode 100644 Net/include/Poco/Net/ICMPSocketImpl.h create mode 100644 Net/include/Poco/Net/ICMPv4PacketImpl.h create mode 100644 Net/include/Poco/Net/IPAddress.h create mode 100644 Net/include/Poco/Net/MailMessage.h create mode 100644 Net/include/Poco/Net/MailRecipient.h create mode 100644 Net/include/Poco/Net/MailStream.h create mode 100644 Net/include/Poco/Net/MediaType.h create mode 100644 Net/include/Poco/Net/MessageHeader.h create mode 100644 Net/include/Poco/Net/MulticastSocket.h create mode 100644 Net/include/Poco/Net/MultipartReader.h create mode 100644 Net/include/Poco/Net/MultipartWriter.h create mode 100644 Net/include/Poco/Net/NameValueCollection.h create mode 100644 Net/include/Poco/Net/Net.h create mode 100644 Net/include/Poco/Net/NetException.h create mode 100644 Net/include/Poco/Net/NetworkInterface.h create mode 100644 Net/include/Poco/Net/NullPartHandler.h create mode 100644 Net/include/Poco/Net/POP3ClientSession.h create mode 100644 Net/include/Poco/Net/PartHandler.h create mode 100644 Net/include/Poco/Net/PartSource.h create mode 100644 Net/include/Poco/Net/QuotedPrintableDecoder.h create mode 100644 Net/include/Poco/Net/QuotedPrintableEncoder.h create mode 100644 Net/include/Poco/Net/RawSocket.h create mode 100644 Net/include/Poco/Net/RawSocketImpl.h create mode 100644 Net/include/Poco/Net/RemoteSyslogChannel.h create mode 100644 Net/include/Poco/Net/RemoteSyslogListener.h create mode 100644 Net/include/Poco/Net/SMTPClientSession.h create mode 100644 Net/include/Poco/Net/ServerSocket.h create mode 100644 Net/include/Poco/Net/ServerSocketImpl.h create mode 100644 Net/include/Poco/Net/Socket.h create mode 100644 Net/include/Poco/Net/SocketAcceptor.h create mode 100644 Net/include/Poco/Net/SocketAddress.h create mode 100644 Net/include/Poco/Net/SocketConnector.h create mode 100644 Net/include/Poco/Net/SocketDefs.h create mode 100644 Net/include/Poco/Net/SocketImpl.h create mode 100644 Net/include/Poco/Net/SocketNotification.h create mode 100644 Net/include/Poco/Net/SocketNotifier.h create mode 100644 Net/include/Poco/Net/SocketReactor.h create mode 100644 Net/include/Poco/Net/SocketStream.h create mode 100644 Net/include/Poco/Net/StreamSocket.h create mode 100644 Net/include/Poco/Net/StreamSocketImpl.h create mode 100644 Net/include/Poco/Net/StringPartSource.h create mode 100644 Net/include/Poco/Net/TCPServer.h create mode 100644 Net/include/Poco/Net/TCPServerConnection.h create mode 100644 Net/include/Poco/Net/TCPServerConnectionFactory.h create mode 100644 Net/include/Poco/Net/TCPServerDispatcher.h create mode 100644 Net/include/Poco/Net/TCPServerParams.h create mode 100644 Net/include/Poco/Net/WebSocket.h create mode 100644 Net/include/Poco/Net/WebSocketImpl.h create mode 100644 Net/samples/EchoServer/EchoServer.progen create mode 100644 Net/samples/EchoServer/EchoServer.properties create mode 100644 Net/samples/EchoServer/EchoServer.vmsbuild create mode 100644 Net/samples/EchoServer/EchoServer_CE_vs90.vcproj create mode 100644 Net/samples/EchoServer/EchoServer_vs100.vcxproj create mode 100644 Net/samples/EchoServer/EchoServer_vs100.vcxproj.filters create mode 100644 Net/samples/EchoServer/EchoServer_vs71.vcproj create mode 100644 Net/samples/EchoServer/EchoServer_vs80.vcproj create mode 100644 Net/samples/EchoServer/EchoServer_vs90.vcproj create mode 100644 Net/samples/EchoServer/EchoServer_x64_vs100.vcxproj create mode 100644 Net/samples/EchoServer/EchoServer_x64_vs100.vcxproj.filters create mode 100644 Net/samples/EchoServer/EchoServer_x64_vs90.vcproj create mode 100644 Net/samples/EchoServer/Makefile create mode 100644 Net/samples/EchoServer/src/EchoServer.cpp create mode 100644 Net/samples/HTTPFormServer/HTTPFormServer.progen create mode 100644 Net/samples/HTTPFormServer/HTTPFormServer.properties create mode 100644 Net/samples/HTTPFormServer/HTTPFormServer.vmsbuild create mode 100644 Net/samples/HTTPFormServer/HTTPFormServer_CE_vs90.vcproj create mode 100644 Net/samples/HTTPFormServer/HTTPFormServer_vs100.vcxproj create mode 100644 Net/samples/HTTPFormServer/HTTPFormServer_vs100.vcxproj.filters create mode 100644 Net/samples/HTTPFormServer/HTTPFormServer_vs71.vcproj create mode 100644 Net/samples/HTTPFormServer/HTTPFormServer_vs80.vcproj create mode 100644 Net/samples/HTTPFormServer/HTTPFormServer_vs90.vcproj create mode 100644 Net/samples/HTTPFormServer/HTTPFormServer_x64_vs100.vcxproj create mode 100644 Net/samples/HTTPFormServer/HTTPFormServer_x64_vs100.vcxproj.filters create mode 100644 Net/samples/HTTPFormServer/HTTPFormServer_x64_vs90.vcproj create mode 100644 Net/samples/HTTPFormServer/Makefile create mode 100644 Net/samples/HTTPFormServer/src/HTTPFormServer.cpp create mode 100644 Net/samples/HTTPLoadTest/HTTPLoadTest.progen create mode 100644 Net/samples/HTTPLoadTest/HTTPLoadTest.vmsbuild create mode 100644 Net/samples/HTTPLoadTest/HTTPLoadTest_CE_vs90.vcproj create mode 100644 Net/samples/HTTPLoadTest/HTTPLoadTest_vs100.vcxproj create mode 100644 Net/samples/HTTPLoadTest/HTTPLoadTest_vs100.vcxproj.filters create mode 100644 Net/samples/HTTPLoadTest/HTTPLoadTest_vs71.vcproj create mode 100644 Net/samples/HTTPLoadTest/HTTPLoadTest_vs80.vcproj create mode 100644 Net/samples/HTTPLoadTest/HTTPLoadTest_vs90.vcproj create mode 100644 Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs100.vcxproj create mode 100644 Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs100.vcxproj.filters create mode 100644 Net/samples/HTTPLoadTest/HTTPLoadTest_x64_vs90.vcproj create mode 100644 Net/samples/HTTPLoadTest/Makefile create mode 100644 Net/samples/HTTPLoadTest/src/HTTPLoadTest.cpp create mode 100644 Net/samples/HTTPTimeServer/HTTPTimeServer.progen create mode 100644 Net/samples/HTTPTimeServer/HTTPTimeServer.properties create mode 100644 Net/samples/HTTPTimeServer/HTTPTimeServer.vmsbuild create mode 100644 Net/samples/HTTPTimeServer/HTTPTimeServer_CE_vs90.vcproj create mode 100644 Net/samples/HTTPTimeServer/HTTPTimeServer_vs100.vcxproj create mode 100644 Net/samples/HTTPTimeServer/HTTPTimeServer_vs100.vcxproj.filters create mode 100644 Net/samples/HTTPTimeServer/HTTPTimeServer_vs71.vcproj create mode 100644 Net/samples/HTTPTimeServer/HTTPTimeServer_vs80.vcproj create mode 100644 Net/samples/HTTPTimeServer/HTTPTimeServer_vs90.vcproj create mode 100644 Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs100.vcxproj create mode 100644 Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs100.vcxproj.filters create mode 100644 Net/samples/HTTPTimeServer/HTTPTimeServer_x64_vs90.vcproj create mode 100644 Net/samples/HTTPTimeServer/Makefile create mode 100644 Net/samples/HTTPTimeServer/src/HTTPTimeServer.cpp create mode 100644 Net/samples/Mail/Mail.progen create mode 100644 Net/samples/Mail/Mail.vmsbuild create mode 100644 Net/samples/Mail/Mail_CE_vs90.vcproj create mode 100644 Net/samples/Mail/Mail_vs100.vcxproj create mode 100644 Net/samples/Mail/Mail_vs100.vcxproj.filters create mode 100644 Net/samples/Mail/Mail_vs71.vcproj create mode 100644 Net/samples/Mail/Mail_vs80.vcproj create mode 100644 Net/samples/Mail/Mail_vs90.vcproj create mode 100644 Net/samples/Mail/Mail_x64_vs100.vcxproj create mode 100644 Net/samples/Mail/Mail_x64_vs100.vcxproj.filters create mode 100644 Net/samples/Mail/Mail_x64_vs90.vcproj create mode 100644 Net/samples/Mail/Makefile create mode 100644 Net/samples/Mail/src/Mail.cpp create mode 100644 Net/samples/Mail/src/PocoLogo.hpp create mode 100644 Net/samples/Makefile create mode 100644 Net/samples/Ping/Makefile create mode 100644 Net/samples/Ping/Ping.progen create mode 100644 Net/samples/Ping/Ping.vmsbuild create mode 100644 Net/samples/Ping/Ping_CE_vs90.vcproj create mode 100644 Net/samples/Ping/Ping_vs100.vcxproj create mode 100644 Net/samples/Ping/Ping_vs100.vcxproj.filters create mode 100644 Net/samples/Ping/Ping_vs71.vcproj create mode 100644 Net/samples/Ping/Ping_vs80.vcproj create mode 100644 Net/samples/Ping/Ping_vs90.vcproj create mode 100644 Net/samples/Ping/Ping_x64_vs100.vcxproj create mode 100644 Net/samples/Ping/Ping_x64_vs100.vcxproj.filters create mode 100644 Net/samples/Ping/Ping_x64_vs90.vcproj create mode 100644 Net/samples/Ping/ping.properties create mode 100644 Net/samples/Ping/src/Ping.cpp create mode 100644 Net/samples/TimeServer/Makefile create mode 100644 Net/samples/TimeServer/TimeServer.progen create mode 100644 Net/samples/TimeServer/TimeServer.properties create mode 100644 Net/samples/TimeServer/TimeServer.vmsbuild create mode 100644 Net/samples/TimeServer/TimeServer_CE_vs90.vcproj create mode 100644 Net/samples/TimeServer/TimeServer_vs100.vcxproj create mode 100644 Net/samples/TimeServer/TimeServer_vs100.vcxproj.filters create mode 100644 Net/samples/TimeServer/TimeServer_vs71.vcproj create mode 100644 Net/samples/TimeServer/TimeServer_vs80.vcproj create mode 100644 Net/samples/TimeServer/TimeServer_vs90.vcproj create mode 100644 Net/samples/TimeServer/TimeServer_x64_vs100.vcxproj create mode 100644 Net/samples/TimeServer/TimeServer_x64_vs100.vcxproj.filters create mode 100644 Net/samples/TimeServer/TimeServer_x64_vs90.vcproj create mode 100644 Net/samples/TimeServer/src/TimeServer.cpp create mode 100644 Net/samples/TwitterClient/Makefile create mode 100644 Net/samples/TwitterClient/TwitterClient.progen create mode 100644 Net/samples/TwitterClient/TwitterClient_CE_vs90.vcproj create mode 100644 Net/samples/TwitterClient/TwitterClient_vs100.vcxproj create mode 100644 Net/samples/TwitterClient/TwitterClient_vs100.vcxproj.filters create mode 100644 Net/samples/TwitterClient/TwitterClient_vs71.vcproj create mode 100644 Net/samples/TwitterClient/TwitterClient_vs80.vcproj create mode 100644 Net/samples/TwitterClient/TwitterClient_vs90.vcproj create mode 100644 Net/samples/TwitterClient/TwitterClient_x64_vs100.vcxproj create mode 100644 Net/samples/TwitterClient/TwitterClient_x64_vs100.vcxproj.filters create mode 100644 Net/samples/TwitterClient/TwitterClient_x64_vs90.vcproj create mode 100644 Net/samples/TwitterClient/src/TweetApp.cpp create mode 100644 Net/samples/TwitterClient/src/Twitter.cpp create mode 100644 Net/samples/TwitterClient/src/Twitter.h create mode 100644 Net/samples/WebSocketServer/Makefile create mode 100644 Net/samples/WebSocketServer/WebSocketServer.progen create mode 100644 Net/samples/WebSocketServer/WebSocketServer_CE_vs90.vcproj create mode 100644 Net/samples/WebSocketServer/WebSocketServer_vs100.vcxproj create mode 100644 Net/samples/WebSocketServer/WebSocketServer_vs100.vcxproj.filters create mode 100644 Net/samples/WebSocketServer/WebSocketServer_vs71.vcproj create mode 100644 Net/samples/WebSocketServer/WebSocketServer_vs80.vcproj create mode 100644 Net/samples/WebSocketServer/WebSocketServer_vs90.vcproj create mode 100644 Net/samples/WebSocketServer/WebSocketServer_x64_vs100.vcxproj create mode 100644 Net/samples/WebSocketServer/WebSocketServer_x64_vs100.vcxproj.filters create mode 100644 Net/samples/WebSocketServer/WebSocketServer_x64_vs90.vcproj create mode 100644 Net/samples/WebSocketServer/src/WebSocketServer.cpp create mode 100644 Net/samples/dependencies create mode 100644 Net/samples/dict/Makefile create mode 100644 Net/samples/dict/dict.progen create mode 100644 Net/samples/dict/dict.vmsbuild create mode 100644 Net/samples/dict/dict_CE_vs90.vcproj create mode 100644 Net/samples/dict/dict_vs100.vcxproj create mode 100644 Net/samples/dict/dict_vs100.vcxproj.filters create mode 100644 Net/samples/dict/dict_vs71.vcproj create mode 100644 Net/samples/dict/dict_vs80.vcproj create mode 100644 Net/samples/dict/dict_vs90.vcproj create mode 100644 Net/samples/dict/dict_x64_vs100.vcxproj create mode 100644 Net/samples/dict/dict_x64_vs100.vcxproj.filters create mode 100644 Net/samples/dict/dict_x64_vs90.vcproj create mode 100644 Net/samples/dict/src/dict.cpp create mode 100644 Net/samples/download/Makefile create mode 100644 Net/samples/download/download.progen create mode 100644 Net/samples/download/download.vmsbuild create mode 100644 Net/samples/download/download_CE_vs90.vcproj create mode 100644 Net/samples/download/download_vs100.vcxproj create mode 100644 Net/samples/download/download_vs100.vcxproj.filters create mode 100644 Net/samples/download/download_vs71.vcproj create mode 100644 Net/samples/download/download_vs80.vcproj create mode 100644 Net/samples/download/download_vs90.vcproj create mode 100644 Net/samples/download/download_x64_vs100.vcxproj create mode 100644 Net/samples/download/download_x64_vs100.vcxproj.filters create mode 100644 Net/samples/download/download_x64_vs90.vcproj create mode 100644 Net/samples/download/src/download.cpp create mode 100644 Net/samples/httpget/Makefile create mode 100644 Net/samples/httpget/httpget.progen create mode 100644 Net/samples/httpget/httpget.vmsbuild create mode 100644 Net/samples/httpget/httpget_CE_vs90.vcproj create mode 100644 Net/samples/httpget/httpget_vs100.vcxproj create mode 100644 Net/samples/httpget/httpget_vs100.vcxproj.filters create mode 100644 Net/samples/httpget/httpget_vs71.vcproj create mode 100644 Net/samples/httpget/httpget_vs80.vcproj create mode 100644 Net/samples/httpget/httpget_vs90.vcproj create mode 100644 Net/samples/httpget/httpget_x64_vs100.vcxproj create mode 100644 Net/samples/httpget/httpget_x64_vs100.vcxproj.filters create mode 100644 Net/samples/httpget/httpget_x64_vs90.vcproj create mode 100644 Net/samples/httpget/src/httpget.cpp create mode 100644 Net/samples/samples.progen create mode 100644 Net/samples/samples_CE_vs90.sln create mode 100644 Net/samples/samples_vs100.sln create mode 100644 Net/samples/samples_vs71.sln create mode 100644 Net/samples/samples_vs80.sln create mode 100644 Net/samples/samples_vs90.sln create mode 100644 Net/samples/samples_x64_vs100.sln create mode 100644 Net/samples/samples_x64_vs90.sln create mode 100644 Net/src/AbstractHTTPRequestHandler.cpp create mode 100644 Net/src/DNS.cpp create mode 100644 Net/src/DatagramSocket.cpp create mode 100644 Net/src/DatagramSocketImpl.cpp create mode 100644 Net/src/DialogSocket.cpp create mode 100644 Net/src/FTPClientSession.cpp create mode 100644 Net/src/FTPStreamFactory.cpp create mode 100644 Net/src/FilePartSource.cpp create mode 100644 Net/src/HTMLForm.cpp create mode 100644 Net/src/HTTPAuthenticationParams.cpp create mode 100644 Net/src/HTTPBasicCredentials.cpp create mode 100644 Net/src/HTTPBufferAllocator.cpp create mode 100644 Net/src/HTTPChunkedStream.cpp create mode 100644 Net/src/HTTPClientSession.cpp create mode 100644 Net/src/HTTPCookie.cpp create mode 100644 Net/src/HTTPCredentials.cpp create mode 100644 Net/src/HTTPDigestCredentials.cpp create mode 100644 Net/src/HTTPFixedLengthStream.cpp create mode 100644 Net/src/HTTPHeaderStream.cpp create mode 100644 Net/src/HTTPIOStream.cpp create mode 100644 Net/src/HTTPMessage.cpp create mode 100644 Net/src/HTTPRequest.cpp create mode 100644 Net/src/HTTPRequestHandler.cpp create mode 100644 Net/src/HTTPRequestHandlerFactory.cpp create mode 100644 Net/src/HTTPResponse.cpp create mode 100644 Net/src/HTTPServer.cpp create mode 100644 Net/src/HTTPServerConnection.cpp create mode 100644 Net/src/HTTPServerConnectionFactory.cpp create mode 100644 Net/src/HTTPServerParams.cpp create mode 100644 Net/src/HTTPServerRequest.cpp create mode 100644 Net/src/HTTPServerRequestImpl.cpp create mode 100644 Net/src/HTTPServerResponse.cpp create mode 100644 Net/src/HTTPServerResponseImpl.cpp create mode 100644 Net/src/HTTPServerSession.cpp create mode 100644 Net/src/HTTPSession.cpp create mode 100644 Net/src/HTTPSessionFactory.cpp create mode 100644 Net/src/HTTPSessionInstantiator.cpp create mode 100644 Net/src/HTTPStream.cpp create mode 100644 Net/src/HTTPStreamFactory.cpp create mode 100644 Net/src/HostEntry.cpp create mode 100644 Net/src/ICMPClient.cpp create mode 100644 Net/src/ICMPEventArgs.cpp create mode 100644 Net/src/ICMPPacket.cpp create mode 100644 Net/src/ICMPPacketImpl.cpp create mode 100644 Net/src/ICMPSocket.cpp create mode 100644 Net/src/ICMPSocketImpl.cpp create mode 100644 Net/src/ICMPv4PacketImpl.cpp create mode 100644 Net/src/IPAddress.cpp create mode 100644 Net/src/MailMessage.cpp create mode 100644 Net/src/MailRecipient.cpp create mode 100644 Net/src/MailStream.cpp create mode 100644 Net/src/MediaType.cpp create mode 100644 Net/src/MessageHeader.cpp create mode 100644 Net/src/MulticastSocket.cpp create mode 100644 Net/src/MultipartReader.cpp create mode 100644 Net/src/MultipartWriter.cpp create mode 100644 Net/src/NameValueCollection.cpp create mode 100644 Net/src/NetException.cpp create mode 100644 Net/src/NetworkInterface.cpp create mode 100644 Net/src/NullPartHandler.cpp create mode 100644 Net/src/POP3ClientSession.cpp create mode 100644 Net/src/PartHandler.cpp create mode 100644 Net/src/PartSource.cpp create mode 100644 Net/src/QuotedPrintableDecoder.cpp create mode 100644 Net/src/QuotedPrintableEncoder.cpp create mode 100644 Net/src/RawSocket.cpp create mode 100644 Net/src/RawSocketImpl.cpp create mode 100644 Net/src/RemoteSyslogChannel.cpp create mode 100644 Net/src/RemoteSyslogListener.cpp create mode 100644 Net/src/SMTPClientSession.cpp create mode 100644 Net/src/ServerSocket.cpp create mode 100644 Net/src/ServerSocketImpl.cpp create mode 100644 Net/src/Socket.cpp create mode 100644 Net/src/SocketAddress.cpp create mode 100644 Net/src/SocketImpl.cpp create mode 100644 Net/src/SocketNotification.cpp create mode 100644 Net/src/SocketNotifier.cpp create mode 100644 Net/src/SocketReactor.cpp create mode 100644 Net/src/SocketStream.cpp create mode 100644 Net/src/StreamSocket.cpp create mode 100644 Net/src/StreamSocketImpl.cpp create mode 100644 Net/src/StringPartSource.cpp create mode 100644 Net/src/TCPServer.cpp create mode 100644 Net/src/TCPServerConnection.cpp create mode 100644 Net/src/TCPServerConnectionFactory.cpp create mode 100644 Net/src/TCPServerDispatcher.cpp create mode 100644 Net/src/TCPServerParams.cpp create mode 100644 Net/src/WebSocket.cpp create mode 100644 Net/src/WebSocketImpl.cpp create mode 100644 Net/testsuite/Makefile create mode 100644 Net/testsuite/TestSuite.progen create mode 100644 Net/testsuite/TestSuite.vmsbuild create mode 100644 Net/testsuite/TestSuite.vxbuild create mode 100644 Net/testsuite/TestSuite_CE_vs90.vcproj create mode 100644 Net/testsuite/TestSuite_vs100.vcxproj create mode 100644 Net/testsuite/TestSuite_vs100.vcxproj.filters create mode 100644 Net/testsuite/TestSuite_vs71.vcproj create mode 100644 Net/testsuite/TestSuite_vs80.vcproj create mode 100644 Net/testsuite/TestSuite_vs90.vcproj create mode 100644 Net/testsuite/TestSuite_x64_vs100.vcxproj create mode 100644 Net/testsuite/TestSuite_x64_vs100.vcxproj.filters create mode 100644 Net/testsuite/TestSuite_x64_vs90.vcproj create mode 100644 Net/testsuite/src/DNSTest.cpp create mode 100644 Net/testsuite/src/DNSTest.h create mode 100644 Net/testsuite/src/DatagramSocketTest.cpp create mode 100644 Net/testsuite/src/DatagramSocketTest.h create mode 100644 Net/testsuite/src/DialogServer.cpp create mode 100644 Net/testsuite/src/DialogServer.h create mode 100644 Net/testsuite/src/DialogSocketTest.cpp create mode 100644 Net/testsuite/src/DialogSocketTest.h create mode 100644 Net/testsuite/src/Driver.cpp create mode 100644 Net/testsuite/src/EchoServer.cpp create mode 100644 Net/testsuite/src/EchoServer.h create mode 100644 Net/testsuite/src/FTPClientSessionTest.cpp create mode 100644 Net/testsuite/src/FTPClientSessionTest.h create mode 100644 Net/testsuite/src/FTPClientTestSuite.cpp create mode 100644 Net/testsuite/src/FTPClientTestSuite.h create mode 100644 Net/testsuite/src/FTPStreamFactoryTest.cpp create mode 100644 Net/testsuite/src/FTPStreamFactoryTest.h create mode 100644 Net/testsuite/src/HTMLFormTest.cpp create mode 100644 Net/testsuite/src/HTMLFormTest.h create mode 100644 Net/testsuite/src/HTMLTestSuite.cpp create mode 100644 Net/testsuite/src/HTMLTestSuite.h create mode 100644 Net/testsuite/src/HTTPClientSessionTest.cpp create mode 100644 Net/testsuite/src/HTTPClientSessionTest.h create mode 100644 Net/testsuite/src/HTTPClientTestSuite.cpp create mode 100644 Net/testsuite/src/HTTPClientTestSuite.h create mode 100644 Net/testsuite/src/HTTPCookieTest.cpp create mode 100644 Net/testsuite/src/HTTPCookieTest.h create mode 100644 Net/testsuite/src/HTTPCredentialsTest.cpp create mode 100644 Net/testsuite/src/HTTPCredentialsTest.h create mode 100644 Net/testsuite/src/HTTPRequestTest.cpp create mode 100644 Net/testsuite/src/HTTPRequestTest.h create mode 100644 Net/testsuite/src/HTTPResponseTest.cpp create mode 100644 Net/testsuite/src/HTTPResponseTest.h create mode 100644 Net/testsuite/src/HTTPServerTest.cpp create mode 100644 Net/testsuite/src/HTTPServerTest.h create mode 100644 Net/testsuite/src/HTTPServerTestSuite.cpp create mode 100644 Net/testsuite/src/HTTPServerTestSuite.h create mode 100644 Net/testsuite/src/HTTPStreamFactoryTest.cpp create mode 100644 Net/testsuite/src/HTTPStreamFactoryTest.h create mode 100644 Net/testsuite/src/HTTPTestServer.cpp create mode 100644 Net/testsuite/src/HTTPTestServer.h create mode 100644 Net/testsuite/src/HTTPTestSuite.cpp create mode 100644 Net/testsuite/src/HTTPTestSuite.h create mode 100644 Net/testsuite/src/ICMPClientTest.cpp create mode 100644 Net/testsuite/src/ICMPClientTest.h create mode 100644 Net/testsuite/src/ICMPClientTestSuite.cpp create mode 100644 Net/testsuite/src/ICMPClientTestSuite.h create mode 100644 Net/testsuite/src/ICMPSocketTest.cpp create mode 100644 Net/testsuite/src/ICMPSocketTest.h create mode 100644 Net/testsuite/src/IPAddressTest.cpp create mode 100644 Net/testsuite/src/IPAddressTest.h create mode 100644 Net/testsuite/src/MailMessageTest.cpp create mode 100644 Net/testsuite/src/MailMessageTest.h create mode 100644 Net/testsuite/src/MailStreamTest.cpp create mode 100644 Net/testsuite/src/MailStreamTest.h create mode 100644 Net/testsuite/src/MailTestSuite.cpp create mode 100644 Net/testsuite/src/MailTestSuite.h create mode 100644 Net/testsuite/src/MediaTypeTest.cpp create mode 100644 Net/testsuite/src/MediaTypeTest.h create mode 100644 Net/testsuite/src/MessageHeaderTest.cpp create mode 100644 Net/testsuite/src/MessageHeaderTest.h create mode 100644 Net/testsuite/src/MessagesTestSuite.cpp create mode 100644 Net/testsuite/src/MessagesTestSuite.h create mode 100644 Net/testsuite/src/MulticastEchoServer.cpp create mode 100644 Net/testsuite/src/MulticastEchoServer.h create mode 100644 Net/testsuite/src/MulticastSocketTest.cpp create mode 100644 Net/testsuite/src/MulticastSocketTest.h create mode 100644 Net/testsuite/src/MultipartReaderTest.cpp create mode 100644 Net/testsuite/src/MultipartReaderTest.h create mode 100644 Net/testsuite/src/MultipartWriterTest.cpp create mode 100644 Net/testsuite/src/MultipartWriterTest.h create mode 100644 Net/testsuite/src/NameValueCollectionTest.cpp create mode 100644 Net/testsuite/src/NameValueCollectionTest.h create mode 100644 Net/testsuite/src/NetCoreTestSuite.cpp create mode 100644 Net/testsuite/src/NetCoreTestSuite.h create mode 100644 Net/testsuite/src/NetTestSuite.cpp create mode 100644 Net/testsuite/src/NetTestSuite.h create mode 100644 Net/testsuite/src/NetworkInterfaceTest.cpp create mode 100644 Net/testsuite/src/NetworkInterfaceTest.h create mode 100644 Net/testsuite/src/POP3ClientSessionTest.cpp create mode 100644 Net/testsuite/src/POP3ClientSessionTest.h create mode 100644 Net/testsuite/src/QuotedPrintableTest.cpp create mode 100644 Net/testsuite/src/QuotedPrintableTest.h create mode 100644 Net/testsuite/src/RawSocketTest.cpp create mode 100644 Net/testsuite/src/RawSocketTest.h create mode 100644 Net/testsuite/src/ReactorTestSuite.cpp create mode 100644 Net/testsuite/src/ReactorTestSuite.h create mode 100644 Net/testsuite/src/SMTPClientSessionTest.cpp create mode 100644 Net/testsuite/src/SMTPClientSessionTest.h create mode 100644 Net/testsuite/src/SocketAddressTest.cpp create mode 100644 Net/testsuite/src/SocketAddressTest.h create mode 100644 Net/testsuite/src/SocketReactorTest.cpp create mode 100644 Net/testsuite/src/SocketReactorTest.h create mode 100644 Net/testsuite/src/SocketStreamTest.cpp create mode 100644 Net/testsuite/src/SocketStreamTest.h create mode 100644 Net/testsuite/src/SocketTest.cpp create mode 100644 Net/testsuite/src/SocketTest.h create mode 100644 Net/testsuite/src/SocketsTestSuite.cpp create mode 100644 Net/testsuite/src/SocketsTestSuite.h create mode 100644 Net/testsuite/src/SyslogTest.cpp create mode 100644 Net/testsuite/src/SyslogTest.h create mode 100644 Net/testsuite/src/TCPServerTest.cpp create mode 100644 Net/testsuite/src/TCPServerTest.h create mode 100644 Net/testsuite/src/TCPServerTestSuite.cpp create mode 100644 Net/testsuite/src/TCPServerTestSuite.h create mode 100644 Net/testsuite/src/UDPEchoServer.cpp create mode 100644 Net/testsuite/src/UDPEchoServer.h create mode 100644 Net/testsuite/src/WebSocketTest.cpp create mode 100644 Net/testsuite/src/WebSocketTest.h create mode 100644 Net/testsuite/src/WebSocketTestSuite.cpp create mode 100644 Net/testsuite/src/WebSocketTestSuite.h create mode 100644 Net/testsuite/src/WinCEDriver.cpp create mode 100644 Net/testsuite/src/WinDriver.cpp create mode 100644 NetSSL_OpenSSL/Makefile create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL.progen create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL_CE_vs90.sln create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL_CE_vs90.vcproj create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL_vs100.sln create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL_vs100.vcxproj create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL_vs100.vcxproj.filters create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL_vs71.sln create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL_vs71.vcproj create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL_vs80.sln create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL_vs80.vcproj create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL_vs90.sln create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL_vs90.vcproj create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs100.sln create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs100.vcxproj create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs100.vcxproj.filters create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs90.sln create mode 100644 NetSSL_OpenSSL/NetSSL_OpenSSL_x64_vs90.vcproj create mode 100644 NetSSL_OpenSSL/dependencies create mode 100644 NetSSL_OpenSSL/doc/howtobuild.txt create mode 100644 NetSSL_OpenSSL/include/Poco/Net/AcceptCertificateHandler.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/CertificateHandlerFactory.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/CertificateHandlerFactoryMgr.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/ConsoleCertificateHandler.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/Context.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/HTTPSClientSession.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/HTTPSSessionInstantiator.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/HTTPSStreamFactory.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/InvalidCertificateHandler.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/KeyConsoleHandler.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/KeyFileHandler.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/NetSSL.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/PrivateKeyFactory.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/PrivateKeyFactoryMgr.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/PrivateKeyPassphraseHandler.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/RejectCertificateHandler.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/SSLException.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/SSLManager.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/SecureSMTPClientSession.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/SecureServerSocket.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/SecureServerSocketImpl.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/SecureSocketImpl.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/SecureStreamSocket.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/SecureStreamSocketImpl.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/Session.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/Utility.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/VerificationErrorArgs.h create mode 100644 NetSSL_OpenSSL/include/Poco/Net/X509Certificate.h create mode 100644 NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer.progen create mode 100644 NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer.properties create mode 100644 NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer.vmsbuild create mode 100644 NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_CE_vs90.vcproj create mode 100644 NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs100.vcxproj create mode 100644 NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs100.vcxproj.filters create mode 100644 NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs71.vcproj create mode 100644 NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs80.vcproj create mode 100644 NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_vs90.vcproj create mode 100644 NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs100.vcxproj create mode 100644 NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs100.vcxproj.filters create mode 100644 NetSSL_OpenSSL/samples/HTTPSTimeServer/HTTPSTimeServer_x64_vs90.vcproj create mode 100644 NetSSL_OpenSSL/samples/HTTPSTimeServer/Makefile create mode 100644 NetSSL_OpenSSL/samples/HTTPSTimeServer/any.pem create mode 100644 NetSSL_OpenSSL/samples/HTTPSTimeServer/rootcert.pem create mode 100644 NetSSL_OpenSSL/samples/HTTPSTimeServer/src/HTTPSTimeServer.cpp create mode 100644 NetSSL_OpenSSL/samples/Mail/Mail.progen create mode 100644 NetSSL_OpenSSL/samples/Mail/Mail.vmsbuild create mode 100644 NetSSL_OpenSSL/samples/Mail/Mail_CE_vs90.vcproj create mode 100644 NetSSL_OpenSSL/samples/Mail/Mail_vs100.vcxproj create mode 100644 NetSSL_OpenSSL/samples/Mail/Mail_vs100.vcxproj.filters create mode 100644 NetSSL_OpenSSL/samples/Mail/Mail_vs71.vcproj create mode 100644 NetSSL_OpenSSL/samples/Mail/Mail_vs80.vcproj create mode 100644 NetSSL_OpenSSL/samples/Mail/Mail_vs90.vcproj create mode 100644 NetSSL_OpenSSL/samples/Mail/Mail_x64_vs100.vcxproj create mode 100644 NetSSL_OpenSSL/samples/Mail/Mail_x64_vs100.vcxproj.filters create mode 100644 NetSSL_OpenSSL/samples/Mail/Mail_x64_vs90.vcproj create mode 100644 NetSSL_OpenSSL/samples/Mail/Makefile create mode 100644 NetSSL_OpenSSL/samples/Mail/src/Mail.cpp create mode 100644 NetSSL_OpenSSL/samples/Mail/src/PocoLogo.hpp create mode 100644 NetSSL_OpenSSL/samples/Makefile create mode 100644 NetSSL_OpenSSL/samples/download/Makefile create mode 100644 NetSSL_OpenSSL/samples/download/doc/readme.txt create mode 100644 NetSSL_OpenSSL/samples/download/download.progen create mode 100644 NetSSL_OpenSSL/samples/download/download.vmsbuild create mode 100644 NetSSL_OpenSSL/samples/download/download_CE_vs90.vcproj create mode 100644 NetSSL_OpenSSL/samples/download/download_vs100.vcxproj create mode 100644 NetSSL_OpenSSL/samples/download/download_vs100.vcxproj.filters create mode 100644 NetSSL_OpenSSL/samples/download/download_vs71.vcproj create mode 100644 NetSSL_OpenSSL/samples/download/download_vs80.vcproj create mode 100644 NetSSL_OpenSSL/samples/download/download_vs90.vcproj create mode 100644 NetSSL_OpenSSL/samples/download/download_x64_vs100.vcxproj create mode 100644 NetSSL_OpenSSL/samples/download/download_x64_vs100.vcxproj.filters create mode 100644 NetSSL_OpenSSL/samples/download/download_x64_vs90.vcproj create mode 100644 NetSSL_OpenSSL/samples/download/rootcert.pem create mode 100644 NetSSL_OpenSSL/samples/download/src/download.cpp create mode 100644 NetSSL_OpenSSL/samples/samples.progen create mode 100644 NetSSL_OpenSSL/samples/samples_CE_vs90.sln create mode 100644 NetSSL_OpenSSL/samples/samples_vs100.sln create mode 100644 NetSSL_OpenSSL/samples/samples_vs71.sln create mode 100644 NetSSL_OpenSSL/samples/samples_vs80.sln create mode 100644 NetSSL_OpenSSL/samples/samples_vs90.sln create mode 100644 NetSSL_OpenSSL/samples/samples_x64_vs100.sln create mode 100644 NetSSL_OpenSSL/samples/samples_x64_vs90.sln create mode 100644 NetSSL_OpenSSL/src/AcceptCertificateHandler.cpp create mode 100644 NetSSL_OpenSSL/src/CertificateHandlerFactory.cpp create mode 100644 NetSSL_OpenSSL/src/CertificateHandlerFactoryMgr.cpp create mode 100644 NetSSL_OpenSSL/src/ConsoleCertificateHandler.cpp create mode 100644 NetSSL_OpenSSL/src/Context.cpp create mode 100644 NetSSL_OpenSSL/src/HTTPSClientSession.cpp create mode 100644 NetSSL_OpenSSL/src/HTTPSSessionInstantiator.cpp create mode 100644 NetSSL_OpenSSL/src/HTTPSStreamFactory.cpp create mode 100644 NetSSL_OpenSSL/src/InvalidCertificateHandler.cpp create mode 100644 NetSSL_OpenSSL/src/KeyConsoleHandler.cpp create mode 100644 NetSSL_OpenSSL/src/KeyFileHandler.cpp create mode 100644 NetSSL_OpenSSL/src/PrivateKeyFactory.cpp create mode 100644 NetSSL_OpenSSL/src/PrivateKeyFactoryMgr.cpp create mode 100644 NetSSL_OpenSSL/src/PrivateKeyPassphraseHandler.cpp create mode 100644 NetSSL_OpenSSL/src/RejectCertificateHandler.cpp create mode 100644 NetSSL_OpenSSL/src/SSLException.cpp create mode 100644 NetSSL_OpenSSL/src/SSLManager.cpp create mode 100644 NetSSL_OpenSSL/src/SecureSMTPClientSession.cpp create mode 100644 NetSSL_OpenSSL/src/SecureServerSocket.cpp create mode 100644 NetSSL_OpenSSL/src/SecureServerSocketImpl.cpp create mode 100644 NetSSL_OpenSSL/src/SecureSocketImpl.cpp create mode 100644 NetSSL_OpenSSL/src/SecureStreamSocket.cpp create mode 100644 NetSSL_OpenSSL/src/SecureStreamSocketImpl.cpp create mode 100644 NetSSL_OpenSSL/src/Session.cpp create mode 100644 NetSSL_OpenSSL/src/Utility.cpp create mode 100644 NetSSL_OpenSSL/src/VerificationErrorArgs.cpp create mode 100644 NetSSL_OpenSSL/src/X509Certificate.cpp create mode 100644 NetSSL_OpenSSL/testsuite/Makefile create mode 100644 NetSSL_OpenSSL/testsuite/TestSuite.progen create mode 100644 NetSSL_OpenSSL/testsuite/TestSuite.vmsbuild create mode 100644 NetSSL_OpenSSL/testsuite/TestSuite.xml create mode 100644 NetSSL_OpenSSL/testsuite/TestSuite_CE_vs90.vcproj create mode 100644 NetSSL_OpenSSL/testsuite/TestSuite_vs100.vcxproj create mode 100644 NetSSL_OpenSSL/testsuite/TestSuite_vs100.vcxproj.filters create mode 100644 NetSSL_OpenSSL/testsuite/TestSuite_vs71.vcproj create mode 100644 NetSSL_OpenSSL/testsuite/TestSuite_vs80.vcproj create mode 100644 NetSSL_OpenSSL/testsuite/TestSuite_vs90.vcproj create mode 100644 NetSSL_OpenSSL/testsuite/TestSuite_x64_vs100.vcxproj create mode 100644 NetSSL_OpenSSL/testsuite/TestSuite_x64_vs100.vcxproj.filters create mode 100644 NetSSL_OpenSSL/testsuite/TestSuite_x64_vs90.vcproj create mode 100644 NetSSL_OpenSSL/testsuite/TestSuitemt.xml create mode 100644 NetSSL_OpenSSL/testsuite/any.pem create mode 100644 NetSSL_OpenSSL/testsuite/rootcert.pem create mode 100644 NetSSL_OpenSSL/testsuite/src/Driver.cpp create mode 100644 NetSSL_OpenSSL/testsuite/src/HTTPSClientSessionTest.cpp create mode 100644 NetSSL_OpenSSL/testsuite/src/HTTPSClientSessionTest.h create mode 100644 NetSSL_OpenSSL/testsuite/src/HTTPSClientTestSuite.cpp create mode 100644 NetSSL_OpenSSL/testsuite/src/HTTPSClientTestSuite.h create mode 100644 NetSSL_OpenSSL/testsuite/src/HTTPSServerTest.cpp create mode 100644 NetSSL_OpenSSL/testsuite/src/HTTPSServerTest.h create mode 100644 NetSSL_OpenSSL/testsuite/src/HTTPSServerTestSuite.cpp create mode 100644 NetSSL_OpenSSL/testsuite/src/HTTPSServerTestSuite.h create mode 100644 NetSSL_OpenSSL/testsuite/src/HTTPSStreamFactoryTest.cpp create mode 100644 NetSSL_OpenSSL/testsuite/src/HTTPSStreamFactoryTest.h create mode 100644 NetSSL_OpenSSL/testsuite/src/HTTPSTestServer.cpp create mode 100644 NetSSL_OpenSSL/testsuite/src/HTTPSTestServer.h create mode 100644 NetSSL_OpenSSL/testsuite/src/NetSSLTestSuite.cpp create mode 100644 NetSSL_OpenSSL/testsuite/src/NetSSLTestSuite.h create mode 100644 NetSSL_OpenSSL/testsuite/src/TCPServerTest.cpp create mode 100644 NetSSL_OpenSSL/testsuite/src/TCPServerTest.h create mode 100644 NetSSL_OpenSSL/testsuite/src/TCPServerTestSuite.cpp create mode 100644 NetSSL_OpenSSL/testsuite/src/TCPServerTestSuite.h create mode 100644 NetSSL_OpenSSL/testsuite/src/WinCEDriver.cpp create mode 100644 NetSSL_OpenSSL/testsuite/src/WinDriver.cpp create mode 100644 NetSSL_OpenSSL/testsuite/testrunner.xml create mode 100644 PDF/Makefile create mode 100644 PDF/PDF_vs80.sln create mode 100644 PDF/PDF_vs80.vcproj create mode 100644 PDF/include/Poco/PDF/Destination.h create mode 100644 PDF/include/Poco/PDF/Document.h create mode 100644 PDF/include/Poco/PDF/Encoder.h create mode 100644 PDF/include/Poco/PDF/Font.h create mode 100644 PDF/include/Poco/PDF/Image.h create mode 100644 PDF/include/Poco/PDF/LinkAnnotation.h create mode 100644 PDF/include/Poco/PDF/Outline.h create mode 100644 PDF/include/Poco/PDF/PDF.h create mode 100644 PDF/include/Poco/PDF/PDFException.h create mode 100644 PDF/include/Poco/PDF/Page.h create mode 100644 PDF/include/Poco/PDF/Resource.h create mode 100644 PDF/include/Poco/PDF/TextAnnotation.h create mode 100644 PDF/include/Poco/PDF/adler32.c create mode 100644 PDF/include/Poco/PDF/crc32.h create mode 100644 PDF/include/Poco/PDF/deflate.c create mode 100644 PDF/include/Poco/PDF/deflate.h create mode 100644 PDF/include/Poco/PDF/hpdf.h create mode 100644 PDF/include/Poco/PDF/hpdf_annotation.h create mode 100644 PDF/include/Poco/PDF/hpdf_catalog.h create mode 100644 PDF/include/Poco/PDF/hpdf_conf.h create mode 100644 PDF/include/Poco/PDF/hpdf_consts.h create mode 100644 PDF/include/Poco/PDF/hpdf_destination.h create mode 100644 PDF/include/Poco/PDF/hpdf_doc.h create mode 100644 PDF/include/Poco/PDF/hpdf_encoder.h create mode 100644 PDF/include/Poco/PDF/hpdf_encrypt.h create mode 100644 PDF/include/Poco/PDF/hpdf_encryptdict.h create mode 100644 PDF/include/Poco/PDF/hpdf_error.h create mode 100644 PDF/include/Poco/PDF/hpdf_ext_gstate.h create mode 100644 PDF/include/Poco/PDF/hpdf_font.h create mode 100644 PDF/include/Poco/PDF/hpdf_fontdef.h create mode 100644 PDF/include/Poco/PDF/hpdf_gstate.h create mode 100644 PDF/include/Poco/PDF/hpdf_image.h create mode 100644 PDF/include/Poco/PDF/hpdf_info.h create mode 100644 PDF/include/Poco/PDF/hpdf_list.h create mode 100644 PDF/include/Poco/PDF/hpdf_mmgr.h create mode 100644 PDF/include/Poco/PDF/hpdf_objects.h create mode 100644 PDF/include/Poco/PDF/hpdf_outline.h create mode 100644 PDF/include/Poco/PDF/hpdf_page_label.h create mode 100644 PDF/include/Poco/PDF/hpdf_pages.h create mode 100644 PDF/include/Poco/PDF/hpdf_streams.h create mode 100644 PDF/include/Poco/PDF/hpdf_types.h create mode 100644 PDF/include/Poco/PDF/hpdf_utils.h create mode 100644 PDF/include/Poco/PDF/inffast.h create mode 100644 PDF/include/Poco/PDF/inffixed.h create mode 100644 PDF/include/Poco/PDF/inflate.h create mode 100644 PDF/include/Poco/PDF/inftrees.h create mode 100644 PDF/include/Poco/PDF/png.h create mode 100644 PDF/include/Poco/PDF/pngconf.h create mode 100644 PDF/include/Poco/PDF/trees.h create mode 100644 PDF/include/Poco/PDF/zconf.h create mode 100644 PDF/include/Poco/PDF/zlib.h create mode 100644 PDF/include/Poco/PDF/zutil.h create mode 100644 PDF/samples/Image/Image_vs80.vcproj create mode 100644 PDF/samples/Image/Makefile create mode 100644 PDF/samples/Image/logo.PNG create mode 100644 PDF/samples/Image/src/Image.cpp create mode 100644 PDF/samples/Makefile create mode 100644 PDF/samples/Text/Makefile create mode 100644 PDF/samples/Text/Text_vs80.vcproj create mode 100644 PDF/samples/Text/src/Text.cpp create mode 100644 PDF/samples/samples_vs80.sln create mode 100644 PDF/src/Destination.cpp create mode 100644 PDF/src/Document.cpp create mode 100644 PDF/src/Encoder.cpp create mode 100644 PDF/src/Font.cpp create mode 100644 PDF/src/Image.cpp create mode 100644 PDF/src/LinkAnnotation.cpp create mode 100644 PDF/src/Outline.cpp create mode 100644 PDF/src/PDFException.cpp create mode 100644 PDF/src/Page.cpp create mode 100644 PDF/src/TextAnnotation.cpp create mode 100644 PDF/src/adler32.c create mode 100644 PDF/src/compress.c create mode 100644 PDF/src/crc32.c create mode 100644 PDF/src/deflate.c create mode 100644 PDF/src/gzio.c create mode 100644 PDF/src/hpdf_annotation.c create mode 100644 PDF/src/hpdf_array.c create mode 100644 PDF/src/hpdf_binary.c create mode 100644 PDF/src/hpdf_boolean.c create mode 100644 PDF/src/hpdf_catalog.c create mode 100644 PDF/src/hpdf_destination.c create mode 100644 PDF/src/hpdf_dict.c create mode 100644 PDF/src/hpdf_doc.c create mode 100644 PDF/src/hpdf_doc_png.c create mode 100644 PDF/src/hpdf_encoder.c create mode 100644 PDF/src/hpdf_encoder_cns.c create mode 100644 PDF/src/hpdf_encoder_cnt.c create mode 100644 PDF/src/hpdf_encoder_jp.c create mode 100644 PDF/src/hpdf_encoder_kr.c create mode 100644 PDF/src/hpdf_encrypt.c create mode 100644 PDF/src/hpdf_encryptdict.c create mode 100644 PDF/src/hpdf_error.c create mode 100644 PDF/src/hpdf_ext_gstate.c create mode 100644 PDF/src/hpdf_font.c create mode 100644 PDF/src/hpdf_font_cid.c create mode 100644 PDF/src/hpdf_font_tt.c create mode 100644 PDF/src/hpdf_font_type1.c create mode 100644 PDF/src/hpdf_fontdef.c create mode 100644 PDF/src/hpdf_fontdef_base14.c create mode 100644 PDF/src/hpdf_fontdef_cid.c create mode 100644 PDF/src/hpdf_fontdef_cns.c create mode 100644 PDF/src/hpdf_fontdef_cnt.c create mode 100644 PDF/src/hpdf_fontdef_jp.c create mode 100644 PDF/src/hpdf_fontdef_kr.c create mode 100644 PDF/src/hpdf_fontdef_tt.c create mode 100644 PDF/src/hpdf_fontdef_type1.c create mode 100644 PDF/src/hpdf_gstate.c create mode 100644 PDF/src/hpdf_image.c create mode 100644 PDF/src/hpdf_image_png.c create mode 100644 PDF/src/hpdf_info.c create mode 100644 PDF/src/hpdf_list.c create mode 100644 PDF/src/hpdf_mmgr.c create mode 100644 PDF/src/hpdf_name.c create mode 100644 PDF/src/hpdf_null.c create mode 100644 PDF/src/hpdf_number.c create mode 100644 PDF/src/hpdf_objects.c create mode 100644 PDF/src/hpdf_outline.c create mode 100644 PDF/src/hpdf_page_label.c create mode 100644 PDF/src/hpdf_page_operator.c create mode 100644 PDF/src/hpdf_pages.c create mode 100644 PDF/src/hpdf_real.c create mode 100644 PDF/src/hpdf_streams.c create mode 100644 PDF/src/hpdf_string.c create mode 100644 PDF/src/hpdf_utils.c create mode 100644 PDF/src/hpdf_xref.c create mode 100644 PDF/src/infback.c create mode 100644 PDF/src/inffast.c create mode 100644 PDF/src/inflate.c create mode 100644 PDF/src/inftrees.c create mode 100644 PDF/src/png.c create mode 100644 PDF/src/pngerror.c create mode 100644 PDF/src/pnggccrd.c create mode 100644 PDF/src/pngget.c create mode 100644 PDF/src/pngmem.c create mode 100644 PDF/src/pngpread.c create mode 100644 PDF/src/pngread.c create mode 100644 PDF/src/pngrio.c create mode 100644 PDF/src/pngrtran.c create mode 100644 PDF/src/pngrutil.c create mode 100644 PDF/src/pngset.c create mode 100644 PDF/src/pngtest.c create mode 100644 PDF/src/pngtrans.c create mode 100644 PDF/src/pngvcrd.c create mode 100644 PDF/src/pngwio.c create mode 100644 PDF/src/pngwrite.c create mode 100644 PDF/src/pngwtran.c create mode 100644 PDF/src/pngwutil.c create mode 100644 PDF/src/trees.c create mode 100644 PDF/src/zutil.c create mode 100644 PDF/testsuite/Makefile create mode 100644 PDF/testsuite/TestSuite_VS80.vcproj create mode 100644 PDF/testsuite/src/Driver.cpp create mode 100644 PDF/testsuite/src/PDFTest.cpp create mode 100644 PDF/testsuite/src/PDFTest.h create mode 100644 PDF/testsuite/src/PDFTestSuite.cpp create mode 100644 PDF/testsuite/src/PDFTestSuite.h create mode 100644 PDF/testsuite/src/WinDriver.cpp create mode 100644 PageCompiler/File2Page/File2Page.progen create mode 100644 PageCompiler/File2Page/File2Page_vs100.sln create mode 100644 PageCompiler/File2Page/File2Page_vs100.vcxproj create mode 100644 PageCompiler/File2Page/File2Page_vs100.vcxproj.filters create mode 100644 PageCompiler/File2Page/File2Page_vs71.sln create mode 100644 PageCompiler/File2Page/File2Page_vs71.vcproj create mode 100644 PageCompiler/File2Page/File2Page_vs80.sln create mode 100644 PageCompiler/File2Page/File2Page_vs80.vcproj create mode 100644 PageCompiler/File2Page/File2Page_vs90.sln create mode 100644 PageCompiler/File2Page/File2Page_vs90.vcproj create mode 100644 PageCompiler/File2Page/File2Page_x64_vs100.sln create mode 100644 PageCompiler/File2Page/File2Page_x64_vs100.vcxproj create mode 100644 PageCompiler/File2Page/File2Page_x64_vs100.vcxproj.filters create mode 100644 PageCompiler/File2Page/File2Page_x64_vs90.sln create mode 100644 PageCompiler/File2Page/File2Page_x64_vs90.vcproj create mode 100644 PageCompiler/File2Page/Makefile create mode 100644 PageCompiler/File2Page/dependencies create mode 100644 PageCompiler/File2Page/src/File2Page.cpp create mode 100644 PageCompiler/Makefile create mode 100644 PageCompiler/PageCompiler.progen create mode 100644 PageCompiler/PageCompiler_vs100.sln create mode 100644 PageCompiler/PageCompiler_vs100.vcxproj create mode 100644 PageCompiler/PageCompiler_vs100.vcxproj.filters create mode 100644 PageCompiler/PageCompiler_vs71.sln create mode 100644 PageCompiler/PageCompiler_vs71.vcproj create mode 100644 PageCompiler/PageCompiler_vs80.sln create mode 100644 PageCompiler/PageCompiler_vs80.vcproj create mode 100644 PageCompiler/PageCompiler_vs90.sln create mode 100644 PageCompiler/PageCompiler_vs90.vcproj create mode 100644 PageCompiler/PageCompiler_x64_vs100.sln create mode 100644 PageCompiler/PageCompiler_x64_vs100.vcxproj create mode 100644 PageCompiler/PageCompiler_x64_vs100.vcxproj.filters create mode 100644 PageCompiler/PageCompiler_x64_vs90.sln create mode 100644 PageCompiler/PageCompiler_x64_vs90.vcproj create mode 100644 PageCompiler/cpspc.properties create mode 100644 PageCompiler/dependencies create mode 100644 PageCompiler/doc/PageCompilerUserGuide.page create mode 100644 PageCompiler/samples/HTTPTimeServer/HTTPTimeServer.progen create mode 100644 PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_CE_vs90.vcproj create mode 100644 PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs100.vcxproj create mode 100644 PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs100.vcxproj.filters create mode 100644 PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs71.vcproj create mode 100644 PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs80.vcproj create mode 100644 PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_vs90.vcproj create mode 100644 PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs100.vcxproj create mode 100644 PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs100.vcxproj.filters create mode 100644 PageCompiler/samples/HTTPTimeServer/HTTPTimeServer_x64_vs90.vcproj create mode 100644 PageCompiler/samples/HTTPTimeServer/Makefile create mode 100644 PageCompiler/samples/HTTPTimeServer/src/HTTPTimeServerApp.cpp create mode 100644 PageCompiler/samples/HTTPTimeServer/src/TimeHandler.cpp create mode 100644 PageCompiler/samples/HTTPTimeServer/src/TimeHandler.cpsp create mode 100644 PageCompiler/samples/HTTPTimeServer/src/TimeHandler.h create mode 100644 PageCompiler/samples/Makefile create mode 100644 PageCompiler/samples/samples.progen create mode 100644 PageCompiler/samples/samples_CE_vs90.sln create mode 100644 PageCompiler/samples/samples_vs100.sln create mode 100644 PageCompiler/samples/samples_vs71.sln create mode 100644 PageCompiler/samples/samples_vs80.sln create mode 100644 PageCompiler/samples/samples_vs90.sln create mode 100644 PageCompiler/samples/samples_x64_vs100.sln create mode 100644 PageCompiler/samples/samples_x64_vs90.sln create mode 100644 PageCompiler/src/ApacheCodeWriter.cpp create mode 100644 PageCompiler/src/ApacheCodeWriter.h create mode 100644 PageCompiler/src/CodeWriter.cpp create mode 100644 PageCompiler/src/CodeWriter.h create mode 100644 PageCompiler/src/OSPCodeWriter.cpp create mode 100644 PageCompiler/src/OSPCodeWriter.h create mode 100644 PageCompiler/src/Page.cpp create mode 100644 PageCompiler/src/Page.h create mode 100644 PageCompiler/src/PageCompiler.cpp create mode 100644 PageCompiler/src/PageReader.cpp create mode 100644 PageCompiler/src/PageReader.h create mode 100644 PageCompiler/test/test.cpsp create mode 100644 PocoDoc/Makefile create mode 100644 PocoDoc/PocoDoc.progen create mode 100644 PocoDoc/PocoDoc_vs100.sln create mode 100644 PocoDoc/PocoDoc_vs100.vcxproj create mode 100644 PocoDoc/PocoDoc_vs100.vcxproj.filters create mode 100644 PocoDoc/PocoDoc_vs71.sln create mode 100644 PocoDoc/PocoDoc_vs71.vcproj create mode 100644 PocoDoc/PocoDoc_vs80.sln create mode 100644 PocoDoc/PocoDoc_vs80.vcproj create mode 100644 PocoDoc/PocoDoc_vs90.sln create mode 100644 PocoDoc/PocoDoc_vs90.vcproj create mode 100644 PocoDoc/PocoDoc_x64_vs100.sln create mode 100644 PocoDoc/PocoDoc_x64_vs100.vcxproj create mode 100644 PocoDoc/PocoDoc_x64_vs100.vcxproj.filters create mode 100644 PocoDoc/PocoDoc_x64_vs90.sln create mode 100644 PocoDoc/PocoDoc_x64_vs90.vcproj create mode 100644 PocoDoc/cfg/mkdoc-poco.xml create mode 100644 PocoDoc/dependencies create mode 100644 PocoDoc/images/%inline.psd create mode 100644 PocoDoc/images/%protected.psd create mode 100644 PocoDoc/images/%static.psd create mode 100644 PocoDoc/images/%virtual.psd create mode 100644 PocoDoc/images/Icons.key/color-profile create mode 100644 PocoDoc/images/Icons.key/index.apxl.gz create mode 100644 PocoDoc/images/inline.psd create mode 100644 PocoDoc/images/protected.psd create mode 100644 PocoDoc/images/static.psd create mode 100644 PocoDoc/images/virtual.psd create mode 100644 PocoDoc/pages/samplePage.page create mode 100644 PocoDoc/resources/css/prettify.css create mode 100644 PocoDoc/resources/css/styles.css create mode 100644 PocoDoc/resources/go.php create mode 100644 PocoDoc/resources/images/arrow.gif create mode 100644 PocoDoc/resources/images/background.jpg create mode 100644 PocoDoc/resources/images/bottom.jpg create mode 100644 PocoDoc/resources/images/bullet.gif create mode 100644 PocoDoc/resources/images/header.jpg create mode 100644 PocoDoc/resources/images/inline.gif create mode 100644 PocoDoc/resources/images/poco.png create mode 100644 PocoDoc/resources/images/protected.gif create mode 100644 PocoDoc/resources/images/static.gif create mode 100644 PocoDoc/resources/images/title.jpg create mode 100644 PocoDoc/resources/images/virtual.gif create mode 100644 PocoDoc/resources/index.html create mode 100644 PocoDoc/resources/js/prettify.js create mode 100644 PocoDoc/resources/platform/go.php create mode 100644 PocoDoc/resources/platform/images/%headerlogo.png create mode 100644 PocoDoc/resources/platform/images/headerlogo.png create mode 100644 PocoDoc/resources/platform/index.html create mode 100644 PocoDoc/resources/platform/welcome.thtml create mode 100644 PocoDoc/resources/welcome.thtml create mode 100644 PocoDoc/src/DocWriter.cpp create mode 100644 PocoDoc/src/DocWriter.h create mode 100644 PocoDoc/src/PocoDoc.cpp create mode 100644 ProGen/ProGen_vs100.sln create mode 100644 ProGen/ProGen_vs100.vcxproj create mode 100644 ProGen/ProGen_vs100.vcxproj.filters create mode 100644 ProGen/ProGen_vs71.sln create mode 100644 ProGen/ProGen_vs71.vcproj create mode 100644 ProGen/ProGen_vs80.sln create mode 100644 ProGen/ProGen_vs80.vcproj create mode 100644 ProGen/ProGen_vs90.sln create mode 100644 ProGen/ProGen_vs90.vcproj create mode 100644 ProGen/ProGen_x64_vs100.sln create mode 100644 ProGen/ProGen_x64_vs100.vcxproj create mode 100644 ProGen/ProGen_x64_vs100.vcxproj.filters create mode 100644 ProGen/ProGen_x64_vs90.sln create mode 100644 ProGen/ProGen_x64_vs90.vcproj create mode 100644 ProGen/progen.properties create mode 100644 ProGen/src/ProGen.cpp create mode 100644 ProGen/src/VSXMLWriter.cpp create mode 100644 ProGen/src/VSXMLWriter.h create mode 100644 ProGen/templates/vs100/Win32/executable/debug_shared.template create mode 100644 ProGen/templates/vs100/Win32/executable/debug_static_md.template create mode 100644 ProGen/templates/vs100/Win32/executable/debug_static_mt.template create mode 100644 ProGen/templates/vs100/Win32/executable/project.properties create mode 100644 ProGen/templates/vs100/Win32/executable/project.template create mode 100644 ProGen/templates/vs100/Win32/executable/release_shared.template create mode 100644 ProGen/templates/vs100/Win32/executable/release_static_md.template create mode 100644 ProGen/templates/vs100/Win32/executable/release_static_mt.template create mode 100644 ProGen/templates/vs100/Win32/library/debug_shared.template create mode 100644 ProGen/templates/vs100/Win32/library/debug_static_md.template create mode 100644 ProGen/templates/vs100/Win32/library/debug_static_mt.template create mode 100644 ProGen/templates/vs100/Win32/library/project.properties create mode 100644 ProGen/templates/vs100/Win32/library/project.template create mode 100644 ProGen/templates/vs100/Win32/library/release_shared.template create mode 100644 ProGen/templates/vs100/Win32/library/release_static_md.template create mode 100644 ProGen/templates/vs100/Win32/library/release_static_mt.template create mode 100644 ProGen/templates/vs100/Win32/plugin/debug_shared.template create mode 100644 ProGen/templates/vs100/Win32/plugin/project.properties create mode 100644 ProGen/templates/vs100/Win32/plugin/project.template create mode 100644 ProGen/templates/vs100/Win32/plugin/release_shared.template create mode 100644 ProGen/templates/vs100/Win32/testsuite/debug_shared.template create mode 100644 ProGen/templates/vs100/Win32/testsuite/debug_static_md.template create mode 100644 ProGen/templates/vs100/Win32/testsuite/debug_static_mt.template create mode 100644 ProGen/templates/vs100/Win32/testsuite/project.properties create mode 100644 ProGen/templates/vs100/Win32/testsuite/project.template create mode 100644 ProGen/templates/vs100/Win32/testsuite/release_shared.template create mode 100644 ProGen/templates/vs100/Win32/testsuite/release_static_md.template create mode 100644 ProGen/templates/vs100/Win32/testsuite/release_static_mt.template create mode 100644 ProGen/templates/vs100/x64/executable/debug_shared.template create mode 100644 ProGen/templates/vs100/x64/executable/debug_static_md.template create mode 100644 ProGen/templates/vs100/x64/executable/debug_static_mt.template create mode 100644 ProGen/templates/vs100/x64/executable/project.properties create mode 100644 ProGen/templates/vs100/x64/executable/project.template create mode 100644 ProGen/templates/vs100/x64/executable/release_shared.template create mode 100644 ProGen/templates/vs100/x64/executable/release_static_md.template create mode 100644 ProGen/templates/vs100/x64/executable/release_static_mt.template create mode 100644 ProGen/templates/vs100/x64/library/debug_shared.template create mode 100644 ProGen/templates/vs100/x64/library/debug_static_md.template create mode 100644 ProGen/templates/vs100/x64/library/debug_static_mt.template create mode 100644 ProGen/templates/vs100/x64/library/project.properties create mode 100644 ProGen/templates/vs100/x64/library/project.template create mode 100644 ProGen/templates/vs100/x64/library/release_shared.template create mode 100644 ProGen/templates/vs100/x64/library/release_static_md.template create mode 100644 ProGen/templates/vs100/x64/library/release_static_mt.template create mode 100644 ProGen/templates/vs100/x64/plugin/debug_shared.template create mode 100644 ProGen/templates/vs100/x64/plugin/project.properties create mode 100644 ProGen/templates/vs100/x64/plugin/project.template create mode 100644 ProGen/templates/vs100/x64/plugin/release_shared.template create mode 100644 ProGen/templates/vs100/x64/testsuite/debug_shared.template create mode 100644 ProGen/templates/vs100/x64/testsuite/debug_static_md.template create mode 100644 ProGen/templates/vs100/x64/testsuite/debug_static_mt.template create mode 100644 ProGen/templates/vs100/x64/testsuite/project.properties create mode 100644 ProGen/templates/vs100/x64/testsuite/project.template create mode 100644 ProGen/templates/vs100/x64/testsuite/release_shared.template create mode 100644 ProGen/templates/vs100/x64/testsuite/release_static_md.template create mode 100644 ProGen/templates/vs100/x64/testsuite/release_static_mt.template create mode 100644 ProGen/templates/vs71/Win32/executable/debug_shared.template create mode 100644 ProGen/templates/vs71/Win32/executable/debug_static_md.template create mode 100644 ProGen/templates/vs71/Win32/executable/debug_static_mt.template create mode 100644 ProGen/templates/vs71/Win32/executable/project.properties create mode 100644 ProGen/templates/vs71/Win32/executable/project.template create mode 100644 ProGen/templates/vs71/Win32/executable/release_shared.template create mode 100644 ProGen/templates/vs71/Win32/executable/release_static_md.template create mode 100644 ProGen/templates/vs71/Win32/executable/release_static_mt.template create mode 100644 ProGen/templates/vs71/Win32/library/debug_shared.template create mode 100644 ProGen/templates/vs71/Win32/library/debug_static_md.template create mode 100644 ProGen/templates/vs71/Win32/library/debug_static_mt.template create mode 100644 ProGen/templates/vs71/Win32/library/project.properties create mode 100644 ProGen/templates/vs71/Win32/library/project.template create mode 100644 ProGen/templates/vs71/Win32/library/release_shared.template create mode 100644 ProGen/templates/vs71/Win32/library/release_static_md.template create mode 100644 ProGen/templates/vs71/Win32/library/release_static_mt.template create mode 100644 ProGen/templates/vs71/Win32/plugin/debug_shared.template create mode 100644 ProGen/templates/vs71/Win32/plugin/project.properties create mode 100644 ProGen/templates/vs71/Win32/plugin/project.template create mode 100644 ProGen/templates/vs71/Win32/plugin/release_shared.template create mode 100644 ProGen/templates/vs71/Win32/testsuite/debug_shared.template create mode 100644 ProGen/templates/vs71/Win32/testsuite/debug_static_md.template create mode 100644 ProGen/templates/vs71/Win32/testsuite/debug_static_mt.template create mode 100644 ProGen/templates/vs71/Win32/testsuite/project.properties create mode 100644 ProGen/templates/vs71/Win32/testsuite/project.template create mode 100644 ProGen/templates/vs71/Win32/testsuite/release_shared.template create mode 100644 ProGen/templates/vs71/Win32/testsuite/release_static_md.template create mode 100644 ProGen/templates/vs71/Win32/testsuite/release_static_mt.template create mode 100644 ProGen/templates/vs80/Win32/executable/debug_shared.template create mode 100644 ProGen/templates/vs80/Win32/executable/debug_static_md.template create mode 100644 ProGen/templates/vs80/Win32/executable/debug_static_mt.template create mode 100644 ProGen/templates/vs80/Win32/executable/project.properties create mode 100644 ProGen/templates/vs80/Win32/executable/project.template create mode 100644 ProGen/templates/vs80/Win32/executable/release_shared.template create mode 100644 ProGen/templates/vs80/Win32/executable/release_static_md.template create mode 100644 ProGen/templates/vs80/Win32/executable/release_static_mt.template create mode 100644 ProGen/templates/vs80/Win32/library/debug_shared.template create mode 100644 ProGen/templates/vs80/Win32/library/debug_static_md.template create mode 100644 ProGen/templates/vs80/Win32/library/debug_static_mt.template create mode 100644 ProGen/templates/vs80/Win32/library/project.properties create mode 100644 ProGen/templates/vs80/Win32/library/project.template create mode 100644 ProGen/templates/vs80/Win32/library/release_shared.template create mode 100644 ProGen/templates/vs80/Win32/library/release_static_md.template create mode 100644 ProGen/templates/vs80/Win32/library/release_static_mt.template create mode 100644 ProGen/templates/vs80/Win32/plugin/debug_shared.template create mode 100644 ProGen/templates/vs80/Win32/plugin/project.properties create mode 100644 ProGen/templates/vs80/Win32/plugin/project.template create mode 100644 ProGen/templates/vs80/Win32/plugin/release_shared.template create mode 100644 ProGen/templates/vs80/Win32/testsuite/debug_shared.template create mode 100644 ProGen/templates/vs80/Win32/testsuite/debug_static_md.template create mode 100644 ProGen/templates/vs80/Win32/testsuite/debug_static_mt.template create mode 100644 ProGen/templates/vs80/Win32/testsuite/project.properties create mode 100644 ProGen/templates/vs80/Win32/testsuite/project.template create mode 100644 ProGen/templates/vs80/Win32/testsuite/release_shared.template create mode 100644 ProGen/templates/vs80/Win32/testsuite/release_static_md.template create mode 100644 ProGen/templates/vs80/Win32/testsuite/release_static_mt.template create mode 100644 ProGen/templates/vs90/Win32/executable/debug_shared.template create mode 100644 ProGen/templates/vs90/Win32/executable/debug_static_md.template create mode 100644 ProGen/templates/vs90/Win32/executable/debug_static_mt.template create mode 100644 ProGen/templates/vs90/Win32/executable/project.properties create mode 100644 ProGen/templates/vs90/Win32/executable/project.template create mode 100644 ProGen/templates/vs90/Win32/executable/release_shared.template create mode 100644 ProGen/templates/vs90/Win32/executable/release_static_md.template create mode 100644 ProGen/templates/vs90/Win32/executable/release_static_mt.template create mode 100644 ProGen/templates/vs90/Win32/library/debug_shared.template create mode 100644 ProGen/templates/vs90/Win32/library/debug_static_md.template create mode 100644 ProGen/templates/vs90/Win32/library/debug_static_mt.template create mode 100644 ProGen/templates/vs90/Win32/library/project.properties create mode 100644 ProGen/templates/vs90/Win32/library/project.template create mode 100644 ProGen/templates/vs90/Win32/library/release_shared.template create mode 100644 ProGen/templates/vs90/Win32/library/release_static_md.template create mode 100644 ProGen/templates/vs90/Win32/library/release_static_mt.template create mode 100644 ProGen/templates/vs90/Win32/plugin/debug_shared.template create mode 100644 ProGen/templates/vs90/Win32/plugin/project.properties create mode 100644 ProGen/templates/vs90/Win32/plugin/project.template create mode 100644 ProGen/templates/vs90/Win32/plugin/release_shared.template create mode 100644 ProGen/templates/vs90/Win32/testsuite/debug_shared.template create mode 100644 ProGen/templates/vs90/Win32/testsuite/debug_static_md.template create mode 100644 ProGen/templates/vs90/Win32/testsuite/debug_static_mt.template create mode 100644 ProGen/templates/vs90/Win32/testsuite/project.properties create mode 100644 ProGen/templates/vs90/Win32/testsuite/project.template create mode 100644 ProGen/templates/vs90/Win32/testsuite/release_shared.template create mode 100644 ProGen/templates/vs90/Win32/testsuite/release_static_md.template create mode 100644 ProGen/templates/vs90/Win32/testsuite/release_static_mt.template create mode 100644 ProGen/templates/vs90/WinCE/executable/debug_shared.template create mode 100644 ProGen/templates/vs90/WinCE/executable/debug_static_md.template create mode 100644 ProGen/templates/vs90/WinCE/executable/debug_static_mt.template create mode 100644 ProGen/templates/vs90/WinCE/executable/project.properties create mode 100644 ProGen/templates/vs90/WinCE/executable/project.template create mode 100644 ProGen/templates/vs90/WinCE/executable/release_shared.template create mode 100644 ProGen/templates/vs90/WinCE/executable/release_static_md.template create mode 100644 ProGen/templates/vs90/WinCE/executable/release_static_mt.template create mode 100644 ProGen/templates/vs90/WinCE/library/debug_shared.template create mode 100644 ProGen/templates/vs90/WinCE/library/debug_static_md.template create mode 100644 ProGen/templates/vs90/WinCE/library/debug_static_mt.template create mode 100644 ProGen/templates/vs90/WinCE/library/project.properties create mode 100644 ProGen/templates/vs90/WinCE/library/project.template create mode 100644 ProGen/templates/vs90/WinCE/library/release_shared.template create mode 100644 ProGen/templates/vs90/WinCE/library/release_static_md.template create mode 100644 ProGen/templates/vs90/WinCE/library/release_static_mt.template create mode 100644 ProGen/templates/vs90/WinCE/plugin/debug_shared.template create mode 100644 ProGen/templates/vs90/WinCE/plugin/project.properties create mode 100644 ProGen/templates/vs90/WinCE/plugin/project.template create mode 100644 ProGen/templates/vs90/WinCE/plugin/release_shared.template create mode 100644 ProGen/templates/vs90/WinCE/testsuite/debug_shared.template create mode 100644 ProGen/templates/vs90/WinCE/testsuite/debug_static_md.template create mode 100644 ProGen/templates/vs90/WinCE/testsuite/debug_static_mt.template create mode 100644 ProGen/templates/vs90/WinCE/testsuite/project.properties create mode 100644 ProGen/templates/vs90/WinCE/testsuite/project.template create mode 100644 ProGen/templates/vs90/WinCE/testsuite/release_shared.template create mode 100644 ProGen/templates/vs90/WinCE/testsuite/release_static_md.template create mode 100644 ProGen/templates/vs90/WinCE/testsuite/release_static_mt.template create mode 100644 ProGen/templates/vs90/x64/executable/debug_shared.template create mode 100644 ProGen/templates/vs90/x64/executable/debug_static_md.template create mode 100644 ProGen/templates/vs90/x64/executable/debug_static_mt.template create mode 100644 ProGen/templates/vs90/x64/executable/project.properties create mode 100644 ProGen/templates/vs90/x64/executable/project.template create mode 100644 ProGen/templates/vs90/x64/executable/release_shared.template create mode 100644 ProGen/templates/vs90/x64/executable/release_static_md.template create mode 100644 ProGen/templates/vs90/x64/executable/release_static_mt.template create mode 100644 ProGen/templates/vs90/x64/library/debug_shared.template create mode 100644 ProGen/templates/vs90/x64/library/debug_static_md.template create mode 100644 ProGen/templates/vs90/x64/library/debug_static_mt.template create mode 100644 ProGen/templates/vs90/x64/library/project.properties create mode 100644 ProGen/templates/vs90/x64/library/project.template create mode 100644 ProGen/templates/vs90/x64/library/release_shared.template create mode 100644 ProGen/templates/vs90/x64/library/release_static_md.template create mode 100644 ProGen/templates/vs90/x64/library/release_static_mt.template create mode 100644 ProGen/templates/vs90/x64/plugin/debug_shared.template create mode 100644 ProGen/templates/vs90/x64/plugin/project.properties create mode 100644 ProGen/templates/vs90/x64/plugin/project.template create mode 100644 ProGen/templates/vs90/x64/plugin/release_shared.template create mode 100644 ProGen/templates/vs90/x64/testsuite/debug_shared.template create mode 100644 ProGen/templates/vs90/x64/testsuite/debug_static_md.template create mode 100644 ProGen/templates/vs90/x64/testsuite/debug_static_mt.template create mode 100644 ProGen/templates/vs90/x64/testsuite/project.properties create mode 100644 ProGen/templates/vs90/x64/testsuite/project.template create mode 100644 ProGen/templates/vs90/x64/testsuite/release_shared.template create mode 100644 ProGen/templates/vs90/x64/testsuite/release_static_md.template create mode 100644 ProGen/templates/vs90/x64/testsuite/release_static_mt.template create mode 100644 README create mode 100644 Util/Makefile create mode 100644 Util/Util.progen create mode 100644 Util/Util.vmsbuild create mode 100644 Util/Util.vxbuild create mode 100644 Util/Util_CE_vs90.sln create mode 100644 Util/Util_CE_vs90.vcproj create mode 100644 Util/Util_vs100.sln create mode 100644 Util/Util_vs100.vcxproj create mode 100644 Util/Util_vs100.vcxproj.filters create mode 100644 Util/Util_vs71.sln create mode 100644 Util/Util_vs71.vcproj create mode 100644 Util/Util_vs80.sln create mode 100644 Util/Util_vs80.vcproj create mode 100644 Util/Util_vs90.sln create mode 100644 Util/Util_vs90.vcproj create mode 100644 Util/Util_x64_vs100.sln create mode 100644 Util/Util_x64_vs100.vcxproj create mode 100644 Util/Util_x64_vs100.vcxproj.filters create mode 100644 Util/Util_x64_vs90.sln create mode 100644 Util/Util_x64_vs90.vcproj create mode 100644 Util/dependencies create mode 100644 Util/include/Poco/Util/AbstractConfiguration.h create mode 100644 Util/include/Poco/Util/Application.h create mode 100644 Util/include/Poco/Util/ConfigurationMapper.h create mode 100644 Util/include/Poco/Util/ConfigurationView.h create mode 100644 Util/include/Poco/Util/FilesystemConfiguration.h create mode 100644 Util/include/Poco/Util/HelpFormatter.h create mode 100644 Util/include/Poco/Util/IniFileConfiguration.h create mode 100644 Util/include/Poco/Util/IntValidator.h create mode 100644 Util/include/Poco/Util/LayeredConfiguration.h create mode 100644 Util/include/Poco/Util/LoggingConfigurator.h create mode 100644 Util/include/Poco/Util/LoggingSubsystem.h create mode 100644 Util/include/Poco/Util/MapConfiguration.h create mode 100644 Util/include/Poco/Util/Option.h create mode 100644 Util/include/Poco/Util/OptionCallback.h create mode 100644 Util/include/Poco/Util/OptionException.h create mode 100644 Util/include/Poco/Util/OptionProcessor.h create mode 100644 Util/include/Poco/Util/OptionSet.h create mode 100644 Util/include/Poco/Util/PropertyFileConfiguration.h create mode 100644 Util/include/Poco/Util/RegExpValidator.h create mode 100644 Util/include/Poco/Util/ServerApplication.h create mode 100644 Util/include/Poco/Util/Subsystem.h create mode 100644 Util/include/Poco/Util/SystemConfiguration.h create mode 100644 Util/include/Poco/Util/Timer.h create mode 100644 Util/include/Poco/Util/TimerTask.h create mode 100644 Util/include/Poco/Util/TimerTaskAdapter.h create mode 100644 Util/include/Poco/Util/Units.h create mode 100644 Util/include/Poco/Util/Util.h create mode 100644 Util/include/Poco/Util/Validator.h create mode 100644 Util/include/Poco/Util/WinRegistryConfiguration.h create mode 100644 Util/include/Poco/Util/WinRegistryKey.h create mode 100644 Util/include/Poco/Util/WinService.h create mode 100644 Util/include/Poco/Util/XMLConfiguration.h create mode 100644 Util/samples/Makefile create mode 100644 Util/samples/SampleApp/Makefile create mode 100644 Util/samples/SampleApp/SampleApp.progen create mode 100644 Util/samples/SampleApp/SampleApp.properties create mode 100644 Util/samples/SampleApp/SampleApp.vmsbuild create mode 100644 Util/samples/SampleApp/SampleApp_CE_vs90.vcproj create mode 100644 Util/samples/SampleApp/SampleApp_vs100.vcxproj create mode 100644 Util/samples/SampleApp/SampleApp_vs100.vcxproj.filters create mode 100644 Util/samples/SampleApp/SampleApp_vs71.vcproj create mode 100644 Util/samples/SampleApp/SampleApp_vs80.vcproj create mode 100644 Util/samples/SampleApp/SampleApp_vs90.vcproj create mode 100644 Util/samples/SampleApp/SampleApp_x64_vs100.vcxproj create mode 100644 Util/samples/SampleApp/SampleApp_x64_vs100.vcxproj.filters create mode 100644 Util/samples/SampleApp/SampleApp_x64_vs90.vcproj create mode 100644 Util/samples/SampleApp/src/SampleApp.cpp create mode 100644 Util/samples/SampleServer/Makefile create mode 100644 Util/samples/SampleServer/SampleServer.progen create mode 100644 Util/samples/SampleServer/SampleServer.properties create mode 100644 Util/samples/SampleServer/SampleServer.vmsbuild create mode 100644 Util/samples/SampleServer/SampleServer_CE_vs90.vcproj create mode 100644 Util/samples/SampleServer/SampleServer_vs100.vcxproj create mode 100644 Util/samples/SampleServer/SampleServer_vs100.vcxproj.filters create mode 100644 Util/samples/SampleServer/SampleServer_vs71.vcproj create mode 100644 Util/samples/SampleServer/SampleServer_vs80.vcproj create mode 100644 Util/samples/SampleServer/SampleServer_vs90.vcproj create mode 100644 Util/samples/SampleServer/SampleServer_x64_vs100.vcxproj create mode 100644 Util/samples/SampleServer/SampleServer_x64_vs100.vcxproj.filters create mode 100644 Util/samples/SampleServer/SampleServer_x64_vs90.vcproj create mode 100644 Util/samples/SampleServer/src/SampleServer.cpp create mode 100644 Util/samples/pkill/Makefile create mode 100644 Util/samples/pkill/pkill.progen create mode 100644 Util/samples/pkill/pkill_CE_vs90.vcproj create mode 100644 Util/samples/pkill/pkill_vs100.vcxproj create mode 100644 Util/samples/pkill/pkill_vs100.vcxproj.filters create mode 100644 Util/samples/pkill/pkill_vs71.vcproj create mode 100644 Util/samples/pkill/pkill_vs80.vcproj create mode 100644 Util/samples/pkill/pkill_vs90.vcproj create mode 100644 Util/samples/pkill/pkill_x64_vs100.vcxproj create mode 100644 Util/samples/pkill/pkill_x64_vs100.vcxproj.filters create mode 100644 Util/samples/pkill/pkill_x64_vs90.vcproj create mode 100644 Util/samples/pkill/src/pkill.cpp create mode 100644 Util/samples/samples.progen create mode 100644 Util/samples/samples_CE_vs90.sln create mode 100644 Util/samples/samples_vs100.sln create mode 100644 Util/samples/samples_vs71.sln create mode 100644 Util/samples/samples_vs80.sln create mode 100644 Util/samples/samples_vs90.sln create mode 100644 Util/samples/samples_x64_vs100.sln create mode 100644 Util/samples/samples_x64_vs90.sln create mode 100644 Util/src/AbstractConfiguration.cpp create mode 100644 Util/src/Application.cpp create mode 100644 Util/src/ConfigurationMapper.cpp create mode 100644 Util/src/ConfigurationView.cpp create mode 100644 Util/src/FilesystemConfiguration.cpp create mode 100644 Util/src/HelpFormatter.cpp create mode 100644 Util/src/IniFileConfiguration.cpp create mode 100644 Util/src/IntValidator.cpp create mode 100644 Util/src/LayeredConfiguration.cpp create mode 100644 Util/src/LoggingConfigurator.cpp create mode 100644 Util/src/LoggingSubsystem.cpp create mode 100644 Util/src/MapConfiguration.cpp create mode 100644 Util/src/Option.cpp create mode 100644 Util/src/OptionCallback.cpp create mode 100644 Util/src/OptionException.cpp create mode 100644 Util/src/OptionProcessor.cpp create mode 100644 Util/src/OptionSet.cpp create mode 100644 Util/src/PropertyFileConfiguration.cpp create mode 100644 Util/src/RegExpValidator.cpp create mode 100644 Util/src/ServerApplication.cpp create mode 100644 Util/src/Subsystem.cpp create mode 100644 Util/src/SystemConfiguration.cpp create mode 100644 Util/src/Timer.cpp create mode 100644 Util/src/TimerTask.cpp create mode 100644 Util/src/Validator.cpp create mode 100644 Util/src/WinRegistryConfiguration.cpp create mode 100644 Util/src/WinRegistryKey.cpp create mode 100644 Util/src/WinService.cpp create mode 100644 Util/src/XMLConfiguration.cpp create mode 100644 Util/testsuite/Makefile create mode 100644 Util/testsuite/TestSuite.progen create mode 100644 Util/testsuite/TestSuite.vmsbuild create mode 100644 Util/testsuite/TestSuite.vxbuild create mode 100644 Util/testsuite/TestSuite_CE_vs90.vcproj create mode 100644 Util/testsuite/TestSuite_vs100.vcxproj create mode 100644 Util/testsuite/TestSuite_vs100.vcxproj.filters create mode 100644 Util/testsuite/TestSuite_vs71.vcproj create mode 100644 Util/testsuite/TestSuite_vs80.vcproj create mode 100644 Util/testsuite/TestSuite_vs90.vcproj create mode 100644 Util/testsuite/TestSuite_x64_vs100.vcxproj create mode 100644 Util/testsuite/TestSuite_x64_vs100.vcxproj.filters create mode 100644 Util/testsuite/TestSuite_x64_vs90.vcproj create mode 100644 Util/testsuite/src/AbstractConfigurationTest.cpp create mode 100644 Util/testsuite/src/AbstractConfigurationTest.h create mode 100644 Util/testsuite/src/ConfigurationMapperTest.cpp create mode 100644 Util/testsuite/src/ConfigurationMapperTest.h create mode 100644 Util/testsuite/src/ConfigurationTestSuite.cpp create mode 100644 Util/testsuite/src/ConfigurationTestSuite.h create mode 100644 Util/testsuite/src/ConfigurationViewTest.cpp create mode 100644 Util/testsuite/src/ConfigurationViewTest.h create mode 100644 Util/testsuite/src/Driver.cpp create mode 100644 Util/testsuite/src/FilesystemConfigurationTest.cpp create mode 100644 Util/testsuite/src/FilesystemConfigurationTest.h create mode 100644 Util/testsuite/src/HelpFormatterTest.cpp create mode 100644 Util/testsuite/src/HelpFormatterTest.h create mode 100644 Util/testsuite/src/IniFileConfigurationTest.cpp create mode 100644 Util/testsuite/src/IniFileConfigurationTest.h create mode 100644 Util/testsuite/src/LayeredConfigurationTest.cpp create mode 100644 Util/testsuite/src/LayeredConfigurationTest.h create mode 100644 Util/testsuite/src/LoggingConfiguratorTest.cpp create mode 100644 Util/testsuite/src/LoggingConfiguratorTest.h create mode 100644 Util/testsuite/src/MapConfigurationTest.cpp create mode 100644 Util/testsuite/src/MapConfigurationTest.h create mode 100644 Util/testsuite/src/OptionProcessorTest.cpp create mode 100644 Util/testsuite/src/OptionProcessorTest.h create mode 100644 Util/testsuite/src/OptionSetTest.cpp create mode 100644 Util/testsuite/src/OptionSetTest.h create mode 100644 Util/testsuite/src/OptionTest.cpp create mode 100644 Util/testsuite/src/OptionTest.h create mode 100644 Util/testsuite/src/OptionsTestSuite.cpp create mode 100644 Util/testsuite/src/OptionsTestSuite.h create mode 100644 Util/testsuite/src/PropertyFileConfigurationTest.cpp create mode 100644 Util/testsuite/src/PropertyFileConfigurationTest.h create mode 100644 Util/testsuite/src/SystemConfigurationTest.cpp create mode 100644 Util/testsuite/src/SystemConfigurationTest.h create mode 100644 Util/testsuite/src/TimerTest.cpp create mode 100644 Util/testsuite/src/TimerTest.h create mode 100644 Util/testsuite/src/TimerTestSuite.cpp create mode 100644 Util/testsuite/src/TimerTestSuite.h create mode 100644 Util/testsuite/src/UtilTestSuite.cpp create mode 100644 Util/testsuite/src/UtilTestSuite.h create mode 100644 Util/testsuite/src/ValidatorTest.cpp create mode 100644 Util/testsuite/src/ValidatorTest.h create mode 100644 Util/testsuite/src/WinCEDriver.cpp create mode 100644 Util/testsuite/src/WinConfigurationTest.cpp create mode 100644 Util/testsuite/src/WinConfigurationTest.h create mode 100644 Util/testsuite/src/WinDriver.cpp create mode 100644 Util/testsuite/src/WinRegistryTest.cpp create mode 100644 Util/testsuite/src/WinRegistryTest.h create mode 100644 Util/testsuite/src/WindowsTestSuite.cpp create mode 100644 Util/testsuite/src/WindowsTestSuite.h create mode 100644 Util/testsuite/src/XMLConfigurationTest.cpp create mode 100644 Util/testsuite/src/XMLConfigurationTest.h create mode 100644 VERSION create mode 100644 XML/Makefile create mode 100644 XML/XML.progen create mode 100644 XML/XML.vmsbuild create mode 100644 XML/XML.vxbuild create mode 100644 XML/XML_CE_vs90.sln create mode 100644 XML/XML_CE_vs90.vcproj create mode 100644 XML/XML_vs100.sln create mode 100644 XML/XML_vs100.vcxproj create mode 100644 XML/XML_vs100.vcxproj.filters create mode 100644 XML/XML_vs71.sln create mode 100644 XML/XML_vs71.vcproj create mode 100644 XML/XML_vs80.sln create mode 100644 XML/XML_vs80.vcproj create mode 100644 XML/XML_vs90.sln create mode 100644 XML/XML_vs90.vcproj create mode 100644 XML/XML_x64_vs100.sln create mode 100644 XML/XML_x64_vs100.vcxproj create mode 100644 XML/XML_x64_vs100.vcxproj.filters create mode 100644 XML/XML_x64_vs90.sln create mode 100644 XML/XML_x64_vs90.vcproj create mode 100644 XML/dependencies create mode 100644 XML/include/Poco/DOM/AbstractContainerNode.h create mode 100644 XML/include/Poco/DOM/AbstractNode.h create mode 100644 XML/include/Poco/DOM/Attr.h create mode 100644 XML/include/Poco/DOM/AttrMap.h create mode 100644 XML/include/Poco/DOM/AutoPtr.h create mode 100644 XML/include/Poco/DOM/CDATASection.h create mode 100644 XML/include/Poco/DOM/CharacterData.h create mode 100644 XML/include/Poco/DOM/ChildNodesList.h create mode 100644 XML/include/Poco/DOM/Comment.h create mode 100644 XML/include/Poco/DOM/DOMBuilder.h create mode 100644 XML/include/Poco/DOM/DOMException.h create mode 100644 XML/include/Poco/DOM/DOMImplementation.h create mode 100644 XML/include/Poco/DOM/DOMObject.h create mode 100644 XML/include/Poco/DOM/DOMParser.h create mode 100644 XML/include/Poco/DOM/DOMSerializer.h create mode 100644 XML/include/Poco/DOM/DOMWriter.h create mode 100644 XML/include/Poco/DOM/DTDMap.h create mode 100644 XML/include/Poco/DOM/Document.h create mode 100644 XML/include/Poco/DOM/DocumentEvent.h create mode 100644 XML/include/Poco/DOM/DocumentFragment.h create mode 100644 XML/include/Poco/DOM/DocumentType.h create mode 100644 XML/include/Poco/DOM/Element.h create mode 100644 XML/include/Poco/DOM/ElementsByTagNameList.h create mode 100644 XML/include/Poco/DOM/Entity.h create mode 100644 XML/include/Poco/DOM/EntityReference.h create mode 100644 XML/include/Poco/DOM/Event.h create mode 100644 XML/include/Poco/DOM/EventDispatcher.h create mode 100644 XML/include/Poco/DOM/EventException.h create mode 100644 XML/include/Poco/DOM/EventListener.h create mode 100644 XML/include/Poco/DOM/EventTarget.h create mode 100644 XML/include/Poco/DOM/MutationEvent.h create mode 100644 XML/include/Poco/DOM/NamedNodeMap.h create mode 100644 XML/include/Poco/DOM/Node.h create mode 100644 XML/include/Poco/DOM/NodeAppender.h create mode 100644 XML/include/Poco/DOM/NodeFilter.h create mode 100644 XML/include/Poco/DOM/NodeIterator.h create mode 100644 XML/include/Poco/DOM/NodeList.h create mode 100644 XML/include/Poco/DOM/Notation.h create mode 100644 XML/include/Poco/DOM/ProcessingInstruction.h create mode 100644 XML/include/Poco/DOM/Text.h create mode 100644 XML/include/Poco/DOM/TreeWalker.h create mode 100644 XML/include/Poco/SAX/Attributes.h create mode 100644 XML/include/Poco/SAX/AttributesImpl.h create mode 100644 XML/include/Poco/SAX/ContentHandler.h create mode 100644 XML/include/Poco/SAX/DTDHandler.h create mode 100644 XML/include/Poco/SAX/DeclHandler.h create mode 100644 XML/include/Poco/SAX/DefaultHandler.h create mode 100644 XML/include/Poco/SAX/EntityResolver.h create mode 100644 XML/include/Poco/SAX/EntityResolverImpl.h create mode 100644 XML/include/Poco/SAX/ErrorHandler.h create mode 100644 XML/include/Poco/SAX/InputSource.h create mode 100644 XML/include/Poco/SAX/LexicalHandler.h create mode 100644 XML/include/Poco/SAX/Locator.h create mode 100644 XML/include/Poco/SAX/LocatorImpl.h create mode 100644 XML/include/Poco/SAX/NamespaceSupport.h create mode 100644 XML/include/Poco/SAX/SAXException.h create mode 100644 XML/include/Poco/SAX/SAXParser.h create mode 100644 XML/include/Poco/SAX/WhitespaceFilter.h create mode 100644 XML/include/Poco/SAX/XMLFilter.h create mode 100644 XML/include/Poco/SAX/XMLFilterImpl.h create mode 100644 XML/include/Poco/SAX/XMLReader.h create mode 100644 XML/include/Poco/XML/Name.h create mode 100644 XML/include/Poco/XML/NamePool.h create mode 100644 XML/include/Poco/XML/NamespaceStrategy.h create mode 100644 XML/include/Poco/XML/ParserEngine.h create mode 100644 XML/include/Poco/XML/XML.h create mode 100644 XML/include/Poco/XML/XMLException.h create mode 100644 XML/include/Poco/XML/XMLStream.h create mode 100644 XML/include/Poco/XML/XMLString.h create mode 100644 XML/include/Poco/XML/XMLWriter.h create mode 100644 XML/include/Poco/XML/expat.h create mode 100644 XML/include/Poco/XML/expat_external.h create mode 100644 XML/samples/DOMParser/DOMParser.progen create mode 100644 XML/samples/DOMParser/DOMParser.vmsbuild create mode 100644 XML/samples/DOMParser/DOMParser_CE_vs90.vcproj create mode 100644 XML/samples/DOMParser/DOMParser_vs100.vcxproj create mode 100644 XML/samples/DOMParser/DOMParser_vs100.vcxproj.filters create mode 100644 XML/samples/DOMParser/DOMParser_vs71.vcproj create mode 100644 XML/samples/DOMParser/DOMParser_vs80.vcproj create mode 100644 XML/samples/DOMParser/DOMParser_vs90.vcproj create mode 100644 XML/samples/DOMParser/DOMParser_x64_vs100.vcxproj create mode 100644 XML/samples/DOMParser/DOMParser_x64_vs100.vcxproj.filters create mode 100644 XML/samples/DOMParser/DOMParser_x64_vs90.vcproj create mode 100644 XML/samples/DOMParser/Makefile create mode 100644 XML/samples/DOMParser/src/DOMParser.cpp create mode 100644 XML/samples/DOMWriter/DOMWriter.progen create mode 100644 XML/samples/DOMWriter/DOMWriter.vmsbuild create mode 100644 XML/samples/DOMWriter/DOMWriter_CE_vs90.vcproj create mode 100644 XML/samples/DOMWriter/DOMWriter_vs100.vcxproj create mode 100644 XML/samples/DOMWriter/DOMWriter_vs100.vcxproj.filters create mode 100644 XML/samples/DOMWriter/DOMWriter_vs71.vcproj create mode 100644 XML/samples/DOMWriter/DOMWriter_vs80.vcproj create mode 100644 XML/samples/DOMWriter/DOMWriter_vs90.vcproj create mode 100644 XML/samples/DOMWriter/DOMWriter_x64_vs100.vcxproj create mode 100644 XML/samples/DOMWriter/DOMWriter_x64_vs100.vcxproj.filters create mode 100644 XML/samples/DOMWriter/DOMWriter_x64_vs90.vcproj create mode 100644 XML/samples/DOMWriter/Makefile create mode 100644 XML/samples/DOMWriter/src/DOMWriter.cpp create mode 100644 XML/samples/Makefile create mode 100644 XML/samples/PrettyPrint/Makefile create mode 100644 XML/samples/PrettyPrint/PrettyPrint.progen create mode 100644 XML/samples/PrettyPrint/PrettyPrint.vmsbuild create mode 100644 XML/samples/PrettyPrint/PrettyPrint_CE_vs90.vcproj create mode 100644 XML/samples/PrettyPrint/PrettyPrint_vs100.vcxproj create mode 100644 XML/samples/PrettyPrint/PrettyPrint_vs100.vcxproj.filters create mode 100644 XML/samples/PrettyPrint/PrettyPrint_vs71.vcproj create mode 100644 XML/samples/PrettyPrint/PrettyPrint_vs80.vcproj create mode 100644 XML/samples/PrettyPrint/PrettyPrint_vs90.vcproj create mode 100644 XML/samples/PrettyPrint/PrettyPrint_x64_vs100.vcxproj create mode 100644 XML/samples/PrettyPrint/PrettyPrint_x64_vs100.vcxproj.filters create mode 100644 XML/samples/PrettyPrint/PrettyPrint_x64_vs90.vcproj create mode 100644 XML/samples/PrettyPrint/src/PrettyPrint.cpp create mode 100644 XML/samples/SAXParser/Makefile create mode 100644 XML/samples/SAXParser/SAXParser.progen create mode 100644 XML/samples/SAXParser/SAXParser.vmsbuild create mode 100644 XML/samples/SAXParser/SAXParser_CE_vs90.vcproj create mode 100644 XML/samples/SAXParser/SAXParser_vs100.vcxproj create mode 100644 XML/samples/SAXParser/SAXParser_vs100.vcxproj.filters create mode 100644 XML/samples/SAXParser/SAXParser_vs71.vcproj create mode 100644 XML/samples/SAXParser/SAXParser_vs80.vcproj create mode 100644 XML/samples/SAXParser/SAXParser_vs90.vcproj create mode 100644 XML/samples/SAXParser/SAXParser_x64_vs100.vcxproj create mode 100644 XML/samples/SAXParser/SAXParser_x64_vs100.vcxproj.filters create mode 100644 XML/samples/SAXParser/SAXParser_x64_vs90.vcproj create mode 100644 XML/samples/SAXParser/src/SAXParser.cpp create mode 100644 XML/samples/data/sample.xml create mode 100644 XML/samples/samples.progen create mode 100644 XML/samples/samples_CE_vs90.sln create mode 100644 XML/samples/samples_vs100.sln create mode 100644 XML/samples/samples_vs71.sln create mode 100644 XML/samples/samples_vs80.sln create mode 100644 XML/samples/samples_vs90.sln create mode 100644 XML/samples/samples_x64_vs100.sln create mode 100644 XML/samples/samples_x64_vs90.sln create mode 100644 XML/src/AbstractContainerNode.cpp create mode 100644 XML/src/AbstractNode.cpp create mode 100644 XML/src/Attr.cpp create mode 100644 XML/src/AttrMap.cpp create mode 100644 XML/src/Attributes.cpp create mode 100644 XML/src/AttributesImpl.cpp create mode 100644 XML/src/CDATASection.cpp create mode 100644 XML/src/CharacterData.cpp create mode 100644 XML/src/ChildNodesList.cpp create mode 100644 XML/src/Comment.cpp create mode 100644 XML/src/ContentHandler.cpp create mode 100644 XML/src/DOMBuilder.cpp create mode 100644 XML/src/DOMException.cpp create mode 100644 XML/src/DOMImplementation.cpp create mode 100644 XML/src/DOMObject.cpp create mode 100644 XML/src/DOMParser.cpp create mode 100644 XML/src/DOMSerializer.cpp create mode 100644 XML/src/DOMWriter.cpp create mode 100644 XML/src/DTDHandler.cpp create mode 100644 XML/src/DTDMap.cpp create mode 100644 XML/src/DeclHandler.cpp create mode 100644 XML/src/DefaultHandler.cpp create mode 100644 XML/src/Document.cpp create mode 100644 XML/src/DocumentEvent.cpp create mode 100644 XML/src/DocumentFragment.cpp create mode 100644 XML/src/DocumentType.cpp create mode 100644 XML/src/Element.cpp create mode 100644 XML/src/ElementsByTagNameList.cpp create mode 100644 XML/src/Entity.cpp create mode 100644 XML/src/EntityReference.cpp create mode 100644 XML/src/EntityResolver.cpp create mode 100644 XML/src/EntityResolverImpl.cpp create mode 100644 XML/src/ErrorHandler.cpp create mode 100644 XML/src/Event.cpp create mode 100644 XML/src/EventDispatcher.cpp create mode 100644 XML/src/EventException.cpp create mode 100644 XML/src/EventListener.cpp create mode 100644 XML/src/EventTarget.cpp create mode 100644 XML/src/InputSource.cpp create mode 100644 XML/src/LexicalHandler.cpp create mode 100644 XML/src/Locator.cpp create mode 100644 XML/src/LocatorImpl.cpp create mode 100644 XML/src/MutationEvent.cpp create mode 100644 XML/src/Name.cpp create mode 100644 XML/src/NamePool.cpp create mode 100644 XML/src/NamedNodeMap.cpp create mode 100644 XML/src/NamespaceStrategy.cpp create mode 100644 XML/src/NamespaceSupport.cpp create mode 100644 XML/src/Node.cpp create mode 100644 XML/src/NodeAppender.cpp create mode 100644 XML/src/NodeFilter.cpp create mode 100644 XML/src/NodeIterator.cpp create mode 100644 XML/src/NodeList.cpp create mode 100644 XML/src/Notation.cpp create mode 100644 XML/src/ParserEngine.cpp create mode 100644 XML/src/ProcessingInstruction.cpp create mode 100644 XML/src/SAXException.cpp create mode 100644 XML/src/SAXParser.cpp create mode 100644 XML/src/Text.cpp create mode 100644 XML/src/TreeWalker.cpp create mode 100644 XML/src/WhitespaceFilter.cpp create mode 100644 XML/src/XMLException.cpp create mode 100644 XML/src/XMLFilter.cpp create mode 100644 XML/src/XMLFilterImpl.cpp create mode 100644 XML/src/XMLReader.cpp create mode 100644 XML/src/XMLString.cpp create mode 100644 XML/src/XMLWriter.cpp create mode 100644 XML/src/ascii.h create mode 100644 XML/src/asciitab.h create mode 100644 XML/src/expat_config.h create mode 100644 XML/src/iasciitab.h create mode 100644 XML/src/internal.h create mode 100644 XML/src/latin1tab.h create mode 100644 XML/src/nametab.h create mode 100644 XML/src/utf8tab.h create mode 100644 XML/src/xmlparse.cpp create mode 100644 XML/src/xmlrole.c create mode 100644 XML/src/xmlrole.h create mode 100644 XML/src/xmltok.c create mode 100644 XML/src/xmltok.h create mode 100644 XML/src/xmltok_impl.c create mode 100644 XML/src/xmltok_impl.h create mode 100644 XML/src/xmltok_ns.c create mode 100644 XML/testsuite/Makefile create mode 100644 XML/testsuite/TestSuite.progen create mode 100644 XML/testsuite/TestSuite.vmsbuild create mode 100644 XML/testsuite/TestSuite.vxbuild create mode 100644 XML/testsuite/TestSuite_CE_vs90.vcproj create mode 100644 XML/testsuite/TestSuite_vs100.vcxproj create mode 100644 XML/testsuite/TestSuite_vs100.vcxproj.filters create mode 100644 XML/testsuite/TestSuite_vs71.vcproj create mode 100644 XML/testsuite/TestSuite_vs80.vcproj create mode 100644 XML/testsuite/TestSuite_vs90.vcproj create mode 100644 XML/testsuite/TestSuite_x64_vs100.vcxproj create mode 100644 XML/testsuite/TestSuite_x64_vs100.vcxproj.filters create mode 100644 XML/testsuite/TestSuite_x64_vs90.vcproj create mode 100644 XML/testsuite/rss.xml create mode 100644 XML/testsuite/src/AttributesImplTest.cpp create mode 100644 XML/testsuite/src/AttributesImplTest.h create mode 100644 XML/testsuite/src/ChildNodesTest.cpp create mode 100644 XML/testsuite/src/ChildNodesTest.h create mode 100644 XML/testsuite/src/DOMTestSuite.cpp create mode 100644 XML/testsuite/src/DOMTestSuite.h create mode 100644 XML/testsuite/src/DocumentTest.cpp create mode 100644 XML/testsuite/src/DocumentTest.h create mode 100644 XML/testsuite/src/DocumentTypeTest.cpp create mode 100644 XML/testsuite/src/DocumentTypeTest.h create mode 100644 XML/testsuite/src/Driver.cpp create mode 100644 XML/testsuite/src/ElementTest.cpp create mode 100644 XML/testsuite/src/ElementTest.h create mode 100644 XML/testsuite/src/EventTest.cpp create mode 100644 XML/testsuite/src/EventTest.h create mode 100644 XML/testsuite/src/NamePoolTest.cpp create mode 100644 XML/testsuite/src/NamePoolTest.h create mode 100644 XML/testsuite/src/NameTest.cpp create mode 100644 XML/testsuite/src/NameTest.h create mode 100644 XML/testsuite/src/NamespaceSupportTest.cpp create mode 100644 XML/testsuite/src/NamespaceSupportTest.h create mode 100644 XML/testsuite/src/NodeAppenderTest.cpp create mode 100644 XML/testsuite/src/NodeAppenderTest.h create mode 100644 XML/testsuite/src/NodeIteratorTest.cpp create mode 100644 XML/testsuite/src/NodeIteratorTest.h create mode 100644 XML/testsuite/src/NodeTest.cpp create mode 100644 XML/testsuite/src/NodeTest.h create mode 100644 XML/testsuite/src/ParserWriterTest.cpp create mode 100644 XML/testsuite/src/ParserWriterTest.h create mode 100644 XML/testsuite/src/SAXParserTest.cpp create mode 100644 XML/testsuite/src/SAXParserTest.h create mode 100644 XML/testsuite/src/SAXTestSuite.cpp create mode 100644 XML/testsuite/src/SAXTestSuite.h create mode 100644 XML/testsuite/src/TextTest.cpp create mode 100644 XML/testsuite/src/TextTest.h create mode 100644 XML/testsuite/src/TreeWalkerTest.cpp create mode 100644 XML/testsuite/src/TreeWalkerTest.h create mode 100644 XML/testsuite/src/WinCEDriver.cpp create mode 100644 XML/testsuite/src/WinDriver.cpp create mode 100644 XML/testsuite/src/XMLTestSuite.cpp create mode 100644 XML/testsuite/src/XMLTestSuite.h create mode 100644 XML/testsuite/src/XMLWriterTest.cpp create mode 100644 XML/testsuite/src/XMLWriterTest.h create mode 100644 Zip/Makefile create mode 100644 Zip/Zip.progen create mode 100644 Zip/Zip.vmsbuild create mode 100644 Zip/Zip.vxbuild create mode 100644 Zip/Zip_CE_vs90.sln create mode 100644 Zip/Zip_CE_vs90.vcproj create mode 100644 Zip/Zip_VS71.sln create mode 100644 Zip/Zip_VS71.vcproj create mode 100644 Zip/Zip_VS80.sln create mode 100644 Zip/Zip_VS80.vcproj create mode 100644 Zip/Zip_vs100.sln create mode 100644 Zip/Zip_vs100.vcxproj create mode 100644 Zip/Zip_vs100.vcxproj.filters create mode 100644 Zip/Zip_vs90.sln create mode 100644 Zip/Zip_vs90.vcproj create mode 100644 Zip/Zip_x64_vs100.sln create mode 100644 Zip/Zip_x64_vs100.vcxproj create mode 100644 Zip/Zip_x64_vs100.vcxproj.filters create mode 100644 Zip/Zip_x64_vs90.sln create mode 100644 Zip/Zip_x64_vs90.vcproj create mode 100644 Zip/dependencies create mode 100644 Zip/doc/ZIP Spec.txt create mode 100644 Zip/doc/ZipUserGuide.page create mode 100644 Zip/include/Poco/Zip/Add.h create mode 100644 Zip/include/Poco/Zip/AutoDetectStream.h create mode 100644 Zip/include/Poco/Zip/Compress.h create mode 100644 Zip/include/Poco/Zip/Decompress.h create mode 100644 Zip/include/Poco/Zip/Delete.h create mode 100644 Zip/include/Poco/Zip/Keep.h create mode 100644 Zip/include/Poco/Zip/ParseCallback.h create mode 100644 Zip/include/Poco/Zip/PartialStream.h create mode 100644 Zip/include/Poco/Zip/Rename.h create mode 100644 Zip/include/Poco/Zip/Replace.h create mode 100644 Zip/include/Poco/Zip/SkipCallback.h create mode 100644 Zip/include/Poco/Zip/Zip.h create mode 100644 Zip/include/Poco/Zip/ZipArchive.h create mode 100644 Zip/include/Poco/Zip/ZipArchiveInfo.h create mode 100644 Zip/include/Poco/Zip/ZipCommon.h create mode 100644 Zip/include/Poco/Zip/ZipDataInfo.h create mode 100644 Zip/include/Poco/Zip/ZipException.h create mode 100644 Zip/include/Poco/Zip/ZipFileInfo.h create mode 100644 Zip/include/Poco/Zip/ZipLocalFileHeader.h create mode 100644 Zip/include/Poco/Zip/ZipManipulator.h create mode 100644 Zip/include/Poco/Zip/ZipOperation.h create mode 100644 Zip/include/Poco/Zip/ZipStream.h create mode 100644 Zip/include/Poco/Zip/ZipUtil.h create mode 100644 Zip/samples/Makefile create mode 100644 Zip/samples/samples.progen create mode 100644 Zip/samples/samples_CE_vs90.sln create mode 100644 Zip/samples/samples_vs100.sln create mode 100644 Zip/samples/samples_vs71.sln create mode 100644 Zip/samples/samples_vs80.sln create mode 100644 Zip/samples/samples_vs90.sln create mode 100644 Zip/samples/samples_x64_vs100.sln create mode 100644 Zip/samples/samples_x64_vs90.sln create mode 100644 Zip/samples/unzip/Makefile create mode 100644 Zip/samples/unzip/src/unzip.cpp create mode 100644 Zip/samples/unzip/unzip.progen create mode 100644 Zip/samples/unzip/unzip_CE_vs90.vcproj create mode 100644 Zip/samples/unzip/unzip_vs100.vcxproj create mode 100644 Zip/samples/unzip/unzip_vs100.vcxproj.filters create mode 100644 Zip/samples/unzip/unzip_vs71.vcproj create mode 100644 Zip/samples/unzip/unzip_vs80.vcproj create mode 100644 Zip/samples/unzip/unzip_vs90.vcproj create mode 100644 Zip/samples/unzip/unzip_x64_vs100.vcxproj create mode 100644 Zip/samples/unzip/unzip_x64_vs100.vcxproj.filters create mode 100644 Zip/samples/unzip/unzip_x64_vs90.vcproj create mode 100644 Zip/samples/zip/Makefile create mode 100644 Zip/samples/zip/src/zip.cpp create mode 100644 Zip/samples/zip/zip.progen create mode 100644 Zip/samples/zip/zip_CE_vs90.vcproj create mode 100644 Zip/samples/zip/zip_vs100.vcxproj create mode 100644 Zip/samples/zip/zip_vs100.vcxproj.filters create mode 100644 Zip/samples/zip/zip_vs71.vcproj create mode 100644 Zip/samples/zip/zip_vs80.vcproj create mode 100644 Zip/samples/zip/zip_vs90.vcproj create mode 100644 Zip/samples/zip/zip_x64_vs100.vcxproj create mode 100644 Zip/samples/zip/zip_x64_vs100.vcxproj.filters create mode 100644 Zip/samples/zip/zip_x64_vs90.vcproj create mode 100644 Zip/src/Add.cpp create mode 100644 Zip/src/AutoDetectStream.cpp create mode 100644 Zip/src/Compress.cpp create mode 100644 Zip/src/Decompress.cpp create mode 100644 Zip/src/Delete.cpp create mode 100644 Zip/src/Keep.cpp create mode 100644 Zip/src/ParseCallback.cpp create mode 100644 Zip/src/PartialStream.cpp create mode 100644 Zip/src/Rename.cpp create mode 100644 Zip/src/Replace.cpp create mode 100644 Zip/src/SkipCallback.cpp create mode 100644 Zip/src/ZipArchive.cpp create mode 100644 Zip/src/ZipArchiveInfo.cpp create mode 100644 Zip/src/ZipCommon.cpp create mode 100644 Zip/src/ZipDataInfo.cpp create mode 100644 Zip/src/ZipException.cpp create mode 100644 Zip/src/ZipFileInfo.cpp create mode 100644 Zip/src/ZipLocalFileHeader.cpp create mode 100644 Zip/src/ZipManipulator.cpp create mode 100644 Zip/src/ZipOperation.cpp create mode 100644 Zip/src/ZipStream.cpp create mode 100644 Zip/src/ZipUtil.cpp create mode 100644 Zip/testsuite/Makefile create mode 100644 Zip/testsuite/TestSuite.progen create mode 100644 Zip/testsuite/TestSuite.vmsbuild create mode 100644 Zip/testsuite/TestSuite.vxbuild create mode 100644 Zip/testsuite/TestSuite_CE_vs90.vcproj create mode 100644 Zip/testsuite/TestSuite_VS71.vcproj create mode 100644 Zip/testsuite/TestSuite_VS80.vcproj create mode 100644 Zip/testsuite/TestSuite_vs100.vcxproj create mode 100644 Zip/testsuite/TestSuite_vs100.vcxproj.filters create mode 100644 Zip/testsuite/TestSuite_vs90.vcproj create mode 100644 Zip/testsuite/TestSuite_x64_vs100.vcxproj create mode 100644 Zip/testsuite/TestSuite_x64_vs100.vcxproj.filters create mode 100644 Zip/testsuite/TestSuite_x64_vs90.vcproj create mode 100644 Zip/testsuite/appinf.zip create mode 100644 Zip/testsuite/appinf.zip.bak create mode 100644 Zip/testsuite/comment.zip create mode 100644 Zip/testsuite/data/data.zip create mode 100644 Zip/testsuite/data/doc.zip create mode 100644 Zip/testsuite/data/test.zip create mode 100644 Zip/testsuite/pocobin.zip create mode 100644 Zip/testsuite/some/recursive/dir/test.file create mode 100644 Zip/testsuite/src/CompressTest.cpp create mode 100644 Zip/testsuite/src/CompressTest.h create mode 100644 Zip/testsuite/src/Driver.cpp create mode 100644 Zip/testsuite/src/PartialStreamTest.cpp create mode 100644 Zip/testsuite/src/PartialStreamTest.h create mode 100644 Zip/testsuite/src/WinCEDriver.cpp create mode 100644 Zip/testsuite/src/WinDriver.cpp create mode 100644 Zip/testsuite/src/ZipTest.cpp create mode 100644 Zip/testsuite/src/ZipTest.h create mode 100644 Zip/testsuite/src/ZipTestSuite.cpp create mode 100644 Zip/testsuite/src/ZipTestSuite.h create mode 100644 Zip/testsuite/test.dat create mode 100644 Zip/testsuite/testdir/testdir2/testfile3.txt create mode 100644 Zip/testsuite/testdir/testfile.txt create mode 100644 Zip/testsuite/testdir/testfile2.txt create mode 100644 Zip/testsuite/testfile.txt create mode 100644 Zip/testsuite/testfile2.txt create mode 100644 Zip/testsuite/testfile3.txt create mode 100644 build/config/AIX create mode 100644 build/config/ARM-Linux create mode 100644 build/config/Android create mode 100644 build/config/Angstrom create mode 100644 build/config/CEGCCARM create mode 100644 build/config/CYGWIN create mode 100644 build/config/CygLinux create mode 100644 build/config/Darwin create mode 100644 build/config/Darwin-clang create mode 100644 build/config/Darwin32 create mode 100644 build/config/Darwin32-clang create mode 100644 build/config/Darwin64 create mode 100644 build/config/Darwin64-clang create mode 100644 build/config/DigiEL create mode 100644 build/config/ELDK create mode 100644 build/config/FreeBSD create mode 100644 build/config/GCCEMBEDLINUX create mode 100644 build/config/HP-UX create mode 100644 build/config/Linux create mode 100644 build/config/MinGW create mode 100644 build/config/MinGW-CrossEnv create mode 100644 build/config/NIOS2-Linux create mode 100644 build/config/OSF1 create mode 100644 build/config/PPC-Linux create mode 100644 build/config/QNX create mode 100644 build/config/SH-Linux create mode 100644 build/config/SSV-LINUX create mode 100644 build/config/SunOS create mode 100644 build/config/SunOS-GCC create mode 100644 build/config/SunOS-SunForte create mode 100644 build/config/SunOS-SunStudio create mode 100644 build/config/SunOS-SunStudio11 create mode 100644 build/config/SunOS-stdcxx-x86_64 create mode 100644 build/config/iPhone create mode 100644 build/config/iPhoneSimulator create mode 100644 build/rules/compile create mode 100644 build/rules/dylib create mode 100644 build/rules/exec create mode 100644 build/rules/global create mode 100644 build/rules/lib create mode 100644 build/rules/sample create mode 100644 build/script/makedepend.SunCC create mode 100644 build/script/makedepend.aCC create mode 100644 build/script/makedepend.clang create mode 100644 build/script/makedepend.cxx create mode 100644 build/script/makedepend.gcc create mode 100644 build/script/makedepend.qcc create mode 100644 build/script/makedepend.xlC create mode 100644 build/script/makeldpath create mode 100644 build/script/projname create mode 100644 build/script/shlibln create mode 100644 build/script/vxprogen create mode 100644 build/vms/build.com create mode 100644 build/vms/pococc.com create mode 100644 build/vms/pococxx.com create mode 100644 build/vms/pocolib.com create mode 100644 build/vms/pocolnk.com create mode 100644 build/vxconfig/PPC440diab_debug create mode 100644 build/vxconfig/PPC440diab_release create mode 100644 build_CE_vs90.cmd create mode 100644 build_vcexpress2008.cmd create mode 100644 build_vcexpress2010.cmd create mode 100644 build_vs100.cmd create mode 100644 build_vs71.cmd create mode 100644 build_vs80.cmd create mode 100644 build_vs90.cmd create mode 100644 buildvms.com create mode 100644 buildwin.cmd create mode 100644 components create mode 100644 configure create mode 100644 contrib/cmake/CMakeLists.txt create mode 100644 contrib/cmake/PocoConfig.cmake create mode 100644 contrib/cmake/README create mode 100644 contrib/poco-doc.pl create mode 100644 doc/00100-GuidedTour.page create mode 100644 doc/00200-GettingStarted.page create mode 100644 doc/80100-HowToGetHelp.page create mode 100644 doc/90100-Acknowledgements.page create mode 100644 doc/99100-ReleaseNotes.page create mode 100644 doc/99150-GMakeBuildNotes.page create mode 100644 doc/99150-WindowsPlatformNotes.page create mode 100644 doc/99200-WinCEPlatformNotes.page create mode 100644 doc/99250-VxWorksPlatformNotes.page create mode 100644 doc/99300-AndroidPlatformNotes.page create mode 100644 doc/Acknowledgements.html create mode 100644 libversion create mode 100644 patches/AIX/xlC8.diff create mode 100644 release/script/cpproj create mode 100644 release/script/mkrelease diff --git a/ApacheConnector/ApacheConnector.progen b/ApacheConnector/ApacheConnector.progen new file mode 100644 index 000000000..2105ee912 --- /dev/null +++ b/ApacheConnector/ApacheConnector.progen @@ -0,0 +1,17 @@ +vc.project.guid = 9866EE28-0612-4746-BD35-3B15B0AF7267 +vc.project.name = ApacheConnector +vc.project.target = mod_poco +vc.project.type = library +vc.project.pocobase = .. +vc.project.outdir = ${vc.project.pocobase} +vc.project.platforms = Win32, x64 +vc.project.configurations = debug_shared, release_shared +vc.project.prototype = ApacheConnector_vs90.vcproj +vc.project.compiler.include = ..\\Foundation\\include;..\\Net\\include;..\\Util\\include +vc.project.compiler.defines = +vc.project.compiler.defines.shared = ApacheHandlers_EXPORTS +vc.project.compiler.defines.debug_shared = ${vc.project.compiler.defines.shared} +vc.project.compiler.defines.release_shared = ${vc.project.compiler.defines.shared} +vc.project.linker.dependencies.Win32 = libapr-1.lib libaprutil-1.lib libhttpd.lib +vc.project.linker.dependencies.x64 = libapr-1.lib libaprutil-1.lib libhttpd.lib +vc.solution.create = true diff --git a/ApacheConnector/ApacheConnector_VS71.sln b/ApacheConnector/ApacheConnector_VS71.sln new file mode 100644 index 000000000..37d88f2ad --- /dev/null +++ b/ApacheConnector/ApacheConnector_VS71.sln @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ApacheConnector", "ApacheConnector_vs71.vcproj", "{9866EE28-0612-4746-BD35-3B15B0AF7267}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + debug_shared = debug_shared + release_shared = release_shared + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared.ActiveCfg = debug_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared.Build.0 = debug_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared.ActiveCfg = release_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared.Build.0 = release_shared|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/ApacheConnector/ApacheConnector_VS71.vcproj b/ApacheConnector/ApacheConnector_VS71.vcproj new file mode 100644 index 000000000..9ea2b9085 --- /dev/null +++ b/ApacheConnector/ApacheConnector_VS71.vcproj @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ApacheConnector/ApacheConnector_VS80.sln b/ApacheConnector/ApacheConnector_VS80.sln new file mode 100644 index 000000000..2113a4f7b --- /dev/null +++ b/ApacheConnector/ApacheConnector_VS80.sln @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ApacheConnector", "ApacheConnector_vs80.vcproj", "{9866EE28-0612-4746-BD35-3B15B0AF7267}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|Win32.Build.0 = release_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|Win32.Deploy.0 = release_shared|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ApacheConnector/ApacheConnector_VS80.vcproj b/ApacheConnector/ApacheConnector_VS80.vcproj new file mode 100644 index 000000000..0462480f5 --- /dev/null +++ b/ApacheConnector/ApacheConnector_VS80.vcproj @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ApacheConnector/ApacheConnector_vs100.sln b/ApacheConnector/ApacheConnector_vs100.sln new file mode 100644 index 000000000..c34927b6b --- /dev/null +++ b/ApacheConnector/ApacheConnector_vs100.sln @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ApacheConnector", "ApacheConnector_vs100.vcxproj", "{9866EE28-0612-4746-BD35-3B15B0AF7267}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|Win32.Build.0 = release_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|Win32.Deploy.0 = release_shared|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ApacheConnector/ApacheConnector_vs100.vcxproj b/ApacheConnector/ApacheConnector_vs100.vcxproj new file mode 100644 index 000000000..2900de385 --- /dev/null +++ b/ApacheConnector/ApacheConnector_vs100.vcxproj @@ -0,0 +1,133 @@ + + + + + debug_shared + Win32 + + + release_shared + Win32 + + + + ApacheConnector + {9866EE28-0612-4746-BD35-3B15B0AF7267} + ApacheConnector + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + ..\bin\ + obj\$(Configuration)\ + true + ..\bin\ + obj\$(Configuration)\ + false + mod_pocod + mod_poco + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;ApacheHandlers_EXPORTS;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + ..\bin\mod_pocod.dll + true + true + ..\bin\mod_pocod.pdb + ..\lib;%(AdditionalLibraryDirectories) + Console + ..\lib\mod_pocod.lib + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;ApacheHandlers_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + ..\bin\mod_poco.dll + true + false + ..\lib;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib\mod_poco.lib + MachineX86 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ApacheConnector/ApacheConnector_vs100.vcxproj.filters b/ApacheConnector/ApacheConnector_vs100.vcxproj.filters new file mode 100644 index 000000000..0301c105e --- /dev/null +++ b/ApacheConnector/ApacheConnector_vs100.vcxproj.filters @@ -0,0 +1,57 @@ + + + + + {1b41dc76-2d5c-4abc-9fcf-40bf92616da2} + + + {f4221366-b450-4113-b43d-1303b840e629} + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/ApacheConnector/ApacheConnector_vs90.sln b/ApacheConnector/ApacheConnector_vs90.sln new file mode 100644 index 000000000..10d8df6a0 --- /dev/null +++ b/ApacheConnector/ApacheConnector_vs90.sln @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ApacheConnector", "ApacheConnector_vs90.vcproj", "{9866EE28-0612-4746-BD35-3B15B0AF7267}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|Win32.Build.0 = release_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|Win32.Deploy.0 = release_shared|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ApacheConnector/ApacheConnector_vs90.vcproj b/ApacheConnector/ApacheConnector_vs90.vcproj new file mode 100644 index 000000000..034044736 --- /dev/null +++ b/ApacheConnector/ApacheConnector_vs90.vcproj @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ApacheConnector/ApacheConnector_x64_vs100.sln b/ApacheConnector/ApacheConnector_x64_vs100.sln new file mode 100644 index 000000000..1c1949c34 --- /dev/null +++ b/ApacheConnector/ApacheConnector_x64_vs100.sln @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ApacheConnector", "ApacheConnector_x64_vs100.vcxproj", "{9866EE28-0612-4746-BD35-3B15B0AF7267}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|x64.Build.0 = debug_shared|x64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|x64.ActiveCfg = release_shared|x64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|x64.Build.0 = release_shared|x64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|x64.Deploy.0 = release_shared|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ApacheConnector/ApacheConnector_x64_vs100.vcxproj b/ApacheConnector/ApacheConnector_x64_vs100.vcxproj new file mode 100644 index 000000000..b6a277775 --- /dev/null +++ b/ApacheConnector/ApacheConnector_x64_vs100.vcxproj @@ -0,0 +1,133 @@ + + + + + debug_shared + x64 + + + release_shared + x64 + + + + ApacheConnector + {9866EE28-0612-4746-BD35-3B15B0AF7267} + ApacheConnector + Win32Proj + + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + ..\bin64\ + obj64\$(Configuration)\ + true + ..\bin64\ + obj64\$(Configuration)\ + false + mod_poco64d + mod_poco64 + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;ApacheHandlers_EXPORTS;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + ..\bin64\mod_poco64d.dll + true + true + ..\bin64\mod_poco64d.pdb + ..\lib64;%(AdditionalLibraryDirectories) + Console + ..\lib64\mod_pocod.lib + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;ApacheHandlers_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + ..\bin64\mod_poco64.dll + true + false + ..\lib64;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib64\mod_poco.lib + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ApacheConnector/ApacheConnector_x64_vs100.vcxproj.filters b/ApacheConnector/ApacheConnector_x64_vs100.vcxproj.filters new file mode 100644 index 000000000..be7507947 --- /dev/null +++ b/ApacheConnector/ApacheConnector_x64_vs100.vcxproj.filters @@ -0,0 +1,57 @@ + + + + + {8ea424b5-ec7e-439b-a7be-1597c51e51ed} + + + {bcfc1d48-58d4-4a01-9e80-15f35f162748} + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/ApacheConnector/ApacheConnector_x64_vs90.sln b/ApacheConnector/ApacheConnector_x64_vs90.sln new file mode 100644 index 000000000..57e107e02 --- /dev/null +++ b/ApacheConnector/ApacheConnector_x64_vs90.sln @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ApacheConnector", "ApacheConnector_x64_vs90.vcproj", "{9866EE28-0612-4746-BD35-3B15B0AF7267}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|x64.Build.0 = debug_shared|x64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|x64.ActiveCfg = release_shared|x64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|x64.Build.0 = release_shared|x64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|x64.Deploy.0 = release_shared|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ApacheConnector/ApacheConnector_x64_vs90.vcproj b/ApacheConnector/ApacheConnector_x64_vs90.vcproj new file mode 100644 index 000000000..f0f9ebc54 --- /dev/null +++ b/ApacheConnector/ApacheConnector_x64_vs90.vcproj @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ApacheConnector/Makefile b/ApacheConnector/Makefile new file mode 100644 index 000000000..eefcce048 --- /dev/null +++ b/ApacheConnector/Makefile @@ -0,0 +1,28 @@ +# +# Makefile +# +# $Id: //poco/1.4/ApacheConnector/Makefile#2 $ +# +# Makefile for ApacheConnector +# + +include $(POCO_BASE)/build/rules/global + +SYSFLAGS += -I/usr/include/apache2 \ + -I/usr/include/apr-1.0 -I/usr/include/apr-1 -I/usr/include/apr-0 + +ifeq ($(OSNAME),Darwin) +SHAREDLIBLINKEXT = .so +DYLIB += -flat_namespace -undefined suppress +endif + +objects = ApacheRequestHandlerFactory \ + ApacheServerRequest ApacheServerResponse \ + ApacheStream ApacheConnector ApacheChannel \ + ApacheApplication ApacheChannel + +target = mod_poco +target_version = 1 +target_libs = PocoUtil PocoNet PocoXML PocoFoundation + +include $(POCO_BASE)/build/rules/dylib diff --git a/ApacheConnector/dependencies b/ApacheConnector/dependencies new file mode 100644 index 000000000..afd736493 --- /dev/null +++ b/ApacheConnector/dependencies @@ -0,0 +1,4 @@ +Net +Util +XML +Foundation diff --git a/ApacheConnector/doc/ApacheConnectorUserGuide.page b/ApacheConnector/doc/ApacheConnectorUserGuide.page new file mode 100644 index 000000000..b045dc54e --- /dev/null +++ b/ApacheConnector/doc/ApacheConnectorUserGuide.page @@ -0,0 +1,148 @@ +POCO ApacheConnector User Guide +POCO ApacheConnector + +!!!Introduction +ApacheConnector (<[mod_poco]>) is an Apache module that allows one to write Apache server extensions using +the POCO Net HTTPServer framework. Almost any subclass of Poco::Net::HTTPRequestHandler written +for Poco::Net::HTTPServer can be used with ApacheConnector. For this to work, the request handler +subclass, together with its factory (Poco::Net::HTTPRequestHandlerFactory) must be contained +in a shared library. The ApacheConnector uses the Poco::ClassLoader to load request handler +factories from shared libraries. + +!!!Adding ApacheConnector to Apache +ApacheConnector is implemented as an ordinary Apache 2 module, named <[mod_poco]>. +To add <[mod_poco]> to Apache, add the following entry to the Apache configuration +file (usually <[httpd.conf]>): + + LoadModule poco_module modules/mod_pocod.so +---- + +!!!Configuring ApacheConnector +ApacheConnector must be able to find shared libraries containing request handler, as well +as optional configuration files. ApacheConnector provides an Poco::Util::Application class +to request handlers that can be used to access configuration data, loaded from configuration +files. + +!!Request Handler Configuration + +To have the ApacheConnector load a request handler class, the <[AddPocoRequestHandler]> directive +is used in the Apache configuration file: + + AddPocoRequestHandler ... +---- + +The first argument specifies the name of the request handler factory class. The second argument +contains the path of the shared library containing the request handler. +The third (and optionally following) argument(s) specify the URI paths handled by the +request handler. For example: + + AddPocoRequestHandler TimeRequestHandlerFactory p:/Poco/ApacheConnector/samples/TimeServer/bin/TimeServerd.dll /time +---- + +loads the TimeRequestHandlerFactory from TimeServerd.dll. Whenever a request for a URI starting with "/time" +is sent by a client, this request will be handled by the TimeRequestHandler. + +!!Configuration Files +ApacheConnector can also load POCO configuration files (.ini, .properties or .xml) for later use by +request handlers. This is done using the <[AddPocoConfig]> directive: + + AddPocoConfig +---- + +where specifies the full path to the configuration file. + +In a request handler, the configuration properties loaded this way can be accessed using: + + Poco::Util::Application& app = Poco::Util::Application::instance(); + std::string myProp = app.config().getString("MyProperty"); +---- + +!!!Logging in Request Handlers +ApacheConnector provides a special logging channel that logs to Apache's error log file. +This channel is set as the root channel when the ApacheConnector is loaded, so every +logger will automatically inherit this channel. + + +!!!A Sample Request Handler +Following is a sample for a request handler implementation. The complete sample project can be found in the +<[samples]> subdirectory of the ApacheConnector directory. + + #include "Poco/Net/HTTPServer.h" + #include "Poco/Net/HTTPRequestHandler.h" + #include "Poco/Net/HTTPRequestHandlerFactory.h" + #include "Poco/Net/HTTPServerRequest.h" + #include "Poco/Net/HTTPServerResponse.h" + #include "Poco/Timestamp.h" + #include "Poco/DateTimeFormatter.h" + #include "Poco/DateTimeFormat.h" + #include "Poco/ClassLibrary.h" + + + using Poco::Net::HTTPRequestHandler; + using Poco::Net::HTTPRequestHandlerFactory; + using Poco::Net::HTTPServerRequest; + using Poco::Net::HTTPServerResponse; + using Poco::Timestamp; + using Poco::DateTimeFormatter; + using Poco::DateTimeFormat; + + + class TimeRequestHandler: public HTTPRequestHandler + /// Return a HTML document with the current date and time. + { + public: + TimeRequestHandler() + { + } + + void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) + { + Timestamp now; + std::string dt(DateTimeFormatter::format(now, DateTimeFormat::SORTABLE_FORMAT)); + + response.setChunkedTransferEncoding(true); + response.setContentType("text/html"); + + std::ostream& ostr = response.send(); + ostr << "TimeServer powered by POCO ApacheConnector"; + ostr << ""; + ostr << "

"; + ostr << dt; + ostr << "

"; + } + }; + + + class TimeRequestHandlerFactory: public HTTPRequestHandlerFactory + { + public: + TimeRequestHandlerFactory() + { + } + + HTTPRequestHandler* createRequestHandler(const HTTPServerRequest& request) + { + return new TimeRequestHandler; + } + }; + + + POCO_BEGIN_MANIFEST(HTTPRequestHandlerFactory) + POCO_EXPORT_CLASS(TimeRequestHandlerFactory) + POCO_END_MANIFEST +---- + +Both the TimeRequestHandler class and the TimeRequestHandlerFactory class are the same as for +an ordinary Poco::Net::HTTPServer. The only addition in this sample is the definition +of the class loader manifest, which allows the ApacheConnector to load the TimeRequestHandlerFactory +class from the shared library. + +To run this sample, the following directives must be added to the Apache configuration files: + + LoadModule poco_module p:/Poco/ApacheConnector/bin/mod_poco.so + AddPocoRequestHandler TimeRequestHandlerFactory p:/Poco/ApacheConnector/samples/TimeServer/bin/TimeServer.dll /time +---- + +You'll have to change the paths to <[mod_poco.so]> and <[TimeServer.dll]> to match your +own environment. +To test the sample, simply direct your favorite web browser to . diff --git a/ApacheConnector/include/ApacheApplication.h b/ApacheConnector/include/ApacheApplication.h new file mode 100644 index 000000000..0aabd1eae --- /dev/null +++ b/ApacheConnector/include/ApacheApplication.h @@ -0,0 +1,78 @@ +// +// ApacheApplication.h +// +// $Id: //poco/1.4/ApacheConnector/include/ApacheApplication.h#2 $ +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef ApacheConnector_ApacheApplication_INCLUDED +#define ApacheConnector_ApacheApplication_INCLUDED + + +#include "ApacheRequestHandlerFactory.h" +#include "Poco/Util/Application.h" +#include "Poco/Mutex.h" + + +class ApacheApplication: public Poco::Util::Application +{ +public: + ApacheApplication(); + /// Creates the ApacheApplication and sets the + /// ApacheChannel as the root logger channel. + + ~ApacheApplication(); + /// Destroys the ApacheApplication. + + void setup(); + /// Initializes the application if called for the first + /// time; does nothing in later calls. + + ApacheRequestHandlerFactory& factory(); + /// Returns the ApacheRequestHandlerFactory. + + static ApacheApplication& instance(); + /// Returns the application instance. + +private: + bool _ready; + ApacheRequestHandlerFactory _factory; + Poco::FastMutex _mutex; +}; + + +// +// inlines +// +inline ApacheRequestHandlerFactory& ApacheApplication::factory() +{ + return _factory; +} + + +#endif // ApacheConnector_ApacheApplication_INCLUDED diff --git a/ApacheConnector/include/ApacheChannel.h b/ApacheConnector/include/ApacheChannel.h new file mode 100644 index 000000000..8cf3f266a --- /dev/null +++ b/ApacheConnector/include/ApacheChannel.h @@ -0,0 +1,52 @@ +// +// ApacheChannel.h +// +// $Id: //poco/1.4/ApacheConnector/include/ApacheChannel.h#2 $ +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef ApacheConnector_ApacheChannel_INCLUDED +#define ApacheConnector_ApacheChannel_INCLUDED + + +#include "Poco/Channel.h" + + +class ApacheChannel: public Poco::Channel + /// This class implements a logging channel + /// that uses the Apache logging facilities. +{ +public: + ApacheChannel(); + ~ApacheChannel(); + + void log(const Poco::Message& msg); +}; + + +#endif // ApacheConnector_ApacheChannel_INCLUDED diff --git a/ApacheConnector/include/ApacheConnector.h b/ApacheConnector/include/ApacheConnector.h new file mode 100644 index 000000000..4fa9d5f03 --- /dev/null +++ b/ApacheConnector/include/ApacheConnector.h @@ -0,0 +1,108 @@ +// +// ApacheConnector.h +// +// $Id: //poco/1.4/ApacheConnector/include/ApacheConnector.h#2 $ +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef ApacheConnector_ApacheConnector_INCLUDED +#define ApacheConnector_ApacheConnector_INCLUDED + + +#include + + +struct request_rec; +class ApacheServerRequest; + + +class ApacheRequestRec + /// This class wraps an Apache request_rec. +{ +public: + ApacheRequestRec(request_rec* _pRec); + /// Creates the ApacheRequestRec; + + bool haveRequestBody(); + /// Returns true if the request contains a body. + + int readRequest(char* buffer, int length); + /// Read up to length bytes from request body into buffer. + /// Returns the number of bytes read, 0 if eof or -1 if an error occured. + + void writeResponse(const char* buffer, int length); + /// Writes the given characters as response to the given request_rec. + + void addHeader(const std::string& key, const std::string& value); + /// Adds the given key / value pair to the outgoing headers of the + /// http response. + + void setContentType(const std::string& mediaType); + /// Sets the response content type. + + void redirect(const std::string& uri, int status); + /// Redirects the response to the given uri. + + void sendErrorResponse(int status); + /// Sends an error response with the given HTTP status code. + + int sendFile(const std::string& path, unsigned int fileSize, const std::string& mediaType); + /// Sends the file given by fileName as response. + + void copyHeaders(ApacheServerRequest& request); + /// Copies the request uri and header fields from the Apache request + /// to the ApacheServerRequest. + +private: + request_rec* _pRec; +}; + + +class ApacheConnector + /// This class provides static methods wrapping the + /// Apache API. +{ +public: + enum LogLevel + { + PRIO_FATAL = 1, /// A fatal error. The application will most likely terminate. This is the highest priority. + PRIO_CRITICAL, /// A critical error. The application might not be able to continue running successfully. + PRIO_ERROR, /// An error. An operation did not complete successfully, but the application as a whole is not affected. + PRIO_WARNING, /// A warning. An operation completed with an unexpected result. + PRIO_NOTICE, /// A notice, which is an information with just a higher priority. + PRIO_INFORMATION, /// An informational message, usually denoting the successful completion of an operation. + PRIO_DEBUG, /// A debugging message. + PRIO_TRACE /// A tracing message. This is the lowest priority. + }; + + static void log(const char* file, int line, int level, int status, const char* text); + /// Log the given message. +}; + + +#endif // ApacheConnector_ApacheConnector_INCLUDED diff --git a/ApacheConnector/include/ApacheRequestHandlerFactory.h b/ApacheConnector/include/ApacheRequestHandlerFactory.h new file mode 100644 index 000000000..d746c0e22 --- /dev/null +++ b/ApacheConnector/include/ApacheRequestHandlerFactory.h @@ -0,0 +1,77 @@ +// +// ApacheRequestHandlerFactory.h +// +// $Id: //poco/1.4/ApacheConnector/include/ApacheRequestHandlerFactory.h#2 $ +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef ApacheConnector_ApacheRequestHandlerFactory_INCLUDED +#define ApacheConnector_ApacheRequestHandlerFactory_INCLUDED + + +#include "ApacheServerRequest.h" +#include "Poco/Net/HTTPRequestHandlerFactory.h" +#include "Poco/ClassLoader.h" +#include "Poco/Mutex.h" +#include + + +class ApacheRequestHandlerFactory: public Poco::Net::HTTPRequestHandlerFactory +{ +public: + ApacheRequestHandlerFactory(); + /// Constructs the ApacheRequestHandlerFactory + + ~ApacheRequestHandlerFactory(); + /// Destructor of the ApacheRequestHandlerFactory + + Poco::Net::HTTPRequestHandler* createRequestHandler(const Poco::Net::HTTPServerRequest& request); + /// Creates a new request handler for the given HTTP request. + + bool mustHandle(const std::string& uri); + /// Returns 1 if the given uri must be handled by the + /// poco_mapper module, 0 otherwise. + + void handleURIs(const std::string& uris); + /// Parses the given string for dllName, factoryName and the URIs to handle + /// by the request-handler + + void addRequestHandlerFactory(const std::string& dllPath, const std::string& factoryName, const std::string& uri); + /// Adds the request handler from the given dll with the given name and + /// registers that handler with the given uri + +private: + typedef std::map RequestHandlerFactories; + + RequestHandlerFactories _requestHandlers; + Poco::ClassLoader _loader; + Poco::FastMutex _mutex; +}; + + +#endif // ApacheConnector_ApacheRequestHandlerFactory_INCLUDED diff --git a/ApacheConnector/include/ApacheServerRequest.h b/ApacheConnector/include/ApacheServerRequest.h new file mode 100644 index 000000000..ef05f6dd7 --- /dev/null +++ b/ApacheConnector/include/ApacheServerRequest.h @@ -0,0 +1,120 @@ +// +// ApacheServerRequest.h +// +// $Id: //poco/1.4/ApacheConnector/include/ApacheServerRequest.h#2 $ +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef ApacheConnector_ApacheServerRequest_INCLUDED +#define ApacheConnector_ApacheServerRequest_INCLUDED + + +#include "ApacheConnector.h" +#include "ApacheStream.h" +#include "Poco/Net/HTTPServerRequest.h" +#include + + +class ApacheServerResponse; + + +class ApacheServerRequest: public Poco::Net::HTTPServerRequest +{ +public: + ApacheServerRequest( + ApacheRequestRec* pApacheRequest, + const char* serverName, + int serverPort, + const char* clientName, + int clientPort); + /// Creates a new ApacheServerRequest. + + ~ApacheServerRequest(); + /// Destroys the ApacheServerRequest. + + std::istream& stream(); + /// Returns the input stream for reading + /// the request body. + /// + /// The stream is valid until the HTTPServerRequest + /// object is destroyed. + + bool expectContinue() const; + /// Returns true if the client expects a + /// 100 Continue response. + + const Poco::Net::SocketAddress& clientAddress() const; + /// Returns the client's address. + + const Poco::Net::SocketAddress& serverAddress() const; + /// Returns the server's address. + + const Poco::Net::HTTPServerParams& serverParams() const; + /// Returns a reference to the server parameters. + + Poco::Net::HTTPServerResponse& response() const; + /// Returns a reference to the associated response + +protected: + void setResponse(ApacheServerResponse* pResponse); + +private: + ApacheRequestRec* _pApacheRequest; + ApacheServerResponse* _pResponse; + ApacheInputStream* _pStream; + Poco::Net::SocketAddress _serverAddress; + Poco::Net::SocketAddress _clientAddress; + + friend class ApacheServerResponse; +}; + + +// +// inlines +// +inline std::istream& ApacheServerRequest::stream() +{ + poco_check_ptr (_pStream); + + return *_pStream; +} + + +inline const Poco::Net::SocketAddress& ApacheServerRequest::clientAddress() const +{ + return _clientAddress; +} + + +inline const Poco::Net::SocketAddress& ApacheServerRequest::serverAddress() const +{ + return _serverAddress; +} + + +#endif // ApacheConnector_ApacheServerRequest_INCLUDED diff --git a/ApacheConnector/include/ApacheServerResponse.h b/ApacheConnector/include/ApacheServerResponse.h new file mode 100644 index 000000000..c24bab31a --- /dev/null +++ b/ApacheConnector/include/ApacheServerResponse.h @@ -0,0 +1,144 @@ +// +// ApacheServerResponse.h +// +// $Id: //poco/1.4/ApacheConnector/include/ApacheServerResponse.h#2 $ +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef ApacheConnector_ApacheServerResponse_INCLUDED +#define ApacheConnector_ApacheServerResponse_INCLUDED + + +#include "ApacheConnector.h" +#include "ApacheStream.h" +#include "Poco/Net/Net.h" +#include "Poco/Net/HTTPServerResponse.h" + + +class ApacheServerRequest; + + +class ApacheServerResponse: public Poco::Net::HTTPServerResponse + /// This subclass of HTTPResponse is used for + /// representing server-side HTTP responses for apache. + /// + /// A ApacheServerResponse is passed to the + /// handleRequest() method of HTTPRequestHandler. + /// + /// handleRequest() must set a status code + /// and optional reason phrase, set headers + /// as necessary, and provide a message body. +{ +public: + ApacheServerResponse(ApacheServerRequest* pRequest); + /// Creates the ApacheServerResponse. + + ~ApacheServerResponse(); + /// Destroys the ApacheServerResponse. + + void sendContinue(); + /// Sends a 100 Continue response to the + /// client. + + void sendErrorResponse(int status); + /// Sends an error response with the given + /// status back to the client. + + std::ostream& send(); + /// Sends the response header to the client and + /// returns an output stream for sending the + /// response body. + /// + /// The returned stream is valid until the response + /// object is destroyed. + /// + /// Must not be called after sendFile(), sendBuffer() + /// or redirect() has been called. + + void sendFile(const std::string& path, const std::string& mediaType); + /// Sends the response header to the client, followed + /// by the content of the given file. + /// + /// Must not be called after send(), sendBuffer() + /// or redirect() has been called. + /// + /// Throws a FileNotFoundException if the file + /// cannot be found, or an OpenFileException if + /// the file cannot be opened. + + void sendBuffer(const void* pBuffer, std::size_t length); + /// Sends the response header to the client, followed + /// by the contents of the given buffer. + /// + /// The Content-Length header of the response is set + /// to length and chunked transfer encoding is disabled. + /// + /// If both the HTTP message header and body (from the + /// given buffer) fit into one single network packet, the + /// complete response can be sent in one network packet. + /// + /// Must not be called after send(), sendFile() + /// or redirect() has been called. + + void redirect(const std::string& uri, Poco::Net::HTTPResponse::HTTPStatus status); + /// Sets the status code, which must be one of + /// HTTP_MOVED_PERMANENTLY (301), HTTP_FOUND (302), + /// or HTTP_SEE_OTHER (303), + /// and sets the "Location" header field + /// to the given URI, which according to + /// the HTTP specification, must be absolute. + /// + /// Must not be called after send() has been called. + + void requireAuthentication(const std::string& realm); + /// Sets the status code to 401 (Unauthorized) + /// and sets the "WWW-Authenticate" header field + /// according to the given realm. + + bool sent() const; + /// Returns true if the response (header) has been sent. + +private: + void initApacheOutputStream(); + /// Initializes the ApacheOutputStram + + ApacheOutputStream* _pStream; + ApacheRequestRec* _pApacheRequest; +}; + + +// +// inlines +// +inline bool ApacheServerResponse::sent() const +{ + return _pStream != 0; +} + + +#endif // ApacheConnector_ApacheServerResponse_INCLUDED diff --git a/ApacheConnector/include/ApacheStream.h b/ApacheConnector/include/ApacheStream.h new file mode 100644 index 000000000..8b26c9c8b --- /dev/null +++ b/ApacheConnector/include/ApacheStream.h @@ -0,0 +1,125 @@ +// +// ApacheStream.h +// +// $Id: //poco/1.4/ApacheConnector/include/ApacheStream.h#2 $ +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef ApacheConnector_ApacheStream_INCLUDED +#define ApacheConnector_ApacheStream_INCLUDED + + +#include "ApacheConnector.h" +#include "Poco/BufferedStreamBuf.h" +#include +#include + + +class ApacheStreamBuf: public Poco::BufferedStreamBuf + /// This is the streambuf class used for reading from and writing to a socket. +{ +public: + ApacheStreamBuf(ApacheRequestRec* pApacheRequest, bool haveData = false); + /// Creates a ApacheStreamBuf with the given socket. + + ~ApacheStreamBuf(); + /// Destroys the SocketStreamBuf. + +protected: + int readFromDevice(char* buffer, std::streamsize length); + int writeToDevice(const char* buffer, std::streamsize length); + +private: + enum + { + STREAM_BUFFER_SIZE = 1024 + }; + + ApacheRequestRec* _pApacheRequest; + bool _haveData; +}; + + +class ApacheIOS: public virtual std::ios + /// The base class for ApacheStream, ApacheInputStream and + /// ApacheOutputStream. + /// + /// This class is needed to ensure the correct initialization + /// order of the stream buffer and base classes. +{ +public: + ApacheIOS(ApacheRequestRec* pApacheRequest, bool haveData = false); + /// Creates the ApacheIOS with the given socket. + + ~ApacheIOS(); + /// Destroys the ApacheIOS. + /// + /// Flushes the buffer, but does not close the socket. + + ApacheStreamBuf* rdbuf(); + /// Returns a pointer to the internal ApacheStreamBuf. + + void close(); + /// Flushes the stream. + +protected: + ApacheStreamBuf _buf; +}; + + +class ApacheOutputStream: public ApacheIOS, public std::ostream + /// An output stream for writing to an Apache response. +{ +public: + ApacheOutputStream(ApacheRequestRec* pApacheRequest); + /// Creates the ApacheOutputStream with the given socket. + + ~ApacheOutputStream(); + /// Destroys the ApacheOutputStream. + /// + /// Flushes the buffer. +}; + + +class ApacheInputStream: public ApacheIOS, public std::istream + /// An input stream for reading from an Apache request. + /// + /// Using formatted input from a ApacheInputStream + /// is not recommended, due to the read-ahead behavior of + /// istream with formatted reads. +{ +public: + ApacheInputStream(ApacheRequestRec* pApacheRequest); + /// Creates the ApacheInputStream with the given socket. + + ~ApacheInputStream(); + /// Destroys the ApacheInputStream. +}; + + +#endif // ApacheConnector_ApacheStream_INCLUDED diff --git a/ApacheConnector/samples/FormServer/FormServer.progen b/ApacheConnector/samples/FormServer/FormServer.progen new file mode 100644 index 000000000..649dcc751 --- /dev/null +++ b/ApacheConnector/samples/FormServer/FormServer.progen @@ -0,0 +1,11 @@ +vc.project.guid = ${vc.project.guidFromName} +vc.project.name = ${vc.project.baseName} +vc.project.target = ${vc.project.name} +vc.project.type = executable +vc.project.pocobase = ..\\..\\.. +vc.project.platforms = Win32, x64 +vc.project.configurations = debug_shared, release_shared +vc.project.prototype = ${vc.project.name}_vs90.vcproj +vc.project.compiler.include = ..\\..\\..\\Foundation\\include;..\\..\\..\\XML\\include;..\\..\\..\\Util\\include;..\\..\\..\\Net\\include +vc.project.linker.dependencies.Win32 = libapr-1.lib libaprutil-1.lib libhttpd.lib +vc.project.linker.dependencies.x64 = libapr-1.lib libaprutil-1.lib libhttpd.lib diff --git a/ApacheConnector/samples/FormServer/FormServer_vs100.vcxproj b/ApacheConnector/samples/FormServer/FormServer_vs100.vcxproj new file mode 100644 index 000000000..92327b2de --- /dev/null +++ b/ApacheConnector/samples/FormServer/FormServer_vs100.vcxproj @@ -0,0 +1,115 @@ + + + + + debug_shared + Win32 + + + release_shared + Win32 + + + + FormServer + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106} + FormServer + Win32Proj + + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin\ + obj\$(Configuration)\ + true + bin\ + obj\$(Configuration)\ + false + FormServerd + FormServer + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + bin\FormServerd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\FormServerd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + bin\FormServer.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + + + + diff --git a/ApacheConnector/samples/FormServer/FormServer_vs100.vcxproj.filters b/ApacheConnector/samples/FormServer/FormServer_vs100.vcxproj.filters new file mode 100644 index 000000000..4e8f111ab --- /dev/null +++ b/ApacheConnector/samples/FormServer/FormServer_vs100.vcxproj.filters @@ -0,0 +1,17 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {f15b6455-ee37-47e9-adb8-a9f91180df9b} + + + + + Source Files + + + \ No newline at end of file diff --git a/ApacheConnector/samples/FormServer/FormServer_vs71.vcproj b/ApacheConnector/samples/FormServer/FormServer_vs71.vcproj new file mode 100644 index 000000000..216483663 --- /dev/null +++ b/ApacheConnector/samples/FormServer/FormServer_vs71.vcproj @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ApacheConnector/samples/FormServer/FormServer_vs80.vcproj b/ApacheConnector/samples/FormServer/FormServer_vs80.vcproj new file mode 100644 index 000000000..41b35fcfc --- /dev/null +++ b/ApacheConnector/samples/FormServer/FormServer_vs80.vcproj @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ApacheConnector/samples/FormServer/FormServer_vs90.vcproj b/ApacheConnector/samples/FormServer/FormServer_vs90.vcproj new file mode 100644 index 000000000..291895c16 --- /dev/null +++ b/ApacheConnector/samples/FormServer/FormServer_vs90.vcproj @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ApacheConnector/samples/FormServer/FormServer_x64_vs100.vcxproj b/ApacheConnector/samples/FormServer/FormServer_x64_vs100.vcxproj new file mode 100644 index 000000000..9c81fb0f2 --- /dev/null +++ b/ApacheConnector/samples/FormServer/FormServer_x64_vs100.vcxproj @@ -0,0 +1,115 @@ + + + + + debug_shared + x64 + + + release_shared + x64 + + + + FormServer + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106} + FormServer + Win32Proj + + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin64\ + obj64\$(Configuration)\ + true + bin64\ + obj64\$(Configuration)\ + false + FormServerd + FormServer + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + bin64\FormServerd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\FormServerd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + bin64\FormServer.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + + + + diff --git a/ApacheConnector/samples/FormServer/FormServer_x64_vs100.vcxproj.filters b/ApacheConnector/samples/FormServer/FormServer_x64_vs100.vcxproj.filters new file mode 100644 index 000000000..e7682b35c --- /dev/null +++ b/ApacheConnector/samples/FormServer/FormServer_x64_vs100.vcxproj.filters @@ -0,0 +1,17 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {274d01a8-2c80-4883-9261-c41efe4e0328} + + + + + Source Files + + + \ No newline at end of file diff --git a/ApacheConnector/samples/FormServer/FormServer_x64_vs90.vcproj b/ApacheConnector/samples/FormServer/FormServer_x64_vs90.vcproj new file mode 100644 index 000000000..9d5734caa --- /dev/null +++ b/ApacheConnector/samples/FormServer/FormServer_x64_vs90.vcproj @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ApacheConnector/samples/FormServer/Makefile b/ApacheConnector/samples/FormServer/Makefile new file mode 100644 index 000000000..3d7e50154 --- /dev/null +++ b/ApacheConnector/samples/FormServer/Makefile @@ -0,0 +1,17 @@ +# +# Makefile +# +# $Id: //poco/1.4/ApacheConnector/samples/FormServer/Makefile#1 $ +# +# Makefile for Poco ApacheConnector sample +# + +include $(POCO_BASE)/build/rules/global + +objects = FormServer + +target = FormServer +target_version = 1 +target_libs = PocoFoundation PocoNet + +include $(POCO_BASE)/build/rules/dylib diff --git a/ApacheConnector/samples/FormServer/src/FormServer.cpp b/ApacheConnector/samples/FormServer/src/FormServer.cpp new file mode 100644 index 000000000..04992d352 --- /dev/null +++ b/ApacheConnector/samples/FormServer/src/FormServer.cpp @@ -0,0 +1,206 @@ +// +// FormServer.cpp +// +// $Id: //poco/1.4/ApacheConnector/samples/FormServer/src/FormServer.cpp#2 $ +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/Net/HTTPServer.h" +#include "Poco/Net/HTTPRequestHandler.h" +#include "Poco/Net/HTTPRequestHandlerFactory.h" +#include "Poco/Net/HTTPServerRequest.h" +#include "Poco/Net/HTTPServerResponse.h" +#include "Poco/Net/HTMLForm.h" +#include "Poco/Net/PartHandler.h" +#include "Poco/CountingStream.h" +#include "Poco/NullStream.h" +#include "Poco/StreamCopier.h" +#include "Poco/ClassLibrary.h" + + +using Poco::Net::HTTPRequestHandler; +using Poco::Net::HTTPRequestHandlerFactory; +using Poco::Net::HTTPServerRequest; +using Poco::Net::HTTPServerResponse; +using Poco::Net::MessageHeader; +using Poco::Net::HTMLForm; +using Poco::Net::NameValueCollection; +using Poco::CountingInputStream; +using Poco::NullOutputStream; +using Poco::StreamCopier; + + +class MyPartHandler: public Poco::Net::PartHandler +{ +public: + MyPartHandler(): + _length(0) + { + } + + void handlePart(const MessageHeader& header, std::istream& stream) + { + _type = header.get("Content-Type", "(unspecified)"); + if (header.has("Content-Disposition")) + { + std::string disp; + NameValueCollection params; + MessageHeader::splitParameters(header["Content-Disposition"], disp, params); + _name = params.get("name", "(unnamed)"); + _fileName = params.get("filename", "(unnamed)"); + } + + CountingInputStream istr(stream); + NullOutputStream ostr; + StreamCopier::copyStream(istr, ostr); + _length = istr.chars(); + } + + int length() const + { + return _length; + } + + const std::string& name() const + { + return _name; + } + + const std::string& fileName() const + { + return _fileName; + } + + const std::string& contentType() const + { + return _type; + } + +private: + int _length; + std::string _type; + std::string _name; + std::string _fileName; +}; + + +class FormRequestHandler: public HTTPRequestHandler + /// Return a HTML document with the current date and time. +{ +public: + FormRequestHandler() + { + } + + void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) + { + MyPartHandler partHandler; + HTMLForm form(request, request.stream(), partHandler); + + response.setChunkedTransferEncoding(true); + response.setContentType("text/html"); + + std::ostream& ostr = response.send(); + + ostr << + "\n" + "\n" + "POCO Form Server Sample\n" + "\n" + "\n" + "

POCO Form Server Sample

\n" + "

GET Form

\n" + "
\n" + "\n" + "\n" + "
\n" + "

POST Form

\n" + "
\n" + "\n" + "\n" + "
\n" + "

File Upload

\n" + "
\n" + " \n" + "\n" + "
\n"; + + ostr << "

Request

\n"; + ostr << "Method: " << request.getMethod() << "
\n"; + ostr << "URI: " << request.getURI() << "
\n"; + NameValueCollection::ConstIterator it = request.begin(); + NameValueCollection::ConstIterator end = request.end(); + for (; it != end; ++it) + { + ostr << it->first << ": " << it->second << "
\n"; + } + ostr << "

"; + + if (!form.empty()) + { + ostr << "

Form

\n"; + it = form.begin(); + end = form.end(); + for (; it != end; ++it) + { + ostr << it->first << ": " << it->second << "
\n"; + } + ostr << "

"; + } + + if (!partHandler.name().empty()) + { + ostr << "

Upload

\n"; + ostr << "Name: " << partHandler.name() << "
\n"; + ostr << "File Name: " << partHandler.fileName() << "
\n"; + ostr << "Type: " << partHandler.contentType() << "
\n"; + ostr << "Size: " << partHandler.length() << "
\n"; + ostr << "

"; + } + ostr << "\n"; + } +}; + + +class FormRequestHandlerFactory: public HTTPRequestHandlerFactory +{ +public: + FormRequestHandlerFactory() + { + } + + HTTPRequestHandler* createRequestHandler(const HTTPServerRequest& request) + { + return new FormRequestHandler; + } +}; + + +POCO_BEGIN_MANIFEST(HTTPRequestHandlerFactory) + POCO_EXPORT_CLASS(FormRequestHandlerFactory) +POCO_END_MANIFEST diff --git a/ApacheConnector/samples/Makefile b/ApacheConnector/samples/Makefile new file mode 100644 index 000000000..c3fddce22 --- /dev/null +++ b/ApacheConnector/samples/Makefile @@ -0,0 +1,13 @@ +# +# Makefile +# +# $Id: //poco/1.4/ApacheConnector/samples/Makefile#1 $ +# +# Makefile for Poco ApacheConnector Samples +# + +.PHONY: projects +clean all: projects +projects: + $(MAKE) -C TimeServer $(MAKECMDGOALS) + $(MAKE) -C FormServer $(MAKECMDGOALS) diff --git a/ApacheConnector/samples/TimeServer/Makefile b/ApacheConnector/samples/TimeServer/Makefile new file mode 100644 index 000000000..44f9da759 --- /dev/null +++ b/ApacheConnector/samples/TimeServer/Makefile @@ -0,0 +1,17 @@ +# +# Makefile +# +# $Id: //poco/1.4/ApacheConnector/samples/TimeServer/Makefile#1 $ +# +# Makefile for Poco ApacheConnector sample +# + +include $(POCO_BASE)/build/rules/global + +objects = TimeServer + +target = TimeServer +target_version = 1 +target_libs = PocoFoundation PocoNet + +include $(POCO_BASE)/build/rules/dylib diff --git a/ApacheConnector/samples/TimeServer/TimeServer.progen b/ApacheConnector/samples/TimeServer/TimeServer.progen new file mode 100644 index 000000000..649dcc751 --- /dev/null +++ b/ApacheConnector/samples/TimeServer/TimeServer.progen @@ -0,0 +1,11 @@ +vc.project.guid = ${vc.project.guidFromName} +vc.project.name = ${vc.project.baseName} +vc.project.target = ${vc.project.name} +vc.project.type = executable +vc.project.pocobase = ..\\..\\.. +vc.project.platforms = Win32, x64 +vc.project.configurations = debug_shared, release_shared +vc.project.prototype = ${vc.project.name}_vs90.vcproj +vc.project.compiler.include = ..\\..\\..\\Foundation\\include;..\\..\\..\\XML\\include;..\\..\\..\\Util\\include;..\\..\\..\\Net\\include +vc.project.linker.dependencies.Win32 = libapr-1.lib libaprutil-1.lib libhttpd.lib +vc.project.linker.dependencies.x64 = libapr-1.lib libaprutil-1.lib libhttpd.lib diff --git a/ApacheConnector/samples/TimeServer/TimeServer_vs100.vcxproj b/ApacheConnector/samples/TimeServer/TimeServer_vs100.vcxproj new file mode 100644 index 000000000..cc3272fb4 --- /dev/null +++ b/ApacheConnector/samples/TimeServer/TimeServer_vs100.vcxproj @@ -0,0 +1,115 @@ + + + + + debug_shared + Win32 + + + release_shared + Win32 + + + + TimeServer + {59EDFD20-9968-30F7-9532-44C08DA58C6E} + TimeServer + Win32Proj + + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin\ + obj\$(Configuration)\ + true + bin\ + obj\$(Configuration)\ + false + TimeServerd + TimeServer + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + bin\TimeServerd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\TimeServerd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + bin\TimeServer.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + + + + diff --git a/ApacheConnector/samples/TimeServer/TimeServer_vs100.vcxproj.filters b/ApacheConnector/samples/TimeServer/TimeServer_vs100.vcxproj.filters new file mode 100644 index 000000000..2cc56c090 --- /dev/null +++ b/ApacheConnector/samples/TimeServer/TimeServer_vs100.vcxproj.filters @@ -0,0 +1,17 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {29521eeb-44f6-411c-86be-29354be3718e} + + + + + Source Files + + + \ No newline at end of file diff --git a/ApacheConnector/samples/TimeServer/TimeServer_vs71.vcproj b/ApacheConnector/samples/TimeServer/TimeServer_vs71.vcproj new file mode 100644 index 000000000..33305e1f3 --- /dev/null +++ b/ApacheConnector/samples/TimeServer/TimeServer_vs71.vcproj @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ApacheConnector/samples/TimeServer/TimeServer_vs80.vcproj b/ApacheConnector/samples/TimeServer/TimeServer_vs80.vcproj new file mode 100644 index 000000000..a7e1a5008 --- /dev/null +++ b/ApacheConnector/samples/TimeServer/TimeServer_vs80.vcproj @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ApacheConnector/samples/TimeServer/TimeServer_vs90.vcproj b/ApacheConnector/samples/TimeServer/TimeServer_vs90.vcproj new file mode 100644 index 000000000..c70b1f230 --- /dev/null +++ b/ApacheConnector/samples/TimeServer/TimeServer_vs90.vcproj @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ApacheConnector/samples/TimeServer/TimeServer_x64_vs100.vcxproj b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs100.vcxproj new file mode 100644 index 000000000..0832c1ff9 --- /dev/null +++ b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs100.vcxproj @@ -0,0 +1,115 @@ + + + + + debug_shared + x64 + + + release_shared + x64 + + + + TimeServer + {59EDFD20-9968-30F7-9532-44C08DA58C6E} + TimeServer + Win32Proj + + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin64\ + obj64\$(Configuration)\ + true + bin64\ + obj64\$(Configuration)\ + false + TimeServerd + TimeServer + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + bin64\TimeServerd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\TimeServerd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + bin64\TimeServer.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + + + + diff --git a/ApacheConnector/samples/TimeServer/TimeServer_x64_vs100.vcxproj.filters b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs100.vcxproj.filters new file mode 100644 index 000000000..2519b90b7 --- /dev/null +++ b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs100.vcxproj.filters @@ -0,0 +1,17 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {2b9f99c8-e72f-4c5b-8970-bc695d6b055d} + + + + + Source Files + + + \ No newline at end of file diff --git a/ApacheConnector/samples/TimeServer/TimeServer_x64_vs90.vcproj b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs90.vcproj new file mode 100644 index 000000000..f99791c69 --- /dev/null +++ b/ApacheConnector/samples/TimeServer/TimeServer_x64_vs90.vcproj @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ApacheConnector/samples/TimeServer/src/TimeServer.cpp b/ApacheConnector/samples/TimeServer/src/TimeServer.cpp new file mode 100644 index 000000000..9c41565f4 --- /dev/null +++ b/ApacheConnector/samples/TimeServer/src/TimeServer.cpp @@ -0,0 +1,95 @@ +// +// TimeServer.cpp +// +// $Id: //poco/1.4/ApacheConnector/samples/TimeServer/src/TimeServer.cpp#2 $ +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/Net/HTTPServer.h" +#include "Poco/Net/HTTPRequestHandler.h" +#include "Poco/Net/HTTPRequestHandlerFactory.h" +#include "Poco/Net/HTTPServerRequest.h" +#include "Poco/Net/HTTPServerResponse.h" +#include "Poco/Timestamp.h" +#include "Poco/DateTimeFormatter.h" +#include "Poco/DateTimeFormat.h" +#include "Poco/ClassLibrary.h" + + +using Poco::Net::HTTPRequestHandler; +using Poco::Net::HTTPRequestHandlerFactory; +using Poco::Net::HTTPServerRequest; +using Poco::Net::HTTPServerResponse; +using Poco::Timestamp; +using Poco::DateTimeFormatter; +using Poco::DateTimeFormat; + + +class TimeRequestHandler: public HTTPRequestHandler + /// Return a HTML document with the current date and time. +{ +public: + TimeRequestHandler() + { + } + + void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) + { + Timestamp now; + std::string dt(DateTimeFormatter::format(now, DateTimeFormat::SORTABLE_FORMAT)); + + response.setChunkedTransferEncoding(true); + response.setContentType("text/html"); + + std::ostream& ostr = response.send(); + ostr << "TimeServer powered by POCO ApacheConnector"; + ostr << ""; + ostr << "

"; + ostr << dt; + ostr << "

"; + } +}; + + +class TimeRequestHandlerFactory: public HTTPRequestHandlerFactory +{ +public: + TimeRequestHandlerFactory() + { + } + + HTTPRequestHandler* createRequestHandler(const HTTPServerRequest& request) + { + return new TimeRequestHandler; + } +}; + + +POCO_BEGIN_MANIFEST(HTTPRequestHandlerFactory) + POCO_EXPORT_CLASS(TimeRequestHandlerFactory) +POCO_END_MANIFEST diff --git a/ApacheConnector/samples/dependencies b/ApacheConnector/samples/dependencies new file mode 100644 index 000000000..afd736493 --- /dev/null +++ b/ApacheConnector/samples/dependencies @@ -0,0 +1,4 @@ +Net +Util +XML +Foundation diff --git a/ApacheConnector/samples/samples.progen b/ApacheConnector/samples/samples.progen new file mode 100644 index 000000000..0f89bb2de --- /dev/null +++ b/ApacheConnector/samples/samples.progen @@ -0,0 +1,6 @@ +vc.project.platforms = Win32, x64 +vc.project.configurations = debug_shared, release_shared +vc.solution.create = true +vc.solution.include = \ + FormServer\\FormServer;\ + TimeServer\\TimeServer diff --git a/ApacheConnector/samples/samples_vs100.sln b/ApacheConnector/samples/samples_vs100.sln new file mode 100644 index 000000000..ff0f719ba --- /dev/null +++ b/ApacheConnector/samples/samples_vs100.sln @@ -0,0 +1,29 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FormServer", "FormServer\FormServer_vs100.vcxproj", "{CD77A9BA-6E9B-39EF-801A-1C7E66B19106}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TimeServer", "TimeServer\TimeServer_vs100.vcxproj", "{59EDFD20-9968-30F7-9532-44C08DA58C6E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|Win32.Build.0 = release_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|Win32.Build.0 = release_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|Win32.Deploy.0 = release_shared|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ApacheConnector/samples/samples_vs71.sln b/ApacheConnector/samples/samples_vs71.sln new file mode 100644 index 000000000..24f996792 --- /dev/null +++ b/ApacheConnector/samples/samples_vs71.sln @@ -0,0 +1,29 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FormServer", "FormServer\FormServer_vs71.vcproj", "{CD77A9BA-6E9B-39EF-801A-1C7E66B19106}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TimeServer", "TimeServer\TimeServer_vs71.vcproj", "{59EDFD20-9968-30F7-9532-44C08DA58C6E}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + debug_shared = debug_shared + release_shared = release_shared + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared.ActiveCfg = debug_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared.Build.0 = debug_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared.ActiveCfg = release_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared.Build.0 = release_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared.ActiveCfg = debug_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared.Build.0 = debug_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared.ActiveCfg = release_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared.Build.0 = release_shared|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/ApacheConnector/samples/samples_vs80.sln b/ApacheConnector/samples/samples_vs80.sln new file mode 100644 index 000000000..8c4960b35 --- /dev/null +++ b/ApacheConnector/samples/samples_vs80.sln @@ -0,0 +1,29 @@ +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FormServer", "FormServer\FormServer_vs80.vcproj", "{CD77A9BA-6E9B-39EF-801A-1C7E66B19106}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TimeServer", "TimeServer\TimeServer_vs80.vcproj", "{59EDFD20-9968-30F7-9532-44C08DA58C6E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|Win32.Build.0 = release_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|Win32.Build.0 = release_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|Win32.Deploy.0 = release_shared|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ApacheConnector/samples/samples_vs90.sln b/ApacheConnector/samples/samples_vs90.sln new file mode 100644 index 000000000..caa80a5ef --- /dev/null +++ b/ApacheConnector/samples/samples_vs90.sln @@ -0,0 +1,29 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FormServer", "FormServer\FormServer_vs90.vcproj", "{CD77A9BA-6E9B-39EF-801A-1C7E66B19106}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TimeServer", "TimeServer\TimeServer_vs90.vcproj", "{59EDFD20-9968-30F7-9532-44C08DA58C6E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|Win32.Build.0 = release_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|Win32.Build.0 = release_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|Win32.Deploy.0 = release_shared|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ApacheConnector/samples/samples_x64_vs100.sln b/ApacheConnector/samples/samples_x64_vs100.sln new file mode 100644 index 000000000..c420f18f2 --- /dev/null +++ b/ApacheConnector/samples/samples_x64_vs100.sln @@ -0,0 +1,29 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FormServer", "FormServer\FormServer_x64_vs100.vcxproj", "{CD77A9BA-6E9B-39EF-801A-1C7E66B19106}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TimeServer", "TimeServer\TimeServer_x64_vs100.vcxproj", "{59EDFD20-9968-30F7-9532-44C08DA58C6E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|x64.Build.0 = debug_shared|x64 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|x64.ActiveCfg = release_shared|x64 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|x64.Build.0 = release_shared|x64 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|x64.Deploy.0 = release_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|x64.Build.0 = debug_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|x64.ActiveCfg = release_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|x64.Build.0 = release_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|x64.Deploy.0 = release_shared|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ApacheConnector/samples/samples_x64_vs90.sln b/ApacheConnector/samples/samples_x64_vs90.sln new file mode 100644 index 000000000..b2fb8ab13 --- /dev/null +++ b/ApacheConnector/samples/samples_x64_vs90.sln @@ -0,0 +1,29 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FormServer", "FormServer\FormServer_x64_vs90.vcproj", "{CD77A9BA-6E9B-39EF-801A-1C7E66B19106}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TimeServer", "TimeServer\TimeServer_x64_vs90.vcproj", "{59EDFD20-9968-30F7-9532-44C08DA58C6E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|x64.Build.0 = debug_shared|x64 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|x64.ActiveCfg = release_shared|x64 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|x64.Build.0 = release_shared|x64 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|x64.Deploy.0 = release_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|x64.Build.0 = debug_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|x64.ActiveCfg = release_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|x64.Build.0 = release_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|x64.Deploy.0 = release_shared|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ApacheConnector/src/ApacheApplication.cpp b/ApacheConnector/src/ApacheApplication.cpp new file mode 100644 index 000000000..e5b3830e8 --- /dev/null +++ b/ApacheConnector/src/ApacheApplication.cpp @@ -0,0 +1,75 @@ +// +// ApacheApplication.cpp +// +// $Id: //poco/1.4/ApacheConnector/src/ApacheApplication.cpp#2 $ +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "ApacheApplication.h" +#include "ApacheChannel.h" +#include "Poco/Logger.h" +#include "Poco/SingletonHolder.h" +#include + + +using Poco::Logger; +using Poco::FastMutex; + + +ApacheApplication::ApacheApplication(): + _ready(false) +{ + Logger::root().setChannel(new ApacheChannel); +} + + +ApacheApplication::~ApacheApplication() +{ + Logger::shutdown(); +} + + +void ApacheApplication::setup() +{ + FastMutex::ScopedLock lock(_mutex); + + if (!_ready) + { + std::vector cmdLine; + cmdLine.push_back("mod_poco"); + init(cmdLine); + _ready = true; + } +} + + +ApacheApplication& ApacheApplication::instance() +{ + static Poco::SingletonHolder sh; + return *sh.get(); +} diff --git a/ApacheConnector/src/ApacheChannel.cpp b/ApacheConnector/src/ApacheChannel.cpp new file mode 100644 index 000000000..4c8d603de --- /dev/null +++ b/ApacheConnector/src/ApacheChannel.cpp @@ -0,0 +1,51 @@ +// +// ApacheApplication.cpp +// +// $Id: //poco/1.4/ApacheConnector/src/ApacheChannel.cpp#2 $ +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "ApacheChannel.h" +#include "ApacheConnector.h" +#include "Poco/Message.h" + + +ApacheChannel::ApacheChannel() +{ +} + + +ApacheChannel::~ApacheChannel() +{ +} + + +void ApacheChannel::log(const Poco::Message& msg) +{ + ApacheConnector::log(msg.getSource().c_str(), 0, msg.getPriority(), 0, msg.getText().c_str()); +} diff --git a/ApacheConnector/src/ApacheConnector.cpp b/ApacheConnector/src/ApacheConnector.cpp new file mode 100644 index 000000000..62eb29ba8 --- /dev/null +++ b/ApacheConnector/src/ApacheConnector.cpp @@ -0,0 +1,309 @@ +// +// ApacheConnector.cpp +// +// $Id: //poco/1.4/ApacheConnector/src/ApacheConnector.cpp#2 $ +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "ApacheConnector.h" +#include "ApacheApplication.h" +#include "ApacheServerRequest.h" +#include "ApacheServerResponse.h" +#include "ApacheRequestHandlerFactory.h" +#include "Poco/Net/HTTPRequestHandler.h" +#include +#include "httpd.h" +#include "http_connection.h" +#include "http_config.h" +#include "http_core.h" +#include "http_protocol.h" +#include "http_log.h" +#include "apr.h" +#include "apr_lib.h" +#include "apr_strings.h" +#include "apr_buckets.h" +#include "apr_file_info.h" +#include "apr_hash.h" +#define APR_WANT_STRFUNC +#include "apr_want.h" +#include "http_request.h" +#include "util_filter.h" + + +using Poco::Net::HTTPServerRequest; +using Poco::Net::HTTPServerResponse; +using Poco::Net::HTTPRequestHandler; +using Poco::Net::HTTPResponse; + + +extern "C" module AP_MODULE_DECLARE_DATA poco_module; + + +ApacheRequestRec::ApacheRequestRec(request_rec* pRec): + _pRec(pRec) +{ +} + + +bool ApacheRequestRec::haveRequestBody() +{ + return ap_should_client_block(_pRec) != 0; +} + + +int ApacheRequestRec::readRequest(char* buffer, int length) +{ + return ap_get_client_block(_pRec, buffer, length); +} + + +void ApacheRequestRec::writeResponse(const char* buffer, int length) +{ + ap_rwrite(buffer, length, _pRec); +} + + +void ApacheRequestRec::redirect(const std::string& uri, int status) +{ + apr_table_set(_pRec->headers_out, "Location", uri.c_str()); + _pRec->connection->keepalive = AP_CONN_CLOSE; + _pRec->status = status; + ap_set_keepalive(_pRec); + ap_send_error_response(_pRec, 0); +} + + +void ApacheRequestRec::sendErrorResponse(int status) +{ + _pRec->connection->keepalive = AP_CONN_CLOSE; + _pRec->status = status; + ap_set_keepalive(_pRec); + + ap_send_error_response(_pRec, 0); +} + + +void ApacheRequestRec::addHeader(const std::string& key, const std::string& value) +{ + const apr_array_header_t *arr = apr_table_elts(_pRec->headers_out); + apr_table_add(const_cast(reinterpret_cast(arr)), key.c_str(), value.c_str()); +} + + +void ApacheRequestRec::setContentType(const std::string& mediaType) +{ + ap_set_content_type(_pRec, mediaType.c_str()); +} + + +int ApacheRequestRec::sendFile(const std::string& path, unsigned int fileSize, const std::string& mediaType) +{ + apr_file_t *thefile = 0; + apr_finfo_t finfo; + apr_size_t nBytes; + + // setting content-type + ap_set_content_type(_pRec, mediaType.c_str()); + + // opening file + if (apr_file_open(&thefile, path.c_str(), APR_READ, APR_UREAD | APR_GREAD, _pRec->pool) == APR_SUCCESS) + { + // getting fileinfo + apr_file_info_get(&finfo, APR_FINFO_NORM, thefile); + + // setting last-updated & co + ap_update_mtime(_pRec, finfo.mtime); + ap_set_last_modified(_pRec); + ap_set_content_length(_pRec, fileSize); + + // sending file + ap_send_fd(thefile, _pRec, 0, fileSize, &nBytes); + + // well done + return 0; + } + + // file not opened successfully -> produce an exception in C++ code + return 1; +} + + +void ApacheRequestRec::copyHeaders(ApacheServerRequest& request) +{ + const apr_array_header_t* arr = apr_table_elts(_pRec->headers_in); + const apr_table_entry_t* elts = (const apr_table_entry_t *)arr->elts; + + request.setMethod(_pRec->method); + request.setURI(_pRec->unparsed_uri); + + // iterating over raw-headers and printing them + for (int i = 0; i < arr->nelts; i++) + { + request.add(elts[i].key, elts[i].val); + } +} + + +void ApacheConnector::log(const char* file, int line, int level, int status, const char *text) +{ + ap_log_error(file, line, level, 0, NULL, "%s", text); +} + + +extern "C" int ApacheConnector_handler(request_rec *r) +{ + ApacheRequestRec rec(r); + ApacheApplication& app(ApacheApplication::instance()); + + try + { + // ensure application is ready + app.setup(); + + // if the ApacheRequestHandler declines handling - we stop + // request handling here and let other modules do their job! + if (!app.factory().mustHandle(r->uri)) + return DECLINED; + + apr_status_t rv; + if ((rv = ap_setup_client_block(r, REQUEST_CHUNKED_DECHUNK))) + return rv; + + std::auto_ptr pRequest(new ApacheServerRequest( + &rec, + r->connection->local_ip, + r->connection->local_addr->port, + r->connection->remote_ip, + r->connection->remote_addr->port)); + + std::auto_ptr pResponse(new ApacheServerResponse(pRequest.get())); + + // add header information to request + rec.copyHeaders(*pRequest); + + try + { + std::auto_ptr pHandler(app.factory().createRequestHandler(*pRequest)); + + if (pHandler.get()) + { + pHandler->handleRequest(*pRequest, *pResponse); + } + else + { + pResponse->sendErrorResponse(HTTP_NOT_IMPLEMENTED); + } + } + catch (...) + { + pResponse->sendErrorResponse(HTTP_INTERNAL_SERVER_ERROR); + throw; + } + } + catch (Poco::Exception& exc) + { + ApacheConnector::log(__FILE__, __LINE__, ApacheConnector::PRIO_ERROR, 0, exc.displayText().c_str()); + } + catch (...) + { + ApacheConnector::log(__FILE__, __LINE__, ApacheConnector::PRIO_ERROR, 0, "Unknown exception"); + } + return OK; +} + + +extern "C" void ApacheConnector_register_hooks(apr_pool_t *p) +{ + ap_hook_handler(ApacheConnector_handler, NULL, NULL, APR_HOOK_MIDDLE); +} + + +extern "C" const char* ApacheConnector_uris(cmd_parms *cmd, void *in_dconf, const char *in_str) +{ + try + { + ApacheApplication::instance().factory().handleURIs(in_str); + } + catch (Poco::Exception& exc) + { + ApacheConnector::log(__FILE__, __LINE__, ApacheConnector::PRIO_ERROR, 0, exc.displayText().c_str()); + } + catch (...) + { + ApacheConnector::log(__FILE__, __LINE__, ApacheConnector::PRIO_ERROR, 0, "Unknown exception"); + } + return 0; +} + + +extern "C" const char* ApacheConnector_config(cmd_parms *cmd, void *in_dconf, const char *in_str) +{ + try + { + ApacheApplication::instance().loadConfiguration(in_str); + } + catch (Poco::Exception& exc) + { + ApacheConnector::log(__FILE__, __LINE__, ApacheConnector::PRIO_ERROR, 0, exc.displayText().c_str()); + } + catch (...) + { + ApacheConnector::log(__FILE__, __LINE__, ApacheConnector::PRIO_ERROR, 0, "Unknown exception"); + } + return 0; +} + + +extern "C" const command_rec ApacheConnector_cmds[] = +{ + AP_INIT_RAW_ARGS( + "AddPocoRequestHandler", + reinterpret_cast(ApacheConnector_uris), + NULL, + RSRC_CONF, + "POCO RequestHandlerFactory class name followed by shared library path followed by a list of ' ' separated URIs that must be handled by this module."), + AP_INIT_RAW_ARGS( + "AddPocoConfig", + reinterpret_cast(ApacheConnector_config), + NULL, + RSRC_CONF, + "Path of the POCO configuration file."), + { NULL } +}; + + +module AP_MODULE_DECLARE_DATA poco_module = +{ + STANDARD20_MODULE_STUFF, + NULL, + NULL, + NULL, + NULL, + ApacheConnector_cmds, + ApacheConnector_register_hooks +}; diff --git a/ApacheConnector/src/ApacheRequestHandlerFactory.cpp b/ApacheConnector/src/ApacheRequestHandlerFactory.cpp new file mode 100644 index 000000000..18e1832ca --- /dev/null +++ b/ApacheConnector/src/ApacheRequestHandlerFactory.cpp @@ -0,0 +1,136 @@ +// +// ApacheRequestHandlerFactory.cpp +// +// $Id: //poco/1.4/ApacheConnector/src/ApacheRequestHandlerFactory.cpp#2 $ +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "ApacheRequestHandlerFactory.h" +#include "ApacheConnector.h" +#include "Poco/Net/HTTPRequestHandler.h" +#include "Poco/StringTokenizer.h" +#include "Poco/Manifest.h" +#include "Poco/File.h" +#include + + +using Poco::StringTokenizer; +using Poco::FastMutex; + + +ApacheRequestHandlerFactory::ApacheRequestHandlerFactory() +{ +} + + +ApacheRequestHandlerFactory::~ApacheRequestHandlerFactory() +{ +} + + +Poco::Net::HTTPRequestHandler* ApacheRequestHandlerFactory::createRequestHandler(const Poco::Net::HTTPServerRequest& request) +{ + FastMutex::ScopedLock lock(_mutex); + + // only if the given uri is found in _uris we are + // handling this request. + RequestHandlerFactories::iterator it = _requestHandlers.begin(); + RequestHandlerFactories::iterator itEnd = _requestHandlers.end(); + std::string uri = request.getURI(); + + // if any uri in our map is found at the beginning of the given + // uri -> then we handle it!! + for (; it != itEnd; it++) + { + if (uri.find(it->first) == 0 || it->first.find(uri) == 0) + { + return it->second->createRequestHandler(request); + } + } + + return 0; +} + + +void ApacheRequestHandlerFactory::handleURIs(const std::string& uris) +{ + FastMutex::ScopedLock lock(_mutex); + + StringTokenizer st(uris, " ", StringTokenizer::TOK_TRIM); + StringTokenizer::Iterator it = st.begin(); + StringTokenizer::Iterator itEnd = st.end(); + std::string factoryName = (*it); + it++; + std::string dllName = (*it); + it++; + + for (; it != itEnd; it++) + { + addRequestHandlerFactory(dllName, factoryName, *it); + } +} + + +void ApacheRequestHandlerFactory::addRequestHandlerFactory(const std::string& dllPath, const std::string& factoryName, const std::string& uri) +{ + try + { + _loader.loadLibrary(dllPath); + Poco::Net::HTTPRequestHandlerFactory* pFactory = _loader.classFor(factoryName).create(); + _requestHandlers.insert(std::make_pair(uri, pFactory)); + } + catch (Poco::Exception& exc) + { + ApacheConnector::log(__FILE__, __LINE__, ApacheConnector::PRIO_ERROR, 0, exc.displayText().c_str()); + } +} + + +bool ApacheRequestHandlerFactory::mustHandle(const std::string& uri) +{ + FastMutex::ScopedLock lock(_mutex); + + // only if the given uri is found in _uris we are + // handling this request. + RequestHandlerFactories::iterator it = _requestHandlers.begin(); + RequestHandlerFactories::iterator itEnd = _requestHandlers.end(); + + // if any uri in our map is found at the beginning of the given + // uri -> then we handle it!! + for (; it != itEnd; it++) + { + // dealing with both cases: + // handler is registered with: /download + // uri: /download/xyz + // uri: /download + if (uri.find(it->first) == 0 || it->first.find(uri) == 0) + return true; + } + + return false; +} diff --git a/ApacheConnector/src/ApacheServerRequest.cpp b/ApacheConnector/src/ApacheServerRequest.cpp new file mode 100644 index 000000000..a836f74ad --- /dev/null +++ b/ApacheConnector/src/ApacheServerRequest.cpp @@ -0,0 +1,82 @@ +// +// ApacheServerRequest.cpp +// +// $Id: //poco/1.4/ApacheConnector/src/ApacheServerRequest.cpp#2 $ +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "ApacheServerRequest.h" +#include "ApacheServerResponse.h" +#include "ApacheRequestHandlerFactory.h" +#include "Poco/Exception.h" +#include + + +ApacheServerRequest::ApacheServerRequest( + ApacheRequestRec* pApacheRequest, + const char* serverName, + int serverPort, + const char* clientName, + int clientPort): + _pApacheRequest(pApacheRequest), + _pResponse(0), + _pStream(new ApacheInputStream(_pApacheRequest)), + _serverAddress(serverName, serverPort), + _clientAddress(clientName, clientPort) +{ +} + + +ApacheServerRequest::~ApacheServerRequest() +{ + delete _pStream; +} + + +const Poco::Net::HTTPServerParams& ApacheServerRequest::serverParams() const +{ + throw Poco::NotImplementedException("No HTTPServerParams available in Apache modules."); +} + + +Poco::Net::HTTPServerResponse& ApacheServerRequest::response() const +{ + return *_pResponse; +} + + +void ApacheServerRequest::setResponse(ApacheServerResponse* pResponse) +{ + _pResponse = pResponse; +} + + +bool ApacheServerRequest::expectContinue() const +{ + return false; +} diff --git a/ApacheConnector/src/ApacheServerResponse.cpp b/ApacheConnector/src/ApacheServerResponse.cpp new file mode 100644 index 000000000..3906bac8b --- /dev/null +++ b/ApacheConnector/src/ApacheServerResponse.cpp @@ -0,0 +1,151 @@ +// +// ApacheServerResponse.cpp +// +// $Id: //poco/1.4/ApacheConnector/src/ApacheServerResponse.cpp#3 $ +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "ApacheServerResponse.h" +#include "ApacheServerRequest.h" +#include "ApacheStream.h" +#include "ApacheConnector.h" +#include "Poco/Net/HTTPCookie.h" +#include "Poco/File.h" +#include "Poco/Exception.h" +#include +#include + + +using Poco::File; +using Poco::OpenFileException; +using Poco::Net::HTTPCookie; + + +ApacheServerResponse::ApacheServerResponse(ApacheServerRequest* pRequest): + _pStream(0), + _pApacheRequest(pRequest->_pApacheRequest) +{ + setVersion(pRequest->getVersion()); + setKeepAlive(pRequest->getKeepAlive()); + + pRequest->setResponse(this); +} + + +ApacheServerResponse::~ApacheServerResponse() +{ + delete _pStream; +} + + +void ApacheServerResponse::initApacheOutputStream() +{ + poco_assert (!_pStream); + + _pApacheRequest->setContentType(getContentType()); + + std::vector cookies; + getCookies(cookies); + + std::size_t cnt = cookies.size(); + for (int c = 0; c < cnt; c++) + { + _pApacheRequest->addHeader("Set-Cookie", cookies[c].toString()); + } + + _pStream = new ApacheOutputStream(_pApacheRequest); +} + + +void ApacheServerResponse::sendContinue() +{ + // should be handled by Apache +} + + +std::ostream& ApacheServerResponse::send() +{ + poco_assert (!_pStream); + + initApacheOutputStream(); + + return *_pStream; +} + + +void ApacheServerResponse::sendFile(const std::string& path, const std::string& mediaType) +{ + poco_assert (!_pStream); + + initApacheOutputStream(); + + File f(path); + if (_pApacheRequest->sendFile(path, static_cast(f.getSize()), mediaType) != 0) + throw OpenFileException(path); +} + + +void ApacheServerResponse::sendBuffer(const void* pBuffer, std::size_t length) +{ + poco_assert (!_pStream); + + initApacheOutputStream(); + + _pStream->write(static_cast(pBuffer), static_cast(length)); +} + + +void ApacheServerResponse::redirect(const std::string& uri, HTTPStatus status) +{ + poco_assert (!_pStream); + + initApacheOutputStream(); + + try + { + _pApacheRequest->redirect(uri, status); + } + catch (Poco::Exception&) + { + ApacheConnector::log(__FILE__, __LINE__, 7 , 0, "caught exception in ApacheServerResponse::redirect - ignoring\n"); + } +} + + +void ApacheServerResponse::sendErrorResponse(int status) +{ + initApacheOutputStream(); + + _pApacheRequest->sendErrorResponse(status); +} + + +void ApacheServerResponse::requireAuthentication(const std::string& realm) +{ + // should be handled by Apache +} diff --git a/ApacheConnector/src/ApacheStream.cpp b/ApacheConnector/src/ApacheStream.cpp new file mode 100644 index 000000000..3ec484045 --- /dev/null +++ b/ApacheConnector/src/ApacheStream.cpp @@ -0,0 +1,142 @@ +// +// ApacheStream.h +// +// $Id: //poco/1.4/ApacheConnector/src/ApacheStream.cpp#2 $ +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "ApacheStream.h" +#include "ApacheConnector.h" +#include "Poco/Exception.h" + + +using Poco::BufferedStreamBuf; + + +// +// ApacheStreamBuf +// + + +ApacheStreamBuf::ApacheStreamBuf(ApacheRequestRec* pApacheRequest, bool haveData): + BufferedStreamBuf(STREAM_BUFFER_SIZE, std::ios::in | std::ios::out), + _pApacheRequest(pApacheRequest), + _haveData(haveData) +{ +} + + +ApacheStreamBuf::~ApacheStreamBuf() +{ +} + + +int ApacheStreamBuf::readFromDevice(char* buffer, std::streamsize len) +{ + if (_haveData) + return _pApacheRequest->readRequest(buffer, static_cast(len)); + else + return 0; +} + + +int ApacheStreamBuf::writeToDevice(const char* buffer, std::streamsize length) +{ + _pApacheRequest->writeResponse(buffer, length); + return length; +} + + +// +// ApacheIOS +// + + +ApacheIOS::ApacheIOS(ApacheRequestRec* pApacheRequest, bool haveData): + _buf(pApacheRequest, haveData) +{ + poco_ios_init(&_buf); +} + + +ApacheIOS::~ApacheIOS() +{ + try + { + _buf.sync(); + } + catch (...) + { + } +} + + +ApacheStreamBuf* ApacheIOS::rdbuf() +{ + return &_buf; +} + + +void ApacheIOS::close() +{ + _buf.sync(); +} + + +// +// ApacheOutputStream +// + + +ApacheOutputStream::ApacheOutputStream(ApacheRequestRec* pApacheRequest): + ApacheIOS(pApacheRequest), + std::ostream(&_buf) +{ +} + + +ApacheOutputStream::~ApacheOutputStream() +{ +} + + +// +// ApacheInputStream +// + + +ApacheInputStream::ApacheInputStream(ApacheRequestRec* pApacheRequest): + ApacheIOS(pApacheRequest, pApacheRequest->haveRequestBody()), + std::istream(&_buf) +{ +} + + +ApacheInputStream::~ApacheInputStream() +{ +} diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 000000000..2c30e1b48 --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,1695 @@ +This is the changelog file for the POCO C++ Libraries. + +Release 1.4.4 (2012-04-??) +========================== + +- ZipStream now builds correctly in unbundled build. +- added proxy digest authentication support to Net library +- integrated MySQL BLOB fixes from Franky Braem. +- use standard OpenSSL import libraries (libeay32.lib, ssleay32.lib) for Crypto and + NetSSL_OpenSSL Visual Studio project files. +- fixed a potential buffer corruption issue in Poco::Net::SecureStreamSocket if lazy + handshake is enabled and the first attempt to complete the handshake fails +- Poco::DateTimeParser::tryParse() without format specifier now correctly parses ISO8601 + date/times with fractional seconds. + + +Release 1.4.3p1 (2012-01-23) +============================ + +- fixed SF# 3476926: RegDeleteKeyEx not available on Windows XP 32-bit + + +Release 1.4.3 (2012-01-16) +========================== + +- fixed a compilation error with Data/MySQL on QNX. +- fixed Util project files for WinCE (removed sources not compileable on CE) +- removed MD2 license text from Ackowledgements document +- fixed iPhone build config for Xcode 4.2 (compiler name changed to llvm-g++) +- Poco::Util::XMLConfiguration: delimiter char (default '.') is now configurable. + This allows for working with XML documents having element names with '.' in them. +- Poco::Util::OptionProcessor: Required option arguments can now be specified as + separate command line arguments, as in "--option value" in addition to the + "--option=value" format. +- Poco::Util::HelpFormatter: improved option help formatting if indentation has + been set explicitely. +- added Mail sample to NetSSL_OpenSSL, showing use of Poco::Net::SecureSMTPClientSession. +- added additional read() overloads to Poco::Net::HTMLForm. +- fixed SF# 3440769: Poco::Net::HTTPResponse doesn't like Amazon EC2 cookies. +- added support for requiring TLSv1 to Poco::Net::Context. +- added an additional constructor to Poco::Net::HTTPBasicCredentials, allowing + the object to be created from a string containing a base64-encoded, colon-separated + username and password. +- Poco::Zip::ZipStreamBuf: fixed a crash if CM_STORE was used. +- Added setContentLength64() and getContentLength64() to Poco::Net::HTTPMessage. +- added Poco::Environment::osDisplayName(). +- fixed SF# 3463096: WinService leaves dangling handles (open() now does not reopen the + service handle if it's already open) +- fixed SF# 3426537: WinRegistryConfiguration can't read virtualized keys +- added Poco::Buffer::resize() +- fixed SF# 3441822: thread safety issue in HTTPClientSession: + always use getaddrinfo() instead of gethostbyname() on all platforms supporting it +- added version resource to POCO DLLs +- fixed SF# 3440599: Dir Path in Quotes in PATH cause PathTest::testFind to fail. +- fixed SF# 3406030: Glob::collect problem +- added Poco::Util::AbstractConfiguration::enableEvents() +- Poco::AtomicCounter now uses GCC builtins with GCC 4.1 or newer + (contributed by Alexey Milovidov) +- made Poco::Logger::formatDump() public as it may be useful for others as well + (SF# 3453446) +- Poco::Net::DialogSocket now has a proper copy constructor (SF# 3414602) +- Poco::Net::MessageHeader and Poco::Net::HTMLForm now limit the maximum number of + fields parsed from a message to prevent certain kinds of denial-of-service + attacks. The field limit can be changed with the new method setFieldLimit(). + The default limit is 100. +- Poco::NumberFormatter, Poco::NumberParser and Poco::format() now always use the + classic ("C") locale to format and parse floating-point numbers. +- added Poco::StreamCopier::copyStream64(), Poco::StreamCopier::copyStreamUnbuffered64() + and Poco::StreamCopier::copyToString64(). These functions use a 64-bit integer + to count the number of bytes copied. +- upgraded internal zlib to 1.2.5 +- upgraded internal sqlite to 3.7.9 +- XML: integrated bugfix for Expat bug# 2958794 (memory leak in poolGrow) +- Added support for HTTP Digest authentication (based on a contribution by + Anton V. Yabchinskiy (arn at bestmx dot ru)). For information on how + to use this, see the Poco::Net::HTTPCredentials, Poco::Net::HTTPDigestCredentials + and Poco::Net::HTTPAuthenticationParams classes. +- Poco::Net::HTTPStreamFactory and Poco::Net::HTTPSStreamFactory now support Basic + and Digest authentication. Username and password must be provided in the URI. +- added Poco::Net::WebSocket, supporting the WebSocket protocol as described in RFC 6455 +- NetSSL_OpenSSL: added client-side support for Server Name Indication. + Poco::Net::SecureSocketImpl::connectSSL() now calls SSL_set_tlsext_host_name() + if its available (OpenSSL 9.8.6f and later). +- added Poco::Net::HTTPClientSession::proxyConnect() (factored out from + Poco::Net::HTTPSClientSession::connect()) +- added Poco::Process::kill(const Poco::ProcessHandle&) which is preferable to + kill(pid) on Windows, as process IDs on Windows may be reused. +- fixed SF# 3471463: Compiler warnings with -Wformat +- Poco::Util::Application::run() now catches and logs exceptions thrown in initialize() +- Fixed a WinCE-specific bug in Poco::Util::ServerApplication where uninitialize() would + be called twice. +- fixed SF# 3471957: WinRegistryKey::deleteKey() unable to delete alt views +- Added additional constructor to Poco::ScopedLock and Poco::ScopedLockWithUnlock + accepting a timeout as second argument. +- Added Poco::Logger::parseLevel() +- Poco::format(): an argument that does not match the format + specifier no longer results in a BadCastException. The string [ERRFMT] is + written to the result string instead. +- PageCompiler: added createSession page attribute. + + +Release 1.4.2p1 (2011-09-24) +============================ + +- On Linux, the RTLD_DEEPBIND option is no longer passed to dlopen(). + This change was introduced in 1.4.2 to solve a specific problem one customer + was having. Unfortunately, it leads to problems with RTTI. +- It's now possible to pass flags (SHLIB_GLOBAL, SHLIB_LOCAL) to + Poco::SharedLibrary::load() (and the constructor implicitly calling load()), + controlling the mode flags (RTLD_GLOBAL, RTLD_LOCAL) passed to dlopen(). + On platforms not using dlopen(), these flags are ignored. +- fixed SF# 3400267: Path_WIN32.cpp bug + + +Release 1.4.2 (2011-08-28) +========================== + +- added Poco::DateTimeFormat::ISO8601_FRAC_FORMAT +- added new Poco::DateTimeFormatter and Poco::DateTimeParser format specifier: + %s for seconds with optional fractions of a second +- fixed a problem with ioctl() on BSD platforms (including OS X) where the + second argument to ioctl() is unsigned long instead of int, causing bad + things on a OS X 64-bit kernel. +- fixed a potential endless loop when enumerating IPv6 network addresses + (reported by Laurent Carcagno) +- new compile-time config option on Windows to set thread names in + debugger. Enable with -DPOCO_WIN32_DEBUGGER_THREAD_NAMES. Available + only in debug builds. +- Cipher can now create Base64 and HexBinary encoded output without linefeeds + (suitable for use in cookies, etc.) +- added Poco::Path::popFrontDirectory() +- improved VxWorks support +- IPv6 fixes: added proper scope id handling in IPAddress, SocketAddress + and related classes. +- Added Poco::Net::ServerSocket::bind6() which allows control over the + IPPROTO_IPV6/IPV6_V6ONLY socket option. +- Removed Poco::MD2Engine class due to licensing issues (the + license for the MD2 code from RSA only allows non-commercial + use). Note that the MD4 and MD5 code from RSA does not have + this issue. +- fixed a Net HTTP client testsuite issue where some tests might + have failed due to prematurely aborted connections by + the HTTPTestServer. +- Poco::Net::SocketAddress: when there is more than one address + returned by a DNS lookup for a name, IPv4 addresses will be + preferred to IPv6 ones. +- NetworkInterface::list() now also returns IPv4 interfaces on Windows when + built with -DPOCO_HAVE_IPv6 +- XMLWriter: fixed a bug with attribute namespaces (no namespace prefix + written if attribute namespace is the same as element namespace) +- fixed SF# 3378588: Mismatched new[]/delete (in RSAEncryptImpl and RSADecryptImpl) +- fixed SF# 3212954 (OpenSSLInitializer::uninitialize() crash) and + SF# 3196862 (Static OpenSSLInitializer instance causes Windows deadlocks) by + removing the static Poco::Crypto::OpenSSLInitializer instance. Automatic OpenSSL + initialization is now done through Poco::Crypto::Cipher, Poco::Crypto::CipherKey, + Poco::Crypto::X509Certificate, Poco::Net::Context classes; however, it is still + recommended to call Poco::Crypto::initializeCrypto() and + Poco::Crypto::uninitializeCrypto() early at application startup, and late at + shutdown respectively (or Poco::Net::initializeSSL()/Poco::Net::uninitializeSSL() + if the NetSSL library is used) to avoid multiple full OpenSSL init/uninit cycles + during application runtime. +- Poco::Logger now also support a symbolic log level "none" + (for use with setLevel()) that disables logging completely + for that Logger (equivalent to setLevel(0)). +- Added experimental Android support, using the existing gmake-based + build system. +- fixed SF# 3288584: DateTimeFormatter link error +- fixed SF# 3187117: Typo in InflatingInputStream doc +- fixed SF# 3309731: _WIN32_WCE comparison should be with 0x600 not 600 +- fixed SF# 3393026: RegularExpression.h identical enum value +- fixed SF# 3274222: AtomicCounter's postfix operators aren't atomic on Windows +- fixed SF# 3317177: Handle leak on windows +- fixed SF# 3181882: Poco::URI::getPathEtc() double-encodes query +- fixed SF# 3379935: ThreadPool Start Bug +- fixed SF# 3354451: Poco::Format::parsePrec never sets the precision to zero +- fixed SF# 3387258: _MAX_PATH used but unknown in Path_WIN32 +- fixed a problem in RSAKeyImpl where direct access to the RSA in a EVP_PKEY + would no longer work in recent OpenSSL versions. Using EVP_PKEY_get1_RSA() + fixes the issue. +- added Poco::Crypto::EncryptingInputStream, Poco::Crypto::EncryptingOutputStream, + Poco::Crypto::DecryptingInputStream and Poco::Crypto::DecryptingOutputStream. +- fixed SF# 3148126: HTTPSClientSession destructor (!) throws an IOException +- fixed SF# 3178098: Add constructor to Poco::TemporaryFile to specify directory +- fixed SF# 3175310: Absolute path when device +- fixed SF# 3301207: Guided tour example contradicts apidoc (API doc was wrong) +- Poco::Net::HTTPMessage::setContentLength() and Poco::Net::HTTPMessage::getContentLength() now + use std::streamsize instead of int. This enables 64-bit Content-Length support at least + on 64-bit platforms. +- fixed SF# 3177530: TemporaryFile::tempName() + glob bug on xp +- fixed SF# 3177372: FileChannel documentation inconsistency +- added %E format specifier to Poco::PattermFormatter (epoch time in seconds + since midnight, January 1 1970) +- On Windows, Poco::Util::ServerApplication now supports a /description command + line argument for specifying a service description (together with /registerService) +- added Poco::Util::WinService::setDescription() and + Poco::Util::WinService::getDescription() +- fixed SF# 3155477: Incorrect URI path handling +- fixed SF# 3309736: Extended Exception macros to set default exception code + new macro is named POCO_DECLARE_EXCEPTION_CODE +- added getter functions for modulus and exponents to Poco::Crypto::RSAKey. +- added Poco::Net::SocketAddress::operator == () and + Poco::Net::SocketAddress::operator != () +- fixed SF# 3182746: IPAddress.cpp IPv6 bug on big-endian +- fixed SF# 3196961: Unix daemon fails to loadConfiguration() if started from cwd +- fixed SF# 3393700: NotificationCenter may call a removed observer and crash. +- Reworked implementation of the events framework (Poco::BasicEvent and friends). + The framework is now completely multithreading save (even in the case that + an event subscriber object unsubscribes and is deleted while an event is + being dispatched). Also, the restriction that any object can only register + one delegate for each event has been removed. For most cases, dispatching + events should be faster, as dispatching an event now needs less dynamic memory + allocations. +- fixed SF# 3178109: getNodeByPath() changes: + getNodeByPath() and getNodeByPathNS() have been moved to Poco::XML::Node. + Furthermore, when invoked on a Poco::XML::Document, the behavior has changed + so that the document element is now included when traversing the path (previously, + traversal would start at the document element, now it starts at the document). + The path expression can now start with a double-slash, which results in a recursive + search for the path's first element in the DOM tree. +- fixed SF# 3382935: String data being truncated using ODBC, and + SF# 2921813: Wrong implementation of the ODBC string binding + + +Release 1.4.1p1 (2011-02-08) +============================ + +- Poco::Mutex is now a recursive mutex again on Linux + (this was caused by an unfortunate feature test for + PTHREAD_MUTEX_RECURSIVE which did not work on Linux + as PTHREAD_MUTEX_RECURSIVE is an enum value and not + a macro) +- Poco::Net::SecureSocketImpl::abort() now only shuts + down the underlying socket connection and does not free + the SSL object, due to multithreading issues. + + +Release 1.4.1 (2011-01-29) +========================== + +- fixed SF# 3150223: Poco::BinaryReader cannot read std::vector correctly +- fixed SF# 3146326: SharedMemory issue +- made Poco::Net::HTTPSession::abort() virtual +- added Poco::Net::SecureStreamSocket::abort() to immediately close + a SSL/TLS connection without performing an orderly SSL/TLS shutdown. +- fixed SF# 3148126: HTTPSClientSession destructor (!) throws an IOException. + Added try/catch block to Poco::Net::SecureSocketImpl destructor. +- added additional constructor to Poco::Net::HTTPSClientSession, taking + both a socket and a session object. +- Poco::Net::HTTPSession::abort() now also can be used with a + Poco::Net::HTTPSClientSession. +- fixed SF# 3148045: make clean and distclean issues +- changed Data library names on Unix/Linux platforms to + match the names on Windows (PocoSQLite -> PocoDataSQLite, + PocoMySQL -> PocoDataMySQL, PocoODBC -> PocoDataODBC) +- added additional options to configure script +- added additional documentation to Poco::Net::HTTPClientSession +- Poco::Net::HTTPClientSession::receiveResponse() closes the connection + if an exception is thrown while reading the response header. + This ensures that a new connection will be set up for the next request + if persistent connections are used. +- improved Poco::Net::MultipartDecoder performance by reading directly from streambuf +- improved performance of Poco::Base64Encoder, Poco::Base64Decoder, + Poco::HexBinaryEncoder and Poco::HexBinaryDecoder by working directly with the + given stream's streambuf. +- improved performance of MessageHeader::read() by reading directly from streambuf + instead of istream. +- it is now possible to specify additional MIME part header fields + for a MIME part through the Poco::Net::PartSource class. +- upgraded SQLite to release 3.7.4 +- added experimental VxWorks support for VxWorks 5.5.1/Tornado 2.2 and + newer. Please see the VxWorks Platform Notes in the reference documentation + for more information. Currently, the VxWorks is untested; full support + will be available in release 1.4.2. +- fixed SF# 3165918: Poco::DynamicAny fails to convert from string to float +- fixed SF# 3165910: Poco::Net::MessageHeader does not accept HTTP conforming header +- made Poco::Task::cancel() virtual so that tasks can implement custom + cancellation behavior. +- added optional argument to Poco::Util::WinRegistryKey constructor + to specify additional flags (in addition to KEY_READ and KEY_WRITE) + for the samDesired argument of RegOpenKeyEx() or RegCreateKeyEx(). +- improved Poco::BasicEvent::notify() performance by avoiding an unnecessary heap + allocation. +- added additional well-known port numbers to Poco::URI: rtsp, sip, sips, xmpp. +- added Poco::Net::MediaType::matchesRange() +- improved invalid socket handling: a Poco::Net::InvalidSocketException is + now thrown instead of an assertion when an operation is attempted on a closed or + otherwise uninitialized socket. + + +Release 1.4.0 (2010-12-14) +========================== + +- SSLManager: documentation fixes, code cleanup +- SSLManager: renamed PrivateKeyPassPhrase event to PrivateKeyPassphraseRequired +- added HTTPServerRequestImpl::socket() to get access to the underlying socket +- added Socket::secure() to find out whether a given socket supports SSL/TLS +- added SecureStreamSocket::havePeerCertificate() +- NetSSL: added support for turning off extended certificate validation (hostname matching) +- fixed SF# 2941228: ICMPClient::ping() issues on Mac OS X +- fixed SF# 2941231: ICMPEventArgs out of bounds array access +- added PageCompiler sample +- added missing newline at end of xmlparse.c +- Poco::Glob can now be used with an empty pattern which will match nothing (patch from Kim Graesman) +- added support for HTTP proxy authentication (Basic authentication only) +- fixed SF# 2958959: XMLWriter must encode CR, LF and TAB in attribute values as character entities. +- HTMLForm now supports PUT requests as well (see ) +- fixed SF# #2970521: FileOutputStream and file permissions. + (also fixed in File class) +- removed an unused (and wrong) default parameter from EventImpl constructor for WIN32. +- added full support for session caching to NetSSL_OpenSSL +- fixed SF# 2984454: Poco::Util::Timer::scheduleAtFixedRate() works incorrectly +- fixed a bug in Poco::Util::Timer that could lead to high CPU load if + the system clock is moved forward. +- added system.nodeId to SystemConfiguration +- added a note to Poco::Util::ServerApplication documentation regarding + creation of threads +- added Poco::Net::IPAddress::broadcast() and Poco::Net::IPAddress::wildcard() to + create broadcast (255.255.255.255) and wildcard (0.0.0.0) addresses. +- fixed SF# 2916154: Poco::Net::IPAddress::isLoopback() only works for 127.0.0.1. +- added build configuration for iPhone Simulator +- GNU Make based build system provides new variables: POCO_HOST_BINDIR, POCO_HOST_BINPATH, + POCO_HOST_LIBDIR, POCO_HOST_LIBPATH and POCO_TARGET_* equivalents. +- Application::initialize() and Application::uninitialize() will now be called from within run(). + This solves various issues with uninitialize() not being called, or being called inappropriately + from the Application destructor. + Please note that this change will break applications that use the Application class, + but only call init() and not run(). +- added /startup option to specify startup mode for Windows services (automatic or manual) +- fixed SF# 2967354: SecureSocketImpl shutdown/close problem +- fixed SF# 3006340: LinearHashTable grows even if key already exists +- fixed a particularly nasty Windows error handling issue that manifested itself on WinCE: + WSAGetLastError() would be called after a std::string was created. The string creation could result + in a heap operation which called a Windows API to allocate memory. This would reset the + GetLastError() error code. Since WSAGetLastError() is just an alias for GetLastError(), the actual + error code from the socket operation would be lost. +- upgraded SQLite to 3.7.3 +- added --header-prefix option to PageCompiler +- fixed SF# 3003875: SQLite data binding is broken +- fixed SF# 2993988: Issue with multiple calls to open()/close() on File*Stream +- fixed SF# 2990256: HTMLForm and file uploads +- fixed SF# 2969227: DateTimeParser bug +- fixed SF# 2966698: Socket connect with timeout issue +- fixed SF# 2981041: Bind NULL to a query (patch supplied) +- fixed SF# 2961419: UTF8Encoding::convert() doesn't work properly in DEBUG mode +- fixed SF# 2957068: Timeout value not picked up by proxy in HTTPSClientSession +- fixed NetSSL_OpenSSL test runner for Poco::Util::Application class changes +- Poco::AbstractEvent, Poco::AbstractCache and related classes now accept a Mutex class as additional template argument. + Poco::NullMutex can be used if no synchronization is desired. +- Added Poco::AbstractEvent::empty() to check whether an event has registered delegates. +- Poco::URI now correctly handles IPv6 addresses. +- Added Poco::Nullable class template. +- Added Poco::NullMutex, a no-op mutex to be used as template argument for template classes + taking a mutex policy argument. +- Poco::XML::XMLWriter: fixed a namespace handling issue that occured with startPrefixMapping() and endPrefixMapping() +- Poco::Net::Context now allows for loading certificates and private keys from Poco::Crypto::X509Certificate objects + and Poco::Crypto::RSAKey objects. +- Poco::Crypto::RSAKey no longer uses temporary files for stream operations. Memory buffers are used instead. +- fixed SF# 2957865: added Poco::UUID::tryParse() +- All Zip classes now use Poco::File[Input|Output]Stream instead of std::[i|o]fstream. + UTF-8 filenames will now be handled correctly on Windows. +- fixed SF# 2902029: zlib flush support (Z_SYNC_FLUSH) +- added Poco::TextBufferIterator class +- fixed SF# 2977249: Use epoll instead select under Linux + Socket::select() and Socket::poll() will use epoll under Linux if the Net library is compiled + with -DPOCO_HAVE_FD_EPOLL. This is the default for the Linux build configuration (but not for + the various build configurations targeting embedded Linux platforms). +- fixed SF# 2941664: Memory leak in DeflatingStream with zero-length streams (also fixed some other potential, + but unlikely, memory leaks) +- fixed SF# 2946457: added RejectCertificateHandler +- fixed SF# 2946621: Poco::Path bug with POCO_WIN32_UTF8 +- fixed SF# 2929805: Environment::nodeId() does not work if no eth0 device exists +- Environment::nodeId() no longer throws if no hardware ethernet address can be determined. + It returns an all-zero address instead. +- Added additional classification functions to Poco::Unicode class; made classification functions inline. +- added Ascii class for ASCII character classification. + Methods of the Ascii class are now used instead of the + standard library functions (std::isspace(), etc.) due to + possible inconsistent results or assertions when the + standard library functions are used with character codes + outside the ASCII range. +- Poco::Net::MailMessage: fixed a bug in StringPartHandler that resulted in incorrect handling of non-ASCII data if + char is signed. +- Improved Poco::Net::SMTPClientSession compatibility with various mail servers when using AUTH_LOGIN authentication. +- Added CRAM-SHA1 support to Poco::Net::SMTPClientSession +- Poco::Net::SMTPClientSession now also supports login with AUTH PLAIN. +- Added Poco::Net::SecureSMTPClientSession class, supporting STARTTLS for secure SMTP connections. +- fixed an issue with SharedMemory on POSIX systems, where a shared memory region would be deleted + despite the server flag set to true (see http://pocoproject.org/forum/viewtopic.php?f=12&t=3494). +- PageCompiler: added a new page context directive, to allow passing custom context objects to the + request handler. +- fixed StreamSocketImpl::sendBytes() for non-blocking sockets +- added Poco::Net::DialogSocket::receiveRawBytes(), which should be used instead of receiveBytes() due to internal + buffering by DialogSocket. +- DOMParser: FEATURE_WHITESPACE has been renamed to FEATURE_FILTER_WHITESPACE (which now matches the underlying URI) + and is now handled correctly (previously we did the exact reverse thing) +- added Poco::Util::AbstractConfiguration::remove() to remove a configuration property; added removeRaw() implementations + to all implementations (contributions by Daniel Hobi and Alexey Shults). +- fixed NetSSL_OpenSSL compilation error on Windows with OpenSSL 1.0 +- Added optional FIPS mode support to NetSSL_OpenSSL (contributed by Lior Okman). + If OpenSSL has been configured and built with FIPS support, then FIPS support can + be enabled by calling Poco::Crypto::OpenSSLInitializer::enableFIPSMode(true); or + by setting the fips property in the OpenSSL configuration to true (see Poco::Net::SSLManager + for details). +- fixed SF# 3031530: Ping and possible no timeout +- added Poco::Net::SocketReactor::onBusy(), called whenever at least one notification will + be dispatched. +- fixed SF# 3034863: Compiler warning in net/IPAddress.h with poco 1.3.2 +- added support for CRAM-SHA1 authentication to SMTPClientSession +- Poco::format(): arguments can now be addressed by their index, e.g. %[2]d +- Poco::Util::Timer::cancel() now accepts an optional boolean argument. + If true is passed, cancel() waits until the task queue has been purged. + Otherwise, it returns immediately and works asynchronously, as before. +- Poco::Net::HTTPServerResponse::redirect() now accepts an optional additional + argument to specify the HTTP status code for the redirection. +- fixed a warning (BinaryReader.cpp) and error (ThreadLocal.cpp) in Foundation when compiling with Visual Studio 2010 +- fixed a wrong exception in Poco::Net::POP3ClientSession +- Poco::Net::FTPClientSession and Poco::Net::SMTPClientSession now set the error code in exceptions they throw +- fixed a potential race condition with terminating a Windows service based on Poco::Util::ServerApplication +- fixed a bug in global build configuration file: explicitly setting POCO_CONFIG did not work on Solaris platforms, + as it was always overridden by the automatically determined configuration. +- Added support for MinGW cross builds on Linux. +- Changed location of statically linked build products in the gmake-based build system. + Statically linked executables are now in bin/$(OSNAME)/$(OSARCH)/static and no longer + have the _s suffix +- The POCO_VERSION macro now is in its own header file, "Poco/Version.h". It is no longer + available through "Poco/Foundation.h". +- added Poco::Net::HTTPCookie::escape() and Poco::Net::HTTPCookie::unescape(). +- fixed SF# 3021173: Thread (POSIX) returns uninitialised value for OS priority +- fixed SF# 3040870: ThreadPool has no function to get assigned name +- fixed SF# 3044303: Can't use own config file on Solaris & OSARCH_64BITS ignored +- fixed SF# 2943896: AsyncChannel::log blocks +- fixed a bug in Poco::Util::WinRegistryKey::getInt(): + The size variable passed to RegQueryValueExW() should be initialized to the size + of the output buffer. +- Added rudimentary support for compiling with Clang 2.0 (Xcode 4) on Mac OS X. +- New build configurations for Mac OS X: Darwin32 and Darwin64 for explicit + 32-bit and 64-bit builds. Note that the default Darwin build configuration + will build 64-bit on Snow Leopard and 32-bit on Leopard, but will always place + build products in Darwin/i386. The new Darwin32 and Darwin64 configurations + will use the correct directories. +- fixed SF# 3051598: Bug in URL encoding +- Poco::ThreadPool::stopAll() (and thus also the destructor) will now wait for each + pooled thread to terminate before returning. This fixes an issue with creating + and orderly shutting down a thread pool in a plugin. Previously, a pooled thread + in a thread pool created by a dynamically loaded library might still be running + when the plugin's shared library was unloaded, resulting in Bad Things happening. + This can now no longer happen. As a downside, a pooled thread that fails to + finish will block stopAll() and the destructor forever. +- NetSSL_OpenSSL: for a SecureStreamSocket, available() now returns the number of bytes that + are pending in the SSL buffer (SSL_pending()), not the actual socket buffer. +- Added Poco::Net::HTTPClientSession::secure() to check for a secure connection. +- Poco::Net::HTTPRequest::setHost() now does not include the port number in the Host header + if it's either 80 or 443. +- log messages can now optionally include source file path and line number +- Poco::PatternFormatter can format source file path and line number (%U, %u) +- logging macros (poco_information(), etc.) now use __LINE__ and __FILE__ +- new logging macros that incorporate Poco::format(): poco_information_f1(logger, format, arg) with up to 4 arguments +- added Poco::Net::HTTPSession::attachSessionData() and Poco::Net::HTTPSession::sessionData() + to attach arbitrary data to a HTTP session. +- added additional constructors to zlib stream classes that allow passing + a windowBits parameter to the underlying zlib library. +- fixed a potential error handling issue in Poco::Net::SecureSocketImpl. +- fixed SF# 3110272: RSACipherImpl bug. +- fixed SF# 3081677: ConfigurationView's getRaw not retrieving xml attributes. +- added basic support for Canonical XML and better pretty-printing support to Poco::XML::XMLWriter. +- Poco::Util::AbstractConfiguration now supports events fired when changing or + removing properties. +- XML: added support for finding DOM nodes by XPath-like + expressions. Only a very minimal subset of XPath is supported. + See Poco::XML::Element::getNodeByPath(), Poco::XML::Element::getNodeByPathNS() + and the same methods in Poco::XML::Document. +- Poco::Timer: If the callback takes longer to execute than the + timer interval, the callback function will not be called until the next + proper interval. The number of skipped invocations since the last + invocation will be recorded and can be obtained by the callback + by calling skipped(). +- Poco::BinaryReader and Poco::BinaryWriter now support reading and + writing std::vectors of the supported basic types. Also, strings + can now be written in a different encoding (a Poco::TextEncoding + can be optionally passed to the constructor). +- Poco::UUID::nil() and Poco::UUID::isNil() have been renamed to + Poco::UUID::null() and Poco::UUID::isNull(), respectively, to avoid + issues with Objective-C++ projects on Mac OS X and iOS where nil is + a system-provided macro. +- Crypto bugfixes: RSACipherImpl now pads every block of data, not just the + last (or last two). +- Improved Crypto testsuite by adding new tests +- Added new Visual Studio project configurations: debug_static_mt and release_static_mt + (linking with static runtime libraries). The existing configurations debug_static + and release_static have been renamed to debug_static_md and release_static_md, respectively. + The suffixes of the static libraries have also changed. The static_md configurations + now build libraries with suffixes md[d], while the libraries built by the static_mt + configurations have mt[d] suffixes. +- Added Visual Studio project files for 64-bit builds. +- Added Visual Studio 2010 project files. +- Removed the use of local static objects in various methods due to + their construction not being threadsafe (and thus leading to + potential race conditions) on Windows/Visual C++. +- Fixed some warning on 64-bit Windows builds. +- The name of the Data connector libraries have changed. They are now + named PocoDataMySQL, PocoDataODBC and PocoDataSQLite. +- fixed SF# 3125498: Linux NetworkInterface::list() doesn't return IPv6 IPs +- fixed SF# 3125457: IPv6 IPAddress tests are wrong +- Added initialization functions for the NetSSL_OpenSSL and Crypto libraries. + These should be called instead of relying on automatic initialization, + implemented with static initializer objects, as this won't work with + statically linked executables (where the linker won't include the + static initializer object). + The functions are Poco::Crypto::initializeCrypto(), Poco::Crypto::uninitializeCrypto(), + Poco::Net::initializeSSL() and Poco::Net::uninitializeSSL(). + Applications using Crypto and/or NetSSL should call these methods appropriately at + program startup and shutdown. + Note: In release 1.3.6, similar functions have been added to the Net library. + + +Release 1.3.6p2 (2010-01-15) +============================ + +- fixed an issue in the Windows implementation Poco::RWLock, where + tryReadLock() sometimes would return false even if no writers + were using the lock (fix contributed by Bjrn Carlsson) +- added Poco::Environment::libraryVersion(). +- fixed SF# 2919461: Context ignores parameter cypherList +- removed an unused enum from RSACipherImpl.cpp (Crypto) +- integrated a new expat patch for CVE-2009-3560. +- fixed SF# 2926458: SSL Context Problem. The Poco::Net::Context + class now makes sure that OpenSSL is properly initialized. +- updated iPhone build configuration (contributed by Martin York) +- fixed SF# 1815124 (reopened): XML Compile failed on VS7.1 with + XML_UNICODE_WCHAR_T +- fixed SF# 2932647: FTPClientSession::getWorkingDirectory() returns a bad result + + +Release 1.3.6p1 (2009-12-21) +============================ + +- added support for using external zlib, pcre, expat and sqlite3 instead of + bundled ones (-DPOCO_UNBUNDLED, configure --unbundled) +- fixed SF# 2911407: Add sh4 support +- fixed SF# 2912746: RSAKey::EXP_LARGE doesn't work +- fixed SF# 2904119: abstractstrategy uses std::set but do not includes it +- fixed SF# 2909946: localtime NULL pointer +- fixed SF# 2914986: potential expat DoS security issues (CVE-2009-3560 and CVE-2009-3720) +- fixed SF# 2916305: SSL Manager crashes +- fixed SF# 2903676: Tuple TypeHander does not handle composites. + + +Release 1.3.6 (2009-11-24) +========================== + +- added Environment::processorCount() +- added POCO_VERSION macro to Poco/Foundation.h +- fixed SF# 2807527: Poco::Timer bug for long startInterval/periodic interval +- fixed a bug similar to SF# 2807527 in Poco::Util::Timer. +- fixed SF# 2795395: Constructor doesn't treat the params "key" and "iv" +- fixed SF# 2804457: DateTime::checkLimit looks wrong +- fixed SF# 2804546: DateTimeParser requires explicit RFC1123 format +- added ReleaseArrayPolicy to Poco::SharedPtr +- upgraded to SQLite 3.6.20 +- fixed SF# 2782709: Missing semicolons in "Logger.h" convenience +- fixed SF# 2526407: DefaultStrategy.h ++it instead of it++ in a loop +- fixed SF# 2502235: Poco STLPort patch +- fixed SF# 2186643: Data::Statement::reset() not implemented in 1.3.3 +- fixed SF# 2164227: Allow File opened read only by FileInputSteam to be writable +- fixed SF# 2791934: use of char_traits::copy in BufferedStreamBuf::underflow +- fixed SF# 2807750: Support additional SQL types in SQLite +- fixed documentation bugs in Timed/PriorityNotificationQueue +- fixed SF# 2828401: Deadlock in SocketReactor/NotificationCenter (also fixes patch# 1956490) + NotificationCenter now uses a std::vector internally instead of a std::list, and the mutex is + no longer held while notifications are sent to observers. +- fixed SF# 2835206: File_WIN32 not checking aganist INVALID_HANDLE_VALUE +- fixed SF# 2841812: Posix ThreadImpl::sleepImpl throws exceptions on EINTR +- fixed SF# 2839579: simple DoS for SSL TCPServer, HTTPS server + No SSL handshake is performed during accept() - the handshake is delayed until + sendBytes(), receiveBytes() or completeHandshake() is called for the first time. + This also allows for better handshake and certificate validation when using + nonblocking connections. +- fixed SF# 2836049: Possible handle leak in FileStream + If sync() fails, close() now simply set's the stream's bad bit. + In any case, close() closes the file handle/descriptor. +- fixed SF# 2814451: NetSSL: receiveBytes crashes if socket is closed +- added a workaround for Vista service network initialization issue + (an Windows service using the Net library running under Vista will + crash in the call to WSAStartup() done in NetworkInitializer). + Workaround is to call WSAStartup() in the application's main(). + Automatic call to WSAStartup() in the Net library can now be disabled + by compiling Net with -DPOCO_NET_NO_AUTOMATIC_WSASTARTUP. Also + the new Poco::Net::initializeNetwork() and Poco::Net::uninitializeNetwork() + functions can be used to call WSAStartup() and WSACleanup(), respectively, + in a platform-independent way (on platforms other than Windows, these + functions will simply do nothing). +- added VCexpress build script support (contributed by Jolyon Wright) +- fixed SF# 2851052: Poco::DirectoryIterator copy constructor is broken +- fixed SF# 2851197: IPAddress ctor throw keyword missing +- added Poco::ProtocolException +- PageCompiler improvements: new tags, support for buffered output, etc. +- better error reporting in Data MySQL connector (patch #2881270 by Jan "HanzZ" Kaluza) +- fixed SF# 1892462: FTPClient:Choose explicitely between EPSV and PASV +- fixed SF# 2806365: Option for PageCompiler to write output to different dir +- fixed a documentation bug (wrong sample code) in Process::launch() documentation +- added --header-output-dir option to PageCompiler +- fixed SF# 2849144: Zip::Decompress notifications error +- SAXParser has a new feature: "http://www.appinf.com/features/enable-partial-reads". + See ParserEngine::setEnablePartialReads() for a description of what this does. +- fixed SF# 2876179: MySQL Signed/Unsigned value bug +- fixed SF# 2877970: possible bug in timer task +- fixed SF# 2874104: wrong parsing empty http headers +- fixed SF# 2860694: Incorrect return code from SecureStreamSocketImpl::sendBytes +- fixed SF# 2849750: Possible bug with XMLWriter? +- added MailMessage::encodeWord() to support RFC 2047 word encoded + mail header fields when sending out mail containing non-ASCII + characters. +- fixed SF# 2890975: SMTPClientSession bug with 7BIT encoding +- fixed an issue with retrieving the value of socket options on Windows 7. + Before obtaining the value of a socket, we now initialize the variable receiving the + socket option value to zero. +- fixed SF# 2836141: Documentation errors +- fixed SF# 2864232: Socket::select() does not detect closed sockets on windows +- fixed SF# 2812143: Socket::select() should check socket descriptors... +- fixed SF# 2801750: NetworkInterface forName returns wrong subnetMask +- fixed SF# 2816315: Problem with POSIX Thread::sleepImpl +- fixed SF# 2795646: IPv6 address parsing bug +- fixed #0000092: ServerApplication::waitForTerminationRequest(), SIGINT and GDB. + Poco::Util::ServerApplication::waitForTerminationRequest() no longer registers a + signal handler for SIGINT if the environment variable POCO_ENABLE_DEBUGGER + is defined. +- fixed SF# 2896070: Poco::Net::Context with non-ASCII paths +- added Unicode Surrogate support to Poco::UTF16Encoding. + See Poco::TextEncoding::queryConvert() and Poco::TextEncoding::sequenceLength() + for how this is implemented. Contributed by Philippe Cuvillier. +- fixed SF# 2897650: [branch 1.3.6] Net.SocketAddress won't compile for CYGWIN +- fixed SF# 2896161: Building on Windows fails when basedir has space in it +- fixed SF# 2864380: Memory leak when using secure sockets +- NetSSL_OpenSSL: the SSL/TLS session cache is now disabled by default and + can be enabled per Context using Poco::Net::Context::enableSessionCache(). +- fixed SF# 2899039: Wrong DST handling in LocalDateTime +- added RWLock::ScopedReadLock and RWLock::ScopedWriteLock (contributed by Marc Chevrier) +- added Thread::TID type, as well as Thread::tid() and Thread::currentTid() to obtain the native + thread handle/ID +- added Zip file comment support +- On Windows, Poco::SharedLibrary::load() now uses LoadLibraryEx instead of LoadLibrary + and uses the LOAD_WITH_ALTERED_SEARCH_PATH if an absolute path is specified. This will + add the directory containing the library to the search path for DLLs that the + loaded library depends upon. +- Mac OS X build settings now match those used by default Xcode projects, making linking the + POCO libs to Xcode projects easier +- Replaced use of std::valarray in Poco::Net::ICMPEventArgs with std::vector due to issues with + std::valarray together with STDCXX debug mode on OS X + + +Release 1.3.5 (2009-05-11) +========================== + +- fixed SF# 2779410: Poco::Data::ODBC::HandleException impovement +- fixed wrong exception text for Poco::UnhandledException +- Fixed a problem with SSL shutdown that causes clients (web browsers) + to hang when the server attempts to perform a clean SSL shutdown. We now call + SSL_shutdown() once, even if the shutdown is not complete after the first call. +- added Poco::Crypto::X509Certificate::save() +- fixed a bug in Poco::Zip::Decompress that results in wrong paths for extracted files +- fixed a bug in Poco::Zip::ZipManipulator where the Zip file was opened in text format + on Windows. +- added Poco::Crypto::X509Certificate::issuedBy() to verify certificate chain. +- fixed 0000089: Thread::sleep() on Linux is extremely inaccurate +- added methods to extract the contents of specific fields from the + subject and issuer distinguished names of a certificate. + + +Release 1.3.4 (2009-04-21) +========================== + +- fixed SF# 2611804: PropertyFileConfiguration continuation lines +- fixed SF# 2529788: ServerApplication::beDaemon() broken +- fixed SF# 2445467: Bug in Thread_WIN32.cpp +- Improved performance of HTTP Server by removing some + string copy operations +- fixed SF# 2310735: HTTPServer: Keep-Alive only works with send() +- fixed appinf.com IP address in Net testsuite +- fixed RFC-00188: NumberFormatter and float/double numbers +- added --pidfile option to ServerApplication on Unix +- fixed SF# 2499504: Bug in Win32_Thread when using from dll (fixed also for POSIX threads) +- fixed SF# 2465794: HTTPServerRequestImpl memory leak +- fixed SF# 2583934: Zip: No Unix permissions set +- the NetSSL_OpenSSL library has been heavily refactored +- added NumberFormatter::append*() and DateTimeFormatter::append() functions +- use NumberFormatter::append() and DateTimeFormatter::append() instead of format() where + it makes sense to gain some performance +- added system.dateTime and system.pid to Poco::Util::SystemConfiguration +- added %F format specifier (fractional seconds/microseconds) to DateTimeFormatter, + DateTimeParser and PatternFormatter. +- fixed SF# 2630476: Thread_POSIX::setStackSize() failure with g++ 4.3 +- fixed SF# 2679279: Handling of -- option broken +- added compile options to reduce memory footprint of statically linked applications + by excluding various classes from automatically being linked. + See the POCO_NO_* macros in Poco/Config.h. +- fixed SF# 2644940: on Windows the COMPUTER-NAME and the HOSTNAME can be different +- added DNS::hostName() function +- added build configuration for iPhone (using Apple's SDK) +- basic support for AIX 5.x/xlC 8 +- fixed a bug resulting in a badly formatted exception message with IOException + thrown due to a socket-related error +- fixed SF# 2644718: NetworkInterface name conflict in MinGW +- added a missing #include to CryptoTransform.h +- fixed SF# 2635377: HTTPServer::HTTPServer should take AutoPtr +- replaced plain pointers with smart pointers in some interfaces +- upgraded to sqlite 3.6.13 +- improved Data::SQLite error reporting +- Poco::Glob now works with UTF-8 encoded strings and supports case-insensitive comparison. + This also fixes SF# 1944831: Glob::glob on windows should be case insensitve +- added Twitter client sample to Net library +- Fixed SF# 2513643: Seg fault in Poco::UTF8::toLower on 64-bit Linux +- Poco::Data::SessionPool: the janitor can be disabled by specifying a zero idle time. +- added Poco::Data::SessionPool::customizeSession() +- added support for different SQLite transaction modes (DEFERRED, IMMEDIATE, EXCLUSIVE) +- fixed a few wrong #if POCO_HAVE_IPv6 in the Net library +- added support for creating an initialized, but unconnected StreamSocket. +- added File::isDevice() +- added family() member function to SocketAddress, +- Data::SQLite: added support for automatic retries if the database is locked +- XMLConfiguration is now writable +- fixed an IPv6 implementation for Windows bug in HostEntry +- Timer class improvement: interval between callback is no longer influenced by the + time needed to execute the callback. +- added PriorityNotificationQueue and TimedNotificationQueue classes to Foundation. + These are variants of the NotificationQueue class that support priority and + timestamp-tagged notifications. +- added Poco::Util::Timer class. This implements a timer that can schedule different + tasks at different times, using only one thread. +- the signatures of Poco::NotificationQueue and Poco::NotificationCenter member functions + have been changed to accept a Poco::Notification::Ptr instead of Poco::Notification* + to improve exception safety. This change should be transparent and fully backwards + compatible. The signature of the methods returning a Poco::Notification* have not been + changed for backwards compatibility. It is recommended, that any Notification* obtained + should be immediately assigned to a Notification::Ptr. +- SQLite::SessionImpl::isTransaction() now uses sqlite3_get_autocommit() to find out + about the transaction state. +- refactored Crypto library to make it independent from NetSSL_OpenSSL. +- added support for RSA-MD5 digital signatures to Crypto library. +- removed SSLInitializer from NetSSL library (now moved to Crypto library) +- added build configs for static libraries to Crypto library +- OpenSSL now depends on Crypto library (which makes more sense than + vice versa, as it was before). Poco::Net::X509Certificate is now + a subclass of Poco::Crypto::X509Certificate (adding the verify() + member function) and the Poco::Net::SSLInitializer class was + moved to Poco::Crypto::OpenSSLInitializer. +- added build configs for static libraries to Zip +- added batch mode to CppUnit::WinTestRunner. + WinTestRunnerApp supports a batch mode, which runs the + test using the standard text-based TestRunner from CppUnit. + To enable batch mode, start the application with the "/b" + or "/B" command line argument. Optionally, a path to a file + where the test output will be written to may be given: + "/b:" or "/B:". + When run in batch mode, the exit code of the application + will denote test success (0) or failure (1). +- testsuites now also work for static builds on Windows +- The IPv6 support for Windows now basically works (Net library compiled with POCO_HAVE_IPv6) +- fixed a potential error when shutting down openssl in a statically linked application +- added static build configs to Data library +- added Poco::AtomicCounter class, which uses OS-specific APIs for atomic (thread-safe) + manipulation of counter values. +- Poco::RefCountedObject and Poco::SharedPtr now use Poco::AtomicCounter for + reference counting +- fixed SF# 2765569: LoadConfiguration failing from current directory + + +Release 1.3.3p1 (2008-10-09) +============================ + +- Fixed SF# 2153031: 1.3.3 Crypto won't compile on 64-bit Linux +- Fixed a warning in MySQL connector +- Updated README +- The global Makefile in the Zip archive is no longer broken + + +Release 1.3.3 (2008-10-07) +========================== + +- Threads now have optional user-settable stack size (if the OS supports that feature) +- Events now support simplified delegate syntax based on delegate function template. + See Poco::AbstractEvent documentation for new syntax. +- Cache supports new access expire strategy. +- Upgraded to SQLite 3.6.2 +- Upgraded to PCRE 7.8 +- added HttpOnly support to Poco::Net::HTTPCookie +- NetworkInterface now has displayName() member (useful only on Windows) +- Poco::Util::WinRegistryKey now has a read-only mode +- Poco::Util::WinRegistryKey::deleteKey() can now recursively delete registry keys +- Poco::File::created() now returns 0 if the creation date/time is not known, as + it's the case on most Unix platforms (including Linux). + On FreeBSD and Mac OS X, it returns the real creation time. +- Time interval based log file rotation (Poco::FileChannel) now works + correctly. Since there's no reliable and portable way to find out the creation + date of a file (Windows has the tunneling "feature", most Unixes don't provide + the creation date), the creation/rotation date of the log file is written into + the log file as the first line. +- added Environment::nodeId() for obtaining the Ethernet address of the system + (this is now also used by UUIDGenerator - the corresponding code from UUIDGenerator + was moved into Environment) +- added a release policy argument to SharedPtr template +- Socket::select() will no longer throw an InvalidArgumentException + on Windows when called with no sockets at all. If all three socket + sets are empty, Socket::select() will return 0 immediately. +- SocketReactor::run() now catches exceptions and reports them via + the ErrorHandler. +- SocketReactor has a new IdleNotification, which will be posted when + the SocketReactor has no sockets to handle. +- added referenceCount() method to Poco::SharedPtr. +- POCO now builds with GCC 4.3 (but there are some stupid warnings: + "suggest parentheses around && within ||". +- Solution and project files for Visual Studio 2008 are included +- The Zip library is now officially part of the standard POCO release. +- The Crypto library (based on OpenSSL) has been added. The original code + was kindly contributed by Ferdinand Beyer. +- A Data Connector to MySQL, contributed by Sergey Kholodilov, is now part + of the POCO release. +- fixed SF# 1859738: AsyncChannel stall +- fixed SF# 1815124: XML Compile failed on VS7.1 with XML_UNICODE_WCHAR_T +- fixed SF# 1867340: Net and NetSSL additional dependency not set - ws2_32.lib +- fixed SF# 1871946: no exception thrown on error +- fixed SF# 1881113: LinearHashTable does not conform to stl iterators +- fixed SF# 1899808: HTMLForm.load() should call clear() first +- fixed SF# 2030074: Cookie problem with .NET server +- fixed SF# 2009707: small bug in Net/ICMPPacketImpl.cpp +- fixed SF# 1988579: Intel Warning: invalid multibyte character sequence +- fixed SF# 2007486: Please clarify license for Data/samples/* +- fixed SF# 1985180: Poco::Net::DNS multithreading issue +- fixed SF# 1968106: DigestOutputStream losing data +- fixed SF# 1980478: FileChannel loses messages with "archive"="timestamp" +- fixed SF# 1906481: mingw build WC_NO_BEST_FIT_CHARS is not defined +- fixed SF# 1916763: Bug in Activity? +- fixed SF# 1956300: HTTPServerConnection hanging +- fixed SF# 1963214: Typo in documentation for NumberParser::parseFloat +- fixed SF# 1981865: Cygwin Makefile lacks ThreadTarget.cpp +- fixed SF# 1981130: pointless comparison of unsigned integer with zero +- fixed SF# 1943728: POCO_APP_MAIN namespace issue +- fixed SF# 1981139: initial value of reference to non-const must be an lvalue +- fixed SF# 1995073: setupRegistry is broken if POCO_WIN32_UTF8 enabled +- fixed SF# 1981125: std::swap_ranges overloading resolution failed +- fixed SF# 2019857: Memory leak in Data::ODBC Extractor +- fixed SF# 1916761: Bug in Stopwatch? +- fixed SF# 1951443: NetworkInterface::list BSD/QNX no netmask and broadcast addr +- fixed SF# 1935310: Unhandled characters in Windows1252Encoding +- fixed SF# 1948361: a little bug for win32 +- fixed SF# 1896482: tryReadLock intermittent error +- workaround for SF# 1959059: Poco::SignalHandler deadlock + the SignalHandler can now be disabled globally by adding a + #define POCO_NO_SIGNAL_HANDLER to Poco/Config.h +- fixed SF# 2012050: Configuration key created on read access +- fixed SF# 1895483: PCRE - possible buffer overflow +- fixed SF# 2062835: Logfile _creationDate is wrong +- fixed SF# 2118943: out_of_bound access in Poco::Data::BLOB:rawContent +- fixed SF# 2121732: Prevent InvalidArgumentException in SocketReactor +- fixed SF# 1891132: Poco::Data::StatementImpl::executeWithLimit is not correct +- fixed SF# 1951604: POCO refuses to compile with g++ 4.3.0 +- fixed SF# 1954327: CYGWIN's pthread does not define PTHREAD_STACK_MIN +- fixed SF# 2124636: Discrepancy between FileWIN32(U)::handleLastError +- fixed SF# 1558300: MinGW/MSYS Builds +- fixed SF# 2123266: Memory leak under QNX6 with dinkum library +- fixed SF# 2140411: ScopedUnlock documentation bug +- fixed SF# 2036460: UUID regression tests are failing on Linux with g++ 4.3.1 +- fixed SF# 2150438: Tuple TypeHandler position increment size is wrong + + +Release 1.3.2 (2008-02-04) +========================== + +Foundation, XML, Net, Util: +- added POCO_NO_SHAREDMEMORY to Config.h +- POCO_NO_WSTRING now really disables all wide string related calls +- added template specialization for string hashfunction (performance) +- XML parser performance improvements (SAX parser is now up to 40 % faster +- added parseMemoryNP() to XMLReader and friends +- URIStreamOpener improvement: redirect logic is now in URIStreamOpener. + this enables support for redirects from http to https. +- added support for temporary redirects and useproxy return code +- added getBlocking() to Socket +- added File::isHidden() +- better WIN64 support (AMD64 and IA64 platforms are recognized) +- added support for timed lock operations to [Fast]Mutex +- SharedLibrary: dlopen() is called with RTLD_GLOBAL instead of RTLD_LOCAL + (see http://gcc.gnu.org/faq.html#dso) +- Poco::Timer threads can now run with a specified priority +- added testcase for SF# 1774351 +- fixed SF# 1784772: Message::swap omits _tid mem +- fixed SF# 1790894: IPAddress(addr,family) doesn't fail on invalid address +- fixed SF# 1804395: Constructor argument name wrong +- fixed SF# 1806807: XMLWriter::characters should ignore empty strings +- fixed SF# 1806994: property application.runAsService set too late +- fixed SF# 1828908: HTMLForm does not encode '+' +- fixed SF# 1831871: Windows configuration file line endings not correct. +- fixed SF# 1845545: TCP server hangs on shutdown +- fixed SF# 1846734: Option::validator() does not behave according to doc +- fixed SF# 1856567: Assertion in DateTimeParser::tryParse() +- fixed SF# 1864832: HTTP server sendFile() uses incorrect date +- HTTPServerResponseImpl now always sets the Date header automatically + in the constructor. +- fixed SF# 1787667: DateTimeFormatter and time related classes + (also SF# 1800031: The wrong behavior of time related classes) +- fixed SF# 1829700: TaskManager::_taskList contains tasks that never started +- fixed SF# 1834127: Anonymous enums in Tuple.h result in invalid C++ +- fixed SF# 1834130: RunnableAdapter::operator= not returning a value +- fixed SF# 1873924: Add exception code to NetException +- fixed SF# 1873929: SMTPClientSession support for name in sender field +- logging performance improvements (PatternFormatter) +- fixed SF# 1883871: TypeList operator < fails for tuples with duplicate values +- CYGWIN build works again (most things work but Foundation testsuite still fails) +- new build configuration for Digi Embedded Linux (ARM9, uclibc) +- new build configuration for PowerPC Linux + +Data: +- fixed SF# 1724388: ODBC Diagnostics +- fixed SF# 1804797: ODBC Statement multiple execution fails +- fixed SF# 1803435: SessionPool onJanitorTimer called too often? +- fixed SF# 1851997: Undefined Behavior in ODBC::Preparation +- updated SQlite to 3.5.5 + + +Release 1.3.1 (2007-08-08) +========================== + +Foundation, XML, Net, Util: +- DynamicAny fixes for char conversions +- fixed SF# 1733362: Strange timeout handling in SocketImpl::poll and Socket::select +- fixed SF patch# 1728912: crash in POCO on Solaris +- fixed SF# 1732138: Bug in WinRegistryConfiguration::getString +- fixed SF# 1730790: Reference counting breaks NetworkInterface::list() +- fixed SF# 1720733: Poco::SignalHandler bug +- fixed SF# 1718724: Poco::StreamCopier::copyStream loops forever +- fixed SF# 1718437: HashMap bug +- changed LinearHashTable iterator implementation. less templates -> good thing. +- fixed SF# 1733964: DynamicAny compile error +- UUIDGenerator: fixed infinite loop with non ethernet interfaces +- updated expat to 2.0.1 +- fixed SF# 1730566: HTTP server throws exception +- Glob supports symbolic links (additional flag to control behavior) +- fixed a problem with non blocking connect in NetSSL_OpenSSL + (see http://www.appinf.com/poco/wiki/tiki-view_forum_thread.php?comments_parentId=441&topics_threshold=0&topics_offset=29&topics_sort_mode=commentDate_desc&topics_find=&forumId=6) +- fixed a problem with SSL renegotiation in NetSSL_OpenSSL (thanks to Sanjay Chouksey for the fix) +- fixed SF# 1714753: NetSSL_OpenSSL: HTTPS connections fail with wildcard certs +- HTTPClientSession: set Host header only if it's not already set (proposed by EHL) +- NetworkInterface (Windows): Loopback interface now has correct netmask; + interfaces that do not have an IP address assigned are no longer reported. +- Fixes for VC++ W4 warnings from EHL +- SharedMemory: first constructor has an additional "server" parameter + Setting to true does not unlink the shared memory region when the SharedMemory object is destroyed. (Alessandro Oliveira Ungaro) +- fixed SF# 1768231: MemoryPool constructor + +Data: +- fixed SF# 1739989: Data::RecordSet::operator = () (in 1.3 branch) +- fixed SF# 1747525: SQLite, Transactions and Session Pooling (in 1.3 branch) +- upgraded to SQLite 3.4.1 + + +Release 1.3.0 (2007-05-07) +========================== + +- added HashMap, HashSet classes +- the HashFunction class template has been changed in an incompatible + way. The member function formerly named hash() is now the function + call operator. If you have defined your own HashFunction classes, + you have to update your code. Sorry for the inconvenience. +- added Poco::Tuple +- added AbstractCache::getAllKeys(), improved performance of the get operation +- fixed AbstractCache::size() to do cache replacement before returning the size +- added additional match() method to RegularExpression and documented the fact that the simple + match() method internally sets RE_ANCHORED and RE_NOTEMPTY. +- added ExpirationDecorator template. Decorates data types so that they can be used with UniqueExpireCaches +- added operator ! to AutoPtr and SharedPtr +- Buffer uses std::size_t instead of int +- Exception::what() now returns exception name instead of message +- added poco_ndc_dbg() macro (same as poco_ndc(), but only enabled in debug builds) +- added Environment::get(name, defaultValue); +- Foundation.h now includes Config.h at the very beginning. +- added replace() and replaceInPlace() to Poco/String.h +- added AutoPtr::assign() and SharedPtr::assign() +- added operator () to AbstractEvent +- gcc Makefiles now strip release builds +- Void now has a == and != operator +- Base64Encoder and HexBinaryEncoder now support an unlimited line length + (no newlines written), by specifying a line length of 0 +- NumberParser now has stricter syntax requirements: garbage following a number leads to a SyntaxException + (Thanks to phireis@gmail.com for the suggestion) +- fixed SF# 1676830: Don't use -rpath in libraries +- fixed SF# 1670279: AbstractConfiguration::unckeckedExpand crash +- fixed a warning in Hashtable +- HTTPClientSession now uses a keepAliveTimeout for better persistent connection handling +- added DateTime::makeUTC() and DateTime::makeLocal() +- added another constructor to LocalDateTime +- POCO_WIN32_UTF8 is ignored on non-Windows platforms +- fixed a timeout bug (with NetSSL) in HTTPSession +- AsyncChannel is automatically opened with first log() +- minor fix to NotificationQueue sample (reported by Laszlo Keresztfalvi) +- added File::canExecute() and File::setExecutable() +- added SharedMemory class to Foundation +- added FileStream, FileInputStream, FileOutputStream to Foundation +- added NodeAppender class to XML for faster DOM tree creation +- HTTPServerRequest and HTTPServerResponse are now abstract base classes, + actual functionality has moved into HTTPServerRequestImpl and + HTTPServerResponseImpl. This allows us to plug other HTTP servers + into POCO. +- added DynamicAny class to Foundation +- replaced std::fstream with Poco::FileStream across POCO. +- added Poco::Checksum class to Foundation. +- fixed SF# 1700811: conflict in threadpool +- bugfix: File::moveTo() does not work if the target is a directory +- File::copyTo() and File::moveTo() now copy/move directories recursively +- refactored NetworkInterface (now using pimpl idiom); + added broadcast address and netmask support +- fixed SF# 1688982: POP3ClientSession fails when retrieving mails with attachment +- fixed SF# 1655104: Enhance Poco::TextEncoding functionality +- added Poco::Condition class, implementing a POSIX-style condition variable +- fixed a bug in File::create() for Windows +- added poco_static_assert (imported from boost) +- added Thread::join(timeout) and Thread::tryJoin() +- ClassLoader support for named manifests (see ClassLibrary.h - POCO_EXPORT_NAMED_MANIFEST) +- POCO_WIN32_UTF8: UNICODE #define is no longer required (and no longer + automatically defined in POCO_WIN32_UTF8 is defined) +- PCRE: upgraded to PCRE version 7.1 +- fixed SF# 1682162: Suggestion on thread priority +- fixed SF# 1613460: MSVC/STLPort warnings +- fixed SF# 1709358: Format double percent std::String bug +- added WindowsConsoleChannel class to Foundation +- added AutoPtr::unsafeCast<>() and SharedPtr::unsafeCast<>() +- fixed SF# 1708552: Failed to build on arm and powerpc +- fixed SF$ 1708529: Failed to build using GCC 4.3: missing #includes +- fixed SF# 1710053: LogStream proposal +- fixed a bug involving empty root directories in Windows DirectoryIterator implementation + (see http://www.appinf.com/poco/wiki/tiki-view_forum_thread.php?comments_parentId=343&forumId=6) +- robustness improvements to ActiveMethod - removed the opportunity for memory leaks in + case something goes while invoking the method +- made C library usage more C++-like - use C++ headers (e.g. ) instead of + C ones (). Also, use C library functions in std namespace. +- added Unicode and UTF8String for improved Unicode support. + The Unicode class can be used to obtain the Unicode properties of a character. + The UTF8 class provides case insensitive comparison and case conversion + for UTF-8 encoded strings. +- added UnWindows.h header file, replaced all #include with #include "Poco/UnWindows.h". + See the Poco/UnWindows.h header file for a rationale and explanations. +- fixed SF# 1713820: StreamSocketImpl::sendBytes sends too many bytes +- File::copyTo(): on Windows, the copy now always has the read-only flag reset, to be consistent + with other platforms. +- With Microsoft Visual C++, the necessary POCO libraries are now implicitly linked when + the corresponding header files are included (#pragma comment(lib, "PocoXYZ.lib") is used). + To disable this, compile POCO with the preprocessor symbol POCO_NO_AUTOMATIC_LIBS #define'd + (see Poco/Foundation.h and Poco/Config.h). +- The Visual Studio project files for the POCO libraries now include configurations + for building static libraries. + + +Release 1.2.9 (2007-02-26) +========================== + +- fixed a formatting problem in Util::HelpFormatter +- HTTPClientSession::sendRequest() now attempts to send the complete request in one network packet. +- improved network performance of ChunkedOutputStream: chunk size and chunk data + are sent in one network packet if possible +- fixed SF# 1655035: Wrong expires field calculation in HTTPCookie + (thanks to Sergey N. Yatskevich for this and other fixes) +- fixed SF# 1655049: Fix discrepancy of a code to the description +- fixed SF# 1655170: Poco::Timezone::standardName() problem on WIN32 +- fixed SF# 1629095: POCO_WIN32_UTF8 problem + There is a new function Path::transcode() that can be used to convert a path (or any other string) + from UTF-8 to the current Windows code page. This string can the be passed as a filename + to an fstream or fopen(). This function only does the conversion on Windows, + and only, if POCO_WIN32_UTF8 is defined. Otherwise, it simply returns the unmodified argument. +- fixed SF# 1659607: Probably a bug in Poco::Net::DialogSocket +- HTTPServer network performance improvement: responses that fit into a single network packet + sent with HTTPServerResponse::sendFile() or the new HTTPServerResponse::sendBuffer() are + sent in only one packet. +- added HTTPServerResponse::sendBuffer() +- HTTPServer now sends a Bad Request response if it fails to parse the HTTP request header. +- HTTPServer now sends an Internal Server Error response if the request handler throws an + exception prior to sending a response.- enabled TCP_NODELAY per default on TCPServer/HTTPServer +- fixed a bug in HTTP persistent connection handling + (server does not send Connection: close when it reaches connection maximum) +- HTMLForm - POST submission of URL encoded form no longer uses chunked transfer encoding + (thus improving interoperability with certain web servers) +- integrated Environment.cpp from Main (missing get(var, default)) +- added missing AutoPtr include to Util/Application + (and using Poco::AutoPtr is no longer necessary for POCO_APP_MAIN macro) +- fixed SF# 1635420: Per Regents of the University of Calfornia letter, + remove advertising from BSD licensed parts +- fixed SF# 1633133: MultipartWriter writes superluous CR-LF at beginning + + +Release 1.2.8 (2007-01-04) +========================== + +- fixed SF# 1613906: Util/Application.h and GCC 3.3 +- fixed a byte order issue (failed test) in IPv6 address formatting +- fixed SF# 1626640: Poco::Net::SocketReactor bug +- fixed client side chunked transfer encoding handling +- fixed client side persistent connection handling +- fixed SF# 1623536: HTTP Server Chunked Transfer Encoding Bug +- improved HTTP server exception text +- fixed SF# 1616294: KeepAlive HTTPServerSession patch +- fixed SF# 1616296: Trivial Poco::TaskCustomNotification patch +- fixed SF# 1619282: PurgeStrategy bug fix +- fixed SF# 1620855: Format problem + there is a new format specifier %z for std::size_t, as well as a new + flag ? for %d, %i, %o, %x meaning any signed or unsigned integer + + +Release 1.2.7 (2006-12-07) +========================== + +- Poco::File: fixed root directory handling +- fixed UUIDGenerator documentation +- clarified Application::setUnixOptions() documentation +- fixes for issue [SOAPLite Transport 0000023]: SOAP Transport Listener should be able to use existing HTTPServer instance +- fixing mantis issues 13, 14, 15, 16, 17, 18, 19, 21 +- fixed SF# 1597022: Signed/unsigned warning in StringTokenizer::operator[] +- fixed SF# 1598601: Message::op= leaks +- fixed SF# 1605960: PatternFormatter crashes on custom property +- fixed SF# 1605950: Memory leak in Logger sample code +- fixed SF# 1591635: Copy Paste Error in sample code +- fixed SF# 1591512: SMTPClientSession response stream +- fixed SF #1592776: LayeredConfiguration: getRaw should enumerate in reverse order +- SF Patch # 1599848 ] VS 2005 Util build fails +- Logger::dump() now uses std::size_t instead of int for buffer size +- LayeredConfiguration now supports a priority value for each configuration. + Also, it's possible to specify for each configuration added whether it + should be writeable. +- ServerApplication: cd to root directory only if running as a daemon +- added Message::swap() +- improvements to build system: + global Makefile has correct dependencies for samples + on Windows, samples build after libraries are ready + configure supports --no-wstring and --no-fpenvironment flags + build system supports POCO_FLAGS environment variable for compiler flags +- RemoteGen: fixed error handling for write protected files (SystemException) + fixing integral constant overflow messages with large cache expiration, m_ support for type serializers, + case-insensitive comparison added + + +Release 1.2.6 (2006-11-19) +========================== + +- added additional match() method to RegularExpression and documented the fact that the simple + match() method internally sets RE_ANCHORED and RE_NOTEMPTY. +- added ExpirationDecorator template. Decorates data types so that they can be used with UniqueExpireCaches +- added operator ! to AutoPtr and SharedPtr +- Buffer uses std::size_t instead of int +- added poco_ndc_dbg() macro (same as poco_ndc(), but only enabled in debug builds) +- Foundation.h now includes Config.h at the very beginning. +- added AutoPtr::assign() and SharedPtr::assign() +- added operator () to AbstractEvent +- gcc Makefiles now strip release builds +- documentation improvements + + +Release 1.2.5 (2006-10-23) +========================== + +- Improved LoggingConfigurator: channel creation and configuration is now a two-step process. + This means that the previous problems with PropertyFileConfiguration and IniFileConfiguration when referencing other channels are solved. +- improved options handling: better handling of (non) ambiguities. + If both an option named "help" and one named "helper" is specified, this no longer causes ambiguity errors. +- added check for duplicate option definition +- ThreadPool bugfix: fixed a crash that occurs on Linux multiprocessor machines + (caused by an thread unsafe string assignment corrupting the heap...) + (SF# 1575315) +- improved ThreadPool performance +- XML now compiles with -DXML_UNICODE_WCHAR_T (SF# 1575174) +- fixed SF# 1572757: HTML forms can have more than one key/value pair with the same name +- got rid of the dynamic casts in Events, Events/Cache: simpler/faster Delegate < operator, + prevents some rare dynamic casts error from occuring when using StrategyCollection with Caches +- improvements to Logger and LoggingConfigurator: + * added Logger::unsafeGet() + * added Logger::setProperty(loggerName, propertyName, value) + * LoggingConfigurator now correctly (re)configures existing Loggers + (prior to this change, if a Logger named "a.b.c" existed before + the LoggingConfigurator started its work, and the LoggingConfigurator + configured a Logger named "a.b", then "a.b.c" would not inherit + the new configuration). +- improvements to SplitterChannel and EventLogChannel configuration +- improved LoggingRegistry exception messages +- MessageHeader::read() is more liberal with malformed message headers. + This fixes problems with certain network cameras sending malformed HTTP headers. + + +Release 1.2.4 (2006-10-02) +========================== + +- some code beautifying and improvements to comments +- DOMParser now automatically sets FEATURE_NAMESPACE_PREFIXES +- fixed SF #1567051: DOMBuilder/DOMParser/NamespaceStrategy bug +- fixed SF #1567364: POCO_APP_MAIN +- added Document::getElementById() (two-argument) and getElementByIdNS() +- added another test for DOMParser +- added AutoPtr::isNull() (to be consistent with SharedPtr) +- this release again compiles on PA-RISC HP-UX systems with aCC +- added CMAKE support files contributed by Andrew J. P. Maclean + + +Release 1.2.3 (2006-09-14) +========================== + +- configure script now checks if (auto)selected configuration is supported +- fixed SF #1552904: NamedEvent bug? +- fixed SF #1552787: POCO not handling EINTR +- fixed SF #1552846: Random::~Random uses scalar delete +- fixed SF #1552987: TLSSlot should explicitly default-construct _value +- IPAddress no longer accepts an empty address string +- split up Observer.h into AbstractObserver.h and Observer.h +- added NObserver class template which supports an AutoPtr + argument for the notification callback +- changed EchoServer sample to use NObserver +- some Windows-specific files were missing in the tarballs + + +Release 1.2.2 (2006-09-01) +========================== + +- fixed SF # 1549973: NotificationCenter::hasObservers() returns wrong result +- fixed a memory leak in EchoServer sample +- fixed SocketReactor TimeoutNotification bug (SF #1549365, SocketNotifier::addObserver() incorrect behavior) +- fixed SF# 1549513: MultipartReader does not work with Unix-style linefeeds +- MailMessage and HTMLForm: processing of multipart messages will no longer fail if a PartHandler does not read all data from the part stream. +- added additional test case (Unix-style line ends) to MultipartReaderTest + + +Release 1.2.1 (2006-08-29) +========================== + +- fixed Config.h header (no more #undefs) + +Release 1.2.0 (2006-08-29) +========================== + +- DateTime fixes: Julian Day is no longer stored internally. + Times (hours, minutes, seconds, ...) are now always taken from an utcValue (if available) and not from the Julian day. + The Julian day is only used for calculating year, month and day (except when the Julian day is the only thing we have) + This helps us get rid of rounding errors that the Julian Day arithmetic introduced.- on Windows, UUIDGenerator no longer uses Netbios, but GetAdaptersInfo instead +- The main Makefile now has correct dependencies +- updated poco-doc.pl with latest version by Caleb Epstein +- fixed SF #1542722: InflatingInputStream: buffer error +- improved Windows UTF-8 support +- added Logger::names() +- added configure script and make install target +- XMLWriter bugfix: pretty-print bug with characters() and rawCharacters() +- improvements to build system: support builds outside of source tree +- added header doc conversion tool contributed by Caleb Epstein +- fixed SF #1542618 (build/config/Linux patch) +- bugfix: BinaryReader/BinaryWriter BOM is now 16 bits, as documented +- fixed SF #1542247 (Compiler warning from OptionCallback) +- fixed SF #1542253 (ServerApplication::handleOption doesn't call Application::handleOption) +- added Application::stopOptionsProcessing() +- updated samples +- Util::Application command line handling now supports: + * argument validation (Option::validator(); see Validator, IntValidator, RegExpValidator) + * binding of argument values to config properties (Option::binding()) + * callbacks for arguments (Option::callback()) + * checking of required parameters +- changed header file locations: + Foundation headers are now in Poco (#include "Poco/Foundation.h") + XML headers are now in Poco/XML, Poco/SAX and Poco/DOM (#include "Poco/XML/XML.h") + Util headers are now in Poco/Util (#include "Poco/Util/Util.h") + etc. + Unfortunately, this change will break existing code. However, fixing the code is + a matter of a few global search/replace operations and can be done quickly. + On the plus side, POCO is now a much better citizen when used with other + libraries. +- changed namespaces: + Foundation is now Poco + XML is now Poco::XML + Util is now Poco::Util + Net is now Poco::Net +- removed namespace macros +- fixed some warnings reported by gcc -Wall -Wextra +- fixed AutoPtr and LayeredConfiguration documentation +- improved StreamSocket::receiveBytes() doc +- added Pipe and PipeStream classes +- added support for I/O redirection (pipes) to Process::launch() +- added LogStream class (ostream interface to Logger) +- improved Makefiles (no more double-building if clean all is specified) +- added CppUnit and DateTime testsuite contributions by Andrew Marlow +- improved Cygwin and minimal MinGW support +- FileChannel: gzip compression if archived files now runs in a background thread (SF #1537481) +- POCO now compiles with large (64-bit) file support on Linux (SF #1536634) +- added format() function, which provides typesafe sprintf-like functionality (SF #1327621) +- added File::isLink() +- bugfix: dangling symbolic links in a directory no longer cause recursive remove to fail with file not found error +- added Void class (useful as argument to ActiveMethod) +- ActiveResult now supports exceptions +- bugfix: Timezone::utcOffset() and Timezone::dst() returned wrong values on Unix platforms (SF #1535428) +- added ActiveDispatcher class +- added ActiveStarter class, which is a policy used by ActiveMethod for starting methods +- ActiveRunnable moved to its own header file +- ThreadPool: added startWithPriority(), which allows for running threads with a different priority +- added error handling to dir sample +- added additional test case to HTTPServer test suite- HTMLForm: should now work with request methods other than POST and GET (all non-POST requests are treated the same as GET) +- clarified HTMLForm documentation +- HTMLForm bugfix: uploaded files no longer end up in value; PartHandler is called instead +- NameValueCollection: added get(name, defaultValue) +- added HTTPFormServer sample +- added Foundation::HashTable and SimpleHashTable +- added Net::HTTPSessionFactory +- improvements to AutoPtr and SharedPtr +- improvements to namespaces handling in XMLWriter +- Foundation Cache: fixed add implementation to match the docu: a 2nd add will now simply overwrite existing entries +- added DateTime::isValid() +- added Exception::rethrow() (virtual, must be overridden by all subclasses) +- Timer can now use a user-supplied ThreadPool +- added rethrow() to exception classes +- Net: made some constructors explicit +- Net: added SocketAddress constructor to HTTPClientSession +- Net: added HTTPSession::networkException() to check for exceptions swallowed by stream classes +- Net: added single string argument constructor to SocketAddress. +- Net: improved HTTPClientSession error handling (no more "Invalid HTTP version string" exceptions when the server prematurely closes the connection due to too much load) +- Net: improved HTTPSession error handling. Exceptions while sending and receiving data are stored for later retrieval and no longer get lost since streambufs swallow them. +- Net: added HTTPLoadTest sample +- fixed a bug when opening logfiles on Unix platforms causing an existing logfile to be truncated +- bugfix: log file purge intervals given in months did not work, due to a stupid typo +- added RawSocket and ICMP classes +- UUID: fixed a doc formatting bug +- NetworkInterface::list() now includes loopback interface on Windows (SF #1460309) +- made Exception::message() and Exception::nested() inline +- added Net::UnsupportedRedirectException +- HTTPStreamFactory throws an UnsupportedRedirectException if it encounters a redirect to https +- HTTP: fixed bad 100 Continue handling in client and server code +- added CONTRIBUTORS file + + +Release 1.1.2 (2006-07-07) +========================== + +- Changed license to Boost license +- DBlite and NetSSL have been removed from the Boost-licensed release. + Please contact Applied Informatics (info@appinf.com) if you're interested in them. + + +Release 1.1.1 (2006-04-03) +========================== + +- NetSSL_OpenSSL now supports separate certificate verification + settings for client and server. +- fixed SF #1460309 (enumerating network interfaces failed on 64bit Linux) +- TCPServer no longer crashes if accept() fails + + +Release 1.1.0 (2006-03-23) +========================== + +- events no longer require awkward += new syntax +- source code and documentation cleanups +- basic support for new compilers and platforms + + +Release 1.1b2 (2006-03-04) +========================== + +- made NetSSL threadsafe (added locking callbacks for OpenSSL) +- improved OpenSSL initialization (random generator seeding) +- various changes to improve compatibility with various platforms + + +Release 1.1b1 (2006-03-03) +========================== + +- New Events package in Foundation. The package supports C#-style event handling +- New Cache package in Foundation: a templates-based caching framework +- added Any class to Foundation +- added DBLite library +- fixed a memory leak with layered configurations in the application +- made POCO_DLL the default (unless POCO_STATIC is #defined) + It is no longer necessary to specify POCO_DLL in projects that use Poco + (SourceForge Patch #1408231 and Feature Request #1407575). +- added Buffer template class to Foundation +- added the UnicodeConverter utility class. This is mainly used for Windows Unicode support and probably of little use for anything else. +- added Path::resolve() +- added Windows Unicode support. This calls the Unicode variant of the Windows API functions. + For this to work, all strings must be UTF-8 encoded and POCO_WIN32_UTF8 must be defined in all compilation units. +- added StreamCopier::copyToString() +- added URIStreamOpener::unregisterStreamFactory() and new variants of URIStreamOpener::open() that also work with filesystem paths. + This fixes SourceForge Bug #1409064 and Feature Request #1409062. +- added NodeIterator::currentNodeNP() to XML library +- added some sanity checks to UTF8Encoding::convert() +- added NetSSL - SSL support for Net library, based on OpenSSL +- console output of processes launched with Process::launch() is now visible + + +Release 1.0.0 (2006-01-19) +========================== + +- removed unnecessary console output from ProcessTest +- documentation fixes + + +Release 1.0b2 (2006-01-16) +========================== + +- added ProcessHandle class +- Process::launch() now returns a ProcessHandle instead of a process ID. + This fixes a potential problem on Windows with Process::wait() when + the process terminates before wait() is called. +- added SplitterChannel::close() +- added Logger::destroy() +- added POP3ClientSession::deleteMessage() +- added test for Process::launch() +- documentation fixes + + +Release 1.0b1 (2006-01-09) +========================== + +- improved recognition of Windows paths in Path::parseGuess() +- added setCurrentLineNumber()/getCurrentLineNumber() to CountingStreamBuf +- improvememts to StreamTokenizer and Token; fixed documentation +- added a workaround for some strange istream behaviour with VS 2005 and FTPClientSessionTest +- improved exception/error reporting in cppunit +- added POP3ClientSession +- added Process::launch() and Process::wait() +- added Mail sample +- added MailStream and SMTPClientSession classes +- renamed some methods in DialogSocket to make them more general +- NullPartHandler has moved out of HTMLForm.cpp into a separate file +- Base64Encoder now always writes \r\n line ends +- MessageHeader::quote has an optional addition arg controlling the treatment of whitespace +- bugfix: MultipartReader had a problem with empty lines (\r\n sequences) in a part +- added MailMessage and MailRecipient classes +- added text encoding support for Windows-1252 codepage + + +Release 1.0a1 (2006-01-03) [internal] +===================================== + +- mediaType is used consistently to refer to a MIME media type (some occurences of contentType and mimeType have been replaced) +- moved MediaType::quote() to MessageHeader and made it public +- added MultipartWriter::stream() +- Renamed AttachmentSource to PartSource and AttachmentHandler to PartHandler +- SIGPIPE is always blocked in main thread on Unix systems +- added EchoServer sample +- fixed a bug in SocketImpl::setBlocking() - did exactly the opposite (value to ioctl was wrong) +- fixed a memory leak in NotificationQueue sample +- added comparison operators to Socket so that Sockets can be used as keys in maps +- added Socket::setBlocking() +- added StreamSocket::connectNB() (non-blocking connect) +- added Observer::accepts() +- added SocketReactor, SocketConnector and SocketAcceptor classes to support event-based socket programming +- NamespacePrefixesStrategy now uses expat's XML_SetReturnNSTriplet(). + The previously used separate namespace handling code has been removed. + This improves performance if NamespacePrefixesStrategy is used (both the n + amespaces and namespace-prefixes SAX2 features are used) +- upgraded expat to 2.0 pre-release (2005-12-27) snapshot +- added TeeInputStream and TeeOutputStream classes +- added download sample for URIStreamOpener +- renamed registerOpener() to registerFactory() in HTTPStreamFactory and FTPStreamFactory +- added LineEndingConverter streams +- added FTPClientSession +- code and documentation clean-up +- added DialogSocket class +- reorganized HTTP test suites +- added FTPClientSession and FTPStreamFactory +- added DialogSocket class + + +Release 0.96.1 (2005-12-28) +=========================== + +- fixed a memory leak caused by a bug in Microsoft's stream implementation (see the comment in Foundation/StreamUtil.h for an explanation) +- added samples for Net library +- added uptime() and startTime() to Util::Application +- added DateTimeFormatter::format() for Timespan +- added ErrorHandler class and better exception handling for threads +- added poco_debugger() and poco_debugger_msg() macros +- added project and solution files for Visual Studio 2005 (due to some bugs/leaks in Microsofts standard library - see + http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=e08bd793-3fef-40ff-adda-ed313e0eafcc + we do not recommend using this for production purposes) +- fixed two problems with out-of-range string iterator in Path (the testsuite triggered an assertion in VC++ 8.0) +- fixed mac line endings in a few files +- added a workaround to the class loader that fixes strange behavior with VC++ 8.0. There seems to be a problem with typeid() not returning a valid typeinfo under certain circumstances. +- added buffer allocator argument to buffered stream buffer templates +- added buffer pools to HTTP to reduce memory fragmentation and to improve performance +- added Net to Windows build.cmd script +- added swap() to various classes that already support assignment +- added a null pointer check in DOMWriter::writeNode() +- fixed documentation in BinaryWriter.h and BinaryReader.h +- added explicit support for network byte order to BinaryReader and BinaryWriter +- added basic support for FreeBSD (needs more testing) +- BinaryReader: renamed readRawData() to readRaw() to be consistent with BinaryWriter::writeRaw() +- added support for uppercase output to HexBinaryEncoder. +- added MediaType class +- added QuotedPrintableEncoder and QuotedPrintableDecoder classes +- renamed ObjectFactory to Instantiator. This should prevent the confusion caused by DynamicFactory and ObjectFactory. Sorry for the inconvenience if you are already using this. +- AttachmentSource::filename() now returns const string& +- added StringAttachmentSource +- replaced old-style C casts with C++ casts in NetworkInterface.cpp +- MutexImpl (WIN32): replaced InitializeCriticalSection with InitializeCriticalSectionAndSpinCount, which should increase performance on multiprocessor or multicore systems when many locks are used. +- fixed a problem with STLport 5.0 when compiling StreamTokenizer +- HTTPStreamOpener now also works with no-path URIs (like http://www.appinf.com) +- fixed wrong delete usage (plain delete instead of delete [] was used in a few cases) +- fixed a handle leak in WinTestRunner + + +Release 0.95.4 (2005-11-07) +=========================== + +- fixed #1348006 and #1348005 + + +Release 0.95.3 (2005-10-28) [internal] +====================================== + +- updated build scripts (patch #1339015) +- added support for AMD64 platforms (patch #1339015) +- MultipartWriter creates its own boundary if an empty string is passed in as boundary +- made MultipartWriter::createBoundary() public +- fixed wrong documentation for DateTimeFormat::HTTP_FORMAT +- added support for HTTP Basic authentication +- added support for HTTP Cookies +- added support for HTML forms + + +Release 0.95.2 (2005-10-22) [internal] +====================================== + +- fixed a potential problems with streams when close in destructor fails (added try..catch block around close in destructors) +- added HTTPServer & friends +- added hasIdleThreads() method to NotificationQueue +- added TCPServer and friend +- added support for HTTP proxies to HTTPClientSession and HTTPStreamOpener +- fixed documentation bugs (Mutex.h, ClassLoader.h) + + +Relesae 0.95.1 (2005-10-15) [internal] +====================================== + +- Tasks can now throw custom notifications (contributed by Alex Fabijanic) +- renamed URIFileStreamFactory to FileStreamFactory +- added a few methods to URI (setPathEtc(), getPathEtc(), getPathAndQuery()) +- added new exception classes +- fixed some documentation +- added basic checks when reading a MessageHeader from a stream +- added HTTP classes (testsuite still incomplete) +- added MessageHeader, NameValueCollection, MultipartReader and MultipartWriter classes +- added Timespan::useconds() +- added ClassLoader::isLibraryLoaded() +- Socket classes use Timespan::useconds() to fill struct timeval +- added DatagramSocket, MulticastSocket and NetworkInterface classes +- added socket classes and related basic stuff +- added additonal constructor/assign to Timespan- added BasicBufferedBidirectionalStreamBuf +- fixed a potential MT issue in Base64Decoder +- code beautifying in [Un]BufferedStreamBuf +- more improvements to ClassLoader +- code cleanup and naming convention fixes (changed all *Imp classes to *Impl for consistency) + + +Release 0.94.1 (2005-09-30) [internal] +====================================== + +- added MetaSingleton (based on a contribution by Alex Fabijanic) +- added ClassLoader::create() +- added ClassLoader::instance() +- code clean-ups in FileChannel and related classes +- added SimpleFileChannel +- RotateAtTimeStrategy: + ::getNextRollover() rewritten (buggy) +- DateTime + microseconds assert corrected + asserts in computeGregorian() (except for year - see comment in computeGregorian()) + milliseconds calculation modified in computeGregorian() + microseconds assigned in computeGregorian() + normalize() and checkLimit() private functions to correct cases of overflow for milli/microseconds +- LocalDateTime: added timestamp() method +- FileChannel: + added "times" property (used to determine whether to use UTC or local time with RotateAtTimeStrategy) + ::setProperty() modified (whenever "times" property is set, methods setRotation and setArchive are + reinvoked to reflect the change) +- FileChannel: added support for archived file compression and archived file purging +- FileChannel tests modified +- FileChannel: put LogFile, RotateStrategy and ArchiveStrategy into their own files +- Message: added thread id field +- PatternFormatter: added %I specifier for thread id +- ThreadPool: PooledThread can be assigned a name +- TaskManager: task name is reflected in thread name +- fixed LocalDateTime::operator - (const Timespan&) [#0000004] +- upon startup all loggers' channels are set to a console channel +- improved search for application configuration files (see loadConfiguration()). +- added Glob class (fixes #1249700) +- upgraded to zlib 1.2.3 (fixes #1261712) +- added Logger::dump() +- fixed a wrong condition in Logger::log(const Message&) +- Path::find() now also works with relative paths in addition to plain file names +- added Path(const Path&, const Path&) constructor +- added SharedPtr template +- added Path::tryParse() +- SAXParser::parse()/EntityResolverImpl now works for both URIs and local filesystem paths (fixes #1254812) + + +Release 0.93.1 (2005-08-01) +=========================== + +This release contains various new features, improvements and bugfixes: +- bugfix: UUIDGenerator throws an exception if no connected ethernet adapter can + be found (and thus no MAC address can be obtained) +- added UUIDGenerator::createOne() method +- added error handling to UUID sample application +- added relational (==, !=, <, <=, >, >=) and arithmetic operators (+, -, +=, -=) to DateTime +- added LocalDateTime class +- added support for LocalDateTime to DateTimeParser and DateTimeFormatter +- added enqueueUrgentNotification() to NotificationQueue +- added support for timezone specifiers (%z, %Z) to PatternFormatter +- added [] operator and count() to StringTokenizer +- added elapsed() and isElapsed() to Timestamp +- added tzd() to Timezone +- added WinRegistryKey and WinService classes (Windows only) +- added index operator and count() to StringTokenizer +- added day/time-based log rotation (thanks to Alex Fabijanic), minor improvements to DateTimeParser +- support for Mac OS X 10.4/gcc 4.0.0 +- added NamedMutex and NamedEvent +- added Process::kill() +- added NoPermissionException +- added Task and TaskManager classes +- added ServerApplication class +- bugfix: EventLogChannel - _logFile was not properly initialized in one constructor +- bugfix: File::createDirectories did not work for hierarchies deeper than three +- added Util::FilesystemConfiguration +- documented logging policy: log() must open channel if it hasn't been opened yet +- FileChannel::log() opens channel if necessary +- the application reference passed to initialize() and reinitialize() is no longer const +- improved application logging initialization +- fixed a problem with configuration view and property placeholders +- fixed Util build configuration for Visual Studio +- improved application samples +- fixed documentation for Semaphore class + + +Release 0.92.1 (2005-05-09) +=========================== + +This release introduces the Util library that provides support for +configuration file parsing (different file formats), command line +argument processing, logging configuration and a framework for +command line/server applications. +There have also been various changes to the Foundation library: +- a new RefCountedObject class that acts as a base class for + various classes that use reference counting +- some missing members have been added to the AutoPtr template +- various improvements and bugfixes to the Logging framework, as well as + new LoggingFactory and LoggingRegistry classses, and a NullChannel class +- the SignalHandler class (Unix platforms only) +- ObjectFactory and DynamicFactory template classes +- the Path::find method for searching a file in a list of directories +- various new Exception classes + + +Release 0.91.4 (2005-04-11) +=========================== + +This is mainly a maintenance release that adds support for QNX Neutrino +and OpenVMS. There are also minor bugfixes and improvements. + +The Unix build system has been modified to work on QNX Neutrino. +The OpenVMS build system has been fixed and works now. +Some missing #include's have been added for QNX Neutrino. +Foundation/String.h: icompare now supports comparison with const char*; +the classic C version of isspace() has been used in a few places instead of the +C++ version, this has been fixed. +Foundation/Exception.h: IllegalStateException added. + + +Release 0.91.3 (2005-03-19) +=========================== + +This is a maintenance release that adds support for Solaris/Sun Forte C++. +No new features have been added. + +An implementation of FPEnvironment for Solaris has been included. +All stream classes have been modified to work around an initialization +problem that surfaced with Sun's C++ compiler when using STLport. +Source-code compatibility with the previous release is not affected. Various +minor changes, mostly adding missing #include's for Solaris. + + +Release 0.91.2 (2005-02-27) +=========================== + +Minor improvements to the Unix build system. No actual changes in the +libraries. + + +Release 0.91.1 (2005-02-21) +=========================== + +This is the first public release of the C++ Portable Components. +The release does not contain all features planned for the later 1.0 release +(the NET library is missing, for example), but is already quite usable. +Please refer to the README file for more information and instructions for +building the libraries. + + +-- +$Id: //poco/1.4/dist/CHANGELOG#59 $ diff --git a/CONTRIBUTORS b/CONTRIBUTORS new file mode 100644 index 000000000..6abeaaeb2 --- /dev/null +++ b/CONTRIBUTORS @@ -0,0 +1,26 @@ +Guenter Obiltschnig +Alex Fabijanic +Peter Schojer +Ferdinand Beyer +Krzysztof Burghardt +Claus Dabringer +Caleb Epstein +Eran Hammer-Lahav +Chris Johnson +Sergey Kholodilov +Ryan Kraay +Larry Lewis +Andrew J. P. Maclean +Andrew Marlow +Paschal Mushubi +Jiang Shan +David Shawley +Sergey Skorokhodov +Tom Tan <> +Sergey N. Yatskevich +Marc Chevrier +Philippe Cuvillier +Marian Krivos + +-- +$Id: //poco/1.4/dist/CONTRIBUTORS#2 $ diff --git a/CppParser/CppParser.progen b/CppParser/CppParser.progen new file mode 100644 index 000000000..47f027b89 --- /dev/null +++ b/CppParser/CppParser.progen @@ -0,0 +1,17 @@ +vc.project.guid = C77B9D92-EC91-11DA-A4CE-005056C00008 +vc.project.name = CppParser +vc.project.target = Poco${vc.project.name} +vc.project.type = library +vc.project.pocobase = .. +vc.project.outdir = ${vc.project.pocobase} +vc.project.platforms = Win32, x64 +vc.project.configurations = debug_shared, release_shared, debug_static_mt, release_static_mt, debug_static_md, release_static_md +vc.project.prototype = CppParser_vs90.vcproj +vc.project.compiler.include = ..\\Foundation\\include +vc.project.compiler.defines = +vc.project.compiler.defines.shared = ${vc.project.name}_EXPORTS +vc.project.compiler.defines.debug_shared = ${vc.project.compiler.defines.shared} +vc.project.compiler.defines.release_shared = ${vc.project.compiler.defines.shared} +vc.project.linker.dependencies = +vc.solution.create = true +vc.solution.include = testsuite\\TestSuite diff --git a/CppParser/CppParser_vs100.sln b/CppParser/CppParser_vs100.sln new file mode 100644 index 000000000..af8c2aeeb --- /dev/null +++ b/CppParser/CppParser_vs100.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppParser", "CppParser_vs100.vcxproj", "{C77B9D92-EC91-11DA-A4CE-005056C00008}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs100.vcxproj", "{C79112BD-EC91-11DA-A4CE-005056C00008}" + ProjectSection(ProjectDependencies) = postProject + {C77B9D92-EC91-11DA-A4CE-005056C00008} = {C77B9D92-EC91-11DA-A4CE-005056C00008} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.Build.0 = release_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.Build.0 = release_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CppParser/CppParser_vs100.vcxproj b/CppParser/CppParser_vs100.vcxproj new file mode 100644 index 000000000..ecd82a306 --- /dev/null +++ b/CppParser/CppParser_vs100.vcxproj @@ -0,0 +1,308 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + CppParser + {C77B9D92-EC91-11DA-A4CE-005056C00008} + CppParser + Win32Proj + + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + ..\bin\ + obj\$(Configuration)\ + true + ..\bin\ + obj\$(Configuration)\ + false + ..\lib\ + obj\$(Configuration)\ + ..\lib\ + obj\$(Configuration)\ + ..\lib\ + obj\$(Configuration)\ + ..\lib\ + obj\$(Configuration)\ + PocoCppParserd + PocoCppParsermdd + PocoCppParsermtd + PocoCppParser + PocoCppParsermd + PocoCppParsermt + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;CppParser_EXPORTS;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + %(AdditionalDependencies) + ..\bin\PocoCppParserd.dll + true + true + ..\bin\PocoCppParserd.pdb + ..\lib;%(AdditionalLibraryDirectories) + Console + ..\lib\PocoCppParserd.lib + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;CppParser_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + %(AdditionalDependencies) + ..\bin\PocoCppParser.dll + true + false + ..\lib;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib\PocoCppParser.lib + MachineX86 + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib\PocoCppParsermtd.pdb + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + ..\lib\PocoCppParsermtd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + ..\lib\PocoCppParsermt.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib\PocoCppParsermdd.pdb + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + ..\lib\PocoCppParsermdd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + ..\lib\PocoCppParsermd.pdb + Level3 + + Default + %(DisableSpecificWarnings) + + + %(AdditionalDependencies) + ..\lib\PocoCppParsermd.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppParser/CppParser_vs100.vcxproj.filters b/CppParser/CppParser_vs100.vcxproj.filters new file mode 100644 index 000000000..953f97587 --- /dev/null +++ b/CppParser/CppParser_vs100.vcxproj.filters @@ -0,0 +1,135 @@ + + + + + {fe377055-0525-44e6-acc7-8d7b1f6c3eab} + + + {217c0ad9-ad83-4781-9937-3cd83b413b56} + + + {3952c193-998f-4899-bbd1-3fdd17661c10} + + + {b956ea7f-4ced-4a5f-9e27-ed5236d5aad4} + + + {c2c26550-40a8-4cee-9f8f-d9e18530d4ba} + + + {2422599c-57fd-475a-9fda-4a981d3645f3} + + + {aa2c1c4c-dbf1-4818-aeeb-d5d8b82d7f77} + + + {4ec2c692-a128-4bae-8906-3b341dfc867e} + + + {778a11b1-307d-4120-af80-2af792b2699a} + + + + + CppParser\Header Files + + + CppParser\Header Files + + + CppParser\Header Files + + + CppParser\Header Files + + + CppParser\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Attributes\Header Files + + + Attributes\Header Files + + + + + CppParser\Source Files + + + CppParser\Source Files + + + CppParser\Source Files + + + CppParser\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Attributes\Source Files + + + Attributes\Source Files + + + \ No newline at end of file diff --git a/CppParser/CppParser_vs71.sln b/CppParser/CppParser_vs71.sln new file mode 100644 index 000000000..9715f341d --- /dev/null +++ b/CppParser/CppParser_vs71.sln @@ -0,0 +1,50 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppParser", "CppParser_vs71.vcproj", "{C77B9D92-EC91-11DA-A4CE-005056C00008}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs71.vcproj", "{C79112BD-EC91-11DA-A4CE-005056C00008}" + ProjectSection(ProjectDependencies) = postProject + {C77B9D92-EC91-11DA-A4CE-005056C00008} = {C77B9D92-EC91-11DA-A4CE-005056C00008} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + debug_shared = debug_shared + release_shared = release_shared + debug_static_mt = debug_static_mt + release_static_mt = release_static_mt + debug_static_md = debug_static_md + release_static_md = release_static_md + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared.ActiveCfg = debug_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared.Build.0 = debug_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared.ActiveCfg = release_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared.Build.0 = release_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt.ActiveCfg = debug_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt.Build.0 = debug_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt.ActiveCfg = release_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt.Build.0 = release_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md.ActiveCfg = debug_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md.Build.0 = debug_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md.ActiveCfg = release_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md.Build.0 = release_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared.ActiveCfg = debug_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared.Build.0 = debug_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared.ActiveCfg = release_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared.Build.0 = release_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt.ActiveCfg = debug_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt.Build.0 = debug_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt.ActiveCfg = release_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt.Build.0 = release_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md.ActiveCfg = debug_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md.Build.0 = debug_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md.ActiveCfg = release_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md.Build.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/CppParser/CppParser_vs71.vcproj b/CppParser/CppParser_vs71.vcproj new file mode 100644 index 000000000..834e0acf8 --- /dev/null +++ b/CppParser/CppParser_vs71.vcproj @@ -0,0 +1,458 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppParser/CppParser_vs80.sln b/CppParser/CppParser_vs80.sln new file mode 100644 index 000000000..801539e08 --- /dev/null +++ b/CppParser/CppParser_vs80.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppParser", "CppParser_vs80.vcproj", "{C77B9D92-EC91-11DA-A4CE-005056C00008}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs80.vcproj", "{C79112BD-EC91-11DA-A4CE-005056C00008}" + ProjectSection(ProjectDependencies) = postProject + {C77B9D92-EC91-11DA-A4CE-005056C00008} = {C77B9D92-EC91-11DA-A4CE-005056C00008} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.Build.0 = release_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.Build.0 = release_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CppParser/CppParser_vs80.vcproj b/CppParser/CppParser_vs80.vcproj new file mode 100644 index 000000000..cb2369251 --- /dev/null +++ b/CppParser/CppParser_vs80.vcproj @@ -0,0 +1,479 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppParser/CppParser_vs90.sln b/CppParser/CppParser_vs90.sln new file mode 100644 index 000000000..a91919cef --- /dev/null +++ b/CppParser/CppParser_vs90.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppParser", "CppParser_vs90.vcproj", "{C77B9D92-EC91-11DA-A4CE-005056C00008}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs90.vcproj", "{C79112BD-EC91-11DA-A4CE-005056C00008}" + ProjectSection(ProjectDependencies) = postProject + {C77B9D92-EC91-11DA-A4CE-005056C00008} = {C77B9D92-EC91-11DA-A4CE-005056C00008} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.Build.0 = release_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.Build.0 = release_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CppParser/CppParser_vs90.vcproj b/CppParser/CppParser_vs90.vcproj new file mode 100644 index 000000000..1b405f97c --- /dev/null +++ b/CppParser/CppParser_vs90.vcproj @@ -0,0 +1,478 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppParser/CppParser_x64_vs100.sln b/CppParser/CppParser_x64_vs100.sln new file mode 100644 index 000000000..588744ebf --- /dev/null +++ b/CppParser/CppParser_x64_vs100.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppParser", "CppParser_x64_vs100.vcxproj", "{C77B9D92-EC91-11DA-A4CE-005056C00008}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs100.vcxproj", "{C79112BD-EC91-11DA-A4CE-005056C00008}" + ProjectSection(ProjectDependencies) = postProject + {C77B9D92-EC91-11DA-A4CE-005056C00008} = {C77B9D92-EC91-11DA-A4CE-005056C00008} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.Build.0 = debug_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|x64.ActiveCfg = release_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|x64.Build.0 = release_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|x64.Deploy.0 = release_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.Build.0 = release_static_md|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.Build.0 = debug_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|x64.ActiveCfg = release_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|x64.Build.0 = release_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|x64.Deploy.0 = release_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.Build.0 = release_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CppParser/CppParser_x64_vs100.vcxproj b/CppParser/CppParser_x64_vs100.vcxproj new file mode 100644 index 000000000..dc3e478f0 --- /dev/null +++ b/CppParser/CppParser_x64_vs100.vcxproj @@ -0,0 +1,306 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + CppParser + {C77B9D92-EC91-11DA-A4CE-005056C00008} + CppParser + Win32Proj + + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + ..\bin64\ + obj64\$(Configuration)\ + true + ..\bin64\ + obj64\$(Configuration)\ + false + ..\lib64\ + obj64\$(Configuration)\ + ..\lib64\ + obj64\$(Configuration)\ + ..\lib64\ + obj64\$(Configuration)\ + ..\lib64\ + obj64\$(Configuration)\ + PocoCppParser64d + PocoCppParsermdd + PocoCppParsermtd + PocoCppParser64 + PocoCppParsermd + PocoCppParsermt + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;CppParser_EXPORTS;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + %(AdditionalDependencies) + ..\bin64\PocoCppParser64d.dll + true + true + ..\bin64\PocoCppParser64d.pdb + ..\lib64;%(AdditionalLibraryDirectories) + Console + ..\lib64\PocoCppParserd.lib + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;CppParser_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + %(AdditionalDependencies) + ..\bin64\PocoCppParser64.dll + true + false + ..\lib64;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib64\PocoCppParser.lib + MachineX64 + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib64\PocoCppParsermtd.pdb + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + ..\lib64\PocoCppParsermtd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + ..\lib64\PocoCppParsermt.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib64\PocoCppParsermdd.pdb + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + ..\lib64\PocoCppParsermdd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + ..\lib64\PocoCppParsermd.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppParser/CppParser_x64_vs100.vcxproj.filters b/CppParser/CppParser_x64_vs100.vcxproj.filters new file mode 100644 index 000000000..ec04a8e0f --- /dev/null +++ b/CppParser/CppParser_x64_vs100.vcxproj.filters @@ -0,0 +1,135 @@ + + + + + {19215921-761d-464e-af27-28d7c93a63f2} + + + {c2372101-9da3-4395-a2f0-7468d31e32f3} + + + {63b47522-0c86-4023-a401-9cb9a667725a} + + + {036225b5-e214-42dc-bde5-8106bcdd1750} + + + {e415005a-799a-477c-b4fa-135a9aacac35} + + + {f9df1cea-79ac-415a-b540-7e6d6a8049ef} + + + {841b696e-ac52-444a-86f5-e39516c8048b} + + + {175f1410-2e70-4d6f-9ade-092ed4060be9} + + + {35e35cae-d099-414e-bb49-70b4b3cb956a} + + + + + CppParser\Header Files + + + CppParser\Header Files + + + CppParser\Header Files + + + CppParser\Header Files + + + CppParser\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Attributes\Header Files + + + Attributes\Header Files + + + + + CppParser\Source Files + + + CppParser\Source Files + + + CppParser\Source Files + + + CppParser\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Attributes\Source Files + + + Attributes\Source Files + + + \ No newline at end of file diff --git a/CppParser/CppParser_x64_vs90.sln b/CppParser/CppParser_x64_vs90.sln new file mode 100644 index 000000000..4533182db --- /dev/null +++ b/CppParser/CppParser_x64_vs90.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppParser", "CppParser_x64_vs90.vcproj", "{C77B9D92-EC91-11DA-A4CE-005056C00008}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs90.vcproj", "{C79112BD-EC91-11DA-A4CE-005056C00008}" + ProjectSection(ProjectDependencies) = postProject + {C77B9D92-EC91-11DA-A4CE-005056C00008} = {C77B9D92-EC91-11DA-A4CE-005056C00008} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.Build.0 = debug_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|x64.ActiveCfg = release_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|x64.Build.0 = release_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|x64.Deploy.0 = release_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.Build.0 = release_static_md|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.Build.0 = debug_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|x64.ActiveCfg = release_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|x64.Build.0 = release_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|x64.Deploy.0 = release_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.Build.0 = release_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CppParser/CppParser_x64_vs90.vcproj b/CppParser/CppParser_x64_vs90.vcproj new file mode 100644 index 000000000..14e528418 --- /dev/null +++ b/CppParser/CppParser_x64_vs90.vcproj @@ -0,0 +1,483 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppParser/Makefile b/CppParser/Makefile new file mode 100644 index 000000000..888a156aa --- /dev/null +++ b/CppParser/Makefile @@ -0,0 +1,21 @@ +# +# Makefile +# +# $Id: //poco/1.3/CppParser/Makefile#1 $ +# +# Makefile for Poco CppParser +# + +include $(POCO_BASE)/build/rules/global + +SHAREDOPT_CXX += -DCppParser_EXPORTS + +objects = CppToken Decl Enum EnumValue Function NameSpace Parameter \ + Parser Struct Symbol Tokenizer TypeDef Utility Variable \ + Attributes AttributesParser + +target = PocoCppParser +target_version = $(LIBVERSION) +target_libs = PocoFoundation + +include $(POCO_BASE)/build/rules/lib diff --git a/CppParser/dependencies b/CppParser/dependencies new file mode 100644 index 000000000..2e8175e4e --- /dev/null +++ b/CppParser/dependencies @@ -0,0 +1 @@ +Foundation diff --git a/CppParser/include/Poco/CppParser/Attributes.h b/CppParser/include/Poco/CppParser/Attributes.h new file mode 100644 index 000000000..3823fe892 --- /dev/null +++ b/CppParser/include/Poco/CppParser/Attributes.h @@ -0,0 +1,141 @@ +// +// Attributes.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/Attributes.h#1 $ +// +// Library: CppParser +// Package: Attributes +// Module: Attributes +// +// Definition of the Attributes class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_Attributes_INCLUDED +#define CppParser_Attributes_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include + + +namespace Poco { +namespace CppParser { + + +class CppParser_API Attributes + /// This class stores attributes for a symbol table entry. + /// Attributes are simple name-value pairs, where both + /// name and values are strings. +{ +public: + typedef std::map AttrMap; + typedef AttrMap::const_iterator Iterator; + + Attributes(); + /// Creates the Attributes object. + + Attributes(const Attributes& attrs); + /// Creates the Attributes object by copying another one. + + ~Attributes(); + /// Destroys the Attributes object. + + Attributes& operator = (const Attributes& attrs); + /// Assignment operator. + + bool has(const std::string& name) const; + /// Returns true if an attribute with the given name exists. + + std::string getString(const std::string& name) const; + /// Returns the attribute's value as a string. + /// + /// Throws a Poco::NotFoundException if the attribute does not exist. + + std::string getString(const std::string& name, const std::string& defaultValue) const; + /// Returns the attribute's value as a string, if it exists. + /// Returns the defaultValue if the attribute does not exist. + + int getInt(const std::string& name) const; + /// Returns the attribute's value as an integer. + /// + /// Throws a Poco::NotFoundException if the attribute does not exist. + /// Throws a Poco::SyntaxException if the stored value is not an integer. + + int getInt(const std::string& name, int defaultValue) const; + /// Returns the attribute's value as an integer, if it exists. + /// Returns the defaultValue if the attribute does not exist. + /// + /// Throws a Poco::SyntaxException if the stored value is not an integer. + + bool getBool(const std::string& name) const; + /// Returns the attribute's value as a boolean. + /// The returned value is 'true', iff the stored value is not "false". + /// + /// Throws a Poco::NotFoundException if the attribute does not exist. + + bool getBool(const std::string& name, bool defaultValue) const; + /// Returns the attribute's value as a boolean, if it exists. + /// The returned value is 'true', iff the stored value is not "false". + + void set(const std::string& name, const std::string& value); + /// Sets the value of an attribute. + + const std::string& operator [] (const std::string& name) const; + std::string& operator [] (const std::string& name); + + Iterator begin() const; + Iterator end() const; + + void clear(); + /// Clears all attributes. + +private: + AttrMap _map; +}; + + +// +// inlines +// +inline Attributes::Iterator Attributes::begin() const +{ + return _map.begin(); +} + + +inline Attributes::Iterator Attributes::end() const +{ + return _map.end(); +} + + +} } // namespace Poco::CppParser + + +#endif // CppParser_Attributes_INCLUDED diff --git a/CppParser/include/Poco/CppParser/AttributesParser.h b/CppParser/include/Poco/CppParser/AttributesParser.h new file mode 100644 index 000000000..4016ca6c9 --- /dev/null +++ b/CppParser/include/Poco/CppParser/AttributesParser.h @@ -0,0 +1,136 @@ +// +// AttributesParser.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/AttributesParser.h#1 $ +// +// Library: CppParser +// Package: Attributes +// Module: AttributesParser +// +// Definition of the AttributesParser class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_AttributesParser_INCLUDED +#define CppParser_AttributesParser_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "Poco/CppParser/Tokenizer.h" +#include "Poco/CppParser/Attributes.h" + + +namespace Poco { +namespace CppParser { + + +class CppParser_API AttributesParser + /// A parser for POCO-style C++ attributes. + /// + /// Using a special comment syntax, C++ declarations for + /// structs/classes, functions, types, etc. can be annotated + /// with attributes. + /// + /// Attributes always come immediately before the symbol that + /// is being annotated, and are written inside special comments + /// with the syntax: + /// //@ [,...] + /// where is + /// = + /// is a valid C++ identifier, or two identifiers separated by + /// a period (struct accessor notation). + /// is a string, integer, bool literal, or a complex value + /// in the form + /// {=[,=...]} +{ +public: + AttributesParser(Attributes& attrs, std::istream& istr); + /// Creates the AttributesParser. + + ~AttributesParser(); + /// Destroys the AttributesParser. + + void parse(); + /// Parses attributes. + +protected: + void setAttribute(const std::string& name, const std::string& value); + const Poco::Token* parseAttributes(const Poco::Token* pNext); + const Poco::Token* parseAttribute(const Poco::Token* pNext); + const Poco::Token* parseComplexAttribute(const Token* pNext, const std::string& id); + const Poco::Token* parseIdentifier(const Poco::Token* pNext, std::string& id); + const Poco::Token* next(); + static bool isIdentifier(const Poco::Token* pToken); + static bool isOperator(const Poco::Token* pToken, int kind); + static bool isLiteral(const Poco::Token* pToken); + static bool isEOF(const Poco::Token* pToken); + +private: + Attributes& _attrs; + Tokenizer _tokenizer; + std::string _id; +}; + + +// +// inlines +// +inline const Poco::Token* AttributesParser::next() +{ + return _tokenizer.next(); +} + + +inline bool AttributesParser::isEOF(const Poco::Token* pToken) +{ + return pToken->is(Token::EOF_TOKEN); +} + + +inline bool AttributesParser::isIdentifier(const Poco::Token* pToken) +{ + return pToken->is(Poco::Token::IDENTIFIER_TOKEN) || pToken->is(Poco::Token::KEYWORD_TOKEN); +} + + +inline bool AttributesParser::isOperator(const Poco::Token* pToken, int kind) +{ + return pToken->is(Poco::Token::OPERATOR_TOKEN) && pToken->asInteger() == kind; +} + + +inline bool AttributesParser::isLiteral(const Poco::Token* pToken) +{ + return pToken->is(Poco::Token::STRING_LITERAL_TOKEN) || pToken->is(Poco::Token::INTEGER_LITERAL_TOKEN); +} + + +} } // namespace Poco::CppParser + + +#endif // CppParser_AttributesParser_INCLUDED diff --git a/CppParser/include/Poco/CppParser/CppParser.h b/CppParser/include/Poco/CppParser/CppParser.h new file mode 100644 index 000000000..32c2dd911 --- /dev/null +++ b/CppParser/include/Poco/CppParser/CppParser.h @@ -0,0 +1,91 @@ +// +// CppParser.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/CppParser.h#2 $ +// +// Library: CppParser +// Package: CppParser +// Module: CppParser +// +// Basic definitions for the Poco CppParser library. +// This file must be the first file included by every other CppParser +// header file. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_CppParser_INCLUDED +#define CppParser_CppParser_INCLUDED + + +#include "Poco/Foundation.h" + + +// +// The following block is the standard way of creating macros which make exporting +// from a DLL simpler. All files within this DLL are compiled with the CppParser_EXPORTS +// symbol defined on the command line. this symbol should not be defined on any project +// that uses this DLL. This way any other project whose source files include this file see +// CppParser_API functions as being imported from a DLL, wheras this DLL sees symbols +// defined with this macro as being exported. +// +#if (defined(_WIN32) || defined(__CYGWIN__)) && defined(POCO_DLL) + #if defined(CppParser_EXPORTS) + #define CppParser_API __declspec(dllexport) + #else + #define CppParser_API __declspec(dllimport) + #endif +#endif + + +#if !defined(CppParser_API) + #define CppParser_API +#endif + + +// +// Automatically link CppParser library. +// +#if defined(_MSC_VER) + #if !defined(POCO_NO_AUTOMATIC_LIBS) && !defined(CppParser_EXPORTS) + #if defined(POCO_DLL) + #if defined(_DEBUG) + #pragma comment(lib, "PocoCppParserd.lib") + #else + #pragma comment(lib, "PocoCppParser.lib") + #endif + #else + #if defined(_DEBUG) + #pragma comment(lib, "PocoCppParsermtd.lib") + #else + #pragma comment(lib, "PocoCppParsermt.lib") + #endif + #endif + #endif +#endif + +#endif // CppParser_CppParser_INCLUDED diff --git a/CppParser/include/Poco/CppParser/CppToken.h b/CppParser/include/Poco/CppParser/CppToken.h new file mode 100644 index 000000000..9b02c30db --- /dev/null +++ b/CppParser/include/Poco/CppParser/CppToken.h @@ -0,0 +1,293 @@ +// +// CppToken.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/CppToken.h#2 $ +// +// Library: CppParser +// Package: CppParser +// Module: CppToken +// +// Definition of the CppToken class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_CppToken_INCLUDED +#define CppParser_CppToken_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "Poco/Token.h" +#include + + +namespace Poco { +namespace CppParser { + + +class CppParser_API CppToken: public Poco::Token + /// The base class for all C++ tokens. +{ +public: + CppToken(); + ~CppToken(); + +protected: + void syntaxError(const std::string& expected, const std::string& actual); +}; + + +class CppParser_API OperatorToken: public CppToken +{ +public: + enum Tokens + { + OP_OPENBRACKET = 1, // [ + OP_CLOSBRACKET, // ] + OP_OPENPARENT, // ( + OP_CLOSPARENT, // ) + OP_OPENBRACE, // { + OP_CLOSBRACE, // } + OP_LT, // < + OP_LE, // <= + OP_SHL, // << + OP_SHL_ASSIGN, // <<= + OP_GT, // > + OP_GE, // >= + OP_SHR, // >> + OP_SHR_ASSIGN, // >>= + OP_ASSIGN, // = + OP_EQ, // == + OP_NOT, // ! + OP_NE, // != + OP_BITAND, // & + OP_BITAND_ASSIGN, // &= + OP_AND, // && + OP_BITOR, // | + OP_BITOR_ASSIGN, // |= + OP_OR, // || + OP_XOR, // ^ + OP_XOR_ASSIGN, // ^= + OP_COMPL, // ~ + OP_ASTERISK, // * + OP_ASTERISK_ASSIGN, // *= + OP_SLASH, // / + OP_SLASH_ASSIGN, // /= + OP_PLUS, // + + OP_PLUS_ASSIGN, // += + OP_INCR, // ++ + OP_MINUS, // - + OP_MINUS_ASSIGN, // -= + OP_DECR, // -- + OP_ARROW, // -> + OP_MOD, // % + OP_MOD_ASSIGN, // %= + OP_COMMA, // , + OP_PERIOD, // . + OP_TRIPLE_PERIOD, // ... + OP_COLON, // : + OP_DBL_COLON, // :: + OP_SEMICOLON, // ; + OP_QUESTION // ? + }; + + OperatorToken(); + ~OperatorToken(); + Poco::Token::Class tokenClass() const; + bool start(char c, std::istream& istr); + void finish(std::istream& istr); + int asInteger() const; + +private: + typedef std::map OpMap; + + OpMap _opMap; +}; + + +class CppParser_API IdentifierToken: public CppToken +{ +public: + enum Keywords + { + KW_AND = 1, + KW_AND_EQ, + KW_ASM, + KW_AUTO, + KW_BITAND, + KW_BITOR, + KW_BOOL, + KW_BREAK, + KW_CASE, + KW_CATCH, + KW_CHAR, + KW_CLASS, + KW_COMPL, + KW_CONST, + KW_CONST_CAST, + KW_CONTINUE, + KW_DEFAULT, + KW_DELETE, + KW_DO, + KW_DOUBLE, + KW_DYNAMIC_CAST, + KW_ELSE, + KW_ENUM, + KW_EXPLICIT, + KW_EXPORT, + KW_EXTERN, + KW_FALSE, + KW_FLOAT, + KW_FOR, + KW_FRIEND, + KW_GOTO, + KW_IF, + KW_INLINE, + KW_INT, + KW_LONG, + KW_MUTABLE, + KW_NAMESPACE, + KW_NEW, + KW_NOT, + KW_NOT_EQ, + KW_OPERATOR, + KW_OR, + KW_OR_EQ, + KW_PRIVATE, + KW_PROTECTED, + KW_PUBLIC, + KW_REGISTER, + KW_REINTERPRET_CAST, + KW_RETURN, + KW_SHORT, + KW_SIGNED, + KW_SIZEOF, + KW_STATIC, + KW_STATIC_CAST, + KW_STRUCT, + KW_SWITCH, + KW_TEMPLATE, + KW_THIS, + KW_THROW, + KW_TRUE, + KW_TRY, + KW_TYPEDEF, + KW_TYPEID, + KW_TYPENAME, + KW_UNION, + KW_UNSIGNED, + KW_USING, + KW_VIRTUAL, + KW_VOID, + KW_VOLATILE, + KW_WCHAR_T, + KW_WHILE, + KW_XOR, + KW_XOR_EQ + }; + + IdentifierToken(); + ~IdentifierToken(); + Poco::Token::Class tokenClass() const; + bool start(char c, std::istream& istr); + void finish(std::istream& istr); + int asInteger() const; + +private: + typedef std::map KWMap; + + KWMap _kwMap; +}; + + +class CppParser_API StringLiteralToken: public CppToken +{ +public: + StringLiteralToken(); + ~StringLiteralToken(); + Poco::Token::Class tokenClass() const; + bool start(char c, std::istream& istr); + void finish(std::istream& istr); + std::string asString() const; +}; + + +class CppParser_API CharLiteralToken: public CppToken +{ +public: + CharLiteralToken(); + ~CharLiteralToken(); + Poco::Token::Class tokenClass() const; + bool start(char c, std::istream& istr); + void finish(std::istream& istr); + char asChar() const; +}; + + +class CppParser_API NumberLiteralToken: public CppToken +{ +public: + NumberLiteralToken(); + ~NumberLiteralToken(); + Poco::Token::Class tokenClass() const; + bool start(char c, std::istream& istr); + void finish(std::istream& istr); + int asInteger() const; + double asFloat() const; + +private: + bool _isFloat; +}; + + +class CppParser_API CommentToken: public CppToken +{ +public: + CommentToken(); + ~CommentToken(); + Poco::Token::Class tokenClass() const; + bool start(char c, std::istream& istr); + void finish(std::istream& istr); + std::string asString() const; +}; + + +class CppParser_API PreprocessorToken: public CppToken +{ +public: + PreprocessorToken(); + ~PreprocessorToken(); + Poco::Token::Class tokenClass() const; + bool start(char c, std::istream& istr); + void finish(std::istream& istr); +}; + + +} } // namespace Poco::CppParser + + +#endif // CppParser_CppToken_INCLUDED diff --git a/CppParser/include/Poco/CppParser/Decl.h b/CppParser/include/Poco/CppParser/Decl.h new file mode 100644 index 000000000..d10656ab5 --- /dev/null +++ b/CppParser/include/Poco/CppParser/Decl.h @@ -0,0 +1,84 @@ +// +// Decl.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/Decl.h#1 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: Decl +// +// Definition of the Decl class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_Decl_INCLUDED +#define CppParser_Decl_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "Poco/CppParser/Symbol.h" + + +namespace Poco { +namespace CppParser { + + +class CppParser_API Decl: public Symbol + /// This class represents a simple declaration in a C++ source file. + /// It is a base class for Function, TypeDef or Variable. +{ +public: + Decl(const std::string& decl, NameSpace* pNameSpace); + /// Creates the Decl. + + ~Decl(); + /// Destroys the Decl. + + const std::string& declaration() const; + /// Returns the declaration. + + std::string toString() const; + +protected: + std::string _decl; +}; + + +// +// inlines +// +inline const std::string& Decl::declaration() const +{ + return _decl; +} + + +} } // namespace Poco::CppParser + + +#endif // CppParser_Decl_INCLUDED diff --git a/CppParser/include/Poco/CppParser/Enum.h b/CppParser/include/Poco/CppParser/Enum.h new file mode 100644 index 000000000..c143e1ca1 --- /dev/null +++ b/CppParser/include/Poco/CppParser/Enum.h @@ -0,0 +1,99 @@ +// +// Enum.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/Enum.h#1 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: Enum +// +// Definition of the Enum class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_Enum_INCLUDED +#define CppParser_Enum_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "Poco/CppParser/Symbol.h" +#include + + +namespace Poco { +namespace CppParser { + + +class EnumValue; + + +class CppParser_API Enum: public Symbol + /// This class represents an enum declaration. + /// + /// An enumeration has an optional name and + /// a collection of EnumValues. +{ +public: + typedef std::vector Values; + typedef Values::const_iterator Iterator; + + Enum(const std::string& name, NameSpace* pNameSpace); + /// Creates the Enum. + /// + /// If name is the empty string, an internal name + /// in the form #AnonEnum (where is a unique integer) + /// will be assigned. + + ~Enum(); + /// Destroys the Enum. + + void addValue(EnumValue* pValue); + /// Adds an enum value. The Enum takes ownership of the value. + + Iterator begin() const; + /// Returns an iterator for iterating over the Enum's EnumValue's. + + Iterator end() const; + /// Returns an iterator for iterating over the Enum's EnumValue's. + + Symbol::Kind kind() const; + std::string toString() const; + +protected: + static std::string processName(const std::string& name); + +private: + Values _values; + static int _count; +}; + + +} } // namespace Poco::CppParser + + +#endif // CppParser_Enum_INCLUDED diff --git a/CppParser/include/Poco/CppParser/EnumValue.h b/CppParser/include/Poco/CppParser/EnumValue.h new file mode 100644 index 000000000..4320c7624 --- /dev/null +++ b/CppParser/include/Poco/CppParser/EnumValue.h @@ -0,0 +1,88 @@ +// +// EnumValue.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/EnumValue.h#1 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: EnumValue +// +// Definition of the EnumValue class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_EnumValue_INCLUDED +#define CppParser_EnumValue_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "Poco/CppParser/Symbol.h" + + +namespace Poco { +namespace CppParser { + + +class Enum; + + +class CppParser_API EnumValue: public Symbol + /// This class represents an enumeration value + /// inside an enum declaration. +{ +public: + EnumValue(const std::string& name, const std::string& value, Enum* pEnum); + /// Creates the EnumValue, using the name and a value, which may be empty. + + virtual ~EnumValue(); + /// Destroys the EnumValue. + + const std::string& value() const; + /// Returns the value, which may be empty. + + Symbol::Kind kind() const; + std::string toString() const; + +private: + std::string _value; +}; + + +// +// inlines +// +inline const std::string& EnumValue::value() const +{ + return _value; +} + + +} } // namespace Poco::CppParser + + +#endif // CppParser_EnumValue_INCLUDED diff --git a/CppParser/include/Poco/CppParser/Function.h b/CppParser/include/Poco/CppParser/Function.h new file mode 100644 index 000000000..e621667d0 --- /dev/null +++ b/CppParser/include/Poco/CppParser/Function.h @@ -0,0 +1,168 @@ +// +// Function.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/Function.h#1 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: Function +// +// Definition of the Function class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_Function_INCLUDED +#define CppParser_Function_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "Poco/CppParser/Decl.h" +#include + + +namespace Poco { +namespace CppParser { + + +class Parameter; + + +class CppParser_API Function: public Decl + /// This class represents a (member) function declaration. +{ +public: + enum Flags + { + FN_STATIC = 1, /// The function is static. + FN_VIRTUAL = 2, /// The function is virtual. + FN_INLINE = 4, /// The function is inline. + FN_CONST = 8, /// The function is const. + FN_TEMPLATE = 16, /// The function is a template. + FN_PURE_VIRTUAL = 32 /// The function is pure virtual. + }; + + typedef std::vector Parameters; + typedef Parameters::const_iterator Iterator; + + Function(const std::string& decl, NameSpace* pNameSpace); + /// Creates the Function. + + ~Function(); + /// Destroys the Function. + + void addParameter(Parameter* pParam); + /// Adds a parameter to the function. + + const std::string& getReturnParameter() const; + + Iterator begin() const; + /// Returns an iterator for iterating over the Function's Parameter's. + + Iterator end() const; + /// Returns an iterator for iterating over the Function's Parameter's. + + void makeInline(); + /// Sets the FN_INLINE flag. + + void makeConst(); + /// Sets the FN_CONST flag. + + void makePureVirtual(); + /// Sets the FN_PURE_VIRTUAL flag. + + int flags() const; + /// Returns the function's flags. + + bool isConstructor() const; + /// Returns true iff the function is a constructor. + + bool isDestructor() const; + /// Returns true iff the function is a destructor. + + bool isMethod() const; + /// Returns true iff the function is a method (it's part of + /// a Struct and it's neither a constructor nor a destructor). + + bool isFunction() const; + /// Returns true iff the function is not a member of a class + /// (a freestanding function). + + bool isConst() const; + /// Returns true iff the method is const. + + int countParameters() const; + /// Returns the number of parameters. + + std::string signature() const; + /// Returns the signature of the function. + + bool isVirtual() const; + /// Returns true if the method is virtual. Also examines base + /// classes to check for a virtual function with the same + /// signature. + + Function* getOverridden() const; + /// If the function is virtual and overrides a function in a + /// base class, the base class function is returned. + /// Otherwise, null is returned. + + Symbol::Kind kind() const; + std::string toString() const; + +private: + Parameters _params; + int _flags; + std::string _retParam; +}; + + +// +// inlines +// +inline int Function::flags() const +{ + return _flags; +} + + +inline const std::string& Function::getReturnParameter() const +{ + return _retParam; +} + + +inline bool Function::isConst() const +{ + return (flags() & FN_CONST) != 0; +} + + +} } // namespace Poco::CppParser + + +#endif // CppParser_Function_INCLUDED diff --git a/CppParser/include/Poco/CppParser/NameSpace.h b/CppParser/include/Poco/CppParser/NameSpace.h new file mode 100644 index 000000000..09f514d84 --- /dev/null +++ b/CppParser/include/Poco/CppParser/NameSpace.h @@ -0,0 +1,160 @@ +// +// NameSpace.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/NameSpace.h#2 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: NameSpace +// +// Definition of the NameSpace class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_NameSpace_INCLUDED +#define CppParser_NameSpace_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "Poco/CppParser/Symbol.h" +#include +#include +#include + + +namespace Poco { +namespace CppParser { + + +class CppParser_API NameSpace: public Symbol + /// This class represents a namespace. +{ +public: + typedef std::multimap SymbolTable; + typedef SymbolTable::const_iterator Iterator; + typedef std::map AliasMap; + typedef std::vector NameSpaceVec; + + NameSpace(); + /// Creates the NameSpace. + + NameSpace(const std::string& name, NameSpace* pNameSpace = 0); + /// Creates the NameSpace. + + ~NameSpace(); + /// Destroys the NameSpace. + + void addSymbol(Symbol* pSymbol); + /// Adds a symbol to the namespace. + + void importSymbol(const std::string& fullName); + /// Imports a symbol from another namespace (using ). + + void importNameSpace(const std::string& nameSpace); + /// Imports a namespace (using namespace ). + + Iterator begin() const; + /// Returns an iterator for iterating over the NameSpace's Symbol's. + + Iterator end() const; + /// Returns an iterator for iterating over the NameSpace's Symbol's. + + Symbol* lookup(const std::string& name) const; + /// Looks up the given name in the symbol table + /// and returns the corresponsing symbol, or null + /// if no symbol can be found. The name can include + /// a namespace. + + static NameSpace* root(); + /// Returns the root namespace. Never delete this one! + + void nameSpaces(SymbolTable& table) const; + /// Fills the symbol table with all namespaces. + + void typeDefs(SymbolTable& table) const; + /// Fills the symbol table with all type definitions. + + void enums(SymbolTable& table) const; + /// Fills the symbol table with all enums. + + void classes(SymbolTable& table) const; + /// Fills the symbol table with all classes and structs. + + void functions(SymbolTable& table) const; + /// Fills the symbol table with all functions. + + void variables(SymbolTable& table) const; + /// Fills the symbol table with all variables. + + const AliasMap& importedSymbols() const; + /// Returns a const reference to a SymbolTable containing all + /// imported symbols. + + const NameSpaceVec& importedNameSpaces() const; + /// Returns a vector containing all imported namespaces. + + Symbol::Kind kind() const; + std::string toString() const; + +private: + Symbol* lookup(const std::string& name, std::set& alreadyVisited) const; + /// Looks up the given name in the symbol table + /// and returns the corresponsing symbol, or null + /// if no symbol can be found. The name can include + /// a namespace. + +protected: + void extract(Symbol::Kind kind, SymbolTable& table) const; + static void splitName(const std::string& name, std::string& head, std::string& tail); + +private: + SymbolTable _symbols; + AliasMap _importedSymbols; + NameSpaceVec _importedNameSpaces; +}; + + +// +// inlines +// +inline const NameSpace::AliasMap& NameSpace::importedSymbols() const +{ + return _importedSymbols; +} + + +inline const NameSpace::NameSpaceVec& NameSpace::importedNameSpaces() const +{ + return _importedNameSpaces; +} + + +} } // namespace Poco::CppParser + + +#endif // CppParser_NameSpace_INCLUDED diff --git a/CppParser/include/Poco/CppParser/Parameter.h b/CppParser/include/Poco/CppParser/Parameter.h new file mode 100644 index 000000000..076a287ff --- /dev/null +++ b/CppParser/include/Poco/CppParser/Parameter.h @@ -0,0 +1,164 @@ +// +// Parameter.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/Parameter.h#1 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: Parameter +// +// Definition of the Parameter class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_Parameter_INCLUDED +#define CppParser_Parameter_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "Poco/CppParser/Decl.h" + + +namespace Poco { +namespace CppParser { + + +class Function; + + +class CppParser_API Parameter: public Decl + /// This class represents a parameter to a function. +{ +public: + Parameter(const std::string& decl, Function* pFunction); + /// Creates the Parameter. + + ~Parameter(); + /// Destroys the Parameter. + + Symbol::Kind kind() const; + + bool isReference() const; + /// Returns true iff the parameter is a reference. + + bool isPointer() const; + /// Returns true iff the parameter is a pointer. + + bool isConst() const; + /// Returns true iff the parameter is const. + + bool hasDefaultValue() const; + /// Returns true if a defaultvalue was set at this parameter, + /// Example: const std::string& data = std::string("default"). + + const std::string& declType() const; + /// Returns the type of the parameter without const and & if present. + /// + /// Example: a type const std::string& -> std::string, a type const std::string* returns std::string + + const std::string& defaultValue() const; + /// If hasDefaultValue() returns true, this method returns the default value, i.e. all data found between + /// the opening and closing bracket of the init string. + /// + /// Example: for const std::string& data = std::string("default") it will return "default", + /// for = std::string() it will return a zero length string, for = ComplexClass(13,12, "test", 0); + /// it will return 13,12, "test", 0. + + const std::string& defaultDecl() const; + /// If hasDefaultValue() returns true, this method returns the + /// default value declaration. + /// + /// Example: for const std::string& data = std::string("default") it will return std::string("default"). + + static bool vectorType(const std::string& type, NameSpace* pNS); + +private: + std::string handleDecl(const std::string& decl); + /// Removes initialization values, adds param Names if they are missing + +private: + std::string _type; + bool _isRef; + bool _isPointer; + bool _isConst; + bool _hasDefaultValue; + std::string _defaultValue; + std::string _defaultDecl; + static int _count; +}; + + +// +// inlines +// +inline const std::string& Parameter::declType() const +{ + return _type; +} + + +inline bool Parameter::isReference() const +{ + return _isRef; +} + + +inline bool Parameter::isConst() const +{ + return _isConst; +} + + +inline bool Parameter::isPointer() const +{ + return _isPointer; +} + + +inline bool Parameter::hasDefaultValue() const +{ + return _hasDefaultValue; +} + + +inline const std::string& Parameter::defaultValue() const +{ + return _defaultValue; +} + + +inline const std::string& Parameter::defaultDecl() const +{ + return _defaultDecl; +} + + +} } // namespace Poco::CppParser + + +#endif // CppParser_Parameter_INCLUDED diff --git a/CppParser/include/Poco/CppParser/Parser.h b/CppParser/include/Poco/CppParser/Parser.h new file mode 100644 index 000000000..54b360206 --- /dev/null +++ b/CppParser/include/Poco/CppParser/Parser.h @@ -0,0 +1,149 @@ +// +// Parser.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/Parser.h#3 $ +// +// Library: CppParser +// Package: CppParser +// Module: Parser +// +// Definition of the Parser class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_Parser_INCLUDED +#define CppParser_Parser_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "Poco/CppParser/Tokenizer.h" +#include "Poco/CppParser/Symbol.h" +#include "Poco/CppParser/NameSpace.h" +#include "Poco/CountingStream.h" +#include + + +namespace Poco { +namespace CppParser { + + +class Enum; +class Struct; +class Function; + + +class CppParser_API Parser + /// A minimal parser for C++ (header files). + /// + /// The parser reads a (preprocessed) source or header file and + /// builds a symbol table containing as much information as + /// the parser is able to extract from the file. + /// + /// A special comment syntax is used for inline API documentation. + /// + /// A comment starting with three consecutive slashes (///) contains + /// API documentation for a symbol (class, function, typedef, enum, etc.). + /// API documentation comments always come after the declaration, with the + /// exception of structs and classes, where the comments are expected + /// immediately before the opening brace. +{ +public: + Parser(NameSpace::SymbolTable& gst, const std::string& file, std::istream& istr); + /// Creates the Parser. + + ~Parser(); + /// Destroys the Parser. + + void parse(); + /// Parses the file. + +protected: + const Poco::Token* parseFile(const Poco::Token* pNext); + const Poco::Token* parseNameSpace(const Poco::Token* pNext); + const Poco::Token* parseClass(const Poco::Token* pNext); + const Poco::Token* parseClass(const Poco::Token* pNext, std::string& decl); + const Poco::Token* parseTemplate(const Poco::Token* pNext); + const Poco::Token* parseTemplateArgs(const Poco::Token* pNext, std::string& decl); + const Poco::Token* parseVarFunc(const Poco::Token* pNext); + const Poco::Token* parseVarFunc(const Poco::Token* pNext, std::string& decl); + const Poco::Token* parseFriend(const Poco::Token* pNext); + const Poco::Token* parseExtern(const Poco::Token* pNext); + const Poco::Token* parseTypeDef(const Poco::Token* pNext); + const Poco::Token* parseUsing(const Poco::Token* pNext); + const Poco::Token* parseFunc(const Poco::Token* pNext, std::string& decl); + const Poco::Token* parseParameters(const Poco::Token* pNext, Function* pFunc); + const Poco::Token* parseBlock(const Poco::Token* pNext); + const Poco::Token* parseEnum(const Poco::Token* pNext); + const Poco::Token* parseEnumValue(const Poco::Token* pNext, Enum* pEnum); + const Poco::Token* parseBaseClassList(const Poco::Token* pNext, Struct* pClass); + const Poco::Token* parseClassMembers(const Poco::Token* pNext, Struct* pClass); + const Poco::Token* parseAccess(const Poco::Token* pNext); + const Poco::Token* parseIdentifier(const Poco::Token* pNext, std::string& id); + + void addSymbol(Symbol* pSymbol, int lineNumber, bool addGST = true); + void pushNameSpace(NameSpace* pNameSpace, int lineNumber, bool addGST = true); + void popNameSpace(); + NameSpace* currentNameSpace() const; + + static bool isIdentifier(const Poco::Token* pToken); + static bool isOperator(const Poco::Token* pToken, int kind); + static bool isKeyword(const Poco::Token* pToken, int kind); + static bool isEOF(const Poco::Token* pToken); + static void expectOperator(const Poco::Token* pToken, int kind, const std::string& msg); + static void syntaxError(const std::string& msg); + static void append(std::string& decl, const std::string& token); + static void append(std::string& decl, const Poco::Token* pToken); + + const Poco::Token* next(); + const Poco::Token* nextPreprocessed(); + const Poco::Token* nextToken(); + +private: + typedef std::vector NSStack; + + NameSpace::SymbolTable& _gst; + Poco::CountingInputStream _istr; + Tokenizer _tokenizer; + std::string _file; + std::string _path; + std::string _currentPath; + bool _inFile; + std::string _package; + std::string _library; + NSStack _nsStack; + Symbol* _pCurrentSymbol; + Symbol::Access _access; + std::string _doc; + std::string _attrs; +}; + + +} } // namespace Poco::CppParser + + +#endif // CppParser_Parser_INCLUDED diff --git a/CppParser/include/Poco/CppParser/Struct.h b/CppParser/include/Poco/CppParser/Struct.h new file mode 100644 index 000000000..5f8eb2191 --- /dev/null +++ b/CppParser/include/Poco/CppParser/Struct.h @@ -0,0 +1,208 @@ +// +// Struct.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/Struct.h#1 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: Struct +// +// Definition of the Struct class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_Struct_INCLUDED +#define CppParser_Struct_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "Poco/CppParser/NameSpace.h" +#include +#include + + +namespace Poco { +namespace CppParser { + + +class Function; + + +class CppParser_API Struct: public NameSpace + /// This class represents a struct or class declaration. +{ +public: + enum Flags + { + FN_TEMPLATE = 1, + FN_INLINE = 2, // when the whole class is inlined in a c++ file + FN_TEMPLATE_SPECIALIZATION = 4 + }; + + struct Base + { + Symbol::Access access; + bool isVirtual; + std::string name; + Struct* pClass; + }; + + typedef std::vector BaseClasses; + typedef BaseClasses::const_iterator BaseIterator; + typedef std::vector StructVec; + typedef StructVec::const_iterator DerivedIterator; + typedef std::vector Functions; + typedef std::set FunctionSet; + typedef std::set StructSet; + + Struct(const std::string& decl, bool isClass, NameSpace* pNameSpace); + /// Creates the Struct. + + ~Struct(); + /// Destroys the Struct. + + void addBase(const std::string&, Symbol::Access access, bool isVirtual); + /// Adds a base class. + + BaseIterator baseBegin() const; + /// Returns an iterator for iterating over all base classes. + + BaseIterator baseEnd() const; + /// Returns an iterator for iterating over all base classes. + + void fixupBases(); + /// Adds pointers for all base classes. + + void addDerived(Struct* pClass); + /// Adds a derived class. + + DerivedIterator derivedBegin() const; + /// Returns an iterator for iterating over all derived classes. + + DerivedIterator derivedEnd() const; + /// Returns an iterator for iterating over all derived classes. + + const std::string& declaration() const; + /// Returns the declaration. + + int flags() const; + /// Returns the struct's flags. + + void makeInline(); + /// Changes the class to a inline class, i.e. definition and implementation are hidden in a cpp file. + + bool isInline() const; + /// Returns true if the complete class is inlined in a cpp file. + + void constructors(Functions& functions) const; + /// Returns all constructors, sorted by their parameter count. + + Function* destructor() const; + /// Returns the destructor, or NULL if no + /// destructor is defined. + + void methods(Symbol::Access access, Functions& functions) const; + /// Returns all functions with the given access. + + void inheritedMethods(FunctionSet& functions) const; + /// Returns all inherited methods. + + void bases(std::set& bases) const; + /// Returns all base classes. + + void derived(StructSet& derived) const; + /// Returns all derived classes. + + Function* findFunction(const std::string& signature) const; + /// Finds a function with the given signature. + + bool hasVirtualDestructor() const; + /// Returns true if the class CppParser_API or one if its base classes + /// has a virtual destructor. + + bool isClass() const; + /// Returns true iff the struct was declared as class. + + bool isDerived() const; + /// Returns true iff the struct or class is derived from another struct or class. + + Symbol::Kind kind() const; + std::string toString() const; + +private: + std::string _decl; + BaseClasses _bases; + StructVec _derived; + int _flags; + bool _isClass; +}; + + +// +// inlines +// +inline const std::string& Struct::declaration() const +{ + return _decl; +} + + +inline int Struct::flags() const +{ + return _flags; +} + + +inline bool Struct::isClass() const +{ + return _isClass; +} + + +inline void Struct::makeInline() +{ + _flags |= FN_INLINE; +} + + +inline bool Struct::isInline() const +{ + return (_flags & FN_INLINE) != 0; +} + + +inline bool Struct::isDerived() const +{ + return !_bases.empty(); +} + + +} } // namespace Poco::CppParser + + +#endif // CppParser_Struct_INCLUDED diff --git a/CppParser/include/Poco/CppParser/Symbol.h b/CppParser/include/Poco/CppParser/Symbol.h new file mode 100644 index 000000000..312383cfe --- /dev/null +++ b/CppParser/include/Poco/CppParser/Symbol.h @@ -0,0 +1,278 @@ +// +// Symbol.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/Symbol.h#1 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: Symbol +// +// Definition of the Symbol class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_Symbol_INCLUDED +#define CppParser_Symbol_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "Poco/CppParser/Attributes.h" +#include "Poco/Foundation.h" + + +namespace Poco { +namespace CppParser { + + +class NameSpace; + + +class CppParser_API Symbol + /// This is the base class for all symbols in the symbol table. + /// + /// Every symbol has a unique ID (int) and a namespace (which + /// may be null). +{ +public: + enum Kind + { + SYM_ENUM, /// An enumeration + SYM_ENUM_VALUE, /// An enumeration value + SYM_FUNCTION, /// A (member) function + SYM_NAMESPACE, /// A namespace + SYM_PARAMETER, /// A function parameter + SYM_STRUCT, /// A struct or class + SYM_TYPEDEF, /// A typedef + SYM_VARIABLE /// A (member) variable + }; + + enum Access + { + ACC_PUBLIC, /// public access + ACC_PROTECTED, /// protected access + ACC_PRIVATE /// private access + }; + + Symbol(); + /// Creates the Symbol and assigns the symbol + /// a unique ID. + + Symbol(const std::string& name, NameSpace* pNameSpace = 0); + /// Creates the Symbol and assigns the symbol + /// a unique ID. + + virtual ~Symbol(); + /// Destroys the Symbol. + + int id() const; + /// Returns the symbol's unique ID. + + const std::string& name() const; + /// Returns the symbol's (local) name. + + NameSpace* nameSpace() const; + /// Returns the symbol's namespace which + /// may be null. + + void setAccess(Access v); + /// Sets the symbol's access. + + Access getAccess() const; + /// Returns the symbol's access. + + void setDocumentation(const std::string& text); + /// Sets the symbol's documentation. + + void addDocumentation(const std::string& text); + /// Adds text to the symbol's documentation. + + const std::string& getDocumentation() const; + /// Returns the symbol's documentation. + + void setFile(const std::string& path); + /// Sets the file where the symbol is declared. + + const std::string& getFile() const; + /// Returns the file where the symbol is defined. + + void setLineNumber(int line); + /// Sets the line number of the symbol's declaration. + + int getLineNumber() const; + /// Returns the line number of the symbol's declaration. + + void setPackage(const std::string& package); + /// Sets the symbol's package. + + const std::string& getPackage() const; + /// Returns the symbol's package. + + void setLibrary(const std::string& library); + /// Sets the symbol's library. + + const std::string& getLibrary() const; + /// Returns the symbol's library. + + const Attributes& attrs() const; + /// Returns the symbol's attributes. + + const Attributes& getAttributes() const; + /// Returns the symbol's attributes. + + void setAttributes(const Attributes& attrs); + /// Sets the symbol's attributes. + + std::string fullName() const; + /// Returns the symbol's fully qualified name. + + static std::string extractName(const std::string& decl); + /// Extracts the name from the declaration. + + virtual Kind kind() const = 0; + /// Returns the symbol's kind. + + virtual std::string toString() const = 0; + /// Returns a string representation of the symbol. + + bool isPublic() const; + /// Returns true iff the symbol is public. + + bool isProtected() const; + /// Returns true iff the symbol is public. + + bool isPrivate() const; + /// Returns true iff the symbol is public. + +protected: + static bool isIdent(char c); + static bool hasAttr(const std::string& decl, const std::string& attr); + +private: + Symbol(const Symbol&); + Symbol& operator = (const Symbol&); + + int _id; + std::string _name; + NameSpace* _pNameSpace; + Access _access; + std::string _documentation; + std::string _file; + int _line; + std::string _package; + std::string _library; + Attributes _attrs; + + static int _nextId; +}; + + +// +// inlines +// +inline int Symbol::id() const +{ + return _id; +} + + +inline const std::string& Symbol::name() const +{ + return _name; +} + + +inline const std::string& Symbol::getDocumentation() const +{ + return _documentation; +} + + +inline Symbol::Access Symbol::getAccess() const +{ + return _access; +} + + +inline NameSpace* Symbol::nameSpace() const +{ + return _pNameSpace; +} + + +inline const std::string& Symbol::getFile() const +{ + return _file; +} + + +inline int Symbol::getLineNumber() const +{ + return _line; +} + + +inline const std::string& Symbol::getPackage() const +{ + return _package; +} + + +inline const std::string& Symbol::getLibrary() const +{ + return _library; +} + + +inline const Attributes& Symbol::attrs() const +{ + return _attrs; +} + + +inline bool Symbol::isPublic() const +{ + return _access == ACC_PUBLIC; +} + + +inline bool Symbol::isProtected() const +{ + return _access == ACC_PROTECTED; +} + + +inline bool Symbol::isPrivate() const +{ + return _access == ACC_PRIVATE; +} + + +} } // namespace Poco::CppParser + + +#endif // CppParser_Symbol_INCLUDED diff --git a/CppParser/include/Poco/CppParser/Tokenizer.h b/CppParser/include/Poco/CppParser/Tokenizer.h new file mode 100644 index 000000000..63c02495f --- /dev/null +++ b/CppParser/include/Poco/CppParser/Tokenizer.h @@ -0,0 +1,66 @@ +// +// Tokenizer.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/Tokenizer.h#1 $ +// +// Library: CppParser +// Package: CppParser +// Module: Tokenizer +// +// Definition of the Tokenizer class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_Tokenizer_INCLUDED +#define CppParser_Tokenizer_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "Poco/StreamTokenizer.h" + + +namespace Poco { +namespace CppParser { + + +class CppParser_API Tokenizer: public Poco::StreamTokenizer + /// A Tokenizer for C++. +{ +public: + Tokenizer(std::istream& istr); + /// Creates the Tokenizer. + + ~Tokenizer(); + /// Destroys the Tokenizer. +}; + + +} } // namespace Poco::CppParser + + +#endif // CppParser_Tokenizer_INCLUDED diff --git a/CppParser/include/Poco/CppParser/TypeDef.h b/CppParser/include/Poco/CppParser/TypeDef.h new file mode 100644 index 000000000..026484e21 --- /dev/null +++ b/CppParser/include/Poco/CppParser/TypeDef.h @@ -0,0 +1,71 @@ +// +// TypeDef.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/TypeDef.h#2 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: TypeDef +// +// Definition of the TypeDef class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_TypeDef_INCLUDED +#define CppParser_TypeDef_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "Poco/CppParser/Decl.h" + + +namespace Poco { +namespace CppParser { + + +class CppParser_API TypeDef: public Decl + /// This class represents a type definition (typedef). +{ +public: + TypeDef(const std::string& decl, NameSpace* pNameSpace); + /// Creates the TypeDef. + + ~TypeDef(); + /// Destroys the TypeDef. + + Symbol::Kind kind() const; + + std::string baseType() const; + /// Returns the underlying base type. +}; + + +} } // namespace Poco::CppParser + + +#endif // CppParser_TypeDef_INCLUDED diff --git a/CppParser/include/Poco/CppParser/Utility.h b/CppParser/include/Poco/CppParser/Utility.h new file mode 100644 index 000000000..2856c0b01 --- /dev/null +++ b/CppParser/include/Poco/CppParser/Utility.h @@ -0,0 +1,107 @@ +// +// Utility.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/Utility.h#1 $ +// +// Library: CppParser +// Package: CppParser +// Module: Utility +// +// Definition of the Utility class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_Utility_INCLUDED +#define CppParser_Utility_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "Poco/CppParser/NameSpace.h" +#include +#include + + +namespace Poco { +namespace CppParser { + + +class CppParser_API Utility + /// Various helpers for parsing and analyzing C++ header files. +{ +public: + class CppParser_API FwdDeclBlock + { + public: + std::string beginNameSpaceDecl; // contains either $(NS)_BEGIN or the namespace x { decl + std::string endNameSpaceDecl; // contains either $(NS)_END or the closing brackets } + std::vector classDecls; // contains strings of the form "class X;" + }; + + static void parse(const std::string& file, NameSpace::SymbolTable& st, const std::string& exec, const std::string& options, const std::string& path); + /// Preprocesses and parses the file. The resulting symboltable has base class references already fixed, + + static void parseDir(const std::vector & includePattern, const std::vector & excludePattern, NameSpace::SymbolTable& st, const std::string& exec, const std::string& options, const std::string& path); + /// Preprocesses and parses all files specified by the include pattern (e.g.: p:/poco/Foundation/include/*/*.h) minus the ones defined in the exclude pattern + + static void fixup(NameSpace::SymbolTable& st); + /// Fixes all base pointers in the symbol table + + static void detectPrefixAndIncludes(const std::string& origHFile, std::vector& lines, std::string& prefix); + /// This method is poco coding style specific! It looks for a $(PREFIX)_BEGIN and extracts from it a prefix, also include files and fwd declarations are extracted from the h file. + + static void removeFile(const std::string& preprocessedfile); + /// Tries to remove the file. If it fails, the error is silently ignored. + +protected: + static std::string preprocessFile(const std::string& file, const std::string& exec, const std::string& options, const std::string& path); + /// Preprocess the include file with name file. Parameter exec must contain the name of the preprocessor binary (e.g.: "cl" for Visual Studio). + /// Parameter options contains the flag for the preprocessor, and parameter path sets the environment PATH settings during preprocessing. + /// Returns the name of the created file or throws an exception. + + static void parseOnly(const std::string& file, NameSpace::SymbolTable& st, const std::string& preprocessedFile, bool removePreprocessedFile = true); + /// Parses the file, throws an exception if anything goes wrong. + + static void buildFileList(std::set& files, const std::vector& includePattern, const std::vector& excludePattern); + /// Searches all files that match the defined patterns and inserts them into files. +private: + Utility(); + ~Utility(); + Utility(const Utility&); + Utility& operator=(const Utility&); + +}; + + +std::string CppParser_API replace(const std::string& input, const std::string& oldToken, const std::string& newToken); + /// Replaces in character input all oldTokens with the newToken + + +} } // namespace Poco::CppParser + + +#endif // CppParser_Utility_INCLUDED diff --git a/CppParser/include/Poco/CppParser/Variable.h b/CppParser/include/Poco/CppParser/Variable.h new file mode 100644 index 000000000..6c61ef2ad --- /dev/null +++ b/CppParser/include/Poco/CppParser/Variable.h @@ -0,0 +1,114 @@ +// +// Variable.h +// +// $Id: //poco/1.3/CppParser/include/Poco/CppParser/Variable.h#2 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: Variable +// +// Definition of the Variable class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParser_Variable_INCLUDED +#define CppParser_Variable_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "Poco/CppParser/Decl.h" + + +namespace Poco { +namespace CppParser { + + +class CppParser_API Variable: public Decl + /// This class represents (member) variable declaration. +{ +public: + enum Flags + { + VAR_STATIC = 1, /// The variable is static. + VAR_MUTABLE = 2, /// The variable is mutable. + VAR_VOLATILE = 4, /// The variable is volatile. + VAR_CONST = 8 /// The variable is const. + }; + + Variable(const std::string& decl, NameSpace* pNameSpace); + /// Creates the Variable. + + ~Variable(); + /// Destroys the Variable. + + int flags() const; + /// Returns the variable's flags. + + bool isPointer() const; + /// Returns true iff the variable holds a pointer. + + Symbol::Kind kind() const; + + const std::string& declType() const; + /// Returns the type of the parameter without const and & if present. + /// + /// Example: a type const std::string& -> std::string, a type const std::string* returns std::string + + +private: + int _flags; + bool _isPointer; + std::string _type; +}; + + +// +// inlines +// +inline int Variable::flags() const +{ + return _flags; +} + + +inline bool Variable::isPointer() const +{ + return _isPointer; +} + + +inline const std::string& Variable::declType() const +{ + return _type; +} + + +} } // namespace Poco::CppParser + + +#endif // CppParser_Variable_INCLUDED diff --git a/CppParser/src/Attributes.cpp b/CppParser/src/Attributes.cpp new file mode 100644 index 000000000..a03b04459 --- /dev/null +++ b/CppParser/src/Attributes.cpp @@ -0,0 +1,168 @@ +// +// Attributes.cpp +// +// $Id: //poco/1.3/CppParser/src/Attributes.cpp#1 $ +// +// Library: CppParser +// Package: Attributes +// Module: Attributes +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/CppParser/Attributes.h" +#include "Poco/NumberParser.h" +#include "Poco/Exception.h" +#include + + +using Poco::NumberParser; + + +namespace Poco { +namespace CppParser { + + +Attributes::Attributes() +{ +} + + +Attributes::Attributes(const Attributes& attrs) +{ + _map = attrs._map; +} + + +Attributes::~Attributes() +{ +} + + +Attributes& Attributes::operator = (const Attributes& attrs) +{ + AttrMap map(attrs._map); + std::swap(_map, map); + return *this; +} + + +bool Attributes::has(const std::string& name) const +{ + return _map.find(name) != _map.end(); +} + + +std::string Attributes::getString(const std::string& name) const +{ + AttrMap::const_iterator it = _map.find(name); + if (it != _map.end()) + return it->second; + else + throw Poco::NotFoundException(name); +} + + +std::string Attributes::getString(const std::string& name, const std::string& defaultValue) const +{ + AttrMap::const_iterator it = _map.find(name); + if (it != _map.end()) + return it->second; + else + return defaultValue; +} + + +int Attributes::getInt(const std::string& name) const +{ + AttrMap::const_iterator it = _map.find(name); + if (it != _map.end()) + return NumberParser::parse(it->second); + else + throw Poco::NotFoundException(name); +} + + +int Attributes::getInt(const std::string& name, int defaultValue) const +{ + AttrMap::const_iterator it = _map.find(name); + if (it != _map.end()) + return NumberParser::parse(it->second); + else + return defaultValue; +} + + +bool Attributes::getBool(const std::string& name) const +{ + AttrMap::const_iterator it = _map.find(name); + if (it != _map.end()) + return it->second != "false"; + else + throw Poco::NotFoundException(name); +} + + +bool Attributes::getBool(const std::string& name, bool defaultValue) const +{ + AttrMap::const_iterator it = _map.find(name); + if (it != _map.end()) + return it->second != "false"; + else + return defaultValue; +} + + +void Attributes::set(const std::string& name, const std::string& value) +{ + _map[name] = value; +} + + +const std::string& Attributes::operator [] (const std::string& name) const +{ + AttrMap::const_iterator it = _map.find(name); + if (it != _map.end()) + return it->second; + else + throw Poco::NotFoundException(name); +} + + +std::string& Attributes::operator [] (const std::string& name) +{ + return _map[name]; +} + + +void Attributes::clear() +{ + _map.clear(); +} + + +} } // namespace Poco::CppParser diff --git a/CppParser/src/AttributesParser.cpp b/CppParser/src/AttributesParser.cpp new file mode 100644 index 000000000..9ec6bb3ba --- /dev/null +++ b/CppParser/src/AttributesParser.cpp @@ -0,0 +1,169 @@ +// +// AttributesParser.cpp +// +// $Id: //poco/1.3/CppParser/src/AttributesParser.cpp#1 $ +// +// Library: CppParser +// Package: Attributes +// Module: AttributesParser +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/CppParser/AttributesParser.h" +#include "Poco/CppParser/CppToken.h" +#include "Poco/Exception.h" + + +using Poco::Token; +using Poco::SyntaxException; + + +namespace Poco { +namespace CppParser { + + +AttributesParser::AttributesParser(Attributes& attrs, std::istream& istr): + _attrs(attrs), + _tokenizer(istr) +{ +} + + +AttributesParser::~AttributesParser() +{ +} + + +void AttributesParser::parse() +{ + const Token* pNext = next(); + if (!isEOF(pNext)) + { + pNext = parseAttributes(pNext); + } + if (!isEOF(pNext)) + throw Poco::SyntaxException("extra tokens found in attribute declaration"); +} + + +const Token* AttributesParser::parseAttributes(const Token* pNext) +{ + pNext = parseAttribute(pNext); + while (isOperator(pNext, OperatorToken::OP_COMMA) || isIdentifier(pNext)) + { + if (!isIdentifier(pNext)) pNext = next(); + pNext = parseAttribute(pNext); + } + return pNext; +} + + +const Token* AttributesParser::parseAttribute(const Token* pNext) +{ + std::string id; + std::string value; + pNext = parseIdentifier(pNext, id); + if (isOperator(pNext, OperatorToken::OP_ASSIGN)) + { + pNext = next(); + if (isOperator(pNext, OperatorToken::OP_OPENBRACE)) + { + pNext = parseComplexAttribute(pNext, id); + } + else if (isIdentifier(pNext) || isLiteral(pNext)) + { + value = pNext->asString(); + pNext = next(); + } + else throw SyntaxException("bad attribute declaration"); + } + setAttribute(id, value); + return pNext; +} + + +const Token* AttributesParser::parseComplexAttribute(const Token* pNext, const std::string& id) +{ + poco_assert_dbg (isOperator(pNext, OperatorToken::OP_OPENBRACE)); + + pNext = next(); + std::string oldId(_id); + if (!_id.empty()) + { + _id.append("."); + _id.append(id); + } + else _id = id; + pNext = parseAttributes(pNext); + _id = oldId; + if (isOperator(pNext, OperatorToken::OP_CLOSBRACE)) + pNext = next(); + else + throw SyntaxException("bad attribute declaration"); + + return pNext; +} + + +const Token* AttributesParser::parseIdentifier(const Token* pNext, std::string& id) +{ + if (isIdentifier(pNext)) + { + id = pNext->asString(); + pNext = next(); + while (isOperator(pNext, OperatorToken::OP_PERIOD)) + { + id.append("."); + pNext = next(); + if (isIdentifier(pNext)) + { + id.append(pNext->asString()); + pNext = next(); + } + else throw SyntaxException("identifier expected"); + } + return pNext; + } + else throw SyntaxException("identifier expected"); +} + + +void AttributesParser::setAttribute(const std::string& name, const std::string& value) +{ + std::string n; + if (!_id.empty()) + { + n.append(_id); + n.append("."); + } + n.append(name); + _attrs.set(n, value); +} + + +} } // namespace Poco::CppParser diff --git a/CppParser/src/CppToken.cpp b/CppParser/src/CppToken.cpp new file mode 100644 index 000000000..c7ad5ab9a --- /dev/null +++ b/CppParser/src/CppToken.cpp @@ -0,0 +1,749 @@ +// +// CppToken.cpp +// +// $Id: //poco/1.3/CppParser/src/CppToken.cpp#4 $ +// +// Library: CppParser +// Package: CppParser +// Module: CppToken +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/CppParser/CppToken.h" +#include "Poco/Exception.h" +#include +#include + + +using Poco::Token; +using Poco::SyntaxException; + + +namespace Poco { +namespace CppParser { + + +CppToken::CppToken() +{ +} + + +CppToken::~CppToken() +{ +} + + +void CppToken::syntaxError(const std::string& expected, const std::string& actual) +{ + std::string msg("expected: "); + msg.append(expected); + msg.append(", got: "); + msg.append(actual); + throw SyntaxException(msg); +} + + +OperatorToken::OperatorToken() +{ + int i = 1; + _opMap["["] = i++; + _opMap["]"] = i++; + _opMap["("] = i++; + _opMap[")"] = i++; + _opMap["{"] = i++; + _opMap["}"] = i++; + _opMap["<"] = i++; + _opMap["<="] = i++; + _opMap["<<"] = i++; + _opMap["<<="] = i++; + _opMap[">"] = i++; + _opMap[">="] = i++; + _opMap[">>"] = i++; + _opMap[">>="] = i++; + _opMap["="] = i++; + _opMap["=="] = i++; + _opMap["!"] = i++; + _opMap["!="] = i++; + _opMap["&"] = i++; + _opMap["&="] = i++; + _opMap["&&"] = i++; + _opMap["|"] = i++; + _opMap["|="] = i++; + _opMap["||"] = i++; + _opMap["^"] = i++; + _opMap["^="] = i++; + _opMap["~"] = i++; + _opMap["*"] = i++; + _opMap["*="] = i++; + _opMap["/"] = i++; + _opMap["/="] = i++; + _opMap["+"] = i++; + _opMap["+="] = i++; + _opMap["++"] = i++; + _opMap["-"] = i++; + _opMap["-="] = i++; + _opMap["--"] = i++; + _opMap["->"] = i++; + _opMap["%"] = i++; + _opMap["%="] = i++; + _opMap[","] = i++; + _opMap["."] = i++; + _opMap["..."] = i++; + _opMap[":"] = i++; + _opMap["::"] = i++; + _opMap[";"] = i++; + _opMap["?"] = i++; +} + + +OperatorToken::~OperatorToken() +{ +} + + +Token::Class OperatorToken::tokenClass() const +{ + return Token::OPERATOR_TOKEN; +} + + +bool OperatorToken::start(char c, std::istream& istr) +{ + _value = c; + char next = (char) istr.peek(); + switch (_value[0]) + { + case '[': + case ']': + case '(': + case ')': + case '{': + case '}': + case '<': + case '>': + case '=': + case '!': + case '&': + case '|': + case '*': + case '+': + case '-': + case '^': + case '~': + case ',': + case ':': + case ';': + case '%': + case '?': + return true; + case '.': + return !(next >= '0' && next <= '9'); + case '/': + return !(next == '/' || next == '*'); + default: + return false; + } +} + + +void OperatorToken::finish(std::istream& istr) +{ + int next = (char) istr.peek(); + switch (_value[0]) + { + case '(': + case ')': + case '{': + case '}': + case '[': + case ']': + case ';': + case '?': + case '~': + case ',': + break; + case '.': + if (next == '.') + { + _value += (char) istr.get(); + if (istr.peek() != '.') syntaxError(".", std::string(1, (char) istr.peek())); + _value += (char) istr.get(); + } + break; + case ':': + if (next == ':') _value += (char) istr.get(); + break; + case '<': + if (next == '<') + { + _value += (char) istr.get(); + next = (char) istr.peek(); + } + if (next == '=') _value += (char) istr.get(); + break; + case '>': + if (next == '>') + { + _value += (char) istr.get(); + next = (char) istr.peek(); + } + if (next == '=') _value += (char) istr.get(); + break; + case '&': + if (next == '&' || next == '=') _value += (char) istr.get(); + break; + case '|': + if (next == '|' || next == '=') _value += (char) istr.get(); + break; + case '+': + if (next == '+' || next == '=') _value += (char) istr.get(); + break; + case '-': + if (next == '-' || next == '=' || next == '>') _value += (char) istr.get(); + break; + case '=': + case '!': + case '*': + case '/': + case '^': + case '%': + if (next == '=') _value += (char) istr.get(); + break; + default: + poco_bugcheck(); + } +} + + +int OperatorToken::asInteger() const +{ + OpMap::const_iterator it = _opMap.find(_value); + if (it != _opMap.end()) + return it->second; + else + return 0; +} + + +IdentifierToken::IdentifierToken() +{ + int i = 1; + _kwMap["and"] = i++; + _kwMap["and_eq"] = i++; + _kwMap["asm"] = i++; + _kwMap["auto"] = i++; + _kwMap["bitand"] = i++; + _kwMap["bitor"] = i++; + _kwMap["bool"] = i++; + _kwMap["break"] = i++; + _kwMap["case"] = i++; + _kwMap["catch"] = i++; + _kwMap["char"] = i++; + _kwMap["class"] = i++; + _kwMap["compl"] = i++; + _kwMap["const"] = i++; + _kwMap["const_cast"] = i++; + _kwMap["continue"] = i++; + _kwMap["default"] = i++; + _kwMap["delete"] = i++; + _kwMap["do"] = i++; + _kwMap["double"] = i++; + _kwMap["dynamic_cast"] = i++; + _kwMap["else"] = i++; + _kwMap["enum"] = i++; + _kwMap["explicit"] = i++; + _kwMap["export"] = i++; + _kwMap["extern"] = i++; + _kwMap["false"] = i++; + _kwMap["float"] = i++; + _kwMap["for"] = i++; + _kwMap["friend"] = i++; + _kwMap["goto"] = i++; + _kwMap["if"] = i++; + _kwMap["inline"] = i++; + _kwMap["int"] = i++; + _kwMap["long"] = i++; + _kwMap["mutable"] = i++; + _kwMap["namespace"] = i++; + _kwMap["new"] = i++; + _kwMap["not"] = i++; + _kwMap["not_eq"] = i++; + _kwMap["operator"] = i++; + _kwMap["or"] = i++; + _kwMap["or_eq"] = i++; + _kwMap["private"] = i++; + _kwMap["protected"] = i++; + _kwMap["public"] = i++; + _kwMap["register"] = i++; + _kwMap["reinterpret_cast"] = i++; + _kwMap["return"] = i++; + _kwMap["short"] = i++; + _kwMap["signed"] = i++; + _kwMap["sizeof"] = i++; + _kwMap["static"] = i++; + _kwMap["static_cast"] = i++; + _kwMap["struct"] = i++; + _kwMap["switch"] = i++; + _kwMap["template"] = i++; + _kwMap["this"] = i++; + _kwMap["throw"] = i++; + _kwMap["true"] = i++; + _kwMap["try"] = i++; + _kwMap["typedef"] = i++; + _kwMap["typeid"] = i++; + _kwMap["typename"] = i++; + _kwMap["union"] = i++; + _kwMap["unsigned"] = i++; + _kwMap["using"] = i++; + _kwMap["virtual"] = i++; + _kwMap["void"] = i++; + _kwMap["volatile"] = i++; + _kwMap["wchar_t"] = i++; + _kwMap["while"] = i++; + _kwMap["xor"] = i++; + _kwMap["xor_eq"] = i++; +} + + +IdentifierToken::~IdentifierToken() +{ +} + + +Token::Class IdentifierToken::tokenClass() const +{ + return asInteger() ? Token::KEYWORD_TOKEN : Token::IDENTIFIER_TOKEN; +} + + +bool IdentifierToken::start(char c, std::istream& istr) +{ + _value = c; + return (c >= 'A' && c <= 'Z') || + (c >= 'a' && c <= 'z') || + (c == '_' || c == '$'); +} + + +void IdentifierToken::finish(std::istream& istr) +{ + int next = (char) istr.peek(); + while ((next >= 'A' && next <= 'Z') || + (next >= 'a' && next <= 'z') || + (next >= '0' && next <= '9') || + (next == '_' || next == '$')) + { + _value += (char) istr.get(); + next = istr.peek(); + } +} + + +int IdentifierToken::asInteger() const +{ + KWMap::const_iterator it = _kwMap.find(_value); + if (it != _kwMap.end()) + return it->second; + else + return 0; +} + + +StringLiteralToken::StringLiteralToken() +{ +} + + +StringLiteralToken::~StringLiteralToken() +{ +} + + +Token::Class StringLiteralToken::tokenClass() const +{ + return Token::STRING_LITERAL_TOKEN; +} + + +bool StringLiteralToken::start(char c, std::istream& istr) +{ + _value = c; + return c == '"'; +} + + +void StringLiteralToken::finish(std::istream& istr) +{ + int next = istr.peek(); + while (next != -1 && next != '"' && next != '\n' && next != '\r') + { + if (next == '\\') _value += (char) istr.get(); + _value += (char) istr.get(); + next = istr.peek(); + } + if (next == '"') + { + next = istr.get(); + _value += (char) next; + } + else throw SyntaxException("Unterminated string literal"); +} + + +std::string StringLiteralToken::asString() const +{ + std::string result; + std::string::const_iterator it = _value.begin(); + std::string::const_iterator end = _value.end(); + if (it != end) + { + if (*it == '"') ++it; + while (it != end && *it != '"') + { + if (*it == '\\') ++it; + if (it != end) result += *it++; + } + } + return result; +} + + +CharLiteralToken::CharLiteralToken() +{ +} + + +CharLiteralToken::~CharLiteralToken() +{ +} + + +Token::Class CharLiteralToken::tokenClass() const +{ + return Token::CHAR_LITERAL_TOKEN; +} + + +bool CharLiteralToken::start(char c, std::istream& istr) +{ + _value = c; + return c == '\''; +} + + +void CharLiteralToken::finish(std::istream& istr) +{ + int next = istr.peek(); + while (next != -1 && next != '\'' && next != '\n' && next != '\r') + { + if (next == '\\') _value += (char) istr.get(); + _value += (char) istr.get(); + next = istr.peek(); + } + if (next == '\'') + { + next = istr.get(); + _value += (char) next; + } + else throw SyntaxException("Unterminated character literal"); +} + + +char CharLiteralToken::asChar() const +{ + char result('\0'); + std::string::const_iterator it = _value.begin(); + std::string::const_iterator end = _value.end(); + if (it != end) + { + if (*it == '\'') ++it; + while (it != end && *it != '\'') + { + if (*it == '\\') ++it; + if (it != end) result = *it++; + } + } + return result; +} + + +NumberLiteralToken::NumberLiteralToken(): + _isFloat(false) +{ +} + + +NumberLiteralToken::~NumberLiteralToken() +{ +} + + +Token::Class NumberLiteralToken::tokenClass() const +{ + return _isFloat ? Token::FLOAT_LITERAL_TOKEN : Token::INTEGER_LITERAL_TOKEN; +} + + +bool NumberLiteralToken::start(char c, std::istream& istr) +{ + _value = c; + int next = istr.peek(); + return (c >= '0' && c <= '9') || + (c == '.' && next >= '0' && next <= '9'); +} + + +void NumberLiteralToken::finish(std::istream& istr) +{ + int next = istr.peek(); + _isFloat = false; + if (_value[0] != '.') // starts with digit + { + if (next == 'x') + { + _value += (char) istr.get(); + next = istr.peek(); + while (std::isxdigit(next)) + { + _value += (char) istr.get(); + next = istr.peek(); + } + while (next == 'L' || next == 'l' || next == 'U' || next == 'u') + { + _value += (char) istr.get(); + next = istr.peek(); + } + return; + } + while (next >= '0' && next <= '9') + { + _value += (char) istr.get(); + next = istr.peek(); + } + if (next == '.') + { + next = istr.get(); + next = istr.peek(); + if (next != '.') + { + _isFloat = true; + _value += '.'; + } + else // double period + { + istr.unget(); + } + } + } + else + { + _isFloat = true; + _value += istr.get(); + next = istr.peek(); + } + while (next >= '0' && next <= '9') + { + _value += (char) istr.get(); + next = istr.peek(); + } + if (next == 'e' || next == 'E') + { + _isFloat = true; + _value += (char) istr.get(); + next = istr.peek(); + if (next == '+' || next == '-') + { + _value += (char) istr.get(); + next = istr.peek(); + } + if (next >= '0' && next <= '9') + { + while (next >= '0' && next <= '9') + { + _value += (char) istr.get(); + next = istr.peek(); + } + } + else + { + std::string s(1, (char) next); + syntaxError("digit", s); + } + } + if (_isFloat) + { + if (next == 'L' || next == 'l' || next == 'F' || next == 'f') + _value += (char) istr.get(); + } + else + { + while (next == 'L' || next == 'l' || next == 'U' || next == 'u') + { + _value += (char) istr.get(); + next = istr.peek(); + } + } +} + + +int NumberLiteralToken::asInteger() const +{ + return static_cast(strtol(_value.c_str(), 0, 0)); + +} + + +double NumberLiteralToken::asFloat() const +{ + return strtod(_value.c_str(), 0); +} + + +CommentToken::CommentToken() +{ +} + + +CommentToken::~CommentToken() +{ +} + + +Token::Class CommentToken::tokenClass() const +{ + return (_value.length() > 2 && _value[2] == '/') ? Token::SPECIAL_COMMENT_TOKEN : Token::COMMENT_TOKEN; +} + + +bool CommentToken::start(char c, std::istream& istr) +{ + _value = c; + int next = istr.peek(); + return c == '/' && (next == '*' || next == '/'); +} + + +void CommentToken::finish(std::istream& istr) +{ + int next = istr.peek(); + if (next == '/') + { + while (next != -1 && next != '\r' && next != '\n') + { + _value += (char) istr.get(); + next = istr.peek(); + } + } + else + { + _value += (char) istr.get(); // * + next = istr.peek(); + while (next != -1) + { + next = istr.get(); + _value += (char) next; + if (next == '*' && istr.peek() == '/') + { + _value += (char) istr.get(); + break; + } + } + } +} + + +std::string CommentToken::asString() const +{ + if (_value.length() > 2 && _value[2] == '/') + return _value.substr(3); + else + return _value.substr(2); +} + + +PreprocessorToken::PreprocessorToken() +{ +} + + +PreprocessorToken::~PreprocessorToken() +{ +} + + +Token::Class PreprocessorToken::tokenClass() const +{ + return Token::PREPROCESSOR_TOKEN; +} + + +bool PreprocessorToken::start(char c, std::istream& istr) +{ + _value = c; + return c == '#'; +} + + +void PreprocessorToken::finish(std::istream& istr) +{ + int pb = -1; + int next = istr.peek(); + while (next != -1 && next != '\r' && next != '\n') + { + if (next == '\\') + { + istr.get(); + int p = istr.peek(); + if (p == '\r') + { + istr.get(); + if (istr.peek() == '\n') + p = istr.get(); + next = p; + } + else if (p == '\n') + { + next = p; + } + else + { + pb = next; + } + } + if (next != -1) + { + _value += (char) (pb != -1 ? pb : istr.get()); + next = istr.peek(); + pb = -1; + } + } +} + + +} } // namespace Poco::CppParser + diff --git a/CppParser/src/Decl.cpp b/CppParser/src/Decl.cpp new file mode 100644 index 000000000..721034442 --- /dev/null +++ b/CppParser/src/Decl.cpp @@ -0,0 +1,64 @@ +// +// Decl.cpp +// +// $Id: //poco/1.3/CppParser/src/Decl.cpp#2 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: Decl +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/CppParser/Decl.h" +#include "Poco/String.h" + + +namespace Poco { +namespace CppParser { + + +Decl::Decl(const std::string& decl, NameSpace* pNameSpace): + Symbol(extractName(decl), pNameSpace), + _decl(Poco::trim(decl)) +{ +} + + +Decl::~Decl() +{ +} + + +std::string Decl::toString() const +{ + return _decl; +} + + +} } // namespace Poco::CppParser + diff --git a/CppParser/src/Enum.cpp b/CppParser/src/Enum.cpp new file mode 100644 index 000000000..bb4f96402 --- /dev/null +++ b/CppParser/src/Enum.cpp @@ -0,0 +1,115 @@ +// +// Enum.cpp +// +// $Id: //poco/1.3/CppParser/src/Enum.cpp#1 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: Enum +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/CppParser/Enum.h" +#include "Poco/CppParser/EnumValue.h" +#include "Poco/NumberFormatter.h" +#include + + +using Poco::NumberFormatter; + + +namespace Poco { +namespace CppParser { + + +int Enum::_count = 0; + + +Enum::Enum(const std::string& name, NameSpace* pNameSpace): + Symbol(processName(name), pNameSpace) +{ +} + + +Enum::~Enum() +{ +} + + +void Enum::addValue(EnumValue* pValue) +{ + poco_check_ptr (pValue); + + _values.push_back(pValue); +} + + +Enum::Iterator Enum::begin() const +{ + return _values.begin(); +} + + +Enum::Iterator Enum::end() const +{ + return _values.end(); +} + + +std::string Enum::processName(const std::string& name) +{ + if (name.empty()) + { + std::string result("#AnonEnum"); + result.append(NumberFormatter::format0(_count++, 4)); + return result; + } + else return name; +} + + +Symbol::Kind Enum::kind() const +{ + return Symbol::SYM_ENUM; +} + + +std::string Enum::toString() const +{ + std::ostringstream ostr; + ostr << "enum " << name() << "\n{\n"; + for (Iterator it = begin(); it != end(); ++it) + { + ostr << "\t" << (*it)->toString() << "\n"; + } + ostr << "};"; + return ostr.str(); +} + + +} } // namespace Poco::CppParser diff --git a/CppParser/src/EnumValue.cpp b/CppParser/src/EnumValue.cpp new file mode 100644 index 000000000..177b8d10f --- /dev/null +++ b/CppParser/src/EnumValue.cpp @@ -0,0 +1,76 @@ +// +// EnumValue.cpp +// +// $Id: //poco/1.3/CppParser/src/EnumValue.cpp#1 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: EnumValue +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/CppParser/EnumValue.h" +#include "Poco/CppParser/Enum.h" + + +namespace Poco { +namespace CppParser { + + +EnumValue::EnumValue(const std::string& name, const std::string& value, Enum* pEnum): + Symbol(name, pEnum->nameSpace()), + _value(value) +{ + pEnum->addValue(this); +} + + +EnumValue::~EnumValue() +{ +} + + +Symbol::Kind EnumValue::kind() const +{ + return Symbol::SYM_ENUM_VALUE; +} + + +std::string EnumValue::toString() const +{ + std::string result(name()); + if (!_value.empty()) + { + result.append(" = "); + result.append(_value); + } + return result; +} + + +} } // namespace Poco::CppParser diff --git a/CppParser/src/Function.cpp b/CppParser/src/Function.cpp new file mode 100644 index 000000000..24ef7200f --- /dev/null +++ b/CppParser/src/Function.cpp @@ -0,0 +1,248 @@ +// +// Function.cpp +// +// $Id: //poco/1.3/CppParser/src/Function.cpp#3 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: Function +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/CppParser/Function.h" +#include "Poco/CppParser/Parameter.h" +#include "Poco/CppParser/NameSpace.h" +#include "Poco/CppParser/Struct.h" +#include "Poco/CppParser/Utility.h" +#include "Poco/String.h" +#include +#include +#include + + +namespace Poco { +namespace CppParser { + + +Function::Function(const std::string& decl, NameSpace* pNameSpace): + Decl(decl, pNameSpace), + _flags(0), + _retParam() +{ + if (hasAttr(decl, "static")) + _flags |= FN_STATIC; + if (hasAttr(decl, "virtual")) + _flags |= FN_VIRTUAL; + if (hasAttr(decl, "inline")) + _flags |= FN_INLINE; + if (hasAttr(decl, "template")) + _flags |= FN_TEMPLATE; + + if (isMethod() || isFunction()) + { + // parse the decl + std::size_t pos = decl.rfind(name()); + _retParam = decl.substr(0, pos-1); + // eliminate static, virtual, inline, template + _retParam = replace(_retParam, "static ", ""); + _retParam = replace(_retParam, "virtual ", ""); + _retParam = replace(_retParam, "inline ", ""); + if (_flags & FN_TEMPLATE) + { + std::size_t pos = _retParam.find(">"); + poco_assert (pos != std::string::npos); + _retParam = _retParam.substr(pos+1); + } + Poco::trimInPlace(_retParam); + } +} + + +Function::~Function() +{ + for (Parameters::iterator it = _params.begin(); it != _params.end(); ++it) + { + delete *it; + } +} + + +void Function::addParameter(Parameter* pParam) +{ + _params.push_back(pParam); +} + + +Function::Iterator Function::begin() const +{ + return _params.begin(); +} + + +Function::Iterator Function::end() const +{ + return _params.end(); +} + + +void Function::makeInline() +{ + _flags |= FN_INLINE; +} + + +void Function::makeConst() +{ + _flags |= FN_CONST; +} + + +void Function::makePureVirtual() +{ + _flags |= FN_PURE_VIRTUAL; +} + + +bool Function::isConstructor() const +{ + return name() == nameSpace()->name(); +} + + +bool Function::isDestructor() const +{ + return name()[0] == '~'; +} + + +bool Function::isMethod() const +{ + return !isConstructor() && !isDestructor() && nameSpace()->kind() == Symbol::SYM_STRUCT; +} + + +bool Function::isFunction() const +{ + return nameSpace()->kind() == Symbol::SYM_NAMESPACE; +} + + +int Function::countParameters() const +{ + return (int) _params.size(); +} + + +Symbol::Kind Function::kind() const +{ + return Symbol::SYM_FUNCTION; +} + + +std::string Function::signature() const +{ + std::string signature(declaration()); + if (signature.compare(0, 8, "virtual ") == 0) + signature.erase(0, 8); + else if (signature.compare(0, 7, "static ") == 0) + signature.erase(0, 8); + if (signature.compare(0, 7, "inline ") == 0) + signature.erase(0, 7); + signature += "("; + bool isFirst = true; + for (Iterator it = begin(); it != end(); ++it) + { + if (isFirst) + isFirst = false; + else + signature += ", "; + std::string arg = (*it)->declaration(); + std::string::size_type pos = arg.size() - 1; + while (pos > 0 && !std::isspace(arg[pos])) --pos; + while (pos > 0 && std::isspace(arg[pos])) --pos; + signature.append(arg, 0, pos + 1); + } + signature += ")"; + if (_flags & FN_CONST) + signature += " const"; + return signature; +} + + +bool Function::isVirtual() const +{ + if (_flags & FN_VIRTUAL) + { + return true; + } + else if (isDestructor()) + { + Struct* pClass = dynamic_cast(nameSpace()); + return pClass && pClass->hasVirtualDestructor(); + } + else return getOverridden() != 0; + return false; +} + + +Function* Function::getOverridden() const +{ + if (isMethod() && !(_flags & FN_STATIC)) + { + Struct* pClass = dynamic_cast(nameSpace()); + if (pClass) + { + for (Struct::BaseIterator it = pClass->baseBegin(); it != pClass->baseEnd(); ++it) + { + if (it->pClass) + { + Function* pOverridden = it->pClass->findFunction(signature()); + if (pOverridden && pOverridden->isVirtual()) + return pOverridden; + } + } + } + } + return 0; +} + + +std::string Function::toString() const +{ + std::ostringstream ostr; + ostr << Decl::toString() << "(\n"; + for (Iterator it = begin(); it != end(); ++it) + { + ostr << "\t" << (*it)->toString() << "\n"; + } + ostr << ");"; + return ostr.str(); +} + + +} } // namespace Poco::CppParser diff --git a/CppParser/src/NameSpace.cpp b/CppParser/src/NameSpace.cpp new file mode 100644 index 000000000..683854d7d --- /dev/null +++ b/CppParser/src/NameSpace.cpp @@ -0,0 +1,268 @@ +// +// Namespace.cpp +// +// $Id: //poco/1.3/CppParser/src/NameSpace.cpp#3 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: Namespace +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/CppParser/NameSpace.h" +#include "Poco/Exception.h" +#include +#include + + +using Poco::ExistsException; +using Poco::NotFoundException; + + +namespace Poco { +namespace CppParser { + + +NameSpace::NameSpace() +{ +} + + +NameSpace::NameSpace(const std::string& name, NameSpace* pNameSpace): + Symbol(name, pNameSpace) +{ +} + + +NameSpace::~NameSpace() +{ + for (SymbolTable::iterator it = _symbols.begin(); it != _symbols.end(); ++it) + { + delete it->second; + } +} + + +void NameSpace::addSymbol(Symbol* pSymbol) +{ + poco_check_ptr (pSymbol); + + _symbols.insert(SymbolTable::value_type(pSymbol->name(), pSymbol)); +} + + +void NameSpace::importSymbol(const std::string& fullName) +{ + std::string localName; + std::string::size_type pos = fullName.find_last_of(':'); + if (pos != std::string::npos && pos < fullName.size() - 1) + { + localName.assign(fullName, pos + 1, fullName.size() - pos - 1); + _importedSymbols[localName] = fullName; + } +} + + +void NameSpace::importNameSpace(const std::string& nameSpace) +{ + _importedNameSpaces.push_back(nameSpace); +} + + +NameSpace::Iterator NameSpace::begin() const +{ + return _symbols.begin(); +} + + +NameSpace::Iterator NameSpace::end() const +{ + return _symbols.end(); +} + + +Symbol* NameSpace::lookup(const std::string& name) const +{ + std::set alreadyVisited; + return lookup(name, alreadyVisited); +} + + +Symbol* NameSpace::lookup(const std::string& name, std::set& alreadyVisited) const +{ + Symbol* pSymbol = 0; + + if (name.empty()) + return pSymbol; + + if (alreadyVisited.find(this) != alreadyVisited.end()) + return pSymbol; + std::string head; + std::string tail; + splitName(name, head, tail); + + alreadyVisited.insert(this); + bool currentNSInserted = true; + + + if (head.empty()) + { + alreadyVisited.insert(this); + return root()->lookup(tail, alreadyVisited); + } + SymbolTable::const_iterator it = _symbols.find(head); + if (it != _symbols.end()) + { + pSymbol = it->second; + if (!tail.empty()) + { + alreadyVisited.insert(this); + NameSpace* pNS = dynamic_cast(pSymbol); + if (pNS) + pSymbol = static_cast(pSymbol)->lookup(tail, alreadyVisited); + else + pSymbol = 0; + } + } + else if (tail.empty()) + { + AliasMap::const_iterator itAlias = _importedSymbols.find(head); + if (itAlias != _importedSymbols.end()) + pSymbol = lookup(itAlias->second, alreadyVisited); + else + { + for (NameSpaceVec::const_iterator it = _importedNameSpaces.begin(); !pSymbol && it != _importedNameSpaces.end(); ++it) + { + Symbol* pNS = lookup(*it, alreadyVisited); + if (pNS && pNS->kind() == Symbol::SYM_NAMESPACE) + { + pSymbol = static_cast(pNS)->lookup(name, alreadyVisited); + } + } + } + } + NameSpace* pNS = nameSpace(); + if (!pSymbol && pNS && (alreadyVisited.find(pNS) == alreadyVisited.end())) + { + // if we have to go up, never push the NS! + if (currentNSInserted) + alreadyVisited.erase(this); + pSymbol = nameSpace()->lookup(name, alreadyVisited); + } + return pSymbol; +} + + +void NameSpace::nameSpaces(SymbolTable& table) const +{ + extract(Symbol::SYM_NAMESPACE, table); +} + + +void NameSpace::typeDefs(SymbolTable& table) const +{ + extract(Symbol::SYM_TYPEDEF, table); +} + + +void NameSpace::enums(SymbolTable& table) const +{ + extract(Symbol::SYM_ENUM, table); +} + + +void NameSpace::classes(SymbolTable& table) const +{ + extract(Symbol::SYM_STRUCT, table); +} + + +void NameSpace::functions(SymbolTable& table) const +{ + extract(Symbol::SYM_FUNCTION, table); +} + + +void NameSpace::variables(SymbolTable& table) const +{ + extract(Symbol::SYM_VARIABLE, table); +} + + +Symbol::Kind NameSpace::kind() const +{ + return Symbol::SYM_NAMESPACE; +} + + +std::string NameSpace::toString() const +{ + std::ostringstream ostr; + ostr << "namespace " << name() << "\n{\n"; + for (Iterator it = begin(); it != end(); ++it) + { + ostr << it->second->fullName() << "\n"; + ostr << it->second->toString() << "\n"; + } + ostr << "}\n"; + return ostr.str(); +} + + +void NameSpace::splitName(const std::string& name, std::string& head, std::string& tail) +{ + std::string::size_type pos = name.find(':'); + if (pos != std::string::npos) + { + head.assign(name, 0, pos); + pos += 2; + poco_assert (pos < name.length()); + tail.assign(name, pos, name.length() - pos); + } + else head = name; +} + + +NameSpace* NameSpace::root() +{ + static NameSpace root; + return &root; +} + + +void NameSpace::extract(Symbol::Kind kind, SymbolTable& table) const +{ + for (SymbolTable::const_iterator it = _symbols.begin(); it != _symbols.end(); ++it) + { + if (it->second->kind() == kind) + table.insert(*it); + } +} + + +} } // namespace Poco::CppParser diff --git a/CppParser/src/Parameter.cpp b/CppParser/src/Parameter.cpp new file mode 100644 index 000000000..81194a955 --- /dev/null +++ b/CppParser/src/Parameter.cpp @@ -0,0 +1,167 @@ +// +// Parameter.cpp +// +// $Id: //poco/1.3/CppParser/src/Parameter.cpp#3 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: Parameter +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/CppParser/Parameter.h" +#include "Poco/CppParser/NameSpace.h" +#include "Poco/CppParser/TypeDef.h" +#include "Poco/CppParser/Utility.h" +#include "Poco/String.h" +#include "Poco/NumberFormatter.h" +#include + + +namespace Poco { +namespace CppParser { + + +int Parameter::_count(0); + + +Parameter::Parameter(const std::string& decl, Function* pFunction): + Decl(handleDecl (decl), 0), // handle init values + _type(), + _isRef(false), + _isPointer(false), + _isConst(false) +{ + + std::size_t pos = declaration().rfind(name()); + + std::string tmp = declaration().substr(0, pos); + _type = Poco::trim(tmp); + std::size_t rightCut = _type.size(); + while (rightCut > 0 && (_type[rightCut-1] == '&' || _type[rightCut-1] == '*' || _type[rightCut-1] == '\t' || _type[rightCut-1] == ' ')) + { + if (_type[rightCut-1] == '&') + _isRef = true; + if (_type[rightCut-1] == '*') + _isPointer = true; + --rightCut; + } + _type = Poco::trim(_type.substr(0, rightCut)); + if (_type.find("const ") == 0) + { + _isConst = true; + _type = _type.substr(6); + } + if (_type.find("const\t") == 0) + { + _type = _type.substr(6); + _isConst = true; + } + + + Poco::trimInPlace(_type); + pos = decl.find("="); + _hasDefaultValue = (pos != std::string::npos); + if (_hasDefaultValue) + { + _defaultDecl = decl.substr(pos + 1); + Poco::trimInPlace(_defaultDecl); + std::size_t posStart = _defaultDecl.find("("); + std::size_t posEnd = _defaultDecl.rfind(")"); + if (posStart != std::string::npos && posEnd != std::string::npos) + { + _defaultValue = _defaultDecl.substr(posStart + 1, posEnd-posStart - 1); + } + else + { + poco_assert (posStart == std::string::npos && posEnd == std::string::npos); + _defaultValue = _defaultDecl; + } + Poco::trimInPlace(_defaultValue); + } +} + + +Parameter::~Parameter() +{ +} + + +Symbol::Kind Parameter::kind() const +{ + return Symbol::SYM_PARAMETER; +} + + +bool Parameter::vectorType(const std::string& type, NameSpace* pNS) +{ + bool ret = type.find("vector") != std::string::npos; + if (!ret) + { + Symbol* pSym = pNS->lookup(type); + if (pSym) + { + if (pSym->kind() == Symbol::SYM_TYPEDEF) + { + TypeDef* pType = static_cast(pSym); + ret = pType->declaration().find("vector") != std::string::npos; + } + } + } + return ret; +} + + +std::string Parameter::handleDecl(const std::string& decl) +{ + std::size_t pos = decl.find('='); + std::string result(decl.substr(0, pos)); + // now check if we have to add a paramName + Poco::trimInPlace(result); + std::size_t posSpace = result.rfind(' '); + bool mustAdd = false; + if (posSpace>0) + { + std::string tmp(result.substr(posSpace+1)); + mustAdd = (tmp.find('<') != -1 || tmp.find('>') != -1 || tmp.find('*') != -1 || tmp.find('&') != -1); + } + else + mustAdd = true; + if (mustAdd) + { + + result.append(" "); + result.append("param"); + result.append(Poco::NumberFormatter::format(++_count)); + //never add the default val it breaks the upper class parser + } + return result; +} + + +} } // namespace Poco::CppParser diff --git a/CppParser/src/Parser.cpp b/CppParser/src/Parser.cpp new file mode 100644 index 000000000..1a4182e9f --- /dev/null +++ b/CppParser/src/Parser.cpp @@ -0,0 +1,927 @@ +// +// Parser.cpp +// +// $Id: //poco/1.3/CppParser/src/Parser.cpp#7 $ +// +// Library: CppParser +// Package: CppParser +// Module: Parser +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/CppParser/Parser.h" +#include "Poco/CppParser/CppToken.h" +#include "Poco/CppParser/Decl.h" +#include "Poco/CppParser/Enum.h" +#include "Poco/CppParser/EnumValue.h" +#include "Poco/CppParser/Function.h" +#include "Poco/CppParser/NameSpace.h" +#include "Poco/CppParser/Parameter.h" +#include "Poco/CppParser/Struct.h" +#include "Poco/CppParser/TypeDef.h" +#include "Poco/CppParser/Variable.h" +#include "Poco/CppParser/AttributesParser.h" +#include "Poco/Path.h" +#include "Poco/String.h" +#include "Poco/NumberFormatter.h" +#include "Poco/Exception.h" +#include +#include + + +using Poco::Token; +using Poco::WhitespaceToken; +using Poco::Path; +using Poco::NumberFormatter; +using Poco::SyntaxException; +using Poco::icompare; +using Poco::trimInPlace; + + +namespace Poco { +namespace CppParser { + + +Parser::Parser(NameSpace::SymbolTable& gst, const std::string& file, std::istream& istr): + _gst(gst), + _istr(istr), + _tokenizer(_istr), + _file(file), + _inFile(false), + _pCurrentSymbol(0), + _access(Symbol::ACC_PUBLIC) +{ + Path p(file); + p.makeAbsolute(); + _path = p.toString(); + _currentPath = _path; + + _nsStack.push_back(NameSpace::root()); +} + + +Parser::~Parser() +{ +} + + +inline bool Parser::isIdentifier(const Token* pToken) +{ + return pToken->is(Token::IDENTIFIER_TOKEN) || isOperator(pToken, OperatorToken::OP_DBL_COLON); +} + + +inline bool Parser::isOperator(const Token* pToken, int kind) +{ + return pToken->is(Token::OPERATOR_TOKEN) && pToken->asInteger() == kind; +} + + +inline bool Parser::isKeyword(const Token* pToken, int kind) +{ + return pToken->is(Token::KEYWORD_TOKEN) && pToken->asInteger() == kind; +} + + +inline bool Parser::isEOF(const Token* pToken) +{ + return pToken->is(Token::EOF_TOKEN); +} + + +void Parser::expectOperator(const Token* pToken, int kind, const std::string& msg) +{ + if (!isOperator(pToken, kind)) + syntaxError(msg + ", found " + pToken->tokenString()); +} + + +void Parser::syntaxError(const std::string& msg) +{ + throw SyntaxException("Expected", msg); +} + + +inline void Parser::append(std::string& decl, const std::string& token) +{ + if (!decl.empty()) + { + char last = decl[decl.length() - 1]; + if (token != "::" && + token != "." && + token != ")" && + token != "->" && + token != "," && + token != "[" && + token != "]" && + last != '~' && + last != ':' && + last != '(' && + last != ')' && + last != '[' && + last != ']' && + last != ' ' + ) + decl.append(" "); + } + decl.append(token); + if (token == "const" + || token == "static" + || token == "mutable" + || token == "inline" + || token == "volatile" + || token == "register") + decl.append(" "); +} + + +inline void Parser::append(std::string& decl, const Token* pToken) +{ + poco_check_ptr (pToken); + append(decl, pToken->tokenString()); +} + + +void Parser::parse() +{ + try + { + const Token* pNext = next(); + pNext = parseFile(pNext); + if (!isEOF(pNext)) + syntaxError("Additional tokens behind supposed EOF"); + } + catch (SyntaxException& exc) + { + std::string m(exc.message()); + std::string where(_currentPath); + where.append("("); + where.append(NumberFormatter::format(_istr.getCurrentLineNumber())); + where.append(")"); + throw SyntaxException(m, where); + } +} + + +const Token* Parser::parseFile(const Token* pNext) +{ + while (pNext->is(Token::IDENTIFIER_TOKEN) || pNext->is(Token::KEYWORD_TOKEN)) + { + switch (pNext->asInteger()) + { + case IdentifierToken::KW_NAMESPACE: + pNext = parseNameSpace(pNext); + break; + case IdentifierToken::KW_STRUCT: + case IdentifierToken::KW_CLASS: + pNext = parseClass(pNext); + break; + case IdentifierToken::KW_TEMPLATE: + pNext = parseTemplate(pNext); + break; + case IdentifierToken::KW_TYPEDEF: + pNext = parseTypeDef(pNext); + break; + case IdentifierToken::KW_USING: + pNext = parseUsing(pNext); + break; + case IdentifierToken::KW_ENUM: + pNext = parseEnum(pNext); + break; + default: + pNext = parseVarFunc(pNext); + } + } + return pNext; +} + + +const Token* Parser::parseNameSpace(const Token* pNext) +{ + poco_assert (isKeyword(pNext, IdentifierToken::KW_NAMESPACE)); + + pNext = next(); + if (pNext->is(Token::IDENTIFIER_TOKEN)) + { + _access = Symbol::ACC_PUBLIC; + std::string name = pNext->tokenString(); + pNext = next(); + expectOperator(pNext, OperatorToken::OP_OPENBRACE, "{"); + NameSpace* pNS = dynamic_cast(currentNameSpace()->lookup(name)); + bool undefined = (pNS == 0); + if (undefined) pNS = new NameSpace(name, currentNameSpace()); + pushNameSpace(pNS, -1, undefined); + pNext = next(); + while (pNext->is(Token::IDENTIFIER_TOKEN) || pNext->is(Token::KEYWORD_TOKEN)) + { + switch (pNext->asInteger()) + { + case IdentifierToken::KW_NAMESPACE: + pNext = parseNameSpace(pNext); + break; + case IdentifierToken::KW_STRUCT: + case IdentifierToken::KW_CLASS: + pNext = parseClass(pNext); + break; + case IdentifierToken::KW_TEMPLATE: + pNext = parseTemplate(pNext); + break; + case IdentifierToken::KW_TYPEDEF: + pNext = parseTypeDef(pNext); + break; + case IdentifierToken::KW_USING: + pNext = parseUsing(pNext); + break; + case IdentifierToken::KW_ENUM: + pNext = parseEnum(pNext); + break; + default: + pNext = parseVarFunc(pNext); + } + } + expectOperator(pNext, OperatorToken::OP_CLOSBRACE, "}"); + pNext = next(); + } + else syntaxError("namespace name"); + popNameSpace(); + return pNext; +} + + +const Token* Parser::parseClass(const Token* pNext) +{ + std::string decl; + return parseClass(pNext, decl); +} + + +const Token* Parser::parseClass(const Token* pNext, std::string& decl) +{ + poco_assert (isKeyword(pNext, IdentifierToken::KW_CLASS) || isKeyword(pNext, IdentifierToken::KW_STRUCT)); + + _pCurrentSymbol = 0; + bool isClass = isKeyword(pNext, IdentifierToken::KW_CLASS); + int line = _istr.getCurrentLineNumber(); + Symbol::Access prevAccess = _access; + append(decl, pNext); + Symbol::Access access; + if (isKeyword(pNext, IdentifierToken::KW_CLASS)) + access = Symbol::ACC_PRIVATE; + else + access = Symbol::ACC_PUBLIC; + pNext = next(); + if (pNext->is(Token::IDENTIFIER_TOKEN)) + append(decl, pNext); + else + syntaxError("class/struct name"); + pNext = next(); + if (!isOperator(pNext, OperatorToken::OP_SEMICOLON)) + { + // if we have a template specialization the next token will be a < + if (isOperator(pNext, OperatorToken::OP_LT)) + { + // skip all template specializations + // skip until at { bracket, then parseBlock to ignore it + while (!isOperator(pNext, OperatorToken::OP_OPENBRACE)) + pNext = next(); + pNext = parseBlock(pNext); // skip after } + + expectOperator(pNext, OperatorToken::OP_SEMICOLON, ";"); + pNext = next(); + _access = prevAccess; + _pCurrentSymbol = 0; + return pNext; + } + if (isOperator(pNext, OperatorToken::OP_COLON) || isOperator(pNext, OperatorToken::OP_OPENBRACE)) + { + Struct* pClass = new Struct(decl, isClass, currentNameSpace()); + pushNameSpace(pClass, line); + _access = access; + if (isOperator(pNext, OperatorToken::OP_COLON)) + pNext = parseBaseClassList(next(), pClass); + expectOperator(pNext, OperatorToken::OP_OPENBRACE, "{"); + pNext = parseClassMembers(pNext, pClass); + expectOperator(pNext, OperatorToken::OP_CLOSBRACE, "}"); + pNext = next(); + expectOperator(pNext, OperatorToken::OP_SEMICOLON, ";"); + popNameSpace(); + } + else return parseVarFunc(pNext, decl); + } + pNext = next(); + _access = prevAccess; + _pCurrentSymbol = 0; + return pNext; +} + + +const Token* Parser::parseBaseClassList(const Token* pNext, Struct* pClass) +{ + while (pNext->is(Token::IDENTIFIER_TOKEN) || pNext->is(Token::KEYWORD_TOKEN)) + { + bool isVirtual = false; + Symbol::Access acc = _access; + while (pNext->is(Token::KEYWORD_TOKEN)) + { + switch (pNext->asInteger()) + { + case IdentifierToken::KW_PUBLIC: + acc = Symbol::ACC_PUBLIC; + break; + case IdentifierToken::KW_PROTECTED: + acc = Symbol::ACC_PROTECTED; + break; + case IdentifierToken::KW_PRIVATE: + acc = Symbol::ACC_PRIVATE; + break; + case IdentifierToken::KW_VIRTUAL: + isVirtual = true; + break; + default: + syntaxError("public, protected, private or virtual"); + } + pNext = next(); + } + std::string id; + pNext = parseIdentifier(pNext, id); + if (isOperator(pNext, OperatorToken::OP_LT)) + pNext = parseTemplateArgs(pNext, id); + pClass->addBase(id, acc, isVirtual); + if (isOperator(pNext, OperatorToken::OP_COMMA)) + pNext = next(); + } + return pNext; +} + + +const Token* Parser::parseClassMembers(const Token* pNext, Struct* pClass) +{ + poco_assert (isOperator(pNext, OperatorToken::OP_OPENBRACE)); + + pNext = next(); + while (pNext->is(Token::IDENTIFIER_TOKEN) || pNext->is(Token::KEYWORD_TOKEN) || isOperator(pNext, OperatorToken::OP_COMPL)) + { + switch (pNext->asInteger()) + { + case IdentifierToken::KW_PRIVATE: + case IdentifierToken::KW_PROTECTED: + case IdentifierToken::KW_PUBLIC: + pNext = parseAccess(pNext); + break; + case IdentifierToken::KW_STRUCT: + case IdentifierToken::KW_CLASS: + pNext = parseClass(pNext); + break; + case IdentifierToken::KW_TEMPLATE: + pNext = parseTemplate(pNext); + break; + case IdentifierToken::KW_TYPEDEF: + pNext = parseTypeDef(pNext); + break; + case IdentifierToken::KW_ENUM: + pNext = parseEnum(pNext); + break; + case IdentifierToken::KW_FRIEND: + pNext = parseFriend(pNext); + break; + case OperatorToken::OP_COMPL: + default: + pNext = parseVarFunc(pNext); + } + } + return pNext; +} + + +const Token* Parser::parseAccess(const Token* pNext) +{ + switch (pNext->asInteger()) + { + case IdentifierToken::KW_PRIVATE: + _access = Symbol::ACC_PRIVATE; + break; + case IdentifierToken::KW_PROTECTED: + _access = Symbol::ACC_PROTECTED; + break; + case IdentifierToken::KW_PUBLIC: + _access = Symbol::ACC_PUBLIC; + break; + } + pNext = next(); + expectOperator(pNext, OperatorToken::OP_COLON, ":"); + return next(); +} + + +const Token* Parser::parseTemplate(const Token* pNext) +{ + poco_assert (isKeyword(pNext, IdentifierToken::KW_TEMPLATE)); + + std::string decl; + append(decl, pNext); + pNext = next(); + expectOperator(pNext, OperatorToken::OP_LT, "<"); + pNext = parseTemplateArgs(pNext, decl); + if (isKeyword(pNext, IdentifierToken::KW_CLASS) || isKeyword(pNext, IdentifierToken::KW_STRUCT)) + return parseClass(pNext, decl); + else + return parseVarFunc(pNext, decl); +} + + +const Token* Parser::parseTemplateArgs(const Token* pNext, std::string& decl) +{ + poco_assert (isOperator(pNext, OperatorToken::OP_LT)); + + append(decl, pNext); + int depth = 1; + pNext = next(); + while (depth > 0 && !isEOF(pNext)) + { + append(decl, pNext); + if (isOperator(pNext, OperatorToken::OP_LT)) + ++depth; + else if (isOperator(pNext, OperatorToken::OP_GT)) + --depth; + pNext = next(); + } + return pNext; +} + + +const Token* Parser::parseTypeDef(const Token* pNext) +{ + poco_assert (isKeyword(pNext, IdentifierToken::KW_TYPEDEF)); + + _pCurrentSymbol = 0; + int line = _istr.getCurrentLineNumber(); + std::string decl; + while (!isOperator(pNext, OperatorToken::OP_SEMICOLON) && !isEOF(pNext)) + { + append(decl, pNext); + pNext = next(); + } + TypeDef* pTypeDef = new TypeDef(decl, currentNameSpace()); + addSymbol(pTypeDef, line); + pNext = next(); + _pCurrentSymbol = 0; + return pNext; +} + + +const Token* Parser::parseUsing(const Token* pNext) +{ + poco_assert (isKeyword(pNext, IdentifierToken::KW_USING)); + + pNext = next(); + if (isKeyword(pNext, IdentifierToken::KW_NAMESPACE)) + { + pNext = next(); + if (isIdentifier(pNext)) + { + std::string ns; + pNext = parseIdentifier(pNext, ns); + currentNameSpace()->importNameSpace(ns); + } + else syntaxError("identifier"); + } + else + { + if (isIdentifier(pNext)) + { + std::string id; + pNext = parseIdentifier(pNext, id); + currentNameSpace()->importSymbol(id); + } + } + + if (!isOperator(pNext, OperatorToken::OP_SEMICOLON)) + syntaxError("semicolon"); + return next(); +} + + +const Token* Parser::parseFriend(const Token* pNext) +{ + poco_assert (isKeyword(pNext, IdentifierToken::KW_FRIEND)); + + pNext = next(); + + while (!isOperator(pNext, OperatorToken::OP_SEMICOLON) && !isEOF(pNext)) + pNext = next(); + + if (isOperator(pNext, OperatorToken::OP_SEMICOLON)) + pNext = next(); + return pNext; +} + + +const Token* Parser::parseVarFunc(const Token* pNext) +{ + std::string decl; + return parseVarFunc(pNext, decl); +} + + +const Token* Parser::parseVarFunc(const Token* pNext, std::string& decl) +{ + _pCurrentSymbol = 0; + if (isKeyword(pNext, IdentifierToken::KW_EXTERN)) + { + pNext = parseExtern(pNext); + } + else + { + append(decl, pNext); + pNext = next(); + bool isOp = false; + while (!isOperator(pNext, OperatorToken::OP_SEMICOLON) && !isOperator(pNext, OperatorToken::OP_OPENPARENT) && !isEOF(pNext)) + { + append(decl, pNext); + isOp = isKeyword(pNext, IdentifierToken::KW_OPERATOR); + pNext = next(); + } + if (isOperator(pNext, OperatorToken::OP_SEMICOLON)) + { + std::string name = Symbol::extractName(decl); + if (!currentNameSpace()->lookup(name)) + { + Variable* pVar = new Variable(decl, currentNameSpace()); + addSymbol(pVar, _istr.getCurrentLineNumber()); + } + pNext = next(); + } + else if (isOperator(pNext, OperatorToken::OP_OPENPARENT)) + { + if (isOp) + { + decl += " ("; + pNext = next(); + expectOperator(pNext, OperatorToken::OP_CLOSPARENT, ")"); + append(decl, pNext); + pNext = next(); + expectOperator(pNext, OperatorToken::OP_OPENPARENT, "("); + } + pNext = parseFunc(pNext, decl); + } + } + _pCurrentSymbol = 0; + return pNext; +} + + +const Token* Parser::parseExtern(const Token* pNext) +{ + poco_assert (isKeyword(pNext, IdentifierToken::KW_EXTERN)); + + pNext = next(); + if (pNext->is(Token::STRING_LITERAL_TOKEN)) + pNext = next(); + if (isOperator(pNext, OperatorToken::OP_OPENBRACE)) + { + pNext = parseBlock(pNext); + } + else + { + while (!isOperator(pNext, OperatorToken::OP_SEMICOLON) && !isEOF(pNext)) + pNext = next(); + } + if (isOperator(pNext, OperatorToken::OP_SEMICOLON)) + pNext = next(); + return pNext; +} + + +const Token* Parser::parseFunc(const Token* pNext, std::string& decl) +{ + poco_assert (isOperator(pNext, OperatorToken::OP_OPENPARENT)); + + int line = _istr.getCurrentLineNumber(); + Function* pFunc = 0; + std::string name = Symbol::extractName(decl); + if (name.find(':') == std::string::npos) + { + pFunc = new Function(decl, currentNameSpace()); + addSymbol(pFunc, line); + } + pNext = parseParameters(pNext, pFunc); + expectOperator(pNext, OperatorToken::OP_CLOSPARENT, ")"); + pNext = next(); + if (isKeyword(pNext, IdentifierToken::KW_CONST)) + { + if (pFunc) pFunc->makeConst(); + pNext = next(); + } + if (isKeyword(pNext, IdentifierToken::KW_THROW)) + { + while (!isOperator(pNext, OperatorToken::OP_ASSIGN) && !isOperator(pNext, OperatorToken::OP_SEMICOLON) && + !isOperator(pNext, OperatorToken::OP_OPENBRACE) && !isEOF(pNext)) + pNext = next(); + } + if (isOperator(pNext, OperatorToken::OP_ASSIGN)) + { + pNext = next(); + if (!pNext->is(Token::INTEGER_LITERAL_TOKEN)) + syntaxError("0"); + pNext = next(); + if (pFunc) pFunc->makePureVirtual(); + expectOperator(pNext, OperatorToken::OP_SEMICOLON, ";"); + } + else if (isOperator(pNext, OperatorToken::OP_OPENBRACE) || isOperator(pNext, OperatorToken::OP_COLON)) + { + while (!isOperator(pNext, OperatorToken::OP_OPENBRACE) && !isEOF(pNext)) + pNext = next(); + + pNext = parseBlock(pNext); + if (!pFunc) + pFunc = dynamic_cast(currentNameSpace()->lookup(name)); + if (pFunc) + pFunc->makeInline(); + } + else + { + expectOperator(pNext, OperatorToken::OP_SEMICOLON, ";"); + } + if (isOperator(pNext, OperatorToken::OP_SEMICOLON)) + pNext = next(); + return pNext; +} + + +const Token* Parser::parseParameters(const Token* pNext, Function* pFunc) +{ + poco_assert (isOperator(pNext, OperatorToken::OP_OPENPARENT)); + + pNext = next(); + while (!isOperator(pNext, OperatorToken::OP_CLOSPARENT) && !isEOF(pNext)) + { + std::string decl; + int depth = 0; + while ((depth > 0 || (!isOperator(pNext, OperatorToken::OP_CLOSPARENT) && !isOperator(pNext, OperatorToken::OP_COMMA))) && !isEOF(pNext)) + { + append(decl, pNext); + if (isOperator(pNext, OperatorToken::OP_OPENPARENT)) + ++depth; + else if (isOperator(pNext, OperatorToken::OP_CLOSPARENT)) + --depth; + pNext = next(); + } + if (isOperator(pNext, OperatorToken::OP_COMMA)) + pNext = next(); + if (pFunc && decl != "void") // don't add the void parameter, I simply check here to avoid throwing away void* + pFunc->addParameter(new Parameter(decl, pFunc)); + } + return pNext; +} + + +const Token* Parser::parseBlock(const Token* pNext) +{ + poco_assert (isOperator(pNext, OperatorToken::OP_OPENBRACE)); + + pNext = next(); + int depth = 1; + while (depth > 0 && !isEOF(pNext)) + { + if (isOperator(pNext, OperatorToken::OP_OPENBRACE)) + ++depth; + else if (isOperator(pNext, OperatorToken::OP_CLOSBRACE)) + --depth; + pNext = next(); + } + return pNext; +} + + +const Token* Parser::parseEnum(const Token* pNext) +{ + poco_assert (isKeyword(pNext, IdentifierToken::KW_ENUM)); + + _pCurrentSymbol = 0; + int line = _istr.getCurrentLineNumber(); + pNext = next(); + std::string name; + if (pNext->is(Token::IDENTIFIER_TOKEN)) + { + name = pNext->tokenString(); + pNext = next(); + } + expectOperator(pNext, OperatorToken::OP_OPENBRACE, "{"); + Enum* pEnum = new Enum(name, currentNameSpace()); + addSymbol(pEnum, line); + pNext = next(); + while (pNext->is(Token::IDENTIFIER_TOKEN)) + { + pNext = parseEnumValue(pNext, pEnum); + } + expectOperator(pNext, OperatorToken::OP_CLOSBRACE, "}"); + pNext = next(); + expectOperator(pNext, OperatorToken::OP_SEMICOLON, ";"); + pNext = next(); + _pCurrentSymbol = 0; + return pNext; +} + + +const Token* Parser::parseEnumValue(const Token* pNext, Enum* pEnum) +{ + _pCurrentSymbol = 0; + _doc.clear(); + int line = _istr.getCurrentLineNumber(); + std::string name = pNext->tokenString(); + std::string value; + pNext = next(); + if (isOperator(pNext, OperatorToken::OP_ASSIGN)) + { + pNext = next(); + while (!isOperator(pNext, OperatorToken::OP_COMMA) && !isOperator(pNext, OperatorToken::OP_CLOSBRACE) && !isEOF(pNext)) + { + append(value, pNext); + pNext = next(); + } + } + EnumValue* pValue = new EnumValue(name, value, pEnum); + addSymbol(pValue, line, true); + if (isOperator(pNext, OperatorToken::OP_COMMA)) + pNext = next(); + else if (!isOperator(pNext, OperatorToken::OP_CLOSBRACE)) + syntaxError(", or }"); + return pNext; +} + + +const Token* Parser::parseIdentifier(const Token* pNext, std::string& id) +{ + poco_assert (pNext->is(Token::IDENTIFIER_TOKEN) || isOperator(pNext, OperatorToken::OP_DBL_COLON)); + id.append(pNext->tokenString()); + if (isOperator(pNext, OperatorToken::OP_DBL_COLON)) + { + pNext = next(); + if (!pNext->is(Token::IDENTIFIER_TOKEN)) syntaxError("identifier"); + id.append(pNext->tokenString()); + } + pNext = next(); + while (isOperator(pNext, OperatorToken::OP_DBL_COLON)) + { + id.append("::"); + pNext = next(); + if (!pNext->is(Token::IDENTIFIER_TOKEN)) syntaxError("identifier"); + id.append(pNext->tokenString()); + pNext = next(); + } + return pNext; +} + + +void Parser::addSymbol(Symbol* pSymbol, int lineNumber, bool addGST) +{ + pSymbol->setLineNumber(lineNumber); + pSymbol->setFile(_currentPath); + pSymbol->setPackage(_package); + pSymbol->setLibrary(_library); + pSymbol->setAccess(_access); + _pCurrentSymbol = pSymbol; + if (addGST) + _gst.insert(NameSpace::SymbolTable::value_type(pSymbol->name(), pSymbol)); + if (!_doc.empty()) + pSymbol->addDocumentation(_doc); + if (!_attrs.empty()) + { + Attributes attrs; + std::istringstream istr(_attrs); + AttributesParser parser(attrs, istr); + parser.parse(); + pSymbol->setAttributes(attrs); + _attrs.clear(); + } + _doc.clear(); +} + + +void Parser::pushNameSpace(NameSpace* pNameSpace, int lineNumber, bool addGST) +{ + addSymbol(pNameSpace, lineNumber, addGST); + _nsStack.push_back(pNameSpace); +} + + +void Parser::popNameSpace() +{ + _nsStack.pop_back(); +} + + +NameSpace* Parser::currentNameSpace() const +{ + return _nsStack.back(); +} + + +const Token* Parser::next() +{ + const Token* pNext = nextPreprocessed(); + while (!_inFile && !isEOF(pNext)) + pNext = nextPreprocessed(); + return pNext; +} + + +const Token* Parser::nextPreprocessed() +{ + const Token* pNext = nextToken(); + while (pNext->is(Token::PREPROCESSOR_TOKEN)) + { + std::istringstream pps(pNext->tokenString()); + pps.get(); + Tokenizer ppt(pps); + const Token* pPPT = ppt.next(); + if (pPPT->tokenString() == "line" || pPPT->is(Token::INTEGER_LITERAL_TOKEN)) + { + if (!pPPT->is(Token::INTEGER_LITERAL_TOKEN)) + pPPT = ppt.next(); + int line = pPPT->asInteger(); + _istr.setCurrentLineNumber(line); + pPPT = ppt.next(); + if (pPPT->is(Token::STRING_LITERAL_TOKEN)) + { + std::string path = pPPT->asString(); + Path p(path); + p.makeAbsolute(); + _currentPath = p.toString(); + _inFile = (icompare(_path, _currentPath) == 0); + } + } + pNext = nextToken(); + } + return pNext; +} + + +const Token* Parser::nextToken() +{ + const Token* pNext = _tokenizer.next(); + while (pNext->is(Token::COMMENT_TOKEN) || pNext->is(Token::SPECIAL_COMMENT_TOKEN)) + { + if (pNext->is(Token::SPECIAL_COMMENT_TOKEN)) + { + if (_pCurrentSymbol) + { + _pCurrentSymbol->addDocumentation(pNext->asString()); + _doc.clear(); + } + else if (_inFile) + { + if (!_doc.empty()) _doc += "\n"; + _doc += pNext->asString(); + } + } + else if (pNext->is(Token::COMMENT_TOKEN) && _inFile) + { + const std::string& comment = pNext->tokenString(); + if (comment.compare(0, 3, "//@") == 0) + { + _attrs.append(comment.substr(3)); + } + else if (comment.compare(0, 11, "// Package:") == 0) + { + _package = comment.substr(11); + trimInPlace(_package); + } + else if (comment.compare(0, 11, "// Library:") == 0) + { + _library = comment.substr(11); + trimInPlace(_library); + } + } + pNext = _tokenizer.next(); + } + return pNext; +} + + +} } // namespace Poco::CppParser diff --git a/CppParser/src/Struct.cpp b/CppParser/src/Struct.cpp new file mode 100644 index 000000000..2baf77dbd --- /dev/null +++ b/CppParser/src/Struct.cpp @@ -0,0 +1,277 @@ +// +// Struct.cpp +// +// $Id: //poco/1.3/CppParser/src/Struct.cpp#2 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: Struct +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/CppParser/Struct.h" +#include "Poco/CppParser/Function.h" +#include "Poco/String.h" +#include +#include +#include + + +namespace Poco { +namespace CppParser { + + +Struct::Struct(const std::string& decl, bool isClass, NameSpace* pNameSpace): + NameSpace(extractName(decl), pNameSpace), + _decl(decl), + _flags(0), + _isClass(isClass) +{ + std::size_t pos = decl.find("template"); + if (pos != std::string::npos) + { + _flags |= FN_TEMPLATE; + std::size_t templTypeStart = decl.find("<", pos); + std::size_t templTypeEnd = decl.find(">", templTypeStart); + if (templTypeStart != std::string::npos && templTypeEnd != std::string::npos) + { + std::string templParam = decl.substr(templTypeStart+1, templTypeEnd-templTypeStart-1); + Poco::trimInPlace(templParam); + if (templParam.empty()) + _flags |= FN_TEMPLATE_SPECIALIZATION; + } + } +} + + +Struct::~Struct() +{ +} + + +void Struct::addBase(const std::string& name, Symbol::Access access, bool isVirtual) +{ + Base base; + base.name = name; + base.access = access; + base.isVirtual = isVirtual; + base.pClass = 0; + _bases.push_back(base); +} + + +Struct::BaseIterator Struct::baseBegin() const +{ + return _bases.begin(); +} + + +Struct::BaseIterator Struct::baseEnd() const +{ + return _bases.end(); +} + + +void Struct::addDerived(Struct* pClass) +{ + poco_check_ptr (pClass); + + _derived.push_back(pClass); +} + + +void Struct::fixupBases() +{ + for (BaseClasses::iterator it = _bases.begin(); it != _bases.end(); ++it) + { + it->pClass = dynamic_cast(lookup(it->name)); + if (it->pClass) + it->pClass->addDerived(this); + } +} + + +Struct::DerivedIterator Struct::derivedBegin() const +{ + return _derived.begin(); +} + + +Struct::DerivedIterator Struct::derivedEnd() const +{ + return _derived.end(); +} + + +namespace +{ + struct CPLT + { + bool operator() (const Function* pF1, const Function* pF2) const + { + int pc1 = pF1->countParameters(); + int pc2 = pF2->countParameters(); + return pc1 < pc2; + } + }; +}; + + +void Struct::constructors(Functions& functions) const +{ + for (NameSpace::Iterator it = begin(); it != end(); ++it) + { + Function* pFunc = dynamic_cast(it->second); + if (pFunc && pFunc->isConstructor()) + functions.push_back(pFunc); + } + std::sort(functions.begin(), functions.end(), CPLT()); +} + + +void Struct::bases(std::set& bases) const +{ + for (BaseIterator it = baseBegin(); it != baseEnd(); ++it) + { + if (it->pClass) + { + bases.insert(it->pClass->fullName()); + it->pClass->bases(bases); + } + else bases.insert(it->name); + } +} + + +Function* Struct::destructor() const +{ + for (NameSpace::Iterator it = begin(); it != end(); ++it) + { + Function* pFunc = dynamic_cast(it->second); + if (pFunc && pFunc->isDestructor()) + return pFunc; + } + return 0; +} + + +void Struct::methods(Symbol::Access access, Functions& functions) const +{ + for (NameSpace::Iterator it = begin(); it != end(); ++it) + { + Function* pFunc = dynamic_cast(it->second); + if (pFunc && pFunc->getAccess() == access && pFunc->isMethod()) + functions.push_back(pFunc); + } +} + + +void Struct::inheritedMethods(FunctionSet& functions) const +{ + for (BaseIterator it = baseBegin(); it != baseEnd(); ++it) + { + Struct* pBase = it->pClass; + if (pBase) + { + for (NameSpace::Iterator itm = pBase->begin(); itm != pBase->end(); ++itm) + { + Function* pFunc = dynamic_cast(itm->second); + if (pFunc && pFunc->getAccess() != Symbol::ACC_PRIVATE && pFunc->isMethod()) + functions.insert(pFunc); + } + pBase->inheritedMethods(functions); + } + } +} + + +void Struct::derived(StructSet& derived) const +{ + for (DerivedIterator it = derivedBegin(); it != derivedEnd(); ++it) + { + derived.insert(*it); + (*it)->derived(derived); + } +} + + +Symbol::Kind Struct::kind() const +{ + return Symbol::SYM_STRUCT; +} + + +Function* Struct::findFunction(const std::string& signature) const +{ + for (NameSpace::Iterator it = begin(); it != end(); ++it) + { + Function* pFunc = dynamic_cast(it->second); + if (pFunc && pFunc->signature() == signature) + return pFunc; + } + for (BaseIterator it = baseBegin(); it != baseEnd(); ++it) + { + if (it->pClass) + { + Function* pFunc = it->pClass->findFunction(signature); + if (pFunc) return pFunc; + } + } + return 0; +} + + +bool Struct::hasVirtualDestructor() const +{ + Function* pFunc = destructor(); + if (pFunc && (pFunc->flags() & Function::FN_VIRTUAL)) + return true; + for (BaseIterator it = baseBegin(); it != baseEnd(); ++it) + { + if (it->pClass && it->pClass->hasVirtualDestructor()) + return true; + } + return false; +} + + +std::string Struct::toString() const +{ + std::ostringstream ostr; + ostr << declaration() << "\n{\n"; + for (Iterator it = begin(); it != end(); ++it) + { + ostr << it->second->fullName() << "\n"; + ostr << it->second->toString() << "\n"; + } + ostr << "};\n"; + return ostr.str(); +} + + +} } // namespace Poco::CppParser diff --git a/CppParser/src/Symbol.cpp b/CppParser/src/Symbol.cpp new file mode 100644 index 000000000..96761aba2 --- /dev/null +++ b/CppParser/src/Symbol.cpp @@ -0,0 +1,238 @@ +// +// Symbol.cpp +// +// $Id: //poco/1.3/CppParser/src/Symbol.cpp#6 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: Symbol +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/CppParser/Symbol.h" +#include "Poco/CppParser/NameSpace.h" +#include "Poco/CppParser/Utility.h" +#include "Poco/String.h" +#include +#include + + +namespace Poco { +namespace CppParser { + + +int Symbol::_nextId = 0; + + +Symbol::Symbol(): + _id(_nextId++), + _pNameSpace(0), + _access(ACC_PUBLIC), + _line(-1) +{ +} + + +Symbol::Symbol(const std::string& name, NameSpace* pNameSpace): + _id(_nextId++), + _name(name), + _pNameSpace(pNameSpace), + _access(ACC_PUBLIC), + _line(-1) +{ + if (_pNameSpace) + _pNameSpace->addSymbol(this); +} + + +Symbol::~Symbol() +{ +} + + +void Symbol::setAccess(Access access) +{ + _access = access; +} + + +void Symbol::setDocumentation(const std::string& text) +{ + _documentation = text; +} + + +void Symbol::addDocumentation(const std::string& text) +{ + if (!_documentation.empty()) + _documentation.append("\n"); + _documentation.append(text); +} + + +void Symbol::setFile(const std::string& path) +{ + _file = path; +} + + +void Symbol::setLineNumber(int line) +{ + _line = line; +} + + +void Symbol::setPackage(const std::string& package) +{ + _package = package; +} + + +void Symbol::setLibrary(const std::string& library) +{ + _library = library; +} + + +std::string Symbol::fullName() const +{ + std::string fullName; + if (_pNameSpace) + { + fullName = _pNameSpace->fullName(); + if (!fullName.empty()) fullName.append("::"); + } + fullName.append(_name); + return fullName; +} + + +std::string Symbol::extractName(const std::string& decl) +{ + poco_assert (!decl.empty()); + + std::string::size_type pos = decl.find('('); + // check for function pointer + if (pos != std::string::npos && pos < decl.size() - 1) + { + std::string::size_type i = pos + 1; + while (i < decl.size() && std::isspace(decl[i])) i++; + if (i < decl.size() && decl[i] == '*') + { + i++; + std::string name; + while (i < decl.size() && std::isspace(decl[i])) i++; + while (i < decl.size() && !std::isspace(decl[i]) && decl[i] != ')') name += decl[i++]; + return name; + } + } + if (pos == std::string::npos || (pos > 0 && decl[pos - 1] == '(')) + pos = decl.size(); + --pos; + std::string::size_type eqPos = decl.find('='); + if (eqPos != std::string::npos) + { + std::string::size_type gtPos = decl.find('>', eqPos); + if ((gtPos == std::string::npos || gtPos > pos) && eqPos < pos && eqPos > 0 && decl[eqPos + 1] != '=') + pos = eqPos - 1; + } + while (pos > 0 && std::isspace(decl[pos])) --pos; + while (pos > 0 && decl[pos] == ']') + { + --pos; + while (pos > 0 && decl[pos] != '[') --pos; + if (pos > 0) --pos; + while (pos > 0 && std::isspace(decl[pos])) --pos; + } + // iterate over template (specialization) + int nestedTemplateCount = 0; + if (pos > 1 && decl[pos] == '>' && decl[pos-1] != '-' && decl[pos-1] != '>') // the operators ->, >> + { + --pos; + ++nestedTemplateCount; + while (pos > 0 && nestedTemplateCount != 0) + { + if (decl[pos] == '<') + --nestedTemplateCount; + if (decl[pos] == '>') + ++nestedTemplateCount; + --pos; + } + while (pos > 0 && std::isspace(decl[pos])) --pos; + } + std::string::size_type end = pos; + std::string::size_type op = decl.find("operator "); + if (op != std::string::npos && (op == 0 || std::isspace(decl[op - 1]) || decl[op - 1] == ':')) + { + pos = op; + } + else + { + while (pos > 0 && !isIdent(decl[pos])) --pos; + while (pos > 0 && std::isspace(decl[pos])) --pos; + while (pos > 0 && isIdent(decl[pos - 1])) --pos; + if (pos > 0 && decl[pos - 1] == '~') --pos; + } + + while (pos > 2 && decl[pos - 1] == ':') + { + pos -= 3; + while (pos > 0 && isIdent(decl[pos - 1])) --pos; + } + return decl.substr(pos, end - pos + 1); +} + + +bool Symbol::isIdent(char c) +{ + return std::isalnum(c) || c == '_'; +} + + +bool Symbol::hasAttr(const std::string& decl, const std::string& attr) +{ + std::string attrS(attr); + attrS += ' '; + std::string::size_type pos = decl.find(attrS); + return pos == 0 || (pos != std::string::npos && decl[pos - 1] == ' '); +} + + +void Symbol::setAttributes(const Attributes& attrs) +{ + _attrs = attrs; +} + + +const Attributes& Symbol::getAttributes() const +{ + return _attrs; +} + + +} } // namespace Poco::CppParser diff --git a/CppParser/src/Tokenizer.cpp b/CppParser/src/Tokenizer.cpp new file mode 100644 index 000000000..fd02220f8 --- /dev/null +++ b/CppParser/src/Tokenizer.cpp @@ -0,0 +1,68 @@ +// +// Tokenizer.cpp +// +// $Id: //poco/1.3/CppParser/src/Tokenizer.cpp#1 $ +// +// Library: CppParser +// Package: CppParser +// Module: Tokenizer +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/CppParser/Tokenizer.h" +#include "Poco/CppParser/CppToken.h" + + +using Poco::StreamTokenizer; +using Poco::WhitespaceToken; + + +namespace Poco { +namespace CppParser { + + +Tokenizer::Tokenizer(std::istream& istr): + StreamTokenizer(istr) +{ + addToken(new OperatorToken); + addToken(new IdentifierToken); + addToken(new StringLiteralToken); + addToken(new CharLiteralToken); + addToken(new NumberLiteralToken); + addToken(new CommentToken, false); + addToken(new PreprocessorToken); + addToken(new WhitespaceToken); +} + + +Tokenizer::~Tokenizer() +{ +} + + +} } // namespace Poco::CppParser diff --git a/CppParser/src/TypeDef.cpp b/CppParser/src/TypeDef.cpp new file mode 100644 index 000000000..168840505 --- /dev/null +++ b/CppParser/src/TypeDef.cpp @@ -0,0 +1,79 @@ +// +// TypeDef.cpp +// +// $Id: //poco/1.3/CppParser/src/TypeDef.cpp#3 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: TypeDef +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/CppParser/TypeDef.h" +#include "Poco/String.h" +#include + + +namespace Poco { +namespace CppParser { + + +TypeDef::TypeDef(const std::string& decl, NameSpace* pNameSpace): + Decl(decl, pNameSpace) +{ +} + + +TypeDef::~TypeDef() +{ +} + + +Symbol::Kind TypeDef::kind() const +{ + return Symbol::SYM_TYPEDEF; +} + + +std::string TypeDef::baseType() const +{ + std::string decl = declaration(); + if (decl.compare(0, 7, "typedef") == 0) + { + decl.erase(0, 7); + std::string::size_type pos = decl.size() - 1; + while (pos > 0 && std::isspace(decl[pos])) pos--; + while (pos > 0 && !std::isspace(decl[pos])) pos--; + decl.resize(pos + 1); + Poco::trimInPlace(decl); + } + return decl; +} + + +} } // namespace Poco::CppParser diff --git a/CppParser/src/Utility.cpp b/CppParser/src/Utility.cpp new file mode 100644 index 000000000..6b16a3b29 --- /dev/null +++ b/CppParser/src/Utility.cpp @@ -0,0 +1,316 @@ +// +// Utility.cpp +// +// $Id: //poco/1.3/CppParser/src/Utility.cpp#5 $ +// +// Library: CppParser +// Package: CppParser +// Module: Utility +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/CppParser/Utility.h" +#include "Poco/CppParser/Parser.h" +#include "Poco/CppParser/Struct.h" +#include "Poco/StringTokenizer.h" +#include "Poco/Glob.h" +#include "Poco/Path.h" +#include "Poco/File.h" +#include "Poco/Process.h" +#include "Poco/Environment.h" +#include "Poco/NumberFormatter.h" +#include "Poco/Exception.h" +#include +#include + + +using Poco::StringTokenizer; +using Poco::Glob; +using Poco::Path; +using Poco::File; +using Poco::Process; +using Poco::ProcessHandle; +using Poco::Environment; +using Poco::NumberFormatter; +using Poco::Exception; + + +namespace Poco { +namespace CppParser { + + +void Utility::parseDir(const std::vector & includePattern, const std::vector & excludePattern, NameSpace::SymbolTable& st, const std::string& exec, const std::string& options, const std::string& path) +{ + std::set files; + Utility::buildFileList(files, includePattern, excludePattern); + for (std::set::const_iterator it = files.begin(); it != files.end(); ++it) + { + Utility::parse(*it, st, exec, options, path); + } + Utility::fixup(st); +} + + +void Utility::parse(const std::string& file, NameSpace::SymbolTable& st, const std::string& exec, const std::string& options, const std::string& path) +{ + std::string prepFile = Utility::preprocessFile(file, exec, options, path); + Utility::parseOnly(file, st, prepFile, true); +} + + +void Utility::fixup(NameSpace::SymbolTable& st) +{ + for (NameSpace::SymbolTable::iterator it = st.begin(); it != st.end(); ++it) + { + Struct* pStruct = dynamic_cast(it->second); + if (pStruct) + { + pStruct->fixupBases(); + } + } +} + + +void Utility::detectPrefixAndIncludes(const std::string& origHFile, std::vector& lines, std::string& prefix) +{ + std::ifstream istr(origHFile.c_str()); + try + { + if (istr.good()) + { + std::string x; + istr >> x; + while (x.find("#ifndef") == std::string::npos) + istr >> x; + StringTokenizer tokenizer(x, " \t", StringTokenizer::TOK_IGNORE_EMPTY | StringTokenizer::TOK_TRIM); + poco_assert (tokenizer.count() == 2); + StringTokenizer::Iterator itTmp = tokenizer.begin(); + ++itTmp; + std::string defValue = *itTmp; + istr >> x; + // now find the corresponsing #define + while (x.find(defValue) == std::string::npos) + istr >> x; + //now parse until a class def is found without a ; at the end + bool stop = false; + std::string prefixHint; + do + { + istr >> x; + // we add EVERYTHING to lines: reason: used macros/preprocessor defines, conditional includes should all be present in the generated code + // just think about fwd declarations inside a NS_BEGIN ... NS_END block + if (x.find("class") != std::string::npos && x.find(";") == std::string::npos) + { + StringTokenizer tok(x, " \t", StringTokenizer::TOK_IGNORE_EMPTY | StringTokenizer::TOK_TRIM); + StringTokenizer::Iterator it = tok.begin(); + while (*it != "class" && it != tok.end()) + ++it; + // the next after class must be *_API or in case of a template it must be the class name + ++it; + std::size_t apiPos = it->find("_API"); + if (apiPos != std::string::npos) + { + prefixHint = it->substr(0, apiPos); + } + stop = true; + } + else + { + lines.push_back(x); + } + } + while (!stop && !istr.eof()); + if (!stop) + { + lines.clear(); + prefix.clear(); + //throw Poco::SyntaxException("Failed to parse file " + origHFile + ".No class declared?"); + return; + } + + // now search the prefix + if (lines.empty()) + { + prefix.clear(); + return; + } + // the prefix for that file + std::vector::const_iterator it = lines.end(); + --it; + std::vector::const_iterator itBegin = lines.begin(); + for (; it != itBegin; --it) + { + std::size_t prefixPos = it->find("_BEGIN"); + if (prefixPos != std::string::npos) + { + prefix = it->substr(0, prefixPos); + if (prefix != prefixHint && !prefixHint.empty()) + { + throw Poco::SyntaxException("Conflicting prefixes detected: " + prefixHint + "<->" + prefix); + } + } + } + } + else throw Poco::OpenFileException(origHFile); + } + catch (Exception&) + { + istr.close(); + throw; + } + istr.close(); +} + +std::string Utility::preprocessFile(const std::string& file, const std::string& exec, const std::string& options, const std::string& path) +{ + Path pp(file); + pp.setExtension("i"); + + std::string popts; + for (std::string::const_iterator it = options.begin(); it != options.end(); ++it) + { + if (*it == '%') + popts += pp.getBaseName(); + else + popts += *it; + } + StringTokenizer tokenizer(popts, ",;\n", StringTokenizer::TOK_IGNORE_EMPTY | StringTokenizer::TOK_TRIM); + std::vector args(tokenizer.begin(), tokenizer.end()); + args.push_back(file); + + if (!path.empty()) + { + std::string newPath(Environment::get("PATH")); + newPath += Path::pathSeparator(); + newPath += path; + Environment::set("PATH", path); + } + + ProcessHandle proc = Process::launch(exec, args); + int rc = Process::wait(proc); + if (rc != 0) + { + throw Poco::RuntimeException("Failed to process file"); + } + + return pp.getFileName(); +} + + +void Utility::parseOnly(const std::string& file, NameSpace::SymbolTable& st, const std::string& preprocessedFile, bool removePreprocessedFile) +{ + std::ifstream istr(preprocessedFile.c_str()); + try + { + if (istr.good()) + { + Parser parser(st, file, istr); + parser.parse(); + } + else throw Poco::OpenFileException(preprocessedFile); + } + catch (Exception&) + { + istr.close(); + if (removePreprocessedFile) + removeFile(preprocessedFile); + throw; + } + istr.close(); + if (removePreprocessedFile) + removeFile(preprocessedFile); +} + + +void Utility::removeFile(const std::string& preprocessedfile) +{ + try + { + File f(preprocessedfile); + f.remove(); + } + catch (Exception&) + { + } +} + + +void Utility::buildFileList(std::set& files, const std::vector& includePattern, const std::vector& excludePattern) +{ + std::set temp; + std::vector ::const_iterator itInc = includePattern.begin(); + std::vector ::const_iterator itIncEnd = includePattern.end(); + + int options(0); +#if defined(_WIN32) + options |= Glob::GLOB_CASELESS; +#endif + + for (; itInc != itIncEnd; ++itInc) + { + Glob::glob(*itInc, temp, options); + } + + std::vector ::const_iterator itExc = excludePattern.begin(); + std::vector ::const_iterator itExcEnd = excludePattern.end(); + + for (std::set::const_iterator it = temp.begin(); it != temp.end(); ++it) + { + Path p(*it); + bool include = true; + for (; itExc != itExcEnd; ++itExc) + { + Glob glob(*itExc, options); + if (glob.match(p.getFileName())) + include = false; + } + if (include) + files.insert(*it); + } +} + + +std::string replace(const std::string& input, const std::string& oldToken, const std::string& newToken) +{ + std::string result; + std::size_t start = 0; + std::size_t pos = 0; + do + { + pos = input.find(oldToken, start); + result.append(input.substr(start, pos-start)); + if (pos != std::string::npos) + result.append(newToken); + start = pos + oldToken.length(); + } + while (pos != std::string::npos); + + return result; +} + +} } // namespace Poco::CppParser diff --git a/CppParser/src/Variable.cpp b/CppParser/src/Variable.cpp new file mode 100644 index 000000000..962d1df90 --- /dev/null +++ b/CppParser/src/Variable.cpp @@ -0,0 +1,98 @@ +// +// Variable.cpp +// +// $Id: //poco/1.3/CppParser/src/Variable.cpp#3 $ +// +// Library: CppParser +// Package: SymbolTable +// Module: Variable +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/CppParser/Variable.h" +#include "Poco/String.h" +#include + + +namespace Poco { +namespace CppParser { + + +Variable::Variable(const std::string& decl, NameSpace* pNameSpace): + Decl(decl, pNameSpace), + _flags(0), + _isPointer(false), + _type() +{ + if (hasAttr(decl, "static")) + _flags |= VAR_STATIC; + if (hasAttr(decl, "mutable")) + _flags |= VAR_MUTABLE; + if (hasAttr(decl, "volatile")) + _flags |= VAR_VOLATILE; + if (hasAttr(decl, "const")) + _flags |= VAR_CONST; + + std::size_t pos = decl.rfind(name()); + std::string tmp = decl.substr(0, pos); + tmp = Poco::trim(tmp); + + pos = tmp.rfind("*"); + _isPointer = (pos == (tmp.size()-1)); + + Poco::replaceInPlace(tmp, "static ", ""); + Poco::replaceInPlace(tmp, "mutable ", ""); + Poco::replaceInPlace(tmp, "volatile ", ""); + Poco::replaceInPlace(tmp, "static\t", ""); + Poco::replaceInPlace(tmp, "mutable\t", ""); + Poco::replaceInPlace(tmp, "volatile\t", ""); + if (tmp.find("const ") == 0) + tmp = tmp.substr(6); + if (tmp.find("const\t") == 0) + tmp = tmp.substr(6); + + std::size_t rightCut = tmp.size(); + while (rightCut > 0 && (tmp[rightCut-1] == '&' || tmp[rightCut-1] == '*' || tmp[rightCut-1] == '\t' || tmp[rightCut-1] == ' ')) + --rightCut; + _type = Poco::trim(tmp.substr(0, rightCut)); + +} + + +Variable::~Variable() +{ +} + + +Symbol::Kind Variable::kind() const +{ + return Symbol::SYM_VARIABLE; +} + + +} } // namespace Poco::CppParser diff --git a/CppParser/testsuite/Makefile b/CppParser/testsuite/Makefile new file mode 100644 index 000000000..0e209175d --- /dev/null +++ b/CppParser/testsuite/Makefile @@ -0,0 +1,19 @@ +# +# Makefile +# +# $Id: //poco/1.3/CppParser/testsuite/Makefile#1 $ +# +# Makefile for Poco CppParser testsuite +# + +include $(POCO_BASE)/build/rules/global + +objects = CppParserTestSuite Driver \ + CppParserTest \ + AttributesTestSuite AttributesParserTest + +target = testrunner +target_version = 1 +target_libs = PocoCppParser PocoFoundation CppUnit + +include $(POCO_BASE)/build/rules/exec diff --git a/CppParser/testsuite/TestSuite.progen b/CppParser/testsuite/TestSuite.progen new file mode 100644 index 000000000..b21c98060 --- /dev/null +++ b/CppParser/testsuite/TestSuite.progen @@ -0,0 +1,12 @@ +vc.project.guid = C79112BD-EC91-11DA-A4CE-005056C00008 +vc.project.name = TestSuite +vc.project.target = TestSuite +vc.project.type = testsuite +vc.project.pocobase = ..\\.. +vc.project.platforms = Win32, x64, WinCE +vc.project.configurations = debug_shared, release_shared, debug_static_mt, release_static_mt, debug_static_md, release_static_md +vc.project.prototype = TestSuite_vs90.vcproj +vc.project.compiler.include = ..\\..\\Foundation\\include +vc.project.linker.dependencies.Win32 = +vc.project.linker.dependencies.x64 = +vc.project.linker.dependencies.WinCE = diff --git a/CppParser/testsuite/TestSuite.vmsbuild b/CppParser/testsuite/TestSuite.vmsbuild new file mode 100644 index 000000000..0f924b0bf --- /dev/null +++ b/CppParser/testsuite/TestSuite.vmsbuild @@ -0,0 +1,9 @@ +# +# TestSuite.vmsbuild +# +# $Id: //poco/1.3/CppParser/testsuite/TestSuite.vmsbuild#1 $ +# +EXE=TestRunner +CppParserTestSuite +Driver +CppParserTest diff --git a/CppParser/testsuite/TestSuite_CE_vs90.vcproj b/CppParser/testsuite/TestSuite_CE_vs90.vcproj new file mode 100644 index 000000000..c4d0c7dbe --- /dev/null +++ b/CppParser/testsuite/TestSuite_CE_vs90.vcproj @@ -0,0 +1,512 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppParser/testsuite/TestSuite_vs100.vcxproj b/CppParser/testsuite/TestSuite_vs100.vcxproj new file mode 100644 index 000000000..64cfc281b --- /dev/null +++ b/CppParser/testsuite/TestSuite_vs100.vcxproj @@ -0,0 +1,317 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + TestSuite + {C79112BD-EC91-11DA-A4CE-005056C00008} + TestSuite + Win32Proj + + + + Application + Dynamic + MultiByte + + + Application + Dynamic + MultiByte + + + Application + Static + MultiByte + + + Application + Static + MultiByte + + + Application + Dynamic + MultiByte + + + Application + Dynamic + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin\ + obj\$(Configuration)\ + true + bin\ + obj\$(Configuration)\ + false + bin\static_mt\ + obj\$(Configuration)\ + true + bin\static_mt\ + obj\$(Configuration)\ + false + bin\static_md\ + obj\$(Configuration)\ + true + bin\static_md\ + obj\$(Configuration)\ + false + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) + bin\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\TestSuited.pdb + Windows + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) + bin\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX86 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) + bin\static_mt\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + nafxcwd.lib;libcmtd.lib;%(IgnoreSpecificDefaultLibraries) + true + true + bin\static_mt\TestSuited.pdb + Windows + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) + bin\static_mt\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + nafxcw.lib;libcmt.lib;%(IgnoreSpecificDefaultLibraries) + false + Windows + true + true + MachineX86 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) + bin\static_md\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\TestSuited.pdb + Windows + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) + bin\static_md\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX86 + + + + + + + + + + + + + + + + + + diff --git a/CppParser/testsuite/TestSuite_vs100.vcxproj.filters b/CppParser/testsuite/TestSuite_vs100.vcxproj.filters new file mode 100644 index 000000000..8845b1fae --- /dev/null +++ b/CppParser/testsuite/TestSuite_vs100.vcxproj.filters @@ -0,0 +1,69 @@ + + + + + {3dbe62ab-f7d9-4d3e-9ab6-3312cc0d0d35} + + + {487fd5d4-34e1-4ced-9824-be2eb50ecea6} + + + {31c109cb-3156-45c8-b3fc-f8e312348f98} + + + {462c6f35-933d-4d79-ac6c-cb22b2e6127a} + + + {a897b148-fb3f-4ff6-baf7-c5f203a47d4e} + + + {f9c4b62e-3e7a-4e05-b266-ab16c1940566} + + + {1c844178-3834-47cc-bcf9-d1e85d1419ff} + + + {501d852d-ae97-41d1-9c7b-974b851fac8d} + + + {439a624a-3294-4620-a5a9-5859e00a3764} + + + {5e286b44-34f3-4561-b047-9af6c3b64c40} + + + {37e80b84-ac0f-4dc1-98bb-9e91a1f3301a} + + + + + CppParser\Header Files + + + _Suite\Header Files + + + Attributes\Header Files + + + Attributes\Header Files + + + + + CppParser\Source Files + + + _Suite\Source Files + + + _Driver\Source Files + + + Attributes\Source Files + + + Attributes\Source Files + + + \ No newline at end of file diff --git a/CppParser/testsuite/TestSuite_vs71.vcproj b/CppParser/testsuite/TestSuite_vs71.vcproj new file mode 100644 index 000000000..bf34405c5 --- /dev/null +++ b/CppParser/testsuite/TestSuite_vs71.vcproj @@ -0,0 +1,447 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppParser/testsuite/TestSuite_vs80.vcproj b/CppParser/testsuite/TestSuite_vs80.vcproj new file mode 100644 index 000000000..fe4fb6236 --- /dev/null +++ b/CppParser/testsuite/TestSuite_vs80.vcproj @@ -0,0 +1,487 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppParser/testsuite/TestSuite_vs90.vcproj b/CppParser/testsuite/TestSuite_vs90.vcproj new file mode 100644 index 000000000..56323bbf8 --- /dev/null +++ b/CppParser/testsuite/TestSuite_vs90.vcproj @@ -0,0 +1,487 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppParser/testsuite/TestSuite_x64_vs100.vcxproj b/CppParser/testsuite/TestSuite_x64_vs100.vcxproj new file mode 100644 index 000000000..31e03aac6 --- /dev/null +++ b/CppParser/testsuite/TestSuite_x64_vs100.vcxproj @@ -0,0 +1,317 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + TestSuite + {C79112BD-EC91-11DA-A4CE-005056C00008} + TestSuite + Win32Proj + + + + Application + Dynamic + MultiByte + + + Application + Dynamic + MultiByte + + + Application + Static + MultiByte + + + Application + Static + MultiByte + + + Application + Dynamic + MultiByte + + + Application + Dynamic + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin64\ + obj64\$(Configuration)\ + true + bin64\ + obj64\$(Configuration)\ + false + bin64\static_mt\ + obj64\$(Configuration)\ + true + bin64\static_mt\ + obj64\$(Configuration)\ + false + bin64\static_md\ + obj64\$(Configuration)\ + true + bin64\static_md\ + obj64\$(Configuration)\ + false + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + CppUnitd.lib;WinTestRunnerd.lib;%(AdditionalDependencies) + bin64\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\TestSuited.pdb + Windows + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + CppUnit.lib;WinTestRunner.lib;%(AdditionalDependencies) + bin64\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;%(AdditionalDependencies) + bin64\static_mt\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + nafxcwd.lib;libcmtd.lib;%(IgnoreSpecificDefaultLibraries) + true + true + bin64\static_mt\TestSuited.pdb + Windows + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;%(AdditionalDependencies) + bin64\static_mt\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + nafxcw.lib;libcmt.lib;%(IgnoreSpecificDefaultLibraries) + false + Windows + true + true + MachineX64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) + bin64\static_md\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\TestSuited.pdb + Windows + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;%(AdditionalDependencies) + bin64\static_md\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX64 + + + + + + + + + + + + + + + + + + diff --git a/CppParser/testsuite/TestSuite_x64_vs100.vcxproj.filters b/CppParser/testsuite/TestSuite_x64_vs100.vcxproj.filters new file mode 100644 index 000000000..6af69e6ca --- /dev/null +++ b/CppParser/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -0,0 +1,69 @@ + + + + + {4cb1acf1-ba98-4bd9-84ac-74e8fe451ad1} + + + {86c44e6b-2aad-4210-8a93-8eee9287b3ef} + + + {5957f029-1958-45dd-971f-3daa0a49cd0d} + + + {72b6f2bd-1ebd-42e6-9875-e780e24c0192} + + + {3b26424c-0f5e-4ef6-8117-dc25e24f6355} + + + {b19431b3-6c68-4dae-a4a7-88714eb2ebf2} + + + {730c5f02-68f8-4324-910c-64460f3c07d8} + + + {5a5c72ce-7230-4721-8666-ae7b4e69db4d} + + + {a9ad947c-31ad-4b5d-942a-35eb74f8a352} + + + {2f8a6d81-22c2-4089-936a-3abfbc73ae47} + + + {8d629d90-5ba0-4508-910a-28933d4c6c22} + + + + + CppParser\Header Files + + + _Suite\Header Files + + + Attributes\Header Files + + + Attributes\Header Files + + + + + CppParser\Source Files + + + _Suite\Source Files + + + _Driver\Source Files + + + Attributes\Source Files + + + Attributes\Source Files + + + \ No newline at end of file diff --git a/CppParser/testsuite/TestSuite_x64_vs90.vcproj b/CppParser/testsuite/TestSuite_x64_vs90.vcproj new file mode 100644 index 000000000..c65705a2f --- /dev/null +++ b/CppParser/testsuite/TestSuite_x64_vs90.vcproj @@ -0,0 +1,487 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppParser/testsuite/src/AttributesParserTest.cpp b/CppParser/testsuite/src/AttributesParserTest.cpp new file mode 100644 index 000000000..a15c2e28f --- /dev/null +++ b/CppParser/testsuite/src/AttributesParserTest.cpp @@ -0,0 +1,158 @@ +// +// AttributesParserTest.cpp +// +// $Id: //poco/1.3/CppParser/testsuite/src/AttributesParserTest.cpp#1 $ +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "AttributesParserTest.h" +#include "CppUnit/TestCaller.h" +#include "CppUnit/TestSuite.h" +#include "Poco/CppParser/Attributes.h" +#include "Poco/CppParser/AttributesParser.h" +#include + + +using Poco::CppParser::Attributes; +using Poco::CppParser::AttributesParser; + + +AttributesParserTest::AttributesParserTest(const std::string& name): CppUnit::TestCase(name) +{ +} + + +AttributesParserTest::~AttributesParserTest() +{ +} + + +void AttributesParserTest::testParser1() +{ + Attributes attrs; + std::istringstream istr(""); + AttributesParser parser(attrs, istr); + parser.parse(); + assert (attrs.begin() == attrs.end()); +} + + +void AttributesParserTest::testParser2() +{ + Attributes attrs; + std::istringstream istr("name=value"); + AttributesParser parser(attrs, istr); + parser.parse(); + assert (attrs.getString("name") == "value"); +} + + +void AttributesParserTest::testParser3() +{ + Attributes attrs; + std::istringstream istr("name=value, name2=100"); + AttributesParser parser(attrs, istr); + parser.parse(); + assert (attrs.getString("name") == "value"); + assert (attrs.getInt("name2") == 100); +} + + +void AttributesParserTest::testParser4() +{ + Attributes attrs; + std::istringstream istr("name=value, name2=100, name3"); + AttributesParser parser(attrs, istr); + parser.parse(); + assert (attrs.getString("name") == "value"); + assert (attrs.getInt("name2") == 100); + assert (attrs.getBool("name3")); +} + + +void AttributesParserTest::testParser5() +{ + Attributes attrs; + std::istringstream istr("name.a=value, name.b=100, name.c"); + AttributesParser parser(attrs, istr); + parser.parse(); + assert (attrs.getString("name.a") == "value"); + assert (attrs.getInt("name.b") == 100); + assert (attrs.getBool("name.c")); +} + + +void AttributesParserTest::testParser6() +{ + Attributes attrs; + std::istringstream istr("name = {a=value, b=100, c}"); + AttributesParser parser(attrs, istr); + parser.parse(); + assert (attrs.getString("name.a") == "value"); + assert (attrs.getInt("name.b") == 100); + assert (attrs.getBool("name.c")); +} + + +void AttributesParserTest::testParser7() +{ + Attributes attrs; + std::istringstream istr("name = {a=value, b=100, c}, name2=\"foo\""); + AttributesParser parser(attrs, istr); + parser.parse(); + assert (attrs.getString("name.a") == "value"); + assert (attrs.getInt("name.b") == 100); + assert (attrs.getBool("name.c")); + assert (attrs.getString("name2") == "foo"); +} + + +void AttributesParserTest::setUp() +{ +} + + +void AttributesParserTest::tearDown() +{ +} + + +CppUnit::Test* AttributesParserTest::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("AttributesParserTest"); + + CppUnit_addTest(pSuite, AttributesParserTest, testParser1); + CppUnit_addTest(pSuite, AttributesParserTest, testParser2); + CppUnit_addTest(pSuite, AttributesParserTest, testParser3); + CppUnit_addTest(pSuite, AttributesParserTest, testParser4); + CppUnit_addTest(pSuite, AttributesParserTest, testParser5); + CppUnit_addTest(pSuite, AttributesParserTest, testParser6); + CppUnit_addTest(pSuite, AttributesParserTest, testParser7); + + return pSuite; +} diff --git a/CppParser/testsuite/src/AttributesParserTest.h b/CppParser/testsuite/src/AttributesParserTest.h new file mode 100644 index 000000000..4fe23f629 --- /dev/null +++ b/CppParser/testsuite/src/AttributesParserTest.h @@ -0,0 +1,66 @@ +// +// AttributesParserTest.h +// +// $Id: //poco/1.3/CppParser/testsuite/src/AttributesParserTest.h#1 $ +// +// Definition of the AttributesParserTest class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef AttributesParserTest_INCLUDED +#define AttributesParserTest_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "CppUnit/TestCase.h" + + +class AttributesParserTest: public CppUnit::TestCase +{ +public: + AttributesParserTest(const std::string& name); + ~AttributesParserTest(); + + void testParser1(); + void testParser2(); + void testParser3(); + void testParser4(); + void testParser5(); + void testParser6(); + void testParser7(); + + void setUp(); + void tearDown(); + + static CppUnit::Test* suite(); + +private: +}; + + +#endif // AttributesParserTest_INCLUDED diff --git a/CppParser/testsuite/src/AttributesTestSuite.cpp b/CppParser/testsuite/src/AttributesTestSuite.cpp new file mode 100644 index 000000000..4b34e3d1e --- /dev/null +++ b/CppParser/testsuite/src/AttributesTestSuite.cpp @@ -0,0 +1,44 @@ +// +// AttributesTestSuite.cpp +// +// $Id: //poco/1.3/CppParser/testsuite/src/AttributesTestSuite.cpp#1 $ +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "AttributesTestSuite.h" +#include "AttributesParserTest.h" + + +CppUnit::Test* AttributesTestSuite::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("CppParserTestSuite"); + + pSuite->addTest(AttributesParserTest::suite()); + + return pSuite; +} diff --git a/CppParser/testsuite/src/AttributesTestSuite.h b/CppParser/testsuite/src/AttributesTestSuite.h new file mode 100644 index 000000000..ae2c4fe3f --- /dev/null +++ b/CppParser/testsuite/src/AttributesTestSuite.h @@ -0,0 +1,49 @@ +// +// AttributesTestSuite.h +// +// $Id: //poco/1.3/CppParser/testsuite/src/AttributesTestSuite.h#1 $ +// +// Definition of the AttributesTestSuite class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef AttributesTestSuite_INCLUDED +#define AttributesTestSuite_INCLUDED + + +#include "CppUnit/TestSuite.h" + + +class AttributesTestSuite +{ +public: + static CppUnit::Test* suite(); +}; + + +#endif // AttributesTestSuite_INCLUDED diff --git a/CppParser/testsuite/src/CppParserTest.cpp b/CppParser/testsuite/src/CppParserTest.cpp new file mode 100644 index 000000000..b1cc39b05 --- /dev/null +++ b/CppParser/testsuite/src/CppParserTest.cpp @@ -0,0 +1,156 @@ +// +// CppParserTest.cpp +// +// $Id: //poco/1.3/CppParser/testsuite/src/CppParserTest.cpp#2 $ +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "CppParserTest.h" +#include "CppUnit/TestCaller.h" +#include "CppUnit/TestSuite.h" +#include "Poco/CppParser/Utility.h" +#include "Poco/CppParser/Symbol.h" +#include + + +using namespace Poco::CppParser; + + +std::string linker("cl"); +std::string options("/I \"C:\\Program Files\\Microsoft Visual Studio 8\\VC\\INCLUDE\", " + "/I \"C:\\Program Files\\Microsoft Visual Studio 8\\VC\\PlatformSDK\\include\", " + "/I \"p:\\poco\\Foundation\\include\", " + "/I \"p:\\poco\\XML\\include\", " + "/I \"p:\\poco\\Util\\include\", " + "/I \"p:\\poco\\Net\\include\", " + "/D \"WIN32\", " + "/D \"_DEBUG\", " + "/D \"_WINDOWS\", " + "/D \"_MBCS\", " + "/C, /P, /TP"); +std::string path("C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\IDE;C:\\Program Files\\Microsoft Visual Studio 8\\VC\\BIN;C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools;;C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools\\bin"); + +CppParserTest::CppParserTest(const std::string& name): CppUnit::TestCase(name) +{ +} + + +CppParserTest::~CppParserTest() +{ +} + + +void CppParserTest::testParseDir() +{ + //FIXME: implement some proper tests + return; + NameSpace::SymbolTable st; + std::vector inc; + inc.push_back("./*.h"); + std::vector exc; + Utility::parseDir(inc, exc, st, linker, options, path); + + NameSpace::SymbolTable::const_iterator it = st.begin(); + NameSpace::SymbolTable::const_iterator itEnd = st.end(); + for (it; it != itEnd; ++it) + { + std::cout << it->first << ": "; + Symbol* pSym = it->second; + std::cout << pSym->name() << ", " << pSym->getDocumentation() << "\n"; + + } +} + + +void CppParserTest::testExtractName() +{ + std::string decl("int _var"); + std::string name = Symbol::extractName(decl); + assert (name == "_var"); + + decl = "void func(int arg1, int arg2)"; + name = Symbol::extractName(decl); + assert (name == "func"); + + decl = "const std::vector* var"; + name = Symbol::extractName(decl); + assert (name == "var"); + + decl = "const std::vector* func(int arg) = 0"; + name = Symbol::extractName(decl); + assert (name == "func"); + + decl = "int (*func)(int, const std::string&)"; + name = Symbol::extractName(decl); + assert (name == "func"); + + decl = "int ( * func )(int, const std::string&)"; + name = Symbol::extractName(decl); + assert (name == "func"); + + decl = "template B func(A a, B b)"; + name = Symbol::extractName(decl); + assert (name == "func"); + + decl = "template class Class"; + name = Symbol::extractName(decl); + assert (name == "Class"); + + decl = "template <> class Class"; + name = Symbol::extractName(decl); + assert (name == "Class"); + + decl = "template <> class Class "; + name = Symbol::extractName(decl); + assert (name == "Class"); + + decl = "template <> class Class >"; + name = Symbol::extractName(decl); + assert (name == "Class"); +} + + +void CppParserTest::setUp() +{ +} + + +void CppParserTest::tearDown() +{ +} + + +CppUnit::Test* CppParserTest::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("CppParserTest"); + + CppUnit_addTest(pSuite, CppParserTest, testParseDir); + CppUnit_addTest(pSuite, CppParserTest, testExtractName); + + return pSuite; +} diff --git a/CppParser/testsuite/src/CppParserTest.h b/CppParser/testsuite/src/CppParserTest.h new file mode 100644 index 000000000..4ff575740 --- /dev/null +++ b/CppParser/testsuite/src/CppParserTest.h @@ -0,0 +1,61 @@ +// +// CppParserTest.h +// +// $Id: //poco/1.3/CppParser/testsuite/src/CppParserTest.h#2 $ +// +// Definition of the CppParserTest class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParserTest_INCLUDED +#define CppParserTest_INCLUDED + + +#include "Poco/CppParser/CppParser.h" +#include "CppUnit/TestCase.h" + + +class CppParserTest: public CppUnit::TestCase +{ +public: + CppParserTest(const std::string& name); + ~CppParserTest(); + + void testParseDir(); + void testExtractName(); + + void setUp(); + void tearDown(); + + static CppUnit::Test* suite(); + +private: +}; + + +#endif // CppParserTest_INCLUDED diff --git a/CppParser/testsuite/src/CppParserTestSuite.cpp b/CppParser/testsuite/src/CppParserTestSuite.cpp new file mode 100644 index 000000000..9292ff353 --- /dev/null +++ b/CppParser/testsuite/src/CppParserTestSuite.cpp @@ -0,0 +1,46 @@ +// +// CppParserTestSuite.cpp +// +// $Id: //poco/1.3/CppParser/testsuite/src/CppParserTestSuite.cpp#1 $ +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "CppParserTestSuite.h" +#include "AttributesTestSuite.h" +#include "CppParserTest.h" + + +CppUnit::Test* CppParserTestSuite::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("CppParserTestSuite"); + + pSuite->addTest(AttributesTestSuite::suite()); + pSuite->addTest(CppParserTest::suite()); + + return pSuite; +} diff --git a/CppParser/testsuite/src/CppParserTestSuite.h b/CppParser/testsuite/src/CppParserTestSuite.h new file mode 100644 index 000000000..b1d2aac6f --- /dev/null +++ b/CppParser/testsuite/src/CppParserTestSuite.h @@ -0,0 +1,49 @@ +// +// CppParserTestSuite.h +// +// $Id: //poco/1.3/CppParser/testsuite/src/CppParserTestSuite.h#1 $ +// +// Definition of the CppParserTestSuite class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CppParserTestSuite_INCLUDED +#define CppParserTestSuite_INCLUDED + + +#include "CppUnit/TestSuite.h" + + +class CppParserTestSuite +{ +public: + static CppUnit::Test* suite(); +}; + + +#endif // CppParserTestSuite_INCLUDED diff --git a/CppParser/testsuite/src/Driver.cpp b/CppParser/testsuite/src/Driver.cpp new file mode 100644 index 000000000..ffe92f90f --- /dev/null +++ b/CppParser/testsuite/src/Driver.cpp @@ -0,0 +1,39 @@ +// +// Driver.cpp +// +// $Id: //poco/1.3/CppParser/testsuite/src/Driver.cpp#1 $ +// +// Console-based test driver for Poco CppParser. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "CppUnit/TestRunner.h" +#include "CppParserTestSuite.h" + + +CppUnitMain(CppParserTestSuite) diff --git a/CppParser/testsuite/src/WinDriver.cpp b/CppParser/testsuite/src/WinDriver.cpp new file mode 100644 index 000000000..bb93971f2 --- /dev/null +++ b/CppParser/testsuite/src/WinDriver.cpp @@ -0,0 +1,50 @@ +// +// WinDriver.cpp +// +// $Id: //poco/1.3/CppParser/testsuite/src/WinDriver.cpp#1 $ +// +// Windows test driver for Poco CppParser. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "WinTestRunner/WinTestRunner.h" +#include "CppParserTestSuite.h" + + +class TestDriver: public CppUnit::WinTestRunnerApp +{ + void TestMain() + { + CppUnit::WinTestRunner runner; + runner.addTest(CppParserTestSuite::suite()); + runner.run(); + } +}; + + +TestDriver theDriver; diff --git a/CppUnit/CppUnit.vxbuild b/CppUnit/CppUnit.vxbuild new file mode 100644 index 000000000..ffe867662 --- /dev/null +++ b/CppUnit/CppUnit.vxbuild @@ -0,0 +1,16 @@ +# +# CppUnit.vxbuild +# +# $Id: //poco/1.4/CppUnit/CppUnit.vxbuild#2 $ +# +TARGET=cppUnit +SOURCES=" + CppUnitException.cpp + TestCase.cpp + TestDecorator.cpp + TestFailure.cpp + TestResult.cpp + TestRunner.cpp + TestSuite.cpp + TextTestResult.cpp +" diff --git a/CppUnit/CppUnit_CE_vs90.sln b/CppUnit/CppUnit_CE_vs90.sln new file mode 100644 index 000000000..095aaba46 --- /dev/null +++ b/CppUnit/CppUnit_CE_vs90.sln @@ -0,0 +1,37 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppUnit", "CppUnit_CE_vs90.vcproj", "{138BB448-808A-4FE5-A66D-78D1F8770F59}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Digi JumpStart (ARMV4I) = debug_shared|Digi JumpStart (ARMV4I) + debug_static_md|Digi JumpStart (ARMV4I) = debug_static_md|Digi JumpStart (ARMV4I) + debug_static_mt|Digi JumpStart (ARMV4I) = debug_static_mt|Digi JumpStart (ARMV4I) + release_shared|Digi JumpStart (ARMV4I) = release_shared|Digi JumpStart (ARMV4I) + release_static_md|Digi JumpStart (ARMV4I) = release_static_md|Digi JumpStart (ARMV4I) + release_static_mt|Digi JumpStart (ARMV4I) = release_static_mt|Digi JumpStart (ARMV4I) + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|Digi JumpStart (ARMV4I).ActiveCfg = debug_shared|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|Digi JumpStart (ARMV4I).Build.0 = debug_shared|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|Digi JumpStart (ARMV4I).Deploy.0 = debug_shared|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|Digi JumpStart (ARMV4I).ActiveCfg = debug_static_md|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|Digi JumpStart (ARMV4I).Build.0 = debug_static_md|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|Digi JumpStart (ARMV4I).Deploy.0 = debug_static_md|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|Digi JumpStart (ARMV4I).ActiveCfg = debug_static_mt|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|Digi JumpStart (ARMV4I).Build.0 = debug_static_mt|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|Digi JumpStart (ARMV4I).Deploy.0 = debug_static_mt|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|Digi JumpStart (ARMV4I).ActiveCfg = release_shared|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|Digi JumpStart (ARMV4I).Build.0 = release_shared|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|Digi JumpStart (ARMV4I).Deploy.0 = release_shared|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|Digi JumpStart (ARMV4I).ActiveCfg = release_static_md|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|Digi JumpStart (ARMV4I).Build.0 = release_static_md|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|Digi JumpStart (ARMV4I).Deploy.0 = release_static_md|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|Digi JumpStart (ARMV4I).ActiveCfg = release_static_mt|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|Digi JumpStart (ARMV4I).Build.0 = release_static_mt|Digi JumpStart (ARMV4I) + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|Digi JumpStart (ARMV4I).Deploy.0 = release_static_mt|Digi JumpStart (ARMV4I) + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CppUnit/CppUnit_CE_vs90.vcproj b/CppUnit/CppUnit_CE_vs90.vcproj new file mode 100644 index 000000000..b7235dba5 --- /dev/null +++ b/CppUnit/CppUnit_CE_vs90.vcproj @@ -0,0 +1,696 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppUnit/CppUnit_vs100.sln b/CppUnit/CppUnit_vs100.sln new file mode 100644 index 000000000..1cf9421cb --- /dev/null +++ b/CppUnit/CppUnit_vs100.sln @@ -0,0 +1,49 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppUnit", "CppUnit_vs100.vcxproj", "{138BB448-808A-4FE5-A66D-78D1F8770F59}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinTestRunner", "WinTestRunner\WinTestRunner_vs100.vcxproj", "{BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}" + ProjectSection(ProjectDependencies) = postProject + {138BB448-808A-4FE5-A66D-78D1F8770F59} = {138BB448-808A-4FE5-A66D-78D1F8770F59} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_shared|Win32 = release_shared|Win32 + release_static_md|Win32 = release_static_md|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|Win32.Build.0 = release_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_shared|Win32.Build.0 = release_shared|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CppUnit/CppUnit_vs100.vcxproj b/CppUnit/CppUnit_vs100.vcxproj new file mode 100644 index 000000000..b85f93ee1 --- /dev/null +++ b/CppUnit/CppUnit_vs100.vcxproj @@ -0,0 +1,409 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + CppUnit + {138BB448-808A-4FE5-A66D-78D1F8770F59} + MFCProj + + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + DynamicLibrary + false + MultiByte + + + DynamicLibrary + false + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + ..\bin\ + obj\$(Configuration)\ + true + ..\bin\ + obj\$(Configuration)\ + false + ..\lib\ + obj\$(Configuration)\ + ..\lib\ + obj\$(Configuration)\ + ..\lib\ + obj\$(Configuration)\ + ..\lib\ + obj\$(Configuration)\ + CppUnitd + CppUnit + CppUnitmdd + CppUnitmtd + CppUnitmd + CppUnitmt + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib\CppUnit.tlb + + + + + Disabled + Default + false + include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;CppUnit_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + + + + $(IntDir) + $(IntDir)vc80.pdb + Level3 + true + EditAndContinue + Default + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c07 + + + NotSet + ..\bin\CppUnitd.dll + true + %(AdditionalLibraryDirectories) + true + ..\bin\CppUnitd.pdb + ..\lib\CppUnitd.lib + MachineX86 + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib\CppUnit.tlb + + + + + Disabled + OnlyExplicitInline + true + Speed + true + include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_AFXDLL;POCO_DLL;CppUnit_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + + + + $(IntDir) + $(IntDir)vc70.pdb + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c07 + + + ..\bin\CppUnit.dll + true + %(AdditionalLibraryDirectories) + + + ..\lib\CppUnit.lib + MachineX86 + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib\CppUnit.tlb + + + + + Disabled + Default + false + include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + + + + $(IntDir) + ..\lib\CppUnitmdd.pdb + Level3 + true + EditAndContinue + Default + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c07 + + + ..\lib\CppUnitmdd.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib\CppUnit.tlb + + + + + Disabled + OnlyExplicitInline + true + Speed + true + include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_AFXDLL;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + + + + $(IntDir) + $(IntDir)vc70.pdb + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c07 + + + ..\lib\CppUnitmd.lib + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib\CppUnit.tlb + + + + + Disabled + Default + false + include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + + + + $(IntDir) + ..\lib\CppUnitmtd.pdb + Level3 + true + EditAndContinue + Default + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c07 + + + ..\lib\CppUnitmtd.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib\CppUnit.tlb + + + + + Disabled + OnlyExplicitInline + true + Speed + true + include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_AFXDLL;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + + + + $(IntDir) + $(IntDir)vc70.pdb + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c07 + + + ..\lib\CppUnitmt.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CppUnit/CppUnit_vs100.vcxproj.filters b/CppUnit/CppUnit_vs100.vcxproj.filters new file mode 100644 index 000000000..6ad984e0c --- /dev/null +++ b/CppUnit/CppUnit_vs100.vcxproj.filters @@ -0,0 +1,89 @@ + + + + + {ce2987f4-05b4-4816-8402-83d6e2f8f80c} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {7c3a94cf-cfae-4dbe-8baf-b8a5a61faf48} + *.h + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + \ No newline at end of file diff --git a/CppUnit/CppUnit_vs71.sln b/CppUnit/CppUnit_vs71.sln new file mode 100644 index 000000000..5af4af43c --- /dev/null +++ b/CppUnit/CppUnit_vs71.sln @@ -0,0 +1,50 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppUnit", "CppUnit_VS71.vcproj", "{138BB448-808A-4FE5-A66D-78D1F8770F59}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinTestRunner", "WinTestRunner\WinTestRunner_VS71.vcproj", "{BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}" + ProjectSection(ProjectDependencies) = postProject + {138BB448-808A-4FE5-A66D-78D1F8770F59} = {138BB448-808A-4FE5-A66D-78D1F8770F59} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + debug_shared = debug_shared + debug_static_md = debug_static_md + debug_static_mt = debug_static_mt + release_shared = release_shared + release_static_md = release_static_md + release_static_mt = release_static_mt + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared.ActiveCfg = debug_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared.Build.0 = debug_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md.ActiveCfg = debug_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md.Build.0 = debug_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt.ActiveCfg = debug_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt.Build.0 = debug_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared.ActiveCfg = release_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared.Build.0 = release_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md.ActiveCfg = release_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md.Build.0 = release_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt.ActiveCfg = release_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt.Build.0 = release_static_mt|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_shared.ActiveCfg = debug_shared|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_shared.Build.0 = debug_shared|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_md.ActiveCfg = debug_static_md|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_md.Build.0 = debug_static_md|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_mt.ActiveCfg = debug_static_mt|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_mt.Build.0 = debug_static_mt|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_shared.ActiveCfg = release_shared|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_shared.Build.0 = release_shared|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_md.ActiveCfg = release_static_md|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_md.Build.0 = release_static_md|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_mt.ActiveCfg = release_static_mt|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_mt.Build.0 = release_static_mt|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/CppUnit/CppUnit_vs71.vcproj b/CppUnit/CppUnit_vs71.vcproj new file mode 100644 index 000000000..6e92cbcb6 --- /dev/null +++ b/CppUnit/CppUnit_vs71.vcproj @@ -0,0 +1,541 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppUnit/CppUnit_vs80.sln b/CppUnit/CppUnit_vs80.sln new file mode 100644 index 000000000..4fda4a65c --- /dev/null +++ b/CppUnit/CppUnit_vs80.sln @@ -0,0 +1,48 @@ +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppUnit", "CppUnit_vs80.vcproj", "{138BB448-808A-4FE5-A66D-78D1F8770F59}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinTestRunner", "WinTestRunner\WinTestRunner_vs80.vcproj", "{BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}" + ProjectSection(ProjectDependencies) = postProject + {138BB448-808A-4FE5-A66D-78D1F8770F59} = {138BB448-808A-4FE5-A66D-78D1F8770F59} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_shared|Win32 = release_shared|Win32 + release_static_md|Win32 = release_static_md|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|Win32.Build.0 = release_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_mt|Win32.Build.0 = release_static_mt|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_shared|Win32.Build.0 = release_shared|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CppUnit/CppUnit_vs80.vcproj b/CppUnit/CppUnit_vs80.vcproj new file mode 100644 index 000000000..b7d7f5103 --- /dev/null +++ b/CppUnit/CppUnit_vs80.vcproj @@ -0,0 +1,724 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppUnit/CppUnit_vs90.sln b/CppUnit/CppUnit_vs90.sln new file mode 100644 index 000000000..37c948b55 --- /dev/null +++ b/CppUnit/CppUnit_vs90.sln @@ -0,0 +1,48 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppUnit", "CppUnit_vs90.vcproj", "{138BB448-808A-4FE5-A66D-78D1F8770F59}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinTestRunner", "WinTestRunner\WinTestRunner_vs90.vcproj", "{BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}" + ProjectSection(ProjectDependencies) = postProject + {138BB448-808A-4FE5-A66D-78D1F8770F59} = {138BB448-808A-4FE5-A66D-78D1F8770F59} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_shared|Win32 = release_shared|Win32 + release_static_md|Win32 = release_static_md|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|Win32.Build.0 = release_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_shared|Win32.Build.0 = release_shared|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CppUnit/CppUnit_vs90.vcproj b/CppUnit/CppUnit_vs90.vcproj new file mode 100644 index 000000000..e3e804652 --- /dev/null +++ b/CppUnit/CppUnit_vs90.vcproj @@ -0,0 +1,670 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppUnit/CppUnit_x64_vs100.sln b/CppUnit/CppUnit_x64_vs100.sln new file mode 100644 index 000000000..892d1c6f9 --- /dev/null +++ b/CppUnit/CppUnit_x64_vs100.sln @@ -0,0 +1,49 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppUnit", "CppUnit_x64_vs100.vcxproj", "{138BB448-808A-4FE5-A66D-78D1F8770F59}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinTestRunner", "WinTestRunner\WinTestRunner_x64_vs100.vcxproj", "{BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}" + ProjectSection(ProjectDependencies) = postProject + {138BB448-808A-4FE5-A66D-78D1F8770F59} = {138BB448-808A-4FE5-A66D-78D1F8770F59} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + debug_static_md|x64 = debug_static_md|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_shared|x64 = release_shared|x64 + release_static_md|x64 = release_static_md|x64 + release_static_mt|x64 = release_static_mt|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|x64.Build.0 = debug_shared|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|x64.ActiveCfg = release_shared|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|x64.Build.0 = release_shared|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|x64.Build.0 = release_static_md|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_shared|x64.Build.0 = debug_shared|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_shared|x64.ActiveCfg = release_shared|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_shared|x64.Build.0 = release_shared|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_md|x64.Build.0 = release_static_md|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_mt|x64.Build.0 = release_static_mt|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CppUnit/CppUnit_x64_vs100.vcxproj b/CppUnit/CppUnit_x64_vs100.vcxproj new file mode 100644 index 000000000..c3914b0fe --- /dev/null +++ b/CppUnit/CppUnit_x64_vs100.vcxproj @@ -0,0 +1,409 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + CppUnit + {138BB448-808A-4FE5-A66D-78D1F8770F59} + MFCProj + + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + StaticLibrary + false + MultiByte + + + DynamicLibrary + false + MultiByte + + + DynamicLibrary + false + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + ..\bin64\ + obj64\$(Configuration)\ + true + ..\bin64\ + obj64\$(Configuration)\ + false + ..\lib64\ + obj64\$(Configuration)\ + ..\lib64\ + obj64\$(Configuration)\ + ..\lib64\ + obj64\$(Configuration)\ + ..\lib64\ + obj64\$(Configuration)\ + CppUnit64d + CppUnitmdd + CppUnitmtd + CppUnit64 + CppUnit64md + CppUnit64mt + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib64\CppUnit.tlb + + + + + Disabled + Default + false + include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;CppUnit_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + + + + $(IntDir) + $(IntDir)vc80.pdb + Level3 + true + ProgramDatabase + Default + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c07 + + + NotSet + ..\bin64\CppUnit64d.dll + true + %(AdditionalLibraryDirectories) + true + ..\bin64\CppUnit64d.pdb + ..\lib64\CppUnitd.lib + MachineX64 + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib64\CppUnit.tlb + + + + + Disabled + OnlyExplicitInline + true + Speed + true + include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_AFXDLL;POCO_DLL;CppUnit_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + + + + $(IntDir) + $(IntDir)vc70.pdb + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c07 + + + ..\bin64\CppUnit64.dll + true + %(AdditionalLibraryDirectories) + + + ..\lib64\CppUnit.lib + MachineX64 + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib64\CppUnit.tlb + + + + + Disabled + Default + false + include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + + + + $(IntDir) + ..\lib64\CppUnitmdd.pdb + Level3 + true + ProgramDatabase + Default + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c07 + + + ..\lib64\CppUnitmdd.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib64\CppUnit.tlb + + + + + Disabled + OnlyExplicitInline + true + Speed + true + include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_AFXDLL;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + + + + $(IntDir) + $(IntDir)vc70.pdb + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c07 + + + ..\lib64\CppUnitmd.lib + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib64\CppUnit.tlb + + + + + Disabled + Default + false + include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + + + + $(IntDir) + ..\lib64\CppUnitmtd.pdb + Level3 + true + ProgramDatabase + Default + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c07 + + + ..\lib64\CppUnitmtd.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib64\CppUnit.tlb + + + + + Disabled + OnlyExplicitInline + true + Speed + true + include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_AFXDLL;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + + + + $(IntDir) + $(IntDir)vc70.pdb + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c07 + + + ..\lib64\CppUnitmt.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CppUnit/CppUnit_x64_vs100.vcxproj.filters b/CppUnit/CppUnit_x64_vs100.vcxproj.filters new file mode 100644 index 000000000..e0ea945ff --- /dev/null +++ b/CppUnit/CppUnit_x64_vs100.vcxproj.filters @@ -0,0 +1,89 @@ + + + + + {d780d541-ae9b-4dc6-9c70-cc0e5498be41} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {102c5e2b-3268-48b6-a3da-c96949868573} + *.h + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + \ No newline at end of file diff --git a/CppUnit/CppUnit_x64_vs90.sln b/CppUnit/CppUnit_x64_vs90.sln new file mode 100644 index 000000000..a34a3ce4b --- /dev/null +++ b/CppUnit/CppUnit_x64_vs90.sln @@ -0,0 +1,49 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppUnit", "CppUnit_x64_vs90.vcproj", "{138BB448-808A-4FE5-A66D-78D1F8770F59}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinTestRunner", "WinTestRunner\WinTestRunner_x64_vs90.vcproj", "{BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}" + ProjectSection(ProjectDependencies) = postProject + {138BB448-808A-4FE5-A66D-78D1F8770F59} = {138BB448-808A-4FE5-A66D-78D1F8770F59} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + debug_static_md|x64 = debug_static_md|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_shared|x64 = release_shared|x64 + release_static_md|x64 = release_static_md|x64 + release_static_mt|x64 = release_static_mt|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|x64.Build.0 = debug_shared|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|x64.ActiveCfg = release_shared|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|x64.Build.0 = release_shared|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|x64.Build.0 = release_static_md|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_shared|x64.Build.0 = debug_shared|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_shared|x64.ActiveCfg = release_shared|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_shared|x64.Build.0 = release_shared|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_md|x64.Build.0 = release_static_md|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD}.release_static_mt|x64.Build.0 = release_static_mt|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CppUnit/CppUnit_x64_vs90.vcproj b/CppUnit/CppUnit_x64_vs90.vcproj new file mode 100644 index 000000000..1f9e7b07b --- /dev/null +++ b/CppUnit/CppUnit_x64_vs90.vcproj @@ -0,0 +1,670 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppUnit/Makefile b/CppUnit/Makefile new file mode 100644 index 000000000..d5d12607a --- /dev/null +++ b/CppUnit/Makefile @@ -0,0 +1,18 @@ +# +# Makefile +# +# $Id: //poco/1.4/CppUnit/Makefile#1 $ +# +# Makefile for Poco CppUnit +# + +include $(POCO_BASE)/build/rules/global + +objects = CppUnitException TestDecorator TestResult TestSuite \ + TestCase TestFailure TestRunner TextTestResult + +target = CppUnit +target_version = 1 +target_libs = + +include $(POCO_BASE)/build/rules/lib diff --git a/CppUnit/WinTestRunner/WinTestRunner_vs100.vcxproj b/CppUnit/WinTestRunner/WinTestRunner_vs100.vcxproj new file mode 100644 index 000000000..1c9add023 --- /dev/null +++ b/CppUnit/WinTestRunner/WinTestRunner_vs100.vcxproj @@ -0,0 +1,433 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + WinTestRunner + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD} + WinTestRunner + MFCProj + + + + StaticLibrary + Static + MultiByte + + + StaticLibrary + Static + MultiByte + + + StaticLibrary + Dynamic + MultiByte + + + StaticLibrary + Dynamic + MultiByte + + + DynamicLibrary + Dynamic + MultiByte + + + DynamicLibrary + Dynamic + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + ..\..\bin\ + obj\$(Configuration)\ + false + ..\..\bin\ + obj\$(Configuration)\ + true + ..\..\lib\ + obj\$(Configuration)\ + ..\..\lib\ + obj\$(Configuration)\ + ..\..\lib\ + obj\$(Configuration)\ + ..\..\lib\ + obj\$(Configuration)\ + WinTestRunnerd + WinTestRunnermdd + WinTestRunnermtd + WinTestRunner + WinTestRunnermd + WinTestRunnermt + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib\wintestrunner.tlb + + + + + Disabled + OnlyExplicitInline + true + Speed + true + include;..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WinTestRunner_EXPORTS;WINVER=0x0500;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + false + true + true + true + + + + + $(IntDir) + $(IntDir)vc70.pdb + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0000 + + + cppunit.lib;winmm.lib;%(AdditionalDependencies) + ..\..\bin\WinTestRunner.dll + true + ..\..\lib;%(AdditionalLibraryDirectories) + + + Windows + ..\..\lib\WinTestRunner.lib + MachineX86 + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib\wintestrunner.tlb + + + + + Disabled + Default + false + include;..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WinTestRunner_EXPORTS;WINVER=0x0500;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + + + + $(IntDir) + $(IntDir)vc70.pdb + Level3 + true + EditAndContinue + Default + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0000 + + + cppunitd.lib;winmm.lib;%(AdditionalDependencies) + NotSet + ..\..\bin\WinTestRunnerd.dll + true + ..\..\lib;%(AdditionalLibraryDirectories) + true + ..\..\bin\WinTestRunnerd.pdb + Windows + ..\..\lib\WinTestRunnerd.lib + MachineX86 + + + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib\wintestrunner.tlb + + + + + Disabled + Default + false + include;..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;WINVER=0x0500;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + + + + $(IntDir) + ..\..\lib\WinTestRunnermdd.pdb + Level3 + true + EditAndContinue + Default + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0000 + + + ..\..\lib\WinTestRunnermdd.lib + MachineX86 + + + Copying resources... + copy "$(IntDir)$(ProjectName).res" ..\..\lib\ + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib\wintestrunner.tlb + + + + + Disabled + OnlyExplicitInline + true + Speed + true + include;..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;WINVER=0x0500;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + false + true + true + true + + + + + $(IntDir) + $(IntDir)vc70.pdb + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0000 + + + ..\..\lib\WinTestRunnermd.lib + MachineX86 + + + Copying resources... + copy "$(IntDir)$(ProjectName).res" ..\..\lib\ + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib\wintestrunner.tlb + + + + + Disabled + Default + false + include;..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;WINVER=0x0500;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + + + + $(IntDir) + ..\..\lib\WinTestRunnermtd.pdb + Level3 + true + EditAndContinue + Default + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0000 + + + ..\..\lib\WinTestRunnermtd.lib + MachineX86 + + + Copying resources... + copy "$(IntDir)$(ProjectName).res" ..\..\lib\ + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib\wintestrunner.tlb + + + + + Disabled + OnlyExplicitInline + true + Speed + true + include;..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;WINVER=0x0500;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreaded + false + true + true + true + + + + + $(IntDir) + $(IntDir)vc70.pdb + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0000 + + + ..\..\lib\WinTestRunnermt.lib + MachineX86 + + + Copying resources... + copy "$(IntDir)$(ProjectName).res" ..\..\lib\ + + + + + + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CppUnit/WinTestRunner/WinTestRunner_vs100.vcxproj.filters b/CppUnit/WinTestRunner/WinTestRunner_vs100.vcxproj.filters new file mode 100644 index 000000000..4f586ae3e --- /dev/null +++ b/CppUnit/WinTestRunner/WinTestRunner_vs100.vcxproj.filters @@ -0,0 +1,61 @@ + + + + + {24a6f8c4-75a8-42be-afd6-586f23d02e79} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {8916ac8c-0791-483a-a494-0c7a0c9b6f8f} + *.h + + + {bcd6db0a-4bfb-4d8d-bf3b-efdbcc45d3b2} + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Resource Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/CppUnit/WinTestRunner/WinTestRunner_vs71.vcproj b/CppUnit/WinTestRunner/WinTestRunner_vs71.vcproj new file mode 100644 index 000000000..b3c14c5b0 --- /dev/null +++ b/CppUnit/WinTestRunner/WinTestRunner_vs71.vcproj @@ -0,0 +1,504 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppUnit/WinTestRunner/WinTestRunner_vs80.vcproj b/CppUnit/WinTestRunner/WinTestRunner_vs80.vcproj new file mode 100644 index 000000000..5d9eef3eb --- /dev/null +++ b/CppUnit/WinTestRunner/WinTestRunner_vs80.vcproj @@ -0,0 +1,678 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppUnit/WinTestRunner/WinTestRunner_vs90.vcproj b/CppUnit/WinTestRunner/WinTestRunner_vs90.vcproj new file mode 100644 index 000000000..65714ab6c --- /dev/null +++ b/CppUnit/WinTestRunner/WinTestRunner_vs90.vcproj @@ -0,0 +1,674 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppUnit/WinTestRunner/WinTestRunner_x64_vs100.vcxproj b/CppUnit/WinTestRunner/WinTestRunner_x64_vs100.vcxproj new file mode 100644 index 000000000..fb025754c --- /dev/null +++ b/CppUnit/WinTestRunner/WinTestRunner_x64_vs100.vcxproj @@ -0,0 +1,433 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + WinTestRunner + {BA620CC4-0E7D-4B9D-88E2-6DBE5C51FCBD} + WinTestRunner + MFCProj + + + + StaticLibrary + Static + MultiByte + + + StaticLibrary + Static + MultiByte + + + StaticLibrary + Dynamic + MultiByte + + + StaticLibrary + Dynamic + MultiByte + + + DynamicLibrary + Dynamic + MultiByte + + + DynamicLibrary + Dynamic + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + ..\..\bin64\ + obj64\$(Configuration)\ + false + ..\..\bin\ + obj64\$(Configuration)\ + true + ..\..\lib64\ + obj64\$(Configuration)\ + ..\..\lib64\ + obj64\$(Configuration)\ + ..\..\lib64\ + obj64\$(Configuration)\ + ..\..\lib64\ + obj64\$(Configuration)\ + WinTestRunner64d + WinTestRunnermdd + WinTestRunnermtd + WinTestRunner + WinTestRunnermd + WinTestRunnermt + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib64\wintestrunner.tlb + + + + + Disabled + OnlyExplicitInline + true + Speed + true + include;..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WinTestRunner_EXPORTS;WINVER=0x0500;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + false + true + true + true + + + + + $(IntDir) + $(IntDir)vc70.pdb + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0000 + + + cppunit.lib;winmm.lib;%(AdditionalDependencies) + ..\..\bin64\WinTestRunner64.dll + true + ..\..\lib64;%(AdditionalLibraryDirectories) + + + Windows + ..\..\lib64\WinTestRunner.lib + MachineX64 + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib64\wintestrunner.tlb + + + + + Disabled + Default + false + include;..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WinTestRunner_EXPORTS;WINVER=0x0500;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + + + + $(IntDir) + $(IntDir)vc70.pdb + Level3 + true + ProgramDatabase + Default + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0000 + + + cppunitd.lib;winmm.lib;%(AdditionalDependencies) + NotSet + ..\..\bin64\WinTestRunner64d.dll + true + ..\..\lib64;%(AdditionalLibraryDirectories) + true + ..\..\bin64\WinTestRunner64d.pdb + Windows + ..\..\lib64\WinTestRunnerd.lib + MachineX64 + + + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib64\wintestrunner.tlb + + + + + Disabled + Default + false + include;..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;WINVER=0x0500;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + + + + $(IntDir) + ..\..\lib64\WinTestRunnermdd.pdb + Level3 + true + ProgramDatabase + Default + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0000 + + + ..\..\lib64\WinTestRunnermdd.lib + MachineX64 + + + Copying resources... + copy "$(IntDir)$(ProjectName).res" ..\..\lib64 + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib64\wintestrunner.tlb + + + + + Disabled + OnlyExplicitInline + true + Speed + true + include;..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;WINVER=0x0500;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + false + true + true + true + + + + + $(IntDir) + $(IntDir)vc70.pdb + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0000 + + + ..\..\lib64\WinTestRunnermd.lib + MachineX64 + + + Copying resources... + copy "$(IntDir)$(ProjectName).res" ..\..\lib64 + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib64\wintestrunner.tlb + + + + + Disabled + Default + false + include;..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;WINVER=0x0500;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + + + + $(IntDir) + ..\..\lib64\WinTestRunnermtd.pdb + Level3 + true + ProgramDatabase + Default + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0000 + + + ..\..\lib64\WinTestRunnermtd.lib + MachineX64 + + + Copying resources... + copy "$(IntDir)$(ProjectName).res" ..\..\lib64 + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\lib64\wintestrunner.tlb + + + + + Disabled + OnlyExplicitInline + true + Speed + true + include;..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;WINVER=0x0500;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreaded + false + true + true + true + + + + + $(IntDir) + $(IntDir)vc70.pdb + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0000 + + + ..\..\lib64\WinTestRunnermt.lib + MachineX64 + + + Copying resources... + copy "$(IntDir)$(ProjectName).res" ..\..\lib64 + + + + + + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CppUnit/WinTestRunner/WinTestRunner_x64_vs100.vcxproj.filters b/CppUnit/WinTestRunner/WinTestRunner_x64_vs100.vcxproj.filters new file mode 100644 index 000000000..a51a3912c --- /dev/null +++ b/CppUnit/WinTestRunner/WinTestRunner_x64_vs100.vcxproj.filters @@ -0,0 +1,61 @@ + + + + + {287a609c-665e-4810-863e-0737d5c606db} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {e90e89b4-cc09-45a8-ac7a-2afec3ded013} + *.h + + + {30a11146-41a7-4d34-b980-7d573885cf6e} + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Resource Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/CppUnit/WinTestRunner/WinTestRunner_x64_vs90.vcproj b/CppUnit/WinTestRunner/WinTestRunner_x64_vs90.vcproj new file mode 100644 index 000000000..3dd2ffb10 --- /dev/null +++ b/CppUnit/WinTestRunner/WinTestRunner_x64_vs90.vcproj @@ -0,0 +1,674 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CppUnit/WinTestRunner/include/WinTestRunner/WinTestRunner.h b/CppUnit/WinTestRunner/include/WinTestRunner/WinTestRunner.h new file mode 100644 index 000000000..a31d397e0 --- /dev/null +++ b/CppUnit/WinTestRunner/include/WinTestRunner/WinTestRunner.h @@ -0,0 +1,77 @@ +// +// WinTestRunner.h +// +// $Id: //poco/1.4/CppUnit/WinTestRunner/include/WinTestRunner/WinTestRunner.h#1 $ +// +// Application shell for CppUnit's TestRunner dialog. +// + + +#ifndef WinTestRunner_H_INCLUDED +#define WinTestRunner_H_INCLUDED + + +#if !defined(POCO_STATIC) +#if defined(WinTestRunner_EXPORTS) +#define WinTestRunner_API __declspec(dllexport) +#else +#define WinTestRunner_API __declspec(dllimport) +#endif +#else +#define WinTestRunner_API +#endif + + +#include "CppUnit/CppUnit.h" +#include +#include + + +namespace CppUnit { + + +class Test; + + +class WinTestRunner_API WinTestRunner +{ +public: + WinTestRunner(); + ~WinTestRunner(); + + void run(); + void addTest(Test* pTest); + +private: + std::vector _tests; +}; + + +class WinTestRunner_API WinTestRunnerApp: public CWinApp + /// A simple application class that hosts the TestRunner dialog. + /// Create a subclass and override the TestMain() method. + /// + /// WinTestRunnerApp supports a batch mode, which runs the + /// test using the standard text-based TestRunner from CppUnit. + /// To enable batch mode, start the application with the "/b" + /// or "/B" argument. Optionally, a filename may be specified + /// where the test output will be written to: "/b:" or + /// "/B:". + /// + /// When run in batch mode, the exit code of the application + /// will denote test success (0) or failure (1). +{ +public: + virtual BOOL InitInstance(); + + virtual void TestMain() = 0; + + DECLARE_MESSAGE_MAP() +}; + + +} // namespace CppUnit + + +#endif // WinTestRunner_H_INCLUDED + diff --git a/CppUnit/WinTestRunner/res/Resource.h b/CppUnit/WinTestRunner/res/Resource.h new file mode 100644 index 000000000..c30c88ece --- /dev/null +++ b/CppUnit/WinTestRunner/res/Resource.h @@ -0,0 +1,27 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by TestRunner.rc +// +#define IDD_DIALOG_TESTRUNNER 129 +#define IDC_LIST 1000 +#define ID_RUN 1001 +#define ID_STOP 1002 +#define IDC_PROGRESS 1003 +#define IDC_INDICATOR 1004 +#define IDC_COMBO_TEST 1005 +#define IDC_STATIC_RUNS 1007 +#define IDC_STATIC_ERRORS 1008 +#define IDC_STATIC_FAILURES 1009 +#define IDC_EDIT_TIME 1010 +#define IDC_CHK_AUTORUN 1013 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 131 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 1014 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/CppUnit/WinTestRunner/res/TestRunner.rc2 b/CppUnit/WinTestRunner/res/TestRunner.rc2 new file mode 100644 index 000000000..55dca09fa --- /dev/null +++ b/CppUnit/WinTestRunner/res/TestRunner.rc2 @@ -0,0 +1,13 @@ +// +// TESTRUNNER.RC2 - resources Microsoft Visual C++ does not edit directly +// + +#ifdef APSTUDIO_INVOKED + #error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// Add manually edited resources here... + +///////////////////////////////////////////////////////////////////////////// diff --git a/CppUnit/WinTestRunner/res/WinTestRunner.rc b/CppUnit/WinTestRunner/res/WinTestRunner.rc new file mode 100644 index 000000000..c4056f269 --- /dev/null +++ b/CppUnit/WinTestRunner/res/WinTestRunner.rc @@ -0,0 +1,175 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" + "#ifdef _WIN32\r\n" + "LANGUAGE 9, 1\r\n" + "#pragma code_page(1252)\r\n" + "#endif\r\n" + "#include ""..\\res\\WinTestRunner.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#include ""afxres.rc"" // Standard components\r\n" + "#endif\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "FileDescription", "CppUnit WinTestRunner DLL" + VALUE "FileVersion", "1, 0, 0, 1" + VALUE "InternalName", "WinTestRunner" + VALUE "LegalCopyright", "Copyright (c) 2005" + VALUE "OriginalFilename", "TestRunner.dll" + VALUE "ProductName", "CppUnit WinTestRunner Dynamic Link Library" + VALUE "ProductVersion", "1, 0, 0, 1" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_DIALOG_TESTRUNNER DIALOGEX 0, 0, 512, 300 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "CppUnit WinTestRunner" +FONT 8, "MS Sans Serif", 0, 0, 0x0 +BEGIN + COMBOBOX IDC_COMBO_TEST,7,20,424,273,CBS_DROPDOWNLIST | + WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Run",ID_RUN,455,7,50,14 + DEFPUSHBUTTON "Stop",ID_STOP,455,24,50,14 + CONTROL "List1",IDC_LIST,"SysListView32",LVS_REPORT | WS_BORDER | + WS_TABSTOP,7,110,498,160 + PUSHBUTTON "Close",IDOK,455,279,50,14 + LTEXT "Test Name:",IDC_STATIC,7,9,179,9 + LTEXT "Progress:",IDC_STATIC,7,55,49,9 + LTEXT "Errors and Failures:",IDC_STATIC,7,99,67,9 + LTEXT "Runs:",IDC_STATIC,457,54,26,10 + LTEXT "Failures:",IDC_STATIC,457,80,26,10 + LTEXT "Errors:",IDC_STATIC,457,67,26,10 + RTEXT "0",IDC_STATIC_RUNS,487,54,16,10 + RTEXT "0",IDC_STATIC_ERRORS,487,67,16,10 + RTEXT "0",IDC_STATIC_FAILURES,487,80,16,10 + EDITTEXT IDC_EDIT_TIME,7,281,440,12,ES_AUTOHSCROLL | ES_READONLY | + NOT WS_BORDER + LTEXT "",IDC_PROGRESS,7,67,424,20,SS_SUNKEN | NOT WS_VISIBLE + CONTROL "Auto Run",IDC_CHK_AUTORUN,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | WS_TABSTOP,383,38,46,10 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_DIALOG_TESTRUNNER, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 505 + TOPMARGIN, 7 + BOTTOMMARGIN, 293 + END +END +#endif // APSTUDIO_INVOKED + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE 9, 1 +#pragma code_page(1252) +#endif +#include "afxres.rc" // Standard components +#endif +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/CppUnit/WinTestRunner/src/ActiveTest.cpp b/CppUnit/WinTestRunner/src/ActiveTest.cpp new file mode 100644 index 000000000..f0c6cf3c4 --- /dev/null +++ b/CppUnit/WinTestRunner/src/ActiveTest.cpp @@ -0,0 +1,44 @@ +// +// ActiveTest.cpp +// +// $Id: //poco/1.4/CppUnit/WinTestRunner/src/ActiveTest.cpp#1 $ +// + + +#include +#include "ActiveTest.h" + + +namespace CppUnit { + + +// Spawn a thread to a test +void ActiveTest::run(TestResult* result) +{ + CWinThread* thread; + + setTestResult(result); + _runCompleted.ResetEvent(); + + thread = AfxBeginThread(threadFunction, this, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); + DuplicateHandle(GetCurrentProcess(), thread->m_hThread, GetCurrentProcess(), &_threadHandle, 0, FALSE, DUPLICATE_SAME_ACCESS); + + thread->ResumeThread(); +} + + +// Simple execution thread. Assuming that an ActiveTest instance +// only creates one of these at a time. +UINT ActiveTest::threadFunction(LPVOID thisInstance) +{ + ActiveTest* test = (ActiveTest*) thisInstance; + + test->run(); + test->_runCompleted.SetEvent(); + + return 0; +} + + +} // namespace CppUnit + diff --git a/CppUnit/WinTestRunner/src/ActiveTest.h b/CppUnit/WinTestRunner/src/ActiveTest.h new file mode 100644 index 000000000..f6c9ae457 --- /dev/null +++ b/CppUnit/WinTestRunner/src/ActiveTest.h @@ -0,0 +1,89 @@ +// +// ActiveTest.h +// +// $Id: //poco/1.4/CppUnit/WinTestRunner/src/ActiveTest.h#1 $ +// + + +#ifndef ActiveTest_INCLUDED +#define ActiveTest_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include "CppUnit/TestDecorator.h" +#include + + +namespace CppUnit { + + +/* A Microsoft-specific active test + * + * An active test manages its own + * thread of execution. This one + * is very simple and only sufficient + * for the limited use we put it through + * in the TestRunner. It spawns a thread + * on run (TestResult *) and signals + * completion of the test. + * + * We assume that only one thread + * will be active at once for each + * instance. + * + */ +class ActiveTest: public TestDecorator +{ +public: + ActiveTest(Test* test); + ~ActiveTest(); + + void run(TestResult* result); + +protected: + HANDLE _threadHandle; + CEvent _runCompleted; + TestResult* _currentTestResult; + + void run (); + void setTestResult(TestResult* result); + static UINT threadFunction(LPVOID thisInstance); +}; + + +// Construct the active test +inline ActiveTest::ActiveTest(Test *test): TestDecorator(test) +{ + _currentTestResult = NULL; + _threadHandle = INVALID_HANDLE_VALUE; +} + + +// Pend until the test has completed +inline ActiveTest::~ActiveTest() +{ + CSingleLock(&_runCompleted, TRUE); + CloseHandle(_threadHandle); +} + + +// Set the test result that we are to run +inline void ActiveTest::setTestResult(TestResult* result) +{ + _currentTestResult = result; +} + + +// Run our test result +inline void ActiveTest::run() +{ + TestDecorator::run(_currentTestResult); +} + + +} // namespace CppUnit + + +#endif // ActiveTest_INCLUDED + + diff --git a/CppUnit/WinTestRunner/src/DLLMain.cpp b/CppUnit/WinTestRunner/src/DLLMain.cpp new file mode 100644 index 000000000..f20ea5b1e --- /dev/null +++ b/CppUnit/WinTestRunner/src/DLLMain.cpp @@ -0,0 +1,50 @@ +// +// DLLMain.cpp +// +// $Id: //poco/1.4/CppUnit/WinTestRunner/src/DLLMain.cpp#1 $ +// + + +#include +#include + + +static AFX_EXTENSION_MODULE TestRunnerDLL = { NULL, NULL }; + + +extern "C" int APIENTRY +DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) +{ + // Remove this if you use lpReserved + UNREFERENCED_PARAMETER(lpReserved); + + if (dwReason == DLL_PROCESS_ATTACH) + { + TRACE0("WinTestRunner.DLL Initializing\n"); + + // Extension DLL one-time initialization + if (!AfxInitExtensionModule(TestRunnerDLL, hInstance)) + return 0; + + // Insert this DLL into the resource chain + // NOTE: If this Extension DLL is being implicitly linked to by + // an MFC Regular DLL (such as an ActiveX Control) + // instead of an MFC application, then you will want to + // remove this line from DllMain and put it in a separate + // function exported from this Extension DLL. The Regular DLL + // that uses this Extension DLL should then explicitly call that + // function to initialize this Extension DLL. Otherwise, + // the CDynLinkLibrary object will not be attached to the + // Regular DLL's resource chain, and serious problems will + // result. + + new CDynLinkLibrary(TestRunnerDLL); + } + else if (dwReason == DLL_PROCESS_DETACH) + { + TRACE0("WinTestRunner.DLL Terminating\n"); + // Terminate the library before destructors are called + AfxTermExtensionModule(TestRunnerDLL); + } + return 1; // ok +} diff --git a/CppUnit/WinTestRunner/src/GUITestResult.cpp b/CppUnit/WinTestRunner/src/GUITestResult.cpp new file mode 100644 index 000000000..9a8c7b75c --- /dev/null +++ b/CppUnit/WinTestRunner/src/GUITestResult.cpp @@ -0,0 +1,52 @@ +// +// GUITestResult.cpp +// +// $Id: //poco/1.4/CppUnit/WinTestRunner/src/GUITestResult.cpp#1 $ +// + + +#include "TestRunnerDlg.h" +#include "GUITestResult.h" + + +namespace CppUnit { + + +void GUITestResult::addError(Test *test, CppUnitException *e) +{ + ExclusiveZone zone(_syncObject); + + TestResult::addError(test, e); + _runner->addError(this, test, e); +} + + +void GUITestResult::addFailure(Test *test, CppUnitException *e) +{ + ExclusiveZone zone(_syncObject); + + TestResult::addFailure(test, e); + _runner->addFailure(this, test, e); +} + + +void GUITestResult::startTest(Test *test) +{ + ExclusiveZone zone(_syncObject); + + TestResult::startTest(test); + _runner->startTest(test); +} + + +void GUITestResult::endTest(Test *test) +{ + ExclusiveZone zone(_syncObject); + + TestResult::endTest(test); + _runner->endTest(this, test); +} + + +} // namespace CppUnit + diff --git a/CppUnit/WinTestRunner/src/GUITestResult.h b/CppUnit/WinTestRunner/src/GUITestResult.h new file mode 100644 index 000000000..981b640d8 --- /dev/null +++ b/CppUnit/WinTestRunner/src/GUITestResult.h @@ -0,0 +1,83 @@ +// +// GUITestResult.h +// +// $Id: //poco/1.4/CppUnit/WinTestRunner/src/GUITestResult.h#1 $ +// + + +#ifndef GuiTestResult_INCLUDED +#define GuiTestResult_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include "CppUnit/TestResult.h" +#include + + +namespace CppUnit { + + +class TestRunnerDlg; + + +class GUITestResult: public TestResult +{ +public: + GUITestResult(TestRunnerDlg* runner); + ~GUITestResult(); + + void addError(Test* test, CppUnitException* e); + void addFailure(Test* test, CppUnitException* e); + + void startTest(Test* test); + void endTest(Test* test); + void stop(); + +protected: + class LightweightSynchronizationObject: public TestResult::SynchronizationObject + { + public: + void lock() + { + _syncObject.Lock(); + } + + void unlock() + { + _syncObject.Unlock(); + } + + private: + CCriticalSection _syncObject; + }; + +private: + TestRunnerDlg *_runner; +}; + + + +// Construct with lightweight synchronization +inline GUITestResult::GUITestResult(TestRunnerDlg* runner): _runner(runner) +{ + setSynchronizationObject(new LightweightSynchronizationObject()); +} + + +// Destructor +inline GUITestResult::~GUITestResult() +{ +} + + +// Override without protection to prevent deadlock +inline void GUITestResult::stop() +{ + _stop = true; +} + + +} // namespace CppUnit + + +#endif // GuiTestResult_INCLUDED diff --git a/CppUnit/WinTestRunner/src/ProgressBar.cpp b/CppUnit/WinTestRunner/src/ProgressBar.cpp new file mode 100644 index 000000000..f51a772d0 --- /dev/null +++ b/CppUnit/WinTestRunner/src/ProgressBar.cpp @@ -0,0 +1,140 @@ +// +// ProgressBar.cpp +// +// $Id: //poco/1.4/CppUnit/WinTestRunner/src/ProgressBar.cpp#1 $ +// + + +#include "ProgressBar.h" + + +namespace CppUnit { + + +// Paint the progress bar in response to a paint message +void ProgressBar::paint(CDC& dc) +{ + paintBackground (dc); + paintStatus (dc); +} + + +// Paint the background of the progress bar region +void ProgressBar::paintBackground (CDC& dc) +{ + CBrush brshBackground; + CPen penGray (PS_SOLID, 1, RGB (128, 128, 128)); + CPen penWhite (PS_SOLID, 1, RGB (255, 255, 255)); + + VERIFY (brshBackground.CreateSolidBrush (::GetSysColor (COLOR_BTNFACE))); + + dc.FillRect (_bounds, &brshBackground); + + CPen *pOldPen; + + pOldPen = dc.SelectObject (&penGray); + { + dc.MoveTo (_bounds.left, _bounds.top); + dc.LineTo (_bounds.left + _bounds.Width () -1, _bounds.top); + + dc.MoveTo (_bounds.left, _bounds.top); + dc.LineTo (_bounds.left, _bounds.top + _bounds.Height () -1); + + } + dc.SelectObject (&penWhite); + { + dc.MoveTo (_bounds.left + _bounds.Width () -1, _bounds.top); + dc.LineTo (_bounds.left + _bounds.Width () -1, _bounds.top + _bounds.Height () -1); + + dc.MoveTo (_bounds.left, _bounds.top + _bounds.Height () -1); + dc.LineTo (_bounds.left + _bounds.Width () -1, _bounds.top + _bounds.Height () -1); + + } + dc.SelectObject (pOldPen); + +} + + +// Paint the actual status of the progress bar +void ProgressBar::paintStatus (CDC& dc) +{ + if (_progress <= 0) + return; + + CBrush brshStatus; + CRect rect (_bounds.left, _bounds.top, + _bounds.left + _progressX, _bounds.bottom); + + COLORREF statusColor = getStatusColor (); + + VERIFY (brshStatus.CreateSolidBrush (statusColor)); + + rect.DeflateRect (1, 1); + dc.FillRect (rect, &brshStatus); + +} + + +// Paint the current step +void ProgressBar::paintStep (int startX, int endX) +{ + // kludge: painting the whole region on each step + _baseWindow->RedrawWindow (_bounds); + _baseWindow->UpdateWindow (); + +} + + +// Setup the progress bar for execution over a total number of steps +void ProgressBar::start (int total) +{ + _total = total; + reset (); +} + + +// Take one step, indicating whether it was a successful step +void ProgressBar::step (bool successful) +{ + _progress++; + + int x = _progressX; + + _progressX = scale (_progress); + + if (!_error && !successful) + { + _error = true; + x = 1; + } + + paintStep (x, _progressX); + +} + + +// Map from steps to display units +int ProgressBar::scale (int value) +{ + if (_total > 0) + return max (1, value * (_bounds.Width () - 1) / _total); + + return value; + +} + + +// Reset the progress bar +void ProgressBar::reset () +{ + _progressX = 1; + _progress = 0; + _error = false; + + _baseWindow->RedrawWindow (_bounds); + _baseWindow->UpdateWindow (); + +} + + +} // namespace CppUnit diff --git a/CppUnit/WinTestRunner/src/ProgressBar.h b/CppUnit/WinTestRunner/src/ProgressBar.h new file mode 100644 index 000000000..8e937771d --- /dev/null +++ b/CppUnit/WinTestRunner/src/ProgressBar.h @@ -0,0 +1,74 @@ +// +// ProgressBar.h +// +// $Id: //poco/1.4/CppUnit/WinTestRunner/src/ProgressBar.h#1 $ +// + + +#ifndef ProgressBar_INCLUDED +#define ProgressBar_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include + + +namespace CppUnit { + + +/* A Simple ProgressBar for test execution display + */ +class ProgressBar +{ +public: + ProgressBar(CWnd* baseWindow, CRect& bounds); + + void step(bool successful); + void paint(CDC& dc); + int scale(int value); + void reset(); + void start(int total); + +protected: + void paintBackground(CDC& dc); + void paintStatus(CDC& dc); + COLORREF getStatusColor(); + void paintStep(int startX, int endX); + + CWnd* _baseWindow; + CRect _bounds; + + bool _error; + int _total; + int _progress; + int _progressX; +}; + + +// Construct a ProgressBar +inline ProgressBar::ProgressBar(CWnd* baseWindow, CRect& bounds): + _baseWindow(baseWindow), + _bounds(bounds), + _error(false), + _total(0), + _progress(0), + _progressX(0) +{ + WINDOWINFO wi; + wi.cbSize = sizeof(WINDOWINFO); + baseWindow->GetWindowInfo(&wi); + _bounds.OffsetRect(-wi.rcClient.left, -wi.rcClient.top); +} + + +// Get the current color +inline COLORREF ProgressBar::getStatusColor() +{ + return _error ? RGB(255, 0, 0) : RGB(0, 255, 0); +} + + +} // namespace CppUnit + + +#endif // ProgressBar_INCLUDED diff --git a/CppUnit/WinTestRunner/src/SynchronizedTestResult.h b/CppUnit/WinTestRunner/src/SynchronizedTestResult.h new file mode 100644 index 000000000..84f461547 --- /dev/null +++ b/CppUnit/WinTestRunner/src/SynchronizedTestResult.h @@ -0,0 +1,106 @@ +#ifndef SYNCHRONIZEDTESTRESULTDECORATOR_H +#define SYNCHRONIZEDTESTRESULTDECORATOR_H + +#include +#include "TestResultDecorator.h" + +class SynchronizedTestResult : public TestResultDecorator +{ +public: + SynchronizedTestResult (TestResult *result); + ~SynchronizedTestResult (); + + + bool shouldStop (); + void addError (Test *test, CppUnitException *e); + void addFailure (Test *test, CppUnitException *e); + void startTest (Test *test); + void endTest (Test *test); + int runTests (); + int testErrors (); + int testFailures (); + bool wasSuccessful (); + void stop (); + + vector& errors (); + vector& failures (); + +private: + CCriticalSection m_criticalSection; + +}; + + +// Constructor +inline SynchronizedTestResult::SynchronizedTestResult (TestResult *result) +: TestResultDecorator (result) {} + +// Destructor +inline SynchronizedTestResult::~SynchronizedTestResult () +{} + +// Returns whether the test should stop +inline bool SynchronizedTestResult::shouldStop () +{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->shouldStop (); } + + +// Adds an error to the list of errors. The passed in exception +// caused the error +inline void SynchronizedTestResult::addError (Test *test, CppUnitException *e) +{ CSingleLock sync (&m_criticalSection, TRUE); m_result->addError (test, e); } + + +// Adds a failure to the list of failures. The passed in exception +// caused the failure. +inline void SynchronizedTestResult::addFailure (Test *test, CppUnitException *e) +{ CSingleLock sync (&m_criticalSection, TRUE); m_result->addFailure (test, e); } + + +// Informs the result that a test will be started. +inline void SynchronizedTestResult::startTest (Test *test) +{ CSingleLock sync (&m_criticalSection, TRUE); m_result->startTest (test); } + + +// Informs the result that a test was completed. +inline void SynchronizedTestResult::endTest (Test *test) +{ CSingleLock sync (&m_criticalSection, TRUE); m_result->endTest (test); } + + +// Gets the number of run tests. +inline int SynchronizedTestResult::runTests () +{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->runTests (); } + + +// Gets the number of detected errors. +inline int SynchronizedTestResult::testErrors () +{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->testErrors (); } + + +// Gets the number of detected failures. +inline int SynchronizedTestResult::testFailures () +{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->testFailures (); } + + +// Returns whether the entire test was successful or not. +inline bool SynchronizedTestResult::wasSuccessful () +{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->wasSuccessful (); } + + +// Marks that the test run should stop. +inline void SynchronizedTestResult::stop () +{ CSingleLock sync (&m_criticalSection, TRUE); m_result->stop (); } + + +// Returns a vector of the errors. +inline vector& SynchronizedTestResult::errors () +{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->errors (); } + + +// Returns a vector of the failures. +inline vector& SynchronizedTestResult::failures () +{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->failures (); } + + +#endif + + diff --git a/CppUnit/WinTestRunner/src/TestResultDecorator.h b/CppUnit/WinTestRunner/src/TestResultDecorator.h new file mode 100644 index 000000000..ed2d46212 --- /dev/null +++ b/CppUnit/WinTestRunner/src/TestResultDecorator.h @@ -0,0 +1,102 @@ +#ifndef CPP_UNIT_TESTRESULTDECORATOR_H +#define CPP_UNIT_TESTRESULTDECORATOR_H + +#include "TestResult.h" + +class TestResultDecorator +{ +public: + TestResultDecorator (TestResult *result); + virtual ~TestResultDecorator (); + + + virtual bool shouldStop (); + virtual void addError (Test *test, CppUnitException *e); + virtual void addFailure (Test *test, CppUnitException *e); + virtual void startTest (Test *test); + virtual void endTest (Test *test); + virtual int runTests (); + virtual int testErrors (); + virtual int testFailures (); + virtual bool wasSuccessful (); + virtual void stop (); + + vector& errors (); + vector& failures (); + +protected: + TestResult *m_result; +}; + + +inline TestResultDecorator::TestResultDecorator (TestResult *result) +: m_result (result) {} + +inline TestResultDecorator::~TestResultDecorator () +{} + +// Returns whether the test should stop +inline bool TestResultDecorator::shouldStop () +{ return m_result->shouldStop (); } + + +// Adds an error to the list of errors. The passed in exception +// caused the error +inline void TestResultDecorator::addError (Test *test, CppUnitException *e) +{ m_result->addError (test, e); } + + +// Adds a failure to the list of failures. The passed in exception +// caused the failure. +inline void TestResultDecorator::addFailure (Test *test, CppUnitException *e) +{ m_result->addFailure (test, e); } + + +// Informs the result that a test will be started. +inline void TestResultDecorator::startTest (Test *test) +{ m_result->startTest (test); } + + +// Informs the result that a test was completed. +inline void TestResultDecorator::endTest (Test *test) +{ m_result->endTest (test); } + + +// Gets the number of run tests. +inline int TestResultDecorator::runTests () +{ return m_result->runTests (); } + + +// Gets the number of detected errors. +inline int TestResultDecorator::testErrors () +{ return m_result->testErrors (); } + + +// Gets the number of detected failures. +inline int TestResultDecorator::testFailures () +{ return m_result->testFailures (); } + + +// Returns whether the entire test was successful or not. +inline bool TestResultDecorator::wasSuccessful () +{ return m_result->wasSuccessful (); } + + +// Marks that the test run should stop. +inline void TestResultDecorator::stop () +{ m_result->stop (); } + + +// Returns a vector of the errors. +inline vector& TestResultDecorator::errors () +{ return m_result->errors (); } + + +// Returns a vector of the failures. +inline vector& TestResultDecorator::failures () +{ return m_result->failures (); } + + +#endif + + diff --git a/CppUnit/WinTestRunner/src/TestRunnerDlg.cpp b/CppUnit/WinTestRunner/src/TestRunnerDlg.cpp new file mode 100644 index 000000000..9ad6b4690 --- /dev/null +++ b/CppUnit/WinTestRunner/src/TestRunnerDlg.cpp @@ -0,0 +1,439 @@ +// +// TestRunnerDlg.cpp +// +// $Id: //poco/1.4/CppUnit/WinTestRunner/src/TestRunnerDlg.cpp#1 $ +// + + +#include +#include +#include +#include +#include "TestRunnerDlg.h" +#include "ActiveTest.h" +#include "GUITestResult.h" +#include "ProgressBar.h" +#include "CppUnit/TestSuite.h" +#include "TestRunnerDlg.h" + + +namespace CppUnit { + + +TestRunnerDlg::TestRunnerDlg(CWnd* pParent): CDialog(TestRunnerDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(TestRunnerDlg) + // NOTE: the ClassWizard will add member initialization here + //}}AFX_DATA_INIT + + _testsProgress = 0; + _selectedTest = 0; + _currentTest = 0; +} + + +void TestRunnerDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(TestRunnerDlg) + // NOTE: the ClassWizard will add DDX and DDV calls here + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(TestRunnerDlg, CDialog) + //{{AFX_MSG_MAP(TestRunnerDlg) + ON_BN_CLICKED(ID_RUN, OnRun) + ON_BN_CLICKED(ID_STOP, OnStop) + ON_CBN_SELCHANGE(IDC_COMBO_TEST, OnSelchangeComboTest) + ON_BN_CLICKED(IDC_CHK_AUTORUN, OnBnClickedAutorun) + ON_WM_PAINT() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + + +BOOL TestRunnerDlg::OnInitDialog() +{ + CDialog::OnInitDialog(); + + CListCtrl *listCtrl = (CListCtrl *)GetDlgItem (IDC_LIST); + CComboBox *comboBox = (CComboBox *)GetDlgItem (IDC_COMBO_TEST); + + ASSERT (listCtrl); + ASSERT (comboBox); + + CString title; + GetWindowText(title); +#if defined(_DEBUG) + title.Append(" [debug]"); +#else + title.Append(" [release]"); +#endif + SetWindowText(title); + + listCtrl->InsertColumn (0,"Type", LVCFMT_LEFT, 16 + listCtrl->GetStringWidth ("Type"), 1); + listCtrl->InsertColumn (1,"Name", LVCFMT_LEFT, 16 * listCtrl->GetStringWidth ("X"), 2); + listCtrl->InsertColumn (2,"Failed Condition", LVCFMT_LEFT, 24 * listCtrl->GetStringWidth ("M"), 3); + listCtrl->InsertColumn (3,"Line", LVCFMT_LEFT, 16 + listCtrl->GetStringWidth ("0000"), 4); + listCtrl->InsertColumn (4,"File Name", LVCFMT_LEFT, 36 * listCtrl->GetStringWidth ("M"), 5); + + int numberOfCases = 0; + + CWinApp* pApp = AfxGetApp(); + CString lastTestCS = pApp->GetProfileString("Tests", "lastTest"); + std::string lastTest((LPCSTR) lastTestCS); + int sel = -1; + for (std::vector::iterator it = _tests.begin (); it != _tests.end (); ++it) + { + std::string cbName(it->level*4, ' '); + cbName.append(it->pTest->toString()); + comboBox->AddString (cbName.c_str ()); + if (sel < 0) + { + if (lastTest.empty() || lastTest == it->pTest->toString()) + { + _selectedTest = it->pTest; + sel = numberOfCases; + } + } + numberOfCases++; + } + + if (numberOfCases > 0) + { + if (sel < 0) + { + _selectedTest = _tests[0].pTest; + sel = 0; + } + comboBox->SetCurSel (sel); + } + else + { + beRunDisabled (); + } + CWnd *pProgress = GetDlgItem(IDC_PROGRESS); + CRect rect; + pProgress->GetWindowRect(&rect); + _testsProgress = new ProgressBar (this, rect); + + CButton* autoRunBtn = (CButton*) GetDlgItem(IDC_CHK_AUTORUN); + autoRunBtn->SetCheck(pApp->GetProfileInt("Tests", "autoRun", BST_UNCHECKED)); + + reset (); + + if (autoRunBtn->GetCheck() == BST_CHECKED) + { + OnRun(); + } + + return TRUE; // return TRUE unless you set the focus to a control + // EXCEPTION: OCX Property Pages should return FALSE +} + + +TestRunnerDlg::~TestRunnerDlg () +{ + freeState (); + delete _testsProgress; +} + + +void TestRunnerDlg::OnRun() +{ + if (_selectedTest == 0) + return; + + freeState (); + reset (); + + beRunning (); + + int numberOfTests = _selectedTest->countTestCases (); + + _testsProgress->start (numberOfTests); + + _result = new GUITestResult ((TestRunnerDlg *)this); + _activeTest = new ActiveTest (_selectedTest); + + _testStartTime = timeGetTime (); + + _activeTest->run (_result); + + _testEndTime = timeGetTime (); + +} + + +void TestRunnerDlg::addListEntry(const std::string& type, TestResult *result, Test *test, CppUnitException *e) +{ + char stage [80]; + LV_ITEM lvi; + CListCtrl *listCtrl = (CListCtrl *)GetDlgItem (IDC_LIST); + int currentEntry = result->testErrors () + result->testFailures () -1; + + sprintf (stage, "%s", type.c_str ()); + + lvi.mask = LVIF_TEXT; + lvi.iItem = currentEntry; + lvi.iSubItem = 0; + lvi.pszText = stage; + lvi.iImage = 0; + lvi.stateMask = 0; + lvi.state = 0; + + listCtrl->InsertItem (&lvi); + + // Set class string + listCtrl->SetItemText (currentEntry, 1, test->toString ().c_str ()); + + // Set the asserted text + listCtrl->SetItemText(currentEntry, 2, e->what ()); + + // Set the line number + if (e->lineNumber () == CppUnitException::CPPUNIT_UNKNOWNLINENUMBER) + sprintf (stage, ""); + else + sprintf (stage, "%ld", e->lineNumber ()); + + listCtrl->SetItemText(currentEntry, 3, stage); + + // Set the file name + listCtrl->SetItemText(currentEntry, 4, e->fileName ().c_str ()); + + listCtrl->RedrawItems (currentEntry, currentEntry); + listCtrl->UpdateWindow (); + +} + + +void TestRunnerDlg::addError (TestResult *result, Test *test, CppUnitException *e) +{ + addListEntry ("Error", result, test, e); + _errors++; + + _currentTest = 0; + updateCountsDisplay (); + +} + + +void TestRunnerDlg::addFailure (TestResult *result, Test *test, CppUnitException *e) +{ + addListEntry ("Failure", result, test, e); + _failures++; + + _currentTest = 0; + updateCountsDisplay (); + +} + + +void TestRunnerDlg::startTest(Test* test) +{ + _currentTest = test; + updateCountsDisplay(); +} + + +void TestRunnerDlg::endTest (TestResult *result, Test *test) +{ + if (_selectedTest == 0) + return; + _currentTest = 0; + + _testsRun++; + updateCountsDisplay (); + _testsProgress->step (_failures == 0 && _errors == 0); + + _testEndTime = timeGetTime (); + + updateCountsDisplay (); + + if (_testsRun >= _selectedTest->countTestCases ()) + beIdle (); +} + + +void TestRunnerDlg::beRunning () +{ + CButton *runButton = (CButton *)GetDlgItem (ID_RUN); + CButton *closeButton = (CButton *)GetDlgItem (IDOK); + + runButton->EnableWindow (FALSE); + closeButton->EnableWindow (FALSE); + +} + + +void TestRunnerDlg::beIdle () +{ + CButton *runButton = (CButton *)GetDlgItem (ID_RUN); + CButton *closeButton = (CButton *)GetDlgItem (IDOK); + + runButton->EnableWindow (TRUE); + closeButton->EnableWindow (TRUE); + +} + + +void TestRunnerDlg::beRunDisabled () +{ + CButton *runButton = (CButton *)GetDlgItem (ID_RUN); + CButton *closeButton = (CButton *)GetDlgItem (IDOK); + CButton *stopButton = (CButton *)GetDlgItem (ID_STOP); + + runButton->EnableWindow (FALSE); + stopButton->EnableWindow (FALSE); + closeButton->EnableWindow (TRUE); + +} + + +void TestRunnerDlg::freeState () +{ + delete _activeTest; + delete _result; + +} + + +void TestRunnerDlg::reset () +{ + _testsRun = 0; + _errors = 0; + _failures = 0; + _testEndTime = _testStartTime; + + updateCountsDisplay (); + + _activeTest = 0; + _result = 0; + + CListCtrl *listCtrl = (CListCtrl *)GetDlgItem (IDC_LIST); + + listCtrl->DeleteAllItems (); + _testsProgress->reset (); + +} + + +void TestRunnerDlg::updateCountsDisplay () +{ + CStatic *statTestsRun = (CStatic *)GetDlgItem (IDC_STATIC_RUNS); + CStatic *statErrors = (CStatic *)GetDlgItem (IDC_STATIC_ERRORS); + CStatic *statFailures = (CStatic *)GetDlgItem (IDC_STATIC_FAILURES); + CEdit *editTime = (CEdit *)GetDlgItem (IDC_EDIT_TIME); + + CString argumentString; + + argumentString.Format ("%d", _testsRun); + statTestsRun ->SetWindowText (argumentString); + + argumentString.Format ("%d", _errors); + statErrors ->SetWindowText (argumentString); + + argumentString.Format ("%d", _failures); + statFailures ->SetWindowText (argumentString); + + if (_currentTest) + argumentString.Format ("Execution Time: %3.3lf seconds, Current Test: %s", (_testEndTime - _testStartTime) / 1000.0, _currentTest->toString().c_str()); + else + argumentString.Format ("Execution Time: %3.3lf seconds", (_testEndTime - _testStartTime) / 1000.0); + + editTime ->SetWindowText (argumentString); + + +} + + +void TestRunnerDlg::OnStop() +{ + if (_result) + _result->stop (); + + beIdle (); + +} + + +void TestRunnerDlg::OnOK() +{ + if (_result) + _result->stop (); + + CDialog::OnOK (); +} + + +void TestRunnerDlg::OnSelchangeComboTest() +{ + CComboBox *testsSelection = (CComboBox *)GetDlgItem (IDC_COMBO_TEST); + + int currentSelection = testsSelection->GetCurSel (); + + if (currentSelection >= 0 && currentSelection < _tests.size ()) + { + _selectedTest = (_tests.begin () + currentSelection)->pTest; + beIdle (); + CWinApp* pApp = AfxGetApp(); + pApp->WriteProfileString("Tests", "lastTest", _selectedTest->toString().c_str()); + } + else + { + _selectedTest = 0; + beRunDisabled (); + + } + + freeState (); + reset (); + +} + + +void TestRunnerDlg::OnBnClickedAutorun() +{ + CButton *autoRunBtn = (CButton *)GetDlgItem (IDC_CHK_AUTORUN); + CWinApp* pApp = AfxGetApp(); + pApp->WriteProfileInt("Tests", "autoRun", autoRunBtn->GetCheck()); +} + + +void TestRunnerDlg::OnPaint() +{ + CPaintDC dc (this); + + _testsProgress->paint (dc); +} + + +void TestRunnerDlg::setTests(const std::vector& tests) +{ + _tests.clear(); + for (std::vector::const_iterator it = tests.begin(); it != tests.end(); ++it) + { + addTest(*it, 0); + } +} + + +void TestRunnerDlg::addTest(Test* pTest, int level) +{ + TestInfo ti; + ti.pTest = pTest; + ti.level = level; + _tests.push_back(ti); + TestSuite* pSuite = dynamic_cast(pTest); + if (pSuite) + { + const std::vector& tests = pSuite->tests(); + for (std::vector::const_iterator it = tests.begin(); it != tests.end(); ++it) + { + addTest(*it, level + 1); + } + } +} + + +} // namespace CppUnit diff --git a/CppUnit/WinTestRunner/src/TestRunnerDlg.h b/CppUnit/WinTestRunner/src/TestRunnerDlg.h new file mode 100644 index 000000000..83ba5675e --- /dev/null +++ b/CppUnit/WinTestRunner/src/TestRunnerDlg.h @@ -0,0 +1,94 @@ +// +// TestRunnerDlg.h +// +// $Id: //poco/1.4/CppUnit/WinTestRunner/src/TestRunnerDlg.h#1 $ +// + + +#ifndef TestRunnerDlg_INCLUDED +#define TestRunnerDlg_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include "CppUnit/CppUnitException.h" +#include "ActiveTest.h" +#include +#include "../res/Resource.h" +#include +#include "afxwin.h" + + +namespace CppUnit { + + +class ProgressBar; + + +class TestRunnerDlg: public CDialog +{ +public: + TestRunnerDlg(CWnd* pParent = NULL); + ~TestRunnerDlg(); + + void setTests(const std::vector& tests); + + void addError(TestResult* result, Test* test, CppUnitException* e); + void addFailure(TestResult* result, Test* test, CppUnitException* e); + void startTest(Test* test); + void endTest(TestResult* result, Test* test); + + //{{AFX_DATA(TestRunnerDlg) + enum { IDD = IDD_DIALOG_TESTRUNNER }; + // NOTE: the ClassWizard will add data members here + //}}AFX_DATA + + //{{AFX_VIRTUAL(TestRunnerDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +protected: + //{{AFX_MSG(TestRunnerDlg) + virtual BOOL OnInitDialog(); + afx_msg void OnRun(); + afx_msg void OnStop(); + virtual void OnOK(); + afx_msg void OnSelchangeComboTest(); + afx_msg void OnBnClickedAutorun(); + afx_msg void OnPaint(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() + + void addListEntry(const std::string& type, TestResult* result, Test* test, CppUnitException* e); + void beIdle(); + void beRunning(); + void beRunDisabled(); + void reset(); + void freeState(); + void updateCountsDisplay(); + void addTest(Test* pTest, int level); + + struct TestInfo + { + Test* pTest; + int level; + }; + std::vector _tests; + ProgressBar* _testsProgress; + Test* _selectedTest; + ActiveTest* _activeTest; + TestResult* _result; + int _testsRun; + int _errors; + int _failures; + DWORD _testStartTime; + DWORD _testEndTime; + Test* _currentTest; +}; + + +} // namespace CppUnit + + +#endif // TestRunnerDlg_INCLUDED + diff --git a/CppUnit/WinTestRunner/src/WinTestRunner.cpp b/CppUnit/WinTestRunner/src/WinTestRunner.cpp new file mode 100644 index 000000000..d9218db45 --- /dev/null +++ b/CppUnit/WinTestRunner/src/WinTestRunner.cpp @@ -0,0 +1,96 @@ +// +// WinTestRunner.cpp +// +// $Id: //poco/1.4/CppUnit/WinTestRunner/src/WinTestRunner.cpp#1 $ +// + + +#include "WinTestRunner/WinTestRunner.h" +#include "TestRunnerDlg.h" +#include "CppUnit/TestRunner.h" +#include + + +namespace CppUnit { + + +WinTestRunner::WinTestRunner() +{ +} + + +WinTestRunner::~WinTestRunner() +{ + for (std::vector::iterator it = _tests.begin(); it != _tests.end(); ++it) + delete *it; +} + + +void WinTestRunner::run() +{ + // Note: The following code is some evil hack to + // add batch capability to the MFC based WinTestRunner. + + std::string cmdLine(AfxGetApp()->m_lpCmdLine); + if (cmdLine.size() >= 2 && cmdLine[0] == '/' && (cmdLine[1] == 'b' || cmdLine[1] == 'B')) + { + // We're running in batch mode. + std::string outPath; + if (cmdLine.size() > 4 && cmdLine[2] == ':') + outPath = cmdLine.substr(3); + else + outPath = "CON"; + std::ofstream ostr(outPath.c_str()); + if (ostr.good()) + { + TestRunner runner(ostr); + for (std::vector::iterator it = _tests.begin(); it != _tests.end(); ++it) + runner.addTest((*it)->toString(), *it); + _tests.clear(); + std::vector args; + args.push_back("WinTestRunner"); + args.push_back("-all"); + bool success = runner.run(args); + ExitProcess(success ? 0 : 1); + } + else ExitProcess(2); + } + else + { + // We're running in interactive mode. + TestRunnerDlg dlg; + dlg.setTests(_tests); + dlg.DoModal(); + } +} + + +void WinTestRunner::addTest(Test* pTest) +{ + _tests.push_back(pTest); +} + + +BEGIN_MESSAGE_MAP(WinTestRunnerApp, CWinApp) +END_MESSAGE_MAP() + + +BOOL WinTestRunnerApp::InitInstance() +{ + AllocConsole(); + SetConsoleTitle("CppUnit WinTestRunner Console"); + freopen("CONOUT$", "w", stdout); + freopen("CONOUT$", "w", stderr); + freopen("CONIN$", "r", stdin); + TestMain(); + FreeConsole(); + return FALSE; +} + + +void WinTestRunnerApp::TestMain() +{ +} + + +} // namespace CppUnit diff --git a/CppUnit/cppunit.vmsbuild b/CppUnit/cppunit.vmsbuild new file mode 100644 index 000000000..789d2c8b9 --- /dev/null +++ b/CppUnit/cppunit.vmsbuild @@ -0,0 +1,14 @@ +# +# buildfiles.vms +# +# $Id: //poco/CppUnit/cppunit.vmsbuild#1 $ +# +LIB=CppUnit +CppUnitException +TestCase +TestDecorator +TestFailure +TestResult +TestRunner +TestSuite +TextTestResult diff --git a/CppUnit/doc/README.html b/CppUnit/doc/README.html new file mode 100644 index 000000000..5f8a1418a --- /dev/null +++ b/CppUnit/doc/README.html @@ -0,0 +1,75 @@ + + + + +CppUnit 1.5 + + + + +

+

CppUnit 1.5

+

Last Revision: 12/15/99 - Michael Feathers (mfeathers@acm.org) - written in standard C++, tested under Microsoft Visual C++ 6.0

+


+

Background

+

CppUnit is a simple unit test framework for C++. It is a port from JUnit, a testing framework for Java, developed by Kent Beck and Erich Gamma.

+

Contents

+
README.html                     this file
+    
+    test                        the source code
+        framework               the testing framework
+		extensions	some framework extension classes 
+        textui                  a command line interface to run tests 
+    ms                          code for a Microsoft specific TestRunner
+    samples                     some example test cases and extensions to the framework
+        multicaster             a sample illustrating a publish/subscribe 
+				multicaster under test
+    doc                         documentation
+

Installation

+

To use the test framework, create a makefile or load all files in test\framework into your IDE. In this incarnation of CppUnit, all includes assume the current directory first. A makefile or project can be used to resolve the dependencies.

+

The directory test\textui contains a simple command line example that uses the framework.

+

Documentation

+

CppUnit comes with the following documentation:

+ +
    +
  • a cookbook: doc\cookbook.htm
  • +
  • this file
+ +

Samples

+

You can find several sample test cases in the samples directory:

+ +
    +
  • ExampleTestCase - some simple tests
  • +
  • Multicaster - test cases for a sample publish/subscribe multicaster class
+ +

Also, the wiki page http://c2.com/cgi/wiki?ClassHierarchyTestingInCppUnit shows how to automatically apply tests of classes to the classes' subclasses.

+ +

Extensions

+

You can find several classes that illustrate framework extensions in the extensions directory:

+ +
    +
  • TestDecorator - A Decorator for Test. You can use it as the base class for decorators that extend test cases.
  • +
  • TestSetup - A Decorator that can be used to set up and tear down additional fixture state. Subclass TestSetup and insert it into your tests when you want to set up additional state once before the test is run.
  • +
  • Orthodox - a template class which can be used to verify operations on an arbitrary class.
+ + +

Notes

+

Porting this framework has been fun. I've tried to maintain the spirit and utility of JUnit in a C++ environment. Naturally, the move from Java to standard C++ forces out several nice JUnit features:

+
    + +
  1. Platform independent GUI.
  2. +
  3. Stack traces of test failures
  4. +
  5. Active (threaded) tests
  6. +
  7. Direct invocation of test cases via reflection
  8. +
  9. Run-time loading of new tests
+ +

In addition, the lack of garbage collection in C++ requires some careful use of the framework classes. In particular, TestSuites are composites that manage the lifetime of any tests added to them. Holding onto a TestResult past the lifetime of the tests which filled it is a bad idea. This is because TestResults hold TestFailures and TestFailures hold pointers to the Tests that generated them.

+

On the plus side, we can use the C++ macro preprocessor to get the exact line at which a failure occurs, along with the actual text inside the assert () call that detected the failure. The features of C++ that enable this are the __LINE__ and __FILE__ preprocessor definitions, along with the stringizing operator. If you find that generating this much literal text bulks up your test executables, you can use the CPP_UNIT_SOURCEANNOT define to disable that portion of the reporting.

+

Note: If you use the C++ macro "assert ()" in your code, or include assert.h, you may have a name clash with CppUnit's assert macro. This can be remedied by changing the name of the macro to "cu_assert ()" in TestCase.h.

+

I'd like to thank Kent Beck and Erich Gamma for the inspiration, design, and a wonderful cookbook that was easily/shamelessly mutated to describe CppUnit. Double thanks to Erich for thinking up a way to implement TestCaller. Additional thanks to Kent, Ward Cunningham, Ron Jeffries, Martin Fowler, and several other netizens of the WikiWikiWeb. I don't think any other bunch of people could have convinced me that rapid development with unit tests can be both effective and easy.

+

Thanks also to Fred Huls for mentioning the idea of template-based testing. The orthodox template class demonstrates only a small part of what can be done with templated test cases.

+

History Of Changes

+

1.2 -- Added the TestCaller template class. There is now no need to use the CPP_UNIT_TESTCASEDISPATCH macro unless you are using a C++ compiler which does not support templates well. CPP_UNIT_TESTCASEDISPATCH remains in TestCase.h for backward compatibility. I've also kept the use of the macro in the Multicaster sample to leave in an example.

+

1.3 -- Retired the CPP_UNIT_TESTCASEDISPATCH macro and cleaned up the include structure. Fixed bug in the textui version.

+

1.4 -- Removed using directives for std in CppUnit headers. Merged the old AssertionFailedError into CppUnitException. Fixed a memory leak in the TestRunner class of the MS GUI TestRunner. Removed CppUnit.h file. Now headers for each class must be included directly.

+

1.5 -- Upgraded projects from VC++ 5.0 to 6.0.

diff --git a/CppUnit/doc/cookbook.htm b/CppUnit/doc/cookbook.htm new file mode 100644 index 000000000..08224883b --- /dev/null +++ b/CppUnit/doc/cookbook.htm @@ -0,0 +1,164 @@ + + + + +CppUnit Cookbook + + + + +

+

CppUnit Cookbook

+

Here is a short cookbook to help you get started.

+

Simple Test Case

+

You want to know whether your code is working. How do you do it? There are many ways. Stepping through a debugger or littering your code with stream output calls are two of the simpler ways, but they both have drawbacks. Stepping through your code is a good idea, but it is not automatic. You have to do it every time you make changes. Streaming out text is also fine, but it makes code ugly and it generates far more information than you need most of the time.

+

Tests in CppUnit can be run automatically. They are easy to set up and once you have written them, they are always there to help you keep confidence in the quality of your code.

+

To make a simple test, here is what you do:

+

Subclass the TestCase class. Override the method "runTest ()". When you want to check a value, call "assert (bool)" and pass in an expression that is true if the test succeeds.

+

For example, to test the equality comparison for a Complex number class, write:

+
	class ComplexNumberTest : public TestCase { 
+	public: 
+                    ComplexNumberTest (string name) : TestCase (name) {}
+        void        runTest () {
+                        assert (Complex (10, 1) == Complex (10, 1));
+                        assert (!(Complex (1, 1) == Complex (2, 2)));
+                    }
+        };
+

That was a very simple test. Ordinarily, you'll have many little test cases that you'll want to run on the same set of objects. To do this, use a fixture.

+

 

+

Fixture

+

A fixture is a known set of objects that serves as a base for a set of test cases. Fixtures come in very handy when you are testing as you develop. Let's try out this style of development and learn about fixtures along the away. Suppose that we are really developing a complex number class. Let's start by defining a empty class named Complex.

+
	class Complex {}; 
+

Now create an instance of ComplexNumberTest above, compile the code and see what happens. The first thing we notice is a few compiler errors. The test uses operator==, but it is not defined. Let's fix that.

+
	bool operator== (const Complex& a, const Complex& b) { return true; }
+

Now compile the test, and run it. This time it compiles but the test fails. We need a bit more to get an operator== working correctly, so we revisit the code.

+
	class Complex { 
+        friend bool operator== (const Complex& a, const Complex& b);
+        double      real, imaginary;
+        public:
+                    Complex ()  {
+                    real = imaginary = 0.0;
+                    }
+        };
+
+        bool operator== (const Complex& a, const Complex& b)
+        { return eq(a.real,b.real) && eq(a.imaginary,b.imaginary); }
+

If we compile now and run our test it will pass.

+

Now we are ready to add new operations and new tests. At this point a fixture would be handy. We would probably be better off when doing our tests if we decided to instantiate three or four complex numbers and reuse them across our tests.

+

Here is how we do it:

+
    + +
  1. Add member variables for each part of the fixture
  2. +
  3. Override "setUp ()" to initialize the variables
  4. +
  5. Override "tearDown ()" to release any permanent resources you allocated in "setUp ()"
+ +
	class ComplexNumberTest : public TestCase  {
+	private:
+        Complex 	*m_10_1, *m_1_1; *m_11_2;
+	protected:
+	void		setUp ()  {
+			    m_10_1 = new Complex (10, 1);
+			    m_1_1  = new Complex (1, 1);
+			    m_11_2  = new Complex (11, 2);  
+                        }
+	void		tearDown ()  {
+			    delete m_10_1, delete m_1_1, delete m_11_2;
+			}
+	};
+

Once we have this fixture, we can add the complex addition test case any any others that we need over the course of our development.

+

 

+

Test Case

+

How do you write and invoke individual tests using a fixture?

+

There are two steps to this process:

+
    + +
  1. Write the test case as a method in the fixture class
  2. +
  3. Create a TestCaller which runs that particular method
+ +

Here is our test case class with a few extra case methods:

+
	class ComplexNumberTest : public TestCase  {
+	private:
+        Complex 	*m_10_1, *m_1_1; *m_11_2;
+	protected:
+	void		setUp ()  {
+			    m_10_1 = new Complex (10, 1);
+			    m_1_1  = new Complex (1, 1);
+			    m_11_2 = new Complex (11, 2);  
+                        }
+	void		tearDown ()  {
+			    delete m_10_1, delete m_1_1, delete m_11_2;
+			}
+	void		testEquality ()  {
+			    assert (*m_10_1 == *m_10_1);
+			    assert (!(*m_10_1 == *m_11_2));
+			}
+	void		testAddition ()  {
+			    assert (*m_10_1 + *m_1_1 == *m_11_2);
+                 	}
+	};
+

Create and run instances for each test case like this:

+
	test = new TestCaller<ComplexNumberTest>("testEquality", ComplexNumberTest::testEquality);
+        test->run (); 
+

The second argument to the test caller constructor is the address of a method on ComplexNumberTest. When the test caller is run, that specific method will be run.

+

Once you have several tests, organize them into a suite.

+

 

+

Suite

+

How do you set up your tests so that you can run them all at once?
+
+CppUnit provides a TestSuite class that runs any number of TestCases together. For example, to run a single test case, you execute:

+
	TestResult result;
+	TestCaller<ComplexNumberTest> test ("testAddition", ComplexNumberTest::testAddition);
+	Test.run (&result);
+

 

+

To create a suite of two or more tests, you do the following:

+
	TestSuite suite;
+	TestResult result;
+	suite.addTest (new TestCaller<ComplexNumberTest>("testEquality", ComplexNumberTest::testEquality));
+	suite.addTest (new TestCaller<ComplexNumberTest>("testAddition", ComplexNumberTest::testAddition));
+	suite.run (&result);
+           
+

TestSuites don't only have to contain callers for TestCases. They can contain any object that implements the Test interface. For example, you can create a TestSuite in your code and I can create one in mine, and we can run them together by creating a TestSuite that contains both:

+
	TestSuite suite;
+	suite.addTest (ComplexNumberTest.suite ());
+	suite.addTest (SurrealNumberTest.suite ());
+	suite.run (&result);
+

 

+

TestRunner

+

How do you run your tests and collect their results?

+

Once you have a test suite, you'll want to run it. CppUnit provides tools to define the suite to be run and to display its results. You make your suite accessible to a TestRunner program with a static method suite that returns a test suite.
+For example, to make a ComplexNumberTest suite available to a TestRunner, add the following code to ComplexNumberTest:

+
	public: static Test *suite ()  {
+	    TestSuite *suiteOfTests = new TestSuite;
+	    suiteOfTests->addTest (new TestCaller<ComplexNumberTest>("testEquality", testEquality));
+	    suiteOfTests->addTest (new TestCaller<ComplexNumberTest>("testAddition", testAddition));
+            return suiteOfTests;
+	}
+

CppUnit provides both a textual version of a TestRunner tool, and a Micosoft Visual C++ 5.0 graphical version. If you are running on another platform, take a look at the graphical version. It is easy to port.

+

To use the text version, include the header file for the test in TestRunner.cpp:

+
	#include "ExampleTestCase.h"
+	#include "ComplexNumberTest.h"
+

And add a call to "addTest (string, Test *) in the "main ()" function:

+
	int main (int ac, char **av)  {
+	    TestRunner runner;
+	    runner.addTest (ExampleTestCase::suite ());
+	    runner.addTest (ComplexNumberTest::suite ());
+	    runner.run ();
+	    return 0;
+	}
+

The TestRunner will run the tests. If all the tests pass, you'll get an informative message. If any fail, you'll get the following information:

+
    + +
  1. The name of the test case that failed
  2. +
  3. The name of the source file that contains the test
  4. +
  5. The line number where the failure occurred
  6. +
  7. All of the text inside the call to assert which detected the failure
+ +

CppUnit distinguishes between failures and errors. A failure is anticipated and checked for with assertions. Errors are unanticipated problems like division by zero and other exceptions thrown by the C++ runtime or your code.

+

If you are running MS Developer's Studio, you can build the GUI version rather easily. There are three projects: culib, TestRunner, and HostApp. They make a static library for the framework, a dialog based TestRunner in a DLL and an example Hosting application, respectively. To incorporate a TestRunner in an application you are developing, link with the static library and the TestRunner DLL. Note that the TestRunner DLL must be in the home directory of your application, the system directory or the path. In your application, create an instance of TestRunnerDlg whenever you want to run tests. Pass tests you want to run to the dialog object and then execute.

+

Here is a screen shot of the TestRunner in use:

+

+

 

+

More notes about the implementation of CppUnit can be found in README.HTML.

+

 

+

 

+ diff --git a/CppUnit/doc/license.htm b/CppUnit/doc/license.htm new file mode 100644 index 000000000..951a688b5 --- /dev/null +++ b/CppUnit/doc/license.htm @@ -0,0 +1,15 @@ + + + + +License Agreement + + + + +

Permission to reproduce and create derivative works from the Software ("Software Derivative Works") is hereby granted to you under the copyright of Michael Feathers.  Michael Feathers also grants you the right to distribute the Software and Software Derivative Works.

+

Michael Feathers licenses the Software to you on an "AS IS" basis, without warranty of any kind. Michael Feathers HEREBY EXPRESSLY DISCLAIMS ALL WARRANTIES OR CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OR CONDITIONS OF MERCHANTABILITY, NON INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.  You are solely responsible for determining the appropriateness of using the Software and assume all risks associated with the use and distribution of this Software, including but not limited to the risks of program errors, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.  MICHAEL FEATHERS WILL NOT BE LIABLE FOR ANY DIRECT DAMAGES OR FOR ANY SPECIAL, INCIDENTAL, OR INDIRECT DAMAGES OR FOR ANY ECONOMIC CONSEQUENTIAL DAMAGES (INCLUDING LOST PROFITS OR SAVINGS), EVEN IF MICHAEL FEATHERS HAD BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  Michael Feathers will not be liable for the loss of, or damage to, your records or data, or any damages claimed by you based on a third party claim.

+

You agree to distribute the Software and any Software Derivatives under a license agreement that: 1) is sufficient to notify all licensees of the Software and Software Derivatives that Michael Feathers assumes no liability for any claim that may arise regarding the Software or Software Derivatives, and 2) that disclaims all warranties, both express and implied, from Michael Feathers regarding the Software and Software Derivatives.  (If you include this Agreement with any distribution of the Software and Software Derivatives you will have meet this requirement).  You agree that you will not delete any copyright notices in the Software.

+

This Agreement is the exclusive statement of your rights in the Software as provided by Michael Feathers.  Except for the licenses granted to you in the second paragraph above, no other licenses are granted hereunder, by estoppel, implication or otherwise.

+ diff --git a/CppUnit/doc/test.gif b/CppUnit/doc/test.gif new file mode 100644 index 0000000000000000000000000000000000000000..861cf14b31c7e5c69fe8a3cd9095b94a9ad67e6f GIT binary patch literal 19349 zcmeEtQ+Fi{uxv6DXOf9++qP}&IGNbajx(9qwr$(CZQC~Y`Of_rcb$HymwxK*)elu& zEh#O*#c62#!xj7m?0+K=3=H%idId%W8b(DK1_lOB^p#FblwKchUSDs5K>sEGFaECs z|9^IX_zmL!6-M{J_`f?L1Oo#54TC3Do7)!vgG!@2TAMczf zFcL!~8tx6V`_KO;xC)d~tWeQJ3L`3&)R>B?d@7go`Q}(d$xMz=035zdW9eLhR056O zcw^Z@iBf?~kjFjP4=^w!m`-gJaBwi{-)K}GPUUM277OKi6U|i{Ee;3c^y#^KtF^}R z6pL2CikCmsdNX6pmb0-hNctI@&G=bJ&8m|BV2J|twT-Pxf zt7}3aiKcJgGd~yx*8tI7-!^$no;H=7bar>Vzg+Hh#3=f9fAwG8O{^H?fPDHvVVJuf zAK<4ueoz!tME>wJQh$6Ak1-AX5Z*^H!PHGpwr$=WPv?M|9vnz+d3Wr~Kd6dJ^TWX^ zPxm9>8(|J2sm8GmY^lGG^P@P|LycoJ=U(??MBywCopHi{VG z;x_Xb4GgQ(yikhr)BH#d8k1x&CrToBJ(kBT8!%6*Ia4y0)1#8yV4CyN!swH;qF+|+ zXDP06N9m!@L7?SRGcv! zM{o2Jy!-L9vQ3tWn>IYwNveg(s|l`|Oy?=yoyvz9Y`0I_*^8uAhe6R64d$U=#@-eE zd#<=ogMwZew>7FW>kZ37ACt~2y1w+yD<&a&&tv8(9qj97EmO}MRzGbY7ecb&uD8@! zb@l%#F@g|kLKG6L?|oZwhsieoxl7C{F(U~ePs;I3o;zBhKj(NlXrKcg(44s;%{lG$Fy;02m+r*<{X z8JO#2jd&{l%=JUncgtHl)T<;-!oUbYk=zC`L>hwraEW4L%m&lz;=VrvIG>Ix3{VsF ze;ebD#yt)ps^H<}_t!o*eXzq=E7)WqlVfDVe@Sq*?O{2T2Mh$=Lg^&6@1W-_WL(p|z}A zvjoq4Rp9kLq29}+Jx$W*!V$?ObVgNXn2qf7SHZf*MzF%m6ENNO-hG+bo4I2HO3@HO z72`TJnUc~Qeh4O5w0rEtnv;k44Kc!lxez-=15*A@iJ@Yvo2ll)A>@u(-QES91=LLd zi96uu;vcLyiE*>)dh3QT0-w?b^u5F2$WF&nyX=H&x@Kh_e`aI+poXFF>A1*4QVOI8 zSS3LD)!&9s6Jeib2^R)rn`3Vzeq#?g6()j-Ujl7xJI3aI~25^Ix zdDN=W(SxKCNu1L5MsexG6WiQxrCky-H;L01RK#;`3T!_TeSQNCs6a_AJx}zBf0rt@ zUl3_}AP8>%tz2x+8)DX4uu=g-D!L~#BSiNRYJ)i^4aLA)2Z#{sLM8G3kf{`Ac%WUr zpPr>K*;4RfH>(CfHc`G2xJ%!B-Q+?P?LwfY_Fb~yMmbkf;9^pDiF7+A#_JyZT)BeHt zsWVYd?IDY!>%fIFLfzr&g;Is4a*e6;cfh*8`4m07Ed_}%VW9tP)pS#}+myAQS8cLJ z5niwQGltcu(}ROGm5jOWT@Q%HNjmm#G`|p7gS~tR{Qs>X1?kjlKBPQqc(N zIs`9PoiM|F!c6BO9msQ{OW`>&1^?1QkarAsidrIAV%#C7WAjAerG10{`klo!Tv2YX zd&f1NuffxLoW{N1+3ox{=9$vhUsgMTgtVBL&LOfL_u+=&JFlK(S?KGPTNW05!*wi+ zi6ogoqGgk$C&R%dpjNc)WD#Z3XAsd$eSPs-PD$VwsWP<}+(+87e*A5zmkyKU^+IWm zM_oOd4i=A{D(JzNkjI80GdEB6Ef0^~_+n0TWM#xvPm8-i%vV5z{$BUvbjI42!}UAZ z2(r)%(sRc4BGq^M?@52~)h%UB)d&<{$KsK$rn>qtgaw7E#`B&7RGzadQ0eK=7rzmy z64D7x(+|Vl4+{&$KLv+^)S?1Hs{c?G_1UYP-5NWNjb};fHP=j#lbPZds2LjU9vXsW7r1A3R4-Y2FWv{?B_9%+s2P^L>gY~Rvx=-6 z*-8r|MkgA?hwC0zs2N^7ij@|sg;1w?yP{k#&X4J&@k?BDkyGZp*r7EwqJ5O=*PTb= z(7%@#u{;Xq3@X2-R-*kNlY=2+ljcYSC^LQvv#C%65e`#BSBfQ=DBb3W&DE&eX6#l& zLyBP|Bq|%|R$oY}XgCY$meZ)~*XUaqQnwfT@+KgurWE>f2oaeWwwP|;vw~I&qY!%R ztE#uQTkH?ZSlF;w$gx<6x7eT9ad6y`S(LVO5KmsM7I> z)Om4~TJcnEv2<&(^p^3AZSg}vzPD@+FZp=*1}&#%6p zEk@SOi4a4Hjz9IHj}wtNl0Gz(crBBtf|6P#g>_)vb>EWov6Gd~5+$+S>&;Y=inSCi zlW_g)dy)gPR~5)$0#qMV*|I8CtEw4+aq}YSubPCOFEL4!k*RNK zwb&W;+!>AB8G8*vohj-ptSLMeG34SD-J@{F^5XPj8DRE)slsNq|Ulo8YiHF*frTE24Vy{X5U>@P#i`$5J{%_X&Hq3vA z0F8doi}?(CC_=hoWs@H7yW~O`qvM$ZRBCD+xehT)0iaL03p}mjG*3E_ZG|)OWF;I? zJgXT!dO^a*%S9ajsc@&orzW%r;OS3#n7ikZd<6BcAt-|{Ex^AZh6YZewJ25YJ-d7; zLwYFwU%QT}v{eMGTHJ7OpesVJ?SL7^`s|@k}DT4e)pncHHWCQQcoFR zF?QKMk7&!ZGT$~`9GSw4HMJ)SZT*MR7+~IZp#O@chd54}Q2_v}z3^o)FYt^o(p|Zc z8E*(j8P60;@C5gCB|p}^5M1WP7yqfU=xJD)R}Jq74Txvh>bh@Skp6;$IcC; z?GM=Ab4h1z1;fdE}RS(+qs93zcsaOVcbz5!7gt+x28DT+O_1LA(amVHG z9egM*V*jXcdy}+$kny~d7*^b(9Y@L8t(9l|a1TZ*D^@Z(W$d1@1tY8?`6k2#t&0c1 z8~J&?I*=pg-+i`D!p%(*ZP%qjIU6P^CDk(;OwoMXksEP9c^Efst zO(Gf`V5KG=q2G;^`84dy%_5)n}~smP2}^9 z*G5exT-&0pql6?3?$yn%o=i7h$xO|R*`Q1epN(IJ+NL#4SfR`mg8yjb8&@{}frX+R ze{G$|ipt1nD{5%;_ozrX&HkuM_dzyRaWw%?wtpozo|HB7iKle%*Y`9sAFm)=$gs}- zpe)7cineaw_M*&@CEM(1^KmjOSqG>B1PVl#$7uYRh?{+(na#`RKfuhe_yO1GqbHr;`1cNdH2YB-z^^?EB8xK*j4qI!6~!Wcz~xdwU@xElHiJJNdI%F+-$Ih ztzsK4U#FnTH^Tl;=dcam5dKH)k;m|XT8;Mopsn|ayRPXBMPABc&J}j2_ETWaiHC>o zXt1uuFHY=op4vO&0X^^0SiG@lkrGGmv&xEtSzsgSQol~2eQ`?tQq>`>XnXY@EQ)X_{hndrsoYR+^ z)7PKVx0}AlLC3%pqn-z=p34213M{;z2``58!C zSD39C6#lspn*cGZioVzWi@mZFS2u#MIU@Xd68?EIy?F|sd8({=nyz`et$Bv8c_#b? zpquRvr%xh#>EkV&9)bs$IweP znnZ_MrFamP1ZNuFGx}-tO@fXbB!=eUaO`4D5Mia@e%8qAy zqc}!-M3sX5rz6t5Q+j#{B<>SV=`8_K$+zJ{R>!GtlDu$(0I#>)W3^P7&pgusz*q^< zg%n`kwHr2J0rca3@)<`&_eusaJU9P+P`j5B0$4?ol~53 z-^9yoEFH(E_9#6WJpmI!32amkY@}*)tZQ>@YI6pEYo32=dTMjxYI8(yYw2rqV{3Eq zYHKTMYrbl0fq#1^YI7rN`&fSa^lEEXZ+nM+`|4|Z`D*(KVdn&Y=OJom4}a@&YwJ~S z`x1Y5({>v|VHb>H_gjAF17QpH?=I5!_Da?6F2dgL>+O5_9n|h!=3XW{eVXol3@luq*L@~}0~Ub;wrPxRFC+s$Oc4uIQ%xu8y&&DwAZ@B34Xj`- zF4R9%hdMf%ho+hb3g3rH1V<{{sInJ%ZpT_8B z6EwGdwvE3_{&oq`wx-UBQ{mM?siC7{o-S>C)DormMY^|%*@LTx3fLrSq zvjkVfcNcD2i9&7S4=3e)`W|rX3DsRygMqF68PbOYg-3QJrwp>^-2>r&uP?T*j|pzh zrmx#*Zf^8%9;SWqM6P_=HCHhgbyAe;v7Gumn13PeBkS+J`P_nM@4*o6BhB1`3EaVh zZcz;GkQMKsruXn_Zt?B!a6ot1F?X0fcLcuoM2h#sG54hQ_tZD{^dQE2a>fT*gI#88 zT*X5N+?StV!;~le<0nUGQn# zP{IrJ2(!Dj5MzUD=1XwQNKUcqc-QG(f1wkYnnw^D44Pa z0$U5$YlEF;!WX)(t7K!6@jo%@a|-l1Px!U?`)gV7YsKJe71Z;!zVo#P`r5qNU`p`s zuULY>a)D)kHC!tJ*c4vp#NQGo^wELtb|zTPCSH9(?}DIbMn*8d-QHfmAHT84Qg8nV z`@>*Uuwg0hiG`zMatyvI6^H~PVxxdL2!Rhq67V}sN-5_LC1T=dcVej)%OsN7HfLJa zQz&F{avpEKHBipv3i;rWd%Bd)=F7&hsIRM8sg+AtiFENK6iua28(!7YH~P1D9E^-dAl~7MH#<+39x@^U#zme=69sGs`>?fn1qkn{Ql^)GY`1Z z=5V`RX?l3-cH=y~{pL+Y5y)H`M~u)WO&>KiqE9Kgs4@ zT622)fjHH#S1aRifg@CH-hJz=_pC;^DACz zI~d|#iqw%VrXP&)=kzG%#K86FrLKvCXsDE$gZOp1O zAgcoRNn*n|bYDJ`+^-v5)frZub)|_wQ0pT-8*)wH{gl|7Zmo19RuYp6CBBc^ybNVj zy&w#IQR9LfZV;NPJnCS=Sb6873meu2Z=wtaCpo%oq5|z)-%s_dIWTb7qb3alUq}v3 z!w~XjP2(7G4lUCZ(`GI6oFEQu%aWqzb(7zke>&LuE>#*eil9tCXNdKx zOk4Eac7izdJx+>R^u7FsmX$j`6Bh?$!O0qQD6%|5XZfcfG4}$OyIKrG2!pwd!YGTe z*1QA6m_*sxlVc6UHpmipKiT#*NrP!6xJ{EZ%-W8^7!_U(poipFXLCQ%mv)ub9&Nx< ze4%(O@RznM~x16uH3Ewx6XaShwAsz2&iS}i|^7avqiHG?9VZxv1$hRmOBL%7k3|kx2b~;j@*3FK$FMaadX$MLlarxsG+=& z9I<}C#d3d=w&q}z*%=g|fO77|PCBB3LTN^Rro64Y2>(oy`wNb@1$*(6aLYsqK#rDV zEdV`GG6wZ;S~l*gGd_EJNWl)O&JaOSTvTz(EI?sAbHsgwjm@+=v@Dzul^unJK)Fhp zqH!JNh=Usc2NL~5T#W7X0|pTRva+xX@dq1)=*D4i2#1N`OMWQQYc6uYsg*H-v1$fq zH>9DXS_1w_i}0@DjT5#tBEeDX=xESL*f8nJ?K`mIQQ66-$Y`59A(4a*N-<7m(deuC zRD}F5tXjyS8V4h;Qv6jNR)`4& z4K%+m%KC(E!E3)aFfA|#pJHjz>^}d4_p^wnCV$j!n%Z{)Pn9+)M0Cbdh5o3})RCvG zS!W(Lg=ImNwP0=V^i3&|rjcMi9&4+3epRs^VjOCoW2s3UOJ5w$xGB zQ;Wxxbz0%R>J3GdU)VB?u1M)giMll6GVRb|n(Z6H+_zaZk!xYcBocuF>oguKpmdrLirmJ3+@Xej6c(~rBiZoHlpS;Qx ztS=QKEy>t1kVq2xJ=RsiX-!$qoM@hcU25@h9j++Hlc^@wTojalLhOG9;O zn(i_nn`_1({HTj;P@WOq7wJV-=O#@p0#$mgE)disLQQqhIyfY#U~^apRthaPn7!$0 zO`LNJT*S%R-13=obpT5tlce(qQN$+uA?JLu5zI}gETt#3_@kCsabR_k7(|zs?hT`` zCf0EjM@klNl-ZSGRVw1gUQ;&dS+$K-jAJZ3$urF=3CG~9B(XO*ZagjvkL0v^wAFnl z#hILR^3MVtw3pqpry968G>H=K3(y7$XhZ|L#n1f(0cbVN8E?mqwm5oa}O|UUPr{Y z4`Ks!56E}i$JMi);xaam813K2KpNAIF%6$bY$0t!yoe}}-rmPtHErX{1kM>3o2TM} zp2I%fcSRt+Gx-+xq@?V}3`PD^1x}vDx^7_BOX`{A4)?SV!9$&3);UWJ&pJGl8QpKq zl_HC;gZ9i>(`9XzyLfo`2oH1#W{3rnXRTUiwi97{Yx!4-Sl8 zdl<9tQ%1ax*?T;O2nFu5PP|WP89jRy32t&Iea_YG-6w8*9%~4_50LFW$2bXYyg=Sk zmEOAFR(4x3oZ%jVMjy*N**AeV-aE*Q??(Gq*y` zcY6jek#&c6d&NRtJu_`g)2`rf2HzWR_gY5JBrE^XMDJQe?|MMz2Yk;^LD%a<7g!-b za%1n+&)(Syp#$DN6gFXav7QB7;R!E3&_&PhMWG*u!t-8z@RL16o1M#~0w=OP2#12$ zi^8iDy#3C-JE}zq;r07gNJu!C#Do2Gi~aP6{S1%&j1U7%Xamd;13#r$AP&mEv~!Eo z^PS$|U~GC;aYczt_-_V;FFv|2y#%>8MUUY{c^-w|Ne39|`U&s`KXHYAi1qOD@tvXe za%J`$kj8YM(=V=9fXFMV7HdTU{)xV;_J{}eEIJGD|HszZhQ#oM_%B649RezBVnTTR zN|n8b51p`NBEo!P42i-@lj35LqO;chr_SPk8V8JY1@F8>gh^|@*O>Q7N=(>N6fTD> z3x};5hph*PZ5Ab%1Bb8Ii)C3^9pYNqHin(pMx4b)T+~K@csqY(si2oHE4OANqG8xsElVC?H36mjZ6Ag9jgt4?4 zja(d!IvkBY?6i{;BCTM2T*r%`8s&KyO;j68GLa6tlvuq^sg~(JXiw6Cu_U9hW78@^A8!y7^OzEs?7b#Lf$>t2CO6`>{9vrV+lqqx( zvi+!0-YWy5!e~>+R&0(ph)p!wjOGkdhKzCxu621_w!uHgkw#uLrm|gO>BQA zi^o-Yze{w*ayg+)AG=I`DIH_%`qrNAKnqgiM(cWg5c zVl(%0icfrs_aGC+7w?(-z!?Z7P6d~N@K^ck#hI_k(bGjZ{eTfg9JU#&dP8H6eu#&5?u`jTR&z=6t&u4=P z`Z)rGCjnzkg6D_hTAI~np8xn{elx1gJuJcWSD_?dZ0%H;(=KA*&86K^aTQf#0IE6f zaWku*q9tt~ zb@{J(IXzXyBXxx*b@Zj$pJWuAmXkkem-wS3QPr1CO_$Ap%jQAL7D>y%_;FO~S^bRg zS}P$i`DKFuHGA|iOZL*Z%2KMR`4yU~IM@cdq*C*GfMXOYchE{WSJW4giV^>EFVBjH zdN1PE%D=}IT2g9h^ii^-73HRQOjd;%Ifg$8ycZykTDgb0%kxOL0l4Y;yzEg!4eEC#AX*!^N%rd5%&;gUwf%!J! z^T5DEnrmiNMeu|2A8=EsYVEHr<8Y89`2~Y)10&g$Y$>?TJlsfp6+zJMGS?P%Gl{NQ zXWShTo1k7;lTPg!N)id_3Kw;Pi1=0qf-DgzVV;Vtx)x!D5f_k{RVemDVEqRp&0vMc zJ(kB6cWwtyg-&~|4tHV$_gN56tV4J{->T5o_VtrK5Aw!M74{vZ@=sJHQXK|5CxVVt zxovd@Re7rGd6n&lu0y=ivs-$aCWDr#>_lM6)X-q?xMoI>LGXZlk`EbdR7s`36s4>N zw(}~)Pd!zBMhL3WEjc9i$IVj~2CBr_ZD;u(e`^x(rF6qLunRH|f++k|cC4MrYY}#- z;TvUHc2kqalKhcuGg@y=V`GV9)oTt-*(0#hLq;e?#%MDwg?|RFN7}=Oy4OZ`i)OY^ zW>(EdmI}v?6ems`C(aTld<@89tTO5t>K4^zIvB?Hmu9-frVdai_TOfX+sEz-C%#ap z|1eJd2#(|aoJdx%%1}&L2Os~bD>n5yHv4;gtpA@dHhiqjq3A(z8g+ac{d^izd;ok7 zYjQAO1UpNRI7u$95Uye~+&2d~!G1x8&Tuqu? zE!tfzx!TU_qo$dW4GkHfLa{C_U#)Cktp;E1T-)v*U+q0#?IznebnUjPXeqSYlAv7g zQ(T`U+Z{yPod;iEWMAXdFJZ{0_v;^XIn$IWXk0d5UsBwhOWZsF>>tc-x&cvJr02O` zI)+uDKM~+Q?4}B}Hy`cnzZq^o&o^KO_F#fH1Ru=~7icoUsw#260U4Tqd1?NbydBEoy3 zm3z7qC%PF52N}oEg?Mzg2AKpp(ISmE38h%P)u(XXs`XO(mwVb0XYQH@h92h~cxO>7 z6%3X2hky5d&+?cf$XJ-#)REOiG+Hne=n|A;k~8%ZDK1hy%~Br@-~(7P_Y4EtmI(4=mPU)@$U&nN9SGZ2`KV;P{BA$xFW$-o2uu z-O~JgtntO${57~_I0a8q4gLk`Cs9F>+^($_DA`B&F3tp&&DKojB3Lt0{xL40lGkJOHWQ-@Yia} z*ILP!`I1(#mBdz*o?qGX`pef2^!G02-`_rlEpmHXHhRzg#| z)=|`h7LJoEdt#CgF3Q$t(4bpP-}Nh8*uRW^={mKaG0%{$V8to|_O(ltnsit5(p8{0 z-^EXJjrSJNH+1OFACM$iQnR~${!r+MChiWzA|bG(DuEVthT@SpgglAvcLkDxB!tl> zrMD)-v7{Q+YTS;0z`>x=YQ3rFk0esKr1LjZ=ZfXSc&$rOz+@fc10iP8lVg8 zoqkVn405lx1_NQp59*t#bvq+?S1bsY*w?FLhFbc^o~qS-sjOM9Y8`DPYcsN{8n##O z?3b(c<_pzZ?-gd9#U}t)Id04K#5710rinKfz+t<3HDt9Xv&+~#sVX5}SG)biLX&aG zsC%mfdo^5%+%tl&)NnbMs3-8h-1Z-?R2<%=<-$6co_I2;#|A0&?Zt|KEj z)v{e%QS%?)DeR(nZ;7$OSUE5-rPyFxxJAR@Cm>gBFj@Gjdcfyb3tqrMn`lHR|WQ1j1SVMc5Z!kfNtBDI>K4)m7feh8|m#Su7(|7f1D zssiO^>>{{2nZIee2SvIifd!d@MDeImfCLZ(3<~d-%DMV}Ta# zbxD!{hRHz}t#&zmOKUJMO=-QzW^H#S#%1jwrUoDLFzDTyY4q#rpZUc_Cf zGR7$4J|9klr(Thw!`q~ZdM1svpZ(x6w}xM`jdhj}+NW_&8ndg>UjTLMah6J?s$ubU zzk_;!Q`M8IWL|;3aq=Y|MvilZEoJ;%C%+orZ3M&jvv!!+3-9g> zErWsQys|>!{Zz8c8>hw=m#+^W4(FqxdD3@*wC?``BBKIgXjdR{Sk}v`TSE}{L=p=$-E$u^astq9cB!Us8 z>PL>R4W!^BhEpx=N3X99VnEvihdFI3Y(vls;$2Z|eMXwNLv)G7>4guV8YD)k3zgs_ zK}jebB)4J;Mmm&7V1CL?la{dP-`JAUKIU#FmLwK3A;B7;8fK2Ki!|dafI%h_We%cq zPVFOZdTeGHw{Uc>Nh88}C>`OyuLH&W6)Qm1aI0E9JOAga6ALhcA#XdB1!w@!94Mr}+c8``#*A~NwZu9jL(mV|3aU+$#fNOB)5wT((V zU0=okLi75Cs<;P7kcudzO#$m0vaTWWaIjm4=E)xn122uJ@nKkWJmXc)y(xu$(kNL& zsi^e56>^eNO>^EmYZ#UtfLAQj2You{VsueSkiN+X#=gWZgHG2z*g11<)+!9kV4X>B>{9n<>t+v8cCS z;)+CsWphtglmohG01YxVhSEScKOJn%jHSgX3*``CdO2XBe7UKYeopv@` z!f+#uH1o)Wi`Jd9ArGy|vh$FB(&L|b8XJ8mc;P{slWHFy3%^%@0lS$Vt zQ`D@QM4^*x>m=`UlIJTlrq#f8A@lH#Rit!5mtr&caok7ZcwqLkN4 zIMi8@x}fnqsGJ2Kd8+wnXA=4JI`Ls)8Nv6Zt?UWY`Ei4rGJ=4CQB`R&XN1?&kC7Ie zqnV;p|IsiiPQPw$|Bk7g*6Bka7?{Lv`+^fJGZWmTBL3;i@_532^3nO0 z-}-)1qV|hetHYuM5>(6Wd<0F0&FKv@|C!uc-Hn|Xn_b9QO3$+0WvEj?v(4@{B~;s; z{)v;cF8=4iXZ2)j?H9(H=26=DV$QT4NTV_-Dw$ose+#{$4R5a&@V8Hse<=4Gd2ibz zQ+Z7b#Eu)f_v;2Wy9YgfWegX+91npc=kM9{6ft15D5I(^ckB$i*fLA_DtGlQ)6bTW z3tbO1H+it6f_T5x4YN@yjs|&-?%|iRExfRBmq!+jh4Y?V8H64Bi8&bunQFQr<$?pF zuyfRfli8_>v5Yg0u=^lR{Oz~>r*dchZSOOSkUo25g;+adO7DXmJEM#^00~4~8WVZCu@tI^xD>1%)DqRwDPm$(FAIAg`x4 z$k#(*bn9Vp@}zb1O~=BBHk0`V#F`9s2BdXM&^H!tQ--@>X{HHCc&3*eww`V0X~Xql z3CLW=_SVF4r#8cSO8HF?ISk{8bb1kVQ+^o>_#g5bjpcZx^CE`l-onmp z;<3JI`ZY%Ua0~&Z>9oF)LN#l=t!t<8&xZ4b4^q6t zhD5?NaHn_e8LNix^Kh6ZPj1GT7!rNwxRs?taTvRx8A9=BE-v9eeHB10YmsZ`E>IDP z%%hmksq5{7R$x^Su1s}VwGNiDGJovv>aQ>5)93&ECdGQ**qfSV-zHF#&qo1da|sv` zs}$2<5K?7jFviF4aSgiDla4TDSv04b1Rs%w6RX4K-{*~+G)K#N%9jBt43dd|Y!~{C z7VQt^h{aRDv>Rx_O#V9}6NlTf0_0i|AhOA9jp^lEnjO$}6X`JQHgIJn+5&!<>1mu3 z;gYO|CmnEcMEBnv;+gHsAPIqIQhFAjc%++y*OquzpLn&Kd$v>h^iz6{pLlJT{5>x5 z+^6*Yru=tY;=4}iTVLYwUgAw*;Rk2&uleLJqJ=Ndskeef!1YN0fGU82%I`m;5J73M zOlgQKs5DTU%AbWQaGCNSPHE_0s$f8Ac(g^hghfR8i53=xwzk2Q<9>^cI9R=yBbCq( zu(DVv%UHOwAHS&Maj4@6&f+o3;^3&k@XF$4EE6a!<9IBS7|s&SsN1F@@!=;>47hPNC37i*pTNVIlJfO_j`m!BZNU!5i@wW$K2&Cl5 zgrc<6<+%3Bail7`tuVyPDiH_0UrC3AHtzN0%9X`pk_XG~$0&k{ParO&EwodpjjW?V zJK9zy(G+5}Dn}|3fmDFN6dMu;HCn;xbl@1~53CBGT9fCn|IWo2g6re~;upnhI(e0Y z%-Wg6EaGe4ge{Fka5Tk^^4aYycq>3T;mZnu9l6CD`D~WyNT05XUQj!WX)5>>Wi)N3 z)`q0x5h)ZwFU3W{uk>F1)MD;~^GupHnGH(|8bgK3F1@)fS6#PK z3S)g3YD0j-wv?YfZ1-Rs>#FhkvZ1I@@?Cr0j*clfs)9$~PQ{4rdZZ>Aq8ARN+bgbH z$|P2KAEvT?H7$}^4^(v-Cct z;iPpFULnAvt0Hs5gJOI{Pq*-WHOD|-N^iP?al?&>>p($Qie$|aci`S$-Y;?1*JX{D zH@ZDvWaGVC5{*ZUZz6hCB|p7_Hovb|eOZbqw#D&>29Z*Yi)mctKx-Xj*mW+mfwRMj zQ6h?xH z6ZF5*Q&|qX__Eg|brORR%JR(U8g=Lf%oyf%81~GVZgrUUb(PF_uo-GnGj;!2kckxU@P8%| zTsRUL*OAsN5=}S~Qr;7&I?0INlaSUE*W6iP#h()2Etj;Wq#w;W=POLli^r-4If-GbgPGl|j%;wI_ACBba4GhlC3|{vzHThJ~`u1`2 zhthXEoDFOVtlZ{0EN;&1#tmH1kHo&LoH49|I;^}0&g6tHA}@==15Tu@tilfuTy76M z4^9LdED|$LJgD^~I&563%tG*uJQ=KFAFRA34^pITD59iufBzsEF|F+}l=-uX*t>8u zx(G5p$Um^Lm$(S)unCj0@l-U(yfg~bG>V$LsE|Ghur@If-iv2AtDyo(IUChRSkx4q zr9f)pzZ)bz9#vV{IW!uzP-m;03?aOj?w_Ogh15g~9W`dy+4WYM0CqR`ID9LQ8Q%Zsuq z7_j?aJbOnpu$TjFVjh)NTs^Jbq(7cTG@O0@llcxFf%Yuk56#|+PeH7$MjxCGFL#0k zkBTksA{TeyrB;I4=2kDXd)0gP^MT&-ZfXWiz>@|W&_QBM!c!0?w*w}7SjTG&F1LzK zOGJ&E6STAU%wl2;7cip5LgUSgvCZGuDNy!FD}h6-xw0BS={B4msR|XN!=2I6meIqV z`LX!be{54<_XDQ+JMnaZ~uMxFxB_5wF{w2MOA zc;X=LT+hTMJc0INd!7=vcO~)n1_rn7QIgJU$!yVzFt7IV8lDP99yCUr^(dalFCs~l zApRDf>XY{B5AIUbYxJ}7SLIr%T*va8_Buk|`kSZBm~H7fJ3^F0%UdPIP0xCbjwS;y zeaUtm5)&xsted_jNKD@57~ZxNUPVaHJrq|1kN1lLtmfHFP%u2O>zz#hhpA zKO6UpM%%&mD6#%8sGXz*X9g+dqjDmEb2&@&xXj$=1bR(+ucAz7Yh#s z^tGHm!{8FAYoD<@^MZ?Gee##TlhU)jGMT`Efxz*?;%WyT$g`j%A9K^Z`!uH8pn~rF zE|t@)&?Vbc|DOM>N8qwTZOfoU8z-+XPrnKjbTlGx^TEI3rbqJ(uqrH=f9bw6`0hpR z{?VgArGc5xtGY(m^O)kjrAXw58c`4Ek`4WQbn980fw%-151Ebsi92*$S{c0d>Um%I zoW1xo>t8dXP`F6*ocUOO-w|A{=sM>txeDPI!b5Tg>l5;W{7r!-1=i~a0f9gx*6ScF z9)Zbhw%8hHEEz*69E`>tZz7#Qsa&kq7H=w>!e}_`?I9#A764;U(-_A3KLL;kZ}+E8 zo;rIX{Am*?M4tu=G^|M!DFB&Ip+=QDm1ECA$_V*t0nQ?i7qzq1&Zs56I;^nQ~>zmoaCS z=`gKf!-@+t4J^^?;n0G|9{+HR7NKO#uVKfQJ)5@Fw_|ZWJiD8BZ{NQKx@8=3b=cre zYbRH}oO$!tT?q?(44is(>jT|JG+ey2YUIwrhZjGde9PNRr=zYudUR^**&!E?9{GED z`}gtZcYc0o`oM{eYDgdf1;mXsxB$~ByU`fpkEo>di%`M|DctM4o*n~`y@4763jhK? z9Pq;ePwNgl06Zg3DbeDpufi8$j8VpwF0?5<$POfmz=8^Fs7D+@Q*pO~8uYI%r4&d& zfhCn(vdAQvj1tNzn{0B*E3M3ONi3zTvdb^21k=kf$sE&6G0`kDO)jNm)6Fy0j1$f| z)1*_*I`O$JR#sC4SKV~m3({P7 z)tj#<0M&Dk-g)0G@zZ5U|jvB4*7W19#7-~98@ zPhb7@*>B(d_jyCLU7WvHw`-bz`?@Iy;qTx7{{a|40S=IW*E!n(eIqaGz)WNulNh`T zm_XA+Q2%FPLszRTNI?j?FM}E^n*k?wwhOv!f%^+w{l29?rb$p`>9S4(?YAs;rI3b8 zTi3UoX2TigZ!ka#64czbLb^>*gaq7B4m&7A)F`osV%cH0aMGqNNpXr*v{IYKw53N? zaf*b}A{Re4s)pz$NWXht^A<l9QeEdOBlhLQEZ6xd!{9Y=|i@C@1AHIs4o$^lw-w=Tt-tTIjJKmZvTbTD8eyk zhcNmfgp6pNn+g$#FzT_0eAHtoa#%?p`cM-6=wm$cl%;xfQjUsfn=<7n0vx8oZr1ac z)Kr#0^;b|}_U4E)+b1*onYCMT5UJ*(XWi&lvuoNDWhwROM#tHyj_&kRnfwXXO0^@K zI82*b#i~ndiq%W46s_v?kv4%Mt(AI;rR_9`T(ybQk*c+w@RTQ4XQ{(wR;-0HtDjIe z$U+77Qiuu!CuTs_%nmk-pWj8oghNkSI?)=y`EejXn#K(J}$xi0GxgX;Pa4_bsM1^%EtWuW$zAWx*Rb=PWf8@j z*!-R*Sv>9UP^p^TstOj0>roY9)HXo?`%t;?b#QNln$GI=2@5nlQ;=tm_g^x8ckMFDCT~Y_b z_O0fRkxZQiq0GG?qcM==``~=?a+nQ%Awpr?#3TK7r*%DHC-`_g8w%3p{)q$KW}l1iw-oI zxOhcBA6n9ZuC$}62x&@3y3dWi^cO$PXih7-(uBrzryrf_Mhp7Vc0%;1QyuG1XZqEo zuJsqgRaRZ^n%BMd^{;`w>j}E$Ar=PZv5}o@WiPvvWHz#kp&R5f?SC?8hFW9x2FhuqyAE4;<^1}cgzxNwN(_*_rDHwp8JKs!rZJy_dv zPyH!Ejf=U=EG{@Txm?txntA5()|!tgJLQp^d8ft}^0J0A++&Xq^|}ead4pAM)QM*s zvK0qTo*QoOgDzFVFIQWR19+s*g`dCG6h^9Ab?pKs23v~O-= zi2r=TV52yNqds?%pC(c+ud#**UgG6Go2N?$vv|9%?~02YtP>z+0UN#wYUB4ai4qL@1FO) JhkZZ*06R@)K6d~B literal 0 HcmV?d00001 diff --git a/CppUnit/include/CppUnit/CppUnit.h b/CppUnit/include/CppUnit/CppUnit.h new file mode 100644 index 000000000..676b0370c --- /dev/null +++ b/CppUnit/include/CppUnit/CppUnit.h @@ -0,0 +1,56 @@ +// +// CppUnit.h +// +// $Id: //poco/1.4/CppUnit/include/CppUnit/CppUnit.h#1 $ +// + + +#ifndef CppUnit_CppUnit_INCLUDED +#define CppUnit_CppUnit_INCLUDED + + +// +// Ensure that POCO_DLL is default unless POCO_STATIC is defined +// +#if defined(_WIN32) && defined(_DLL) + #if !defined(POCO_DLL) && !defined(POCO_STATIC) + #define POCO_DLL + #endif +#endif + + +// +// The following block is the standard way of creating macros which make exporting +// from a DLL simpler. All files within this DLL are compiled with the CppUnit_EXPORTS +// symbol defined on the command line. this symbol should not be defined on any project +// that uses this DLL. This way any other project whose source files include this file see +// CppUnit_API functions as being imported from a DLL, wheras this DLL sees symbols +// defined with this macro as being exported. +// +#if defined(_WIN32) && defined(POCO_DLL) + #if defined(CppUnit_EXPORTS) + #define CppUnit_API __declspec(dllexport) + #else + #define CppUnit_API __declspec(dllimport) + #endif +#endif + + +#if !defined(CppUnit_API) + #define CppUnit_API +#endif + + +// Turn off some annoying warnings +#ifdef _MSC_VER + #pragma warning(disable:4786) // identifier truncation warning + #pragma warning(disable:4503) // decorated name length exceeded - mainly a problem with STLPort + #pragma warning(disable:4018) // signed/unsigned comparison + #pragma warning(disable:4284) // return type for operator -> is not UDT + #pragma warning(disable:4251) // ... needs to have dll-interface warning + #pragma warning(disable:4273) + #pragma warning(disable:4275) // ... non dll-interface class used as base for dll-interface class +#endif + + +#endif // CppUnit_CppUnit_INCLUDED diff --git a/CppUnit/include/CppUnit/CppUnitException.h b/CppUnit/include/CppUnit/CppUnitException.h new file mode 100644 index 000000000..be0394be1 --- /dev/null +++ b/CppUnit/include/CppUnit/CppUnitException.h @@ -0,0 +1,141 @@ +// +// CppUnitException.h +// +// $Id: //poco/1.4/CppUnit/include/CppUnit/CppUnitException.h#1 $ +// + + +#ifndef CppUnit_CppUnitException_INCLUDED +#define CppUnit_CppUnitException_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include +#include + + +namespace CppUnit { + + +class CppUnit_API CppUnitException: public std::exception + /// CppUnitException is an exception that serves + /// descriptive strings through its what() method +{ +public: + CppUnitException(const std::string& message = "", + long lineNumber = CPPUNIT_UNKNOWNLINENUMBER, + const std::string& fileName = CPPUNIT_UNKNOWNFILENAME); + CppUnitException(const std::string& message, + long lineNumber, + long data1lineNumber, + const std::string& fileName); + CppUnitException(const std::string& message, + long lineNumber, + long data1lineNumber, + long data2lineNumber, + const std::string& fileName); + CppUnitException(const CppUnitException& other); + virtual ~CppUnitException() throw(); + + CppUnitException& operator = (const CppUnitException& other); + + const char* what() const throw (); + + long lineNumber() const; + long data1LineNumber() const; + long data2LineNumber() const; + const std::string& fileName() const; + + static const std::string CPPUNIT_UNKNOWNFILENAME; + static const int CPPUNIT_UNKNOWNLINENUMBER; + +private: + std::string _message; + long _lineNumber; + long _data1lineNumber; + long _data2lineNumber; + std::string _fileName; +}; + + +inline CppUnitException::CppUnitException(const CppUnitException& other): exception (other) +{ + _message = other._message; + _lineNumber = other._lineNumber; + _data1lineNumber = other._data1lineNumber; + _data2lineNumber = other._data2lineNumber; + _fileName = other._fileName; +} + + +inline CppUnitException::CppUnitException (const std::string& message, long lineNumber, const std::string& fileName): _message(message), _lineNumber(lineNumber), _data1lineNumber(CPPUNIT_UNKNOWNLINENUMBER), _data2lineNumber(CPPUNIT_UNKNOWNLINENUMBER), _fileName(fileName) +{ +} + + +inline CppUnitException::CppUnitException (const std::string& message, long lineNumber, long data1lineNumber, const std::string& fileName): _message(message), _lineNumber(lineNumber), _data1lineNumber(data1lineNumber), _data2lineNumber(CPPUNIT_UNKNOWNLINENUMBER), _fileName(fileName) +{ +} + + +inline CppUnitException::CppUnitException (const std::string& message, long lineNumber, long data1lineNumber, long data2lineNumber, const std::string& fileName): _message(message), _lineNumber(lineNumber), _data1lineNumber(data1lineNumber), _data2lineNumber(data2lineNumber), _fileName(fileName) +{ +} + + +inline CppUnitException::~CppUnitException () throw() +{ +} + + +inline CppUnitException& CppUnitException::operator = (const CppUnitException& other) +{ + exception::operator= (other); + + if (&other != this) + { + _message = other._message; + _lineNumber = other._lineNumber; + _data1lineNumber = other._data1lineNumber; + _data2lineNumber = other._data2lineNumber; + _fileName = other._fileName; + } + return *this; +} + + +inline const char* CppUnitException::what() const throw () +{ + return _message.c_str(); +} + + +inline long CppUnitException::lineNumber() const +{ + return _lineNumber; +} + + +inline long CppUnitException::data1LineNumber() const +{ + return _data1lineNumber; +} + + +inline long CppUnitException::data2LineNumber() const +{ + return _data2lineNumber; +} + + +// The file in which the error occurred +inline const std::string& CppUnitException::fileName() const +{ + return _fileName; +} + + +} // namespace CppUnit + + +#endif // CppUnit_CppUnitException_INCLUDED diff --git a/CppUnit/include/CppUnit/Guards.h b/CppUnit/include/CppUnit/Guards.h new file mode 100644 index 000000000..fa3ec0768 --- /dev/null +++ b/CppUnit/include/CppUnit/Guards.h @@ -0,0 +1,19 @@ +// +// Guards.h +// +// $Id: //poco/1.4/CppUnit/include/CppUnit/Guards.h#1 $ +// + + +#ifndef CppUnit_Guards_INCLUDED +#define CppUnit_Guards_INCLUDED + + +// Prevent copy construction and assignment for a class +#define REFERENCEOBJECT(className) \ +private: \ + className(const className& other); \ + className& operator = (const className& other); + + +#endif // CppUnit_Guards_INCLUDED diff --git a/CppUnit/include/CppUnit/Orthodox.h b/CppUnit/include/CppUnit/Orthodox.h new file mode 100644 index 000000000..9cb188acb --- /dev/null +++ b/CppUnit/include/CppUnit/Orthodox.h @@ -0,0 +1,105 @@ +// +// Orthodox.h +// +// $Id: //poco/1.4/CppUnit/include/CppUnit/Orthodox.h#1 $ +// + + +#ifndef CppUnit_Orthodox_INCLUDED +#define CppUnit_Orthodox_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include "CppUnit/TestCase.h" + + +namespace CppUnit { + + +/* + * Orthodox performs a simple set of tests on an arbitary + * class to make sure that it supports at least the + * following operations: + * + * default construction - constructor + * equality/inequality - operator== && operator!= + * assignment - operator= + * negation - operator! + * safe passage - copy construction + * + * If operations for each of these are not declared + * the template will not instantiate. If it does + * instantiate, tests are performed to make sure + * that the operations have correct semantics. + * + * Adding an orthodox test to a suite is very + * easy: + * + * public: Test *suite () { + * TestSuite *suiteOfTests = new TestSuite; + * suiteOfTests->addTest (new ComplexNumberTest ("testAdd"); + * suiteOfTests->addTest (new TestCaller > ()); + * return suiteOfTests; + * } + * + * Templated test cases be very useful when you are want to + * make sure that a group of classes have the same form. + * + * see TestSuite + */ +template +class Orthodox: public TestCase +{ +public: + Orthodox(): TestCase("Orthodox") + { + } + +protected: + ClassUnderTest call(ClassUnderTest object); + void runTest (); +}; + + +// Run an orthodoxy test +template +void Orthodox::runTest() +{ + // make sure we have a default constructor + ClassUnderTest a, b, c; + + // make sure we have an equality operator + assert (a == b); + + // check the inverse + b.operator= (a.operator! ()); + assert (a != b); + + // double inversion + b = !!a; + assert (a == b); + + // invert again + b = !a; + + // check calls + c = a; + assert (c == call (a)); + + c = b; + assert (c == call (b)); +} + + +// Exercise a call +template +ClassUnderTest Orthodox::call(ClassUnderTest object) +{ + return object; +} + + +} // namespace CppUnit + + +#endif // CppUnit_Orthodox_INCLUDED diff --git a/CppUnit/include/CppUnit/RepeatedTest.h b/CppUnit/include/CppUnit/RepeatedTest.h new file mode 100644 index 000000000..132947449 --- /dev/null +++ b/CppUnit/include/CppUnit/RepeatedTest.h @@ -0,0 +1,77 @@ +// +// RepeatedTest.h +// +// $Id: //poco/1.4/CppUnit/include/CppUnit/RepeatedTest.h#1 $ +// + + +#ifndef CppUnit_RepeatedTest_INCLUDED +#define CppUnit_RepeatedTest_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include "CppUnit/Guards.h" +#include "CppUnit/TestDecorator.h" + + +namespace CppUnit { + + +class Test; +class TestResult; + + +/* + * A decorator that runs a test repeatedly. + * Does not assume ownership of the test it decorates + * + */ +class CppUnit_API RepeatedTest: public TestDecorator +{ + REFERENCEOBJECT (RepeatedTest) + +public: + RepeatedTest(Test* test, int timesRepeat): TestDecorator (test), _timesRepeat (timesRepeat) + { + } + + int countTestCases(); + std::string toString(); + void run(TestResult *result); + +private: + const int _timesRepeat; +}; + + +// Counts the number of test cases that will be run by this test. +inline RepeatedTest::countTestCases () +{ + return TestDecorator::countTestCases() * _timesRepeat; +} + + +// Returns the name of the test instance. +inline std::string RepeatedTest::toString() +{ + return TestDecorator::toString() + " (repeated)"; +} + + +// Runs a repeated test +inline void RepeatedTest::run(TestResult *result) +{ + for (int n = 0; n < _timesRepeat; n++) + { + if (result->shouldStop()) + break; + + TestDecorator::run(result); + } +} + + +} // namespace CppUnit + + +#endif // CppUnit_RepeatedTest_INCLUDED diff --git a/CppUnit/include/CppUnit/Test.h b/CppUnit/include/CppUnit/Test.h new file mode 100644 index 000000000..62054f270 --- /dev/null +++ b/CppUnit/include/CppUnit/Test.h @@ -0,0 +1,65 @@ +// +// Test.h +// +// $Id: //poco/1.4/CppUnit/include/CppUnit/Test.h#1 $ +// + + +#ifndef CppUnit_Test_INCLUDED +#define CppUnit_Test_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include + + +namespace CppUnit { + + +class TestResult; + + +/* + * A Test can be run and collect its results. + * See TestResult. + * + */ +class CppUnit_API Test +{ +public: + virtual ~Test() = 0; + virtual void run(TestResult* result) = 0; + virtual int countTestCases() = 0; + virtual std::string toString() = 0; +}; + + +inline Test::~Test() +{ +} + + +// Runs a test and collects its result in a TestResult instance. +inline void Test::run(TestResult *result) +{ +} + + +// Counts the number of test cases that will be run by this test. +inline int Test::countTestCases() +{ + return 0; +} + + +// Returns the name of the test instance. +inline std::string Test::toString() +{ + return ""; +} + + +} // namespace CppUnit + + +#endif // CppUnit_Test_INCLUDED diff --git a/CppUnit/include/CppUnit/TestCaller.h b/CppUnit/include/CppUnit/TestCaller.h new file mode 100644 index 000000000..496a64522 --- /dev/null +++ b/CppUnit/include/CppUnit/TestCaller.h @@ -0,0 +1,95 @@ +// +// TestCaller.h +// +// $Id: //poco/1.4/CppUnit/include/CppUnit/TestCaller.h#1 $ +// + + +#ifndef CppUnit_TestCaller_INCLUDED +#define CppUnit_TestCaller_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include "Guards.h" +#include "TestCase.h" +#include + + +namespace CppUnit { + + +/* + * A test caller provides access to a test case method + * on a test case class. Test callers are useful when + * you want to run an individual test or add it to a + * suite. + * + * Here is an example: + * + * class MathTest : public TestCase { + * ... + * public: + * void setUp (); + * void tearDown (); + * + * void testAdd (); + * void testSubtract (); + * }; + * + * Test *MathTest::suite () { + * TestSuite *suite = new TestSuite; + * + * suite->addTest (new TestCaller ("testAdd", testAdd)); + * return suite; + * } + * + * You can use a TestCaller to bind any test method on a TestCase + * class, as long as it returns accepts void and returns void. + * + * See TestCase + */ +template +class TestCaller: public TestCase +{ + REFERENCEOBJECT (TestCaller) + + typedef void (Fixture::*TestMethod)(); + +public: + TestCaller(const std::string& name, TestMethod test): + TestCase(name), + _test(test), + _fixture(new Fixture(name)) + { + } + +protected: + void runTest() + { + (_fixture.get()->*_test)(); + } + + void setUp() + { + _fixture.get()->setUp(); + } + + void tearDown() + { + _fixture.get()->tearDown(); + } + +private: + TestMethod _test; + std::auto_ptr _fixture; +}; + + +} // namespace CppUnit + + +#define CppUnit_addTest(suite, cls, mth) \ + suite->addTest(new CppUnit::TestCaller(#mth, &cls::mth)) + + +#endif // CppUnit_TestCaller_INCLUDED diff --git a/CppUnit/include/CppUnit/TestCase.h b/CppUnit/include/CppUnit/TestCase.h new file mode 100644 index 000000000..58906400d --- /dev/null +++ b/CppUnit/include/CppUnit/TestCase.h @@ -0,0 +1,249 @@ +// +// TestCase.h +// +// $Id: //poco/1.4/CppUnit/include/CppUnit/TestCase.h#1 $ +// + + +#ifndef CppUnit_TestCase_INCLUDED +#define CppUnit_TestCase_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include "CppUnit/Guards.h" +#include "CppUnit/Test.h" +#include "CppUnit/CppUnitException.h" +#include +#include + + +namespace CppUnit { + + +class TestResult; + + +/* + * A test case defines the fixture to run multiple tests. To define a test case + * 1) implement a subclass of TestCase + * 2) define instance variables that store the state of the fixture + * 3) initialize the fixture state by overriding setUp + * 4) clean-up after a test by overriding tearDown. + * + * Each test runs in its own fixture so there + * can be no side effects among test runs. + * Here is an example: + * + * class MathTest : public TestCase { + * protected: int m_value1; + * protected: int m_value2; + * + * public: MathTest (std::string name) + * : TestCase (name) { + * } + * + * protected: void setUp () { + * m_value1 = 2; + * m_value2 = 3; + * } + * } + * + * + * For each test implement a method which interacts + * with the fixture. Verify the expected results with assertions specified + * by calling assert on the expression you want to test: + * + * protected: void testAdd () { + * int result = value1 + value2; + * assert (result == 5); + * } + * + * Once the methods are defined you can run them. To do this, use + * a TestCaller. + * + * Test *test = new TestCaller("testAdd", MathTest::testAdd); + * test->run (); + * + * + * The tests to be run can be collected into a TestSuite. CppUnit provides + * different test runners which can run a test suite and collect the results. + * The test runners expect a static method suite as the entry + * point to get a test to run. + * + * public: static MathTest::suite () { + * TestSuite *suiteOfTests = new TestSuite; + * suiteOfTests->addTest(new TestCaller("testAdd", testAdd)); + * suiteOfTests->addTest(new TestCaller("testDivideByZero", testDivideByZero)); + * return suiteOfTests; + * } + * + * Note that the caller of suite assumes lifetime control + * for the returned suite. + * + * see TestResult, TestSuite and TestCaller + * + */ +class CppUnit_API TestCase: public Test +{ + REFERENCEOBJECT (TestCase) + +public: + TestCase(const std::string& Name); + ~TestCase(); + + virtual void run(TestResult* result); + virtual TestResult* run(); + virtual int countTestCases(); + const std::string& name() const; + std::string toString(); + + virtual void setUp(); + virtual void tearDown(); + +protected: + virtual void runTest(); + TestResult* defaultResult(); + + void assertImplementation(bool condition, + const std::string& conditionExpression = "", + long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER, + const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME); + + void loop1assertImplementation(bool condition, + const std::string& conditionExpression = "", + long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER, + long dataLineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER, + const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME); + + void loop2assertImplementation(bool condition, + const std::string& conditionExpression = "", + long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER, + long data1LineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER, + long data2LineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER, + const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME); + + void assertEquals(long expected, + long actual, + long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER, + const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME); + + void assertEquals(double expected, + double actual, + double delta, + long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER, + const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME); + + void assertEquals(const std::string& expected, + const std::string& actual, + long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER, + const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME); + + void assertEquals(const void* expected, + const void* actual, + long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER, + const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME); + + std::string notEqualsMessage(long expected, long actual); + std::string notEqualsMessage(double expected, double actual); + std::string notEqualsMessage(const void* expected, const void* actual); + std::string notEqualsMessage(const std::string& expected, const std::string& actual); + + void assertNotNull(const void* pointer, + const std::string& pointerExpression = "", + long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER, + const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME); + + void assertNull(const void* pointer, + const std::string& pointerExpression = "", + long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER, + const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME); + + void fail(const std::string&message = "", + long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER, + const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME); + +private: + const std::string _name; +}; + + +// Constructs a test case +inline TestCase::TestCase(const std::string& name): _name (name) +{ +} + + +// Destructs a test case +inline TestCase::~TestCase() +{ +} + + +// Returns a count of all the tests executed +inline int TestCase::countTestCases() +{ + return 1; +} + + +// Returns the name of the test case +inline const std::string& TestCase::name() const +{ + return _name; +} + + +// A hook for fixture set up +inline void TestCase::setUp() +{ +} + + +// A hook for fixture tear down +inline void TestCase::tearDown() +{ +} + + +// Returns the name of the test case instance +inline std::string TestCase::toString() +{ + const std::type_info& thisClass = typeid(*this); + return std::string(thisClass.name()) + "." + name(); +} + + +// A set of macros which allow us to get the line number +// and file name at the point of an error. +// Just goes to show that preprocessors do have some +// redeeming qualities. +#undef assert +#define assert(condition) \ + (this->assertImplementation((condition), (#condition), __LINE__, __FILE__)) + +#define loop_1_assert(data1line, condition) \ + (this->loop1assertImplementation((condition), (#condition), __LINE__, data1line, __FILE__)) + +#define loop_2_assert(data1line, data2line, condition) \ + (this->loop2assertImplementation((condition), (#condition), __LINE__, data1line, data2line, __FILE__)) + +#define assertEqualDelta(expected, actual, delta) \ + (this->assertEquals((expected), (actual), (delta), __LINE__, __FILE__)) + +#define assertEqual(expected, actual) \ + (this->assertEquals((expected), (actual), __LINE__, __FILE__)) + +#define assertNullPtr(ptr) \ + (this->assertNull((ptr), #ptr, __LINE__, __FILE__)) + +#define assertNotNullPtr(ptr) \ + (this->assertNotNull((ptr), #ptr, __LINE__, __FILE__)) + +#define failmsg(msg) \ + (this->fail(msg, __LINE__, __FILE__)) + + +} // namespace CppUnit + + +#endif // CppUnit_TestCase_INCLUDED diff --git a/CppUnit/include/CppUnit/TestDecorator.h b/CppUnit/include/CppUnit/TestDecorator.h new file mode 100644 index 000000000..4b435ed6e --- /dev/null +++ b/CppUnit/include/CppUnit/TestDecorator.h @@ -0,0 +1,52 @@ +// +// TestDecorator.h +// +// $Id: //poco/1.4/CppUnit/include/CppUnit/TestDecorator.h#1 $ +// + + +#ifndef CppUnit_TestDecorator_INCLUDED +#define CppUnit_TestDecorator_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include "CppUnit/Guards.h" +#include "CppUnit/Test.h" + + +namespace CppUnit { + + +class TestResult; + + +/* + * A Decorator for Tests + * + * Does not assume ownership of the test it decorates + * + */ +class CppUnit_API TestDecorator: public Test +{ + REFERENCEOBJECT(TestDecorator) + +public: + TestDecorator(Test* test); + + virtual ~TestDecorator(); + + int countTestCases(); + + void run(TestResult* result); + + std::string toString(); + +protected: + Test* _test; +}; + + +} // namespace CppUnit + + +#endif // CppUnit_TestDecorator_INCLUDED diff --git a/CppUnit/include/CppUnit/TestFailure.h b/CppUnit/include/CppUnit/TestFailure.h new file mode 100644 index 000000000..37c93d4d2 --- /dev/null +++ b/CppUnit/include/CppUnit/TestFailure.h @@ -0,0 +1,86 @@ +// +// TestFailure.h +// +// $Id: //poco/1.4/CppUnit/include/CppUnit/TestFailure.h#1 $ +// + + +#ifndef CppUnit_TestFailure_INCLUDED +#define CppUnit_TestFailure_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include "CppUnit/CppUnitException.h" +#include "CppUnit/Guards.h" + + +namespace CppUnit { + + +class Test; + + +/* + * A TestFailure collects a failed test together with + * the caught exception. + * + * TestFailure assumes lifetime control for any exception + * passed to it. The lifetime of tests is handled by + * their TestSuite (if they have been added to one) or + * whomever creates them. + * + * see TestResult + * see TestSuite + * + */ +class CppUnit_API TestFailure +{ + REFERENCEOBJECT (TestFailure) + +public: + TestFailure(Test* failedTest, CppUnitException* thrownException); + ~TestFailure(); + + Test* failedTest(); + CppUnitException* thrownException(); + std::string toString(); + +protected: + Test* _failedTest; + CppUnitException *_thrownException; +}; + + +// Constructs a TestFailure with the given test and exception. +inline TestFailure::TestFailure(Test* failedTest, CppUnitException* thrownException): _failedTest(failedTest), _thrownException(thrownException) +{ +} + + +// Deletes the owned exception. +inline TestFailure::~TestFailure() +{ + delete _thrownException; +} + + +// Gets the failed test. +inline Test* TestFailure::failedTest() +{ + return _failedTest; +} + + +// Gets the thrown exception. +inline CppUnitException* TestFailure::thrownException() +{ + return _thrownException; +} + + +} // namespace CppUnit + + +#endif // CppUnit_TestFailure_INCLUDED + + diff --git a/CppUnit/include/CppUnit/TestResult.h b/CppUnit/include/CppUnit/TestResult.h new file mode 100644 index 000000000..26a5fa3fe --- /dev/null +++ b/CppUnit/include/CppUnit/TestResult.h @@ -0,0 +1,231 @@ +// +// TestResult.h +// +// $Id: //poco/1.4/CppUnit/include/CppUnit/TestResult.h#1 $ +// + + +#ifndef CppUnit_TestResult_INCLUDED +#define CppUnit_TestResult_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include "CppUnit/Guards.h" +#include "CppUnit/TestFailure.h" +#include + + +namespace CppUnit { + + +class CppUnitException; +class Test; + + +/* + * A TestResult collects the results of executing a test case. It is an + * instance of the Collecting Parameter pattern. + * + * The test framework distinguishes between failures and errors. + * A failure is anticipated and checked for with assertions. Errors are + * unanticipated problems signified by exceptions that are not generated + * by the framework. + * + * TestResult supplies a template method 'setSynchronizationObject ()' + * so that subclasses can provide mutual exclusion in the face of multiple + * threads. This can be useful when tests execute in one thread and + * they fill a subclass of TestResult which effects change in another + * thread. To have mutual exclusion, override setSynchronizationObject () + * and make sure that you create an instance of ExclusiveZone at the + * beginning of each method. + * + * see Test + */ +class CppUnit_API TestResult +{ + REFERENCEOBJECT (TestResult) + +public: + TestResult(); + virtual ~TestResult(); + + virtual void addError(Test* test, CppUnitException* e); + virtual void addFailure(Test* test, CppUnitException* e); + virtual void startTest(Test* test); + virtual void endTest(Test* test); + virtual int runTests(); + virtual int testErrors(); + virtual int testFailures(); + virtual bool wasSuccessful(); + virtual bool shouldStop(); + virtual void stop(); + + virtual std::vector& errors(); + virtual std::vector& failures(); + + class SynchronizationObject + { + public: + SynchronizationObject() + { + } + + virtual ~SynchronizationObject() + { + } + + virtual void lock() + { + } + + virtual void unlock() + { + } + }; + + class ExclusiveZone + { + SynchronizationObject* m_syncObject; + + public: + ExclusiveZone(SynchronizationObject* syncObject): m_syncObject(syncObject) + { + m_syncObject->lock(); + } + + ~ExclusiveZone() + { + m_syncObject->unlock(); + } + }; + +protected: + virtual void setSynchronizationObject(SynchronizationObject* syncObject); + + std::vector _errors; + std::vector _failures; + int _runTests; + bool _stop; + SynchronizationObject* _syncObject; + +}; + + +// Construct a TestResult +inline TestResult::TestResult(): _syncObject(new SynchronizationObject()) +{ + _runTests = 0; + _stop = false; +} + + +// Adds an error to the list of errors. The passed in exception +// caused the error +inline void TestResult::addError(Test* test, CppUnitException* e) +{ + ExclusiveZone zone(_syncObject); + _errors.push_back(new TestFailure(test, e)); +} + + +// Adds a failure to the list of failures. The passed in exception +// caused the failure. +inline void TestResult::addFailure(Test* test, CppUnitException* e) +{ + ExclusiveZone zone(_syncObject); + _failures.push_back(new TestFailure(test, e)); +} + + +// Informs the result that a test will be started. +inline void TestResult::startTest(Test* test) +{ + ExclusiveZone zone(_syncObject); + _runTests++; +} + + +// Informs the result that a test was completed. +inline void TestResult::endTest(Test* test) +{ + ExclusiveZone zone(_syncObject); +} + + +// Gets the number of run tests. +inline int TestResult::runTests() +{ + ExclusiveZone zone(_syncObject); + return _runTests; +} + + +// Gets the number of detected errors. +inline int TestResult::testErrors() +{ + ExclusiveZone zone(_syncObject); + return (int) _errors.size(); +} + + +// Gets the number of detected failures. +inline int TestResult::testFailures() +{ + ExclusiveZone zone(_syncObject); + return (int) _failures.size(); +} + + +// Returns whether the entire test was successful or not. +inline bool TestResult::wasSuccessful() +{ + ExclusiveZone zone(_syncObject); + return _failures.size() == 0 && _errors.size () == 0; +} + + +// Returns a std::vector of the errors. +inline std::vector& TestResult::errors() +{ + ExclusiveZone zone(_syncObject); + return _errors; +} + + +// Returns a std::vector of the failures. +inline std::vector& TestResult::failures() +{ + ExclusiveZone zone(_syncObject); + return _failures; +} + + +// Returns whether testing should be stopped +inline bool TestResult::shouldStop() +{ + ExclusiveZone zone(_syncObject); + return _stop; +} + + +// Stop testing +inline void TestResult::stop() +{ + ExclusiveZone zone(_syncObject); + _stop = true; +} + + +// Accept a new synchronization object for protection of this instance +// TestResult assumes ownership of the object +inline void TestResult::setSynchronizationObject(SynchronizationObject* syncObject) +{ + delete _syncObject; + _syncObject = syncObject; +} + + +} // namespace CppUnit + + +#endif // CppUnit_TestResult_INCLUDED diff --git a/CppUnit/include/CppUnit/TestRunner.h b/CppUnit/include/CppUnit/TestRunner.h new file mode 100644 index 000000000..4227d9ac5 --- /dev/null +++ b/CppUnit/include/CppUnit/TestRunner.h @@ -0,0 +1,103 @@ +// +// TestRunner.h +// +// $Id: //poco/1.4/CppUnit/include/CppUnit/TestRunner.h#2 $ +// + + +#ifndef CppUnit_TestRunner_INCLUDED +#define CppUnit_TestRunner_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include +#include +#include +#if defined(POCO_VXWORKS) +#include +#endif + + +namespace CppUnit { + + +class Test; + + +/* + * A command line based tool to run tests. + * TestRunner expects as its only argument the name of a TestCase class. + * TestRunner prints out a trace as the tests are executed followed by a + * summary at the end. + * + * You can add to the tests that the TestRunner knows about by + * making additional calls to "addTest (...)" in main. + * + * Here is the synopsis: + * + * TestRunner [-all] [-print] [-wait] ExampleTestCase + * + */ +class CppUnit_API TestRunner +{ + typedef std::pair Mapping; + typedef std::vector Mappings; + +public: + TestRunner(); + TestRunner(std::ostream& ostr); + ~TestRunner(); + + bool run(const std::vector& args); + void addTest(const std::string& name, Test* test); + +protected: + bool run(Test* test); + void printBanner(); + void print(const std::string& name, Test* pTest, int indent); + Test* find(const std::string& name, Test* pTest, const std::string& testName); + +private: + std::ostream& _ostr; + Mappings _mappings; +}; + + +} // namespace CppUnit + + +#if defined(POCO_VXWORKS) +#define CppUnitMain(testCase) \ + int testCase##Runner(const char* arg0, ...) \ + { \ + std::vector args; \ + args.push_back(#testCase "Runner"); \ + args.push_back(std::string(arg0)); \ + va_list vargs; \ + va_start(vargs, arg0); \ + const char* arg = va_arg(vargs, const char*); \ + while (arg) \ + { \ + args.push_back(std::string(arg)); \ + arg = va_arg(vargs, const char*); \ + } \ + va_end(vargs); \ + CppUnit::TestRunner runner; \ + runner.addTest(#testCase, testCase::suite()); \ + return runner.run(args) ? 0 : 1; \ + } +#else +#define CppUnitMain(testCase) \ + int main(int ac, char **av) \ + { \ + std::vector args; \ + for (int i = 0; i < ac; ++i) \ + args.push_back(std::string(av[i])); \ + CppUnit::TestRunner runner; \ + runner.addTest(#testCase, testCase::suite()); \ + return runner.run(args) ? 0 : 1; \ + } +#endif + + +#endif // CppUnit_TestRunner_INCLUDED diff --git a/CppUnit/include/CppUnit/TestSetup.h b/CppUnit/include/CppUnit/TestSetup.h new file mode 100644 index 000000000..7af839669 --- /dev/null +++ b/CppUnit/include/CppUnit/TestSetup.h @@ -0,0 +1,57 @@ +// +// TestSetup.h +// +// $Id: //poco/1.4/CppUnit/include/CppUnit/TestSetup.h#1 $ +// + + +#ifndef CppUnit_TestSetup_INCLUDED +#define CppUnit_TestSetup_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include "CppUnit/Guards.h" +#include "CppUnit/TestDecorator.h" + + +namespace CppUnit { + + +class Test; +class TestResult; + + +class CppUnit_API TestSetup: public TestDecorator +{ + REFERENCEOBJECT (TestSetup) + +public: + TestSetup(Test* test): TestDecorator(test) + { + } + + void run(TestResult* result); + +protected: + void setUp() + { + } + + void tearDown() + { + } +}; + + +inline void TestSetup::run(TestResult* result) +{ + setUp(); + TestDecorator::run(result); + tearDown(); +} + + +} // namespace CppUnit + + +#endif // CppUnit_TestSetup_INCLUDED diff --git a/CppUnit/include/CppUnit/TestSuite.h b/CppUnit/include/CppUnit/TestSuite.h new file mode 100644 index 000000000..a2192ae6a --- /dev/null +++ b/CppUnit/include/CppUnit/TestSuite.h @@ -0,0 +1,98 @@ +// +// TestSuite.h +// +// $Id: //poco/1.4/CppUnit/include/CppUnit/TestSuite.h#1 $ +// + + +#ifndef CppUnit_TestSuite_INCLUDED +#define CppUnit_TestSuite_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include "CppUnit/Guards.h" +#include "CppUnit/Test.h" +#include +#include + + +namespace CppUnit { + + +class TestResult; + + +/* + * A TestSuite is a Composite of Tests. + * It runs a collection of test cases. Here is an example. + * + * TestSuite *suite= new TestSuite(); + * suite->addTest(new TestCaller ("testAdd", testAdd)); + * suite->addTest(new TestCaller ("testDivideByZero", testDivideByZero)); + * + * Note that TestSuites assume lifetime + * control for any tests added to them. + * + * see Test and TestCaller + */ +class CppUnit_API TestSuite: public Test +{ + REFERENCEOBJECT (TestSuite) + +public: + TestSuite(const std::string& name = ""); + ~TestSuite(); + + void run(TestResult* result); + int countTestCases(); + void addTest(Test* test); + std::string toString(); + + virtual void deleteContents(); + + const std::vector tests() const; + +private: + std::vector _tests; + const std::string _name; +}; + + +// Default constructor +inline TestSuite::TestSuite(const std::string& name): _name(name) +{ +} + + +// Destructor +inline TestSuite::~TestSuite() +{ + deleteContents(); +} + + +// Adds a test to the suite. +inline void TestSuite::addTest(Test* test) +{ + _tests.push_back(test); +} + + +// Returns a std::string representation of the test suite. +inline std::string TestSuite::toString() +{ + return "suite " + _name; +} + + +// Returns all tests +inline const std::vector TestSuite::tests() const +{ + return _tests; +} + + +} // namespace CppUnit + + +#endif // CppUnit_TestSuite_INCLUDED diff --git a/CppUnit/include/CppUnit/TextTestResult.h b/CppUnit/include/CppUnit/TextTestResult.h new file mode 100644 index 000000000..b3130ec2f --- /dev/null +++ b/CppUnit/include/CppUnit/TextTestResult.h @@ -0,0 +1,53 @@ +// +// TextTestResult.h +// +// $Id: //poco/1.4/CppUnit/include/CppUnit/TextTestResult.h#1 $ +// + + +#ifndef CppUnit_TextTestResult_INCLUDED +#define CppUnit_TextTestResult_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include "CppUnit/TestResult.h" +#include + + +namespace CppUnit { + + +class CppUnit_API TextTestResult: public TestResult +{ +public: + TextTestResult(); + TextTestResult(std::ostream& ostr); + + virtual void addError(Test* test, CppUnitException* e); + virtual void addFailure(Test* test, CppUnitException* e); + virtual void startTest(Test* test); + virtual void print(std::ostream& stream); + virtual void printErrors(std::ostream& stream); + virtual void printFailures(std::ostream& stream); + virtual void printHeader(std::ostream& stream); + +protected: + std::string shortName(const std::string& testName); + +private: + std::ostream& _ostr; +}; + + +/* insertion operator for easy output */ +inline std::ostream& operator<< (std::ostream& stream, TextTestResult& result) +{ + result.print(stream); + return stream; +} + + +} // namespace CppUnit + + +#endif // CppUnit_TextTestResult_INCLUDED diff --git a/CppUnit/include/CppUnit/estring.h b/CppUnit/include/CppUnit/estring.h new file mode 100644 index 000000000..7cdaac230 --- /dev/null +++ b/CppUnit/include/CppUnit/estring.h @@ -0,0 +1,73 @@ +// +// estring.h +// +// $Id: //poco/1.4/CppUnit/include/CppUnit/estring.h#1 $ +// + + +#ifndef CppUnit_estring_INCLUDED +#define CppUnit_estring_INCLUDED + + +#include "CppUnit/CppUnit.h" +#include +#include + + +namespace CppUnit { + + +// Create a std::string from a const char pointer +inline std::string estring(const char *cstring) +{ + return std::string(cstring); +} + + +// Create a std::string from a std::string (for uniformities' sake) +inline std::string estring(std::string& expandedString) +{ + return expandedString; +} + + +// Create a std::string from an int +inline std::string estring(int number) +{ + char buffer[50]; + sprintf(buffer, "%d", number); + return std::string (buffer); +} + + +// Create a string from a long +inline std::string estring(long number) +{ + char buffer[50]; + sprintf(buffer, "%ld", number); + return std::string (buffer); +} + + +// Create a std::string from a double +inline std::string estring(double number) +{ + char buffer[50]; + sprintf(buffer, "%lf", number); + return std::string(buffer); +} + + +// Create a std::string from a double +inline std::string estring(const void* ptr) +{ + char buffer[50]; + sprintf(buffer, "%p", ptr); + return std::string(buffer); +} + + +} // namespace CppUnit + + +#endif // CppUnit_estring_INCLUDED diff --git a/CppUnit/src/CppUnitException.cpp b/CppUnit/src/CppUnitException.cpp new file mode 100644 index 000000000..005b121f8 --- /dev/null +++ b/CppUnit/src/CppUnitException.cpp @@ -0,0 +1,18 @@ +// +// CppUnitException.cpp +// +// $Id: //poco/1.4/CppUnit/src/CppUnitException.cpp#1 $ +// + + +#include "CppUnit/CppUnitException.h" + + +namespace CppUnit { + + +const std::string CppUnitException::CPPUNIT_UNKNOWNFILENAME = ""; +const int CppUnitException::CPPUNIT_UNKNOWNLINENUMBER = -1; + + +} // namespace CppUnit diff --git a/CppUnit/src/TestCase.cpp b/CppUnit/src/TestCase.cpp new file mode 100644 index 000000000..2f4e60383 --- /dev/null +++ b/CppUnit/src/TestCase.cpp @@ -0,0 +1,182 @@ +// +// TestCase.cpp +// +// $Id: //poco/1.4/CppUnit/src/TestCase.cpp#1 $ +// + + +#include +#include +#include "CppUnit/TestCase.h" +#include "CppUnit/TestResult.h" +#include "CppUnit/estring.h" +#include + + +using namespace std; + + +namespace CppUnit { + + +// Create a default TestResult +TestResult* TestCase::defaultResult() +{ + return new TestResult; +} + + +// Check for a failed general assertion +void TestCase::assertImplementation(bool condition, const std::string& conditionExpression, long lineNumber, const std::string& fileName) +{ + if (!condition) + throw CppUnitException(conditionExpression, lineNumber, fileName); +} + + +void TestCase::loop1assertImplementation(bool condition, const std::string& conditionExpression, long lineNumber, long data1lineNumber, const std::string& fileName) +{ + if (!condition) + throw CppUnitException(conditionExpression, lineNumber, data1lineNumber, fileName); +} + + +void TestCase::loop2assertImplementation(bool condition, const std::string& conditionExpression, long lineNumber, long data1lineNumber, long data2lineNumber, const std::string& fileName) +{ + if (!condition) + throw CppUnitException(conditionExpression, lineNumber, data1lineNumber, data2lineNumber, fileName); +} + + +// Check for a failed equality assertion +void TestCase::assertEquals(long expected, long actual, long lineNumber, const std::string& fileName) +{ + if (expected != actual) + assertImplementation(false, notEqualsMessage(expected, actual), lineNumber, fileName); +} + + +// Check for a failed equality assertion +void TestCase::assertEquals(double expected, double actual, double delta, long lineNumber, const std::string& fileName) +{ + if (fabs(expected - actual) > delta) + assertImplementation(false, notEqualsMessage(expected, actual), lineNumber, fileName); +} + + +// Check for a failed equality assertion +void TestCase::assertEquals(const void* expected, const void* actual, long lineNumber, const std::string& fileName) +{ + if (expected != actual) + assertImplementation(false, notEqualsMessage(expected, actual), lineNumber, fileName); +} + + +// Check for a failed equality assertion +void TestCase::assertEquals(const std::string& expected, const std::string& actual, long lineNumber, const std::string& fileName) +{ + if (expected != actual) + assertImplementation(false, notEqualsMessage(expected, actual), lineNumber, fileName); +} + + +void TestCase::assertNotNull(const void* pointer, const std::string& pointerExpression, long lineNumber, const std::string& fileName) +{ + if (pointer == NULL) + throw CppUnitException(pointerExpression + " must not be NULL", lineNumber, fileName); +} + + +void TestCase::assertNull(const void* pointer, const std::string& pointerExpression, long lineNumber, const std::string& fileName) +{ + if (pointer != NULL) + throw CppUnitException(pointerExpression + " must be NULL", lineNumber, fileName); +} + + +void TestCase::fail (const std::string& message, long lineNumber, const std::string& fileName) +{ + throw CppUnitException(std::string("fail: ") + message, lineNumber, fileName); +} + + +// Run the test and catch any exceptions that are triggered by it +void TestCase::run(TestResult *result) +{ + result->startTest(this); + + setUp(); + try + { + runTest(); + } + catch (CppUnitException& e) + { + CppUnitException* copy = new CppUnitException(e); + result->addFailure(this, copy); + } + catch (std::exception& e) + { + std::string msg(typeid(e).name()); + msg.append(": "); + msg.append(e.what()); + result->addError(this, new CppUnitException(msg)); + + } +#if !defined(_WIN32) + catch (...) + { + CppUnitException *e = new CppUnitException ("unknown exception"); + result->addError (this, e); + } +#endif + tearDown (); + result->endTest(this); +} + + +// A default run method +TestResult* TestCase::run() +{ + TestResult* result = defaultResult(); + + run(result); + return result; +} + + +// All the work for runTest is deferred to subclasses +void TestCase::runTest() +{ +} + + +// Build a message about a failed equality check +std::string TestCase::notEqualsMessage(long expected, long actual) +{ + return "expected: " + estring(expected) + " but was: " + estring(actual); +} + + +// Build a message about a failed equality check +std::string TestCase::notEqualsMessage(double expected, double actual) +{ + return "expected: " + estring(expected) + " but was: " + estring(actual); +} + + +// Build a message about a failed equality check +std::string TestCase::notEqualsMessage(const void* expected, const void* actual) +{ + return "expected: " + estring(expected) + " but was: " + estring(actual); +} + + +// Build a message about a failed equality check +std::string TestCase::notEqualsMessage(const std::string& expected, const std::string& actual) +{ + return "expected: \"" + expected + "\" but was: \"" + actual + "\""; +} + + +} // namespace CppUnit diff --git a/CppUnit/src/TestDecorator.cpp b/CppUnit/src/TestDecorator.cpp new file mode 100644 index 000000000..bb135c18d --- /dev/null +++ b/CppUnit/src/TestDecorator.cpp @@ -0,0 +1,43 @@ +// +// TestDecorator.cpp +// +// $Id: //poco/1.4/CppUnit/src/TestDecorator.cpp#1 $ +// + + +#include "CppUnit/TestDecorator.h" + + +namespace CppUnit { + + +TestDecorator::TestDecorator(Test* test) +{ + _test = test; +} + + +TestDecorator::~TestDecorator() +{ +} + + +int TestDecorator::countTestCases() +{ + return _test->countTestCases(); +} + + +void TestDecorator::run(TestResult* result) +{ + _test->run(result); +} + + +std::string TestDecorator::toString() +{ + return _test->toString(); +} + + +} // namespace CppUnit diff --git a/CppUnit/src/TestFailure.cpp b/CppUnit/src/TestFailure.cpp new file mode 100644 index 000000000..754204483 --- /dev/null +++ b/CppUnit/src/TestFailure.cpp @@ -0,0 +1,22 @@ +// +// TestFailure.cpp +// +// $Id: //poco/1.4/CppUnit/src/TestFailure.cpp#1 $ +// + + +#include "CppUnit/TestFailure.h" +#include "CppUnit/Test.h" + + +namespace CppUnit { + + +// Returns a short description of the failure. +std::string TestFailure::toString() +{ + return _failedTest->toString () + ": " + _thrownException->what(); +} + + +} // namespace CppUnit diff --git a/CppUnit/src/TestResult.cpp b/CppUnit/src/TestResult.cpp new file mode 100644 index 000000000..78b0b47f3 --- /dev/null +++ b/CppUnit/src/TestResult.cpp @@ -0,0 +1,29 @@ +// +// TestResult.cpp +// +// $Id: //poco/1.4/CppUnit/src/TestResult.cpp#1 $ +// + + +#include "CppUnit/TestResult.h" + + +namespace CppUnit { + + +// Destroys a test result +TestResult::~TestResult() +{ + std::vector::iterator it; + + for (it = _errors.begin(); it != _errors.end(); ++it) + delete *it; + + for (it = _failures.begin(); it != _failures.end(); ++it) + delete *it; + + delete _syncObject; +} + + +} // namespace CppUnit diff --git a/CppUnit/src/TestRunner.cpp b/CppUnit/src/TestRunner.cpp new file mode 100644 index 000000000..bf21ed4c3 --- /dev/null +++ b/CppUnit/src/TestRunner.cpp @@ -0,0 +1,188 @@ +// +// TestRunner.cpp +// +// $Id: //poco/1.4/CppUnit/src/TestRunner.cpp#1 $ +// + + +#include "CppUnit/TestRunner.h" +#include "CppUnit/Test.h" +#include "CppUnit/TestSuite.h" +#include "CppUnit/TextTestResult.h" +#include + + +namespace CppUnit { + + +TestRunner::TestRunner(): + _ostr(std::cout) +{ +} + + +TestRunner::TestRunner(std::ostream& ostr): + _ostr(ostr) +{ +} + + +TestRunner::~TestRunner() +{ + for (Mappings::iterator it = _mappings.begin(); it != _mappings.end(); ++it) + delete it->second; +} + + +void TestRunner::printBanner() +{ + _ostr + << "Usage: driver [-all] [-print] [-wait] [name] ..." << std::endl + << " where name is the name of a test case class" << std::endl; +} + + +bool TestRunner::run(const std::vector& args) +{ + std::string testCase; + int numberOfTests = 0; + bool success = true; + bool all = false; + bool wait = false; + bool printed = false; + + for (int i = 1; i < args.size(); i++) + { + const std::string& arg = args[i]; + if (arg == "-wait") + { + wait = true; + continue; + } + else if (arg == "-all") + { + all = true; + continue; + } + else if (arg == "-print") + { + for (Mappings::iterator it = _mappings.begin(); it != _mappings.end(); ++it) + { + print(it->first, it->second, 0); + } + printed = true; + continue; + } + + if (!all) + { + testCase = arg; + + if (testCase == "") + { + printBanner(); + return false; + } + + Test* testToRun = 0; + for (Mappings::iterator it = _mappings.begin(); !testToRun && it != _mappings.end(); ++it) + { + testToRun = find(testCase, it->second, it->first); + } + if (testToRun) + { + if (!run(testToRun)) success = false; + } + numberOfTests++; + + if (!testToRun) + { + _ostr << "Test " << testCase << " not found." << std::endl; + return false; + } + } + } + + if (all) + { + for (Mappings::iterator it = _mappings.begin(); it != _mappings.end(); ++it) + { + if (!run(it->second)) success = false; + numberOfTests++; + } + } + + if (numberOfTests == 0 && !printed) + { + printBanner(); + return false; + } + + if (wait) + { + _ostr << " to continue" << std::endl; + std::cin.get(); + } + + return success; +} + + +bool TestRunner::run(Test* test) +{ + TextTestResult result(_ostr); + + test->run(&result); + _ostr << result << std::endl; + + return result.wasSuccessful(); +} + + +void TestRunner::addTest(const std::string& name, Test* test) +{ + _mappings.push_back(Mapping(name, test)); +} + + +void TestRunner::print(const std::string& name, Test* pTest, int indent) +{ + for (int i = 0; i < indent; ++i) + _ostr << " "; + _ostr << name << std::endl; + TestSuite* pSuite = dynamic_cast(pTest); + if (pSuite) + { + const std::vector& tests = pSuite->tests(); + for (std::vector::const_iterator it = tests.begin(); it != tests.end(); ++it) + { + print((*it)->toString(), *it, indent + 1); + } + } +} + + +Test* TestRunner::find(const std::string& name, Test* pTest, const std::string& testName) +{ + if (testName.find(name) != std::string::npos) + { + return pTest; + } + else + { + TestSuite* pSuite = dynamic_cast(pTest); + if (pSuite) + { + const std::vector& tests = pSuite->tests(); + for (std::vector::const_iterator it = tests.begin(); it != tests.end(); ++it) + { + Test* result = find(name, *it, (*it)->toString()); + if (result) return result; + } + } + return 0; + } +} + + +} // namespace CppUnit diff --git a/CppUnit/src/TestSuite.cpp b/CppUnit/src/TestSuite.cpp new file mode 100644 index 000000000..e9b0f61bd --- /dev/null +++ b/CppUnit/src/TestSuite.cpp @@ -0,0 +1,49 @@ +// +// TestSuite.cpp +// +// $Id: //poco/1.4/CppUnit/src/TestSuite.cpp#1 $ +// + + +#include "CppUnit/TestSuite.h" +#include "CppUnit/TestResult.h" + + +namespace CppUnit { + + +// Deletes all tests in the suite. +void TestSuite::deleteContents() +{ + for (std::vector::iterator it = _tests.begin(); it != _tests.end(); ++it) + delete *it; +} + + +// Runs the tests and collects their result in a TestResult. +void TestSuite::run(TestResult *result) +{ + for (std::vector::iterator it = _tests.begin(); it != _tests.end(); ++it) + { + if (result->shouldStop ()) + break; + + Test *test = *it; + test->run(result); + } +} + + +// Counts the number of test cases that will be run by this test. +int TestSuite::countTestCases() +{ + int count = 0; + + for (std::vector::iterator it = _tests.begin (); it != _tests.end (); ++it) + count += (*it)->countTestCases(); + + return count; +} + + +} // namespace CppUnit diff --git a/CppUnit/src/TextTestResult.cpp b/CppUnit/src/TextTestResult.cpp new file mode 100644 index 000000000..0d66faf66 --- /dev/null +++ b/CppUnit/src/TextTestResult.cpp @@ -0,0 +1,186 @@ +// +// TextTestResult.cpp +// +// $Id: //poco/1.4/CppUnit/src/TextTestResult.cpp#1 $ +// + + +#include "CppUnit/TextTestResult.h" +#include "CppUnit/CppUnitException.h" +#include "CppUnit/Test.h" +#include "CppUnit/estring.h" +#include +#include + + +namespace CppUnit { + + +TextTestResult::TextTestResult(): + _ostr(std::cout) +{ +} + + +TextTestResult::TextTestResult(std::ostream& ostr): + _ostr(ostr) +{ +} + + +void TextTestResult::addError(Test* test, CppUnitException* e) +{ + TestResult::addError(test, e); + _ostr << "ERROR" << std::flush; +} + + +void TextTestResult::addFailure(Test* test, CppUnitException* e) +{ + TestResult::addFailure(test, e); + _ostr << "FAILURE" << std::flush; +} + + +void TextTestResult::startTest(Test* test) +{ + TestResult::startTest(test); + _ostr << "\n" << shortName(test->toString()) << ": "; +} + + +void TextTestResult::printErrors(std::ostream& stream) +{ + if (testErrors() != 0) + { + stream << "\n"; + + if (testErrors() == 1) + stream << "There was " << testErrors() << " error: " << std::endl; + else + stream << "There were " << testErrors() << " errors: " << std::endl; + + int i = 1; + for (std::vector::iterator it = errors().begin(); it != errors().end(); ++it) + { + TestFailure* failure = *it; + CppUnitException* e = failure->thrownException(); + + stream << std::setw(2) << i + << ": " + << failure->failedTest()->toString() << "\n" + << " \"" << (e ? e->what() : "") << "\"\n" + << " in \"" + << (e ? e->fileName() : std::string()) + << "\", line "; + if (e == 0) + { + stream << "0"; + } + else + { + stream << e->lineNumber(); + if (e->data2LineNumber() != CppUnitException::CPPUNIT_UNKNOWNLINENUMBER) + { + stream << " data lines " << e->data1LineNumber() + << ", " << e->data2LineNumber(); + } + else if (e->data1LineNumber() != CppUnitException::CPPUNIT_UNKNOWNLINENUMBER) + { + stream << " data line " << e->data1LineNumber(); + } + } + stream << "\n"; + i++; + } + } +} + + +void TextTestResult::printFailures(std::ostream& stream) +{ + if (testFailures() != 0) + { + stream << "\n"; + if (testFailures() == 1) + stream << "There was " << testFailures() << " failure: " << std::endl; + else + stream << "There were " << testFailures() << " failures: " << std::endl; + + int i = 1; + + for (std::vector::iterator it = failures().begin(); it != failures().end(); ++it) + { + TestFailure* failure = *it; + CppUnitException* e = failure->thrownException(); + + stream << std::setw(2) << i + << ": " + << failure->failedTest()->toString() << "\n" + << " \"" << (e ? e->what() : "") << "\"\n" + << " in \"" + << (e ? e->fileName() : std::string()) + << "\", line "; + if (e == 0) + { + stream << "0"; + } + else + { + stream << e->lineNumber(); + if (e->data2LineNumber() != CppUnitException::CPPUNIT_UNKNOWNLINENUMBER) + { + stream << " data lines " + << e->data1LineNumber() + << ", " << e->data2LineNumber(); + } + else if (e->data1LineNumber() != CppUnitException::CPPUNIT_UNKNOWNLINENUMBER) + { + stream << " data line " << e->data1LineNumber(); + } + } + stream << "\n"; + i++; + } + } +} + + +void TextTestResult::print(std::ostream& stream) +{ + printHeader(stream); + printErrors(stream); + printFailures(stream); +} + + +void TextTestResult::printHeader(std::ostream& stream) +{ + stream << "\n\n"; + if (wasSuccessful()) + stream << "OK (" + << runTests() << " tests)" + << std::endl; + else + stream << "!!!FAILURES!!!" << std::endl + << "Runs: " + << runTests () + << " Failures: " + << testFailures () + << " Errors: " + << testErrors () + << std::endl; +} + + +std::string TextTestResult::shortName(const std::string& testName) +{ + std::string::size_type pos = testName.rfind('.'); + if (pos != std::string::npos) + return std::string(testName, pos + 1); + else + return testName; +} + + +} // namespace CppUnit diff --git a/Crypto/Crypto.progen b/Crypto/Crypto.progen new file mode 100644 index 000000000..562747c3b --- /dev/null +++ b/Crypto/Crypto.progen @@ -0,0 +1,23 @@ +vc.project.guid = EEEE7259-32E9-4D56-B023-C733940AB2A0 +vc.project.name = Crypto +vc.project.target = Poco${vc.project.name} +vc.project.type = library +vc.project.pocobase = .. +vc.project.outdir = ${vc.project.pocobase} +vc.project.platforms = Win32, x64, WinCE +vc.project.configurations = debug_shared, release_shared, debug_static_mt, release_static_mt, debug_static_md, release_static_md +vc.project.prototype = ${vc.project.name}_vs90.vcproj +vc.project.compiler.include = ..\\Foundation\\include +vc.project.compiler.defines = +vc.project.compiler.defines.shared = ${vc.project.name}_EXPORTS +vc.project.compiler.defines.debug_shared = ${vc.project.compiler.defines.shared} +vc.project.compiler.defines.release_shared = ${vc.project.compiler.defines.shared} +vc.project.linker.dependencies = ws2_32.lib iphlpapi.lib +vc.project.linker.dependencies.debug_shared = libeay32.lib ssleay32.lib +vc.project.linker.dependencies.release_shared = libeay32.lib ssleay32.lib +vc.project.linker.dependencies.debug_static_md = libeay32.lib ssleay32.lib +vc.project.linker.dependencies.release_static_md = libeay32.lib ssleay32.lib +vc.project.linker.dependencies.debug_static_mt = libeay32mtd.lib ssleay32mtd.lib Crypt32.lib +vc.project.linker.dependencies.release_static_mt = libeay32mt.lib ssleay32mt.lib Crypt32.lib +vc.solution.create = true +vc.solution.include = testsuite\\TestSuite diff --git a/Crypto/Crypto_CE_VS90.sln b/Crypto/Crypto_CE_VS90.sln new file mode 100644 index 000000000..5d1046532 --- /dev/null +++ b/Crypto/Crypto_CE_VS90.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Crypto", "Crypto_CE_vs90.vcproj", "{EEEE7259-32E9-4D56-B023-C733940AB2A0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_CE_vs90.vcproj", "{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}" + ProjectSection(ProjectDependencies) = postProject + {EEEE7259-32E9-4D56-B023-C733940AB2A0} = {EEEE7259-32E9-4D56-B023-C733940AB2A0} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Digi JumpStart (ARMV4I) = debug_shared|Digi JumpStart (ARMV4I) + release_shared|Digi JumpStart (ARMV4I) = release_shared|Digi JumpStart (ARMV4I) + debug_static_mt|Digi JumpStart (ARMV4I) = debug_static_mt|Digi JumpStart (ARMV4I) + release_static_mt|Digi JumpStart (ARMV4I) = release_static_mt|Digi JumpStart (ARMV4I) + debug_static_md|Digi JumpStart (ARMV4I) = debug_static_md|Digi JumpStart (ARMV4I) + release_static_md|Digi JumpStart (ARMV4I) = release_static_md|Digi JumpStart (ARMV4I) + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Digi JumpStart (ARMV4I).ActiveCfg = debug_shared|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Digi JumpStart (ARMV4I).Build.0 = debug_shared|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Digi JumpStart (ARMV4I).Deploy.0 = debug_shared|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|Digi JumpStart (ARMV4I).ActiveCfg = release_shared|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|Digi JumpStart (ARMV4I).Build.0 = release_shared|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|Digi JumpStart (ARMV4I).Deploy.0 = release_shared|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|Digi JumpStart (ARMV4I).ActiveCfg = debug_static_mt|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|Digi JumpStart (ARMV4I).Build.0 = debug_static_mt|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|Digi JumpStart (ARMV4I).Deploy.0 = debug_static_mt|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|Digi JumpStart (ARMV4I).ActiveCfg = release_static_mt|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|Digi JumpStart (ARMV4I).Build.0 = release_static_mt|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|Digi JumpStart (ARMV4I).Deploy.0 = release_static_mt|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|Digi JumpStart (ARMV4I).ActiveCfg = debug_static_md|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|Digi JumpStart (ARMV4I).Build.0 = debug_static_md|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|Digi JumpStart (ARMV4I).Deploy.0 = debug_static_md|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|Digi JumpStart (ARMV4I).ActiveCfg = release_static_md|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|Digi JumpStart (ARMV4I).Build.0 = release_static_md|Digi JumpStart (ARMV4I) + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|Digi JumpStart (ARMV4I).Deploy.0 = release_static_md|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Digi JumpStart (ARMV4I).ActiveCfg = debug_shared|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Digi JumpStart (ARMV4I).Build.0 = debug_shared|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Digi JumpStart (ARMV4I).Deploy.0 = debug_shared|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Digi JumpStart (ARMV4I).ActiveCfg = release_shared|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Digi JumpStart (ARMV4I).Build.0 = release_shared|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Digi JumpStart (ARMV4I).Deploy.0 = release_shared|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Digi JumpStart (ARMV4I).ActiveCfg = debug_static_mt|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Digi JumpStart (ARMV4I).Build.0 = debug_static_mt|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Digi JumpStart (ARMV4I).Deploy.0 = debug_static_mt|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Digi JumpStart (ARMV4I).ActiveCfg = release_static_mt|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Digi JumpStart (ARMV4I).Build.0 = release_static_mt|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Digi JumpStart (ARMV4I).Deploy.0 = release_static_mt|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Digi JumpStart (ARMV4I).ActiveCfg = debug_static_md|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Digi JumpStart (ARMV4I).Build.0 = debug_static_md|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Digi JumpStart (ARMV4I).Deploy.0 = debug_static_md|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Digi JumpStart (ARMV4I).ActiveCfg = release_static_md|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Digi JumpStart (ARMV4I).Build.0 = release_static_md|Digi JumpStart (ARMV4I) + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Digi JumpStart (ARMV4I).Deploy.0 = release_static_md|Digi JumpStart (ARMV4I) + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Crypto/Crypto_CE_VS90.vcproj b/Crypto/Crypto_CE_VS90.vcproj new file mode 100644 index 000000000..cf6bbb90d --- /dev/null +++ b/Crypto/Crypto_CE_VS90.vcproj @@ -0,0 +1,560 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crypto/Crypto_VS71.sln b/Crypto/Crypto_VS71.sln new file mode 100644 index 000000000..bf0acd068 --- /dev/null +++ b/Crypto/Crypto_VS71.sln @@ -0,0 +1,50 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Crypto", "Crypto_vs71.vcproj", "{EEEE7259-32E9-4D56-B023-C733940AB2A0}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs71.vcproj", "{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}" + ProjectSection(ProjectDependencies) = postProject + {EEEE7259-32E9-4D56-B023-C733940AB2A0} = {EEEE7259-32E9-4D56-B023-C733940AB2A0} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + debug_shared = debug_shared + release_shared = release_shared + debug_static_mt = debug_static_mt + release_static_mt = release_static_mt + debug_static_md = debug_static_md + release_static_md = release_static_md + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared.ActiveCfg = debug_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared.Build.0 = debug_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared.ActiveCfg = release_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared.Build.0 = release_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt.ActiveCfg = debug_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt.Build.0 = debug_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt.ActiveCfg = release_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt.Build.0 = release_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md.ActiveCfg = debug_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md.Build.0 = debug_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md.ActiveCfg = release_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md.Build.0 = release_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared.ActiveCfg = debug_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared.Build.0 = debug_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared.ActiveCfg = release_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared.Build.0 = release_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt.ActiveCfg = debug_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt.Build.0 = debug_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt.ActiveCfg = release_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt.Build.0 = release_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md.ActiveCfg = debug_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md.Build.0 = debug_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md.ActiveCfg = release_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md.Build.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/Crypto/Crypto_VS71.vcproj b/Crypto/Crypto_VS71.vcproj new file mode 100644 index 000000000..a3ff52876 --- /dev/null +++ b/Crypto/Crypto_VS71.vcproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crypto/Crypto_VS80.sln b/Crypto/Crypto_VS80.sln new file mode 100644 index 000000000..5a41eab0c --- /dev/null +++ b/Crypto/Crypto_VS80.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Crypto", "Crypto_vs80.vcproj", "{EEEE7259-32E9-4D56-B023-C733940AB2A0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs80.vcproj", "{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}" + ProjectSection(ProjectDependencies) = postProject + {EEEE7259-32E9-4D56-B023-C733940AB2A0} = {EEEE7259-32E9-4D56-B023-C733940AB2A0} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|Win32.Build.0 = release_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Win32.Build.0 = release_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Crypto/Crypto_VS80.vcproj b/Crypto/Crypto_VS80.vcproj new file mode 100644 index 000000000..f9230322c --- /dev/null +++ b/Crypto/Crypto_VS80.vcproj @@ -0,0 +1,513 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crypto/Crypto_VS90.sln b/Crypto/Crypto_VS90.sln new file mode 100644 index 000000000..d4ef1da77 --- /dev/null +++ b/Crypto/Crypto_VS90.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Crypto", "Crypto_vs90.vcproj", "{EEEE7259-32E9-4D56-B023-C733940AB2A0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs90.vcproj", "{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}" + ProjectSection(ProjectDependencies) = postProject + {EEEE7259-32E9-4D56-B023-C733940AB2A0} = {EEEE7259-32E9-4D56-B023-C733940AB2A0} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|Win32.Build.0 = release_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Win32.Build.0 = release_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Crypto/Crypto_VS90.vcproj b/Crypto/Crypto_VS90.vcproj new file mode 100644 index 000000000..ae9b78575 --- /dev/null +++ b/Crypto/Crypto_VS90.vcproj @@ -0,0 +1,512 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crypto/Crypto_vs100.sln b/Crypto/Crypto_vs100.sln new file mode 100644 index 000000000..b80a755b9 --- /dev/null +++ b/Crypto/Crypto_vs100.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Crypto", "Crypto_vs100.vcxproj", "{EEEE7259-32E9-4D56-B023-C733940AB2A0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs100.vcxproj", "{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}" + ProjectSection(ProjectDependencies) = postProject + {EEEE7259-32E9-4D56-B023-C733940AB2A0} = {EEEE7259-32E9-4D56-B023-C733940AB2A0} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|Win32.Build.0 = release_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Win32.Build.0 = release_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Crypto/Crypto_vs100.vcxproj b/Crypto/Crypto_vs100.vcxproj new file mode 100644 index 000000000..ec5b44bae --- /dev/null +++ b/Crypto/Crypto_vs100.vcxproj @@ -0,0 +1,310 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + Crypto + {EEEE7259-32E9-4D56-B023-C733940AB2A0} + Crypto + Win32Proj + + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + ..\bin\ + obj\$(Configuration)\ + true + ..\bin\ + obj\$(Configuration)\ + false + ..\lib\ + obj\$(Configuration)\ + ..\lib\ + obj\$(Configuration)\ + ..\lib\ + obj\$(Configuration)\ + ..\lib\ + obj\$(Configuration)\ + PocoCryptod + PocoCryptomdd + PocoCryptomtd + PocoCrypto + PocoCryptomd + PocoCryptomt + + + + Disabled + .\include;..\Foundation\include;C:\OpenSSL\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;Crypto_EXPORTS;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + ..\bin\PocoCryptod.dll + true + true + ..\bin\PocoCryptod.pdb + ..\lib;C:\OpenSSL\lib;%(AdditionalLibraryDirectories) + Console + ..\lib\PocoCryptod.lib + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;C:\OpenSSL\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;Crypto_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + ..\bin\PocoCrypto.dll + true + false + ..\lib;C:\OpenSSL\lib;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib\PocoCrypto.lib + MachineX86 + + + + + Disabled + .\include;..\Foundation\include;C:\OpenSSL\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib\PocoCryptomtd.pdb + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + ..\lib\PocoCryptomtd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;C:\OpenSSL\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + ..\lib\PocoCryptomt.lib + + + + + Disabled + .\include;..\Foundation\include;C:\OpenSSL\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib\PocoCryptomdd.pdb + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + ..\lib\PocoCryptomdd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;C:\OpenSSL\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + ..\lib\PocoCryptomd.pdb + Level3 + + Default + %(DisableSpecificWarnings) + + + ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + ..\lib\PocoCryptomd.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + + + + + \ No newline at end of file diff --git a/Crypto/Crypto_vs100.vcxproj.filters b/Crypto/Crypto_vs100.vcxproj.filters new file mode 100644 index 000000000..e5f0e2e87 --- /dev/null +++ b/Crypto/Crypto_vs100.vcxproj.filters @@ -0,0 +1,129 @@ + + + + + {47659d2b-1931-4b5c-a24e-1c710c742c4a} + + + {0f1eef3f-f362-4856-abb6-d66fb7dafd00} + + + {16c5db31-64d0-415a-840b-bead16c5b4ed} + + + {f55ef5a1-fb9a-443a-9efa-ab2e272f8a5e} + + + {6a4da578-c88b-4d4b-9f2c-bd2ee4fa2b7a} + + + {16bf940b-4b9d-4443-8941-a0af3f2d8f8f} + + + {5301224c-5bed-44a9-9314-ca863aaf4fd8} + + + {8184d9c6-ad90-4dd5-8091-1358ca4243c4} + + + {25d75536-89a8-4888-b661-92983aa3d989} + + + {21724220-39cd-4bd3-acbe-faa155cb88e1} + + + {891e2105-aa8f-43d8-b00e-f797fc044836} + + + {f1c93b38-00a2-4073-8750-171298a95e18} + + + + + Cipher\Header Files + + + Cipher\Header Files + + + Cipher\Header Files + + + Cipher\Header Files + + + Cipher\Header Files + + + Cipher\Header Files + + + Cipher\Header Files + + + RSA\Header Files + + + RSA\Header Files + + + RSA\Header Files + + + RSA\Header Files + + + Certificate\Header Files + + + CryptoCore\Header Files + + + CryptoCore\Header Files + + + + + Cipher\Source Files + + + Cipher\Source Files + + + Cipher\Source Files + + + Cipher\Source Files + + + Cipher\Source Files + + + Cipher\Source Files + + + Cipher\Source Files + + + RSA\Source Files + + + RSA\Source Files + + + RSA\Source Files + + + RSA\Source Files + + + Certificate\Source Files + + + CryptoCore\Source Files + + + + + + \ No newline at end of file diff --git a/Crypto/Crypto_x64_vs100.sln b/Crypto/Crypto_x64_vs100.sln new file mode 100644 index 000000000..e08df516b --- /dev/null +++ b/Crypto/Crypto_x64_vs100.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Crypto", "Crypto_x64_vs100.vcxproj", "{EEEE7259-32E9-4D56-B023-C733940AB2A0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs100.vcxproj", "{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}" + ProjectSection(ProjectDependencies) = postProject + {EEEE7259-32E9-4D56-B023-C733940AB2A0} = {EEEE7259-32E9-4D56-B023-C733940AB2A0} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|x64.Build.0 = debug_shared|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|x64.ActiveCfg = release_shared|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|x64.Build.0 = release_shared|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|x64.Deploy.0 = release_shared|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|x64.Build.0 = release_static_md|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|x64.Build.0 = debug_shared|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|x64.ActiveCfg = release_shared|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|x64.Build.0 = release_shared|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|x64.Deploy.0 = release_shared|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|x64.Build.0 = release_static_md|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Crypto/Crypto_x64_vs100.vcxproj b/Crypto/Crypto_x64_vs100.vcxproj new file mode 100644 index 000000000..960bb1b58 --- /dev/null +++ b/Crypto/Crypto_x64_vs100.vcxproj @@ -0,0 +1,308 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + Crypto + {EEEE7259-32E9-4D56-B023-C733940AB2A0} + Crypto + Win32Proj + + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + ..\bin64\ + obj64\$(Configuration)\ + true + ..\bin64\ + obj64\$(Configuration)\ + false + ..\lib64\ + obj64\$(Configuration)\ + ..\lib64\ + obj64\$(Configuration)\ + ..\lib64\ + obj64\$(Configuration)\ + ..\lib64\ + obj64\$(Configuration)\ + PocoCrypto64d + PocoCryptomdd + PocoCryptomtd + PocoCrypto64 + PocoCryptomd + PocoCryptomt + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;Crypto_EXPORTS;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + ..\bin64\PocoCrypto64d.dll + true + true + ..\bin64\PocoCrypto64d.pdb + ..\lib64;%(AdditionalLibraryDirectories) + Console + ..\lib64\PocoCryptod.lib + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;Crypto_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + ..\bin64\PocoCrypto64.dll + true + false + ..\lib64;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib64\PocoCrypto.lib + MachineX64 + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib64\PocoCryptomtd.pdb + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + ..\lib64\PocoCryptomtd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + ..\lib64\PocoCryptomt.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib64\PocoCryptomdd.pdb + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + ..\lib64\PocoCryptomdd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + ..\lib64\PocoCryptomd.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + + + + + diff --git a/Crypto/Crypto_x64_vs100.vcxproj.filters b/Crypto/Crypto_x64_vs100.vcxproj.filters new file mode 100644 index 000000000..66fca4d18 --- /dev/null +++ b/Crypto/Crypto_x64_vs100.vcxproj.filters @@ -0,0 +1,129 @@ + + + + + {b173f1fe-9277-4bb7-a29a-784223cbb1bf} + + + {ad6edcfa-4842-4331-86e4-00e16e105548} + + + {05a9d2ec-4e64-45db-bfe0-4b5786e88a11} + + + {88627b10-aeee-42c1-87c4-0ebfa2e0a79a} + + + {ea6b402c-457a-4daf-b077-be45f2acd17f} + + + {fa65ca2d-a23e-4b8e-b922-9f0866057010} + + + {c7a98e6b-b117-4abc-92c0-da57006d8404} + + + {2eb81bba-5786-4827-861c-79b9ce5282d1} + + + {6809f384-8941-4b8f-837c-688c36e13184} + + + {68b4002c-3b8d-4807-a97e-8e8b886f7705} + + + {bb20da77-b634-4616-8448-4fcfd1b3b150} + + + {5737fdf4-ee47-4378-8cd3-812512176c75} + + + + + Cipher\Header Files + + + Cipher\Header Files + + + Cipher\Header Files + + + Cipher\Header Files + + + Cipher\Header Files + + + Cipher\Header Files + + + Cipher\Header Files + + + RSA\Header Files + + + RSA\Header Files + + + RSA\Header Files + + + RSA\Header Files + + + Certificate\Header Files + + + CryptoCore\Header Files + + + CryptoCore\Header Files + + + + + Cipher\Source Files + + + Cipher\Source Files + + + Cipher\Source Files + + + Cipher\Source Files + + + Cipher\Source Files + + + Cipher\Source Files + + + Cipher\Source Files + + + RSA\Source Files + + + RSA\Source Files + + + RSA\Source Files + + + RSA\Source Files + + + Certificate\Source Files + + + CryptoCore\Source Files + + + + + + \ No newline at end of file diff --git a/Crypto/Crypto_x64_vs90.sln b/Crypto/Crypto_x64_vs90.sln new file mode 100644 index 000000000..e074b5b7f --- /dev/null +++ b/Crypto/Crypto_x64_vs90.sln @@ -0,0 +1,60 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Crypto", "Crypto_x64_vs90.vcproj", "{EEEE7259-32E9-4D56-B023-C733940AB2A0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs90.vcproj", "{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}" + ProjectSection(ProjectDependencies) = postProject + {EEEE7259-32E9-4D56-B023-C733940AB2A0} = {EEEE7259-32E9-4D56-B023-C733940AB2A0} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|x64.Build.0 = debug_shared|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|x64.ActiveCfg = release_shared|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|x64.Build.0 = release_shared|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|x64.Deploy.0 = release_shared|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|x64.Build.0 = release_static_md|x64 + {EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|x64.Build.0 = debug_shared|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|x64.ActiveCfg = release_shared|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|x64.Build.0 = release_shared|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|x64.Deploy.0 = release_shared|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|x64.Build.0 = release_static_md|x64 + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Crypto/Crypto_x64_vs90.vcproj b/Crypto/Crypto_x64_vs90.vcproj new file mode 100644 index 000000000..1ed5dc530 --- /dev/null +++ b/Crypto/Crypto_x64_vs90.vcproj @@ -0,0 +1,517 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crypto/Makefile b/Crypto/Makefile new file mode 100644 index 000000000..a87497895 --- /dev/null +++ b/Crypto/Makefile @@ -0,0 +1,21 @@ +# +# Makefile +# +# $Id: //poco/1.4/Crypto/Makefile#1 $ +# +# Makefile for Poco Crypto +# + +include $(POCO_BASE)/build/rules/global + +SYSLIBS += -lssl -lcrypto + +objects = Cipher CipherFactory CipherImpl CipherKey CipherKeyImpl CryptoStream CryptoTransform \ + RSACipherImpl RSAKey RSAKeyImpl RSADigestEngine \ + X509Certificate OpenSSLInitializer + +target = PocoCrypto +target_version = $(LIBVERSION) +target_libs = PocoFoundation + +include $(POCO_BASE)/build/rules/lib diff --git a/Crypto/dependencies b/Crypto/dependencies new file mode 100644 index 000000000..2e8175e4e --- /dev/null +++ b/Crypto/dependencies @@ -0,0 +1 @@ +Foundation diff --git a/Crypto/include/Poco/Crypto/Cipher.h b/Crypto/include/Poco/Crypto/Cipher.h new file mode 100644 index 000000000..ba552f437 --- /dev/null +++ b/Crypto/include/Poco/Crypto/Cipher.h @@ -0,0 +1,160 @@ +// +// Cipher.h +// +// $Id: //poco/1.4/Crypto/include/Poco/Crypto/Cipher.h#3 $ +// +// Library: Crypto +// Package: Cipher +// Module: Cipher +// +// Definition of the Cipher class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef Crypto_Cipher_INCLUDED +#define Crypto_Cipher_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/RefCountedObject.h" +#include "Poco/AutoPtr.h" +#include +#include +#include + + +namespace Poco { +namespace Crypto { + + +class CryptoTransform; + + +class Crypto_API Cipher: public Poco::RefCountedObject + /// Represents the abstract base class from which all implementations of + /// symmetric/assymetric encryption algorithms must inherit. Use the CipherFactory + /// class to obtain an instance of this class: + /// + /// CipherFactory& factory = CipherFactory::defaultFactory(); + /// // Creates a 256-bit AES cipher + /// Cipher* pCipher = factory.createCipher(CipherKey("aes-256")); + /// Cipher* pRSACipher = factory.createCipher(RSAKey(RSAKey::KL_1024, RSAKey::EXP_SMALL)); + /// + /// Check the different Key constructors on how to initialize/create + /// a key. The above example auto-generates random keys. + /// + /// Note that you won't be able to decrypt data encrypted with a random key + /// once the Cipher is destroyed unless you persist the generated key and IV. + /// An example usage for random keys is to encrypt data saved in a temporary + /// file. + /// + /// Once your key is set up, you can use the Cipher object to encrypt or + /// decrypt strings or, in conjunction with a CryptoInputStream or a + /// CryptoOutputStream, to encrypt streams of data. + /// + /// Since encrypted strings will contain arbitary binary data that will cause + /// problems in applications that are not binary-safe (eg., when sending + /// encrypted data in e-mails), the encryptString() and decryptString() can + /// encode (or decode, respectively) encrypted data using a "transport encoding". + /// Supported encodings are Base64 and BinHex. + /// + /// The following example encrypts and decrypts a string utilizing Base64 + /// encoding: + /// + /// std::string plainText = "This is my secret information"; + /// std::string encrypted = pCipher->encryptString(plainText, Cipher::ENC_BASE64); + /// std::string decrypted = pCipher->decryptString(encrypted, Cipher::ENC_BASE64); + /// + /// In order to encrypt a stream of data (eg. to encrypt files), you can use + /// a CryptoStream: + /// + /// // Create an output stream that will encrypt all data going through it + /// // and write pass it to the underlying file stream. + /// Poco::FileOutputStream sink("encrypted.dat"); + /// CryptoOutputStream encryptor(sink, pCipher->createEncryptor()); + /// + /// Poco::FileInputStream source("source.txt"); + /// Poco::StreamCopier::copyStream(source, encryptor); + /// + /// // Always close output streams to flush all internal buffers + /// encryptor.close(); + /// sink.close(); +{ +public: + typedef Poco::AutoPtr Ptr; + typedef std::vector ByteVec; + + enum Encoding + /// Transport encoding to use for encryptString() and decryptString(). + { + ENC_NONE = 0x00, /// Plain binary output + ENC_BASE64 = 0x01, /// Base64-encoded output + ENC_BINHEX = 0x02, /// BinHex-encoded output + ENC_BASE64_NO_LF = 0x81, /// Base64-encoded output, no linefeeds + ENC_BINHEX_NO_LF = 0x82, /// BinHex-encoded output, no linefeeds + + }; + + virtual ~Cipher(); + /// Destroys the Cipher. + + virtual const std::string& name() const = 0; + /// Returns the name of the Cipher. + + virtual CryptoTransform* createEncryptor() = 0; + /// Creates an encrytor object to be used with a CryptoStream. + + virtual CryptoTransform* createDecryptor() = 0; + /// Creates a decryptor object to be used with a CryptoStream. + + virtual std::string encryptString(const std::string& str, Encoding encoding = ENC_NONE); + /// Directly encrypt a string and encode it using the given encoding. + + virtual std::string decryptString(const std::string& str, Encoding encoding = ENC_NONE); + /// Directly decrypt a string that is encoded with the given encoding. + + virtual void encrypt(std::istream& source, std::ostream& sink, Encoding encoding = ENC_NONE); + /// Directly encrypts an input stream and encodes it using the given encoding. + + virtual void decrypt(std::istream& source, std::ostream& sink, Encoding encoding = ENC_NONE); + /// Directly decrypt an input stream that is encoded with the given encoding. + +protected: + Cipher(); + /// Creates a new Cipher object. + +private: + Cipher(const Cipher&); + Cipher& operator = (const Cipher&); +}; + + +} } // namespace Poco::Crypto + + +#endif // Crypto_Cipher_INCLUDED diff --git a/Crypto/include/Poco/Crypto/CipherFactory.h b/Crypto/include/Poco/Crypto/CipherFactory.h new file mode 100644 index 000000000..b1c06d4df --- /dev/null +++ b/Crypto/include/Poco/Crypto/CipherFactory.h @@ -0,0 +1,97 @@ +// +// CipherFactory.h +// +// $Id: //poco/1.4/Crypto/include/Poco/Crypto/CipherFactory.h#1 $ +// +// Library: Crypto +// Package: Cipher +// Module: CipherFactory +// +// Definition of the CipherFactory class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef Crypto_CipherFactory_INCLUDED +#define Crypto_CipherFactory_INCLUDED + + +#include "Poco/Crypto/Crypto.h" + + +namespace Poco { +namespace Crypto { + + +class Cipher; +class CipherKey; +class RSAKey; + + +class Crypto_API CipherFactory + /// A factory for Cipher objects. See the Cipher class for examples on how to + /// use the CipherFactory. +{ +public: + CipherFactory(); + /// Creates a new CipherFactory object. + + virtual ~CipherFactory(); + /// Destroys the CipherFactory. + + Cipher* createCipher(const CipherKey& key); + /// Creates a Cipher object for the given Cipher name. Valid cipher + /// names depend on the OpenSSL version the library is linked with; + /// see the output of + /// + /// openssl enc --help + /// + /// for a list of supported block and stream ciphers. + /// + /// Common examples are: + /// + /// * AES: "aes-128", "aes-256" + /// * DES: "des", "des3" + /// * Blowfish: "bf" + + Cipher* createCipher(const RSAKey& key, RSAPaddingMode paddingMode = RSA_PADDING_PKCS1); + /// Creates a RSACipher using the given RSA key and padding mode + /// for public key encryption/private key decryption. + + static CipherFactory& defaultFactory(); + /// Returns the default CipherFactory. + +private: + CipherFactory(const CipherFactory&); + CipherFactory& operator = (const CipherFactory&); +}; + + +} } // namespace Poco::Crypto + + +#endif // Crypto_CipherFactory_INCLUDED diff --git a/Crypto/include/Poco/Crypto/CipherImpl.h b/Crypto/include/Poco/Crypto/CipherImpl.h new file mode 100644 index 000000000..66f48360e --- /dev/null +++ b/Crypto/include/Poco/Crypto/CipherImpl.h @@ -0,0 +1,91 @@ +// +// CipherImpl.h +// +// $Id: //poco/1.4/Crypto/include/Poco/Crypto/CipherImpl.h#2 $ +// +// Library: Crypto +// Package: Cipher +// Module: CipherImpl +// +// Definition of the CipherImpl class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef Crypto_CipherImpl_INCLUDED +#define Crypto_CipherImpl_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Crypto/Cipher.h" +#include "Poco/Crypto/CipherKey.h" +#include "Poco/Crypto/OpenSSLInitializer.h" +#include + + +namespace Poco { +namespace Crypto { + + +class CipherImpl: public Cipher + /// An implementation of the Cipher class for OpenSSL's crypto library. +{ +public: + CipherImpl(const CipherKey& key); + /// Creates a new CipherImpl object for the given CipherKey. + + virtual ~CipherImpl(); + /// Destroys the CipherImpl. + + const std::string& name() const; + /// Returns the name of the cipher. + + CryptoTransform* createEncryptor(); + /// Creates an encrytor object. + + CryptoTransform* createDecryptor(); + /// Creates a decrytor object. + +private: + CipherKey _key; + OpenSSLInitializer _openSSLInitializer; +}; + + +// +// Inlines +// +inline const std::string& CipherImpl::name() const +{ + return _key.name(); +} + + +} } // namespace Poco::Crypto + + +#endif // Crypto_CipherImpl_INCLUDED diff --git a/Crypto/include/Poco/Crypto/CipherKey.h b/Crypto/include/Poco/Crypto/CipherKey.h new file mode 100644 index 000000000..28b502ff0 --- /dev/null +++ b/Crypto/include/Poco/Crypto/CipherKey.h @@ -0,0 +1,204 @@ +// +// CipherKey.h +// +// $Id: //poco/1.4/Crypto/include/Poco/Crypto/CipherKey.h#1 $ +// +// Library: Crypto +// Package: Cipher +// Module: CipherKey +// +// Definition of the CipherKey class. +// +// Copyright (c) 2007, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef Crypto_CipherKey_INCLUDED +#define Crypto_CipherKey_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Crypto/CipherKeyImpl.h" + + +namespace Poco { +namespace Crypto { + + +class Crypto_API CipherKey + /// CipherKey stores the key information for decryption/encryption of data. + /// To create a random key, using the following code: + /// + /// CipherKey key("aes-256"); + /// + /// Note that you won't be able to decrypt data encrypted with a random key + /// once the Cipher is destroyed unless you persist the generated key and IV. + /// An example usage for random keys is to encrypt data saved in a temporary + /// file. + /// + /// To create a key using a human-readable password + /// string, use the following code. We create a AES Cipher and + /// use a salt value to make the key more robust: + /// + /// std::string password = "secret"; + /// std::string salt("asdff8723lasdf(**923412"); + /// CipherKey key("aes-256", password, salt); + /// +{ +public: + typedef CipherKeyImpl::Mode Mode; + typedef CipherKeyImpl::ByteVec ByteVec; + + enum + { + DEFAULT_ITERATION_COUNT = 2000 + /// Default iteration count to use with + /// generateKey(). RSA security recommends + /// an iteration count of at least 1000. + }; + + CipherKey(const std::string& name, + const std::string& passphrase, + const std::string& salt = "", + int iterationCount = DEFAULT_ITERATION_COUNT); + /// Creates a new CipherKeyImpl object using the given + /// cipher name, passphrase, salt value and iteration count. + + CipherKey(const std::string& name, + const ByteVec& key, + const ByteVec& iv); + /// Creates a new CipherKeyImpl object using the given cipher + /// name, key and initialization vector. + + CipherKey(const std::string& name); + /// Creates a new CipherKeyImpl object. Autoinitializes key and + /// initialization vector. + + ~CipherKey(); + /// Destroys the CipherKeyImpl. + + const std::string& name() const; + /// Returns the name of the Cipher. + + int keySize() const; + /// Returns the key size of the Cipher. + + int blockSize() const; + /// Returns the block size of the Cipher. + + int ivSize() const; + /// Returns the IV size of the Cipher. + + Mode mode() const; + /// Returns the Cipher's mode of operation. + + const ByteVec& getKey() const; + /// Returns the key for the Cipher. + + void setKey(const ByteVec& key); + /// Sets the key for the Cipher. + + const ByteVec& getIV() const; + /// Returns the initialization vector (IV) for the Cipher. + + void setIV(const ByteVec& iv); + /// Sets the initialization vector (IV) for the Cipher. + + CipherKeyImpl::Ptr impl(); + /// Returns the impl object + +private: + CipherKeyImpl::Ptr _pImpl; +}; + + +// +// inlines +// +inline const std::string& CipherKey::name() const +{ + return _pImpl->name(); +} + + +inline int CipherKey::keySize() const +{ + return _pImpl->keySize(); +} + + +inline int CipherKey::blockSize() const +{ + return _pImpl->blockSize(); +} + + +inline int CipherKey::ivSize() const +{ + return _pImpl->ivSize(); +} + + +inline CipherKey::Mode CipherKey::mode() const +{ + return _pImpl->mode(); +} + + +inline const CipherKey::ByteVec& CipherKey::getKey() const +{ + return _pImpl->getKey(); +} + + +inline void CipherKey::setKey(const CipherKey::ByteVec& key) +{ + _pImpl->setKey(key); +} + + +inline const CipherKey::ByteVec& CipherKey::getIV() const +{ + return _pImpl->getIV(); +} + + +inline void CipherKey::setIV(const CipherKey::ByteVec& iv) +{ + _pImpl->setIV(iv); +} + + +inline CipherKeyImpl::Ptr CipherKey::impl() +{ + return _pImpl; +} + + +} } // namespace Poco::Crypto + + +#endif // Crypto_CipherKey_INCLUDED diff --git a/Crypto/include/Poco/Crypto/CipherKeyImpl.h b/Crypto/include/Poco/Crypto/CipherKeyImpl.h new file mode 100644 index 000000000..43d7ae942 --- /dev/null +++ b/Crypto/include/Poco/Crypto/CipherKeyImpl.h @@ -0,0 +1,192 @@ +// +// CipherKeyImpl.h +// +// $Id: //poco/1.4/Crypto/include/Poco/Crypto/CipherKeyImpl.h#2 $ +// +// Library: Crypto +// Package: Cipher +// Module: CipherKeyImpl +// +// Definition of the CipherKeyImpl class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef Crypto_CipherKeyImpl_INCLUDED +#define Crypto_CipherKeyImpl_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Crypto/OpenSSLInitializer.h" +#include "Poco/RefCountedObject.h" +#include "Poco/AutoPtr.h" +#include + + +struct evp_cipher_st; +typedef struct evp_cipher_st EVP_CIPHER; + + +namespace Poco { +namespace Crypto { + + +class CipherKeyImpl: public RefCountedObject + /// An implementation of the CipherKey class for OpenSSL's crypto library. +{ +public: + typedef std::vector ByteVec; + typedef Poco::AutoPtr Ptr; + + enum Mode + /// Cipher mode of operation. This mode determines how multiple blocks + /// are connected; this is essential to improve security. + { + MODE_STREAM_CIPHER, /// Stream cipher + MODE_ECB, /// Electronic codebook (plain concatenation) + MODE_CBC, /// Cipher block chaining (default) + MODE_CFB, /// Cipher feedback + MODE_OFB /// Output feedback + }; + + CipherKeyImpl(const std::string& name, + const std::string& passphrase, + const std::string& salt, + int iterationCount); + /// Creates a new CipherKeyImpl object, using + /// the given cipher name, passphrase, salt value + /// and iteration count. + + CipherKeyImpl(const std::string& name, + const ByteVec& key, + const ByteVec& iv); + /// Creates a new CipherKeyImpl object, using the + /// given cipher name, key and initialization vector. + + CipherKeyImpl(const std::string& name); + /// Creates a new CipherKeyImpl object. Autoinitializes key + /// and initialization vector. + + virtual ~CipherKeyImpl(); + /// Destroys the CipherKeyImpl. + + const std::string& name() const; + /// Returns the name of the Cipher. + + int keySize() const; + /// Returns the key size of the Cipher. + + int blockSize() const; + /// Returns the block size of the Cipher. + + int ivSize() const; + /// Returns the IV size of the Cipher. + + Mode mode() const; + /// Returns the Cipher's mode of operation. + + const ByteVec& getKey() const; + /// Returns the key for the Cipher. + + void setKey(const ByteVec& key); + /// Sets the key for the Cipher. + + const ByteVec& getIV() const; + /// Returns the initialization vector (IV) for the Cipher. + + void setIV(const ByteVec& iv); + /// Sets the initialization vector (IV) for the Cipher. + + const EVP_CIPHER* cipher(); + /// Returns the cipher object + +private: + void generateKey(const std::string& passphrase, + const std::string& salt, + int iterationCount); + /// Generates key and IV from a password and optional salt string. + + void generateKey(); + /// Generates key and IV from random data. + + void getRandomBytes(ByteVec& vec, std::size_t count); + /// Stores random bytes in vec. + +private: + const EVP_CIPHER* _pCipher; + std::string _name; + ByteVec _key; + ByteVec _iv; + OpenSSLInitializer _openSSLInitializer; +}; + + +// +// Inlines +// +inline const std::string& CipherKeyImpl::name() const +{ + return _name; +} + + +inline const CipherKeyImpl::ByteVec& CipherKeyImpl::getKey() const +{ + return _key; +} + + +inline void CipherKeyImpl::setKey(const ByteVec& key) +{ + poco_assert(key.size() == keySize()); + _key = key; +} + + +inline const CipherKeyImpl::ByteVec& CipherKeyImpl::getIV() const +{ + return _iv; +} + + +inline void CipherKeyImpl::setIV(const ByteVec& iv) +{ + poco_assert(iv.size() == ivSize()); + _iv = iv; +} + + +inline const EVP_CIPHER* CipherKeyImpl::cipher() +{ + return _pCipher; +} + + +} } // namespace Poco::Crypto + + +#endif // Crypto_CipherKeyImpl_INCLUDED diff --git a/Crypto/include/Poco/Crypto/Crypto.h b/Crypto/include/Poco/Crypto/Crypto.h new file mode 100644 index 000000000..792eff1aa --- /dev/null +++ b/Crypto/include/Poco/Crypto/Crypto.h @@ -0,0 +1,135 @@ +// +// Crypto.h +// +// $Id: //poco/1.4/Crypto/include/Poco/Crypto/Crypto.h#3 $ +// +// Library: Crypto +// Package: CryptoCore +// Module: Crypto +// +// Basic definitions for the Poco Crypto library. +// This file must be the first file included by every other Crypto +// header file. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef Crypto_Crypto_INCLUDED +#define Crypto_Crypto_INCLUDED + + +#if defined(__APPLE__) +// OS X 10.7 deprecates some OpenSSL functions +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + + +#include "Poco/Foundation.h" + + +enum RSAPaddingMode + /// The padding mode used for RSA public key encryption. +{ + RSA_PADDING_PKCS1, + /// PKCS #1 v1.5 padding. This currently is the most widely used mode. + + RSA_PADDING_PKCS1_OAEP, + /// EME-OAEP as defined in PKCS #1 v2.0 with SHA-1, MGF1 and an empty + /// encoding parameter. This mode is recommended for all new applications. + + RSA_PADDING_SSLV23, + /// PKCS #1 v1.5 padding with an SSL-specific modification that denotes + /// that the server is SSL3 capable. + + RSA_PADDING_NONE + /// Raw RSA encryption. This mode should only be used to implement cryptographically + /// sound padding modes in the application code. Encrypting user data directly with RSA + /// is insecure. +}; + + +// +// The following block is the standard way of creating macros which make exporting +// from a DLL simpler. All files within this DLL are compiled with the Crypto_EXPORTS +// symbol defined on the command line. this symbol should not be defined on any project +// that uses this DLL. This way any other project whose source files include this file see +// Crypto_API functions as being imported from a DLL, wheras this DLL sees symbols +// defined with this macro as being exported. +// +#if defined(_WIN32) && defined(POCO_DLL) + #if defined(Crypto_EXPORTS) + #define Crypto_API __declspec(dllexport) + #else + #define Crypto_API __declspec(dllimport) + #endif +#endif + + +#if !defined(Crypto_API) + #define Crypto_API +#endif + + +// +// Automatically link Crypto library. +// +#if defined(_MSC_VER) + #if !defined(POCO_NO_AUTOMATIC_LIBS) && !defined(Crypto_EXPORTS) + #pragma comment(lib, "PocoCrypto" POCO_LIB_SUFFIX) + #endif +#endif + + +namespace Poco { +namespace Crypto { + + +void Crypto_API initializeCrypto(); + /// Initialize the Crypto library, as well as the underlying OpenSSL + /// libraries, by calling OpenSSLInitializer::initialize(). + /// + /// Should be called before using any class from the Crypto library. + /// The Crypto library will be initialized automatically, through + /// OpenSSLInitializer instances held by various Crypto classes + /// (Cipher, CipherKey, RSAKey, X509Certificate). + /// However, it is recommended to call initializeCrypto() + /// in any case at application startup. + /// + /// Can be called multiple times; however, for every call to + /// initializeCrypto(), a matching call to uninitializeCrypto() + /// must be performed. + + +void Crypto_API uninitializeCrypto(); + /// Uninitializes the Crypto library by calling + /// OpenSSLInitializer::uninitialize(). + + +} } // namespace Poco::Crypto + + +#endif // Crypto_Crypto_INCLUDED diff --git a/Crypto/include/Poco/Crypto/CryptoStream.h b/Crypto/include/Poco/Crypto/CryptoStream.h new file mode 100644 index 000000000..895dc50a9 --- /dev/null +++ b/Crypto/include/Poco/Crypto/CryptoStream.h @@ -0,0 +1,214 @@ +// +// CryptoStream.h +// +// $Id: //poco/1.4/Crypto/include/Poco/Crypto/CryptoStream.h#2 $ +// +// Library: Crypto +// Package: Cipher +// Module: CryptoStream +// +// Definition of the CryptoStreamBuf, CryptoInputStream and CryptoOutputStream +// classes. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef Crypto_CryptoStream_INCLUDED +#define Crypto_CryptoStream_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/BufferedStreamBuf.h" +#include "Poco/Buffer.h" +#include + + +namespace Poco { +namespace Crypto { + + +class CryptoTransform; +class Cipher; + + +class Crypto_API CryptoStreamBuf: public Poco::BufferedStreamBuf + /// This stream buffer performs cryptographic transformation on the data + /// going through it. +{ +public: + CryptoStreamBuf(std::istream& istr, CryptoTransform* pTransform, std::streamsize bufferSize = 8192); + CryptoStreamBuf(std::ostream& ostr, CryptoTransform* pTransform, std::streamsize bufferSize = 8192); + + virtual ~CryptoStreamBuf(); + + void close(); + /// Flushes all buffers and finishes the encryption. + +protected: + int readFromDevice(char* buffer, std::streamsize length); + int writeToDevice(const char* buffer, std::streamsize length); + +private: + CryptoTransform* _pTransform; + std::istream* _pIstr; + std::ostream* _pOstr; + bool _eof; + + Poco::Buffer _buffer; + + CryptoStreamBuf(const CryptoStreamBuf&); + CryptoStreamBuf& operator = (const CryptoStreamBuf&); +}; + + +class Crypto_API CryptoIOS: public virtual std::ios + /// The base class for CryptoInputStream and CryptoOutputStream. + /// + /// This class is needed to ensure correct initialization order of the + /// stream buffer and base classes. +{ +public: + CryptoIOS(std::istream& istr, CryptoTransform* pTransform, std::streamsize bufferSize = 8192); + CryptoIOS(std::ostream& ostr, CryptoTransform* pTransform, std::streamsize bufferSize = 8192); + ~CryptoIOS(); + CryptoStreamBuf* rdbuf(); + +protected: + CryptoStreamBuf _buf; +}; + + +class Crypto_API CryptoInputStream: public CryptoIOS, public std::istream + /// This stream transforms all data passing through it using the given + /// CryptoTransform. + /// + /// Use a CryptoTransform object provided by Cipher::createEncrytor() or + /// Cipher::createDecryptor() to create an encrypting or decrypting stream, + /// respectively. +{ +public: + CryptoInputStream(std::istream& istr, CryptoTransform* pTransform, std::streamsize bufferSize = 8192); + /// Create a new CryptoInputStream object. The CryptoInputStream takes the + /// ownership of the given CryptoTransform object. + + CryptoInputStream(std::istream& istr, Cipher& cipher, std::streamsize bufferSize = 8192); + /// Create a new encrypting CryptoInputStream object using the given cipher. + + ~CryptoInputStream(); + /// Destroys the CryptoInputStream. +}; + + +class Crypto_API CryptoOutputStream: public CryptoIOS, public std::ostream + /// This stream transforms all data passing through it using the given + /// CryptoTransform. + /// + /// Use a CryptoTransform object provided by Cipher::createEncrytor() or + /// Cipher::createDecryptor() to create an encrypting or decrypting stream, + /// respectively. + /// + /// After all data has been passed through the stream, close() must be called + /// to ensure completion of cryptographic transformation. +{ +public: + CryptoOutputStream(std::ostream& ostr, CryptoTransform* pTransform, std::streamsize bufferSize = 8192); + /// Create a new CryptoOutputStream object. The CryptoOutputStream takes the + /// ownership of the given CryptoTransform object. + + CryptoOutputStream(std::ostream& ostr, Cipher& cipher, std::streamsize bufferSize = 8192); + /// Create a new decrypting CryptoOutputStream object using the given cipher. + + ~CryptoOutputStream(); + /// Destroys the CryptoOutputStream. + + void close(); + /// Flushes all buffers and finishes the encryption. +}; + + +class Crypto_API DecryptingInputStream: public CryptoIOS, public std::istream + /// This stream decrypts all data passing through it using the given + /// Cipher. +{ +public: + DecryptingInputStream(std::istream& istr, Cipher& cipher, std::streamsize bufferSize = 8192); + /// Create a new DecryptingInputStream object using the given cipher. + + ~DecryptingInputStream(); + /// Destroys the DecryptingInputStream. +}; + + +class Crypto_API DecryptingOutputStream: public CryptoIOS, public std::ostream + /// This stream decrypts all data passing through it using the given + /// Cipher. +{ +public: + DecryptingOutputStream(std::ostream& ostr, Cipher& cipher, std::streamsize bufferSize = 8192); + /// Create a new DecryptingOutputStream object using the given cipher. + + ~DecryptingOutputStream(); + /// Destroys the DecryptingOutputStream. + + void close(); + /// Flushes all buffers and finishes the decryption. +}; + + +class Crypto_API EncryptingInputStream: public CryptoIOS, public std::istream + /// This stream encrypts all data passing through it using the given + /// Cipher. +{ +public: + EncryptingInputStream(std::istream& istr, Cipher& cipher, std::streamsize bufferSize = 8192); + /// Create a new EncryptingInputStream object using the given cipher. + + ~EncryptingInputStream(); + /// Destroys the EncryptingInputStream. +}; + + +class Crypto_API EncryptingOutputStream: public CryptoIOS, public std::ostream + /// This stream encrypts all data passing through it using the given + /// Cipher. +{ +public: + EncryptingOutputStream(std::ostream& ostr, Cipher& cipher, std::streamsize bufferSize = 8192); + /// Create a new EncryptingOutputStream object using the given cipher. + + ~EncryptingOutputStream(); + /// Destroys the EncryptingOutputStream. + + void close(); + /// Flushes all buffers and finishes the encryption. +}; + + +} } // namespace Poco::Crypto + + +#endif // Crypto_CryptoStream_INCLUDED diff --git a/Crypto/include/Poco/Crypto/CryptoTransform.h b/Crypto/include/Poco/Crypto/CryptoTransform.h new file mode 100644 index 000000000..b27aa696d --- /dev/null +++ b/Crypto/include/Poco/Crypto/CryptoTransform.h @@ -0,0 +1,92 @@ +// +// CryptoTransform.h +// +// $Id: //poco/1.4/Crypto/include/Poco/Crypto/CryptoTransform.h#1 $ +// +// Library: Crypto +// Package: Cipher +// Module: CryptoTransform +// +// Definition of the CryptoTransform class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef Crypto_CryptoTransform_INCLUDED +#define Crypto_CryptoTransform_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include + + +namespace Poco { +namespace Crypto { + + +class Crypto_API CryptoTransform + /// This interface represents the basic operations for cryptographic + /// transformations to be used with a CryptoInputStream or a + /// CryptoOutputStream. + /// + /// Implementations of this class are returned by the Cipher class to + /// perform encryption or decryption of data. +{ +public: + CryptoTransform(); + /// Creates a new CryptoTransform object. + + virtual ~CryptoTransform(); + /// Destroys the CryptoTransform. + + virtual std::size_t blockSize() const = 0; + /// Returns the block size for this CryptoTransform. + + virtual std::streamsize transform( + const unsigned char* input, + std::streamsize inputLength, + unsigned char* output, + std::streamsize outputLength) = 0; + /// Transforms a chunk of data. The inputLength is arbitrary and does not + /// need to be a multiple of the block size. The output buffer has a maximum + /// capacity of the given outputLength that must be at least + /// inputLength + blockSize() - 1 + /// Returns the number of bytes written to the output buffer. + + virtual std::streamsize finalize(unsigned char* output, std::streamsize length) = 0; + /// Finalizes the transformation. The output buffer must contain enough + /// space for at least two blocks, ie. + /// length >= 2*blockSize() + /// must be true. Returns the number of bytes written to the output + /// buffer. +}; + + +} } // namespace Poco::Crypto + + +#endif // Crypto_CryptoTransform_INCLUDED diff --git a/Crypto/include/Poco/Crypto/OpenSSLInitializer.h b/Crypto/include/Poco/Crypto/OpenSSLInitializer.h new file mode 100644 index 000000000..4f36cbdb1 --- /dev/null +++ b/Crypto/include/Poco/Crypto/OpenSSLInitializer.h @@ -0,0 +1,133 @@ +// +// OpenSSLInitializer.h +// +// $Id: //poco/1.4/Crypto/include/Poco/Crypto/OpenSSLInitializer.h#1 $ +// +// Library: Crypto +// Package: CryptoCore +// Module: OpenSSLInitializer +// +// Definition of the OpenSSLInitializer class. +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef Crypto_OpenSSLInitializer_INCLUDED +#define Crypto_OpenSSLInitializer_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Mutex.h" +#include +#ifdef OPENSSL_FIPS +#include +#endif + + +extern "C" +{ + struct CRYPTO_dynlock_value + { + Poco::FastMutex _mutex; + }; +} + + +namespace Poco { +namespace Crypto { + + +class Crypto_API OpenSSLInitializer + /// Initalizes the OpenSSL library. + /// + /// The class ensures the earliest initialization and the + /// latest shutdown of the OpenSSL library. +{ +public: + OpenSSLInitializer(); + /// Automatically initialize OpenSSL on startup. + + ~OpenSSLInitializer(); + /// Automatically shut down OpenSSL on exit. + + static void initialize(); + /// Initializes the OpenSSL machinery. + + static void uninitialize(); + /// Shuts down the OpenSSL machinery. + + static bool isFIPSEnabled(); + // Returns true if FIPS mode is enabled, false otherwise. + + static void enableFIPSMode(bool enabled); + // Enable or disable FIPS mode. If FIPS is not available, this method doesn't do anything. + +protected: + enum + { + SEEDSIZE = 256 + }; + + // OpenSSL multithreading support + static void lock(int mode, int n, const char* file, int line); + static unsigned long id(); + static struct CRYPTO_dynlock_value* dynlockCreate(const char* file, int line); + static void dynlock(int mode, struct CRYPTO_dynlock_value* lock, const char* file, int line); + static void dynlockDestroy(struct CRYPTO_dynlock_value* lock, const char* file, int line); + +private: + static Poco::FastMutex* _mutexes; + static Poco::FastMutex _mutex; + static int _rc; +}; + + +// +// inlines +// +inline bool OpenSSLInitializer::isFIPSEnabled() +{ +#ifdef OPENSSL_FIPS + return FIPS_mode() ? true : false; +#else + return false; +#endif +} + + +inline void OpenSSLInitializer::enableFIPSMode(bool enabled) +{ +#ifdef OPENSSL_FIPS + FIPS_mode_set(enabled); +#endif +} + + +} } // namespace Poco::Crypto + + +#endif // Crypto_OpenSSLInitializer_INCLUDED diff --git a/Crypto/include/Poco/Crypto/RSACipherImpl.h b/Crypto/include/Poco/Crypto/RSACipherImpl.h new file mode 100644 index 000000000..ea96ddd1b --- /dev/null +++ b/Crypto/include/Poco/Crypto/RSACipherImpl.h @@ -0,0 +1,99 @@ +// +// RSACipherImpl.h +// +// $Id: //poco/1.4/Crypto/include/Poco/Crypto/RSACipherImpl.h#2 $ +// +// Library: Crypto +// Package: RSA +// Module: RSACipherImpl +// +// Definition of the RSACipherImpl class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef Crypto_RSACipherImpl_INCLUDED +#define Crypto_RSACipherImpl_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Crypto/Cipher.h" +#include "Poco/Crypto/RSAKey.h" +#include "Poco/Crypto/OpenSSLInitializer.h" +#include + + +namespace Poco { +namespace Crypto { + + +class RSACipherImpl: public Cipher + /// An implementation of the Cipher class for + /// assymetric (public-private key) encryption + /// based on the the RSA algorithm in OpenSSL's + /// crypto library. + /// + /// Encryption is using the public key, decryption + /// requires the private key. +{ +public: + RSACipherImpl(const RSAKey& key, RSAPaddingMode paddingMode); + /// Creates a new RSACipherImpl object for the given RSAKey + /// and using the given padding mode. + + virtual ~RSACipherImpl(); + /// Destroys the RSACipherImpl. + + const std::string& name() const; + /// Returns the name of the Cipher. + + CryptoTransform* createEncryptor(); + /// Creates an encrytor object. + + CryptoTransform* createDecryptor(); + /// Creates a decrytor object. + +private: + RSAKey _key; + RSAPaddingMode _paddingMode; + OpenSSLInitializer _openSSLInitializer; +}; + + +// +// Inlines +// +inline const std::string& RSACipherImpl::name() const +{ + return _key.name(); +} + + +} } // namespace Poco::Crypto + + +#endif // Crypto_RSACipherImpl_INCLUDED diff --git a/Crypto/include/Poco/Crypto/RSADigestEngine.h b/Crypto/include/Poco/Crypto/RSADigestEngine.h new file mode 100644 index 000000000..de73e3b76 --- /dev/null +++ b/Crypto/include/Poco/Crypto/RSADigestEngine.h @@ -0,0 +1,128 @@ +// +// RSADigestEngine.h +// +// $Id: //poco/1.4/Crypto/include/Poco/Crypto/RSADigestEngine.h#1 $ +// +// Library: Crypto +// Package: RSA +// Module: RSADigestEngine +// +// Definition of the RSADigestEngine class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef Crypto_RSADigestEngine_INCLUDED +#define Crypto_RSADigestEngine_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Crypto/RSAKey.h" +#include "Poco/DigestEngine.h" +#include "Poco/MD5Engine.h" +#include "Poco/SHA1Engine.h" +#include +#include +#include + + +namespace Poco { +namespace Crypto { + + +class Crypto_API RSADigestEngine: public Poco::DigestEngine + /// This class implements a Poco::DigestEngine that can be + /// used to compute a secure digital signature. + /// + /// First another Poco::DigestEngine (Poco::MD5Engine + /// or Poco::SHA1Engine) is used to compute a cryptographic + /// hash of the data to be signed. Then, the hash value is + /// encrypted, using the RSA private key. + /// + /// To verify a signature, pass it to the verify() + /// member function. It will decrypt the signature + /// using the RSA public key and compare the resulting + /// hash with the actual hash of the data. +{ +public: + enum DigestType + { + DIGEST_MD5, + DIGEST_SHA1 + }; + + RSADigestEngine(const RSAKey& key, DigestType digestType = DIGEST_SHA1); + /// Creates the RSADigestEngine with the given RSA key, + /// using the SHA-1 hash algorithm. + + ~RSADigestEngine(); + /// Destroys the RSADigestEngine. + + unsigned digestLength() const; + /// Returns the length of the digest in bytes. + + void reset(); + /// Resets the engine so that a new + /// digest can be computed. + + const DigestEngine::Digest& digest(); + /// Finishes the computation of the digest + /// (the first time it's called) and + /// returns the message digest. + /// + /// Can be called multiple times. + + const DigestEngine::Digest& signature(); + /// Signs the digest using the RSA algorithm + /// and the private key (teh first time it's + /// called) and returns the result. + /// + /// Can be called multiple times. + + bool verify(const DigestEngine::Digest& signature); + /// Verifies the data against the signature. + /// + /// Returns true if the signature can be verified, false otherwise. + +protected: + void updateImpl(const void* data, unsigned length); + +private: + RSAKey _key; + Poco::DigestEngine& _engine; + int _type; + Poco::DigestEngine::Digest _digest; + Poco::DigestEngine::Digest _signature; + Poco::MD5Engine _md5Engine; + Poco::SHA1Engine _sha1Engine; +}; + + +} } // namespace Poco::Crypto + + +#endif // Crypto_RSADigestEngine_INCLUDED diff --git a/Crypto/include/Poco/Crypto/RSAKey.h b/Crypto/include/Poco/Crypto/RSAKey.h new file mode 100644 index 000000000..f765739c8 --- /dev/null +++ b/Crypto/include/Poco/Crypto/RSAKey.h @@ -0,0 +1,145 @@ +// +// RSAKey.h +// +// $Id: //poco/1.4/Crypto/include/Poco/Crypto/RSAKey.h#2 $ +// +// Library: Crypto +// Package: RSA +// Module: RSAKey +// +// Definition of the RSAKey class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef Crypto_RSAKey_INCLUDED +#define Crypto_RSAKey_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Crypto/RSAKeyImpl.h" + + +namespace Poco { +namespace Crypto { + + +class X509Certificate; + + +class Crypto_API RSAKey + /// This class stores an RSA key pair, consisting + /// of private and public key. Storage of the private + /// key is optional. + /// + /// If a private key is available, the RSAKey can be + /// used for decrypting data (encrypted with the public key) + /// or computing secure digital signatures. +{ +public: + enum KeyLength + { + KL_512 = 512, + KL_1024 = 1024, + KL_2048 = 2048, + KL_4096 = 4096 + }; + + enum Exponent + { + EXP_SMALL = 0, + EXP_LARGE + }; + + explicit RSAKey(const X509Certificate& cert); + /// Extracts the RSA public key from the given certificate. + + RSAKey(KeyLength keyLength, Exponent exp); + /// Creates the RSAKey. Creates a new public/private keypair using the given parameters. + /// Can be used to sign data and verify signatures. + + RSAKey(const std::string& publicKeyFile, const std::string& privateKeyFile = "", const std::string& privateKeyPassphrase = ""); + /// Creates the RSAKey, by reading public and private key from the given files and + /// using the given passphrase for the private key. Can only by used for signing if + /// a private key is available. + + RSAKey(std::istream* pPublicKeyStream, std::istream* pPrivateKeyStream = 0, const std::string& privateKeyPassphrase = ""); + /// Creates the RSAKey. Can only by used for signing if pPrivKey + /// is not null. If a private key file is specified, you don't need to + /// specify a public key file. OpenSSL will auto-create it from the private key. + + ~RSAKey(); + /// Destroys the RSAKey. + + int size() const; + /// Returns the RSA modulus size. + + RSAKeyImpl::ByteVec modulus() const; + /// Returns the RSA modulus. + + RSAKeyImpl::ByteVec encryptionExponent() const; + /// Returns the RSA encryption exponent. + + RSAKeyImpl::ByteVec decryptionExponent() const; + /// Returns the RSA decryption exponent. + + void save(const std::string& publicKeyFile, const std::string& privateKeyFile = "", const std::string& privateKeyPassphrase = ""); + /// Exports the public and private keys to the given files. + /// + /// If an empty filename is specified, the corresponding key + /// is not exported. + + void save(std::ostream* pPublicKeyStream, std::ostream* pPrivateKeyStream = 0, const std::string& privateKeyPassphrase = ""); + /// Exports the public and private key to the given streams. + /// + /// If a null pointer is passed for a stream, the corresponding + /// key is not exported. + + RSAKeyImpl::Ptr impl() const; + /// Returns the impl object. + + const std::string& name() const; + /// Returns "rsa" + +private: + RSAKeyImpl::Ptr _pImpl; +}; + + +// +// inlines +// +inline RSAKeyImpl::Ptr RSAKey::impl() const +{ + return _pImpl; +} + + +} } // namespace Poco::Crypto + + +#endif // Crypto_RSAKey_INCLUDED diff --git a/Crypto/include/Poco/Crypto/RSAKeyImpl.h b/Crypto/include/Poco/Crypto/RSAKeyImpl.h new file mode 100644 index 000000000..54ef84bce --- /dev/null +++ b/Crypto/include/Poco/Crypto/RSAKeyImpl.h @@ -0,0 +1,150 @@ +// +// RSAKeyImpl.h +// +// $Id: //poco/1.4/Crypto/include/Poco/Crypto/RSAKeyImpl.h#3 $ +// +// Library: Crypto +// Package: RSA +// Module: RSAKeyImpl +// +// Definition of the RSAKeyImpl class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef Crypto_RSAKeyImplImpl_INCLUDED +#define Crypto_RSAKeyImplImpl_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Crypto/OpenSSLInitializer.h" +#include "Poco/RefCountedObject.h" +#include "Poco/AutoPtr.h" +#include +#include +#include + + +struct bignum_st; +struct rsa_st; +typedef struct bignum_st BIGNUM; +typedef struct rsa_st RSA; + + +namespace Poco { +namespace Crypto { + + +class X509Certificate; + + +class RSAKeyImpl: public Poco::RefCountedObject + /// class RSAKeyImpl +{ +public: + typedef Poco::AutoPtr Ptr; + typedef std::vector ByteVec; + + explicit RSAKeyImpl(const X509Certificate& cert); + /// Extracts the RSA public key from the given certificate. + + RSAKeyImpl(int keyLength, unsigned long exponent); + /// Creates the RSAKey. Creates a new public/private keypair using the given parameters. + /// Can be used to sign data and verify signatures. + + RSAKeyImpl(const std::string& publicKeyFile, const std::string& privateKeyFile, const std::string& privateKeyPassphrase); + /// Creates the RSAKey, by reading public and private key from the given files and + /// using the given passphrase for the private key. Can only by used for signing if + /// a private key is available. + + RSAKeyImpl(std::istream* pPublicKeyStream, std::istream* pPrivateKeyStream, const std::string& privateKeyPassphrase); + /// Creates the RSAKey. Can only by used for signing if pPrivKey + /// is not null. If a private key file is specified, you don't need to + /// specify a public key file. OpenSSL will auto-create it from the private key. + + ~RSAKeyImpl(); + /// Destroys the RSAKeyImpl. + + RSA* getRSA(); + /// Returns the OpenSSL RSA object. + + const RSA* getRSA() const; + /// Returns the OpenSSL RSA object. + + int size() const; + /// Returns the RSA modulus size. + + ByteVec modulus() const; + /// Returns the RSA modulus. + + ByteVec encryptionExponent() const; + /// Returns the RSA encryption exponent. + + ByteVec decryptionExponent() const; + /// Returns the RSA decryption exponent. + + void save(const std::string& publicKeyFile, const std::string& privateKeyFile = "", const std::string& privateKeyPassphrase = ""); + /// Exports the public and private keys to the given files. + /// + /// If an empty filename is specified, the corresponding key + /// is not exported. + + void save(std::ostream* pPublicKeyStream, std::ostream* pPrivateKeyStream = 0, const std::string& privateKeyPassphrase = ""); + /// Exports the public and private key to the given streams. + /// + /// If a null pointer is passed for a stream, the corresponding + /// key is not exported. + +private: + void freeRSA(); + + static ByteVec convertToByteVec(const BIGNUM* bn); + +private: + RSA* _pRSA; + OpenSSLInitializer _openSSLInitializer; +}; + + +// +// inlines +// +inline RSA* RSAKeyImpl::getRSA() +{ + return _pRSA; +} + + +inline const RSA* RSAKeyImpl::getRSA() const +{ + return _pRSA; +} + +} } // namespace Poco::Crypto + + +#endif // Crypto_RSAKeyImplImpl_INCLUDED diff --git a/Crypto/include/Poco/Crypto/X509Certificate.h b/Crypto/include/Poco/Crypto/X509Certificate.h new file mode 100644 index 000000000..56325d05a --- /dev/null +++ b/Crypto/include/Poco/Crypto/X509Certificate.h @@ -0,0 +1,205 @@ +// +// X509Certificate.h +// +// $Id: //poco/1.4/Crypto/include/Poco/Crypto/X509Certificate.h#2 $ +// +// Library: Crypto +// Package: Certificate +// Module: X509Certificate +// +// Definition of the X509Certificate class. +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef Crypto_X509Certificate_INCLUDED +#define Crypto_X509Certificate_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Crypto/OpenSSLInitializer.h" +#include "Poco/DateTime.h" +#include "Poco/SharedPtr.h" +#include +#include +#include + + +namespace Poco { +namespace Crypto { + + +class Crypto_API X509Certificate + /// This class represents a X509 Certificate. +{ +public: + enum NID + /// Name identifier for extracting information from + /// a certificate subject's or issuer's distinguished name. + { + NID_COMMON_NAME = 13, + NID_COUNTRY = 14, + NID_LOCALITY_NAME = 15, + NID_STATE_OR_PROVINCE = 16, + NID_ORGANIZATION_NAME = 17, + NID_ORGANIZATION_UNIT_NAME = 18 + }; + + explicit X509Certificate(std::istream& istr); + /// Creates the X509Certificate object by reading + /// a certificate in PEM format from a stream. + + explicit X509Certificate(const std::string& path); + /// Creates the X509Certificate object by reading + /// a certificate in PEM format from a file. + + explicit X509Certificate(X509* pCert); + /// Creates the X509Certificate from an existing + /// OpenSSL certificate. Ownership is taken of + /// the certificate. + + X509Certificate(X509* pCert, bool shared); + /// Creates the X509Certificate from an existing + /// OpenSSL certificate. Ownership is taken of + /// the certificate. If shared is true, the + /// certificate's reference count is incremented. + + X509Certificate(const X509Certificate& cert); + /// Creates the certificate by copying another one. + + X509Certificate& operator = (const X509Certificate& cert); + /// Assigns a certificate. + + void swap(X509Certificate& cert); + /// Exchanges the certificate with another one. + + ~X509Certificate(); + /// Destroys the X509Certificate. + + const std::string& issuerName() const; + /// Returns the certificate issuer's distinguished name. + + std::string issuerName(NID nid) const; + /// Extracts the information specified by the given + /// NID (name identifier) from the certificate issuer's + /// distinguished name. + + const std::string& subjectName() const; + /// Returns the certificate subject's distinguished name. + + std::string subjectName(NID nid) const; + /// Extracts the information specified by the given + /// NID (name identifier) from the certificate subject's + /// distinguished name. + + std::string commonName() const; + /// Returns the common name stored in the certificate + /// subject's distinguished name. + + void extractNames(std::string& commonName, std::set& domainNames) const; + /// Extracts the common name and the alias domain names from the + /// certificate. + + Poco::DateTime validFrom() const; + /// Returns the date and time the certificate is valid from. + + Poco::DateTime expiresOn() const; + /// Returns the date and time the certificate expires. + + void save(std::ostream& stream) const; + /// Writes the certificate to the given stream. + /// The certificate is written in PEM format. + + void save(const std::string& path) const; + /// Writes the certificate to the file given by path. + /// The certificate is written in PEM format. + + bool issuedBy(const X509Certificate& issuerCertificate) const; + /// Checks whether the certificate has been issued by + /// the issuer given by issuerCertificate. This can be + /// used to validate a certificate chain. + /// + /// Verifies if the certificate has been signed with the + /// issuer's private key, using the public key from the issuer + /// certificate. + /// + /// Returns true if verification against the issuer certificate + /// was successfull, false otherwise. + + const X509* certificate() const; + /// Returns the underlying OpenSSL certificate. + +protected: + void load(std::istream& stream); + /// Loads the certificate from the given stream. The + /// certificate must be in PEM format. + + void load(const std::string& path); + /// Loads the certificate from the given file. The + /// certificate must be in PEM format. + + void init(); + /// Extracts issuer and subject name from the certificate. + +private: + enum + { + NAME_BUFFER_SIZE = 256 + }; + + std::string _issuerName; + std::string _subjectName; + X509* _pCert; + OpenSSLInitializer _openSSLInitializer; +}; + + +// +// inlines +// +inline const std::string& X509Certificate::issuerName() const +{ + return _issuerName; +} + + +inline const std::string& X509Certificate::subjectName() const +{ + return _subjectName; +} + + +inline const X509* X509Certificate::certificate() const +{ + return _pCert; +} + + +} } // namespace Poco::Crypto + + +#endif // Crypto_X509Certificate_INCLUDED diff --git a/Crypto/samples/Makefile b/Crypto/samples/Makefile new file mode 100644 index 000000000..b860b589c --- /dev/null +++ b/Crypto/samples/Makefile @@ -0,0 +1,12 @@ +# +# Makefile +# +# $Id: //poco/Main/Util/samples/Makefile#3 $ +# +# Makefile for Poco Util Samples +# + +.PHONY: projects +clean all: projects +projects: + $(MAKE) -C genrsakey $(MAKECMDGOALS) diff --git a/Crypto/samples/dependencies b/Crypto/samples/dependencies new file mode 100644 index 000000000..39b39bdad --- /dev/null +++ b/Crypto/samples/dependencies @@ -0,0 +1,2 @@ +Foundation +Util diff --git a/Crypto/samples/genrsakey/Makefile b/Crypto/samples/genrsakey/Makefile new file mode 100644 index 000000000..3e34524cd --- /dev/null +++ b/Crypto/samples/genrsakey/Makefile @@ -0,0 +1,19 @@ +# +# Makefile +# +# $Id: //poco/Main/template/sample.make#4 $ +# +# Makefile for Poco genrsakey +# + +include $(POCO_BASE)/build/rules/global + +SYSLIBS += -lssl -lcrypto + +objects = genrsakey + +target = genrsakey +target_version = 1 +target_libs = PocoCrypto PocoUtil PocoXML PocoFoundation + +include $(POCO_BASE)/build/rules/exec diff --git a/Crypto/samples/genrsakey/genrsakey.progen b/Crypto/samples/genrsakey/genrsakey.progen new file mode 100644 index 000000000..b397f8e4b --- /dev/null +++ b/Crypto/samples/genrsakey/genrsakey.progen @@ -0,0 +1,18 @@ +vc.project.guid = ${vc.project.guidFromName} +vc.project.name = ${vc.project.baseName} +vc.project.target = ${vc.project.name} +vc.project.type = executable +vc.project.pocobase = ..\\..\\.. +vc.project.platforms = Win32, x64, WinCE +vc.project.configurations = debug_shared, release_shared, debug_static_mt, release_static_mt, debug_static_md, release_static_md +vc.project.prototype = ${vc.project.name}_vs90.vcproj +vc.project.compiler.include = ..\\..\\..\\Foundation\\include;..\\..\\..\\XML\\include;..\\..\\..\\Util\\include;..\\..\\..\\Crypto\\include +vc.project.linker.dependencies.Win32 = ws2_32.lib iphlpapi.lib +vc.project.linker.dependencies.x64 = ws2_32.lib iphlpapi.lib +vc.project.linker.dependencies.WinCE = ws2.lib iphlpapi.lib +vc.project.linker.dependencies.debug_shared = libeay32.lib ssleay32.lib +vc.project.linker.dependencies.release_shared = libeay32.lib ssleay32.lib +vc.project.linker.dependencies.debug_static_md = libeay32.lib ssleay32.lib +vc.project.linker.dependencies.release_static_md = libeay32.lib ssleay32.lib +vc.project.linker.dependencies.debug_static_mt = libeay32mtd.lib ssleay32mtd.lib Crypt32.lib +vc.project.linker.dependencies.release_static_mt = libeay32mt.lib ssleay32mt.lib Crypt32.lib diff --git a/Crypto/samples/genrsakey/genrsakey_CE_VS90.vcproj b/Crypto/samples/genrsakey/genrsakey_CE_VS90.vcproj new file mode 100644 index 000000000..be6069a68 --- /dev/null +++ b/Crypto/samples/genrsakey/genrsakey_CE_VS90.vcproj @@ -0,0 +1,468 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crypto/samples/genrsakey/genrsakey_VS71.vcproj b/Crypto/samples/genrsakey/genrsakey_VS71.vcproj new file mode 100644 index 000000000..4cbf0d40e --- /dev/null +++ b/Crypto/samples/genrsakey/genrsakey_VS71.vcproj @@ -0,0 +1,395 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crypto/samples/genrsakey/genrsakey_VS80.vcproj b/Crypto/samples/genrsakey/genrsakey_VS80.vcproj new file mode 100644 index 000000000..adc25a039 --- /dev/null +++ b/Crypto/samples/genrsakey/genrsakey_VS80.vcproj @@ -0,0 +1,435 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crypto/samples/genrsakey/genrsakey_VS90.vcproj b/Crypto/samples/genrsakey/genrsakey_VS90.vcproj new file mode 100644 index 000000000..4f76eb866 --- /dev/null +++ b/Crypto/samples/genrsakey/genrsakey_VS90.vcproj @@ -0,0 +1,435 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crypto/samples/genrsakey/genrsakey_vs100.vcxproj b/Crypto/samples/genrsakey/genrsakey_vs100.vcxproj new file mode 100644 index 000000000..221b0e618 --- /dev/null +++ b/Crypto/samples/genrsakey/genrsakey_vs100.vcxproj @@ -0,0 +1,299 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + genrsakey + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947} + genrsakey + Win32Proj + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin\ + obj\$(Configuration)\ + true + bin\ + obj\$(Configuration)\ + false + bin\static_mt\ + obj\$(Configuration)\ + true + bin\static_mt\ + obj\$(Configuration)\ + false + bin\static_md\ + obj\$(Configuration)\ + true + bin\static_md\ + obj\$(Configuration)\ + false + genrsakeyd + genrsakeyd + genrsakeyd + genrsakey + genrsakey + genrsakey + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\genrsakeyd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\genrsakeyd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\genrsakey.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + iphlpapi.lib;winmm.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\genrsakeyd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_mt\genrsakeyd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + iphlpapi.lib;winmm.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\genrsakey.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + iphlpapi.lib;winmm.lib;libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\genrsakeyd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\genrsakeyd.pdb + Console + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + iphlpapi.lib;winmm.lib;libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\genrsakey.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + + + + diff --git a/Crypto/samples/genrsakey/genrsakey_vs100.vcxproj.filters b/Crypto/samples/genrsakey/genrsakey_vs100.vcxproj.filters new file mode 100644 index 000000000..03a5b3145 --- /dev/null +++ b/Crypto/samples/genrsakey/genrsakey_vs100.vcxproj.filters @@ -0,0 +1,16 @@ + + + + + {a968fe8b-bb93-43e8-97b2-eb38a9a37022} + + + {dfe4b514-4c67-4a8d-bbec-df328d0423a0} + + + + + Source Files + + + \ No newline at end of file diff --git a/Crypto/samples/genrsakey/genrsakey_x64_vs100.vcxproj b/Crypto/samples/genrsakey/genrsakey_x64_vs100.vcxproj new file mode 100644 index 000000000..4faa1b385 --- /dev/null +++ b/Crypto/samples/genrsakey/genrsakey_x64_vs100.vcxproj @@ -0,0 +1,299 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + genrsakey + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947} + genrsakey + Win32Proj + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin64\ + obj64\$(Configuration)\ + true + bin64\ + obj64\$(Configuration)\ + false + bin64\static_mt\ + obj64\$(Configuration)\ + true + bin64\static_mt\ + obj64\$(Configuration)\ + false + bin64\static_md\ + obj64\$(Configuration)\ + true + bin64\static_md\ + obj64\$(Configuration)\ + false + genrsakeyd + genrsakeyd + genrsakeyd + genrsakey + genrsakey + genrsakey + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\genrsakeyd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\genrsakeyd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\genrsakey.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + iphlpapi.lib;winmm.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\genrsakeyd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_mt\genrsakeyd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + iphlpapi.lib;winmm.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\genrsakey.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + iphlpapi.lib;winmm.lib;libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\genrsakeyd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\genrsakeyd.pdb + Console + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + iphlpapi.lib;winmm.lib;libeay32.lib;ssleay32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\genrsakey.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + + + + diff --git a/Crypto/samples/genrsakey/genrsakey_x64_vs100.vcxproj.filters b/Crypto/samples/genrsakey/genrsakey_x64_vs100.vcxproj.filters new file mode 100644 index 000000000..df8f10509 --- /dev/null +++ b/Crypto/samples/genrsakey/genrsakey_x64_vs100.vcxproj.filters @@ -0,0 +1,16 @@ + + + + + {8dd265c7-1f67-47b4-9ae5-768ea08464d8} + + + {9bfd7dbb-db21-4332-9f31-aebfd9e7287b} + + + + + Source Files + + + \ No newline at end of file diff --git a/Crypto/samples/genrsakey/genrsakey_x64_vs90.vcproj b/Crypto/samples/genrsakey/genrsakey_x64_vs90.vcproj new file mode 100644 index 000000000..6215cf62a --- /dev/null +++ b/Crypto/samples/genrsakey/genrsakey_x64_vs90.vcproj @@ -0,0 +1,435 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crypto/samples/genrsakey/src/genrsakey.cpp b/Crypto/samples/genrsakey/src/genrsakey.cpp new file mode 100644 index 000000000..35af7456c --- /dev/null +++ b/Crypto/samples/genrsakey/src/genrsakey.cpp @@ -0,0 +1,218 @@ +// +// genrsakey.cpp +// +// $Id: //poco/1.4/Crypto/samples/genrsakey/src/genrsakey.cpp#1 $ +// +// This sample demonstrates the XYZ class. +// +// Copyright (c) 2007, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/Util/Application.h" +#include "Poco/Util/Option.h" +#include "Poco/Util/OptionException.h" +#include "Poco/Util/OptionSet.h" +#include "Poco/Util/HelpFormatter.h" +#include "Poco/Util/AbstractConfiguration.h" +#include "Poco/AutoPtr.h" +#include "Poco/NumberFormatter.h" +#include "Poco/NumberParser.h" +#include "Poco/String.h" +#include "Poco/Crypto/RSAKey.h" +#include + + +using Poco::Util::Application; +using Poco::Util::Option; +using Poco::Util::OptionSet; +using Poco::Util::HelpFormatter; +using Poco::Util::AbstractConfiguration; +using Poco::Util::OptionCallback; +using Poco::AutoPtr; +using Poco::NumberParser; +using Poco::Crypto::RSAKey; + + +class RSAApp: public Application + /// This sample demonstrates some of the features of the Util::Application class, + /// such as configuration file handling and command line arguments processing. + /// + /// Try genrsakey --help (on Unix platforms) or genrsakey /help (elsewhere) for + /// more information. +{ +public: + RSAApp(): + _helpRequested(false), + _length(RSAKey::KL_1024), + _exp(RSAKey::EXP_LARGE), + _name(), + _pwd() + { + Poco::Crypto::initializeCrypto(); + } + + ~RSAApp() + { + Poco::Crypto::uninitializeCrypto(); + } + +protected: + void initialize(Application& self) + { + loadConfiguration(); // load default configuration files, if present + Application::initialize(self); + } + + void uninitialize() + { + Application::uninitialize(); + } + + void reinitialize(Application& self) + { + Application::reinitialize(self); + } + + void defineOptions(OptionSet& options) + { + Application::defineOptions(options); + + options.addOption( + Option("help", "h", "display help information on command line arguments") + .required(false) + .repeatable(false) + .callback(OptionCallback(this, &RSAApp::handleHelp))); + + options.addOption( + Option("?", "?", "display help information on command line arguments") + .required(false) + .repeatable(false) + .callback(OptionCallback(this, &RSAApp::handleHelp))); + + options.addOption( + Option("key", "k", "define the key length") + .required(false) + .repeatable(false) + .argument("512|1024|2048|4096") + .callback(OptionCallback(this, &RSAApp::handleKeyLength))); + + options.addOption( + Option("exponent", "e", "defines the exponent of the key") + .required(false) + .repeatable(false) + .argument("small|large") + .callback(OptionCallback(this, &RSAApp::handleExponent))); + + options.addOption( + Option("file", "f", "defines the file base name. creates a file.pub and a file.priv") + .required(true) + .repeatable(false) + .argument("filebasename") + .callback(OptionCallback(this, &RSAApp::handleFilePrefix))); + + options.addOption( + Option("password", "p", "defines the password used to encrypt the private key file. If not defined user will be asked via stdin to provide in") + .required(false) + .repeatable(false) + .argument("pwd") + .callback(OptionCallback(this, &RSAApp::handlePassword))); + } + + void handleHelp(const std::string& name, const std::string& value) + { + _helpRequested = true; + displayHelp(); + stopOptionsProcessing(); + } + + void handleKeyLength(const std::string& name, const std::string& value) + { + int keyLen = Poco::NumberParser::parse(value); + if (keyLen == 512 || keyLen == 1024 || keyLen == 2048 || keyLen == 4096) + _length = (RSAKey::KeyLength)keyLen; + else + throw Poco::Util::IncompatibleOptionsException("Illegal key length value"); + } + + void handleExponent(const std::string& name, const std::string& value) + { + if (Poco::icompare(value, "small") == 0) + _exp = RSAKey::EXP_SMALL; + else + _exp = RSAKey::EXP_LARGE; + } + + void handleFilePrefix(const std::string& name, const std::string& value) + { + if (value.empty()) + throw Poco::Util::IncompatibleOptionsException("Empty file prefix forbidden"); + _name = value; + } + + void handlePassword(const std::string& name, const std::string& value) + { + _pwd = value; + } + + void displayHelp() + { + HelpFormatter helpFormatter(options()); + helpFormatter.setCommand(commandName()); + helpFormatter.setUsage("OPTIONS"); + helpFormatter.setHeader("Application for generating RSA public/private key pairs."); + helpFormatter.format(std::cout); + } + + int main(const std::vector& args) + { + if (!_helpRequested) + { + logger().information("Generating key with length " + Poco::NumberFormatter::format((int)_length)); + logger().information(std::string("Exponent is ") + ((_exp == RSAKey::EXP_SMALL)?"small":"large")); + logger().information("Generating key"); + RSAKey key(_length, _exp); + logger().information("Generating key: DONE"); + std::string pubFile(_name + ".pub"); + std::string privFile(_name + ".priv"); + + logger().information("Saving key to " + pubFile + " and " + privFile); + key.save(pubFile, privFile, _pwd); + logger().information("Key saved"); + } + return Application::EXIT_OK; + } + +private: + bool _helpRequested; + RSAKey::KeyLength _length; + RSAKey::Exponent _exp; + std::string _name; + std::string _pwd; +}; + + +POCO_APP_MAIN(RSAApp) diff --git a/Crypto/samples/samples.progen b/Crypto/samples/samples.progen new file mode 100644 index 000000000..be1c4389d --- /dev/null +++ b/Crypto/samples/samples.progen @@ -0,0 +1,4 @@ +vc.project.platforms = Win32, x64, WinCE +vc.project.configurations = debug_shared, release_shared, debug_static_mt, release_static_mt, debug_static_md, release_static_md +vc.solution.create = true +vc.solution.include = genrsakey\\genrsakey diff --git a/Crypto/samples/samples_CE_VS90.sln b/Crypto/samples/samples_CE_VS90.sln new file mode 100644 index 000000000..e5286660f --- /dev/null +++ b/Crypto/samples/samples_CE_VS90.sln @@ -0,0 +1,37 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genrsakey", "genrsakey\genrsakey_CE_vs90.vcproj", "{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Digi JumpStart (ARMV4I) = debug_shared|Digi JumpStart (ARMV4I) + release_shared|Digi JumpStart (ARMV4I) = release_shared|Digi JumpStart (ARMV4I) + debug_static_mt|Digi JumpStart (ARMV4I) = debug_static_mt|Digi JumpStart (ARMV4I) + release_static_mt|Digi JumpStart (ARMV4I) = release_static_mt|Digi JumpStart (ARMV4I) + debug_static_md|Digi JumpStart (ARMV4I) = debug_static_md|Digi JumpStart (ARMV4I) + release_static_md|Digi JumpStart (ARMV4I) = release_static_md|Digi JumpStart (ARMV4I) + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|Digi JumpStart (ARMV4I).ActiveCfg = debug_shared|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|Digi JumpStart (ARMV4I).Build.0 = debug_shared|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|Digi JumpStart (ARMV4I).Deploy.0 = debug_shared|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|Digi JumpStart (ARMV4I).ActiveCfg = release_shared|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|Digi JumpStart (ARMV4I).Build.0 = release_shared|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|Digi JumpStart (ARMV4I).Deploy.0 = release_shared|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|Digi JumpStart (ARMV4I).ActiveCfg = debug_static_mt|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|Digi JumpStart (ARMV4I).Build.0 = debug_static_mt|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|Digi JumpStart (ARMV4I).Deploy.0 = debug_static_mt|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|Digi JumpStart (ARMV4I).ActiveCfg = release_static_mt|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|Digi JumpStart (ARMV4I).Build.0 = release_static_mt|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|Digi JumpStart (ARMV4I).Deploy.0 = release_static_mt|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|Digi JumpStart (ARMV4I).ActiveCfg = debug_static_md|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|Digi JumpStart (ARMV4I).Build.0 = debug_static_md|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|Digi JumpStart (ARMV4I).Deploy.0 = debug_static_md|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|Digi JumpStart (ARMV4I).ActiveCfg = release_static_md|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|Digi JumpStart (ARMV4I).Build.0 = release_static_md|Digi JumpStart (ARMV4I) + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|Digi JumpStart (ARMV4I).Deploy.0 = release_static_md|Digi JumpStart (ARMV4I) + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Crypto/samples/samples_VS71.sln b/Crypto/samples/samples_VS71.sln new file mode 100644 index 000000000..33a89491d --- /dev/null +++ b/Crypto/samples/samples_VS71.sln @@ -0,0 +1,33 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genrsakey", "genrsakey\genrsakey_vs71.vcproj", "{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + debug_shared = debug_shared + release_shared = release_shared + debug_static_mt = debug_static_mt + release_static_mt = release_static_mt + debug_static_md = debug_static_md + release_static_md = release_static_md + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared.ActiveCfg = debug_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared.Build.0 = debug_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared.ActiveCfg = release_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared.Build.0 = release_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt.ActiveCfg = debug_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt.Build.0 = debug_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt.ActiveCfg = release_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt.Build.0 = release_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md.ActiveCfg = debug_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md.Build.0 = debug_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md.ActiveCfg = release_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md.Build.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/Crypto/samples/samples_VS80.sln b/Crypto/samples/samples_VS80.sln new file mode 100644 index 000000000..2d38891e2 --- /dev/null +++ b/Crypto/samples/samples_VS80.sln @@ -0,0 +1,37 @@ +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genrsakey", "genrsakey\genrsakey_vs80.vcproj", "{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|Win32.Build.0 = release_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Crypto/samples/samples_VS90.sln b/Crypto/samples/samples_VS90.sln new file mode 100644 index 000000000..7233c82bd --- /dev/null +++ b/Crypto/samples/samples_VS90.sln @@ -0,0 +1,37 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genrsakey", "genrsakey\genrsakey_vs90.vcproj", "{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|Win32.Build.0 = release_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Crypto/samples/samples_vs100.sln b/Crypto/samples/samples_vs100.sln new file mode 100644 index 000000000..f2a18f66f --- /dev/null +++ b/Crypto/samples/samples_vs100.sln @@ -0,0 +1,37 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genrsakey", "genrsakey\genrsakey_vs100.vcxproj", "{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|Win32.Build.0 = release_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Crypto/samples/samples_x64_vs100.sln b/Crypto/samples/samples_x64_vs100.sln new file mode 100644 index 000000000..8fe3e1038 --- /dev/null +++ b/Crypto/samples/samples_x64_vs100.sln @@ -0,0 +1,37 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genrsakey", "genrsakey\genrsakey_x64_vs100.vcxproj", "{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|x64.Build.0 = debug_shared|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|x64.ActiveCfg = release_shared|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|x64.Build.0 = release_shared|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|x64.Deploy.0 = release_shared|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|x64.Build.0 = release_static_md|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Crypto/samples/samples_x64_vs90.sln b/Crypto/samples/samples_x64_vs90.sln new file mode 100644 index 000000000..503385804 --- /dev/null +++ b/Crypto/samples/samples_x64_vs90.sln @@ -0,0 +1,37 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genrsakey", "genrsakey\genrsakey_x64_vs90.vcproj", "{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|x64.Build.0 = debug_shared|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|x64.ActiveCfg = release_shared|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|x64.Build.0 = release_shared|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|x64.Deploy.0 = release_shared|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|x64.Build.0 = release_static_md|x64 + {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Crypto/src/Cipher.cpp b/Crypto/src/Cipher.cpp new file mode 100644 index 000000000..66ed7ee60 --- /dev/null +++ b/Crypto/src/Cipher.cpp @@ -0,0 +1,162 @@ +// +// Cipher.cpp +// +// $Id: //poco/1.4/Crypto/src/Cipher.cpp#2 $ +// +// Library: Crypto +// Package: Cipher +// Module: Cipher +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/Crypto/Cipher.h" +#include "Poco/Crypto/CryptoStream.h" +#include "Poco/Crypto/CryptoTransform.h" +#include "Poco/Base64Encoder.h" +#include "Poco/Base64Decoder.h" +#include "Poco/HexBinaryEncoder.h" +#include "Poco/HexBinaryDecoder.h" +#include "Poco/StreamCopier.h" +#include "Poco/Exception.h" +#include +#include + + +namespace Poco { +namespace Crypto { + + +Cipher::Cipher() +{ +} + + +Cipher::~Cipher() +{ +} + + +std::string Cipher::encryptString(const std::string& str, Encoding encoding) +{ + std::istringstream source(str); + std::ostringstream sink; + + encrypt(source, sink, encoding); + + return sink.str(); +} + + +std::string Cipher::decryptString(const std::string& str, Encoding encoding) +{ + std::istringstream source(str); + std::ostringstream sink; + + decrypt(source, sink, encoding); + return sink.str(); +} + + +void Cipher::encrypt(std::istream& source, std::ostream& sink, Encoding encoding) +{ + CryptoInputStream encryptor(source, createEncryptor()); + + switch (encoding) + { + case ENC_NONE: + StreamCopier::copyStream(encryptor, sink); + break; + + case ENC_BASE64: + case ENC_BASE64_NO_LF: + { + Poco::Base64Encoder encoder(sink); + if (encoding == ENC_BASE64_NO_LF) + { + encoder.rdbuf()->setLineLength(0); + } + StreamCopier::copyStream(encryptor, encoder); + encoder.close(); + } + break; + + case ENC_BINHEX: + case ENC_BINHEX_NO_LF: + { + Poco::HexBinaryEncoder encoder(sink); + if (encoding == ENC_BINHEX_NO_LF) + { + encoder.rdbuf()->setLineLength(0); + } + StreamCopier::copyStream(encryptor, encoder); + encoder.close(); + } + break; + + default: + throw Poco::InvalidArgumentException("Invalid argument", "encoding"); + } +} + + +void Cipher::decrypt(std::istream& source, std::ostream& sink, Encoding encoding) +{ + CryptoOutputStream decryptor(sink, createDecryptor()); + + switch (encoding) + { + case ENC_NONE: + StreamCopier::copyStream(source, decryptor); + decryptor.close(); + break; + + case ENC_BASE64: + case ENC_BASE64_NO_LF: + { + Poco::Base64Decoder decoder(source); + StreamCopier::copyStream(decoder, decryptor); + decryptor.close(); + } + break; + + case ENC_BINHEX: + case ENC_BINHEX_NO_LF: + { + Poco::HexBinaryDecoder decoder(source); + StreamCopier::copyStream(decoder, decryptor); + decryptor.close(); + } + break; + + default: + throw Poco::InvalidArgumentException("Invalid argument", "encoding"); + } +} + + +} } // namespace Poco::Crypto diff --git a/Crypto/src/CipherFactory.cpp b/Crypto/src/CipherFactory.cpp new file mode 100644 index 000000000..4c460babd --- /dev/null +++ b/Crypto/src/CipherFactory.cpp @@ -0,0 +1,87 @@ +// +// CipherFactory.cpp +// +// $Id: //poco/1.4/Crypto/src/CipherFactory.cpp#2 $ +// +// Library: Crypto +// Package: Cipher +// Module: CipherFactory +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/Crypto/CipherFactory.h" +#include "Poco/Crypto/Cipher.h" +#include "Poco/Crypto/CipherKey.h" +#include "Poco/Crypto/RSAKey.h" +#include "Poco/Crypto/CipherImpl.h" +#include "Poco/Crypto/RSACipherImpl.h" +#include "Poco/Exception.h" +#include "Poco/SingletonHolder.h" +#include +#include + + +namespace Poco { +namespace Crypto { + + +CipherFactory::CipherFactory() +{ +} + + +CipherFactory::~CipherFactory() +{ +} + + +namespace +{ + static Poco::SingletonHolder holder; +} + + +CipherFactory& CipherFactory::defaultFactory() +{ + return *holder.get(); +} + + +Cipher* CipherFactory::createCipher(const CipherKey& key) +{ + return new CipherImpl(key); +} + + +Cipher* CipherFactory::createCipher(const RSAKey& key, RSAPaddingMode paddingMode) +{ + return new RSACipherImpl(key, paddingMode); +} + + +} } // namespace Poco::Crypto diff --git a/Crypto/src/CipherImpl.cpp b/Crypto/src/CipherImpl.cpp new file mode 100644 index 000000000..79216d63e --- /dev/null +++ b/Crypto/src/CipherImpl.cpp @@ -0,0 +1,203 @@ +// +// CipherImpl.cpp +// +// $Id: //poco/1.4/Crypto/src/CipherImpl.cpp#2 $ +// +// Library: Crypto +// Package: Cipher +// Module: CipherImpl +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/Crypto/CipherImpl.h" +#include "Poco/Crypto/CryptoTransform.h" +#include "Poco/Exception.h" +#include + + +namespace Poco { +namespace Crypto { + + +namespace +{ + void throwError() + { + unsigned long err; + std::string msg; + + while ((err = ERR_get_error())) + { + if (!msg.empty()) + msg.append("; "); + msg.append(ERR_error_string(err, 0)); + } + + throw Poco::IOException(msg); + } + + + class CryptoTransformImpl: public CryptoTransform + { + public: + typedef Cipher::ByteVec ByteVec; + + enum Direction + { + DIR_ENCRYPT, + DIR_DECRYPT + }; + + CryptoTransformImpl( + const EVP_CIPHER* pCipher, + const ByteVec& key, + const ByteVec& iv, + Direction dir); + + ~CryptoTransformImpl(); + + std::size_t blockSize() const; + + std::streamsize transform( + const unsigned char* input, + std::streamsize inputLength, + unsigned char* output, + std::streamsize outputLength); + + std::streamsize finalize( + unsigned char* output, + std::streamsize length); + + private: + const EVP_CIPHER* _pCipher; + EVP_CIPHER_CTX _ctx; + ByteVec _key; + ByteVec _iv; + }; + + + CryptoTransformImpl::CryptoTransformImpl( + const EVP_CIPHER* pCipher, + const ByteVec& key, + const ByteVec& iv, + Direction dir): + _pCipher(pCipher), + _key(key), + _iv(iv) + { + EVP_CipherInit( + &_ctx, + _pCipher, + &_key[0], + &_iv[0], + (dir == DIR_ENCRYPT) ? 1 : 0); + } + + + CryptoTransformImpl::~CryptoTransformImpl() + { + EVP_CIPHER_CTX_cleanup(&_ctx); + } + + + std::size_t CryptoTransformImpl::blockSize() const + { + return EVP_CIPHER_CTX_block_size(&_ctx); + } + + + std::streamsize CryptoTransformImpl::transform( + const unsigned char* input, + std::streamsize inputLength, + unsigned char* output, + std::streamsize outputLength) + { + poco_assert (outputLength >= (inputLength + blockSize() - 1)); + + int outLen = static_cast(outputLength); + int rc = EVP_CipherUpdate( + &_ctx, + output, + &outLen, + input, + static_cast(inputLength)); + + if (rc == 0) + throwError(); + + return static_cast(outLen); + } + + + std::streamsize CryptoTransformImpl::finalize( + unsigned char* output, + std::streamsize length) + { + poco_assert (length >= blockSize()); + + int len = static_cast(length); + + // Use the '_ex' version that does not perform implicit cleanup since we + // will call EVP_CIPHER_CTX_cleanup() from the dtor as there is no + // guarantee that finalize() will be called if an error occurred. + int rc = EVP_CipherFinal_ex(&_ctx, output, &len); + + if (rc == 0) + throwError(); + + return static_cast(len); + } +} + + +CipherImpl::CipherImpl(const CipherKey& key): + _key(key) +{ +} + + +CipherImpl::~CipherImpl() +{ +} + + +CryptoTransform* CipherImpl::createEncryptor() +{ + CipherKeyImpl::Ptr p = _key.impl(); + return new CryptoTransformImpl(p->cipher(), p->getKey(), p->getIV(), CryptoTransformImpl::DIR_ENCRYPT); +} + + +CryptoTransform* CipherImpl::createDecryptor() +{ + CipherKeyImpl::Ptr p = _key.impl(); + return new CryptoTransformImpl(p->cipher(), p->getKey(), p->getIV(), CryptoTransformImpl::DIR_DECRYPT); +} + + +} } // namespace Poco::Crypto diff --git a/Crypto/src/CipherKey.cpp b/Crypto/src/CipherKey.cpp new file mode 100644 index 000000000..4b570c055 --- /dev/null +++ b/Crypto/src/CipherKey.cpp @@ -0,0 +1,67 @@ +// +// CipherKey.cpp +// +// $Id: //poco/1.4/Crypto/src/CipherKey.cpp#1 $ +// +// Library: Crypto +// Package: Cipher +// Module: CipherKey +// +// Copyright (c) 2007, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/Crypto/CipherKey.h" + + +namespace Poco { +namespace Crypto { + + +CipherKey::CipherKey(const std::string& name, const std::string& passphrase, const std::string& salt, int iterationCount): + _pImpl(new CipherKeyImpl(name, passphrase, salt, iterationCount)) +{ +} + + +CipherKey::CipherKey(const std::string& name, const ByteVec& key, const ByteVec& iv): + _pImpl(new CipherKeyImpl(name, key, iv)) +{ +} + + +CipherKey::CipherKey(const std::string& name): + _pImpl(new CipherKeyImpl(name)) +{ +} + + +CipherKey::~CipherKey() +{ +} + + +} } // namespace Poco::Crypto diff --git a/Crypto/src/CipherKeyImpl.cpp b/Crypto/src/CipherKeyImpl.cpp new file mode 100644 index 000000000..fabbead67 --- /dev/null +++ b/Crypto/src/CipherKeyImpl.cpp @@ -0,0 +1,218 @@ +// +// CipherKeyImpl.cpp +// +// $Id: //poco/1.4/Crypto/src/CipherKeyImpl.cpp#1 $ +// +// Library: Crypto +// Package: Cipher +// Module: CipherKeyImpl +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/Crypto/CipherKeyImpl.h" +#include "Poco/Crypto/CryptoTransform.h" +#include "Poco/Crypto/CipherFactory.h" +#include "Poco/Exception.h" +#include "Poco/RandomStream.h" +#include +#include + + +namespace Poco { +namespace Crypto { + + +CipherKeyImpl::CipherKeyImpl(const std::string& name, + const std::string& passphrase, + const std::string& salt, + int iterationCount): + _pCipher(0), + _name(name), + _key(), + _iv() +{ + // dummy access to Cipherfactory so that the EVP lib is initilaized + CipherFactory::defaultFactory(); + _pCipher = EVP_get_cipherbyname(name.c_str()); + + if (!_pCipher) + throw Poco::NotFoundException("Cipher " + name + " was not found"); + _key = ByteVec(keySize()); + _iv = ByteVec(ivSize()); + generateKey(passphrase, salt, iterationCount); +} + + +CipherKeyImpl::CipherKeyImpl(const std::string& name, + const ByteVec& key, + const ByteVec& iv): + _pCipher(0), + _name(name), + _key(key), + _iv(iv) +{ + // dummy access to Cipherfactory so that the EVP lib is initilaized + CipherFactory::defaultFactory(); + _pCipher = EVP_get_cipherbyname(name.c_str()); + + if (!_pCipher) + throw Poco::NotFoundException("Cipher " + name + " was not found"); +} + + +CipherKeyImpl::CipherKeyImpl(const std::string& name): + _pCipher(0), + _name(name), + _key(), + _iv() +{ + // dummy access to Cipherfactory so that the EVP lib is initilaized + CipherFactory::defaultFactory(); + _pCipher = EVP_get_cipherbyname(name.c_str()); + + if (!_pCipher) + throw Poco::NotFoundException("Cipher " + name + " was not found"); + _key = ByteVec(keySize()); + _iv = ByteVec(ivSize()); + generateKey(); +} + + +CipherKeyImpl::~CipherKeyImpl() +{ +} + + +CipherKeyImpl::Mode CipherKeyImpl::mode() const +{ + switch (EVP_CIPHER_mode(_pCipher)) + { + case EVP_CIPH_STREAM_CIPHER: + return MODE_STREAM_CIPHER; + + case EVP_CIPH_ECB_MODE: + return MODE_ECB; + + case EVP_CIPH_CBC_MODE: + return MODE_CBC; + + case EVP_CIPH_CFB_MODE: + return MODE_CFB; + + case EVP_CIPH_OFB_MODE: + return MODE_OFB; + } + throw Poco::IllegalStateException("Unexpected value of EVP_CIPHER_mode()"); +} + + +void CipherKeyImpl::generateKey() +{ + ByteVec vec; + + getRandomBytes(vec, keySize()); + setKey(vec); + + getRandomBytes(vec, ivSize()); + setIV(vec); +} + + +void CipherKeyImpl::getRandomBytes(ByteVec& vec, std::size_t count) +{ + Poco::RandomInputStream random; + + vec.clear(); + vec.reserve(count); + + for (int i = 0; i < count; ++i) + vec.push_back(static_cast(random.get())); +} + + +void CipherKeyImpl::generateKey( + const std::string& password, + const std::string& salt, + int iterationCount) +{ + unsigned char keyBytes[EVP_MAX_KEY_LENGTH]; + unsigned char ivBytes[EVP_MAX_IV_LENGTH]; + + // OpenSSL documentation specifies that the salt must be an 8-byte array. + unsigned char saltBytes[8]; + + if (!salt.empty()) + { + int len = static_cast(salt.size()); + // Create the salt array from the salt string + for (int i = 0; i < 8; ++i) + saltBytes[i] = salt.at(i % len); + for (int i = 8; i < len; ++i) + saltBytes[i % 8] ^= salt.at(i); + } + + // Now create the key and IV, using the MD5 digest algorithm. + int keySize = EVP_BytesToKey( + _pCipher, + EVP_md5(), + (salt.empty() ? 0 : saltBytes), + reinterpret_cast(password.data()), + static_cast(password.size()), + iterationCount, + keyBytes, + ivBytes); + + // Copy the buffers to our member byte vectors. + _key.assign(keyBytes, keyBytes + keySize); + + if (ivSize() == 0) + _iv.clear(); + else + _iv.assign(ivBytes, ivBytes + ivSize()); +} + + +int CipherKeyImpl::keySize() const +{ + return EVP_CIPHER_key_length(_pCipher); +} + + +int CipherKeyImpl::blockSize() const +{ + return EVP_CIPHER_block_size(_pCipher); +} + + +int CipherKeyImpl::ivSize() const +{ + return EVP_CIPHER_iv_length(_pCipher); +} + + +} } // namespace Poco::Crypto diff --git a/Crypto/src/CryptoStream.cpp b/Crypto/src/CryptoStream.cpp new file mode 100644 index 000000000..e01786709 --- /dev/null +++ b/Crypto/src/CryptoStream.cpp @@ -0,0 +1,377 @@ +// +// CryptoStream.cpp +// +// $Id: //poco/1.4/Crypto/src/CryptoStream.cpp#2 $ +// +// Library: Crypto +// Package: Cipher +// Module: CryptoStream +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/Crypto/CryptoStream.h" +#include "Poco/Crypto/CryptoTransform.h" +#include "Poco/Crypto/Cipher.h" +#include "Poco/Exception.h" +#include + + +#undef min +#undef max + + +namespace Poco { +namespace Crypto { + + +// +// CryptoStreamBuf +// + + +CryptoStreamBuf::CryptoStreamBuf(std::istream& istr, CryptoTransform* pTransform, std::streamsize bufferSize): + Poco::BufferedStreamBuf(bufferSize, std::ios::in), + _pTransform(pTransform), + _pIstr(&istr), + _pOstr(0), + _eof(false), + _buffer(static_cast(bufferSize)) +{ + poco_check_ptr (pTransform); + poco_assert (bufferSize > 2 * pTransform->blockSize()); +} + + +CryptoStreamBuf::CryptoStreamBuf(std::ostream& ostr, CryptoTransform* pTransform, std::streamsize bufferSize): + Poco::BufferedStreamBuf(bufferSize, std::ios::out), + _pTransform(pTransform), + _pIstr(0), + _pOstr(&ostr), + _eof(false), + _buffer(static_cast(bufferSize)) +{ + poco_check_ptr (pTransform); + poco_assert (bufferSize > 2 * pTransform->blockSize()); +} + + +CryptoStreamBuf::~CryptoStreamBuf() +{ + try + { + close(); + } + catch (...) + { + } + delete _pTransform; +} + + +void CryptoStreamBuf::close() +{ + sync(); + + if (_pIstr) + { + _pIstr = 0; + } + else if (_pOstr) + { + // Close can be called multiple times. By zeroing the pointer we make + // sure that we call finalize() only once, even if an exception is + // thrown. + std::ostream* pOstr = _pOstr; + _pOstr = 0; + + // Finalize transformation. + std::streamsize n = _pTransform->finalize(_buffer.begin(), static_cast(_buffer.size())); + + if (n > 0) + { + pOstr->write(reinterpret_cast(_buffer.begin()), n); + if (!pOstr->good()) + throw Poco::IOException("Output stream failure"); + } + } +} + + +int CryptoStreamBuf::readFromDevice(char* buffer, std::streamsize length) +{ + if (!_pIstr) + return 0; + + int count = 0; + + while (!_eof) + { + int m = (static_cast(length) - count)/2 - static_cast(_pTransform->blockSize()); + + // Make sure we can read at least one more block. Explicitely check + // for m < 0 since blockSize() returns an unsigned int and the + // comparison might give false results for m < 0. + if (m <= 0) + break; + + int n = 0; + + if (_pIstr->good()) + { + _pIstr->read(reinterpret_cast(_buffer.begin()), m); + n = static_cast(_pIstr->gcount()); + } + + if (n == 0) + { + _eof = true; + + // No more data, finalize transformation + count += static_cast(_pTransform->finalize( + reinterpret_cast(buffer + count), + static_cast(length) - count)); + } + else + { + // Transform next chunk of data + count += static_cast(_pTransform->transform( + _buffer.begin(), + n, + reinterpret_cast(buffer + count), + static_cast(length) - count)); + } + } + + return count; +} + + +int CryptoStreamBuf::writeToDevice(const char* buffer, std::streamsize length) +{ + if (!_pOstr) + return 0; + + std::size_t maxChunkSize = _buffer.size()/2; + std::size_t count = 0; + + while (count < length) + { + // Truncate chunk size so that the maximum output fits into _buffer. + std::size_t n = static_cast(length) - count; + if (n > maxChunkSize) + n = maxChunkSize; + + // Transform next chunk of data + std::streamsize k = _pTransform->transform( + reinterpret_cast(buffer + count), + static_cast(n), + _buffer.begin(), + static_cast(_buffer.size())); + + // Attention: (n != k) might be true. In count, we have to track how + // many bytes from buffer have been consumed, not how many bytes have + // been written to _pOstr! + count += n; + + if (k > 0) + { + _pOstr->write(reinterpret_cast(_buffer.begin()), k); + if (!_pOstr->good()) + throw Poco::IOException("Output stream failure"); + } + } + + return static_cast(count); +} + + +// +// CryptoIOS +// + + +CryptoIOS::CryptoIOS(std::istream& istr, CryptoTransform* pTransform, std::streamsize bufferSize): + _buf(istr, pTransform, bufferSize) +{ + poco_ios_init(&_buf); +} + + +CryptoIOS::CryptoIOS(std::ostream& ostr, CryptoTransform* pTransform, std::streamsize bufferSize): + _buf(ostr, pTransform, bufferSize) +{ + poco_ios_init(&_buf); +} + + +CryptoIOS::~CryptoIOS() +{ +} + + +CryptoStreamBuf* CryptoIOS::rdbuf() +{ + return &_buf; +} + + +// +// CryptoInputStream +// + + +CryptoInputStream::CryptoInputStream(std::istream& istr, CryptoTransform* pTransform, std::streamsize bufferSize): + CryptoIOS(istr, pTransform, bufferSize), + std::istream(&_buf) +{ +} + + +CryptoInputStream::CryptoInputStream(std::istream& istr, Cipher& cipher, std::streamsize bufferSize): + CryptoIOS(istr, cipher.createEncryptor(), bufferSize), + std::istream(&_buf) +{ +} + + +CryptoInputStream::~CryptoInputStream() +{ +} + + +// +// CryptoOutputStream +// + + +CryptoOutputStream::CryptoOutputStream(std::ostream& ostr, CryptoTransform* pTransform, std::streamsize bufferSize): + CryptoIOS(ostr, pTransform, bufferSize), + std::ostream(&_buf) +{ +} + + +CryptoOutputStream::CryptoOutputStream(std::ostream& ostr, Cipher& cipher, std::streamsize bufferSize): + CryptoIOS(ostr, cipher.createDecryptor(), bufferSize), + std::ostream(&_buf) +{ +} + + +CryptoOutputStream::~CryptoOutputStream() +{ +} + + +void CryptoOutputStream::close() +{ + _buf.close(); +} + + +// +// EncryptingInputStream +// + + +EncryptingInputStream::EncryptingInputStream(std::istream& istr, Cipher& cipher, std::streamsize bufferSize): + CryptoIOS(istr, cipher.createEncryptor(), bufferSize), + std::istream(&_buf) +{ +} + + +EncryptingInputStream::~EncryptingInputStream() +{ +} + + +// +// EncryptingOuputStream +// + + +EncryptingOutputStream::EncryptingOutputStream(std::ostream& ostr, Cipher& cipher, std::streamsize bufferSize): + CryptoIOS(ostr, cipher.createEncryptor(), bufferSize), + std::ostream(&_buf) +{ +} + + +EncryptingOutputStream::~EncryptingOutputStream() +{ +} + + +void EncryptingOutputStream::close() +{ + _buf.close(); +} + + +// +// DecryptingInputStream +// + + +DecryptingInputStream::DecryptingInputStream(std::istream& istr, Cipher& cipher, std::streamsize bufferSize): + CryptoIOS(istr, cipher.createDecryptor(), bufferSize), + std::istream(&_buf) +{ +} + + +DecryptingInputStream::~DecryptingInputStream() +{ +} + + +// +// DecryptingOuputStream +// + + +DecryptingOutputStream::DecryptingOutputStream(std::ostream& ostr, Cipher& cipher, std::streamsize bufferSize): + CryptoIOS(ostr, cipher.createDecryptor(), bufferSize), + std::ostream(&_buf) +{ +} + + +DecryptingOutputStream::~DecryptingOutputStream() +{ +} + + +void DecryptingOutputStream::close() +{ + _buf.close(); +} + + +} } // namespace Poco::Crypto diff --git a/Crypto/src/CryptoTransform.cpp b/Crypto/src/CryptoTransform.cpp new file mode 100644 index 000000000..f27402b38 --- /dev/null +++ b/Crypto/src/CryptoTransform.cpp @@ -0,0 +1,54 @@ +// +// CryptoTransform.cpp +// +// $Id: //poco/1.4/Crypto/src/CryptoTransform.cpp#1 $ +// +// Library: Crypto +// Package: Cipher +// Module: CryptoTransform +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/Crypto/CryptoTransform.h" + + +namespace Poco { +namespace Crypto { + + +CryptoTransform::CryptoTransform() +{ +} + + +CryptoTransform::~CryptoTransform() +{ +} + + +} } // namespace Poco::Crypto diff --git a/Crypto/src/OpenSSLInitializer.cpp b/Crypto/src/OpenSSLInitializer.cpp new file mode 100644 index 000000000..eacc5e0c4 --- /dev/null +++ b/Crypto/src/OpenSSLInitializer.cpp @@ -0,0 +1,172 @@ +// +// OpenSSLInitializer.cpp +// +// $Id: //poco/1.4/Crypto/src/OpenSSLInitializer.cpp#3 $ +// +// Library: Crypto +// Package: CryotpCore +// Module: OpenSSLInitializer +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/Crypto/OpenSSLInitializer.h" +#include "Poco/RandomStream.h" +#include "Poco/Thread.h" +#include +#include +#include +#include +#if OPENSSL_VERSION_NUMBER >= 0x0907000L +#include +#endif + + +using Poco::RandomInputStream; +using Poco::Thread; + + +namespace Poco { +namespace Crypto { + + +Poco::FastMutex* OpenSSLInitializer::_mutexes(0); +Poco::FastMutex OpenSSLInitializer::_mutex; +int OpenSSLInitializer::_rc(0); + + +OpenSSLInitializer::OpenSSLInitializer() +{ + initialize(); +} + + +OpenSSLInitializer::~OpenSSLInitializer() +{ + uninitialize(); +} + + +void OpenSSLInitializer::initialize() +{ + Poco::FastMutex::ScopedLock lock(_mutex); + + if (++_rc == 1) + { +#if OPENSSL_VERSION_NUMBER >= 0x0907000L + OPENSSL_config(NULL); +#endif + SSL_library_init(); + SSL_load_error_strings(); + OpenSSL_add_all_algorithms(); + + char seed[SEEDSIZE]; + RandomInputStream rnd; + rnd.read(seed, sizeof(seed)); + RAND_seed(seed, SEEDSIZE); + + int nMutexes = CRYPTO_num_locks(); + _mutexes = new Poco::FastMutex[nMutexes]; + CRYPTO_set_locking_callback(&OpenSSLInitializer::lock); +#ifndef POCO_OS_FAMILY_WINDOWS // SF# 1828231: random unhandled exceptions when linking with ssl + CRYPTO_set_id_callback(&OpenSSLInitializer::id); +#endif + CRYPTO_set_dynlock_create_callback(&OpenSSLInitializer::dynlockCreate); + CRYPTO_set_dynlock_lock_callback(&OpenSSLInitializer::dynlock); + CRYPTO_set_dynlock_destroy_callback(&OpenSSLInitializer::dynlockDestroy); + } +} + + +void OpenSSLInitializer::uninitialize() +{ + Poco::FastMutex::ScopedLock lock(_mutex); + + if (--_rc == 0) + { + EVP_cleanup(); + ERR_free_strings(); + CRYPTO_set_locking_callback(0); + delete [] _mutexes; + } +} + + +void OpenSSLInitializer::lock(int mode, int n, const char* file, int line) +{ + if (mode & CRYPTO_LOCK) + _mutexes[n].lock(); + else + _mutexes[n].unlock(); +} + + +unsigned long OpenSSLInitializer::id() +{ + // Note: we use an old-style C cast here because + // neither static_cast<> nor reinterpret_cast<> + // work uniformly across all platforms. + return (unsigned long) Poco::Thread::currentTid(); +} + + +struct CRYPTO_dynlock_value* OpenSSLInitializer::dynlockCreate(const char* file, int line) +{ + return new CRYPTO_dynlock_value; +} + + +void OpenSSLInitializer::dynlock(int mode, struct CRYPTO_dynlock_value* lock, const char* file, int line) +{ + poco_check_ptr (lock); + + if (mode & CRYPTO_LOCK) + lock->_mutex.lock(); + else + lock->_mutex.unlock(); +} + + +void OpenSSLInitializer::dynlockDestroy(struct CRYPTO_dynlock_value* lock, const char* file, int line) +{ + delete lock; +} + + +void initializeCrypto() +{ + OpenSSLInitializer::initialize(); +} + + +void uninitializeCrypto() +{ + OpenSSLInitializer::uninitialize(); +} + + +} } // namespace Poco::Crypto diff --git a/Crypto/src/RSACipherImpl.cpp b/Crypto/src/RSACipherImpl.cpp new file mode 100644 index 000000000..2c9d2caee --- /dev/null +++ b/Crypto/src/RSACipherImpl.cpp @@ -0,0 +1,340 @@ +// +// RSACipherImpl.cpp +// +// $Id: //poco/1.4/Crypto/src/RSACipherImpl.cpp#3 $ +// +// Library: Crypto +// Package: RSA +// Module: RSACipherImpl +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/Crypto/RSACipherImpl.h" +#include "Poco/Crypto/CryptoTransform.h" +#include "Poco/Exception.h" +#include +#include +#include + + +namespace Poco { +namespace Crypto { + + +namespace +{ + void throwError() + { + unsigned long err; + std::string msg; + + while ((err = ERR_get_error())) + { + if (!msg.empty()) + msg.append("; "); + msg.append(ERR_error_string(err, 0)); + } + + throw Poco::IOException(msg); + } + + + int mapPaddingMode(RSAPaddingMode paddingMode) + { + switch (paddingMode) + { + case RSA_PADDING_PKCS1: + return RSA_PKCS1_PADDING; + case RSA_PADDING_PKCS1_OAEP: + return RSA_PKCS1_OAEP_PADDING; + case RSA_PADDING_SSLV23: + return RSA_SSLV23_PADDING; + case RSA_PADDING_NONE: + return RSA_NO_PADDING; + default: + poco_bugcheck(); + return RSA_NO_PADDING; + } + } + + + class RSAEncryptImpl: public CryptoTransform + { + public: + RSAEncryptImpl(const RSA* pRSA, RSAPaddingMode paddingMode); + ~RSAEncryptImpl(); + + std::size_t blockSize() const; + std::size_t maxDataSize() const; + + std::streamsize transform( + const unsigned char* input, + std::streamsize inputLength, + unsigned char* output, + std::streamsize outputLength); + + std::streamsize finalize(unsigned char* output, std::streamsize length); + + private: + const RSA* _pRSA; + RSAPaddingMode _paddingMode; + std::streamsize _pos; + unsigned char* _pBuf; + }; + + + RSAEncryptImpl::RSAEncryptImpl(const RSA* pRSA, RSAPaddingMode paddingMode): + _pRSA(pRSA), + _paddingMode(paddingMode), + _pos(0), + _pBuf(0) + { + _pBuf = new unsigned char[blockSize()]; + } + + + RSAEncryptImpl::~RSAEncryptImpl() + { + delete [] _pBuf; + } + + + std::size_t RSAEncryptImpl::blockSize() const + { + return RSA_size(_pRSA); + } + + + std::size_t RSAEncryptImpl::maxDataSize() const + { + std::size_t size = blockSize(); + switch (_paddingMode) + { + case RSA_PADDING_PKCS1: + case RSA_PADDING_SSLV23: + size -= 11; + break; + case RSA_PADDING_PKCS1_OAEP: + size -= 41; + break; + default: + break; + } + return size; + } + + + std::streamsize RSAEncryptImpl::transform( + const unsigned char* input, + std::streamsize inputLength, + unsigned char* output, + std::streamsize outputLength) + { + // always fill up the buffer before writing! + std::streamsize maxSize = static_cast(maxDataSize()); + std::streamsize rsaSize = static_cast(blockSize()); + poco_assert_dbg(_pos <= maxSize); + poco_assert (outputLength >= rsaSize); + int rc = 0; + while (inputLength > 0) + { + // check how many data bytes we are missing to get the buffer full + poco_assert_dbg (maxSize >= _pos); + std::streamsize missing = maxSize - _pos; + if (missing == 0) + { + poco_assert (outputLength >= rsaSize); + int n = RSA_public_encrypt(static_cast(maxSize), _pBuf, output, const_cast(_pRSA), mapPaddingMode(_paddingMode)); + if (n == -1) + throwError(); + rc += n; + output += n; + outputLength -= n; + _pos = 0; + + } + else + { + if (missing > inputLength) + missing = inputLength; + + std::memcpy(_pBuf + _pos, input, static_cast(missing)); + input += missing; + _pos += missing; + inputLength -= missing; + } + } + return rc; + } + + + std::streamsize RSAEncryptImpl::finalize(unsigned char* output, std::streamsize length) + { + poco_assert (length >= blockSize()); + poco_assert (_pos <= maxDataSize()); + int rc = 0; + if (_pos > 0) + { + rc = RSA_public_encrypt(static_cast(_pos), _pBuf, output, const_cast(_pRSA), mapPaddingMode(_paddingMode)); + if (rc == -1) throwError(); + } + return rc; + } + + + class RSADecryptImpl: public CryptoTransform + { + public: + RSADecryptImpl(const RSA* pRSA, RSAPaddingMode paddingMode); + ~RSADecryptImpl(); + + std::size_t blockSize() const; + + std::streamsize transform( + const unsigned char* input, + std::streamsize inputLength, + unsigned char* output, + std::streamsize outputLength); + + std::streamsize finalize( + unsigned char* output, + std::streamsize length); + + private: + const RSA* _pRSA; + RSAPaddingMode _paddingMode; + std::streamsize _pos; + unsigned char* _pBuf; + }; + + + RSADecryptImpl::RSADecryptImpl(const RSA* pRSA, RSAPaddingMode paddingMode): + _pRSA(pRSA), + _paddingMode(paddingMode), + _pos(0), + _pBuf(0) + { + _pBuf = new unsigned char[blockSize()]; + } + + + RSADecryptImpl::~RSADecryptImpl() + { + delete [] _pBuf; + } + + + std::size_t RSADecryptImpl::blockSize() const + { + return RSA_size(_pRSA); + } + + + std::streamsize RSADecryptImpl::transform( + const unsigned char* input, + std::streamsize inputLength, + unsigned char* output, + std::streamsize outputLength) + { + + // always fill up the buffer before decrypting! + std::streamsize rsaSize = static_cast(blockSize()); + poco_assert_dbg(_pos <= rsaSize); + poco_assert (outputLength >= rsaSize); + int rc = 0; + while (inputLength > 0) + { + // check how many data bytes we are missing to get the buffer full + poco_assert_dbg (rsaSize >= _pos); + std::streamsize missing = rsaSize - _pos; + if (missing == 0) + { + int tmp = RSA_private_decrypt(static_cast(rsaSize), _pBuf, output, const_cast(_pRSA), mapPaddingMode(_paddingMode)); + if (tmp == -1) + throwError(); + rc += tmp; + output += tmp; + outputLength -= tmp; + _pos = 0; + + } + else + { + if (missing > inputLength) + missing = inputLength; + + std::memcpy(_pBuf + _pos, input, static_cast(missing)); + input += missing; + _pos += missing; + inputLength -= missing; + } + } + return rc; + } + + + std::streamsize RSADecryptImpl::finalize(unsigned char* output, std::streamsize length) + { + poco_assert (length >= blockSize()); + int rc = 0; + if (_pos > 0) + { + rc = RSA_private_decrypt(static_cast(_pos), _pBuf, output, const_cast(_pRSA), mapPaddingMode(_paddingMode)); + if (rc == -1) + throwError(); + } + return rc; + } +} + + +RSACipherImpl::RSACipherImpl(const RSAKey& key, RSAPaddingMode paddingMode): + _key(key), + _paddingMode(paddingMode) +{ +} + + +RSACipherImpl::~RSACipherImpl() +{ +} + + +CryptoTransform* RSACipherImpl::createEncryptor() +{ + return new RSAEncryptImpl(_key.impl()->getRSA(), _paddingMode); +} + + +CryptoTransform* RSACipherImpl::createDecryptor() +{ + return new RSADecryptImpl(_key.impl()->getRSA(), _paddingMode); +} + + +} } // namespace Poco::Crypto diff --git a/Crypto/src/RSADigestEngine.cpp b/Crypto/src/RSADigestEngine.cpp new file mode 100644 index 000000000..289560f9a --- /dev/null +++ b/Crypto/src/RSADigestEngine.cpp @@ -0,0 +1,113 @@ +// +// RSADigestEngine.cpp +// +// $Id: //poco/1.4/Crypto/src/RSADigestEngine.cpp#1 $ +// +// Library: Crypto +// Package: RSA +// Module: RSADigestEngine +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/Crypto/RSADigestEngine.h" +#include + + +namespace Poco { +namespace Crypto { + + +RSADigestEngine::RSADigestEngine(const RSAKey& key, DigestType digestType): + _key(key), + _engine(digestType == DIGEST_MD5 ? static_cast(_md5Engine) : static_cast(_sha1Engine)), + _type(digestType == DIGEST_MD5 ? NID_md5 : NID_sha1) +{ +} + + +RSADigestEngine::~RSADigestEngine() +{ +} + + +unsigned RSADigestEngine::digestLength() const +{ + return _engine.digestLength(); +} + + +void RSADigestEngine::reset() +{ + _engine.reset(); + _digest.clear(); + _signature.clear(); +} + + +const DigestEngine::Digest& RSADigestEngine::digest() +{ + if (_digest.empty()) + { + _digest = _engine.digest(); + } + return _digest; +} + + +const DigestEngine::Digest& RSADigestEngine::signature() +{ + if (_signature.empty()) + { + digest(); + _signature.resize(_key.size()); + unsigned sigLen = static_cast(_signature.size()); + RSA_sign(_type, &_digest[0], static_cast(_digest.size()), &_signature[0], &sigLen, _key.impl()->getRSA()); + // truncate _sig to sigLen + if (sigLen < _signature.size()) + _signature.resize(sigLen); + } + return _signature; +} + + +bool RSADigestEngine::verify(const DigestEngine::Digest& sig) +{ + digest(); + DigestEngine::Digest sigCpy = sig; // copy becausse RSA_verify can modify sigCpy + int ret = RSA_verify(_type, &_digest[0], static_cast(_digest.size()), &sigCpy[0], static_cast(sigCpy.size()), _key.impl()->getRSA()); + return ret != 0; +} + + +void RSADigestEngine::updateImpl(const void* data, unsigned length) +{ + _engine.update(data, length); +} + + +} } // namespace Poco::Crypto diff --git a/Crypto/src/RSAKey.cpp b/Crypto/src/RSAKey.cpp new file mode 100644 index 000000000..69c83338f --- /dev/null +++ b/Crypto/src/RSAKey.cpp @@ -0,0 +1,127 @@ +// +// RSAKey.cpp +// +// $Id: //poco/1.4/Crypto/src/RSAKey.cpp#2 $ +// +// Library: Crypto +// Package: RSA +// Module: RSAKey +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/Crypto/RSAKey.h" +#include + + +namespace Poco { +namespace Crypto { + + +RSAKey::RSAKey(const X509Certificate& cert): + _pImpl(new RSAKeyImpl(cert)) +{ +} + + +RSAKey::RSAKey(KeyLength keyLength, Exponent exp): + _pImpl(0) +{ + int keyLen = keyLength; + unsigned long expVal = RSA_3; + if (exp == EXP_LARGE) + expVal = RSA_F4; + _pImpl = new RSAKeyImpl(keyLen, expVal); +} + + +RSAKey::RSAKey(const std::string& publicKeyFile, const std::string& privateKeyFile, const std::string& privateKeyPassphrase): + _pImpl(new RSAKeyImpl(publicKeyFile, privateKeyFile, privateKeyPassphrase)) +{ +} + + +RSAKey::RSAKey(std::istream* pPublicKeyStream, std::istream* pPrivateKeyStream, const std::string& privateKeyPassphrase): + _pImpl(new RSAKeyImpl(pPublicKeyStream, pPrivateKeyStream, privateKeyPassphrase)) +{ +} + + +RSAKey::~RSAKey() +{ +} + + +int RSAKey::size() const +{ + return _pImpl->size(); +} + + +RSAKeyImpl::ByteVec RSAKey::modulus() const +{ + return _pImpl->modulus(); +} + + +RSAKeyImpl::ByteVec RSAKey::encryptionExponent() const +{ + return _pImpl->encryptionExponent(); +} + + +RSAKeyImpl::ByteVec RSAKey::decryptionExponent() const +{ + return _pImpl->decryptionExponent(); +} + + +void RSAKey::save(const std::string& publicKeyFile, const std::string& privateKeyFile, const std::string& privateKeyPassphrase) +{ + _pImpl->save(publicKeyFile, privateKeyFile, privateKeyPassphrase); +} + + +void RSAKey::save(std::ostream* pPublicKeyStream, std::ostream* pPrivateKeyStream, const std::string& privateKeyPassphrase) +{ + _pImpl->save(pPublicKeyStream, pPrivateKeyStream, privateKeyPassphrase); +} + + +namespace +{ + static const std::string RSA("rsa"); +} + + +const std::string& RSAKey::name() const +{ + return RSA; +} + + +} } // namespace Poco::Crypto diff --git a/Crypto/src/RSAKeyImpl.cpp b/Crypto/src/RSAKeyImpl.cpp new file mode 100644 index 000000000..85ec6d807 --- /dev/null +++ b/Crypto/src/RSAKeyImpl.cpp @@ -0,0 +1,339 @@ +// +// RSAKeyImpl.cpp +// +// $Id: //poco/1.4/Crypto/src/RSAKeyImpl.cpp#3 $ +// +// Library: Crypto +// Package: RSA +// Module: RSAKeyImpl +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/Crypto/RSAKeyImpl.h" +#include "Poco/Crypto/X509Certificate.h" +#include "Poco/FileStream.h" +#include "Poco/StreamCopier.h" +#include +#include +#include +#include +#if OPENSSL_VERSION_NUMBER >= 0x00908000L +#include +#endif + + +namespace Poco { +namespace Crypto { + + +RSAKeyImpl::RSAKeyImpl(const X509Certificate& cert): + _pRSA(0) +{ + const X509* pCert = cert.certificate(); + EVP_PKEY* pKey = X509_get_pubkey(const_cast(pCert)); + _pRSA = EVP_PKEY_get1_RSA(pKey); +} + + +RSAKeyImpl::RSAKeyImpl(int keyLength, unsigned long exponent): + _pRSA(0) +{ +#if OPENSSL_VERSION_NUMBER >= 0x00908000L + _pRSA = RSA_new(); + int ret = 0; + BIGNUM* bn = 0; + try + { + bn = BN_new(); + BN_set_word(bn, exponent); + ret = RSA_generate_key_ex(_pRSA, keyLength, bn, 0); + BN_free(bn); + } + catch (...) + { + BN_free(bn); + throw; + } + if (!ret) throw Poco::InvalidArgumentException("Failed to create RSA context"); +#else + _pRSA = RSA_generate_key(keyLength, exponent, 0, 0); + if (!_pRSA) throw Poco::InvalidArgumentException("Failed to create RSA context"); +#endif +} + + +RSAKeyImpl::RSAKeyImpl( + const std::string& publicKeyFile, + const std::string& privateKeyFile, + const std::string& privateKeyPassphrase): + _pRSA(0) +{ + poco_assert_dbg(_pRSA == 0); + + _pRSA = RSA_new(); + if (!publicKeyFile.empty()) + { + BIO* bio = BIO_new(BIO_s_file()); + if (!bio) throw Poco::IOException("Cannot create BIO for reading public key", publicKeyFile); + int rc = BIO_read_filename(bio, publicKeyFile.c_str()); + if (rc) + { + RSA* pubKey = PEM_read_bio_RSAPublicKey(bio, &_pRSA, 0, 0); + BIO_free(bio); + if (!pubKey) + { + freeRSA(); + throw Poco::FileException("Failed to load public key", publicKeyFile); + } + } + else + { + freeRSA(); + throw Poco::FileNotFoundException("Public key file", publicKeyFile); + } + } + + if (!privateKeyFile.empty()) + { + BIO* bio = BIO_new(BIO_s_file()); + if (!bio) throw Poco::IOException("Cannot create BIO for reading private key", privateKeyFile); + int rc = BIO_read_filename(bio, privateKeyFile.c_str()); + if (rc) + { + RSA* privKey = 0; + if (privateKeyPassphrase.empty()) + privKey = PEM_read_bio_RSAPrivateKey(bio, &_pRSA, 0, 0); + else + privKey = PEM_read_bio_RSAPrivateKey(bio, &_pRSA, 0, const_cast(privateKeyPassphrase.c_str())); + BIO_free(bio); + if (!privKey) + { + freeRSA(); + throw Poco::FileException("Failed to load private key", privateKeyFile); + } + } + else + { + freeRSA(); + throw Poco::FileNotFoundException("Private key file", privateKeyFile); + } + } +} + + +RSAKeyImpl::RSAKeyImpl(std::istream* pPublicKeyStream, std::istream* pPrivateKeyStream, const std::string& privateKeyPassphrase): + _pRSA(0) +{ + poco_assert_dbg(_pRSA == 0); + + _pRSA = RSA_new(); + if (pPublicKeyStream) + { + std::string publicKeyData; + Poco::StreamCopier::copyToString(*pPublicKeyStream, publicKeyData); + BIO* bio = BIO_new_mem_buf(const_cast(publicKeyData.data()), static_cast(publicKeyData.size())); + if (!bio) throw Poco::IOException("Cannot create BIO for reading public key"); + RSA* publicKey = PEM_read_bio_RSAPublicKey(bio, &_pRSA, 0, 0); + BIO_free(bio); + if (!publicKey) + { + freeRSA(); + throw Poco::FileException("Failed to load public key"); + } + } + + if (pPrivateKeyStream) + { + std::string privateKeyData; + Poco::StreamCopier::copyToString(*pPrivateKeyStream, privateKeyData); + BIO* bio = BIO_new_mem_buf(const_cast(privateKeyData.data()), static_cast(privateKeyData.size())); + if (!bio) throw Poco::IOException("Cannot create BIO for reading private key"); + RSA* privateKey = 0; + if (privateKeyPassphrase.empty()) + privateKey = PEM_read_bio_RSAPrivateKey(bio, &_pRSA, 0, 0); + else + privateKey = PEM_read_bio_RSAPrivateKey(bio, &_pRSA, 0, const_cast(privateKeyPassphrase.c_str())); + BIO_free(bio); + if (!privateKey) + { + freeRSA(); + throw Poco::FileException("Failed to load private key"); + } + } +} + + +RSAKeyImpl::~RSAKeyImpl() +{ + freeRSA(); +} + + +void RSAKeyImpl::freeRSA() +{ + if (_pRSA) + RSA_free(_pRSA); + _pRSA = 0; +} + + +int RSAKeyImpl::size() const +{ + return RSA_size(_pRSA); +} + + +RSAKeyImpl::ByteVec RSAKeyImpl::modulus() const +{ + return convertToByteVec(_pRSA->n); +} + + +RSAKeyImpl::ByteVec RSAKeyImpl::encryptionExponent() const +{ + return convertToByteVec(_pRSA->e); +} + + +RSAKeyImpl::ByteVec RSAKeyImpl::decryptionExponent() const +{ + return convertToByteVec(_pRSA->d); +} + + +void RSAKeyImpl::save(const std::string& publicKeyFile, const std::string& privateKeyFile, const std::string& privateKeyPassphrase) +{ + if (!publicKeyFile.empty()) + { + BIO* bio = BIO_new(BIO_s_file()); + if (!bio) throw Poco::IOException("Cannot create BIO for writing public key file", publicKeyFile); + try + { + if (BIO_write_filename(bio, const_cast(publicKeyFile.c_str()))) + { + if (!PEM_write_bio_RSAPublicKey(bio, _pRSA)) + throw Poco::WriteFileException("Failed to write public key to file", publicKeyFile); + } + else throw Poco::CreateFileException("Cannot create public key file"); + } + catch (...) + { + BIO_free(bio); + throw; + } + BIO_free(bio); + } + + if (!privateKeyFile.empty()) + { + BIO* bio = BIO_new(BIO_s_file()); + if (!bio) throw Poco::IOException("Cannot create BIO for writing private key file", privateKeyFile); + try + { + if (BIO_write_filename(bio, const_cast(privateKeyFile.c_str()))) + { + int rc = 0; + if (privateKeyPassphrase.empty()) + rc = PEM_write_bio_RSAPrivateKey(bio, _pRSA, EVP_des_ede3_cbc(), 0, 0, 0, 0); + else + rc = PEM_write_bio_RSAPrivateKey(bio, _pRSA, EVP_des_ede3_cbc(), + reinterpret_cast(const_cast(privateKeyPassphrase.c_str())), + static_cast(privateKeyPassphrase.length()), 0, 0); + if (!rc) throw Poco::FileException("Failed to write private key to file", privateKeyFile); + } + else throw Poco::CreateFileException("Cannot create private key file", privateKeyFile); + } + catch (...) + { + BIO_free(bio); + throw; + } + BIO_free(bio); + } +} + + +void RSAKeyImpl::save(std::ostream* pPublicKeyStream, std::ostream* pPrivateKeyStream, const std::string& privateKeyPassphrase) +{ + if (pPublicKeyStream) + { + BIO* bio = BIO_new(BIO_s_mem()); + if (!bio) throw Poco::IOException("Cannot create BIO for writing public key"); + if (!PEM_write_bio_RSAPublicKey(bio, _pRSA)) + { + BIO_free(bio); + throw Poco::WriteFileException("Failed to write public key to stream"); + } + char* pData; + long size = BIO_get_mem_data(bio, &pData); + pPublicKeyStream->write(pData, static_cast(size)); + BIO_free(bio); + } + + if (pPrivateKeyStream) + { + BIO* bio = BIO_new(BIO_s_mem()); + if (!bio) throw Poco::IOException("Cannot create BIO for writing public key"); + int rc = 0; + if (privateKeyPassphrase.empty()) + rc = PEM_write_bio_RSAPrivateKey(bio, _pRSA, EVP_des_ede3_cbc(), 0, 0, 0, 0); + else + rc = PEM_write_bio_RSAPrivateKey(bio, _pRSA, EVP_des_ede3_cbc(), + reinterpret_cast(const_cast(privateKeyPassphrase.c_str())), + static_cast(privateKeyPassphrase.length()), 0, 0); + if (!rc) + { + BIO_free(bio); + throw Poco::FileException("Failed to write private key to stream"); + } + char* pData; + long size = BIO_get_mem_data(bio, &pData); + pPrivateKeyStream->write(pData, static_cast(size)); + BIO_free(bio); + } +} + + +RSAKeyImpl::ByteVec RSAKeyImpl::convertToByteVec(const BIGNUM* bn) +{ + int numBytes = BN_num_bytes(bn); + ByteVec byteVector(numBytes); + + ByteVec::value_type* buffer = new ByteVec::value_type[numBytes]; + BN_bn2bin(bn, buffer); + + for (int i = 0; i < numBytes; ++i) + byteVector[i] = buffer[i]; + + delete [] buffer; + + return byteVector; +} + + +} } // namespace Poco::Crypto diff --git a/Crypto/src/X509Certificate.cpp b/Crypto/src/X509Certificate.cpp new file mode 100644 index 000000000..ff24ea4c2 --- /dev/null +++ b/Crypto/src/X509Certificate.cpp @@ -0,0 +1,303 @@ +// +// X509Certificate.cpp +// +// $Id: //poco/1.4/Crypto/src/X509Certificate.cpp#1 $ +// +// Library: Crypto +// Package: Certificate +// Module: X509Certificate +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "Poco/Crypto/X509Certificate.h" +#include "Poco/StreamCopier.h" +#include "Poco/String.h" +#include "Poco/DateTimeParser.h" +#include +#include +#include +#include +#include + + +namespace Poco { +namespace Crypto { + + +X509Certificate::X509Certificate(std::istream& istr): + _pCert(0) +{ + load(istr); +} + + +X509Certificate::X509Certificate(const std::string& path): + _pCert(0) +{ + load(path); +} + + +X509Certificate::X509Certificate(X509* pCert): + _pCert(pCert) +{ + poco_check_ptr(_pCert); + + init(); +} + + +X509Certificate::X509Certificate(X509* pCert, bool shared): + _pCert(pCert) +{ + poco_check_ptr(_pCert); + + if (shared) + { + _pCert->references++; + } + + init(); +} + + +X509Certificate::X509Certificate(const X509Certificate& cert): + _issuerName(cert._issuerName), + _subjectName(cert._subjectName), + _pCert(cert._pCert) +{ + _pCert = X509_dup(_pCert); +} + + +X509Certificate& X509Certificate::operator = (const X509Certificate& cert) +{ + X509Certificate tmp(cert); + swap(tmp); + return *this; +} + + +void X509Certificate::swap(X509Certificate& cert) +{ + using std::swap; + swap(cert._issuerName, _issuerName); + swap(cert._subjectName, _subjectName); + swap(cert._pCert, _pCert); +} + + +X509Certificate::~X509Certificate() +{ + X509_free(_pCert); +} + + +void X509Certificate::load(std::istream& istr) +{ + poco_assert (!_pCert); + + std::stringstream certStream; + Poco::StreamCopier::copyStream(istr, certStream); + std::string cert = certStream.str(); + + BIO *pBIO = BIO_new_mem_buf(const_cast(cert.data()), static_cast(cert.size())); + if (!pBIO) throw Poco::IOException("Cannot create BIO for reading certificate"); + _pCert = PEM_read_bio_X509(pBIO, 0, 0, 0); + BIO_free(pBIO); + + if (!_pCert) throw Poco::IOException("Faild to load certificate from stream"); + + init(); +} + + +void X509Certificate::load(const std::string& path) +{ + poco_assert (!_pCert); + + BIO *pBIO = BIO_new(BIO_s_file()); + if (!pBIO) throw Poco::IOException("Cannot create BIO for reading certificate file", path); + if (!BIO_read_filename(pBIO, path.c_str())) + { + BIO_free(pBIO); + throw Poco::OpenFileException("Cannot open certificate file for reading", path); + } + + _pCert = PEM_read_bio_X509(pBIO, 0, 0, 0); + BIO_free(pBIO); + + if (!_pCert) throw Poco::ReadFileException("Faild to load certificate from", path); + + init(); +} + + +void X509Certificate::save(std::ostream& stream) const +{ + BIO *pBIO = BIO_new(BIO_s_mem()); + if (!pBIO) throw Poco::IOException("Cannot create BIO for writing certificate"); + try + { + if (!PEM_write_bio_X509(pBIO, _pCert)) + throw Poco::IOException("Failed to write certificate to stream"); + + char *pData; + long size; + size = BIO_get_mem_data(pBIO, &pData); + stream.write(pData, size); + } + catch (...) + { + BIO_free(pBIO); + throw; + } + BIO_free(pBIO); +} + + +void X509Certificate::save(const std::string& path) const +{ + BIO *pBIO = BIO_new(BIO_s_file()); + if (!pBIO) throw Poco::IOException("Cannot create BIO for reading certificate file", path); + if (!BIO_write_filename(pBIO, const_cast(path.c_str()))) + { + BIO_free(pBIO); + throw Poco::CreateFileException("Cannot create certificate file", path); + } + try + { + if (!PEM_write_bio_X509(pBIO, _pCert)) + throw Poco::WriteFileException("Failed to write certificate to file", path); + } + catch (...) + { + BIO_free(pBIO); + throw; + } + BIO_free(pBIO); +} + + +void X509Certificate::init() +{ + char buffer[NAME_BUFFER_SIZE]; + X509_NAME_oneline(X509_get_issuer_name(_pCert), buffer, sizeof(buffer)); + _issuerName = buffer; + X509_NAME_oneline(X509_get_subject_name(_pCert), buffer, sizeof(buffer)); + _subjectName = buffer; +} + + +std::string X509Certificate::commonName() const +{ + return subjectName(NID_COMMON_NAME); +} + + +std::string X509Certificate::issuerName(NID nid) const +{ + if (X509_NAME* issuer = X509_get_issuer_name(_pCert)) + { + char buffer[NAME_BUFFER_SIZE]; + X509_NAME_get_text_by_NID(issuer, nid, buffer, sizeof(buffer)); + return std::string(buffer); + } + else return std::string(); +} + + +std::string X509Certificate::subjectName(NID nid) const +{ + if (X509_NAME* subj = X509_get_subject_name(_pCert)) + { + char buffer[NAME_BUFFER_SIZE]; + X509_NAME_get_text_by_NID(subj, nid, buffer, sizeof(buffer)); + return std::string(buffer); + } + else return std::string(); +} + + +void X509Certificate::extractNames(std::string& cmnName, std::set& domainNames) const +{ + domainNames.clear(); + if (STACK_OF(GENERAL_NAME)* names = static_cast(X509_get_ext_d2i(_pCert, NID_subject_alt_name, 0, 0))) + { + for (int i = 0; i < sk_GENERAL_NAME_num(names); ++i) + { + const GENERAL_NAME* name = sk_GENERAL_NAME_value(names, i); + if (name->type == GEN_DNS) + { + const char* data = reinterpret_cast(ASN1_STRING_data(name->d.ia5)); + std::size_t len = ASN1_STRING_length(name->d.ia5); + domainNames.insert(std::string(data, len)); + } + } + GENERAL_NAMES_free(names); + } + + cmnName = commonName(); + if (!cmnName.empty() && domainNames.empty()) + { + domainNames.insert(cmnName); + } +} + + +Poco::DateTime X509Certificate::validFrom() const +{ + ASN1_TIME* certTime = X509_get_notBefore(_pCert); + std::string dateTime(reinterpret_cast(certTime->data)); + int tzd; + return DateTimeParser::parse("%y%m%d%H%M%S", dateTime, tzd); +} + + +Poco::DateTime X509Certificate::expiresOn() const +{ + ASN1_TIME* certTime = X509_get_notAfter(_pCert); + std::string dateTime(reinterpret_cast(certTime->data)); + int tzd; + return DateTimeParser::parse("%y%m%d%H%M%S", dateTime, tzd); +} + + +bool X509Certificate::issuedBy(const X509Certificate& issuerCertificate) const +{ + X509* pCert = const_cast(_pCert); + X509* pIssuerCert = const_cast(issuerCertificate.certificate()); + EVP_PKEY* pIssuerPublicKey = X509_get_pubkey(pIssuerCert); + if (!pIssuerPublicKey) throw Poco::InvalidArgumentException("Issuer certificate has no public key"); + int rc = X509_verify(pCert, pIssuerPublicKey); + EVP_PKEY_free(pIssuerPublicKey); + return rc != 0; +} + + +} } // namespace Poco::Crypto diff --git a/Crypto/testsuite/Makefile b/Crypto/testsuite/Makefile new file mode 100644 index 000000000..7687e0142 --- /dev/null +++ b/Crypto/testsuite/Makefile @@ -0,0 +1,20 @@ +# +# Makefile +# +# $Id: //poco/1.4/Crypto/testsuite/Makefile#1 $ +# +# Makefile for Poco Crypto testsuite +# + +include $(POCO_BASE)/build/rules/global + +SYSLIBS += -lssl -lcrypto + +objects = CryptoTestSuite Driver \ + CryptoTest RSATest + +target = testrunner +target_version = 1 +target_libs = PocoCrypto PocoFoundation CppUnit + +include $(POCO_BASE)/build/rules/exec diff --git a/Crypto/testsuite/TestSuite.progen b/Crypto/testsuite/TestSuite.progen new file mode 100644 index 000000000..0ac15ac2f --- /dev/null +++ b/Crypto/testsuite/TestSuite.progen @@ -0,0 +1,16 @@ +vc.project.guid = C1B1BB96-5198-48EB-AB48-9A0A0B54FB15 +vc.project.name = TestSuite +vc.project.target = TestSuite +vc.project.type = testsuite +vc.project.pocobase = ..\\.. +vc.project.platforms = Win32, x64, WinCE +vc.project.configurations = debug_shared, release_shared, debug_static_mt, release_static_mt, debug_static_md, release_static_md +vc.project.prototype = TestSuite_vs90.vcproj +vc.project.compiler.include = ..\\..\\Foundation\\include +vc.project.linker.dependencies = ws2_32.lib iphlpapi.lib +vc.project.linker.dependencies.debug_shared = libeay32.lib ssleay32.lib +vc.project.linker.dependencies.release_shared = libeay32.lib ssleay32.lib +vc.project.linker.dependencies.debug_static_md = libeay32.lib ssleay32.lib +vc.project.linker.dependencies.release_static_md = libeay32.lib ssleay32.lib +vc.project.linker.dependencies.debug_static_mt = libeay32mtd.lib ssleay32mtd.lib Crypt32.lib +vc.project.linker.dependencies.release_static_mt = libeay32mt.lib ssleay32mt.lib Crypt32.lib diff --git a/Crypto/testsuite/TestSuite.vmsbuild b/Crypto/testsuite/TestSuite.vmsbuild new file mode 100644 index 000000000..fcf8fa0ef --- /dev/null +++ b/Crypto/testsuite/TestSuite.vmsbuild @@ -0,0 +1,9 @@ +# +# TestSuite.vmsbuild +# +# $Id: //poco/Main/template/TestSuite.vmsbuild#3 $ +# +EXE=TestRunner +CryptoTestSuite +Driver + diff --git a/Crypto/testsuite/TestSuite_CE_VS90.vcproj b/Crypto/testsuite/TestSuite_CE_VS90.vcproj new file mode 100644 index 000000000..0eb956439 --- /dev/null +++ b/Crypto/testsuite/TestSuite_CE_VS90.vcproj @@ -0,0 +1,499 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crypto/testsuite/TestSuite_VS71.vcproj b/Crypto/testsuite/TestSuite_VS71.vcproj new file mode 100644 index 000000000..783b1fd8f --- /dev/null +++ b/Crypto/testsuite/TestSuite_VS71.vcproj @@ -0,0 +1,434 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crypto/testsuite/TestSuite_VS80.vcproj b/Crypto/testsuite/TestSuite_VS80.vcproj new file mode 100644 index 000000000..3dc062dd2 --- /dev/null +++ b/Crypto/testsuite/TestSuite_VS80.vcproj @@ -0,0 +1,474 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crypto/testsuite/TestSuite_VS90.vcproj b/Crypto/testsuite/TestSuite_VS90.vcproj new file mode 100644 index 000000000..4d7ad4958 --- /dev/null +++ b/Crypto/testsuite/TestSuite_VS90.vcproj @@ -0,0 +1,474 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crypto/testsuite/TestSuite_vs100.vcxproj b/Crypto/testsuite/TestSuite_vs100.vcxproj new file mode 100644 index 000000000..511488245 --- /dev/null +++ b/Crypto/testsuite/TestSuite_vs100.vcxproj @@ -0,0 +1,315 @@ + + + + + debug_shared + Win32 + + + debug_static_md + Win32 + + + debug_static_mt + Win32 + + + release_shared + Win32 + + + release_static_md + Win32 + + + release_static_mt + Win32 + + + + TestSuite + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15} + TestSuite + Win32Proj + + + + Application + Dynamic + MultiByte + + + Application + Dynamic + MultiByte + + + Application + Static + MultiByte + + + Application + Static + MultiByte + + + Application + Dynamic + MultiByte + + + Application + Dynamic + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin\ + obj\$(Configuration)\ + true + bin\ + obj\$(Configuration)\ + false + bin\static_mt\ + obj\$(Configuration)\ + true + bin\static_mt\ + obj\$(Configuration)\ + false + bin\static_md\ + obj\$(Configuration)\ + true + bin\static_md\ + obj\$(Configuration)\ + false + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;C:\OpenSSL\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + CppUnitd.lib;WinTestRunnerd.lib;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + bin\TestSuited.exe + ..\..\lib;C:\OpenSSL\lib;%(AdditionalLibraryDirectories) + true + true + bin\TestSuited.pdb + Windows + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;C:\OpenSSL\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + CppUnit.lib;WinTestRunner.lib;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + bin\TestSuite.exe + ..\..\lib;C:\OpenSSL\lib;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX86 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;C:\OpenSSL\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;%(AdditionalDependencies) + bin\static_mt\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + nafxcwd.lib;libcmtd.lib;%(IgnoreSpecificDefaultLibraries) + true + true + bin\static_mt\TestSuited.pdb + Windows + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;C:\OpenSSL\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;%(AdditionalDependencies) + bin\static_mt\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + nafxcw.lib;libcmt.lib;%(IgnoreSpecificDefaultLibraries) + false + Windows + true + true + MachineX86 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;C:\OpenSSL\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + bin\static_md\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\TestSuited.pdb + Windows + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;C:\OpenSSL\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + bin\static_md\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX86 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Crypto/testsuite/TestSuite_vs100.vcxproj.filters b/Crypto/testsuite/TestSuite_vs100.vcxproj.filters new file mode 100644 index 000000000..602a5e0a7 --- /dev/null +++ b/Crypto/testsuite/TestSuite_vs100.vcxproj.filters @@ -0,0 +1,54 @@ + + + + + {f51ea1c6-6658-406b-865b-fe589b2c895d} + + + {7359f2ae-daac-4520-a8a1-b351abb9365b} + + + {ea8f7662-085b-475d-8a09-ef1e55af57a3} + + + {8cfbbfdc-308e-42fc-ae9d-64cbc374a417} + + + {52bafc82-a432-498f-9424-871507cd38e5} + + + {22eae798-ed3f-409d-a1a3-8fbb8c18aafb} + + + {d962a46e-db92-47d9-9a10-c0127e4eec28} + + + {4511d576-4486-42c7-95f0-8cd2b6e78f36} + + + + + Crypto\Header Files + + + Crypto\Header Files + + + _Suite\Header Files + + + + + Crypto\Source Files + + + Crypto\Source Files + + + _Suite\Source Files + + + _Driver\Source Files + + + \ No newline at end of file diff --git a/Crypto/testsuite/TestSuite_x64_vs100.vcxproj b/Crypto/testsuite/TestSuite_x64_vs100.vcxproj new file mode 100644 index 000000000..55858a308 --- /dev/null +++ b/Crypto/testsuite/TestSuite_x64_vs100.vcxproj @@ -0,0 +1,315 @@ + + + + + debug_shared + x64 + + + debug_static_md + x64 + + + debug_static_mt + x64 + + + release_shared + x64 + + + release_static_md + x64 + + + release_static_mt + x64 + + + + TestSuite + {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15} + TestSuite + Win32Proj + + + + Application + Dynamic + MultiByte + + + Application + Dynamic + MultiByte + + + Application + Static + MultiByte + + + Application + Static + MultiByte + + + Application + Dynamic + MultiByte + + + Application + Dynamic + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + bin64\ + obj64\$(Configuration)\ + true + bin64\ + obj64\$(Configuration)\ + false + bin64\static_mt\ + obj64\$(Configuration)\ + true + bin64\static_mt\ + obj64\$(Configuration)\ + false + bin64\static_md\ + obj64\$(Configuration)\ + true + bin64\static_md\ + obj64\$(Configuration)\ + false + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + CppUnitd.lib;WinTestRunnerd.lib;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + bin64\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\TestSuited.pdb + Windows + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + CppUnit.lib;WinTestRunner.lib;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + bin64\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + CppUnitmtd.lib;WinTestRunnermtd.lib;iphlpapi.lib;winmm.lib;nafxcwd.lib;libcmtd.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;libeay32mtd.lib;ssleay32mtd.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\static_mt\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + nafxcwd.lib;libcmtd.lib;%(IgnoreSpecificDefaultLibraries) + true + true + bin64\static_mt\TestSuited.pdb + Windows + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + CppUnitmt.lib;WinTestRunnermt.lib;iphlpapi.lib;winmm.lib;nafxcw.lib;libcmt.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;libeay32mt.lib;ssleay32mt.lib;Crypt32.lib;%(AdditionalDependencies) + bin64\static_mt\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + nafxcw.lib;libcmt.lib;%(IgnoreSpecificDefaultLibraries) + false + Windows + true + true + MachineX64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + CppUnitmdd.lib;WinTestRunnermdd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + bin64\static_md\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\TestSuited.pdb + Windows + MachineX64 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + CppUnitmd.lib;WinTestRunnermd.lib;iphlpapi.lib;winmm.lib;WinTestRunner.res;ws2_32.lib;iphlpapi.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies) + bin64\static_md\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Windows + true + true + MachineX64 + + + + + + + + + + + + + + + + diff --git a/Crypto/testsuite/TestSuite_x64_vs100.vcxproj.filters b/Crypto/testsuite/TestSuite_x64_vs100.vcxproj.filters new file mode 100644 index 000000000..7cfa33999 --- /dev/null +++ b/Crypto/testsuite/TestSuite_x64_vs100.vcxproj.filters @@ -0,0 +1,54 @@ + + + + + {136a6e0f-3cda-4880-ab48-6d5232fd2f54} + + + {f072cbb0-dda7-4ac9-b96e-19fa83f85e78} + + + {eb17676c-5b20-4428-8484-737bb8629b02} + + + {556d1112-4d34-4ee0-9b45-8c04b543ada8} + + + {6ca0118e-d58d-4634-a06c-392c19bc0464} + + + {f65bb8aa-48b4-4e8f-abdf-f8852bfa1db7} + + + {87d8d807-8d0a-4fab-8296-4036f1673a96} + + + {a8e1141a-f7a0-495e-aca0-85a3e85c80c1} + + + + + Crypto\Header Files + + + Crypto\Header Files + + + _Suite\Header Files + + + + + Crypto\Source Files + + + Crypto\Source Files + + + _Suite\Source Files + + + _Driver\Source Files + + + \ No newline at end of file diff --git a/Crypto/testsuite/TestSuite_x64_vs90.vcproj b/Crypto/testsuite/TestSuite_x64_vs90.vcproj new file mode 100644 index 000000000..036a8f602 --- /dev/null +++ b/Crypto/testsuite/TestSuite_x64_vs90.vcproj @@ -0,0 +1,474 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Crypto/testsuite/src/CryptoTest.cpp b/Crypto/testsuite/src/CryptoTest.cpp new file mode 100644 index 000000000..c7c783194 --- /dev/null +++ b/Crypto/testsuite/src/CryptoTest.cpp @@ -0,0 +1,225 @@ +// +// CryptoTest.cpp +// +// $Id: //poco/1.4/Crypto/testsuite/src/CryptoTest.cpp#2 $ +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "CryptoTest.h" +#include "CppUnit/TestCaller.h" +#include "CppUnit/TestSuite.h" +#include "Poco/Crypto/CipherFactory.h" +#include "Poco/Crypto/Cipher.h" +#include "Poco/Crypto/CipherKey.h" +#include "Poco/Crypto/X509Certificate.h" +#include "Poco/Crypto/CryptoStream.h" +#include "Poco/StreamCopier.h" +#include + + +using namespace Poco::Crypto; + + +static const std::string APPINF_PEM( + "-----BEGIN CERTIFICATE-----\n" + "MIIESzCCAzOgAwIBAgIBATALBgkqhkiG9w0BAQUwgdMxEzARBgNVBAMMCmFwcGlu\n" + "Zi5jb20xNjA0BgNVBAoMLUFwcGxpZWQgSW5mb3JtYXRpY3MgU29mdHdhcmUgRW5n\n" + "aW5lZXJpbmcgR21iSDEUMBIGA1UECwwLRGV2ZWxvcG1lbnQxEjAQBgNVBAgMCUNh\n" + "cmludGhpYTELMAkGA1UEBhMCQVQxHjAcBgNVBAcMFVN0LiBKYWtvYiBpbSBSb3Nl\n" + "bnRhbDEtMCsGCSqGSIb3DQEJARYeZ3VlbnRlci5vYmlsdHNjaG5pZ0BhcHBpbmYu\n" + "Y29tMB4XDTA5MDUwNzE0NTY1NloXDTI5MDUwMjE0NTY1NlowgdMxEzARBgNVBAMM\n" + "CmFwcGluZi5jb20xNjA0BgNVBAoMLUFwcGxpZWQgSW5mb3JtYXRpY3MgU29mdHdh\n" + "cmUgRW5naW5lZXJpbmcgR21iSDEUMBIGA1UECwwLRGV2ZWxvcG1lbnQxEjAQBgNV\n" + "BAgMCUNhcmludGhpYTELMAkGA1UEBhMCQVQxHjAcBgNVBAcMFVN0LiBKYWtvYiBp\n" + "bSBSb3NlbnRhbDEtMCsGCSqGSIb3DQEJARYeZ3VlbnRlci5vYmlsdHNjaG5pZ0Bh\n" + "cHBpbmYuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA89GolWCR\n" + "KtLQclJ2M2QtpFqzNC54hUQdR6n8+DAeruH9WFwLSdWW2fEi+jrtd/WEWCdt4PxX\n" + "F2/eBYeURus7Hg2ZtJGDd3je0+Ygsv7+we4cMN/knaBY7rATqhmnZWk+yBpkf5F2\n" + "IHp9gBxUaJWmt/bq3XrvTtzrDXpCd4zg4zPXZ8IC8ket5o3K2vnkAOsIsgN+Ffqd\n" + "4GjF4dsblG6u6E3VarGRLwGtgB8BAZOA/33mV4FHSMkc4OXpAChaK3tM8YhrLw+m\n" + "XtsfqDiv1825S6OWFCKGj/iX8X2QAkrdB63vXCSpb3de/ByIUfp31PpMlMh6dKo1\n" + "vf7yj0nb2w0utQIDAQABoyowKDAOBgNVHQ8BAf8EBAMCB4AwFgYDVR0lAQH/BAww\n" + "CgYIKwYBBQUHAwMwDQYJKoZIhvcNAQEFBQADggEBAM0cpfb4BgiU/rkYe121P581\n" + "ftg5Ck1PYYda1Fy/FgzbgJh2AwVo/6sn6GF79/QkEcWEgtCMNNO3LMTTddUUApuP\n" + "jnEimyfmUhIThyud/vryzTMNa/eZMwaAqUQWqLf+AwgqjUsBSMenbSHavzJOpsvR\n" + "LI0PQ1VvqB+3UGz0JUnBJiKvHs83Fdm4ewPAf3M5fGcIa+Fl2nU5Plzwzskj84f6\n" + "73ZlEEi3aW9JieNy7RWsMM+1E8Sj2CGRZC4BM9V1Fgnsh4+VHX8Eu7eHucvfeIYx\n" + "3mmLMoK4sCayL/FGhrUDw5AkWb8tKNpRXY+W60Et281yxQSeWLPIbatVzIWI0/M=\n" + "-----END CERTIFICATE-----\n" +); + + +CryptoTest::CryptoTest(const std::string& name): CppUnit::TestCase(name) +{ +} + + +CryptoTest::~CryptoTest() +{ +} + + +void CryptoTest::testEncryptDecrypt() +{ + Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(CipherKey("aes256")); + + for (std::size_t n = 1; n < MAX_DATA_SIZE; n++) + { + std::string in(n, 'x'); + std::string out = pCipher->encryptString(in, Cipher::ENC_NONE); + std::string result = pCipher->decryptString(out, Cipher::ENC_NONE); + poco_assert (in == result); + } + + for (std::size_t n = 1; n < MAX_DATA_SIZE; n++) + { + std::string in(n, 'x'); + std::string out = pCipher->encryptString(in, Cipher::ENC_BASE64); + std::string result = pCipher->decryptString(out, Cipher::ENC_BASE64); + poco_assert (in == result); + } + + for (std::size_t n = 1; n < MAX_DATA_SIZE; n++) + { + std::string in(n, 'x'); + std::string out = pCipher->encryptString(in, Cipher::ENC_BINHEX); + std::string result = pCipher->decryptString(out, Cipher::ENC_BINHEX); + poco_assert (in == result); + } +} + + +void CryptoTest::testEncryptDecryptWithSalt() +{ + Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(CipherKey("aes256", "simplepwd", "Too much salt")); + Cipher::Ptr pCipher2 = CipherFactory::defaultFactory().createCipher(CipherKey("aes256", "simplepwd", "Too much salt")); + + for (std::size_t n = 1; n < MAX_DATA_SIZE; n++) + { + std::string in(n, 'x'); + std::string out = pCipher->encryptString(in, Cipher::ENC_NONE); + std::string result = pCipher2->decryptString(out, Cipher::ENC_NONE); + poco_assert (in == result); + } + + for (std::size_t n = 1; n < MAX_DATA_SIZE; n++) + { + std::string in(n, 'x'); + std::string out = pCipher->encryptString(in, Cipher::ENC_BASE64); + std::string result = pCipher2->decryptString(out, Cipher::ENC_BASE64); + poco_assert (in == result); + } + + for (std::size_t n = 1; n < MAX_DATA_SIZE; n++) + { + std::string in(n, 'x'); + std::string out = pCipher->encryptString(in, Cipher::ENC_BINHEX); + std::string result = pCipher2->decryptString(out, Cipher::ENC_BINHEX); + poco_assert (in == result); + } +} + + +void CryptoTest::testStreams() +{ + Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(CipherKey("aes256")); + + static const std::string SECRET_MESSAGE = "This is a secret message. Don't tell anyone."; + + std::stringstream sstr; + EncryptingOutputStream encryptor(sstr, *pCipher); + encryptor << SECRET_MESSAGE; + encryptor.close(); + + DecryptingInputStream decryptor(sstr, *pCipher); + std::string result; + Poco::StreamCopier::copyToString(decryptor, result); + + assert (result == SECRET_MESSAGE); + assert (decryptor.eof()); + assert (!decryptor.bad()); + + + std::istringstream emptyStream; + DecryptingInputStream badDecryptor(emptyStream, *pCipher); + Poco::StreamCopier::copyToString(badDecryptor, result); + + assert (badDecryptor.fail()); + assert (badDecryptor.bad()); + assert (!badDecryptor.eof()); +} + + +void CryptoTest::testCertificate() +{ + std::istringstream certStream(APPINF_PEM); + X509Certificate cert(certStream); + + std::string subjectName(cert.subjectName()); + std::string issuerName(cert.issuerName()); + std::string commonName(cert.commonName()); + std::string country(cert.subjectName(X509Certificate::NID_COUNTRY)); + std::string localityName(cert.subjectName(X509Certificate::NID_LOCALITY_NAME)); + std::string stateOrProvince(cert.subjectName(X509Certificate::NID_STATE_OR_PROVINCE)); + std::string organizationName(cert.subjectName(X509Certificate::NID_ORGANIZATION_NAME)); + std::string organizationUnitName(cert.subjectName(X509Certificate::NID_ORGANIZATION_UNIT_NAME)); + + assert (subjectName == "/CN=appinf.com/O=Applied Informatics Software Engineering GmbH/OU=Development/ST=Carinthia/C=AT/L=St. Jakob im Rosental/emailAddress=guenter.obiltschnig@appinf.com"); + assert (issuerName == subjectName); + assert (commonName == "appinf.com"); + assert (country == "AT"); + assert (localityName == "St. Jakob im Rosental"); + assert (stateOrProvince == "Carinthia"); + assert (organizationName == "Applied Informatics Software Engineering GmbH"); + assert (organizationUnitName == "Development"); + + assert (cert.issuedBy(cert)); +} + + +void CryptoTest::setUp() +{ +} + + +void CryptoTest::tearDown() +{ +} + + +CppUnit::Test* CryptoTest::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("CryptoTest"); + + CppUnit_addTest(pSuite, CryptoTest, testEncryptDecrypt); + CppUnit_addTest(pSuite, CryptoTest, testEncryptDecryptWithSalt); + CppUnit_addTest(pSuite, CryptoTest, testStreams); + CppUnit_addTest(pSuite, CryptoTest, testCertificate); + + return pSuite; +} diff --git a/Crypto/testsuite/src/CryptoTest.h b/Crypto/testsuite/src/CryptoTest.h new file mode 100644 index 000000000..8ee996133 --- /dev/null +++ b/Crypto/testsuite/src/CryptoTest.h @@ -0,0 +1,68 @@ +// +// CryptoTest.h +// +// $Id: //poco/1.4/Crypto/testsuite/src/CryptoTest.h#2 $ +// +// Definition of the CryptoTest class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CryptoTest_INCLUDED +#define CryptoTest_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "CppUnit/TestCase.h" + + +class CryptoTest: public CppUnit::TestCase +{ +public: + enum + { + MAX_DATA_SIZE = 10000 + }; + + CryptoTest(const std::string& name); + ~CryptoTest(); + + void testEncryptDecrypt(); + void testEncryptDecryptWithSalt(); + void testStreams(); + void testCertificate(); + + void setUp(); + void tearDown(); + + static CppUnit::Test* suite(); + +private: +}; + + +#endif // CryptoTest_INCLUDED diff --git a/Crypto/testsuite/src/CryptoTestSuite.cpp b/Crypto/testsuite/src/CryptoTestSuite.cpp new file mode 100644 index 000000000..d9e855e95 --- /dev/null +++ b/Crypto/testsuite/src/CryptoTestSuite.cpp @@ -0,0 +1,46 @@ +// +// CryptoTestSuite.cpp +// +// $Id: //poco/1.4/Crypto/testsuite/src/CryptoTestSuite.cpp#1 $ +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "CryptoTestSuite.h" +#include "CryptoTest.h" +#include "RSATest.h" + + +CppUnit::Test* CryptoTestSuite::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("CryptoTestSuite"); + + pSuite->addTest(CryptoTest::suite()); + pSuite->addTest(RSATest::suite()); + + return pSuite; +} diff --git a/Crypto/testsuite/src/CryptoTestSuite.h b/Crypto/testsuite/src/CryptoTestSuite.h new file mode 100644 index 000000000..c054b1ff2 --- /dev/null +++ b/Crypto/testsuite/src/CryptoTestSuite.h @@ -0,0 +1,49 @@ +// +// CryptoTestSuite.h +// +// $Id: //poco/1.4/Crypto/testsuite/src/CryptoTestSuite.h#1 $ +// +// Definition of the CryptoTestSuite class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef CryptoTestSuite_INCLUDED +#define CryptoTestSuite_INCLUDED + + +#include "CppUnit/TestSuite.h" + + +class CryptoTestSuite +{ +public: + static CppUnit::Test* suite(); +}; + + +#endif // CryptoTestSuite_INCLUDED diff --git a/Crypto/testsuite/src/Driver.cpp b/Crypto/testsuite/src/Driver.cpp new file mode 100644 index 000000000..5cc1360cb --- /dev/null +++ b/Crypto/testsuite/src/Driver.cpp @@ -0,0 +1,65 @@ +// +// Driver.cpp +// +// $Id: //poco/1.4/Crypto/testsuite/src/Driver.cpp#1 $ +// +// Console-based test driver for Poco Crypto. +// +// Copyright (c) 2007, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "CppUnit/TestRunner.h" +#include "CryptoTestSuite.h" +#include "Poco/Crypto/Crypto.h" + + +class CryptoInitializer +{ +public: + CryptoInitializer() + { + Poco::Crypto::initializeCrypto(); + } + + ~CryptoInitializer() + { + Poco::Crypto::uninitializeCrypto(); + } +}; + + +int main(int ac, char **av) +{ + CryptoInitializer ci; + + std::vector args; + for (int i = 0; i < ac; ++i) + args.push_back(std::string(av[i])); + CppUnit::TestRunner runner; + runner.addTest("CryptoTestSuite", CryptoTestSuite::suite()); + return runner.run(args) ? 0 : 1; +} diff --git a/Crypto/testsuite/src/RSATest.cpp b/Crypto/testsuite/src/RSATest.cpp new file mode 100644 index 000000000..556e9fd99 --- /dev/null +++ b/Crypto/testsuite/src/RSATest.cpp @@ -0,0 +1,253 @@ +// +// RSATest.cpp +// +// $Id: //poco/1.4/Crypto/testsuite/src/RSATest.cpp#1 $ +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "RSATest.h" +#include "CppUnit/TestCaller.h" +#include "CppUnit/TestSuite.h" +#include "Poco/Crypto/RSADigestEngine.h" +#include "Poco/Crypto/CipherFactory.h" +#include "Poco/Crypto/Cipher.h" +#include "Poco/Crypto/X509Certificate.h" +#include + + +using namespace Poco::Crypto; + + +static const std::string anyPem( + "-----BEGIN CERTIFICATE-----\r\n" + "MIICaDCCAdECCQCzfxSsk7yaLjANBgkqhkiG9w0BAQUFADBzMQswCQYDVQQGEwJB\r\n" + "VDESMBAGA1UECBMJQ2FyaW50aGlhMRIwEAYDVQQHEwlTdC4gSmFrb2IxDzANBgNV\r\n" + "BAoTBkFwcEluZjEPMA0GA1UEAxMGQXBwSW5mMRowGAYJKoZIhvcNAQkBFgthcHBA\r\n" + "aW5mLmNvbTAeFw0wNjAzMDExMzA3MzFaFw0wNjAzMzExMzA3MzFaMH4xCzAJBgNV\r\n" + "BAYTAkFUMRIwEAYDVQQIEwlDYXJpbnRoaWExETAPBgNVBAcTCFN0IEpha29iMRww\r\n" + "GgYDVQQKExNBcHBsaWVkIEluZm9ybWF0aWNzMQowCAYDVQQDFAEqMR4wHAYJKoZI\r\n" + "hvcNAQkBFg9pbmZvQGFwcGluZi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ\r\n" + "AoGBAJHGyXDHyCYoWz+65ltNwwZbhwOGnxr9P1WMATuFJh0bPBZxKbZRdbTm9KhZ\r\n" + "OlvsEIsfgiYdsxURYIqXfEgISYLZcZY0pQwGEOmB+0NeC/+ENSfOlNSthx6zSVlc\r\n" + "zhJ7+dJOGwepHAiLr1fRuc5jogYLraE+lKTnqAAFfzwvti77AgMBAAEwDQYJKoZI\r\n" + "hvcNAQEFBQADgYEAY/ZoeY1ukkEJX7259NeoVM0oahlulWV0rlCqyaeosOiDORPT\r\n" + "m6X1w/5MTCf9VyaD1zukoSZ4QqNVjHFXcXidbB7Tgt3yRuZ5PC5LIFCDPv9mgPne\r\n" + "mUA70yfctNfza2z3ZiQ6NDkW3mZX+1tmxYIrJQIrkVeYeqf1Gh2nyZrUMcE=\r\n" + "-----END CERTIFICATE-----\r\n" + "-----BEGIN RSA PRIVATE KEY-----\r\n" + "Proc-Type: 4,ENCRYPTED\r\n" + "DEK-Info: DES-EDE3-CBC,E7AE93C9E49184EA\r\n" + "\r\n" + "A2IqzNcWs+I5vzV+i+woDk56+yr58eU0Onw8eEvXkLjnSc58JU4327IF7yUbKWdW\r\n" + "Q7BYGGOkVFiZ7ANOwviDg5SUhxRDWCcW8dS6/p1vfdQ1C3qj2OwJjkpg0aDBIzJn\r\n" + "FzgguT3MF3ama77vxv0S3kOfmCj62MLqPGpj5pQ0/1hefRFbL8oAX8bXUN7/rmGM\r\n" + "Zc0QyzFZv2iQ04dY/6TNclwKPB4H0On4K+8BMs3PRkWA0clCaQaFO2+iwnk3XZfe\r\n" + "+MsKUEbLCpAQeYspYv1cw38dCdWq1KTP5aJk+oXgwjfX5cAaPTz74NTqTIsCcaTD\r\n" + "3vy7ukJYFlDR9Kyo7z8rMazYrKJslhnuRH0BhK9st9McwL957j5tZmrKyraCcmCx\r\n" + "dMAGcsis1va3ayYZpIpFqA4EhYrTM+6N8ZRfUap20+b5IQwHfTQDejUhL6rBwy7j\r\n" + "Ti5yD83/itoOMyXq2sV/XWfVD5zk/P5iv22O1EAQMhhnPB9K/I/JhuSGQJfn3cNh\r\n" + "ykOUYT0+vDeSeEVa+FVEP1W35G0alTbKbNs5Tb8KxJ3iDJUxokM//SvPXZy9hOVX\r\n" + "Y05imB04J15DaGbAHlNzunhuJi7121WV/JRXZRW9diE6hwpD8rwqi3FMuRUmy7U9\r\n" + "aFA5poKRAYlo9YtZ3YpFyjGKB6MfCQcB2opuSnQ/gbugV41m67uQ4CDwWLaNRkTb\r\n" + "GlsMBNcHnidg15Bsat5HaB7l250ukrI13Uw1MYdDUzaS3gPfw9aC4F2w0p3U+DPH\r\n" + "80/zePxtroR7T4/+rI136Rl+aMXDMOEGCX1TVP8rjuZzuRyUSUKC8Q==\r\n" + "-----END RSA PRIVATE KEY-----\r\n" + "-----BEGIN CERTIFICATE-----\r\n" + "MIICXTCCAcYCCQC1Vk/N8qR4AjANBgkqhkiG9w0BAQUFADBzMQswCQYDVQQGEwJB\r\n" + "VDESMBAGA1UECBMJQ2FyaW50aGlhMRIwEAYDVQQHEwlTdC4gSmFrb2IxDzANBgNV\r\n" + "BAoTBkFwcEluZjEPMA0GA1UEAxMGQXBwSW5mMRowGAYJKoZIhvcNAQkBFgthcHBA\r\n" + "aW5mLmNvbTAeFw0wNjAyMjcxMzI3MThaFw0wNjAzMjkxMzI3MThaMHMxCzAJBgNV\r\n" + "BAYTAkFUMRIwEAYDVQQIEwlDYXJpbnRoaWExEjAQBgNVBAcTCVN0LiBKYWtvYjEP\r\n" + "MA0GA1UEChMGQXBwSW5mMQ8wDQYDVQQDEwZBcHBJbmYxGjAYBgkqhkiG9w0BCQEW\r\n" + "C2FwcEBpbmYuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsFXiPuicN\r\n" + "Im4oJwF8NuaFN+lgYwcZ6dAO3ILIR3kLA2PxF8HSQLfF8J8a4odZhLhctIMAKTxm\r\n" + "k0w8TW5qhL8QLdGzY9vzvkgdKOkan2t3sMeXJAfrM1AphTsmgntAQazGZjOj5p4W\r\n" + "jDnxQ+VXAylqwjHh49eSBxM3wgoscF4iLQIDAQABMA0GCSqGSIb3DQEBBQUAA4GB\r\n" + "AIpfLdXiKchPvFMhQS8xTtXvrw5dVL3yImUMYs4GQi8RrjGmfGB3yMAR7B/b8v4a\r\n" + "+ztfusgWAWiUKuSGTk4S8YB0fsFlmOv0WDr+PyZ4Lui/a8opbyzGE7rqpnF/s0GO\r\n" + "M7uLCNNwIN7WhmxcWV0KZU1wTppoSWPJda1yTbBzF9XP\r\n" + "-----END CERTIFICATE-----\r\n" +); + + +RSATest::RSATest(const std::string& name): CppUnit::TestCase(name) +{ +} + + +RSATest::~RSATest() +{ +} + + +void RSATest::testNewKeys() +{ + RSAKey key(RSAKey::KL_1024, RSAKey::EXP_SMALL); + std::ostringstream strPub; + std::ostringstream strPriv; + key.save(&strPub, &strPriv, "testpwd"); + std::string pubKey = strPub.str(); + std::string privKey = strPriv.str(); + + // now do the round trip + std::istringstream iPub(pubKey); + std::istringstream iPriv(privKey); + RSAKey key2(&iPub, &iPriv, "testpwd"); + + std::istringstream iPriv2(privKey); + RSAKey key3(0, &iPriv2, "testpwd"); + std::ostringstream strPub3; + key3.save(&strPub3); + std::string pubFromPrivate = strPub3.str(); + assert (pubFromPrivate == pubKey); +} + + +void RSATest::testSign() +{ + std::string msg("Test this sign message"); + RSAKey key(RSAKey::KL_2048, RSAKey::EXP_LARGE); + RSADigestEngine eng(key); + eng.update(msg.c_str(), static_cast(msg.length())); + const Poco::DigestEngine::Digest& sig = eng.signature(); + std::string hexDig = Poco::DigestEngine::digestToHex(sig); + + // verify + std::ostringstream strPub; + key.save(&strPub); + std::string pubKey = strPub.str(); + std::istringstream iPub(pubKey); + RSAKey keyPub(&iPub); + RSADigestEngine eng2(key); + eng2.update(msg.c_str(), static_cast(msg.length())); + assert (eng2.verify(sig)); +} + + +void RSATest::testSignManipulated() +{ + std::string msg("Test this sign message"); + std::string msgManip("Test that sign message"); + RSAKey key(RSAKey::KL_2048, RSAKey::EXP_LARGE); + RSADigestEngine eng(key); + eng.update(msg.c_str(), static_cast(msg.length())); + const Poco::DigestEngine::Digest& sig = eng.signature(); + std::string hexDig = Poco::DigestEngine::digestToHex(sig); + + // verify + std::ostringstream strPub; + key.save(&strPub); + std::string pubKey = strPub.str(); + std::istringstream iPub(pubKey); + RSAKey keyPub(&iPub); + RSADigestEngine eng2(key); + eng2.update(msgManip.c_str(), static_cast(msgManip.length())); + assert (!eng2.verify(sig)); +} + + +void RSATest::testRSACipher() +{ + Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(RSAKey(RSAKey::KL_1024, RSAKey::EXP_SMALL)); + for (std::size_t n = 1; n <= 1200; n++) + { + std::string val(n, 'x'); + std::string enc = pCipher->encryptString(val); + std::string dec = pCipher->decryptString(enc); + assert (dec == val); + } +} + + +void RSATest::testRSACipherLarge() +{ + std::vector sizes; + sizes.push_back (2047); + sizes.push_back (2048); + sizes.push_back (2049); + sizes.push_back (4095); + sizes.push_back (4096); + sizes.push_back (4097); + sizes.push_back (8191); + sizes.push_back (8192); + sizes.push_back (8193); + sizes.push_back (16383); + sizes.push_back (16384); + sizes.push_back (16385); + + Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(RSAKey(RSAKey::KL_1024, RSAKey::EXP_SMALL)); + for (std::vector::const_iterator it = sizes.begin(); it != sizes.end(); ++it) + { + std::string val(*it, 'x'); + std::string enc = pCipher->encryptString(val); + std::string dec = pCipher->decryptString(enc); + assert (dec == val); + } +} + + +void RSATest::testCertificate() +{ + std::istringstream str(anyPem); + X509Certificate cert(str); + RSAKey publicKey(cert); + std::istringstream str2(anyPem); + RSAKey privateKey(0, &str2, "test"); + Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(publicKey); + Cipher::Ptr pCipher2 = CipherFactory::defaultFactory().createCipher(privateKey); + std::string val("lets do some encryption"); + + std::string enc = pCipher->encryptString(val); + std::string dec = pCipher2->decryptString(enc); + assert (dec == val); +} + + +void RSATest::setUp() +{ +} + + +void RSATest::tearDown() +{ +} + + +CppUnit::Test* RSATest::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("RSATest"); + + CppUnit_addTest(pSuite, RSATest, testNewKeys); + CppUnit_addTest(pSuite, RSATest, testSign); + CppUnit_addTest(pSuite, RSATest, testSignManipulated); + CppUnit_addTest(pSuite, RSATest, testRSACipher); + CppUnit_addTest(pSuite, RSATest, testRSACipherLarge); + CppUnit_addTest(pSuite, RSATest, testCertificate); + + return pSuite; +} diff --git a/Crypto/testsuite/src/RSATest.h b/Crypto/testsuite/src/RSATest.h new file mode 100644 index 000000000..a710e0627 --- /dev/null +++ b/Crypto/testsuite/src/RSATest.h @@ -0,0 +1,65 @@ +// +// RSATest.h +// +// $Id: //poco/1.4/Crypto/testsuite/src/RSATest.h#1 $ +// +// Definition of the RSATest class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef RSATest_INCLUDED +#define RSATest_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "CppUnit/TestCase.h" + + +class RSATest: public CppUnit::TestCase +{ +public: + RSATest(const std::string& name); + ~RSATest(); + + void testNewKeys(); + void testSign(); + void testSignManipulated(); + void testRSACipher(); + void testRSACipherLarge(); + void testCertificate(); + + void setUp(); + void tearDown(); + + static CppUnit::Test* suite(); + +private: +}; + + +#endif // RSATest_INCLUDED diff --git a/Crypto/testsuite/src/WinCEDriver.cpp b/Crypto/testsuite/src/WinCEDriver.cpp new file mode 100644 index 000000000..dc7dcc425 --- /dev/null +++ b/Crypto/testsuite/src/WinCEDriver.cpp @@ -0,0 +1,70 @@ +// +// WinCEDriver.cpp +// +// $Id: //poco/1.4/Crypto/testsuite/src/WinCEDriver.cpp#1 $ +// +// Console-based test driver for Windows CE. +// +// Copyright (c) 2004-2010, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "CppUnit/TestRunner.h" +#include "CryptoTestSuite.h" +#include "Poco/Crypto/Crypto.h" +#include + + +class CryptoInitializer +{ +public: + CryptoInitializer() + { + Poco::Crypto::initializeCrypto(); + } + + ~CryptoInitializer() + { + Poco::Crypto::uninitializeCrypto(); + } +}; + + +int _tmain(int argc, wchar_t* argv[]) +{ + CryptoInitializer ci; + + std::vector args; + for (int i = 0; i < argc; ++i) + { + char buffer[1024]; + std::wcstombs(buffer, argv[i], sizeof(buffer)); + args.push_back(std::string(buffer)); + } + CppUnit::TestRunner runner; + runner.addTest("CryptoTestSuite", CryptoTestSuite::suite()); + return runner.run(args) ? 0 : 1; +} diff --git a/Crypto/testsuite/src/WinDriver.cpp b/Crypto/testsuite/src/WinDriver.cpp new file mode 100644 index 000000000..ec55c3e83 --- /dev/null +++ b/Crypto/testsuite/src/WinDriver.cpp @@ -0,0 +1,68 @@ +// +// WinDriver.cpp +// +// $Id: //poco/1.4/Crypto/testsuite/src/WinDriver.cpp#1 $ +// +// Windows test driver for Poco Crypto. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#include "WinTestRunner/WinTestRunner.h" +#include "CryptoTestSuite.h" +#include "Poco/Crypto/Crypto.h" + + +class CryptoInitializer +{ +public: + CryptoInitializer() + { + Poco::Crypto::initializeCrypto(); + } + + ~CryptoInitializer() + { + Poco::Crypto::uninitializeCrypto(); + } +}; + + +class TestDriver: public CppUnit::WinTestRunnerApp +{ + void TestMain() + { + CryptoInitializer ci; + + CppUnit::WinTestRunner runner; + runner.addTest(CryptoTestSuite::suite()); + runner.run(); + } +}; + + +TestDriver theDriver; diff --git a/DLLVersion.rc b/DLLVersion.rc new file mode 100644 index 000000000..08811521c --- /dev/null +++ b/DLLVersion.rc @@ -0,0 +1,40 @@ +#ifdef APSTUDIO_INVOKED + #error This file is not editable by Visual C++. +#endif //APSTUDIO_INVOKED + +#include "afxres.h" + +#define POCO_VERSION 1,4,3,0 +#define POCO_VERSION_STR "1.4.3" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION POCO_VERSION + PRODUCTVERSION POCO_VERSION + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "000004b0" + BEGIN + VALUE "CompanyName", "Applied Informatics Software Engineering GmbH" + VALUE "FileDescription", "This file is part of the POCO C++ Libraries." + VALUE "FileVersion", POCO_VERSION_STR + VALUE "InternalName", "POCO" + VALUE "LegalCopyright", "Copyright (C) 2006-2012, Applied Informatics Software Engineering GmbH and Contributors." + VALUE "ProductName", "POCO C++ Libraries - http://pocoproject.org" + VALUE "ProductVersion", POCO_VERSION_STR + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0, 1200 + END +END diff --git a/Data/CMakeLists.txt b/Data/CMakeLists.txt new file mode 100644 index 000000000..d294ee995 --- /dev/null +++ b/Data/CMakeLists.txt @@ -0,0 +1,52 @@ +set(LIBNAME "PocoData") +set(LIBNAME "${LIBNAME}${LIB_EXT}") + +set(SRCS "") +aux_source_directory(src SRCS) +include_directories( SQLite/include ) + +if (NOT POCO_STATIC) + add_definitions(-DData_EXPORTS -DTHREADSAFE -DODBC_EXPORTS -DMySQL_EXPORTS -DSQLite_EXPORTS) +endif (NOT POCO_STATIC) + +add_library( ${LIBNAME} ${LIB_MODE} ${SRCS} ) +set_target_properties( ${LIBNAME} + PROPERTIES + VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION} ) +target_link_libraries( ${LIBNAME} PocoFoundation${LIB_EXT} ) + +install( + DIRECTORY include/Poco + DESTINATION include + PATTERN ".svn" EXCLUDE + ) + +install( + TARGETS ${LIBNAME} + DESTINATION lib + ) + +add_subdirectory( SQLite ) + +if(MYSQL_FOUND) + add_subdirectory( MySQL ) +endif(MYSQL_FOUND) + +include(../contrib/cmake/FindODBC.cmake) + +if(CMAKE_SYSTEM MATCHES "Windows") + message(STATUS "Windows native ODBC Support Enabled") + add_subdirectory( ODBC ) +else () + if ( ${UNIX_ODBC_CONFIG} STREQUAL UNIX_ODBC_CONFIG-NOTFOUND AND ${IODBC_CONFIG} STREQUAL IODBC_CONFIG-NOTFOUND) + message(STATUS "ODBC Support Disabled - no ODBC runtime") + else () + message(STATUS "ODBC Support Enabled") + add_subdirectory( ODBC ) + endif () +endif() + +if (ENABLE_TESTS) + add_subdirectory(samples) + add_subdirectory(testsuite) +endif () diff --git a/Data/Data.progen b/Data/Data.progen new file mode 100644 index 000000000..4f266fa53 --- /dev/null +++ b/Data/Data.progen @@ -0,0 +1,16 @@ +vc.project.guid = 240E83C3-368D-11DB-9FBC-00123FC423B5 +vc.project.name = Data +vc.project.target = Poco${vc.project.name} +vc.project.type = library +vc.project.pocobase = .. +vc.project.outdir = ${vc.project.pocobase} +vc.project.platforms = Win32, x64, WinCE +vc.project.configurations = debug_shared, release_shared, debug_static_mt, release_static_mt, debug_static_md, release_static_md +vc.project.prototype = ${vc.project.name}_vs90.vcproj +vc.project.compiler.include = ..\\Foundation\\include +vc.project.compiler.defines = +vc.project.compiler.defines.shared = ${vc.project.name}_EXPORTS +vc.project.compiler.defines.debug_shared = ${vc.project.compiler.defines.shared} +vc.project.compiler.defines.release_shared = ${vc.project.compiler.defines.shared} +vc.solution.create = true +vc.solution.include = testsuite\\TestSuite diff --git a/Data/Data_VS71.sln b/Data/Data_VS71.sln new file mode 100644 index 000000000..ef2a7988d --- /dev/null +++ b/Data/Data_VS71.sln @@ -0,0 +1,42 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Data", "Data_VS71.vcproj", "{240E83C3-368D-11DB-9FBC-00123FC423B5}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_VS71.vcproj", "{24134877-368D-11DB-9FBC-00123FC423B5}" + ProjectSection(ProjectDependencies) = postProject + {240E83C3-368D-11DB-9FBC-00123FC423B5} = {240E83C3-368D-11DB-9FBC-00123FC423B5} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + debug_shared = debug_shared + debug_static = debug_static + release_shared = release_shared + release_static = release_static + EndGlobalSection + GlobalSection(ProjectDependencies) = postSolution + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared.ActiveCfg = debug_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared.Build.0 = debug_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static.ActiveCfg = debug_static|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static.Build.0 = debug_static|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared.ActiveCfg = release_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared.Build.0 = release_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static.ActiveCfg = release_static|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static.Build.0 = release_static|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.debug_shared.ActiveCfg = debug_shared|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.debug_shared.Build.0 = debug_shared|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.debug_static.ActiveCfg = debug_static|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.debug_static.Build.0 = debug_static|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.release_shared.ActiveCfg = release_shared|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.release_shared.Build.0 = release_shared|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.release_static.ActiveCfg = release_static|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.release_static.Build.0 = release_static|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/Data/Data_VS71.vcproj b/Data/Data_VS71.vcproj new file mode 100644 index 000000000..db4106f15 --- /dev/null +++ b/Data/Data_VS71.vcproj @@ -0,0 +1,540 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Data/Data_VS80.sln b/Data/Data_VS80.sln new file mode 100644 index 000000000..0a5fbee12 --- /dev/null +++ b/Data/Data_VS80.sln @@ -0,0 +1,38 @@ +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual C++ Express 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Data", "Data_VS80.vcproj", "{240E83C3-368D-11DB-9FBC-00123FC423B5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_VS80.vcproj", "{24134877-368D-11DB-9FBC-00123FC423B5}" + ProjectSection(ProjectDependencies) = postProject + {240E83C3-368D-11DB-9FBC-00123FC423B5} = {240E83C3-368D-11DB-9FBC-00123FC423B5} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + debug_static|Win32 = debug_static|Win32 + release_shared|Win32 = release_shared|Win32 + release_static|Win32 = release_static|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static|Win32.ActiveCfg = debug_static|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static|Win32.Build.0 = debug_static|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|Win32.Build.0 = release_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static|Win32.ActiveCfg = release_static|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static|Win32.Build.0 = release_static|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.debug_static|Win32.ActiveCfg = debug_static|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.debug_static|Win32.Build.0 = debug_static|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.release_shared|Win32.Build.0 = release_shared|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.release_static|Win32.ActiveCfg = release_static|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.release_static|Win32.Build.0 = release_static|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Data/Data_VS80.vcproj b/Data/Data_VS80.vcproj new file mode 100644 index 000000000..7cb563635 --- /dev/null +++ b/Data/Data_VS80.vcproj @@ -0,0 +1,721 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Data/Data_VS90.sln b/Data/Data_VS90.sln new file mode 100644 index 000000000..671f6142f --- /dev/null +++ b/Data/Data_VS90.sln @@ -0,0 +1,38 @@ +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual C++ Express 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Data", "Data_VS90.vcproj", "{240E83C3-368D-11DB-9FBC-00123FC423B5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_VS90.vcproj", "{24134877-368D-11DB-9FBC-00123FC423B5}" + ProjectSection(ProjectDependencies) = postProject + {240E83C3-368D-11DB-9FBC-00123FC423B5} = {240E83C3-368D-11DB-9FBC-00123FC423B5} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + debug_static|Win32 = debug_static|Win32 + release_shared|Win32 = release_shared|Win32 + release_static|Win32 = release_static|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static|Win32.ActiveCfg = debug_static|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static|Win32.Build.0 = debug_static|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|Win32.Build.0 = release_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static|Win32.ActiveCfg = release_static|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static|Win32.Build.0 = release_static|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.debug_static|Win32.ActiveCfg = debug_static|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.debug_static|Win32.Build.0 = debug_static|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.release_shared|Win32.Build.0 = release_shared|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.release_static|Win32.ActiveCfg = release_static|Win32 + {24134877-368D-11DB-9FBC-00123FC423B5}.release_static|Win32.Build.0 = release_static|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Data/Data_VS90.vcproj b/Data/Data_VS90.vcproj new file mode 100644 index 000000000..ef7b222c9 --- /dev/null +++ b/Data/Data_VS90.vcproj @@ -0,0 +1,726 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Data/Data_vs100.sln b/Data/Data_vs100.sln new file mode 100644 index 000000000..c75443e3c --- /dev/null +++ b/Data/Data_vs100.sln @@ -0,0 +1,90 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Data", "Data_vs100.vcxproj", "{240E83C3-368D-11DB-9FBC-00123FC423B5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs100.vcxproj", "{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}" + ProjectSection(ProjectDependencies) = postProject + {240E83C3-368D-11DB-9FBC-00123FC423B5} = {240E83C3-368D-11DB-9FBC-00123FC423B5} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + debug_shared|x64 = debug_shared|x64 + debug_static_md|Win32 = debug_static_md|Win32 + debug_static_md|x64 = debug_static_md|x64 + debug_static_mt|Win32 = debug_static_mt|Win32 + debug_static_mt|x64 = debug_static_mt|x64 + release_shared|Win32 = release_shared|Win32 + release_shared|x64 = release_shared|x64 + release_static_md|Win32 = release_static_md|Win32 + release_static_md|x64 = release_static_md|x64 + release_static_mt|Win32 = release_static_mt|Win32 + release_static_mt|x64 = release_static_mt|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|x64.Build.0 = debug_shared|x64 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|Win32.Build.0 = release_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|x64.ActiveCfg = release_shared|x64 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|x64.Build.0 = release_shared|x64 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_md|x64.Build.0 = release_static_md|x64 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_shared|x64.Build.0 = debug_shared|x64 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_shared|Win32.Build.0 = release_shared|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_shared|x64.ActiveCfg = release_shared|x64 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_shared|x64.Build.0 = release_shared|x64 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_md|x64.Build.0 = release_static_md|x64 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_mt|x64.Build.0 = release_static_mt|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Data/Data_vs100.vcxproj b/Data/Data_vs100.vcxproj new file mode 100644 index 000000000..53b091b5f --- /dev/null +++ b/Data/Data_vs100.vcxproj @@ -0,0 +1,617 @@ + + + + + debug_shared + Win32 + + + debug_shared + x64 + + + debug_static_md + Win32 + + + debug_static_md + x64 + + + debug_static_mt + Win32 + + + debug_static_mt + x64 + + + release_shared + Win32 + + + release_shared + x64 + + + release_static_md + Win32 + + + release_static_md + x64 + + + release_static_mt + Win32 + + + release_static_mt + x64 + + + + Data + {240E83C3-368D-11DB-9FBC-00123FC423B5} + Data + Win32Proj + + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + ..\bin\ + ..\bin\ + obj\$(Configuration)\ + obj\$(Configuration)\ + true + true + ..\bin\ + ..\bin\ + obj\$(Configuration)\ + obj\$(Configuration)\ + false + false + ..\lib\ + ..\lib\ + obj\$(Configuration)\ + obj\$(Configuration)\ + ..\lib\ + ..\lib\ + obj\$(Configuration)\ + obj\$(Configuration)\ + ..\lib\ + ..\lib\ + obj\$(Configuration)\ + obj\$(Configuration)\ + ..\lib\ + ..\lib\ + obj\$(Configuration)\ + obj\$(Configuration)\ + PocoDatad + PocoDatad + PocoDatamdd + PocoDatamdd + PocoDatamtd + PocoDatamtd + PocoData + PocoData + PocoDatamd + PocoDatamd + PocoDatamt + PocoDatamt + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;Data_EXPORTS;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + %(AdditionalDependencies) + ..\bin\PocoDatad.dll + true + true + ..\bin\PocoDatad.pdb + ..\lib;%(AdditionalLibraryDirectories) + Console + ..\lib\PocoDatad.lib + MachineX86 + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;Data_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + %(AdditionalDependencies) + ..\bin\PocoDatad.dll + true + true + ..\bin\PocoDatad.pdb + ..\lib;%(AdditionalLibraryDirectories) + Console + ..\lib\PocoDatad.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;Data_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + %(AdditionalDependencies) + ..\bin\PocoData.dll + true + false + ..\lib;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib\PocoData.lib + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;Data_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + + Level3 + + + Default + %(DisableSpecificWarnings) + + + %(AdditionalDependencies) + ..\bin\PocoData.dll + true + false + ..\lib;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib\PocoData.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib\PocoDatamtd.pdb + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + ..\lib\PocoDatamtd.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + + ..\lib\PocoDatamtd.pdb + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + ..\lib\PocoDatamtd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + ..\lib\PocoDatamt.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + + Level3 + + + Default + %(DisableSpecificWarnings) + + + ..\lib\PocoDatamt.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib\PocoDatamdd.pdb + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + ..\lib\PocoDatamdd.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + + ..\lib\PocoDatamdd.pdb + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + ..\lib\PocoDatamdd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + ..\lib\PocoDatamd.pdb + Level3 + + Default + %(DisableSpecificWarnings) + + + %(AdditionalDependencies) + ..\lib\PocoDatamd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + + ..\lib\PocoDatamd.pdb + Level3 + + + Default + %(DisableSpecificWarnings) + + + %(AdditionalDependencies) + ..\lib\PocoDatamd.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Data/Data_vs100.vcxproj.filters b/Data/Data_vs100.vcxproj.filters new file mode 100644 index 000000000..51f8a37b5 --- /dev/null +++ b/Data/Data_vs100.vcxproj.filters @@ -0,0 +1,288 @@ + + + + + {be23cad9-48a2-49cd-ad09-5519919fdf69} + + + {0e3cfe8b-efbf-4679-823e-2294e350b954} + + + {972be6f9-955a-4b04-9036-42d0a731fb88} + + + {94ac43f0-ed08-4b33-a2b2-80e745bfdd96} + + + {ee89f0a2-10a7-40c0-be6f-de09b2e844c7} + + + {60881336-74f0-4876-8ed8-ff1817997b8e} + + + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + SessionPooling\Header Files + + + SessionPooling\Header Files + + + SessionPooling\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + DataCore\Header Files + + + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + SessionPooling\Source Files + + + SessionPooling\Source Files + + + SessionPooling\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + DataCore\Source Files + + + SessionPooling\Source Files + + + \ No newline at end of file diff --git a/Data/Makefile b/Data/Makefile new file mode 100644 index 000000000..cf53336fc --- /dev/null +++ b/Data/Makefile @@ -0,0 +1,24 @@ +# +# Makefile +# +# $Id: //poco/Main/Data/Makefile#11 $ +# +# Makefile for Poco Data +# + +include $(POCO_BASE)/build/rules/global + +objects = AbstractBinder AbstractBinding AbstractExtraction AbstractExtractor \ + AbstractPreparation AbstractPreparator ArchiveStrategy Transaction \ + Bulk Connector DataException Date DynamicLOB Limit MetaColumn \ + PooledSessionHolder PooledSessionImpl Position \ + Range RecordSet Row RowFilter RowFormatter RowIterator \ + SimpleRowFormatter Session SessionFactory SessionImpl \ + SessionPool SessionPoolContainer SQLChannel \ + Statement StatementCreator StatementImpl Time + +target = PocoData +target_version = $(LIBVERSION) +target_libs = PocoFoundation + +include $(POCO_BASE)/build/rules/lib diff --git a/Data/MySQL/CMakeLists.txt b/Data/MySQL/CMakeLists.txt new file mode 100644 index 000000000..d460b650f --- /dev/null +++ b/Data/MySQL/CMakeLists.txt @@ -0,0 +1,31 @@ +set(LIBNAME "PocoDataMySQL") +set(LIBNAME "${LIBNAME}${LIB_EXT}") + +set(SRCS "") +aux_source_directory(src SRCS) + +add_definitions(-DTHREADSAFE -DNO_TCL) + +include_directories( include ${MYSQL_INCLUDE_DIR}) +#link_directories( ) + +add_library( ${LIBNAME} ${LIB_MODE} ${SRCS} ) +set_target_properties( ${LIBNAME} + PROPERTIES + VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION} ) +target_link_libraries( ${LIBNAME} PocoData${LIB_EXT} PocoFoundation${LIB_EXT} ${MYSQL_LIB}) + +install( + DIRECTORY include/Poco + DESTINATION include + PATTERN ".svn" EXCLUDE + ) + +install( + TARGETS ${LIBNAME} + DESTINATION lib + ) + +if (ENABLE_TESTS) + add_subdirectory(testsuite) +endif () diff --git a/Data/MySQL/Makefile b/Data/MySQL/Makefile new file mode 100644 index 000000000..d061e8291 --- /dev/null +++ b/Data/MySQL/Makefile @@ -0,0 +1,23 @@ +# +# Makefile +# +# $Id: //poco/1.4/Data/MySQL/Makefile#1 $ +# +# Makefile for Poco MySQL +# + +include $(POCO_BASE)/build/rules/global + +SYSLIBS += -L/usr/local/lib/mysql -L/usr/lib/mysql -L/usr/mysql/lib/mysql +INCLUDE += -I/usr/local/include/mysql/ -I/usr/include/mysql/ -I/usr/mysql/include/mysql +SYSFLAGS += -DTHREADSAFE -DNO_TCL + +objects = Binder Extractor SessionImpl Connector \ + MySQLStatementImpl ResultMetadata MySQLException \ + SessionHandle StatementExecutor + +target = PocoDataMySQL +target_version = $(LIBVERSION) +target_libs = PocoData PocoFoundation + +include $(POCO_BASE)/build/rules/lib diff --git a/Data/MySQL/MySQL.progen b/Data/MySQL/MySQL.progen new file mode 100644 index 000000000..4717e4599 --- /dev/null +++ b/Data/MySQL/MySQL.progen @@ -0,0 +1,17 @@ +vc.project.guid = 73E19FDE-1570-488C-B3DB-72A60FADD408 +vc.project.name = MySQL +vc.project.target = PocoDataMySQL +vc.project.type = library +vc.project.pocobase = ..\\.. +vc.project.outdir = ${vc.project.pocobase} +vc.project.platforms = Win32, x64 +vc.project.configurations = debug_shared, release_shared, debug_static_mt, release_static_mt, debug_static_md, release_static_md +vc.project.prototype = ${vc.project.name}_vs90.vcproj +vc.project.compiler.include = ..\\..\\Foundation\\include;..\\..\\Data\\include +vc.project.compiler.defines = THREADSAFE;__LCC__ +vc.project.compiler.defines.shared = ${vc.project.name}_EXPORTS +vc.project.compiler.defines.debug_shared = ${vc.project.compiler.defines.shared} +vc.project.compiler.defines.release_shared = ${vc.project.compiler.defines.shared} +vc.project.linker.dependencies = libmysql.lib +vc.solution.create = true +vc.solution.include = testsuite\\TestSuite diff --git a/Data/MySQL/MySQL_VS80.sln b/Data/MySQL/MySQL_VS80.sln new file mode 100644 index 000000000..741140641 --- /dev/null +++ b/Data/MySQL/MySQL_VS80.sln @@ -0,0 +1,36 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_VS80.vcproj", "{1B30A91B-375F-11DB-837B-00123FC423B5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MySQL", "MySQL_VS80.vcproj", "{D9C692A6-D089-4269-B444-C445ED192F0D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + debug_static|Win32 = debug_static|Win32 + release_shared|Win32 = release_shared|Win32 + release_static|Win32 = release_static|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1B30A91B-375F-11DB-837B-00123FC423B5}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {1B30A91B-375F-11DB-837B-00123FC423B5}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {1B30A91B-375F-11DB-837B-00123FC423B5}.debug_static|Win32.ActiveCfg = debug_shared|Win32 + {1B30A91B-375F-11DB-837B-00123FC423B5}.debug_static|Win32.Build.0 = debug_shared|Win32 + {1B30A91B-375F-11DB-837B-00123FC423B5}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {1B30A91B-375F-11DB-837B-00123FC423B5}.release_shared|Win32.Build.0 = release_shared|Win32 + {1B30A91B-375F-11DB-837B-00123FC423B5}.release_static|Win32.ActiveCfg = release_shared|Win32 + {1B30A91B-375F-11DB-837B-00123FC423B5}.release_static|Win32.Build.0 = release_shared|Win32 + {D9C692A6-D089-4269-B444-C445ED192F0D}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {D9C692A6-D089-4269-B444-C445ED192F0D}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {D9C692A6-D089-4269-B444-C445ED192F0D}.debug_static|Win32.ActiveCfg = debug_shared|Win32 + {D9C692A6-D089-4269-B444-C445ED192F0D}.debug_static|Win32.Build.0 = debug_shared|Win32 + {D9C692A6-D089-4269-B444-C445ED192F0D}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {D9C692A6-D089-4269-B444-C445ED192F0D}.release_shared|Win32.Build.0 = release_shared|Win32 + {D9C692A6-D089-4269-B444-C445ED192F0D}.release_static|Win32.ActiveCfg = release_shared|Win32 + {D9C692A6-D089-4269-B444-C445ED192F0D}.release_static|Win32.Build.0 = release_shared|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Data/MySQL/MySQL_VS80.vcproj b/Data/MySQL/MySQL_VS80.vcproj new file mode 100644 index 000000000..78e24bba3 --- /dev/null +++ b/Data/MySQL/MySQL_VS80.vcproj @@ -0,0 +1,279 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Data/MySQL/MySQL_VS90.sln b/Data/MySQL/MySQL_VS90.sln new file mode 100644 index 000000000..d93f3ace9 --- /dev/null +++ b/Data/MySQL/MySQL_VS90.sln @@ -0,0 +1,39 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MySQL", "MySQL_VS90.vcproj", "{D9C692A6-D089-4269-B444-C445ED192F0D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_VS90.vcproj", "{1B30A91B-375F-11DB-837B-00123FC423B5}" + ProjectSection(ProjectDependencies) = postProject + {D9C692A6-D089-4269-B444-C445ED192F0D} = {D9C692A6-D089-4269-B444-C445ED192F0D} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + debug_static|Win32 = debug_static|Win32 + release_shared|Win32 = release_shared|Win32 + release_static|Win32 = release_static|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D9C692A6-D089-4269-B444-C445ED192F0D}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {D9C692A6-D089-4269-B444-C445ED192F0D}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {D9C692A6-D089-4269-B444-C445ED192F0D}.debug_static|Win32.ActiveCfg = debug_shared|Win32 + {D9C692A6-D089-4269-B444-C445ED192F0D}.debug_static|Win32.Build.0 = debug_shared|Win32 + {D9C692A6-D089-4269-B444-C445ED192F0D}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {D9C692A6-D089-4269-B444-C445ED192F0D}.release_shared|Win32.Build.0 = release_shared|Win32 + {D9C692A6-D089-4269-B444-C445ED192F0D}.release_static|Win32.ActiveCfg = release_shared|Win32 + {D9C692A6-D089-4269-B444-C445ED192F0D}.release_static|Win32.Build.0 = release_shared|Win32 + {1B30A91B-375F-11DB-837B-00123FC423B5}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {1B30A91B-375F-11DB-837B-00123FC423B5}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {1B30A91B-375F-11DB-837B-00123FC423B5}.debug_static|Win32.ActiveCfg = debug_shared|Win32 + {1B30A91B-375F-11DB-837B-00123FC423B5}.debug_static|Win32.Build.0 = debug_shared|Win32 + {1B30A91B-375F-11DB-837B-00123FC423B5}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {1B30A91B-375F-11DB-837B-00123FC423B5}.release_shared|Win32.Build.0 = release_shared|Win32 + {1B30A91B-375F-11DB-837B-00123FC423B5}.release_static|Win32.ActiveCfg = release_shared|Win32 + {1B30A91B-375F-11DB-837B-00123FC423B5}.release_static|Win32.Build.0 = release_shared|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Data/MySQL/MySQL_VS90.vcproj b/Data/MySQL/MySQL_VS90.vcproj new file mode 100644 index 000000000..f83a9af17 --- /dev/null +++ b/Data/MySQL/MySQL_VS90.vcproj @@ -0,0 +1,278 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Data/MySQL/MySQL_vs100.sln b/Data/MySQL/MySQL_vs100.sln new file mode 100644 index 000000000..6958e7980 --- /dev/null +++ b/Data/MySQL/MySQL_vs100.sln @@ -0,0 +1,90 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MySQL", "MySQL_vs100.vcxproj", "{73E19FDE-1570-488C-B3DB-72A60FADD408}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs100.vcxproj", "{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}" + ProjectSection(ProjectDependencies) = postProject + {73E19FDE-1570-488C-B3DB-72A60FADD408} = {73E19FDE-1570-488C-B3DB-72A60FADD408} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + debug_shared|x64 = debug_shared|x64 + debug_static_md|Win32 = debug_static_md|Win32 + debug_static_md|x64 = debug_static_md|x64 + debug_static_mt|Win32 = debug_static_mt|Win32 + debug_static_mt|x64 = debug_static_mt|x64 + release_shared|Win32 = release_shared|Win32 + release_shared|x64 = release_shared|x64 + release_static_md|Win32 = release_static_md|Win32 + release_static_md|x64 = release_static_md|x64 + release_static_mt|Win32 = release_static_mt|Win32 + release_static_mt|x64 = release_static_mt|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.Build.0 = debug_shared|x64 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.Build.0 = release_shared|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.ActiveCfg = release_shared|x64 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.Build.0 = release_shared|x64 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.Build.0 = release_static_md|x64 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_shared|x64.Build.0 = debug_shared|x64 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_shared|Win32.Build.0 = release_shared|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_shared|x64.ActiveCfg = release_shared|x64 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_shared|x64.Build.0 = release_shared|x64 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_md|x64.Build.0 = release_static_md|x64 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_mt|x64.Build.0 = release_static_mt|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Data/MySQL/MySQL_vs100.vcxproj b/Data/MySQL/MySQL_vs100.vcxproj new file mode 100644 index 000000000..171473301 --- /dev/null +++ b/Data/MySQL/MySQL_vs100.vcxproj @@ -0,0 +1,549 @@ + + + + + debug_shared + Win32 + + + debug_shared + x64 + + + debug_static_md + Win32 + + + debug_static_md + x64 + + + debug_static_mt + Win32 + + + debug_static_mt + x64 + + + release_shared + Win32 + + + release_shared + x64 + + + release_static_md + Win32 + + + release_static_md + x64 + + + release_static_mt + Win32 + + + release_static_mt + x64 + + + + MySQL + {73E19FDE-1570-488C-B3DB-72A60FADD408} + MySQL + Win32Proj + + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + StaticLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + DynamicLibrary + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + ..\..\bin\ + ..\..\bin\ + obj\$(Configuration)\ + obj\$(Configuration)\ + true + true + ..\..\bin\ + ..\..\bin\ + obj\$(Configuration)\ + obj\$(Configuration)\ + false + false + ..\..\lib\ + ..\..\lib\ + obj\$(Configuration)\ + obj\$(Configuration)\ + ..\..\lib\ + ..\..\lib\ + obj\$(Configuration)\ + obj\$(Configuration)\ + ..\..\lib\ + ..\..\lib\ + obj\$(Configuration)\ + obj\$(Configuration)\ + ..\..\lib\ + ..\..\lib\ + obj\$(Configuration)\ + obj\$(Configuration)\ + PocoDataMySQLd + PocoDataMySQLd + PocoDataMySQLmdd + PocoDataMySQLmdd + PocoDataMySQLmtd + PocoDataMySQLmtd + PocoDataMySQL + PocoDataMySQL + PocoDataMySQLmd + PocoDataMySQLmd + PocoDataMySQLmt + PocoDataMySQLmt + + + + Disabled + .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;THREADSAFE;__LCC__;MySQL_EXPORTS;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + libmysql.lib;%(AdditionalDependencies) + ..\..\bin\PocoDataMySQLd.dll + true + true + ..\..\bin\PocoDataMySQLd.pdb + ..\..\lib;%(AdditionalLibraryDirectories) + Console + ..\..\lib\PocoDataMySQLd.lib + MachineX86 + + + + + Disabled + .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;THREADSAFE;__LCC__;MySQL_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + libmysql.lib;%(AdditionalDependencies) + ..\..\bin\PocoDataMySQLd.dll + true + true + ..\..\bin\PocoDataMySQLd.pdb + ..\..\lib;%(AdditionalLibraryDirectories) + Console + ..\..\lib\PocoDataMySQLd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;THREADSAFE;__LCC__;MySQL_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + libmysql.lib;%(AdditionalDependencies) + ..\..\bin\PocoDataMySQL.dll + true + false + ..\..\lib;%(AdditionalLibraryDirectories) + Console + true + true + ..\..\lib\PocoDataMySQL.lib + MachineX86 + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;THREADSAFE;__LCC__;MySQL_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + + Level3 + + + Default + %(DisableSpecificWarnings) + + + libmysql.lib;%(AdditionalDependencies) + ..\..\bin\PocoDataMySQL.dll + true + false + ..\..\lib;%(AdditionalLibraryDirectories) + Console + true + true + ..\..\lib\PocoDataMySQL.lib + + + + + Disabled + .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\..\lib\PocoDataMySQLmtd.pdb + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + ..\..\lib\PocoDataMySQLmtd.lib + + + + + Disabled + .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + + ..\..\lib\PocoDataMySQLmtd.pdb + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + ..\..\lib\PocoDataMySQLmtd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + %(DisableSpecificWarnings) + + + ..\..\lib\PocoDataMySQLmt.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + + Level3 + + + Default + %(DisableSpecificWarnings) + + + ..\..\lib\PocoDataMySQLmt.lib + + + + + Disabled + .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions) + true + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\..\lib\PocoDataMySQLmdd.pdb + Level3 + EditAndContinue + Default + %(DisableSpecificWarnings) + + + ..\..\lib\PocoDataMySQLmdd.lib + + + + + Disabled + .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + + ..\..\lib\PocoDataMySQLmdd.pdb + Level3 + ProgramDatabase + Default + %(DisableSpecificWarnings) + + + ..\..\lib\PocoDataMySQLmdd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + ..\..\lib\PocoDataMySQLmd.pdb + Level3 + + Default + %(DisableSpecificWarnings) + + + libmysql.lib;%(AdditionalDependencies) + ..\..\lib\PocoDataMySQLmd.lib + + + + + Disabled + OnlyExplicitInline + true + Speed + true + .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + + ..\..\lib\PocoDataMySQLmd.pdb + Level3 + + + Default + %(DisableSpecificWarnings) + + + libmysql.lib;%(AdditionalDependencies) + ..\..\lib\PocoDataMySQLmd.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Data/MySQL/MySQL_vs100.vcxproj.filters b/Data/MySQL/MySQL_vs100.vcxproj.filters new file mode 100644 index 000000000..98b4c6317 --- /dev/null +++ b/Data/MySQL/MySQL_vs100.vcxproj.filters @@ -0,0 +1,78 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/Data/MySQL/include/Poco/Data/MySQL/Binder.h b/Data/MySQL/include/Poco/Data/MySQL/Binder.h new file mode 100644 index 000000000..2a7970980 --- /dev/null +++ b/Data/MySQL/include/Poco/Data/MySQL/Binder.h @@ -0,0 +1,272 @@ +// +// Binder.h +// +// $Id: //poco/1.4/Data/MySQL/include/Poco/Data/MySQL/Binder.h#1 $ +// +// Library: Data +// Package: MySQL +// Module: Binder +// +// Definition of the Binder class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef Data_MySQL_Binder_INCLUDED +#define Data_MySQL_Binder_INCLUDED + +#include "Poco/Data/MySQL/MySQL.h" +#include "Poco/Data/AbstractBinder.h" +#include "Poco/Data/LOB.h" +#include "Poco/Data/MySQL/MySQLException.h" +#include + +namespace Poco { +namespace Data { +namespace MySQL { + + +class MySQL_API Binder: public Poco::Data::AbstractBinder + /// Binds placeholders in the sql query to the provided values. Performs data types mapping. +{ +public: + + Binder(); + /// Creates the Binder. + + virtual ~Binder(); + /// Destroys the Binder. + + virtual void bind(std::size_t pos, const Poco::Int8& val, Direction dir); + /// Binds an Int8. + + virtual void bind(std::size_t pos, const Poco::UInt8& val, Direction dir); + /// Binds an UInt8. + + virtual void bind(std::size_t pos, const Poco::Int16& val, Direction dir); + /// Binds an Int16. + + virtual void bind(std::size_t pos, const Poco::UInt16& val, Direction dir); + /// Binds an UInt16. + + virtual void bind(std::size_t pos, const Poco::Int32& val, Direction dir); + /// Binds an Int32. + + virtual void bind(std::size_t pos, const Poco::UInt32& val, Direction dir); + /// Binds an UInt32. + + virtual void bind(std::size_t pos, const Poco::Int64& val, Direction dir); + /// Binds an Int64. + + virtual void bind(std::size_t pos, const Poco::UInt64& val, Direction dir); + /// Binds an UInt64. + +#ifndef POCO_LONG_IS_64_BIT + virtual void bind(std::size_t pos, const long& val, Direction dir = PD_IN); + /// Binds a long. +#endif + + virtual void bind(std::size_t pos, const bool& val, Direction dir); + /// Binds a boolean. + + virtual void bind(std::size_t pos, const float& val, Direction dir); + /// Binds a float. + + virtual void bind(std::size_t pos, const double& val, Direction dir); + /// Binds a double. + + virtual void bind(std::size_t pos, const char& val, Direction dir); + /// Binds a single character. + + virtual void bind(std::size_t pos, const std::string& val, Direction dir); + /// Binds a string. + + virtual void bind(std::size_t pos, const Poco::Data::BLOB& val, Direction dir); + /// Binds a BLOB. + + virtual void bind(std::size_t pos, const Poco::Data::CLOB& val, Direction dir); + /// Binds a CLOB. + + virtual void bind(std::size_t pos, const DateTime& val, Direction dir); + /// Binds a DateTime. + + virtual void bind(std::size_t pos, const Date& val, Direction dir); + /// Binds a Date. + + virtual void bind(std::size_t pos, const Time& val, Direction dir); + /// Binds a Time. + + virtual void bind(std::size_t pos, const NullData& val, Direction dir); + /// Binds a null. + + + virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::vector& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::deque& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::list& val, Direction dir = PD_IN); + + virtual void bind(std::size_t pos, const std::vector