git-svn-id: https://svn.apache.org/repos/asf/activemq/activemq-cpp/tags/activemq-cpp-2.1.1@589815 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/decaf/KEYS b/src/decaf/KEYS deleted file mode 100644 index 8369607..0000000 --- a/src/decaf/KEYS +++ /dev/null
@@ -1,102 +0,0 @@ -pub 1024D/CCD6F801 2006-11-15 -uid Nathan Mittler <nathan.mittler@gmail.com> -sig 3 CCD6F801 2006-11-15 Nathan Mittler <nathan.mittler@gmail.com> -sub 2048g/F5B8EA6A 2006-11-15 -sig CCD6F801 2006-11-15 Nathan Mittler <nathan.mittler@gmail.com> - ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.4.2.2 (FreeBSD) - -mQGiBEVbpV0RBADJcRJLaDaspQfYql0ok3H/8FKeosZ5zuy37QLICwB9wpqXkeGI -QEemsKV+6Y0Tv9KVVyBDvMOYu8ZKdqTOkodf6Qd85ZcyMPXQpavcdhKnSnux8d4K -CoPJtNRogomxi1G/haGJnXl5s1WlZ4ME5ijnaF2UbPYP+5flIW2iv0movwCgzOOl -ImfG9K9kxmHDXyKrmr8stCUD/3z8cyrkhQ47twFwhBzMuSKhfhsZR78L/tfVajjl -BSDzu4MUORnm7nx/cnMge9b1Kt0bFWpcalIbUQP/iGLQSyG49S77JrKEaxonQhQF -Z7zXZMPkm1Y54t9KSPtpgRrV0GSObKj9slQ5FYabhoE/6RW+zwPvTDgJftmyCSIQ -znlMA/4uhhuXoYJo0Jus3o2rqbQfj9dcEdL502BqKz2kITCKr+2U8DBAaY5xVGUW -ETUmueKHSrZSXDqPkL5QeVMuASJVas7VmTheLXk5Kr+kc5/X5Sl10oCZoqSgx6Lq -81bjcbMrHvFWLOmQG/E0zM10EOWw6fEVaFZQUz504UStZm7JqrQpTmF0aGFuIE1p -dHRsZXIgPG5hdGhhbi5taXR0bGVyQGdtYWlsLmNvbT6IYAQTEQIAIAUCRVulXQIb -AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEMGEfSvM1vgBX+AAnRQbwrVjW+P+ -6ERiJ1ezS8EjJsgXAJ97jIS7CVD+DKp5u4gS4SfidmsxNLkCDQRFW6ViEAgA7ytH -Cl5uvL7SMuOdt9YRZyR7QkhfgBkkJhIUk2MyKqZ/zXhTS9Qgx/D7ulS4auUjdRNe -YzzuiFhv5qQS/KQB4Bi+FbvxisaR8fh9Yt+8cHZdUiDHhI49c/qhxyJea1ByJ3AP -Clyr2aCEYLRb+475rYzp43rQLb7SqboWG4ajVmeEQTPqWwM77XqnTTOyTs4MZEJs -ZO5by+ud23VOG7EF5VL5l8kgNzN8+HHk0q8KU9G0Cir4XMi8vtMtPqXsDSDTsyQU -Lu9pEdMznY4m4ozFdnT1vxvy5bfoXtfhYNG+161MZbikuEwcLVknXB5fzyfZNZeq -LHEDbMo4McR/Y/da7wADBQf9GAm5486yFNc1VeMtUs7JUgJVdMdK1hxtgyMpy6i3 -xKdgReV7Nw6Vk1vKhKD53rLXfy5fk8PycSLKC63A/vhO1mHydW6pXtumILOtYdZw -9FUNRfZIUTPyqnbPx+PZi3jmkK63qIfu8DFzfjxV9RxjhmRVgrzuBvEKqo5dAHM0 -9JOMwumE8nmYM0jrUt40IAozkLorWxnZZVZx1zsZGsLj4+0V7IurWMEYmWnmd/iF -nDZi6CggW9om4NJJ72rNAYiEgZjLL9xBBjYplhqMQBHR+pZ8Jl56i78ZA8DfPejx -LM/E931dZyTMAakFsTnFmRf4+DN+PKF4zd3lQuFhxk17QYhJBBgRAgAJBQJFW6Vi -AhsMAAoJEMGEfSvM1vgBuWgAnjqmxSJjNF84pGejBbEAgPHYOlWyAJ4vpBTlolF0 -1tcyAF4QTEDQbKvJwg== -=ssQm ------END PGP PUBLIC KEY BLOCK----- -pub 1024D/5E4119DD 2007-04-06 -uid Timothy Bish <tabish121@gmail.com> -sig 3 5E4119DD 2007-04-06 Timothy Bish <tabish121@gmail.com> -sub 2048g/5D0D0993 2007-04-06 -sig 5E4119DD 2007-04-06 Timothy Bish <tabish121@gmail.com> - ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.4.7 (GNU/Linux) - -mQGiBEYWrAMRBADIah561RTKg4Fcp9DRzLLz2lPZekB1QefjaJMpuA5hrs5otN+I -N3DOa4eM1q2Tq4GDoo14qMWv1Xxrp3MQskYIXzFwiju6JUQ92I76BG0qutr4eJPv -ySIIOUElo96Y+7ye9iWRmBKDjM3mFNpCZsJ+eXJyuYeJ3bPDGR3EE+jkUwCgwjCC -IUTdsAv2osu0ddJdTgTeicMEAJphtRFabJy5+5B/idMCWQW4RldF4Dus7N+wnWR3 -zkAw77DxQfno4Y29HKFo6omvMM5rM35ZXX58oGwYAhkTUUp47zglmKBCvptKDxOK -zr+F1lDpulEfP/bOtXE4SkPCVI+FBBSrRPEBOq9JSgZnaJcL9RRVZtIn/hFDHm/h -DXsKA/9sRQWz6UBfKncju7co+TIqE0hf3SSfCfkFqzhZSmJl/oLR4rbC5xuSppXx -tQP6YEZahU+6iHbbJeIIkthIO6zqXeK0QThmc6EV5cuhA2PMHUuF/w4XikA38ZSA -jP5EBLLSTGxQHPfhdUBnV4t8yvooFR1cDjPA5a2dlnw1sX04MrQiVGltb3RoeSBC -aXNoIDx0YWJpc2gxMjFAZ21haWwuY29tPohgBBMRAgAgBQJGFqwDAhsDBgsJCAcD -AgQVAggDBBYCAwECHgECF4AACgkQ2iSmy15BGd09RwCffbz/I4fIKFEvnzNV1eXc -iWIVcAEAn32HrMifDJn1ZC1msgf6gw8gCMwbuQINBEYWrAMQCADwuFOY2t5pClQm -dNBYG8YsvaRb80FUsNmGxx32EnPv0DljWSzpLtt+JdV0Nm2RVEDXkrqV1fzVMK0v -Ei2KR0gOwus7E/AmFFG27legqSnlMjqtB+IQyx1VUxtfQIhAR6GZt3chTtgtjSPJ -uCksKllz9fljIc3nqem4EP63m/w6LkAWuku9zEbBmBeeT9Ac06lxCXBXNlraciRD -MUpbCraB6zmns2C1/DaiYbK5CHhHYwzHt+M3MZOf7olRBNdl/2I6NCJY0sZwUTrp -QqYtCSZMOC6pSrsYq0KR5Y+yUTa/VpN3DV8wzTpJbvaBuSc4zz8pQtcS6WoJlrOJ -Jvx89WCzAAMFCAC/SkYlTw+NVqbhisi8GNqT+Jq9y2q81jpQWVBz/ELaM5mzkBlr -tVBLLJuB5dazlGMZV5JQ5/COHQ1Z3iw5KIqnRZAnxhn8D0xDsOaT3b2voCWyM9Dp -BqY1WPvWsTD8oFJPm9y8Wvv8iACzTUIVysG7xCig73a5KbOuNF8cYmYrHqpb6H6U -oAUFbm0ybwagAIw6eiQuxUPWhlKpx22Le4hS9jmlDO3CQXQCqkqpEIiIsrMeiS4L -EkaTgGy8AvkLcbzmTF5mbB3nKfiHInTY1rVXhdGM8LLnfKJazhH6AbQwrptJCsnf -gYpsSlm9oNW4fAvB852SN+zJrly0Jl/+tsdciEkEGBECAAkFAkYWrAMCGwwACgkQ -2iSmy15BGd0F6QCeLKexEs2tW7uJK5FkSD4c+JGzhdEAoIUj6K6rjNNbbd4gq4L7 -dnc+3S9/ -=ASER ------END PGP PUBLIC KEY BLOCK----- -pub 1024D/70AE7D08 2007-04-04 -uid Nathan Mittler <nathan.mittler@gmail.com> -sig 3 70AE7D08 2007-04-04 Nathan Mittler <nathan.mittler@gmail.com> -sub 1024g/A1255264 2007-04-04 -sig 70AE7D08 2007-04-04 Nathan Mittler <nathan.mittler@gmail.com> - ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.4.7 (Darwin) - -mQGiBEYTksURBADfn9FYnPKtlRhC0o6ScnPJLePomEpd22F2b8uuC+q+0A6YwvLz -aDz9k0pEnvFFHdWjTZPUzDXEb4CjRjnoGz5hnZUNG8bJxgkwKt1nUawjYnOgy17b -ekYmhLtyS2T6jtHx2qIHw/B9Xu0TfHZTBht1H8kFPliteJf46PTxXX3k6wCg9Dls -YoKoV4cPodpJUiN8AmaKdh8EAKqfQEn4mkwUkBw4Th4KxIl3/YfnNeH4kL1ejp/m -Pwdf3u7EhEcyCc2i9iNDgvjaUO0SZVD0cJShWq3Us8PT6vAB+WYvk4LWywc6tSTe -G80Ma0KWX6CXuvFKjlS0K17PqS2G4kb8kUjgSJto/NqC6TBY7/R+X1rrXcx6NtWA -a/cNBADAGSMJTJGUpPFXBrcncBAlfBLtXVfGGknplyjlfewi7FXopy3K3+otYune -VHk6V/A/xULLRuGgx+GwytJRTGcNc84tuIDm2iiI4JT4E+a6Ghi5A+xucUpLLi2f -6OMYDz2QH6IAbLXjSLUcSwW/YNg+1wFotQCKkQR5dmZgghM2PLQpTmF0aGFuIE1p -dHRsZXIgPG5hdGhhbi5taXR0bGVyQGdtYWlsLmNvbT6IYAQTEQIAIAUCRhOSxQIb -IwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEII00zVwrn0IlEgAoN+ULhiUYtPx -MhMGj+i9NOtJqOKoAKDmic8ZTi3HDUpyEsOvV/FeUaBrIbkBDQRGE5LFEAQAt2cH -aKxpQyewpsCupoC24FIdtPOxtK0fr1pM4n7zyCcjiEFVM5RzylyZg00IRcDxHE6N -E6n6ydshZ3oM+UabvgltLpeEdJI02p0YccE7FA6iQ80ChMm4bjLUwsBW1Lw2zKza -oDk0A8PNlmgjwHJi9yrw2nje8QH+aTvvtMj+WucAAwcD/05X6+YplQb4NPjUP7uG -LzXuGOOS7msDBtqi3zOMzFbfY7H7OtF/SZmDzWDsZiQwq/nlTfernHCKe+/kUHTt -9pJ7+5cGKFy5chgzVmCbYW6s8+IiaZVFLc5iWASqGhd/a9tEItughEK3pOt3kjud -o0WcDTFOe9+YGbFAZg8kuMsbiEkEGBECAAkFAkYTksUCGwwACgkQgjTTNXCufQjL -qQCeKZi8Gs8h9qS511FdlWnV0J6C2U4An0p+wQBKYckIUy5Fif3uWaHsSpa1 -=uYcU ------END PGP PUBLIC KEY BLOCK-----
diff --git a/src/decaf/LICENSE.txt b/src/decaf/LICENSE.txt deleted file mode 100755 index 6b0b127..0000000 --- a/src/decaf/LICENSE.txt +++ /dev/null
@@ -1,203 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -
diff --git a/src/decaf/Makefile.am b/src/decaf/Makefile.am deleted file mode 100644 index 52e34b5..0000000 --- a/src/decaf/Makefile.am +++ /dev/null
@@ -1,39 +0,0 @@ -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- - -# Since we don't strictly follow the GNU standard of having 'NEWS README AUTHORS ChangeLog' files -AUTOMAKE_OPTIONS = foreign - -SUBDIRS = src/main src/examples -if BUILD_CPPUNIT_TESTS - SUBDIRS += src/test - SUBDIRS += src/test-benchmarks -endif - -#Distribute these directories: -DIST_SUBDIRS = src/main - -bin_SCRIPTS = decaf-config - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = decaf.pc - -ACLOCAL_AMFLAGS = -I m4 - -include doxygen-include.am - -EXTRA_DIST=autogen.sh $(DX_CONFIG) doc/html
diff --git a/src/decaf/NOTICE.txt b/src/decaf/NOTICE.txt deleted file mode 100644 index 9c0a44e..0000000 --- a/src/decaf/NOTICE.txt +++ /dev/null
@@ -1,15 +0,0 @@ -========================================================================= -== NOTICE file corresponding to the section 4 d of == -== the Apache License, Version 2.0, == -== in this case for the Apache ActiveMQ distribution. == -========================================================================= - -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). - -========================================================================= -== Doxygen Automake Macro Notice == -========================================================================= - -This product includes software developed by the Oren Ben-Kiki -http://ben-kiki.org/oren/doxample/
diff --git a/src/decaf/README.txt b/src/decaf/README.txt deleted file mode 100644 index 0cc54b9..0000000 --- a/src/decaf/README.txt +++ /dev/null
@@ -1,197 +0,0 @@ --------------------------------------------------------------------------- -DECAF CPP Library --------------------------------------------------------------------------- - -Decaf is a CPP based SDK that provides classes simmilar to that of the -Java SDK. - - -1 Dependencies --------------------------------------------------------------------------- - -1.1 libuuid --------------------------------------------------------------------------- - -The build requires the *libuuid* library that is part of the e2fsprogs -package and is available from http://e2fsprogs.sourceforge.net/ which is -not always installed by default. - -On Fedora, type the following: - - sudo yum install e2fsprogs-devel - -On Debian/Ubuntu, type the following: - - sudo apt-get install uuid-dev - - -1.2 CppUnit --------------------------------------------------------------------------- - -The package contains a complete set of CppUnit tests. In order for you to -build an run the tests, you will need to download and install the CppUnit -suite. See http://cppunit.sourceforge.net/cppunit-wiki - -On Fedora, type the following: - - sudo yum install cppunit - -On Debian/Ubuntu, type the following: - - sudo apt-get install libcppunit-dev - -Make sure that the paths to the installed CppUnit library and includes are -visible in your current shell before you try building the tests. - -Windows users will need to build the CppUnit library using the CPPUnit -MSVC project files. A discussion of the build process can be found -on the CPPUnit wiki under -http://cppunit.sourceforge.net/cppunit-wiki/BuildingCppUnit1 this covers -both MSVC along with many other platforms and tool suites. - - -1.3 GNU Build System (for building on Unix/Linux/OS X/Cygwin) --------------------------------------------------------------------------- - -To Generate the ./configure script use to create the Makefiles, you need -the following software installed: - -Tool Recommended Version -------------------------------- -autoconf >= 2.59 -automake >= 1.9.6 -libtool >= 1.5.22 - -On Debian/Ubuntu, multiple versions of autoconf and automake are available -in separate packages. If you have multiple versions of autoconf or automake -installed on your system, you may have to configure the versions to use -using /usr/sbin/update-alternatives. - -2 Building on Unix/Linux/OS X/Cygwin --------------------------------------------------------------------------- - -This assumes you have all of the project dependencies installed. We're -now ready to create the configure script. To do this, run: - - ./autogen.sh - - ----------------------------------------------------------------------- - |NOTE: You may see the following warnings when running this command: | - | | - | src/test-integration/Makefile.am:44: `CXXFLAGS' is a user variable,| - |you should not override it; | - | src/test-integration/Makefile.am:44: use `AM_CXXFLAGS' instead. | - | src/test/Makefile.am:104: `CXXFLAGS' is a user variable, you | - |should not override it; | - | src/test/Makefile.am:104: use `AM_CXXFLAGS' instead. | - | | - |These can be ignored. We override CXXFLAGS in the makefiles for | - |the unit and integration tests in order to suppress compiler | - |warnings. | - ----------------------------------------------------------------------- - -This should be run the first time and anytime you change configure.ac or -any of the Makefile.am files. - - ----------------------------------------------------------------------- - |Solaris 10 Note: CppUnit might not build until you correct the file | - | libstdc++.la to contain the correct data, see this discussion: | - | http://forum.sun.com/jive/thread.jspa?threadID=73150 | - ----------------------------------------------------------------------- - -The configure script will customize the way the software is built and -installed into your system along with detecting the available libraries -that have been installed. To use the default configuration just run: - - ./configure - -For more help on how to customize the build configuration, run: - - ./configure --help - -Once the configure script has run successfully, you are ready to build. -Run: - - make - -This will build all of the core ActiveMQ CPP source code. To build and -install the code into the system directories, run: - - make install - -You will have to become the superuser in order to be able to install the -files. - -3 Doxygen --------------------------------------------------------------------------- - -To generate the doxygen documentation for the project, just run: - - make doxygen-run - - -4 Running Tests --------------------------------------------------------------------------- - -4.1 Unit Tests --------------------------------------------------------------------------- -In order to build and run the suite of unit tests, run: - - make check - -This will verify that the library is functioning correctly on the target -platform. In addition, it will generate the integration tests binary. - -4.2 Integration Tests --------------------------------------------------------------------------- -The library also contains a set of tests that are run against a real AMQ -broker. These allow you to validate this distribution of ActiveMQ CPP -against your broker. Running these without a broker will result in failed -tests. The tests currently hard-code the broker url to be -tcp://localhost:61613 for stomp and tcp://localhost:61616 for openwire. - -The integration tests are built via "make check". To run them, first -start a broker and then - - cd src/test-integration - ./activemq-test-integration - -This will take quite some time to complete, so be patient. - -5 Example --------------------------------------------------------------------------- -There is an example application that ships with the distribution in -src/examples. The example is compiled by default with the "make" -command, but can easily be compiled manually using the command: - - g++ -o main -pthread -I ../main main.cpp ../../out/libactivemq-cpp-2_0.a -luuid - -6 Notes for Windows users --------------------------------------------------------------------------- -We support using the GNU compiler on Windows, using the Cygwin package. -However we also support using the MSVC compiler on Windows. - -There are a couple or things that you will need to setup to ensure that -the MSVC compile succeeds. - -* You need to download and install the Platform SDK if you don't have it - installed already. - -* Ensure that the path to you MSVC install is set in the PATH env variable. - You can test this by typing cl.exe at the command line, if you get an - error complaining that its not found, then you'll need to fix your PATH. -* Set the INCLUDE env variable to include the path to your MSVC includes, - and the platform SDK includes. For example: - - INCLUDE = D:\Program Files\Microsoft Visual Studio 8\VC\include;D:\Program Files\Microsoft Platform SDK\Include\* - -* Set the LIB env variable to include the path to your MSVC libs, and the - Platform SDK libs. For example: - - LIB = D:\Program Files\Microsoft Visual Studio 8\VC\lib;D:\Program Files\Microsoft Platform SDK\Lib - -* The Project files reference the CPPUnit libraries for the Integration and - Unit tests builds. In order for these to build correctly you must - either place the CPPUnit libraries in a directory listed in the project - settings, or add a new location for your install of CPPUnit. -
diff --git a/src/decaf/RELEASE_NOTES.txt b/src/decaf/RELEASE_NOTES.txt deleted file mode 100644 index 868e340..0000000 --- a/src/decaf/RELEASE_NOTES.txt +++ /dev/null
@@ -1,7 +0,0 @@ -========================================================================= -== Release Notes for DECAF 1.0 == -========================================================================= - -== Overview == -== Issues Resolved == -
diff --git a/src/decaf/autogen.sh b/src/decaf/autogen.sh deleted file mode 100755 index 57ea46d..0000000 --- a/src/decaf/autogen.sh +++ /dev/null
@@ -1,19 +0,0 @@ -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- - -#!/bin/sh -autoreconf --force --install -I config -I m4
diff --git a/src/decaf/configure.ac b/src/decaf/configure.ac deleted file mode 100644 index c69f5f6..0000000 --- a/src/decaf/configure.ac +++ /dev/null
@@ -1,171 +0,0 @@ -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- - -## -------------------------------- -## Initialization macros. -## -------------------------------- -AC_INIT(decaf, 1, activemq-dev@geronimo.apache.org) -AC_CONFIG_AUX_DIR(config) -AC_CONFIG_SRCDIR(src/main/decaf/lang/Thread.cpp) - -## ----------------------------------------------- -## Define the Version variables -## ----------------------------------------------- -DECAF_LIBRARY_NAME=decaf -DECAF_VERSION=1.0-SNAPSHOT -DECAF_LIBRARY_VERSION=1:0:0 -DECAF_RELEASE=1.0 -DECAF_API_VERSION=${DECAF_VERSION} - -AC_SUBST(DECAF_LIBRARY_NAME) -AC_SUBST(DECAF_VERSION) -AC_SUBST(DECAF_LIBRARY_VERSION) -AC_SUBST(DECAF_RELEASE) -AC_SUBST(DECAF_API_VERSION) - -PACKAGE=$DECAF_LIBRARY_NAME -VERSION=$DECAF_VERSION - -AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define) -AM_CONFIG_HEADER(config.h) - -# Gives us access to the host_os environment variable -AC_CANONICAL_HOST - -## ----------------------------------------------- -## Checks for programs. -## ----------------------------------------------- - -AC_PROG_CC -AC_PROG_CXX -AC_LIBTOOL_WIN32_DLL -AC_PROG_LIBTOOL -AC_SUBST([LIBTOOL_DEPS]) - -AM_SANITY_CHECK -AC_LANG_CPLUSPLUS - -AC_C_BIGENDIAN -AC_CHECK_SIZEOF(short) -AC_CHECK_SIZEOF(int) -AC_CHECK_SIZEOF(long) - -AC_CHECK_SIZEOF(char, 1) -AC_CHECK_SIZEOF(short, 2) -AC_CHECK_SIZEOF(int, 4) -AC_CHECK_SIZEOF(long long, 8) -AC_CHECK_SIZEOF(float, 4) -AC_CHECK_SIZEOF(double, 8) - -AC_CHECK_HEADERS([uuid.h uuid/uuid.h], [AC_DEFINE([HAVE_UUID_T], [1], [Define if uuid_t exists.])]) -AC_CHECK_HEADERS([objbase.h]) -AC_CHECK_HEADERS([repcdce.h]) -AC_CHECK_HEADERS([sys/filio.h]) -AC_CHECK_HEADERS([sys/ioctl.h]) -AC_CHECK_HEADERS([sys/select.h]) -AC_CHECK_HEADERS([sys/time.h]) -AC_CHECK_HEADERS([sys/timeb.h]) -AC_CHECK_HEADERS([pthread.h]) - -AC_CHECK_FUNCS([ioctl select gettimeofday time ftime]) - -AM_PATH_CPPUNIT(1.10.2, cppunit=yes, cppunit=no; AC_MSG_RESULT([no. Unit and Integration tests disabled])) -AM_CONDITIONAL(BUILD_CPPUNIT_TESTS, test x$cppunit = xyes) - -## find and configure the APR, and ARP Utils -DECAF_CONFIGURE_APR - -PLAT_CXXFLAGS= -PLAT_LIBS= - -case "${host_os}" in - - *darwin* ) ## Mac OS X configuration - PLAT_CXXFLAGS="-ansi -pedantic" - ;; - - *cygwin* ) ## Cygwin configuration - PLAT_CXXFLAGS="-Wno-uninitialized" - PLAT_LIBS="-lm -lpthread -luuid -lrpcrt4" - ;; - - *solaris* ) ## Solaris configuration - AC_CHECK_LIB(pthread, pthread_create,[have_pthread="yes"], - AC_MSG_ERROR([libpthread not found!])) - - PLAT_CXXFLAGS="-ansi -pedantic" - PLAT_LIBS="-lm -lpthread -luuid -lsocket -lrt" - ;; - - *) ## Unix configuration - - AC_CHECK_LIB(pthread, pthread_create,[have_pthread="yes"], - AC_MSG_ERROR([libpthread not found!])) - - PLAT_CXXFLAGS="-ansi -pedantic" - PLAT_LIBS="-lm -lpthread -luuid" -esac - -## Flags for building the decaf cpp library -AC_SUBST([DECAF_CXXFLAGS]) -AC_SUBST([DECAF_LIBS]) -DECAF_CXXFLAGS="$PLAT_CXXFLAGS -W -Wall -fPIC -fstrict-aliasing -Wstrict-aliasing=2 -Wno-long-long" -DECAF_LIBS="$PLAT_LIBS" - -## Flags for building the test applications. -AC_SUBST([DECAF_TEST_CXXFLAGS]) -AC_SUBST([DECAF_TEST_LIBS]) -DECAF_TEST_CXXFLAGS="$DECAF_CXXFLAGS -Wno-non-virtual-dtor -Wno-unused-parameter -Wno-uninitialized" -DECAF_TEST_LIBS="../main/libdecaf.la" - -# Check to see if the compiler supports the visibility flags. -# If so, define HAVE_VISIBILITY_OPTIONS -CHECK_VISIBILITY() - -## Not all platforms define addrinfo and related functions. If this platform -## supports addrinfo, defines HAVE_STRUCT_ADDRINFO. -CHECK_ADDRINFO() - -## Execute Doxygen macros -DX_HTML_FEATURE(ON) -DX_CHM_FEATURE(OFF) -DX_CHI_FEATURE(OFF) -DX_MAN_FEATURE(OFF) -DX_RTF_FEATURE(OFF) -DX_XML_FEATURE(OFF) -DX_PDF_FEATURE(OFF) -DX_PS_FEATURE(OFF) -DX_INIT_DOXYGEN(decaf, doxygen.cfg, doc) - -## ----------------------------------------------------- -## configuration -## Generates Makefile's, configuration files and scripts -## ----------------------------------------------------- - -AC_CONFIG_FILES(Makefile) -AC_CONFIG_FILES(decaf.pc) -AC_CONFIG_FILES(src/main/Makefile) -AC_CONFIG_FILES(src/examples/Makefile) -AC_CONFIG_FILES(decaf-config) - -if test x$cppunit = xyes -then - AC_CONFIG_FILES(src/test/Makefile) - AC_CONFIG_FILES(src/test-benchmarks/Makefile) -fi - -AC_OUTPUT
diff --git a/src/decaf/decaf-config.in b/src/decaf/decaf-config.in deleted file mode 100644 index befe745..0000000 --- a/src/decaf/decaf-config.in +++ /dev/null
@@ -1,115 +0,0 @@ -#!/bin/sh - -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- - -prefix=@prefix@ -exec_prefix=@exec_prefix@ -exec_prefix_set=no -includedir=@includedir@ - -usage() -{ - cat <<EOF -Usage: decaf-config [OPTION] ... - -Generic options - --version output Decaf version information. - --help display this help and exit. - -Compilation support options - --cflags print pre-processor and compiler flags - --libs print library linking information - -Install directories Decaf Library was configured to - --prefix[=DIR] - --exec-prefix[=DIR] - -EOF - exit $1 -} - -if test $# -eq 0; then - usage 1 1>&2 -fi - -while test $# -gt 0; do - case "$1" in - -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - case $1 in - --prefix=*) - prefix=$optarg - if test $exec_prefix_set = no ; then - exec_prefix=$optarg - fi - ;; - --prefix) - echo_prefix=yes - ;; - --exec-prefix=*) - exec_prefix=$optarg - exec_prefix_set=yes - ;; - --exec-prefix) - echo_exec_prefix=yes - ;; - --version) - echo @DECAF_VERSION@ - ;; - --help) - usage 0 - ;; - --cflags) - echo_cflags=yes - ;; - --libs) - echo_libs=yes - ;; - *) - usage 1 1>&2 - ;; - esac - shift -done - -if test "$echo_prefix" = "yes"; then - echo $prefix -fi - -if test "$echo_exec_prefix" = "yes"; then - echo $exec_prefix -fi - -if test "$echo_cflags" = "yes"; then - if test "$includedir" != "/usr/include" ; then - echo -I$includedir - fi -fi - -if test "$echo_libs" = "yes"; then - if test @libdir@ != /usr/lib ; then - my_linker_flags="-L@libdir@" - fi - echo ${my_linker_flags} -ldecaf -fi - - - -
diff --git a/src/decaf/decaf.pc.in b/src/decaf/decaf.pc.in deleted file mode 100644 index 2227142..0000000 --- a/src/decaf/decaf.pc.in +++ /dev/null
@@ -1,27 +0,0 @@ -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- - -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: Decaf C++ Library -Description: Decaf C++ Java-like API library. -Version: @VERSION@ -Libs: -L${libdir} -l@DECAF_LIBRARY_NAME@-@DECAF_API_VERSION@ -lpthread -ldl -luuid -Cflags: -I${includedir}/@DECAF_LIBRARY_NAME@-@DECAF_API_VERSION@ -I${libdir}/@DECAF_LIBRARY_NAME@-@DECAF_API_VERSION@/include
diff --git a/src/decaf/doxygen-include.am b/src/decaf/doxygen-include.am deleted file mode 100644 index ab87a45..0000000 --- a/src/decaf/doxygen-include.am +++ /dev/null
@@ -1,203 +0,0 @@ -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- - -# Copyright (C) 2004 Oren Ben-Kiki -# This file is distributed under the same terms as the Automake macro files. - -# Generate automatic documentation using Doxygen. Goals and variables values -# are controlled by the various DX_COND_??? conditionals set by autoconf. -# -# The provided goals are: -# doxygen-doc: Generate all doxygen documentation. -# doxygen-run: Run doxygen, which will generate some of the documentation -# (HTML, CHM, CHI, MAN, RTF, XML) but will not do the post -# processing required for the rest of it (PS, PDF, and some MAN). -# doxygen-man: Rename some doxygen generated man pages. -# doxygen-ps: Generate doxygen PostScript documentation. -# doxygen-pdf: Generate doxygen PDF documentation. -# -# Note that by default these are not integrated into the automake goals. If -# doxygen is used to generate man pages, you can achieve this integration by -# setting man3_MANS to the list of man pages generated and then adding the -# dependency: -# -# $(man3_MANS): doxygen-doc -# -# This will cause make to run doxygen and generate all the documentation. -# -# The following variable is intended for use in Makefile.am: -# -# DX_CLEANFILES = everything to clean. -# -# This is usually added to MOSTLYCLEANFILES. - -## --------------------------------- ## -## Format-independent Doxygen rules. ## -## --------------------------------- ## - -if DX_COND_doc - -## ------------------------------- ## -## Rules specific for HTML output. ## -## ------------------------------- ## - -if DX_COND_html - -DX_CLEAN_HTML = @DX_DOCDIR@/html - -endif DX_COND_html - -## ------------------------------ ## -## Rules specific for CHM output. ## -## ------------------------------ ## - -if DX_COND_chm - -DX_CLEAN_CHM = @DX_DOCDIR@/chm - -if DX_COND_chi - -DX_CLEAN_CHI = @DX_DOCDIR@/@PACKAGE@.chi - -endif DX_COND_chi - -endif DX_COND_chm - -## ------------------------------ ## -## Rules specific for MAN output. ## -## ------------------------------ ## - -if DX_COND_man - -DX_CLEAN_MAN = @DX_DOCDIR@/man - -endif DX_COND_man - -## ------------------------------ ## -## Rules specific for RTF output. ## -## ------------------------------ ## - -if DX_COND_rtf - -DX_CLEAN_RTF = @DX_DOCDIR@/rtf - -endif DX_COND_rtf - -## ------------------------------ ## -## Rules specific for XML output. ## -## ------------------------------ ## - -if DX_COND_xml - -DX_CLEAN_XML = @DX_DOCDIR@/xml - -endif DX_COND_xml - -## ----------------------------- ## -## Rules specific for PS output. ## -## ----------------------------- ## - -if DX_COND_ps - -DX_CLEAN_PS = @DX_DOCDIR@/@PACKAGE@.ps - -DX_PS_GOAL = doxygen-ps - -doxygen-ps: @DX_DOCDIR@/@PACKAGE@.ps - -@DX_DOCDIR@/@PACKAGE@.ps: @DX_DOCDIR@/@PACKAGE@.tag - cd @DX_DOCDIR@/latex; \ - rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \ - $(DX_LATEX) refman.tex; \ - $(MAKEINDEX_PATH) refman.idx; \ - $(DX_LATEX) refman.tex; \ - countdown=5; \ - while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \ - refman.log > /dev/null 2>&1 \ - && test $$countdown -gt 0; do \ - $(DX_LATEX) refman.tex; \ - countdown=`expr $$countdown - 1`; \ - done; \ - $(DX_DVIPS) -o ../@PACKAGE@.ps refman.dvi - -endif DX_COND_ps - -## ------------------------------ ## -## Rules specific for PDF output. ## -## ------------------------------ ## - -if DX_COND_pdf - -DX_CLEAN_PDF = @DX_DOCDIR@/@PACKAGE@.pdf - -DX_PDF_GOAL = doxygen-pdf - -doxygen-pdf: @DX_DOCDIR@/@PACKAGE@.pdf - -@DX_DOCDIR@/@PACKAGE@.pdf: @DX_DOCDIR@/@PACKAGE@.tag - cd @DX_DOCDIR@/latex; \ - rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \ - $(DX_PDFLATEX) refman.tex; \ - $(DX_MAKEINDEX) refman.idx; \ - $(DX_PDFLATEX) refman.tex; \ - countdown=5; \ - while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \ - refman.log > /dev/null 2>&1 \ - && test $$countdown -gt 0; do \ - $(DX_PDFLATEX) refman.tex; \ - countdown=`expr $$countdown - 1`; \ - done; \ - mv refman.pdf ../@PACKAGE@.pdf - -endif DX_COND_pdf - -## ------------------------------------------------- ## -## Rules specific for LaTeX (shared for PS and PDF). ## -## ------------------------------------------------- ## - -if DX_COND_latex - -DX_CLEAN_LATEX = @DX_DOCDIR@/latex - -endif DX_COND_latex - -.PHONY: doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL) - -.INTERMEDIATE: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL) - -doxygen-run: @DX_DOCDIR@/@PACKAGE@.tag - -doxygen-doc: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL) - -@DX_DOCDIR@/@PACKAGE@.tag: $(DX_CONFIG) $(pkginclude_HEADERS) - rm -rf @DX_DOCDIR@ - $(DX_ENV) $(DX_DOXYGEN) $(srcdir)/$(DX_CONFIG) - -DX_CLEANFILES = \ - @DX_DOCDIR@/@PACKAGE@.tag \ - -r \ - $(DX_CLEAN_HTML) \ - $(DX_CLEAN_CHM) \ - $(DX_CLEAN_CHI) \ - $(DX_CLEAN_MAN) \ - $(DX_CLEAN_RTF) \ - $(DX_CLEAN_XML) \ - $(DX_CLEAN_PS) \ - $(DX_CLEAN_PDF) \ - $(DX_CLEAN_LATEX) - -endif DX_COND_doc
diff --git a/src/decaf/doxygen.cfg b/src/decaf/doxygen.cfg deleted file mode 100644 index c7b526a..0000000 --- a/src/decaf/doxygen.cfg +++ /dev/null
@@ -1,228 +0,0 @@ -# Doxyfile 1.3.7 -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = $(PROJECT)-$(VERSION) -PROJECT_NUMBER = -OUTPUT_DIRECTORY = $(DOCDIR) -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -STRIP_FROM_INC_PATH = $(SRCDIR) -FULL_PATH_NAMES = YES -STRIP_FROM_PATH = $(SRCDIR) -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = YES -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = YES -INHERIT_DOCS = YES -DISTRIBUTE_GROUP_DOC = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = NO -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = NO -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = YES -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = $(SRCDIR) -FILE_PATTERNS = *.c *.h -RECURSIVE = YES -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = $(SRCDIR) -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = $(GENERATE_HTML) -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = $(GENERATE_CHM) -CHM_FILE = ../$(PROJECT).chm -HHC_LOCATION = $(HHC_PATH) -GENERATE_CHI = $(GENERATE_CHI) -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = $(GENERATE_LATEX) -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = $(PAPER_SIZE) -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = YES -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = $(GENERATE_RTF) -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = $(GENERATE_MAN) -MAN_OUTPUT = man -MAN_EXTENSION = .1 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = $(GENERATE_XML) -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = $(DOCDIR)/$(PROJECT).tag -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = $(PERL_PATH) -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = $(HAVE_DOT) -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = NO -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = $(DOT_PATH) -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 0 -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO
diff --git a/src/decaf/m4/ac_doxygen.m4 b/src/decaf/m4/ac_doxygen.m4 deleted file mode 100644 index 5248d71..0000000 --- a/src/decaf/m4/ac_doxygen.m4 +++ /dev/null
@@ -1,324 +0,0 @@ -# -# Copyright 2007 Oren Ben-Kiki -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. See the License for the specific language governing -# permissions and limitations under the License. -# - - -# Generate automatic documentation using Doxygen. Works in concert with the -# aminclude.m4 file and a compatible doxygen configuration file. Defines the -# following public macros: -# -# DX_???_FEATURE(ON|OFF) - control the default setting fo a Doxygen feature. -# Supported features are 'DOXYGEN' itself, 'DOT' for generating graphics, -# 'HTML' for plain HTML, 'CHM' for compressed HTML help (for MS users), 'CHI' -# for generating a seperate .chi file by the .chm file, and 'MAN', 'RTF', -# 'XML', 'PDF' and 'PS' for the appropriate output formats. The environment -# variable DOXYGEN_PAPER_SIZE may be specified to override the default 'a4wide' -# paper size. -# -# By default, HTML, PDF and PS documentation is generated as this seems to be -# the most popular and portable combination. MAN pages created by Doxygen are -# usually problematic, though by picking an appropriate subset and doing some -# massaging they might be better than nothing. CHM and RTF are specific for MS -# (note that you can't generate both HTML and CHM at the same time). The XML is -# rather useless unless you apply specialized post-processing to it. -# -# The macro mainly controls the default state of the feature. The use can -# override the default by specifying --enable or --disable. The macros ensure -# that contradictory flags are not given (e.g., --enable-doxygen-html and -# --enable-doxygen-chm, --enable-doxygen-anything with --disable-doxygen, etc.) -# Finally, each feature will be automatically disabled (with a warning) if the -# required programs are missing. -# -# Once all the feature defaults have been specified, call DX_INIT_DOXYGEN with -# the following parameters: a one-word name for the project for use as a -# filename base etc., an optional configuration file name (the default is -# 'Doxyfile', the same as Doxygen's default), and an optional output directory -# name (the default is 'doxygen-doc'). - -## ----------## -## Defaults. ## -## ----------## - -DX_ENV="" -AC_DEFUN([DX_FEATURE_doc], ON) -AC_DEFUN([DX_FEATURE_dot], ON) -AC_DEFUN([DX_FEATURE_man], OFF) -AC_DEFUN([DX_FEATURE_html], ON) -AC_DEFUN([DX_FEATURE_chm], OFF) -AC_DEFUN([DX_FEATURE_chi], OFF) -AC_DEFUN([DX_FEATURE_rtf], OFF) -AC_DEFUN([DX_FEATURE_xml], OFF) -AC_DEFUN([DX_FEATURE_pdf], ON) -AC_DEFUN([DX_FEATURE_ps], ON) - -## --------------- ## -## Private macros. ## -## --------------- ## - -# DX_ENV_APPEND(VARIABLE, VALUE) -# ------------------------------ -# Append VARIABLE="VALUE" to DX_ENV for invoking doxygen. -AC_DEFUN([DX_ENV_APPEND], [AC_SUBST([DX_ENV], ["$DX_ENV $1='$2'"])]) - -# DX_DIRNAME_EXPR -# --------------- -# Expand into a shell expression prints the directory part of a path. -AC_DEFUN([DX_DIRNAME_EXPR], - [[expr ".$1" : '\(\.\)[^/]*$' \| "x$1" : 'x\(.*\)/[^/]*$']]) - -# DX_IF_FEATURE(FEATURE, IF-ON, IF-OFF) -# ------------------------------------- -# Expands according to the M4 (static) status of the feature. -AC_DEFUN([DX_IF_FEATURE], [ifelse(DX_FEATURE_$1, ON, [$2], [$3])]) - -# DX_REQUIRE_PROG(VARIABLE, PROGRAM) -# ---------------------------------- -# Require the specified program to be found for the DX_CURRENT_FEATURE to work. -AC_DEFUN([DX_REQUIRE_PROG], [ -AC_PATH_TOOL([$1], [$2]) -if test "$DX_FLAG_[]DX_CURRENT_FEATURE$$1" = 1; then - AC_MSG_WARN([$2 not found - will not DX_CURRENT_DESCRIPTION]) - AC_SUBST([DX_FLAG_[]DX_CURRENT_FEATURE], 0) -fi -]) - -# DX_TEST_FEATURE(FEATURE) -# ------------------------ -# Expand to a shell expression testing whether the feature is active. -AC_DEFUN([DX_TEST_FEATURE], [test "$DX_FLAG_$1" = 1]) - -# DX_CHECK_DEPEND(REQUIRED_FEATURE, REQUIRED_STATE) -# ------------------------------------------------- -# Verify that a required features has the right state before trying to turn on -# the DX_CURRENT_FEATURE. -AC_DEFUN([DX_CHECK_DEPEND], [ -test "$DX_FLAG_$1" = "$2" \ -|| AC_MSG_ERROR([doxygen-DX_CURRENT_FEATURE ifelse([$2], 1, - requires, contradicts) doxygen-DX_CURRENT_FEATURE]) -]) - -# DX_CLEAR_DEPEND(FEATURE, REQUIRED_FEATURE, REQUIRED_STATE) -# ---------------------------------------------------------- -# Turn off the DX_CURRENT_FEATURE if the required feature is off. -AC_DEFUN([DX_CLEAR_DEPEND], [ -test "$DX_FLAG_$1" = "$2" || AC_SUBST([DX_FLAG_[]DX_CURRENT_FEATURE], 0) -]) - -# DX_FEATURE_ARG(FEATURE, DESCRIPTION, -# CHECK_DEPEND, CLEAR_DEPEND, -# REQUIRE, DO-IF-ON, DO-IF-OFF) -# -------------------------------------------- -# Parse the command-line option controlling a feature. CHECK_DEPEND is called -# if the user explicitly turns the feature on (and invokes DX_CHECK_DEPEND), -# otherwise CLEAR_DEPEND is called to turn off the default state if a required -# feature is disabled (using DX_CLEAR_DEPEND). REQUIRE performs additional -# requirement tests (DX_REQUIRE_PROG). Finally, an automake flag is set and -# DO-IF-ON or DO-IF-OFF are called according to the final state of the feature. -AC_DEFUN([DX_ARG_ABLE], [ - AC_DEFUN([DX_CURRENT_FEATURE], [$1]) - AC_DEFUN([DX_CURRENT_DESCRIPTION], [$2]) - AC_ARG_ENABLE(doxygen-$1, - [AS_HELP_STRING(DX_IF_FEATURE([$1], [--disable-doxygen-$1], - [--enable-doxygen-$1]), - DX_IF_FEATURE([$1], [don't $2], [$2]))], - [ -case "$enableval" in -#( -y|Y|yes|Yes|YES) - AC_SUBST([DX_FLAG_$1], 1) - $3 -;; #( -n|N|no|No|NO) - AC_SUBST([DX_FLAG_$1], 0) -;; #( -*) - AC_MSG_ERROR([invalid value '$enableval' given to doxygen-$1]) -;; -esac -], [ -AC_SUBST([DX_FLAG_$1], [DX_IF_FEATURE([$1], 1, 0)]) -$4 -]) -if DX_TEST_FEATURE([$1]); then - $5 - : -fi -if DX_TEST_FEATURE([$1]); then - AM_CONDITIONAL(DX_COND_$1, :) - $6 - : -else - AM_CONDITIONAL(DX_COND_$1, false) - $7 - : -fi -]) - -## -------------- ## -## Public macros. ## -## -------------- ## - -# DX_XXX_FEATURE(DEFAULT_STATE) -# ----------------------------- -AC_DEFUN([DX_DOXYGEN_FEATURE], [AC_DEFUN([DX_FEATURE_doc], [$1])]) -AC_DEFUN([DX_MAN_FEATURE], [AC_DEFUN([DX_FEATURE_man], [$1])]) -AC_DEFUN([DX_HTML_FEATURE], [AC_DEFUN([DX_FEATURE_html], [$1])]) -AC_DEFUN([DX_CHM_FEATURE], [AC_DEFUN([DX_FEATURE_chm], [$1])]) -AC_DEFUN([DX_CHI_FEATURE], [AC_DEFUN([DX_FEATURE_chi], [$1])]) -AC_DEFUN([DX_RTF_FEATURE], [AC_DEFUN([DX_FEATURE_rtf], [$1])]) -AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])]) -AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])]) -AC_DEFUN([DX_PDF_FEATURE], [AC_DEFUN([DX_FEATURE_pdf], [$1])]) -AC_DEFUN([DX_PS_FEATURE], [AC_DEFUN([DX_FEATURE_ps], [$1])]) - -# DX_INIT_DOXYGEN(PROJECT, [CONFIG-FILE], [OUTPUT-DOC-DIR]) -# --------------------------------------------------------- -# PROJECT also serves as the base name for the documentation files. -# The default CONFIG-FILE is "Doxyfile" and OUTPUT-DOC-DIR is "doxygen-doc". -AC_DEFUN([DX_INIT_DOXYGEN], [ - -# Files: -AC_SUBST([DX_PROJECT], [$1]) -AC_SUBST([DX_CONFIG], [ifelse([$2], [], Doxyfile, [$2])]) -AC_SUBST([DX_DOCDIR], [ifelse([$3], [], doxygen-doc, [$3])]) - -# Environment variables used inside doxygen.cfg: -DX_ENV_APPEND(SRCDIR, $srcdir) -DX_ENV_APPEND(PROJECT, $DX_PROJECT) -DX_ENV_APPEND(DOCDIR, $DX_DOCDIR) -DX_ENV_APPEND(VERSION, $PACKAGE_VERSION) - -# Doxygen itself: -DX_ARG_ABLE(doc, [generate any doxygen documentation], - [], - [], - [DX_REQUIRE_PROG([DX_DOXYGEN], doxygen) - DX_REQUIRE_PROG([DX_PERL], perl)], - [DX_ENV_APPEND(PERL_PATH, $DX_PERL)]) - -# Dot for graphics: -DX_ARG_ABLE(dot, [generate graphics for doxygen documentation], - [DX_CHECK_DEPEND(doc, 1)], - [DX_CLEAR_DEPEND(doc, 1)], - [DX_REQUIRE_PROG([DX_DOT], dot)], - [DX_ENV_APPEND(HAVE_DOT, YES) - DX_ENV_APPEND(DOT_PATH, [`DX_DIRNAME_EXPR($DX_DOT)`])], - [DX_ENV_APPEND(HAVE_DOT, NO)]) - -# Man pages generation: -DX_ARG_ABLE(man, [generate doxygen manual pages], - [DX_CHECK_DEPEND(doc, 1)], - [DX_CLEAR_DEPEND(doc, 1)], - [], - [DX_ENV_APPEND(GENERATE_MAN, YES)], - [DX_ENV_APPEND(GENERATE_MAN, NO)]) - -# RTF file generation: -DX_ARG_ABLE(rtf, [generate doxygen RTF documentation], - [DX_CHECK_DEPEND(doc, 1)], - [DX_CLEAR_DEPEND(doc, 1)], - [], - [DX_ENV_APPEND(GENERATE_RTF, YES)], - [DX_ENV_APPEND(GENERATE_RTF, NO)]) - -# XML file generation: -DX_ARG_ABLE(xml, [generate doxygen XML documentation], - [DX_CHECK_DEPEND(doc, 1)], - [DX_CLEAR_DEPEND(doc, 1)], - [], - [DX_ENV_APPEND(GENERATE_XML, YES)], - [DX_ENV_APPEND(GENERATE_XML, NO)]) - -# (Compressed) HTML help generation: -DX_ARG_ABLE(chm, [generate doxygen compressed HTML help documentation], - [DX_CHECK_DEPEND(doc, 1)], - [DX_CLEAR_DEPEND(doc, 1)], - [DX_REQUIRE_PROG([DX_HHC], hhc)], - [DX_ENV_APPEND(HHC_PATH, $DX_HHC) - DX_ENV_APPEND(GENERATE_HTML, YES) - DX_ENV_APPEND(GENERATE_HTMLHELP, YES)], - [DX_ENV_APPEND(GENERATE_HTMLHELP, NO)]) - -# Seperate CHI file generation. -DX_ARG_ABLE(chi, [generate doxygen seperate compressed HTML help index file], - [DX_CHECK_DEPEND(chm, 1)], - [DX_CLEAR_DEPEND(chm, 1)], - [], - [DX_ENV_APPEND(GENERATE_CHI, YES)], - [DX_ENV_APPEND(GENERATE_CHI, NO)]) - -# Plain HTML pages generation: -DX_ARG_ABLE(html, [generate doxygen plain HTML documentation], - [DX_CHECK_DEPEND(doc, 1) DX_CHECK_DEPEND(chm, 0)], - [DX_CLEAR_DEPEND(doc, 1) DX_CLEAR_DEPEND(chm, 0)], - [], - [DX_ENV_APPEND(GENERATE_HTML, YES)], - [DX_TEST_FEATURE(chm) || DX_ENV_APPEND(GENERATE_HTML, NO)]) - -# PostScript file generation: -DX_ARG_ABLE(ps, [generate doxygen PostScript documentation], - [DX_CHECK_DEPEND(doc, 1)], - [DX_CLEAR_DEPEND(doc, 1)], - [DX_REQUIRE_PROG([DX_LATEX], latex) - DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex) - DX_REQUIRE_PROG([DX_DVIPS], dvips) - DX_REQUIRE_PROG([DX_EGREP], egrep)]) - -# PDF file generation: -DX_ARG_ABLE(pdf, [generate doxygen PDF documentation], - [DX_CHECK_DEPEND(doc, 1)], - [DX_CLEAR_DEPEND(doc, 1)], - [DX_REQUIRE_PROG([DX_PDFLATEX], pdflatex) - DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex) - DX_REQUIRE_PROG([DX_EGREP], egrep)]) - -# LaTeX generation for PS and/or PDF: -if DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf); then - AM_CONDITIONAL(DX_COND_latex, :) - DX_ENV_APPEND(GENERATE_LATEX, YES) -else - AM_CONDITIONAL(DX_COND_latex, false) - DX_ENV_APPEND(GENERATE_LATEX, NO) -fi - -# Paper size for PS and/or PDF: -AC_ARG_VAR(DOXYGEN_PAPER_SIZE, - [a4wide (default), a4, letter, legal or executive]) -case "$DOXYGEN_PAPER_SIZE" in -#( -"") - AC_SUBST(DOXYGEN_PAPER_SIZE, "") -;; #( -a4wide|a4|letter|legal|executive) - DX_ENV_APPEND(PAPER_SIZE, $DOXYGEN_PAPER_SIZE) -;; #( -*) - AC_MSG_ERROR([unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE']) -;; -esac - -#For debugging: -#echo DX_FLAG_doc=$DX_FLAG_doc -#echo DX_FLAG_dot=$DX_FLAG_dot -#echo DX_FLAG_man=$DX_FLAG_man -#echo DX_FLAG_html=$DX_FLAG_html -#echo DX_FLAG_chm=$DX_FLAG_chm -#echo DX_FLAG_chi=$DX_FLAG_chi -#echo DX_FLAG_rtf=$DX_FLAG_rtf -#echo DX_FLAG_xml=$DX_FLAG_xml -#echo DX_FLAG_pdf=$DX_FLAG_pdf -#echo DX_FLAG_ps=$DX_FLAG_ps -#echo DX_ENV=$DX_ENV -])
diff --git a/src/decaf/m4/apr_tools.m4 b/src/decaf/m4/apr_tools.m4 deleted file mode 100644 index c0aeedb..0000000 --- a/src/decaf/m4/apr_tools.m4 +++ /dev/null
@@ -1,96 +0,0 @@ -dnl -------------------------------------------------------- -*- autoconf -*- -dnl Licensed to the Apache Software Foundation (ASF) under one or more -dnl contributor license agreements. See the NOTICE file distributed with -dnl this work for additional information regarding copyright ownership. -dnl The ASF licenses this file to You under the Apache License, Version 2.0 -dnl (the "License"); you may not use this file except in compliance with -dnl the License. You may obtain a copy of the License at -dnl -dnl http://www.apache.org/licenses/LICENSE-2.0 -dnl -dnl Unless required by applicable law or agreed to in writing, software -dnl distributed under the License is distributed on an "AS IS" BASIS, -dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -dnl See the License for the specific language governing permissions and -dnl limitations under the License. -dnl -------------------------------------------------------- -*- autoconf -*- -dnl -dnl This Macro File defines functions that help to manage the libraries -dnl dependance on the Apache Portable Runtime. -dnl -dnl DECAF_CONFIGURE_APR() -dnl -dnl Check configure options and assign variables related to -dnl the Apache Portable Runtime (APR) library. -dnl - -AC_DEFUN([DECAF_CONFIGURE_APR], -[ - AC_MSG_NOTICE([Apache Portable Runtime (APR) library configuration]) - APR_FIND_APR([], [], 1, [0 1]) - APR_FIND_APU([], [], 1, [0 1]) - - if test $apr_found = "no"; then - AC_MSG_WARN([APR not found]) - DECAF_DOWNLOAD_APR - fi - - if test $apu_found = "no"; then - AC_MSG_WARN([APR Utils not found]) - DECAF_DOWNLOAD_APU - fi - - dnl Get build information from APR - - CPPFLAGS="$CPPFLAGS `$apr_config --cppflags --includes`" - if test $? -ne 0; then - AC_MSG_ERROR([apr-config --cppflags failed]) - fi - - CFLAGS="$CFLAGS `$apr_config --cflags --includes`" - if test $? -ne 0; then - AC_MSG_ERROR([apr-config --cflags failed]) - fi - - LDFLAGS="$LDFLAGS `$apr_config --ldflags`" - if test $? -ne 0; then - AC_MSG_ERROR([apr-config --ldflags failed]) - fi - LDFLAGS="$LDFLAGS `$apu_config --ldflags`" - if test $? -ne 0; then - AC_MSG_ERROR([apu-config --ldflags failed]) - fi - - APR_LIBS="`$apr_config --link-libtool --libs`" - if test $? -ne 0; then - AC_MSG_ERROR([apr-config --link-libtool --libs failed]) - fi - APR_LIBS="`$apu_config --link-libtool --libs`" - if test $? -ne 0; then - AC_MSG_ERROR([apu-config --link-libtool --libs failed]) - fi - - AC_SUBST([APR_LIBS]) -]) - -dnl DECAF_DOWNLOAD_APR() -dnl no apr found, print out a message telling the user what to do -AC_DEFUN([DECAF_DOWNLOAD_APR], -[ - echo "The Apache Portable Runtime (APR) library cannot be found." - echo "Please install APR on this system and supply the appropriate" - echo "--with-apr option to 'configure'" - - AC_MSG_ERROR([no suitable APR found]) -]) - -dnl DECAF_DOWNLOAD_APU() -dnl no apr-utils found, print out a message telling the user what to do -AC_DEFUN([DECAF_DOWNLOAD_APU], -[ - echo "The Apache Portable Runtime (APR) Utils library cannot be found." - echo "Please install APR Utils on this system and supply the appropriate" - echo "--with-apr option to 'configure'" - - AC_MSG_ERROR([no suitable APR Utils found]) -])
diff --git a/src/decaf/m4/check_addrinfo.m4 b/src/decaf/m4/check_addrinfo.m4 deleted file mode 100644 index 13eb272..0000000 --- a/src/decaf/m4/check_addrinfo.m4 +++ /dev/null
@@ -1,48 +0,0 @@ -dnl -------------------------------------------------------- -*- autoconf -*- -dnl Licensed to the Apache Software Foundation (ASF) under one or more -dnl contributor license agreements. See the NOTICE file distributed with -dnl this work for additional information regarding copyright ownership. -dnl The ASF licenses this file to You under the Apache License, Version 2.0 -dnl (the "License"); you may not use this file except in compliance with -dnl the License. You may obtain a copy of the License at -dnl -dnl http://www.apache.org/licenses/LICENSE-2.0 -dnl -dnl Unless required by applicable law or agreed to in writing, software -dnl distributed under the License is distributed on an "AS IS" BASIS, -dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -dnl See the License for the specific language governing permissions and -dnl limitations under the License. - -dnl -dnl check_addrinfo.m4 - checks support for addrinfo structure -dnl -dnl This macro determines if the platform supports the addrinfo structure. -dnl If this platform supports addrinfo, defines HAVE_STRUCT_ADDRINFO. -dnl - -AC_DEFUN([CHECK_ADDRINFO], [ - AC_MSG_CHECKING([whether struct addrinfo is defined]) - AC_TRY_COMPILE( - [ #include <stdio.h> - #ifdef HAVE_UNISTD_H - # include <unistd.h> - #endif - #include <sys/types.h> - #include <sys/socket.h> - #include <netdb.h> - ], - [ - do { - struct addrinfo a; - (void) a.ai_flags; - } while(0) - ], - [ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_STRUCT_ADDRINFO,, [define if you have struct addrinfo]) - ], - [ - AC_MSG_RESULT(no) - ]) -])
diff --git a/src/decaf/m4/check_visibility.m4 b/src/decaf/m4/check_visibility.m4 deleted file mode 100644 index dd1c3b3..0000000 --- a/src/decaf/m4/check_visibility.m4 +++ /dev/null
@@ -1,45 +0,0 @@ -dnl -------------------------------------------------------- -*- autoconf -*- -dnl Licensed to the Apache Software Foundation (ASF) under one or more -dnl contributor license agreements. See the NOTICE file distributed with -dnl this work for additional information regarding copyright ownership. -dnl The ASF licenses this file to You under the Apache License, Version 2.0 -dnl (the "License"); you may not use this file except in compliance with -dnl the License. You may obtain a copy of the License at -dnl -dnl http://www.apache.org/licenses/LICENSE-2.0 -dnl -dnl Unless required by applicable law or agreed to in writing, software -dnl distributed under the License is distributed on an "AS IS" BASIS, -dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -dnl See the License for the specific language governing permissions and -dnl limitations under the License. - -dnl -dnl check_visibility.m4 - checks support for visibility family of CXX flags -dnl -dnl This macro determines whether or not the CXX flags -fvisibility and -dnl -fvisibility-inlines-hidden are allowed with the compiler. -dnl -dnl If so, the result is "yes" and HAVE_VISIBILITY_OPTIONS is defined. Else, the -dnl result is "no". -dnl - -AC_DEFUN([CHECK_VISIBILITY], [ - AC_MSG_CHECKING([whether -fvisibility flags work]) - - OLDCXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -Werror -fvisibility=hidden -fvisibility-inlines-hidden" - - AC_TRY_COMPILE([], - [ - ], - [ - AC_MSG_RESULT(yes) - AC_DEFINE([HAVE_VISIBILITY_OPTIONS],[], [define if you have -fvisibility options]) - ], - [ - AC_MSG_RESULT(no) - ]) - - CXXFLAGS="$OLDCXXFLAGS" -])
diff --git a/src/decaf/m4/find_apr.m4 b/src/decaf/m4/find_apr.m4 deleted file mode 100644 index e437534..0000000 --- a/src/decaf/m4/find_apr.m4 +++ /dev/null
@@ -1,167 +0,0 @@ -dnl -------------------------------------------------------- -*- autoconf -*- -dnl Licensed to the Apache Software Foundation (ASF) under one or more -dnl contributor license agreements. See the NOTICE file distributed with -dnl this work for additional information regarding copyright ownership. -dnl The ASF licenses this file to You under the Apache License, Version 2.0 -dnl (the "License"); you may not use this file except in compliance with -dnl the License. You may obtain a copy of the License at -dnl -dnl http://www.apache.org/licenses/LICENSE-2.0 -dnl -dnl Unless required by applicable law or agreed to in writing, software -dnl distributed under the License is distributed on an "AS IS" BASIS, -dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -dnl See the License for the specific language governing permissions and -dnl limitations under the License. -dnl -------------------------------------------------------- -*- autoconf -*- -dnl -dnl find_apr.m4 : locate the APR include files and libraries -dnl -dnl This macro file can be used by applications to find and use the APR -dnl library. It provides a standardized mechanism for using APR. It supports -dnl embedding APR into the application source, or locating an installed -dnl copy of APR. -dnl -dnl APR_FIND_APR(srcdir, builddir, implicit-install-check, acceptable-majors) -dnl -dnl where srcdir is the location of the bundled APR source directory, or -dnl empty if source is not bundled. -dnl -dnl where builddir is the location where the bundled APR will will be built, -dnl or empty if the build will occur in the srcdir. -dnl -dnl where implicit-install-check set to 1 indicates if there is no -dnl --with-apr option specified, we will look for installed copies. -dnl -dnl where acceptable-majors is a space separated list of acceptable major -dnl version numbers. Often only a single major version will be acceptable. -dnl If multiple versions are specified, and --with-apr=PREFIX or the -dnl implicit installed search are used, then the first (leftmost) version -dnl in the list that is found will be used. Currently defaults to [0 1]. -dnl -dnl Sets the following variables on exit: -dnl -dnl apr_found : "yes", "no", "reconfig" -dnl -dnl apr_config : If the apr-config tool exists, this refers to it. If -dnl apr_found is "reconfig", then the bundled directory -dnl should be reconfigured *before* using apr_config. -dnl -dnl Note: this macro file assumes that apr-config has been installed; it -dnl is normally considered a required part of an APR installation. -dnl -dnl If a bundled source directory is available and needs to be (re)configured, -dnl then apr_found is set to "reconfig". The caller should reconfigure the -dnl (passed-in) source directory, placing the result in the build directory, -dnl as appropriate. -dnl -dnl If apr_found is "yes" or "reconfig", then the caller should use the -dnl value of apr_config to fetch any necessary build/link information. -dnl - -AC_DEFUN([APR_FIND_APR], [ - apr_found="no" - - if test "$target_os" = "os2-emx"; then - # Scripts don't pass test -x on OS/2 - TEST_X="test -f" - else - TEST_X="test -x" - fi - - ifelse([$4], [], [ - ifdef(AC_WARNING,AC_WARNING([$0: missing argument 4 (acceptable-majors): Defaulting to APR 0.x then APR 1.x])) - acceptable_majors="0 1"], - [acceptable_majors="$4"]) - - apr_temp_acceptable_apr_config="" - for apr_temp_major in $acceptable_majors - do - case $apr_temp_major in - 0) - apr_temp_acceptable_apr_config="$apr_temp_acceptable_apr_config apr-config" - ;; - *) - apr_temp_acceptable_apr_config="$apr_temp_acceptable_apr_config apr-$apr_temp_major-config" - ;; - esac - done - - AC_MSG_CHECKING(for APR) - AC_ARG_WITH(apr, - [ --with-apr=PATH prefix for installed APR, path to APR build tree, - or the full path to apr-config], - [ - if test "$withval" = "no" || test "$withval" = "yes"; then - AC_MSG_ERROR([--with-apr requires a directory or file to be provided]) - fi - - for apr_temp_apr_config_file in $apr_temp_acceptable_apr_config - do - for lookdir in "$withval/bin" "$withval" - do - if $TEST_X "$lookdir/$apr_temp_apr_config_file"; then - apr_found="yes" - apr_config="$lookdir/$apr_temp_apr_config_file" - break 2 - fi - done - done - - if test "$apr_found" != "yes" && $TEST_X "$withval" && $withval --help > /dev/null 2>&1 ; then - apr_found="yes" - apr_config="$withval" - fi - - dnl if --with-apr is used, it is a fatal error for its argument - dnl to be invalid - if test "$apr_found" != "yes"; then - AC_MSG_ERROR([the --with-apr parameter is incorrect. It must specify an install prefix, a build directory, or an apr-config file.]) - fi - ],[ - dnl If we allow installed copies, check those before using bundled copy. - if test -n "$3" && test "$3" = "1"; then - for apr_temp_apr_config_file in $apr_temp_acceptable_apr_config - do - if $apr_temp_apr_config_file --help > /dev/null 2>&1 ; then - apr_found="yes" - apr_config="$apr_temp_apr_config_file" - break - else - dnl look in some standard places - for lookdir in /usr /usr/local /usr/local/apr /opt/apr; do - if $TEST_X "$lookdir/bin/$apr_temp_apr_config_file"; then - apr_found="yes" - apr_config="$lookdir/bin/$apr_temp_apr_config_file" - break 2 - fi - done - fi - done - fi - dnl if we have not found anything yet and have bundled source, use that - if test "$apr_found" = "no" && test -d "$1"; then - apr_temp_abs_srcdir="`cd $1 && pwd`" - apr_found="reconfig" - apr_bundled_major="`sed -n '/#define.*APR_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"$1/include/apr_version.h\"`" - case $apr_bundled_major in - "") - AC_MSG_ERROR([failed to find major version of bundled APR]) - ;; - 0) - apr_temp_apr_config_file="apr-config" - ;; - *) - apr_temp_apr_config_file="apr-$apr_bundled_major-config" - ;; - esac - if test -n "$2"; then - apr_config="$2/$apr_temp_apr_config_file" - else - apr_config="$1/$apr_temp_apr_config_file" - fi - fi - ]) - - AC_MSG_RESULT($apr_found) -])
diff --git a/src/decaf/m4/find_apu.m4 b/src/decaf/m4/find_apu.m4 deleted file mode 100644 index e29bc60..0000000 --- a/src/decaf/m4/find_apu.m4 +++ /dev/null
@@ -1,176 +0,0 @@ -dnl -------------------------------------------------------- -*- autoconf -*- -dnl Copyright 2002-2005 The Apache Software Foundation or its licensors, as -dnl applicable. -dnl -dnl Licensed under the Apache License, Version 2.0 (the "License"); -dnl you may not use this file except in compliance with the License. -dnl You may obtain a copy of the License at -dnl -dnl http://www.apache.org/licenses/LICENSE-2.0 -dnl -dnl Unless required by applicable law or agreed to in writing, software -dnl distributed under the License is distributed on an "AS IS" BASIS, -dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -dnl See the License for the specific language governing permissions and -dnl limitations under the License. - -dnl -dnl find_apu.m4 : locate the APR-util (APU) include files and libraries -dnl -dnl This macro file can be used by applications to find and use the APU -dnl library. It provides a standardized mechanism for using APU. It supports -dnl embedding APU into the application source, or locating an installed -dnl copy of APU. -dnl -dnl APR_FIND_APU(srcdir, builddir, implicit-install-check, acceptable-majors) -dnl -dnl where srcdir is the location of the bundled APU source directory, or -dnl empty if source is not bundled. -dnl -dnl where builddir is the location where the bundled APU will be built, -dnl or empty if the build will occur in the srcdir. -dnl -dnl where implicit-install-check set to 1 indicates if there is no -dnl --with-apr-util option specified, we will look for installed copies. -dnl -dnl where acceptable-majors is a space separated list of acceptable major -dnl version numbers. Often only a single major version will be acceptable. -dnl If multiple versions are specified, and --with-apr-util=PREFIX or the -dnl implicit installed search are used, then the first (leftmost) version -dnl in the list that is found will be used. Currently defaults to [0 1]. -dnl -dnl Sets the following variables on exit: -dnl -dnl apu_found : "yes", "no", "reconfig" -dnl -dnl apu_config : If the apu-config tool exists, this refers to it. If -dnl apu_found is "reconfig", then the bundled directory -dnl should be reconfigured *before* using apu_config. -dnl -dnl Note: this macro file assumes that apr-config has been installed; it -dnl is normally considered a required part of an APR installation. -dnl -dnl Note: At this time, we cannot find *both* a source dir and a build dir. -dnl If both are available, the build directory should be passed to -dnl the --with-apr-util switch. -dnl -dnl Note: the installation layout is presumed to follow the standard -dnl PREFIX/lib and PREFIX/include pattern. If the APU config file -dnl is available (and can be found), then non-standard layouts are -dnl possible, since it will be described in the config file. -dnl -dnl If a bundled source directory is available and needs to be (re)configured, -dnl then apu_found is set to "reconfig". The caller should reconfigure the -dnl (passed-in) source directory, placing the result in the build directory, -dnl as appropriate. -dnl -dnl If apu_found is "yes" or "reconfig", then the caller should use the -dnl value of apu_config to fetch any necessary build/link information. -dnl - -AC_DEFUN([APR_FIND_APU], [ - apu_found="no" - - if test "$target_os" = "os2-emx"; then - # Scripts don't pass test -x on OS/2 - TEST_X="test -f" - else - TEST_X="test -x" - fi - - ifelse([$4], [], - [ - ifdef(AC_WARNING,([$0: missing argument 4 (acceptable-majors): Defaulting to APU 0.x then APU 1.x])) - acceptable_majors="0 1" - ], [acceptable_majors="$4"]) - - apu_temp_acceptable_apu_config="" - for apu_temp_major in $acceptable_majors - do - case $apu_temp_major in - 0) - apu_temp_acceptable_apu_config="$apu_temp_acceptable_apu_config apu-config" - ;; - *) - apu_temp_acceptable_apu_config="$apu_temp_acceptable_apu_config apu-$apu_temp_major-config" - ;; - esac - done - - AC_MSG_CHECKING(for APR-util) - AC_ARG_WITH(apr-util, - [ --with-apr-util=PATH prefix for installed APU, path to APU build tree, - or the full path to apu-config], - [ - if test "$withval" = "no" || test "$withval" = "yes"; then - AC_MSG_ERROR([--with-apr-util requires a directory or file to be provided]) - fi - - for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config - do - for lookdir in "$withval/bin" "$withval" - do - if $TEST_X "$lookdir/$apu_temp_apu_config_file"; then - apu_found="yes" - apu_config="$lookdir/$apu_temp_apu_config_file" - break 2 - fi - done - done - - if test "$apu_found" != "yes" && $TEST_X "$withval" && $withval --help > /dev/null 2>&1 ; then - apu_found="yes" - apu_config="$withval" - fi - - dnl if --with-apr-util is used, it is a fatal error for its argument - dnl to be invalid - if test "$apu_found" != "yes"; then - AC_MSG_ERROR([the --with-apr-util parameter is incorrect. It must specify an install prefix, a build directory, or an apu-config file.]) - fi - ],[ - if test -n "$3" && test "$3" = "1"; then - for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config - do - if $apu_temp_apu_config_file --help > /dev/null 2>&1 ; then - apu_found="yes" - apu_config="$apu_temp_apu_config_file" - break - else - dnl look in some standard places (apparently not in builtin/default) - for lookdir in /usr /usr/local /usr/local/apr /opt/apr /usr/local/apache2 ; do - if $TEST_X "$lookdir/bin/$apu_temp_apu_config_file"; then - apu_found="yes" - apu_config="$lookdir/bin/$apu_temp_apu_config_file" - break 2 - fi - done - fi - done - fi - dnl if we have not found anything yet and have bundled source, use that - if test "$apu_found" = "no" && test -d "$1"; then - apu_temp_abs_srcdir="`cd $1 && pwd`" - apu_found="reconfig" - apu_bundled_major="`sed -n '/#define.*APU_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"$1/include/apu_version.h\"`" - case $apu_bundled_major in - "") - AC_MSG_ERROR([failed to find major version of bundled APU]) - ;; - 0) - apu_temp_apu_config_file="apu-config" - ;; - *) - apu_temp_apu_config_file="apu-$apu_bundled_major-config" - ;; - esac - if test -n "$2"; then - apu_config="$2/$apu_temp_apu_config_file" - else - apu_config="$1/$apu_temp_apu_config_file" - fi - fi - ]) - - AC_MSG_RESULT($apu_found) -])
diff --git a/src/decaf/src/examples/Makefile.am b/src/decaf/src/examples/Makefile.am deleted file mode 100644 index e8ce980..0000000 --- a/src/decaf/src/examples/Makefile.am +++ /dev/null
@@ -1,29 +0,0 @@ -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- - -cc_sources = main.cpp - -## -## Compiler / Linker Info -## - -INCLUDES = -I$(srcdir)/../main - -bin_PROGRAMS = example -example_SOURCES = $(cc_sources) - -example_LDADD= ../main/libdecaf.la
diff --git a/src/decaf/src/examples/main.cpp b/src/decaf/src/examples/main.cpp deleted file mode 100644 index d357bdb..0000000 --- a/src/decaf/src/examples/main.cpp +++ /dev/null
@@ -1,183 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// START SNIPPET: demo - -#include <decaf/lang/Thread.h> -#include <decaf/lang/Runnable.h> -#include <decaf/lang/Integer.h> -#include <decaf/util/concurrent/CountDownLatch.h> -#include <decaf/util/Config.h> -#include <decaf/io/ByteArrayInputStream.h> -#include <decaf/io/ByteArrayOutputStream.h> -#include <decaf/io/DataInputStream.h> -#include <decaf/io/DataOutputStream.h> -#include <decaf/util/Date.h> - -#include <stdlib.h> -#include <iostream> - -using namespace decaf::lang; -using namespace decaf::io; -using namespace decaf::util; -using namespace decaf::util::concurrent; -using namespace std; - -//////////////////////////////////////////////////////////////////////////////// -void testDataInputStream() { - - std::cout << "-----------------------------------------------------\n"; - std::cout << "Testing performance of the DataInputStream:" << std::endl; - std::cout << "-----------------------------------------------------\n"; - - const int bufferSize = 1024 * 2000; - const int totalRuns = 100; - - unsigned char* buffer = new unsigned char[bufferSize]; - - // init to full String Buffer - for( int ix = 0; ix < bufferSize - 1; ++ix ) { - buffer[ix] = 'z'; - } - buffer[bufferSize-1] = '\0'; - - long long startTime = 0LL; - long long endTime = 0LL; - long long totalDelta = 0LL; - long long average = 0LL; - std::vector<long long> deltaTs; - - ByteArrayInputStream bis( buffer, bufferSize ); - DataInputStream dis( &bis ); - - for( int i = 0; i < totalRuns; ++i ) { - - startTime = Date::getCurrentTimeMilliseconds(); - - long long result = 0; - for( size_t iy = 0; iy < bufferSize / sizeof( result ); ++iy ){ - result = dis.readLong(); - } - - endTime = Date::getCurrentTimeMilliseconds(); - - // Save the result - deltaTs.push_back( endTime - startTime ); - - bis.reset(); - } - - // Sum the Time Deltas for all runs. - for( int j = 0; j < totalRuns; ++j ) { - totalDelta += deltaTs[j]; - } - - average = totalDelta / totalRuns; - - std::cout << "Averqage time of competion was: " - << average << " Milliseconds." << std::endl; - - delete [] buffer; -} - -//////////////////////////////////////////////////////////////////////////////// -void testDataOutputStream() { - - std::cout << "-----------------------------------------------------\n"; - std::cout << "Testing performance of the DataOutputStream:" << std::endl; - std::cout << "-----------------------------------------------------\n"; - - long long totalRuns = 2000LL; - long long startTime = 0LL; - long long endTime = 0LL; - long long totalDelta = 0LL; - long long average = 0LL; - std::vector<long long> deltaTs; - std::vector<unsigned char> outputBuffer; - - std::string testString; - for( size_t i = 0; i < totalRuns * 10; ++i ) { - testString += 'a'; - } - - ByteArrayOutputStream bos( outputBuffer ); - DataOutputStream dos( &bos ); - - for( int i = 0; i < totalRuns; ++i ) { - - startTime = Date::getCurrentTimeMilliseconds(); - - for( int iy = 0; iy < totalRuns * 10; ++iy ){ - dos.writeLong( 0xFF00FF00FF00FF00LL ); - } - for( int iy = 0; iy < totalRuns * 10; ++iy ){ - dos.writeInt( 312568 ); - } - for( int iy = 0; iy < totalRuns * 10; ++iy ){ - dos.writeShort( 12568 ); - } - for( int iy = 0; iy < totalRuns * 10; ++iy ){ - dos.writeUnsignedShort( 12568 ); - } - for( int iy = 0; iy < totalRuns * 10; ++iy ){ - dos.writeBoolean( true ); - } - for( int iy = 0; iy < totalRuns * 10; ++iy ){ - dos.writeDouble( 10.34235234 ); - } - for( int iy = 0; iy < totalRuns; ++iy ){ - dos.writeFloat( 32.4f ); - } - - dos.writeChars( testString ); - dos.writeBytes( testString ); - dos.writeUTF( testString ); - - endTime = Date::getCurrentTimeMilliseconds(); - - // Save the result - deltaTs.push_back( endTime - startTime ); - - outputBuffer.clear(); - } - - // Sum the Time Deltas for all runs. - for( int j = 0; j < totalRuns; ++j ) { - totalDelta += deltaTs[j]; - } - - average = totalDelta / totalRuns; - - std::cout << "Averqage time of competion was: " - << average << " Milliseconds." << std::endl; -} - -int main(int argc DECAF_UNUSED, char* argv[] DECAF_UNUSED) { - - std::cout << "=====================================================\n"; - std::cout << "Starting the example:" << std::endl; - std::cout << "-----------------------------------------------------\n"; - - //testDataInputStream(); - testDataOutputStream(); - - std::cout << "-----------------------------------------------------\n"; - std::cout << "Finished with the example\n"; - std::cout << "=====================================================\n"; -} - -// END SNIPPET: demo
diff --git a/src/decaf/src/main/Makefile.am b/src/decaf/src/main/Makefile.am deleted file mode 100644 index e11f284..0000000 --- a/src/decaf/src/main/Makefile.am +++ /dev/null
@@ -1,194 +0,0 @@ -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- - -cc_sources = \ - decaf/net/ServerSocket.cpp \ - decaf/net/SocketOutputStream.cpp \ - decaf/net/BufferedSocket.cpp \ - decaf/net/SocketInputStream.cpp \ - decaf/net/SocketError.cpp \ - decaf/net/TcpSocket.cpp \ - decaf/net/SocketFactory.cpp \ - decaf/net/URI.cpp \ - decaf/net/URL.cpp \ - decaf/net/URLEncoder.cpp \ - decaf/net/URLDecoder.cpp \ - decaf/lang/Exception.cpp \ - decaf/lang/Thread.cpp \ - decaf/lang/Byte.cpp \ - decaf/lang/Character.cpp \ - decaf/lang/Boolean.cpp \ - decaf/lang/Short.cpp \ - decaf/lang/Integer.cpp \ - decaf/lang/Long.cpp \ - decaf/lang/Float.cpp \ - decaf/lang/Double.cpp \ - decaf/lang/Math.cpp \ - decaf/lang/System.cpp \ - decaf/io/BufferedOutputStream.cpp \ - decaf/io/BufferedInputStream.cpp \ - decaf/io/ByteArrayInputStream.cpp \ - decaf/io/DataInputStream.cpp \ - decaf/io/DataOutputStream.cpp \ - decaf/io/ByteArrayOutputStream.cpp \ - decaf/io/BlockingByteArrayInputStream.cpp \ - decaf/util/concurrent/Mutex.cpp \ - decaf/util/concurrent/CountDownLatch.cpp \ - decaf/util/concurrent/PooledThread.cpp \ - decaf/util/concurrent/ThreadPool.cpp \ - decaf/util/Date.cpp \ - decaf/util/UUID.cpp \ - decaf/util/StringTokenizer.cpp \ - decaf/util/Random.cpp \ - decaf/util/logging/LoggerHierarchy.cpp \ - decaf/util/logging/Logger.cpp \ - decaf/util/logging/LogWriter.cpp \ - decaf/util/logging/SimpleLogger.cpp \ - decaf/util/logging/LogManager.cpp \ - decaf/util/Config.cpp \ - decaf/internal/AprPool.cpp \ - decaf/internal/util/BigInt.cpp \ - decaf/internal/util/BitOps.cpp \ - decaf/internal/util/NumberConverter.cpp \ - decaf/internal/util/FloatingPointParser.cpp \ - decaf/internal/util/HexStringParser.cpp - -h_sources = \ - decaf/net/BindException.h \ - decaf/net/ConnectException.h \ - decaf/net/HttpRetryException.h \ - decaf/net/MalformedURLException.h \ - decaf/net/NoRouteToHostException.h \ - decaf/net/PortUnreachableException.h \ - decaf/net/ProtocolException.h \ - decaf/net/SocketException.h \ - decaf/net/SocketTimeoutException.h \ - decaf/net/UnknownHostException.h \ - decaf/net/UnknownServiceException.h \ - decaf/net/URISyntaxException.h \ - decaf/net/BufferedSocket.h \ - decaf/net/TcpSocket.h \ - decaf/net/SocketError.h \ - decaf/net/SocketOutputStream.h \ - decaf/net/Socket.h \ - decaf/net/SocketInputStream.h \ - decaf/net/ServerSocket.h \ - decaf/net/SocketFactory.h \ - decaf/net/URI.h \ - decaf/net/URL.h \ - decaf/net/URLEncoder.h \ - decaf/net/URLDecoder.h \ - decaf/lang/Throwable.h \ - decaf/lang/Exception.h \ - decaf/lang/Byte.h \ - decaf/lang/Character.h \ - decaf/lang/Short.h \ - decaf/lang/Integer.h \ - decaf/lang/Long.h \ - decaf/lang/Float.h \ - decaf/lang/Double.h \ - decaf/lang/Thread.h \ - decaf/lang/Number.h \ - decaf/lang/Runnable.h \ - decaf/lang/Math.h \ - decaf/lang/System.h \ - decaf/lang/exceptions/NoSuchElementException.h \ - decaf/lang/exceptions/RuntimeException.h \ - decaf/lang/exceptions/IndexOutOfBoundsException.h \ - decaf/lang/exceptions/NullPointerException.h \ - decaf/lang/exceptions/IllegalStateException.h \ - decaf/lang/exceptions/IllegalMonitorStateException.h \ - decaf/lang/exceptions/InvalidStateException.h \ - decaf/lang/exceptions/ExceptionDefines.h \ - decaf/lang/exceptions/IllegalArgumentException.h \ - decaf/lang/exceptions/UnsupportedOperationException.h \ - decaf/lang/exceptions/InterruptedException.h \ - decaf/io/BufferedOutputStream.h \ - decaf/io/StandardErrorOutputStream.h \ - decaf/io/OutputStream.h \ - decaf/io/Writer.h \ - decaf/io/ByteArrayOutputStream.h \ - decaf/io/Closeable.h \ - decaf/io/DataOutputStream.h \ - decaf/io/ByteArrayInputStream.h \ - decaf/io/FilterInputStream.h \ - decaf/io/Reader.h \ - decaf/io/BlockingByteArrayInputStream.h \ - decaf/io/DataInputStream.h \ - decaf/io/EOFException.h \ - decaf/io/FilterOutputStream.h \ - decaf/io/BufferedInputStream.h \ - decaf/io/InputStream.h \ - decaf/io/IOException.h \ - decaf/io/InterruptedIOException.h \ - decaf/util/concurrent/Lock.h \ - decaf/util/concurrent/Concurrent.h \ - decaf/util/concurrent/CountDownLatch.h \ - decaf/util/concurrent/Synchronizable.h \ - decaf/util/concurrent/Mutex.h \ - decaf/util/concurrent/PooledThread.h \ - decaf/util/concurrent/PooledThreadListener.h \ - decaf/util/concurrent/TaskListener.h \ - decaf/util/concurrent/ThreadPool.h \ - decaf/util/Date.h \ - decaf/util/UUID.h \ - decaf/util/Iterator.h \ - decaf/util/Collection.h \ - decaf/util/Comparator.h \ - decaf/util/Map.h \ - decaf/util/Properties.h \ - decaf/util/Queue.h \ - decaf/util/Set.h \ - decaf/util/Random.h \ - decaf/util/StringTokenizer.h \ - decaf/util/logging/Handler.h \ - decaf/util/logging/Logger.h \ - decaf/util/logging/LoggerCommon.h \ - decaf/util/logging/ConsoleHandler.h \ - decaf/util/logging/SimpleFormatter.h \ - decaf/util/logging/Formatter.h \ - decaf/util/logging/LoggerHierarchy.h \ - decaf/util/logging/LogManager.h \ - decaf/util/logging/MarkBlockLogger.h \ - decaf/util/logging/StreamHandler.h \ - decaf/util/logging/LoggerDefines.h \ - decaf/util/logging/Filter.h \ - decaf/util/logging/LogRecord.h \ - decaf/util/logging/LogWriter.h \ - decaf/util/logging/SimpleLogger.h \ - decaf/util/logging/PropertiesChangeListener.h \ - decaf/internal/AprPool.h \ - decaf/internal/util/NumberConverter.h \ - decaf/internal/util/FloatingPointParser.h \ - decaf/internal/util/HexStringParser.h \ - decaf/internal/util/BitOps.h \ - decaf/internal/util/BigInt.h - -## -## LibTool build step -## -lib_LTLIBRARIES= libdecaf.la -libdecaf_la_SOURCES= $(h_sources) $(cc_sources) -libdecaf_la_CXXFLAGS= $(DECAF_CXXFLAGS) -libdecaf_la_LDFLAGS= -version-info $(DECAF_LIBRARY_VERSION) -release $(DECAF_VERSION) -libdecaf_la_LIBADD= $(DECAF_LIBS) $(APR_LIBS) - -## -## Packaging Info -## -library_includedir=$(includedir)/$(DECAF_LIBRARY_NAME)-$(DECAF_VERSION) -nobase_library_include_HEADERS = $(h_sources)
diff --git a/src/decaf/src/main/decaf/internal/AprPool.cpp b/src/decaf/src/main/decaf/internal/AprPool.cpp deleted file mode 100644 index 656e9de..0000000 --- a/src/decaf/src/main/decaf/internal/AprPool.cpp +++ /dev/null
@@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "AprPool.h" - -using namespace decaf; -using namespace decaf::internal; - -//////////////////////////////////////////////////////////////////////////////// -AprPool::AprPool() { - apr_pool_create( &aprPool, NULL ); -} - -//////////////////////////////////////////////////////////////////////////////// -AprPool::~AprPool() { - apr_pool_destroy( aprPool ); -} - -//////////////////////////////////////////////////////////////////////////////// -void AprPool::cleanup() { - apr_pool_clear( aprPool ); -}
diff --git a/src/decaf/src/main/decaf/internal/AprPool.h b/src/decaf/src/main/decaf/internal/AprPool.h deleted file mode 100644 index 069d03f..0000000 --- a/src/decaf/src/main/decaf/internal/AprPool.h +++ /dev/null
@@ -1,61 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_INTERNAL_APRPOOL_H_ -#define _DECAF_INTERNAL_APRPOOL_H_ - -#include <decaf/util/Config.h> -#include <apr_pools.h> - -namespace decaf{ -namespace internal{ - - /** - * Wraps an APR pool object so that classes in decaf can create a static - * member for use in static methods where apr function calls that need a pool - * are made. - */ - class AprPool { - private: - - apr_pool_t* aprPool; - - public: - - AprPool(); - virtual ~AprPool(); - - /** - * Gets the internal APR Pool. - * @returns the internal APR pool - */ - apr_pool_t* getAprPool() const { - return aprPool; - } - - /** - * Clears data that was allocated by this pool. Users should call this - * after getting the data from the APR functions and copying it to - * someplace safe. - */ - void cleanup(); - - }; - -}} - -#endif /*_DECAF_INTERNAL_APRPOOL_H_*/
diff --git a/src/decaf/src/main/decaf/internal/net/URIEncoderDecoder.cpp b/src/decaf/src/main/decaf/internal/net/URIEncoderDecoder.cpp deleted file mode 100644 index 451aeb6..0000000 --- a/src/decaf/src/main/decaf/internal/net/URIEncoderDecoder.cpp +++ /dev/null
@@ -1,173 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "URIEncoderDecoder.h" - -#include <decaf/lang/Character.h> - -using namespace decaf; -using namespace decaf::internal; -using namespace decaf::internal::net - -//////////////////////////////////////////////////////////////////////////////// -const std::string URIEncoderDecoder::digits = "0123456789ABCDEF"; - -//////////////////////////////////////////////////////////////////////////////// -URIEncoderDecoder::URIEncoderDecoder() { -} - -//////////////////////////////////////////////////////////////////////////////// -void URIEncoderDecoder::validate( const std::string& s, const std::string& legal) - throw ( URISyntaxException ) { - - std::string::const_iterator itr = s.begin(); - - for( int i = 0; itr != s.end(); ++i, ++iter ) { - - if( ch == '%' ) { - if( i + 2 >= s.length() ) { - throw URISyntaxException( - __FILE__, __LINE__, s, - "invalid Encoded data", i ); - } - - int d1 = Character::digit( *(++iter), 16 ); - int d2 = Character::digit( *(++iter), 16 ); - - if( d1 == -1 || d2 == -1 ) { - throw URISyntaxException( - __FILE__, __LINE__, s, - "Invalid Hex Digit in char", i ); - } - - i += 2; - - continue; - } - - if( !Charactor::isLetterOrDigit( *itr ) && - !Character::isSpaceChar( *itr ) && - !Character::isISOControl( *itr ) ) { - - throw URISyntaxException( - __FILE__, __LINE__, s, - "string contains Invalid Character", i ); - } - } -} - -//////////////////////////////////////////////////////////////////////////////// -void URIEncoderDecoder::validateSimple( const std::string& s, - const std::string& legal ) - throw ( URISyntaxException ) { - - std::string::const_iterator itr = s.begin(); - - for( int i = 0; itr != s.end(); ++i, ++itr ) { - if( !Character::isLetterOrDigit( *itr ) || - !legal.find_first_of( *itr ) > std::string::npos ) { - - throw URISyntaxException( - __FILE__, __LINE__, s, - "string contains invalid ASCII chars", i ); - } - } -} - -//////////////////////////////////////////////////////////////////////////////// -std::string URIEncoderDecoder::quoteIllegal( const std::string& s, - const std::string& legal ); - - std::string buf = ""; - std::string::const_iterator iter = s.begin(); - - for( ; iter != s.end(); ++iter ) { - - char ch = *iter; - - if( Character::isLetterOrDigit( ch ) || - legal.find( ch ) > string::npos || - ( (unsigned char)ch > 127 && - !Character.isSpaceChar(ch) && - !Character.isISOControl(ch) ) ) { - - buf.append(ch); - } else { - buf.append('%'); - buf.append( digits.at( ( ch & 0xf0 ) >> 4 ) ); - buf.append( digits.at( bytes[j] & 0xf ) ); - } - } - - return buf; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string URIEncoderDecoder::encodeOthers( const std::string& s ) { - std::string buf = ""; - for( int i = 0; i < s.length(); i++ ) { - char ch = s.at(i); - if( ch <= 127 ) { - buf.append( ch ); - } else { - buf.append('%'); - buf.append( digits.at( ( ch & 0xf0 ) >> 4 ) ); - buf.append( digits.at( ch & 0xf ) ); - } - } - return buf; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string URIEncoderDecoder::decode( const std::string& s ) { - - std::string result = ""; - for( int i = 0; i < s.length(); ) { - char c = s.charAt(i); - if( c == '%' ) { - - do { - if( i + 2 >= s.length() ) { - throw IllegalArgumentException( - __FILE__, __LINE__, - "String has invalid encoding: %s", s.c_str() ); - } - - int d1 = Character.digit( s.at(i + 1), 16); - int d2 = Character.digit( s.at(i + 2), 16); - - if( d1 == -1 || d2 == -1 ) { - throw IllegalArgumentException( - __FILE__, __LINE__, - "URIEncoderDecoder::decode - Bad hex encoding in: ", - s.c_str() ); - } - - result.append( (unsigned char)( ( d1 << 4 ) + d2 ) ); - i += 3; - - } while( i < s.length() && s.at(i) == '%' ); - - continue; - } - - result.append(c); - i++; - } - - return result; -}
diff --git a/src/decaf/src/main/decaf/internal/net/URIEncoderDecoder.h b/src/decaf/src/main/decaf/internal/net/URIEncoderDecoder.h deleted file mode 100644 index 24bf982..0000000 --- a/src/decaf/src/main/decaf/internal/net/URIEncoderDecoder.h +++ /dev/null
@@ -1,112 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_INTERNAL_NET_URIENCODERDECODER_H_ -#define _DECAF_INTERNAL_NET_URIENCODERDECODER_H_ - -#include <decaf/util/Config.h> -#include <decaf/net/URISyntaxException> -#include <string> - -namespace decaf{ -namespace internal{ -namespace net{ - - class URIEncoderDecoder { - private: - - static const std::string digits; - - public: - - URIEncoderDecoder(); - virtual ~URIEncoderDecoder() {} - - /** - * Validate a string by checking if it contains any characters other than: - * - * 1. letters ('a'..'z', 'A'..'Z') - * 2. numbers ('0'..'9') - * 3. characters in the legalset parameter - * 4. characters that are not ISO Control or are not ISO Space characters) - * - * @param s - the string to be validated - * @param legal - the characters allowed in the string s - */ - static void validate( const std::string& s, const std::string& legal ) - throw ( URISyntaxException ); - - /** - * Validate a string by checking if it contains any characters other than: - * - * 1. letters ('a'..'z', 'A'..'Z') - * 2. numbers ('0'..'9') - * 3. characters in the legalset parameter - * - * @param s - the string to be validated - * @param legal - the characters allowed in the string s - */ - static void validateSimple( const std::string& s, const std::string& legal ) - throw ( URISyntaxException ); - - /** - * All characters except letters ('a'..'z', 'A'..'Z') and numbers ('0'..'9') - * and legal characters are converted into their hexidecimal value prepended - * by '%'. - * <p> - * For example: '#' -> %23 - * <p> - * Other characters, which are chars that are not US-ASCII, and are - * not ISO Control or are not ISO Space chars, are preserved. - * @param s - the string to be converted - * @param legal - the characters allowed to be preserved in the string s - * @return converted string - */ - static std::string quoteIllegal( const std::string& s, - const std::string& legal ); - - /** - * Other characters, which are chars that are not US-ASCII, and are - * not ISO Control or are not ISO Space chars are not preserved. They are - * converted into their hexidecimal value prepended by '%'. - * <p> - * For example: Euro currency symbol -> "%E2%82%AC". - * @param s - the string to be converted - * @return the converted string - */ - static std::string encodeOthers( const std::string& s ); - - /** - * Decodes the string argument which is assumed to be encoded in the - * <code>x-www-form-urlencoded</code> MIME content type using the UTF-8 - * encoding scheme. - * <p> - * '%' and two following hex digit characters are converted to the - * equivalent byte value. All other characters are passed through - * unmodified. - * <p> - * e.g. "A%20B%20C %24%25" -> "A B C $%" - * @param s - The encoded string. - * @return The decoded version. - */ - static std::string decode( const std::string& s ); - - }; - -}}} - -#endif /*_DECAF_INTERNAL_NET_URIENCODERDECODER_H_*/
diff --git a/src/decaf/src/main/decaf/internal/util/BigInt.cpp b/src/decaf/src/main/decaf/internal/util/BigInt.cpp deleted file mode 100644 index 6e6d2cd..0000000 --- a/src/decaf/src/main/decaf/internal/util/BigInt.cpp +++ /dev/null
@@ -1,756 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "BigInt.h" - -#include <decaf/lang/Double.h> -#include <decaf/lang/Float.h> -#include <decaf/internal/util/BitOps.h> - -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::internal; -using namespace decaf::internal::util; - -//////////////////////////////////////////////////////////////////////////////// -BigInt::BigInt() { -} - -//////////////////////////////////////////////////////////////////////////////// -void BigInt::multiplyHighPrecision( unsigned long long* arg1, - int length1, - unsigned long long* arg2, - int length2, - unsigned long long* result, - int length ) { - - // assumes result is large enough to hold product - unsigned long long *temp; - unsigned int *resultIn32; - int count, index; - - if( length1 < length2 ) { - temp = arg1; - arg1 = arg2; - arg2 = temp; - count = length1; - length1 = length2; - length2 = count; - } - - memset( result, 0, sizeof(unsigned long long) * length ); - - // length1 > length2 - resultIn32 = (unsigned int*)result; - index = -1; - for( count = 0; count < length2; ++count ) { - simpleMultiplyAddHighPrecision( arg1, length1, - arg2[count] & BitOps::LONG_LO_MASK, - resultIn32 + (++index) ); - simpleMultiplyAddHighPrecision( arg1, length1, - ( arg2[count] >> 32 ), - resultIn32 + (++index) ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned int BigInt::simpleAppendDecimalDigitHighPrecision( - unsigned long long* arg1, int length, unsigned long long digit ) { - - // assumes digit is less than 32 bits - unsigned long long arg = 0; - int index = 0; - - digit <<= 32; - do { - - arg = arg1[index] & BitOps::LONG_LO_MASK; - digit = ( digit >> 32 ) + BitOps::TIMES_TEN( arg ); - arg1[index] = ( arg1[index] & BitOps::LONG_LO_MASK ) | - ( digit & BitOps::LONG_LO_MASK ); - - arg = arg1[index] >> 32; - digit = ( digit >> 32 ) + BitOps::TIMES_TEN( arg ); - arg1[index] = ( arg1[index] & BitOps::LONG_HI_MASK ) | - ( digit & BitOps::LONG_LO_MASK ); - - } while( ++index < length ); - - return digit >> 32; -} - -/* -U_32 simpleAppendDecimalDigitHighPrecision (U_64 * arg1, IDATA length, U_64 digit) -{ - // assumes digit is less than 32 bits - U_64 arg; - IDATA index = 0; - - digit <<= 32; - do - { - arg = LOW_IN_U64 (arg1[index]); - digit = HIGH_IN_U64 (digit) + TIMES_TEN (arg); - LOW_U32_FROM_PTR (arg1 + index) = LOW_U32_FROM_VAR (digit); - - arg = HIGH_IN_U64 (arg1[index]); - digit = HIGH_IN_U64 (digit) + TIMES_TEN (arg); - HIGH_U32_FROM_PTR (arg1 + index) = LOW_U32_FROM_VAR (digit); - } - while (++index < length); - - return HIGH_U32_FROM_VAR (digit); -} -*/ -//////////////////////////////////////////////////////////////////////////////// -double BigInt::toDoubleHighPrecision( unsigned long long* arg, int length ) { - - int highBit; - unsigned long long mantissa = 0; - unsigned long long test64 = 0; - unsigned int test; - long long result; - - while( length > 0 && arg[length - 1] == 0 ) { - --length; - } - - if( length == 0 ) { - return 0.0; - } else if( length > 16 ) { - result = BitOps::EXPONENT_MASK; - } else if( length == 1 ) { - - highBit = highestSetBit (arg); - if( highBit <= 53 ) { - highBit = 53 - highBit; - mantissa = *arg << highBit; - result = BitOps::CREATE_DOUBLE_BITS( mantissa, -highBit ); - } else { - highBit -= 53; - mantissa = *arg >> highBit; - result = BitOps::CREATE_DOUBLE_BITS( mantissa, highBit ); - - // perform rounding, round to even in case of tie - test = ( BitOps::LOW_U32_FROM_LONG64_PTR( arg ) << ( 11 - highBit ) ) & 0x7FF; - if( test > 0x400 || ((test == 0x400) && (mantissa & 1)) ) { - result = result + 1; - } - } - } else { - highBit = highestSetBit (arg + (--length)); - if( highBit <= 53 ) { - highBit = 53 - highBit; - if( highBit > 0 ) { - mantissa = (arg[length] << highBit) | - (arg[length - 1] >> (64 - highBit)); - } else { - mantissa = arg[length]; - } - result = BitOps::CREATE_DOUBLE_BITS( mantissa, length * 64 - highBit ); - - // perform rounding, round to even in case of tie - test64 = arg[--length] << highBit; - if( test64 > BitOps::SIGN_MASK || ((test64 == BitOps::SIGN_MASK) && (mantissa & 1)) ) { - result = result + 1; - } else if( test64 == BitOps::SIGN_MASK ) { - while( --length >= 0 ) { - if( arg[length] != 0 ) { - result = result + 1; - break; - } - } - } - } else { - highBit -= 53; - mantissa = arg[length] >> highBit; - result = BitOps::CREATE_DOUBLE_BITS( mantissa, length * 64 + highBit ); - - // perform rounding, round to even in case of tie - test = ( BitOps::LOW_U32_FROM_LONG64_PTR( arg + length ) << ( 11 - highBit ) ) & 0x7FF; - if( test > 0x400 || ((test == 0x400) && (mantissa & 1)) ) { - result = result + 1; - } else if( test == 0x400 ) { - do { - if( arg[--length] != 0 ) { - result = result + 1; - break; - } - } while( length > 0 ); - } - } - } - - return Double::longBitsToDouble( result ); -} - -//////////////////////////////////////////////////////////////////////////////// -int BigInt::tenToTheEHighPrecision( unsigned long long * result, - int length, int e ) { - - // size test - if( length < ((e / 19) + 1) ) { - return 0; - } - - memset( result, 0, length * sizeof(unsigned long long) ); - *result = 1; - - if( e == 0 ) { - return 1; - } - - length = 1; - length = timesTenToTheEHighPrecision( result, length, e ); - - return length; -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned long long BigInt::doubleMantissa( double z ) { - - unsigned long long m = Double::doubleToLongBits( z ); - - if ((m & BitOps::EXPONENT_MASK) != 0) - m = (m & BitOps::MANTISSA_MASK) | BitOps::NORMAL_MASK; - else - m = (m & BitOps::MANTISSA_MASK); - - return m; -} - -//////////////////////////////////////////////////////////////////////////////// -int BigInt::compareHighPrecision( unsigned long long* arg1, - int length1, - unsigned long long* arg2, - int length2 ) { - - while( --length1 >= 0 && arg1[length1] == 0 ); - while( --length2 >= 0 && arg2[length2] == 0 ); - - if( length1 > length2 ) { - return 1; - } else if( length1 < length2 ) { - return -1; - } else if( length1 > -1 ) { - do { - if( arg1[length1] > arg2[length1] ) { - return 1; - } else if( arg1[length1] < arg2[length1] ) { - return -1; - } - } while( --length1 >= 0 ); - } - - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// -int BigInt::highestSetBitHighPrecision( unsigned long long* arg, int length ) { - - int highBit; - - while( --length >= 0 ) { - highBit = highestSetBit( arg + length ); - if( highBit ) { - return highBit + 64 * length; - } - } - - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// -void BigInt::subtractHighPrecision( unsigned long long* arg1, - int length1, - unsigned long long* arg2, - int length2 ) { - - // assumes arg1 > arg2 - for( int index = 0; index < length1; ++index ) { - arg1[index] = ~arg1[index]; - } - - simpleAddHighPrecision( arg1, length1, 1 ); - - while( length2 > 0 && arg2[length2 - 1] == 0 ) { - --length2; - } - - addHighPrecision( arg1, length1, arg2, length2 ); - - for( int index = 0; index < length1; ++index ) { - arg1[index] = ~arg1[index]; - } - - simpleAddHighPrecision( arg1, length1, 1 ); -} - -//////////////////////////////////////////////////////////////////////////////// -int BigInt::doubleExponent( double z ) { - - // assumes positive double - int k = ( (unsigned long long )Double::doubleToLongBits( z ) >> 52 ); - - if( k ) { - k -= BitOps::E_OFFSET; - } else { - k = 1 - BitOps::E_OFFSET; - } - - return k; -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned int BigInt::simpleMultiplyHighPrecision( - unsigned long long* arg1, int length, unsigned long long arg2 ) { - - // assumes arg2 only holds 32 bits of information - unsigned long long product = 0; - int index = 0; - - do { - - product = ( product >> 32 ) + arg2 * BitOps::LOW_U32_FROM_LONG64_PTR( arg1 + index ); - BitOps::LOW_U32_FROM_LONG64_PTR( arg1 + index ) = BitOps::LOW_U32_FROM_LONG64( product ); - - product = ( product >> 32 ) + arg2 * BitOps::HIGH_U32_FROM_LONG64_PTR( arg1 + index ); - BitOps::HIGH_U32_FROM_LONG64_PTR( arg1 + index ) = BitOps::LOW_U32_FROM_LONG64( product ); - - } while( ++index < length ); - - return ( product >> 32 ); -} - -//////////////////////////////////////////////////////////////////////////////// -int BigInt::addHighPrecision( unsigned long long* arg1, - int length1, - unsigned long long* arg2, - int length2 ) { - - // addition is limited by length of arg1 as it this function is - // storing the result in arg1 - // - // fix for cc (GCC) 3.2 20020903 (Red Hat Linux 8.0 3.2-7): code generated does not - // do the temp1 + temp2 + carry addition correct. carry is 64 bit because gcc has - // subtle issues when you mix 64 / 32 bit maths. - unsigned long long temp1, temp2, temp3; /* temporary variables to help the SH-4, and gcc */ - unsigned long long carry; - int index; - - if( length1 == 0 || length2 == 0 ) { - return 0; - } else if( length1 < length2 ) { - length2 = length1; - } - - carry = 0; - index = 0; - - do { - - temp1 = arg1[index]; - temp2 = arg2[index]; - temp3 = temp1 + temp2; - arg1[index] = temp3 + carry; - - if( arg2[index] < arg1[index] ) { - carry = 0; - } else if( arg2[index] != arg1[index] ) { - carry = 1; - } - - } while( ++index < length2 ); - - if( !carry ) { - return 0; - } else if( index == length1 ) { - return 1; - } - - while( ++arg1[index] == 0 && ++index < length1 ); - - return (int)( index == length1 ); -} - -//////////////////////////////////////////////////////////////////////////////// -int BigInt::lowestSetBit( unsigned long long* y ) { - - unsigned int x; - int result; - - if( *y == 0 ) { - return 0; - } - - if( *y & 0x00000000FFFFFFFFULL ) { - x = BitOps::LOW_U32_FROM_LONG64_PTR( y ); - result = 0; - } else { - x = BitOps::HIGH_U32_FROM_LONG64_PTR( y ); - result = 32; - } - - if( !( x & 0xFFFF ) ) { - x = BitOps::bitSection( x, 0xFFFF0000, 16 ); - result += 16; - } - - if( !( x & 0xFF) ) { - x = BitOps::bitSection( x, 0xFF00, 8 ); - result += 8; - } - if( !( x & 0xF ) ) { - x = BitOps::bitSection( x, 0xF0, 4 ); - result += 4; - } - - if( x & 0x1 ) { - return result + 1; - } else if( x & 0x2 ) { - return result + 2; - } else if( x & 0x4 ) { - return result + 3; - } - - return result + 4; -} - -//////////////////////////////////////////////////////////////////////////////// -int BigInt::timesTenToTheEHighPrecision( - unsigned long long* result, int length, int e ) { - - // assumes result can hold value - unsigned long long overflow; - int exp10 = e; - - if( e == 0 ) { - return length; - } - - // Replace the current implementaion which performs a - // "multiplication" by 10 e number of times with an actual - // mulitplication. 10e19 is the largest exponent to the power of ten - // that will fit in a 64-bit integer, and 10e9 is the largest exponent to - // the power of ten that will fit in a 64-bit integer. Not sure where the - // break-even point is between an actual multiplication and a - // simpleAappendDecimalDigit() so just pick 10e3 as that point for - // now. - while( exp10 >= 19 ) { - overflow = simpleMultiplyHighPrecision64( result, length, BitOps::TEN_E19 ); - if( overflow ) { - result[length++] = overflow; - } - exp10 -= 19; - } - - while( exp10 >= 9 ) { - overflow = simpleMultiplyHighPrecision( result, length, BitOps::TEN_E9 ); - if( overflow ) { - result[length++] = overflow; - } - exp10 -= 9; - } - - if( exp10 == 0 ) { - return length; - } else if( exp10 == 1 ) { - overflow = simpleAppendDecimalDigitHighPrecision( result, length, 0 ); - if( overflow ) { - result[length++] = overflow; - } - } else if( exp10 == 2 ) { - overflow = simpleAppendDecimalDigitHighPrecision( result, length, 0 ); - if( overflow ) { - result[length++] = overflow; - } - overflow = simpleAppendDecimalDigitHighPrecision( result, length, 0 ); - if( overflow ) { - result[length++] = overflow; - } - } else if( exp10 == 3 ) { - overflow = simpleMultiplyHighPrecision( result, length, BitOps::TEN_E3 ); - if( overflow ) { - result[length++] = overflow; - } - } else if( exp10 == 4 ) { - overflow = simpleMultiplyHighPrecision( result, length, BitOps::TEN_E4 ); - if( overflow ) { - result[length++] = overflow; - } - } else if( exp10 == 5 ) { - overflow = simpleMultiplyHighPrecision( result, length, BitOps::TEN_E5 ); - if( overflow ) { - result[length++] = overflow; - } - } else if( exp10 == 6 ) { - overflow = simpleMultiplyHighPrecision( result, length, BitOps::TEN_E6); - if( overflow ) { - result[length++] = overflow; - } - } else if( exp10 == 7 ) { - overflow = simpleMultiplyHighPrecision( result, length, BitOps::TEN_E7 ); - if( overflow ) { - result[length++] = overflow; - } - } else if( exp10 == 8 ) { - overflow = simpleMultiplyHighPrecision( result, length, BitOps::TEN_E8 ); - if( overflow ) { - result[length++] = overflow; - } - } - - return length; -} - -//////////////////////////////////////////////////////////////////////////////// -void BigInt::simpleMultiplyAddHighPrecision( - unsigned long long* arg1, int length, - unsigned long long arg2, unsigned int* result ) { - - // Assumes result can hold the product and arg2 only holds 32 bits - // of information - unsigned long long product = 0; - int index = 0; - int resultIndex = 0; - - do { - - product = - ( product >> 32 ) + result[BitOps::at( resultIndex )] + - arg2 * BitOps::LOW_U32_FROM_LONG64_PTR( arg1 + index ); - result[BitOps::at( resultIndex )] = BitOps::LOW_U32_FROM_LONG64( product ); - ++resultIndex; - - product = - ( product >> 32 ) + result[BitOps::at( resultIndex )] + - arg2 * BitOps::HIGH_U32_FROM_LONG64_PTR( arg1 + index ); - result[BitOps::at( resultIndex )] = BitOps::LOW_U32_FROM_LONG64( product ); - ++resultIndex; - - } while( ++index < length ); - - result[BitOps::at( resultIndex )] += BitOps::HIGH_U32_FROM_LONG64( product ); - if( result[BitOps::at( resultIndex )] < BitOps::HIGH_U32_FROM_LONG64( product ) ) { - // must be careful with ++ operator and macro expansion - ++resultIndex; - while( ++result[BitOps::at( resultIndex )] == 0 ) { - ++resultIndex; - } - } -} - -//////////////////////////////////////////////////////////////////////////////// -int BigInt::highestSetBit(unsigned long long* y ) { - - unsigned int x = 0; - int result = 0; - - if( *y == 0 ) { - return 0; - } - - if( *y & 0xFFFFFFFF00000000LL ) { - x = BitOps::HIGH_U32_FROM_LONG64_PTR(y); - result = 32; - } else { - x = BitOps::LOW_U32_FROM_LONG64_PTR(y); - result = 0; - } - - if( x & 0xFFFF0000 ) - { - x = BitOps::bitSection( x, 0xFFFF0000, 16 ); - result += 16; - } - - if( x & 0xFF00 ) { - x = BitOps::bitSection( x, 0xFF00, 8 ); - result += 8; - } - - if( x & 0xF0 ) { - x = BitOps::bitSection( x, 0xF0, 4 ); - result += 4; - } - - if( x > 0x7 ) { - return result + 4; - } else if( x > 0x3 ) { - return result + 3; - } else if( x > 0x1 ) { - return result + 2; - } else { - return result + 1; - } -} - -//////////////////////////////////////////////////////////////////////////////// -int BigInt::lowestSetBitHighPrecision( unsigned long long* arg, int length ) { - - int lowBit, index = -1; - - while( ++index < length ) { - lowBit = lowestSetBit( arg + index ); - if( lowBit ) { - return lowBit + 64 * index; - } - } - - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// -void BigInt::simpleShiftLeftHighPrecision( unsigned long long* arg1, - int length, int arg2 ) { - - // assumes length > 0 - int index, offset = 0; - - if( arg2 >= 64 ) { - - offset = arg2 >> 6; - index = length; - - while( --index - offset >= 0 ) { - arg1[index] = arg1[index - offset]; - } - - do { - arg1[index] = 0; - } while (--index >= 0); - - arg2 &= 0x3F; - } - - if( arg2 == 0 ) { - return; - } - - while( --length > 0 ) { - arg1[length] = arg1[length] << arg2 | arg1[length - 1] >> (64 - arg2); - } - - *arg1 <<= arg2; -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned int BigInt::floatMantissa( float z ) { - - unsigned int m = (unsigned int)Float::floatToIntBits( z ); - - if( ( m & BitOps::FLOAT_EXPONENT_MASK ) != 0 ) - m = ( m & BitOps::FLOAT_MANTISSA_MASK ) | BitOps::FLOAT_NORMAL_MASK; - else - m = ( m & BitOps::FLOAT_MANTISSA_MASK ); - - return m; -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned long long BigInt::simpleMultiplyHighPrecision64( - unsigned long long* arg1, int length, unsigned long long arg2 ) { - - unsigned long long intermediate = 0; - unsigned long long* pArg1 = NULL; - unsigned long long carry1 = 0; - unsigned long long carry2 = 0; - unsigned long long prod1 = 0; - unsigned long long prod2 = 0; - unsigned long long sum = 0; - int index = 0; - unsigned int buf32 = 0; - - // set the starting position - pArg1 = &( arg1[index] ); - - do { - - if( (*pArg1 != 0) || (intermediate != 0) ) { - - prod1 = (unsigned long long)BitOps::LOW_U32_FROM_LONG64(arg2) * - (unsigned long long)BitOps::LOW_U32_FROM_LONG64_PTR(pArg1); - - sum = intermediate + prod1; - if( (sum < prod1) || (sum < intermediate) ) { - carry1 = 1; - } else { - carry1 = 0; - } - - prod1 = (unsigned long long)BitOps::LOW_U32_FROM_LONG64(arg2) * - (unsigned long long)BitOps::HIGH_U32_FROM_LONG64_PTR(pArg1); - prod2 = (unsigned long long)BitOps::HIGH_U32_FROM_LONG64(arg2) * - (unsigned long long)BitOps::LOW_U32_FROM_LONG64_PTR(pArg1); - - intermediate = carry2 + ( sum >> 32 ) + prod1 + prod2; - - if( (intermediate < prod1) || (intermediate < prod2) ) { - carry2 = 1; - } else { - carry2 = 0; - } - - BitOps::LOW_U32_FROM_LONG64_PTR(pArg1) = BitOps::LOW_U32_FROM_LONG64(sum); - buf32 = BitOps::HIGH_U32_FROM_LONG64_PTR (pArg1); - BitOps::HIGH_U32_FROM_LONG64_PTR(pArg1) = BitOps::LOW_U32_FROM_LONG64(intermediate); - intermediate = carry1 + ( intermediate >> 32 ) + - (unsigned long long)BitOps::HIGH_U32_FROM_LONG64 (arg2) * - (unsigned long long)buf32; - } - - pArg1++; - - } while( ++index < length ); - - return intermediate; -} - -//////////////////////////////////////////////////////////////////////////////// -int BigInt::simpleAddHighPrecision( unsigned long long* arg1, - int length, - unsigned long long arg2 ) { - - // assumes length > 0 - int index = 1; - - *arg1 += arg2; - if( arg2 <= *arg1 ) { - return 0; - } else if (length == 1) { - return 1; - } - - while( ++arg1[index] == 0 && ++index < length ); - - return (int)( index == length ); -} - -//////////////////////////////////////////////////////////////////////////////// -int BigInt::floatExponent( float z ) { - - // assumes positive float - int k = Float::floatToIntBits( z ) >> 23; - - if( k ) { - k -= BitOps::FLOAT_E_OFFSET; - } else { - k = 1 - BitOps::FLOAT_E_OFFSET; - } - - return k; -}
diff --git a/src/decaf/src/main/decaf/internal/util/BigInt.h b/src/decaf/src/main/decaf/internal/util/BigInt.h deleted file mode 100644 index bdcbb72..0000000 --- a/src/decaf/src/main/decaf/internal/util/BigInt.h +++ /dev/null
@@ -1,105 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_INTERNAL_UTIL_BIGINT_H_ -#define _DECAF_INTERNAL_UTIL_BIGINT_H_ - -#include <decaf/util/Config.h> -#include <apr.h> - -namespace decaf{ -namespace internal{ -namespace util{ - - class BigInt { - public: - - BigInt(); - virtual ~BigInt() {} - - static void multiplyHighPrecision( unsigned long long* arg1, - int length1, - unsigned long long* arg2, - int length2, - unsigned long long* result, - int length ); - - static unsigned int simpleAppendDecimalDigitHighPrecision( - unsigned long long* arg1, int length, unsigned long long digit ); - - static double toDoubleHighPrecision( unsigned long long* arg, int length ); - - static int tenToTheEHighPrecision( unsigned long long * result, - int length, - int e ); - - static unsigned long long doubleMantissa( double z ); - - static int compareHighPrecision( unsigned long long* arg1, - int length1, - unsigned long long* arg2, - int length2 ); - - static int highestSetBitHighPrecision( unsigned long long* arg, int length ); - - static void subtractHighPrecision( unsigned long long* arg1, - int length1, - unsigned long long* arg2, - int length2 ); - - static int doubleExponent( double z ); - - static unsigned int simpleMultiplyHighPrecision( - unsigned long long* arg1, int length, unsigned long long arg2 ); - - static int addHighPrecision( unsigned long long* arg1, - int length1, - unsigned long long* arg2, - int length2 ); - - static int lowestSetBit( unsigned long long* y ); - - static int timesTenToTheEHighPrecision( - unsigned long long* result, int length, int e ); - - static void simpleMultiplyAddHighPrecision( - unsigned long long* arg1, int length, - unsigned long long arg2, unsigned int* result ); - - static int highestSetBit( unsigned long long* y ); - - static int lowestSetBitHighPrecision( unsigned long long* arg, int length ); - - static void simpleShiftLeftHighPrecision( unsigned long long* arg1, - int length, int arg2 ); - - static unsigned int floatMantissa( float z ); - - static unsigned long long simpleMultiplyHighPrecision64( - unsigned long long* arg1, int length, unsigned long long arg2 ); - - static int simpleAddHighPrecision( unsigned long long* arg1, - int length, - unsigned long long arg2 ); - - static int floatExponent( float z ); - - }; - -}}} - -#endif /*_DECAF_INTERNAL_UTIL_BIGINT_H_*/
diff --git a/src/decaf/src/main/decaf/internal/util/BitOps.cpp b/src/decaf/src/main/decaf/internal/util/BitOps.cpp deleted file mode 100644 index d4ecc47..0000000 --- a/src/decaf/src/main/decaf/internal/util/BitOps.cpp +++ /dev/null
@@ -1,26 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "BitOps.h" - -using namespace decaf; -using namespace decaf::internal; -using namespace decaf::internal::util; - -//////////////////////////////////////////////////////////////////////////////// -BitOps::BitOps() { -}
diff --git a/src/decaf/src/main/decaf/internal/util/BitOps.h b/src/decaf/src/main/decaf/internal/util/BitOps.h deleted file mode 100644 index 318042e..0000000 --- a/src/decaf/src/main/decaf/internal/util/BitOps.h +++ /dev/null
@@ -1,211 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_INTERNAL_UTIL_BITOPS_H_ -#define _DECAF_INTERNAL_UTIL_BITOPS_H_ - -#include <decaf/util/Config.h> -#include <apr.h> - -namespace decaf{ -namespace internal{ -namespace util{ - - /** - * Class with static methods for operation on values in bit patterns. - */ - class BitOps { - public: - - // Used to make masking easier - typedef union { - unsigned long long longValue; - unsigned int intValue[2]; - int sintValue[2]; - double doubleValue; - } LONG_UNION; - - #ifdef APR_IS_BIGENDIAN - static const int HiWord = 0; - static const int LoWord = 1; - #else - static const int HiWord = 1; - static const int LoWord = 0; - #endif - - static const unsigned long long LONG_HI_MASK = 0xFFFFFFFF00000000ULL; - static const unsigned long long LONG_LO_MASK = 0x00000000FFFFFFFFULL; - static const long long TEN_E1 = 0xALL; - static const long long TEN_E2 = 0x64LL; - static const long long TEN_E3 = 0x3E8LL; - static const long long TEN_E4 = 0x2710LL; - static const long long TEN_E5 = 0x186A0LL; - static const long long TEN_E6 = 0xF4240LL; - static const long long TEN_E7 = 0x989680LL; - static const long long TEN_E8 = 0x5F5E100LL; - static const long long TEN_E9 = 0x3B9ACA00LL; - static const long long TEN_E19 = 0x8AC7230489E80000LL; - - static const int E_OFFSET = 1075; - - static const long long INFINITE_LONGBITS = 0x7FF0000000000000LL; - static const int INFINITE_INTBITS = 0x7F800000; - static const int MINIMUM_INTBITS = 1; - - static const unsigned int DOUBLE_SIGN_MASK_HI = 0x80000000; - static const unsigned int DOUBLE_EXPONENT_MASK_HI = 0x7FF00000; - static const unsigned int DOUBLE_MANTISSA_MASK_LO = 0xFFFFFFFF; - static const unsigned int DOUBLE_MANTISSA_MASK_HI = 0x000FFFFF; - static const unsigned int SINGLE_SIGN_MASK = 0x80000000; - static const unsigned int SINGLE_EXPONENT_MASK = 0x7F800000; - static const unsigned int SINGLE_MANTISSA_MASK = 0x007FFFFF; - static const unsigned int SINGLE_NAN_BITS = (SINGLE_EXPONENT_MASK | 0x00400000); - - static const unsigned long long MANTISSA_MASK = 0x000FFFFFFFFFFFFFULL; - static const unsigned long long EXPONENT_MASK = 0x7FF0000000000000ULL; - static const unsigned long long NORMAL_MASK = 0x0010000000000000ULL; - static const unsigned long long SIGN_MASK = 0x8000000000000000ULL; - static const unsigned int FLOAT_MANTISSA_MASK = 0x007FFFFF; - static const unsigned int FLOAT_EXPONENT_MASK = 0x7F800000; - static const unsigned int FLOAT_NORMAL_MASK = 0x00800000; - static const unsigned int FLOAT_E_OFFSET = 150; - - public: - - BitOps(); - virtual ~BitOps() {} - - public: // Statics - - static unsigned int TIMES_TEN( unsigned int x ) { - return ((x) << 3) + ((x) << 1); - } - - static unsigned long long TIMES_TEN( unsigned long long x ) { - return ((x) << 3) + ((x) << 1); - } - - static unsigned long long CREATE_DOUBLE_BITS( - unsigned long long normalizedM, unsigned long long e ) { - - return ( normalizedM & MANTISSA_MASK ) | ( ( e + E_OFFSET ) << 52 ); - } - - static unsigned long long CREATE_DOUBLE_BITS( - unsigned long long* normalizedM, int index, unsigned long long e ) { - - return ( normalizedM[index] & MANTISSA_MASK ) | ( ( e + E_OFFSET ) << 52 ); - } - - static unsigned long long bitSection( - unsigned long long x, unsigned long long mask, int shift ) { - - return ( x & mask ) >> shift; - } - static unsigned int bitSection( - unsigned int x, unsigned int mask, int shift ) { - - return ( x & mask ) >> shift; - } - - static unsigned int& LOW_U32_FROM_LONG64( unsigned long long long64 ) { - return LOW_U32_FROM_LONG64_PTR( &long64 ); - } - - static unsigned int& HIGH_U32_FROM_LONG64( unsigned long long long64 ) { - return HIGH_U32_FROM_LONG64_PTR( &long64 ); - } - - static int& LOW_I32_FROM_LONG64( unsigned long long long64 ) { - return LOW_I32_FROM_LONG64_PTR( &long64 ); - } - - static int& HIGH_I32_FROM_LONG64( unsigned long long long64 ) { - return HIGH_I32_FROM_LONG64_PTR( &long64 ); - } - - static unsigned int& LOW_U32_FROM_LONG64_PTR( unsigned long long* long64ptr ) { - return ( (LONG_UNION*)long64ptr )->intValue[LoWord]; - } - - static unsigned int& HIGH_U32_FROM_LONG64_PTR( unsigned long long* long64ptr ) { - return ( (LONG_UNION*)long64ptr )->intValue[HiWord]; - } - - static int& LOW_I32_FROM_LONG64_PTR( unsigned long long* long64ptr ) { - return ( (LONG_UNION*)long64ptr )->sintValue[LoWord]; - } - - static int& HIGH_I32_FROM_LONG64_PTR( unsigned long long* long64ptr ) { - return ( (LONG_UNION*)long64ptr )->sintValue[HiWord]; - } - - static bool IS_DENORMAL_DBL( double dbl ) { - return IS_DENORMAL_DBL_PTR( &dbl ); - } - - static bool IS_DENORMAL_DBL_PTR(double* dblptr ) { - return (((HIGH_U32_FROM_DBL_PTR(dblptr) & DOUBLE_EXPONENT_MASK_HI) == 0) && - ((HIGH_U32_FROM_DBL_PTR(dblptr) & DOUBLE_MANTISSA_MASK_HI) != 0 || - (LOW_U32_FROM_DBL_PTR(dblptr) != 0))); - } - - static unsigned int& LOW_U32_FROM_DBL_PTR( double* dblptr ) { - return ( ( (LONG_UNION*)dblptr )->intValue[LoWord] ); - } - - static unsigned int& HIGH_U32_FROM_DBL_PTR( double* dblptr ) { - return ( ( (LONG_UNION*)dblptr )->intValue[HiWord] ); - } - - static int& LOW_I32_FROM_DBL_PTR( double* dblptr ) { - return ( ( (LONG_UNION*)dblptr )->sintValue[LoWord] ); - } - - static int& HIGH_I32_FROM_DBL_PTR( double* dblptr ) { - return ( ( (LONG_UNION*)dblptr )->sintValue[HiWord] ); - } - - static unsigned int& LOW_U32_FROM_DBL( double dbl ) { - return LOW_U32_FROM_DBL_PTR( &dbl ); - } - - static unsigned int& HIGH_U32_FROM_DBL( double dbl ) { - return HIGH_U32_FROM_DBL_PTR( &dbl ); - } - - static int& LOW_I32_FROM_DBL( double dbl ) { - return LOW_I32_FROM_DBL_PTR( &dbl ); - } - - static int& HIGH_I32_FROM_DBL( double dbl ) { - return HIGH_I32_FROM_DBL_PTR( &dbl ); - } - - static unsigned int at( unsigned int i ) { - #ifdef APR_IS_BIGENDIAN - return i^1; - #else - return i; - #endif - } - - }; - -}}} - -#endif /*_DECAF_INTERNAL_UTIL_BITOPS_H_*/
diff --git a/src/decaf/src/main/decaf/internal/util/FloatingPointParser.cpp b/src/decaf/src/main/decaf/internal/util/FloatingPointParser.cpp deleted file mode 100644 index c720d86..0000000 --- a/src/decaf/src/main/decaf/internal/util/FloatingPointParser.cpp +++ /dev/null
@@ -1,846 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "FloatingPointParser.h" -#include <decaf/lang/Math.h> -#include <decaf/lang/Integer.h> -#include <decaf/lang/Long.h> -#include <decaf/lang/Float.h> -#include <decaf/lang/Double.h> -#include <decaf/lang/Character.h> -#include <decaf/internal/util/HexStringParser.h> -#include <decaf/internal/util/BigInt.h> -#include <decaf/internal/util/BitOps.h> -#include <decaf/lang/exceptions/NumberFormatException.h> -#include <apr_lib.h> -#include <errno.h> - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::internal; -using namespace decaf::internal::util; - -//////////////////////////////////////////////////////////////////////////////// -const int FloatingPointParser::tens[11] = { - 0x3f800000, - 0x41200000, - 0x42c80000, - 0x447a0000, - 0x461c4000, - 0x47c35000, - 0x49742400, - 0x4b189680, - 0x4cbebc20, - 0x4e6e6b28, - 0x501502f9 /* 10 ^ 10 in float */ -}; - -//////////////////////////////////////////////////////////////////////////////// -double FloatingPointParser::parseDblImpl( const std::string& value, int exp ) - throw ( exceptions::NumberFormatException ) { - - // assumes s is a null terminated string with at least one - // character in it - unsigned long long def[17] = {0}; - unsigned long long defBackup[17] = {0}; - unsigned long long* f = def; - unsigned long long* fNoOverflow = defBackup; - unsigned long long* tempBackup = NULL; - unsigned int overflow = 0; - unsigned long long result = 0; - int index = 1; - int unprocessedDigits = 0; - std::string::const_iterator valItr = value.begin(); - - do { - - if( Character::isDigit( *valItr ) ) { - - // Make a back up of f before appending, so that we can - // back out of it if there is no more room, i.e. index > - // MAX_ACCURACY_WIDTH. - - memcpy( fNoOverflow, f, sizeof(unsigned long long) * index ); - overflow = BigInt::simpleAppendDecimalDigitHighPrecision( - f, index, *valItr - '0' ); - - if( overflow ) { - f[index++] = overflow; - /* There is an overflow, but there is no more room - * to store the result. We really only need the top 52 - * bits anyway, so we must back out of the overflow, - * and ignore the rest of the string. - */ - if( index >= MAX_ACCURACY_WIDTH ) { - index--; - memcpy( f, fNoOverflow, sizeof(unsigned long long) * index); - break; - } - - if( tempBackup ) { - fNoOverflow = tempBackup; - } - } - } else { - // Bad chars in the string - BitOps::LOW_I32_FROM_LONG64( result ) = -1; - BitOps::HIGH_I32_FROM_LONG64( result ) = -1; - return Double::longBitsToDouble( result ); - } - - } while( ++valItr != value.end() ); - - // We've broken out of the parse loop either because we've reached - // the end of the string or we've overflowed the maximum accuracy - // limit of a double. If we still have unprocessed digits in the - // given string, then there are three possible results: - // 1. (unprocessed digits + e) == 0, in which case we simply - // convert the existing bits that are already parsed - // 2. (unprocessed digits + e) < 0, in which case we simply - // convert the existing bits that are already parsed along - // with the given e - // 3. (unprocessed digits + e) > 0 indicates that the value is - // simply too big to be stored as a double, so return Infinity - if( ( unprocessedDigits = value.length() ) > 0 ) { - - exp += unprocessedDigits; - if( exp == 0 ) { - return BigInt::toDoubleHighPrecision( f, index ); - } else if( exp < 0 ) { - return BitOps::CREATE_DOUBLE_BITS( f, index, exp ); - } else { - result = BitOps::INFINITE_LONGBITS; - } - - } else { - - if( exp == 0 ) { - return BigInt::toDoubleHighPrecision( f, index ); - } else { - return BitOps::CREATE_DOUBLE_BITS( f, index, exp ); - } - } - - return Double::longBitsToDouble( result ); -} - -//////////////////////////////////////////////////////////////////////////////// -float FloatingPointParser::parseFltImpl( const std::string& value, int exp ) - throw ( exceptions::NumberFormatException ) { - - float result = FloatingPointParser::createFloat( value, exp ); - -std::cout << std::endl - << "DEBUG - FloatingPointParser::parseFltImpl - " - << "createFloat returned = " << result << std::endl; - - if( Float::floatToIntBits( result ) >= 0 ) { - return result; - } else if( Float::floatToIntBits( result ) == -1 ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "FloatingPointParser::parseFltImpl - Not a valid float string", - value.c_str() ); - } - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -FloatingPointParser::StringExponentPair FloatingPointParser::initialParse( - const std::string& value, int length ) throw ( exceptions::NumberFormatException ){ - - std::string newValue = value; - bool negative = false; - char c; - int start = 0; - int end = 0; - int decimal = 0; - int e = 0; - - if( length == 0 ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "FloatingPointParser::initialParse - Invalid zero length string"); - } - - c = newValue[length - 1]; - if( c == 'D' || c == 'd' || c == 'F' || c == 'f') { - length--; - if( length == 0 ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "FloatingPointParser::initialParse - Invalid zero length string"); - } - } - - end = Math::max( (int)newValue.find_first_of( 'E' ), - (int)newValue.find_first_of( 'e' ) ); - - if( (std::size_t)end != string::npos ) { - - if( end + 1 == length ) { - if( length == 0 ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "FloatingPointParser::initialParse - Invalid no data after e", - newValue.c_str() ); - } - } - - int exponent_offset = end + 1; - - if( newValue[exponent_offset] == '+' ) { - if( newValue[exponent_offset + 1] == '-' ) { - if( length == 0 ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "FloatingPointParser::initialParse - " - "Invalid length string"); - } - } - exponent_offset++; // skip the plus sign - } - - try { - e = Integer::parseInt( newValue.substr( exponent_offset, length ) ); - } catch( exceptions::NumberFormatException ex ) { - // ex contains the exponent substring only so throw a - // new exception with the correct string - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "FloatingPointParser::initialParse - " - "exponent string is not valid" ); - } - - } else { - end = length; - } - - if( length == 0 ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "FloatingPointParser::initialParse - " - "invalid length string", newValue.c_str() ); - } - - c = newValue[start]; - - if( c == '-') { - ++start; - --length; - negative = true; - } else if( c == '+' ) { - ++start; - --length; - } - - if( length == 0 ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "FloatingPointParser::initialParse - " - "invalid length string", newValue.c_str() ); - } - - decimal = newValue.find_first_of( '.' ); - if( decimal > -1 ) { - e -= end - decimal - 1; - newValue = newValue.substr( start, decimal ) + newValue.substr( decimal + 1, end ); - } else { - newValue = newValue.substr( start, end ); - } - - if( ( length = newValue.length() ) == 0 ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "FloatingPointParser::initialParse - " - "invalid length string", newValue.c_str() ); - } - - end = length; - while( end > 1 && newValue[end - 1] == '0' ) { - --end; - } - - start = 0; - while( start < end - 1 && newValue[start] == '0' ) { - start++; - } - - if( end != length || start != 0 ) { - e += length - end; - newValue = newValue.substr( start, end ); - } - - return StringExponentPair( newValue, e, negative ); -} - -//////////////////////////////////////////////////////////////////////////////// -double FloatingPointParser::parseDblName( - const std::string& namedDouble, int length ) - throw( exceptions::NumberFormatException ) { - - // Valid strings are only +Nan, NaN, -Nan, +Infinity, Infinity, - // -Infinity. - if( (length != 3) && ( length != 4) && ( length != 8) && ( length != 9 ) ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "FloatingPointParser::parseDblName - " - "invalid name string", namedDouble.c_str() ); - } - - bool negative = namedDouble.at(0) == '-' ? true : false; - - if( namedDouble.find( "Infinity" ) != string::npos ) { - return negative ? Double::NEGATIVE_INFINITY : Float::POSITIVE_INFINITY; - } - - if( namedDouble.find( "NaN" ) != string::npos ) { - return Double::NaN; - } - - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "FloatingPointParser::parseDblName - " - "invalid name string", namedDouble.c_str() ); -} - -//////////////////////////////////////////////////////////////////////////////// -float FloatingPointParser::parseFltName( - const std::string& namedFloat, int length ) - throw( exceptions::NumberFormatException ) { - - // Valid strings are only +Nan, NaN, -Nan, +Infinity, Infinity, - // -Infinity. - if( ( length != 3 ) && ( length != 4 ) && ( length != 8 ) && ( length != 9 ) ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "FloatingPointParser::parseFltName - " - "invalid name string", namedFloat.c_str() ); - } - - bool negative = namedFloat.at(0) == '-' ? true : false; - - if( namedFloat.find( "Infinitiy" ) != string::npos ) { - return negative ? Float::NEGATIVE_INFINITY : Float::POSITIVE_INFINITY; - } - - if( namedFloat.find( "NaN" ) != string::npos ) { - return Float::NaN; - } - - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "FloatingPointParser::parseFltName - " - "invalid name string", namedFloat.c_str() ); -} - -//////////////////////////////////////////////////////////////////////////////// -double FloatingPointParser::parseDouble( const std::string& value ) - throw( exceptions::NumberFormatException ) { - - std::string newValue = value; - FloatingPointParser::trim( newValue ); - int length = newValue.length(); - - if( length == 0 ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "FloatingPointParser::parseDouble - " - "invalid length string", value.c_str() ); - } - - // See if this could be a named double - char last = newValue[length - 1]; - - if( (last == 'y') || (last == 'N') ) { - return parseDblName( newValue, length ); - } - - // See if it could be a hexadecimal representation - if( toLowerCase( newValue ).find( "0x" ) != string::npos ) { - return HexStringParser::parseDouble(value); - } - - StringExponentPair info = initialParse(value, length); - - double result = parseDblImpl( info.value, info.exp ); - - if( info.negative ) { - result = -result; - } - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -float FloatingPointParser::parseFloat( const std::string& value ) - throw( exceptions::NumberFormatException ) { - - std::string newValue = value; - FloatingPointParser::trim( newValue ); - - int length = newValue.length(); - - if( length == 0 ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "FloatingPointParser::parseFloat - " - "invalid length string", value.c_str() ); - } - - // See if this could be a named float - char last = newValue[length - 1]; - if( (last == 'y') || (last == 'N') ) { - return parseFltName( value, length ); - } - - // See if it could be a hexadecimal representation - if( toLowerCase( newValue ).find( "0x" ) != string::npos ) { - return HexStringParser::parseFloat( newValue ); - } - - StringExponentPair info = initialParse( newValue, length ); - -std::cout << std::endl - << "DEBUG - FloatingPointParser::parseFloat - " - << "newValue = " << newValue << ", length = " << length; - - float result = parseFltImpl( info.value, info.exp ); - if( info.negative ) { - result = -result; - } - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string& FloatingPointParser::trim( std::string& value ) { - - // trim leading whitespace - string::size_type notwhite = value.find_first_not_of( " \t\r\n" ); - value.erase( 0, notwhite ); - - // trim trailing whitespace - notwhite = value.find_last_not_of( " \t\r\n" ); - value.erase( notwhite+1 ); - - return value; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string& FloatingPointParser::toLowerCase( std::string& value ) { - - string::size_type index = 0; - - for( ; index < value.size(); ++index ) { - if( Character::isLetter( value[index] ) ) { - value[index] = apr_tolower( value[index] ); - } - } - - return value; -} - -//////////////////////////////////////////////////////////////////////////////// -float FloatingPointParser::createFloat( const std::string&s, int exp ) { - - // assumes s is a null terminated string with at least one - // character in it - unsigned long long def[DEFAULT_WIDTH] = {0}; - unsigned long long defBackup[DEFAULT_WIDTH] = {0}; - unsigned long long* f = def; - unsigned long long* fNoOverflow = defBackup; - unsigned long long* tempBackup = NULL; - unsigned int overflow = 0; - unsigned int result = 0; - int index = 1; - int unprocessedDigits = 0; - std::string::const_iterator sIter = s.begin(); - - do { - - if( Character::isDigit( *sIter ) ) { - -std::cout << std::endl - << "DEBUG - FloatingPointParser::createFloat - " - << "current digint ASCII = " << *sIter - << ", value = " << *sIter - '0'; - - // Make a back up of f before appending, so that we can - // back out of it if there is no more room, i.e. index > - // MAX_ACCURACY_WIDTH. - memcpy( fNoOverflow, f, sizeof(unsigned long long) * index ); - overflow = BigInt::simpleAppendDecimalDigitHighPrecision( - f, index, *sIter - '0' ); - -std::cout << std::endl - << "DEBUG - FloatingPointParser::createFloat - " - << "f[index] = " << f[index] - << ", overflow ? = " << overflow; - - if( overflow ) { - - f[index++] = overflow; - - // There is an overflow, but there is no more room - // to store the result. We really only need the top 52 - // bits anyway, so we must back out of the overflow, - // and ignore the rest of the string. - if( index >= MAX_ACCURACY_WIDTH ) { - index--; - memcpy( f, fNoOverflow, sizeof(unsigned long long)* index ); - break; - } - - if( tempBackup ) { - fNoOverflow = tempBackup; - } - } - } else { - // String contained invalid characters - return -1; - } - } while( ++sIter != s.end() ); - - // We've broken out of the parse loop either because we've reached - // the end of the string or we've overflowed the maximum accuracy - // limit of a double. If we still have unprocessed digits in the - // given string, then there are three possible results: - // 1. (unprocessed digits + e) == 0, in which case we simply - // convert the existing bits that are already parsed - // 2. (unprocessed digits + e) < 0, in which case we simply - // convert the existing bits that are already parsed along - // with the given e - // 3. (unprocessed digits + e) > 0 indicates that the value is - // simply too big to be stored as a double, so return Infinity - if( ( unprocessedDigits = std::distance( sIter, s.end() ) ) > 0 ) { - - exp += unprocessedDigits; - - if( exp <= 0 ) { - return createFloat1( f, index, exp ); - } else { - result = BitOps::INFINITE_INTBITS; - } - - } else { - return createFloat1( f, index, exp ); - } - - return Float::intBitsToFloat( result ); -} - -//////////////////////////////////////////////////////////////////////////////// -float FloatingPointParser::createFloat1( unsigned long long* f, int length, int exp ) { - - int numBits = BigInt::highestSetBitHighPrecision( f, length ) + 1; - double dresult = 0.0; - int result = 0; - - numBits -= BigInt::lowestSetBitHighPrecision( f, length ); - - if( numBits < 25 && exp >= 0 && exp < LOG5_OF_TWO_TO_THE_N ) { - return Float::intBitsToFloat( BitOps::LOW_I32_FROM_LONG64_PTR( f ) ) * - Float::intBitsToFloat( tenToTheE( exp ) ); - } else if( numBits < 25 && exp < 0 && (-exp) < LOG5_OF_TWO_TO_THE_N ) { - return Float::intBitsToFloat( BitOps::LOW_I32_FROM_LONG64_PTR( f ) ) * - Float::intBitsToFloat( tenToTheE( -exp ) ); - } else if (exp >= 0 && exp < 39) { - result = Float::floatToIntBits( - (float)( BigInt::toDoubleHighPrecision( f, length ) * Math::pow( 10.0, exp ) ) ); - } else if( exp >= 39 ) { - // Convert the partial result to make sure that the - // non-exponential part is not zero. This check fixes the case - // where the user enters 0.0e309! - dresult = BigInt::toDoubleHighPrecision( f, length ); - - if( dresult == 0.0 ) { - result = BitOps::MINIMUM_INTBITS; - } else { - result = BitOps::INFINITE_INTBITS; - } - - } else if( exp > -309 ) { - - int dexp; - unsigned int fmant, fovfl; - unsigned long long dmant; - dresult = BigInt::toDoubleHighPrecision( f, length ) / Math::pow( 10.0, -exp ); - - if( BitOps::IS_DENORMAL_DBL( dresult ) ) { - return 0.0f; - } - - dexp = BigInt::doubleExponent( dresult ) + 51; - dmant = BigInt::doubleMantissa( dresult ); - - // Is it too small to be represented by a single-precision - // float? - if( dexp <= -155 ) { - return 0.0f; - } - - // Is it a denormalized single-precision float? - if( (dexp <= -127) && (dexp > -155) ) { - - // Only interested in 24 msb bits of the 53-bit double mantissa - fmant = (unsigned int) (dmant >> 29); - fovfl = ((unsigned int) (dmant & 0x1FFFFFFF)) << 3; - - while( (dexp < -127) && ((fmant | fovfl) != 0) ) { - if( (fmant & 1) != 0 ) { - fovfl |= 0x80000000; - } - fovfl >>= 1; - fmant >>= 1; - dexp++; - } - - if( (fovfl & 0x80000000) != 0) { - if( (fovfl & 0x7FFFFFFC) != 0 ) { - fmant++; - } else if( (fmant & 1) != 0 ) { - fmant++; - } - } else if( (fovfl & 0x40000000) != 0 ) { - - if( (fovfl & 0x3FFFFFFC) != 0 ) { - fmant++; - } - } - - result = fmant; - } else { - result = Float::floatToIntBits( (float)dresult ); - } - } - - // Don't go straight to zero as the fact that x*0 = 0 independent - // of x might cause the algorithm to produce an incorrect result. - // Instead try the min value first and let it fall to zero if need be. - if( exp <= -309 || result == 0 ) { - result = BitOps::MINIMUM_INTBITS; - } - - return floatAlgorithm( f, length, exp, Float::intBitsToFloat( result ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -float FloatingPointParser::floatAlgorithm( - unsigned long long* f, int length, int exp, float z ) { - - unsigned long long m = 0; - int k = 0; - int comparison = 0; - int comparison2 = 0; - unsigned long long* x = NULL; - unsigned long long* y = NULL; - unsigned long long* D = NULL; - unsigned long long* D2 = NULL; - int xLength = 0; - int yLength = 0; - int DLength = 0; - int D2Length = 0; - int decApproxCount = 0; - int incApproxCount = 0; - int result = Float::floatToIntBits( z ); - - do { - - m = BigInt::floatMantissa( z ); - k = BigInt::floatExponent( z ); - - if( exp >= 0 && k >= 0 ) { - - xLength = sizeOfTenToTheE( exp ) + length; - x = new unsigned long long[xLength]; - memset( x + length, 0, sizeof(unsigned long long) * (xLength - length) ); - memcpy( x, f, sizeof(unsigned long long) * length ); - BigInt::timesTenToTheEHighPrecision( x, xLength, exp ); - - yLength = (k >> 6) + 2; - y = new unsigned long long[yLength]; - memset( y + 1, 0, sizeof(unsigned long long) * (yLength - 1) ); - *y = m; - BigInt::simpleShiftLeftHighPrecision (y, yLength, k); - - } else if( exp >= 0 ) { - - xLength = sizeOfTenToTheE (exp) + length + ((-k) >> 6) + 1; - x = new unsigned long long[xLength]; - memset( x + length, 0, sizeof(unsigned long long) * (xLength - length) ); - memcpy( x, f, sizeof(unsigned long long) * length ); - BigInt::timesTenToTheEHighPrecision( x, xLength, exp ); - BigInt::simpleShiftLeftHighPrecision( x, xLength, -k ); - - yLength = 1; - y = new unsigned long long[yLength]; - *y = m; - - } else if( k >= 0 ) { - - xLength = length; - x = f; - - yLength = sizeOfTenToTheE( -exp ) + 2 + ( k >> 6 ); - y = new unsigned long long[yLength]; - memset( y + 1, 0, sizeof(unsigned long long) * (yLength - 1)) ; - *y = m; - BigInt::timesTenToTheEHighPrecision( y, yLength, -exp ); - BigInt::simpleShiftLeftHighPrecision( y, yLength, k ); - - } else { - - xLength = length + ((-k) >> 6) + 1; - x = new unsigned long long[xLength]; - memset( x + length, 0, sizeof(unsigned long long) * (xLength - length) ); - memcpy( x, f, sizeof(unsigned long long) * length ); - BigInt::simpleShiftLeftHighPrecision( x, xLength, -k ); - - yLength = sizeOfTenToTheE( -exp ) + 1; - y = new unsigned long long[yLength]; - memset( y + 1, 0, sizeof(unsigned long long) * (yLength - 1) ); - *y = m; - BigInt::timesTenToTheEHighPrecision( y, yLength, -exp ); - } - - comparison = BigInt::compareHighPrecision( x, xLength, y, yLength ); - if( comparison > 0 ) { - // x > y - DLength = xLength; - D = new unsigned long long[DLength]; - memcpy( D, x, DLength * sizeof(unsigned long long) ); - BigInt::subtractHighPrecision( D, DLength, y, yLength ); - } else if( comparison ) { - // y > x - DLength = yLength; - D = new unsigned long long[DLength]; - memcpy (D, y, DLength * sizeof (unsigned long long)); - BigInt::subtractHighPrecision( D, DLength, x, xLength ); - } else { - /* y == x */ - DLength = 1; - D = new unsigned long long[DLength]; - *D = 0; - } - - D2Length = DLength + 1; - D = new unsigned long long[DLength]; - m <<= 1; - BigInt::multiplyHighPrecision( D, DLength, &m, 1, D2, D2Length ); - m >>= 1; - - comparison2 = BigInt::compareHighPrecision( D2, D2Length, y, yLength ); - if( comparison2 < 0 ) { - if( comparison < 0 && m == BitOps::NORMAL_MASK ) { - - BigInt::simpleShiftLeftHighPrecision( D2, D2Length, 1 ); - if( BigInt::compareHighPrecision( D2, D2Length, y, yLength) > 0 ) { - --result; - decApproxCount++; - if( ( incApproxCount > 2 ) && ( decApproxCount > 2 ) ) { - if( decApproxCount > incApproxCount ) { - result += decApproxCount - incApproxCount; - } else if( incApproxCount > decApproxCount ) { - result -= incApproxCount - decApproxCount; - } - break; - } - } else { - break; - } - } else { - break; - } - } else if( comparison2 == 0 ) { - - if( (m & 1) == 0 ) { - if( comparison < 0 && m == BitOps::NORMAL_MASK ) { - --result; - decApproxCount++; - if( ( incApproxCount > 2 ) && ( decApproxCount > 2 ) ) { - if( decApproxCount > incApproxCount ) { - result += decApproxCount - incApproxCount; - } else if( incApproxCount > decApproxCount ) { - result -= incApproxCount - decApproxCount; - } - break; - } - } else { - break; - } - } else if( comparison < 0 ) { - --result; - decApproxCount++; - if( ( incApproxCount > 2 ) && ( decApproxCount > 2 ) ) { - if( decApproxCount > incApproxCount ) { - result += decApproxCount - incApproxCount; - } else if( incApproxCount > decApproxCount ) { - result -= incApproxCount - decApproxCount; - } - break; - } - break; - } else { - ++result; - incApproxCount++; - if( ( incApproxCount > 2 ) && ( decApproxCount > 2 ) ) { - if( decApproxCount > incApproxCount ) { - result += decApproxCount - incApproxCount; - } else if( incApproxCount > decApproxCount ) { - result -= incApproxCount - decApproxCount; - } - } - break; - } - } else if( comparison < 0 ) { - --result; - decApproxCount++; - if( ( incApproxCount > 2 ) && ( decApproxCount > 2 ) ) { - if( decApproxCount > incApproxCount ) { - result += decApproxCount - incApproxCount; - } else if( incApproxCount > decApproxCount ) { - result -= incApproxCount - decApproxCount; - } - break; - } - } else { - if( (unsigned int)result == BitOps::FLOAT_EXPONENT_MASK ) { - break; - } - - if( ( incApproxCount > 2 ) && ( decApproxCount > 2 ) ) { - if( decApproxCount > incApproxCount ) { - result += decApproxCount - incApproxCount; - } else if( incApproxCount > decApproxCount ) { - result -= incApproxCount - decApproxCount; - } - break; - } - } - } - while( true ); - - delete x; - delete y; - delete D; - delete D2; - - return Float::intBitsToFloat( result ); -}
diff --git a/src/decaf/src/main/decaf/internal/util/FloatingPointParser.h b/src/decaf/src/main/decaf/internal/util/FloatingPointParser.h deleted file mode 100644 index f30d5ad..0000000 --- a/src/decaf/src/main/decaf/internal/util/FloatingPointParser.h +++ /dev/null
@@ -1,203 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_INTERNAL_UTIL_FLOATINGPOINTPARSER_H_ -#define _DECAF_INTERNAL_UTIL_FLOATINGPOINTPARSER_H_ - -#include <decaf/util/Config.h> -#include <decaf/lang/exceptions/NumberFormatException.h> -#include <string> - -namespace decaf{ -namespace internal{ -namespace util{ - - /** - * Used to parse a string and return either a single or double precision - * floating point number. - */ - class FloatingPointParser { - private: - - class StringExponentPair { - public: - - std::string value; - int exp; - bool negative; - - StringExponentPair( const std::string value, int exp, bool negative ) { - this->value = value; - this->exp = exp; - this->negative = negative; - } - }; - - static const int MAX_ACCURACY_WIDTH = 17; - static const int DEFAULT_WIDTH = MAX_ACCURACY_WIDTH; - static const int LOG5_OF_TWO_TO_THE_N = 11; - - static const int tens[11]; - - public: - - virtual ~FloatingPointParser() {} - - public: - - /** - * Returns the closest double value to the real number in the string. - * @param value - the String that will be parsed to a floating point - * @return the double closest to the real number - * @exception NumberFormatException if value is not a valid Number - */ - static double parseDouble( const std::string& value ) - throw ( lang::exceptions::NumberFormatException ); - - /** - * Returns the closest float value to the real number in the string. - * @param value - the String that will be parsed to a floating point - * @return the float closest to the real number - * @exception NumberFormatException if value is not a valid Number - */ - static float parseFloat( const std::string& value ) - throw ( lang::exceptions::NumberFormatException ); - - private: - - static int sizeOfTenToTheE( int e) { - return ( e / 19 ) + 1; - } - - /** - * Takes a String and an integer exponent. The String should hold a positive - * integer value (or zero). The exponent will be used to calculate the - * floating point number by taking the positive integer the String - * represents and multiplying by 10 raised to the power of the of the - * exponent. Returns the closest double value to the real number - * @param value - the String that will be parsed to a floating point - * @param exp - an int represent the 10 to part - * @return the double closest to the real number - * @exception NumberFormatException if string isn't a valid number - */ - static double parseDblImpl( const std::string& value, int exp ) - throw ( lang::exceptions::NumberFormatException ); - - /** - * Takes a String and an integer exponent. The String should hold a positive - * integer value (or zero). The exponent will be used to calculate the - * floating point number by taking the positive integer the String - * represents and multiplying by 10 raised to the power of the of the - * exponent. Returns the closest float value to the real number - * @param value - the String that will be parsed to a floating point - * @param exp - an int represent the 10 to part - * @return the float closest to the real number - * @exception NumberFormatException fi the string is not a valid number - */ - static float parseFltImpl( const std::string& value, int exp ) - throw ( lang::exceptions::NumberFormatException ); - - /** - * Takes a String and does some initial parsing. Should return a - * StringExponentPair containing a String with no leading or trailing white - * space and trailing zeroes eliminated. The exponent of the - * StringExponentPair will be used to calculate the floating point number by - * taking the positive integer the String represents and multiplying by 10 - * raised to the power of the of the exponent. - * @param value - the String that will be parsed to a floating point - * @param length - the length of s - * @return a StringExponentPair with necessary values - * @exception NumberFormatException - */ - static StringExponentPair initialParse( const std::string& value, int length ) - throw ( lang::exceptions::NumberFormatException ); - - /* - * Assumes the string is trimmed. - * @param value - the String that will be parsed to a floating point - * @param length - the length of s - * @return the parsed double - * @exception NumberFormatException - */ - static double parseDblName( const std::string& namedDouble, int length ) - throw ( lang::exceptions::NumberFormatException ); - - /* - * Assumes the string is trimmed. - * @param value - the String that will be parsed to a floating point - * @param length - the length of s - * @return the parsed double - * @exception NumberFormatException - */ - static float parseFltName( const std::string& namedFloat, int length ) - throw ( lang::exceptions::NumberFormatException ); - - /** - * Trims the leading and trailing whitespace from a string - * @param value - reference to the string to trim - * @param returns a reference to the string passed for chaining - */ - static std::string& trim( std::string& value ); - - /** - * Turns all letters in the string into lowercase. - * @param value - reference to the string to trim - * @param returns a reference to the string passed for chaining - */ - static std::string& toLowerCase( std::string& value ); - - /** - * Create a float from the given string and exponent - */ - static float createFloat( const std::string& s, int exp ); - - /** - * Create a float from the given long long array and exponent - */ - static float createFloat1( unsigned long long* f, int length, int exp ); - - /** - * The algorithm for the function floatAlgorithm() below can be found - * in: - * - * "How to Read Floating-Point Numbers Accurately", William D. - * Clinger, Proceedings of the ACM SIGPLAN '90 Conference on - * Programming Language Design and Implementation, June 20-22, - * 1990, pp. 92-101. - * - * There is a possibility that the function will end up in an endless - * loop if the given approximating floating-point number (a very small - * floating-point whose value is very close to zero) straddles between - * two approximating integer values. We modified the algorithm slightly - * to detect the case where it oscillates back and forth between - * incrementing and decrementing the floating-point approximation. It - * is currently set such that if the oscillation occurs more than twice - * then return the original approximation. - * @returns a newly parse float. - */ - static float floatAlgorithm( unsigned long long* f, int length, - int e, float z ); - - static int tenToTheE( int exp ) { - return *(tens + exp); - } - - }; - -}}} - -#endif /*_DECAF_INTERNAL_UTIL_FLOATINGPOINTPARSER_H_*/
diff --git a/src/decaf/src/main/decaf/internal/util/HexStringParser.cpp b/src/decaf/src/main/decaf/internal/util/HexStringParser.cpp deleted file mode 100644 index 66fe9de..0000000 --- a/src/decaf/src/main/decaf/internal/util/HexStringParser.cpp +++ /dev/null
@@ -1,312 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "HexStringParser.h" - -#include <decaf/lang/Character.h> -#include <decaf/lang/Integer.h> -#include <decaf/lang/Long.h> -#include <decaf/lang/Double.h> -#include <decaf/lang/Float.h> -#include <decaf/util/StringTokenizer.h> -#include <decaf/lang/exceptions/NumberFormatException.h> -#include <apr_pools.h> -#include <apr_strmatch.h> - -using namespace decaf; -using namespace decaf::util; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; -using namespace decaf::internal; -using namespace decaf::internal::util; - -//////////////////////////////////////////////////////////////////////////////// -const std::string HexStringParser::HEX_SIGNIFICANT = - "0[xX](\\p{XDigit}+\\.?|\\p{XDigit}*\\.\\p{XDigit}+)"; -const std::string HexStringParser::BINARY_EXPONENT = - "[pP]([+-]?\\d+)"; -const std::string HexStringParser::FLOAT_TYPE_SUFFIX = - "[fFdD]?"; -const std::string HexStringParser::HEX_PATTERN = - "[\\x00-\\x20]*([+-]?)" + HEX_SIGNIFICANT + BINARY_EXPONENT + FLOAT_TYPE_SUFFIX + "[\\x00-\\x20]*"; - -//////////////////////////////////////////////////////////////////////////////// -HexStringParser::HexStringParser( int exponentWidth, int mantissaWidth ) { - - this->EXPONENT_WIDTH = exponentWidth; - this->MANTISSA_WIDTH = mantissaWidth; - - this->EXPONENT_BASE = ~( -1 << (exponentWidth - 1) ); - this->MAX_EXPONENT = ~( -1 << exponentWidth ); - this->MIN_EXPONENT = -( MANTISSA_WIDTH + 1 ); - this->MANTISSA_MASK = ~( -1 << mantissaWidth ); -} - -//////////////////////////////////////////////////////////////////////////////// -double HexStringParser::parseDouble( const std::string& hexString ) { - - HexStringParser parser( DOUBLE_EXPONENT_WIDTH, DOUBLE_MANTISSA_WIDTH ); - long long result = parser.parse( hexString ); - return Double::longBitsToDouble( result ); -} - -//////////////////////////////////////////////////////////////////////////////// -float HexStringParser::parseFloat( const std::string& hexString ) { - - HexStringParser parser( FLOAT_EXPONENT_WIDTH, FLOAT_MANTISSA_WIDTH ); - int result = (int)parser.parse( hexString ); - return Float::intBitsToFloat( result ); -} - -//////////////////////////////////////////////////////////////////////////////// -long long HexStringParser::parse( const std::string& hexString ) { - - std::string* hexSegments = getSegmentsFromHexString( hexString ); - std::string signStr = hexSegments[0]; - std::string significantStr = hexSegments[1]; - std::string exponentStr = hexSegments[2]; - delete hexSegments; - - parseHexSign( signStr ); - parseExponent( exponentStr ); - parseMantissa( significantStr ); - - sign <<= ( MANTISSA_WIDTH + EXPONENT_WIDTH ); - exponent <<= MANTISSA_WIDTH; - return sign | exponent | mantissa; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string* HexStringParser::getSegmentsFromHexString( const std::string& hexString ) { - -// apr_pool_t* thePool = NULL; -// apr_pool_create( &thePool, NULL ); -// apr_strmatch_pattern* pattern = -// apr_strmatch_precompile( thePool, HEX_PATTERN.c_str(), 0 ); -// -// std::vector<std::string> hexSegments; -// - - - // TODO -// Matcher matcher = PATTERN.matcher(hexString); -// if( !matcher.matches() ) { -// throw NumberFormatException( -// __FILE__, __LINE__, -// "HexStringParser::getSegmentsFromHexString" -// "Invalid hex string:", hexString.c_str() ); -// } -// -// std::string* hexSegments = new std::string[3]; -// hexSegments[0] = matcher.group(1); -// hexSegments[1] = matcher.group(2); -// hexSegments[2] = matcher.group(3); -// -// return hexSegments; - - return NULL; -} - -//////////////////////////////////////////////////////////////////////////////// -void HexStringParser::parseExponent(const std::string& exponentStr) { - - std::string newExponentStr = exponentStr; - - char leadingChar = newExponentStr.at(0); - int expSign = ( leadingChar == '-' ? -1 : 1 ); - if( !Character::isDigit( leadingChar ) ) { - newExponentStr = newExponentStr.substr( 1, newExponentStr.size() ); - } - - try { - exponent = expSign * Long::parseLong( exponentStr ); - checkedAddExponent( EXPONENT_BASE ); - } catch( exceptions::NumberFormatException& e ) { - exponent = expSign * Long::MAX_VALUE; - } -} - -//////////////////////////////////////////////////////////////////////////////// -void HexStringParser::parseMantissa(const std::string& significantStr) { - - StringTokenizer tokenizer( significantStr, "\\." ); - std::vector<std::string> strings; - - tokenizer.toArray( strings ); - - std::string strIntegerPart = strings[0]; - std::string strDecimalPart = strings.size() > 1 ? strings[1] : ""; - - std::string significand = - getNormalizedSignificand( strIntegerPart, strDecimalPart) ; - - if( significand == "0" ) { - setZero(); - return; - } - - int offset = getOffset( strIntegerPart, strDecimalPart ); - checkedAddExponent( offset ); - - if( exponent >= MAX_EXPONENT ) { - setInfinite(); - return; - } - - if( exponent <= MIN_EXPONENT ) { - setZero(); - return; - } - - if( significand.length() > MAX_SIGNIFICANT_LENGTH ) { - abandonedNumber = significand.substr( MAX_SIGNIFICANT_LENGTH ); - significand = significand.substr( 0, MAX_SIGNIFICANT_LENGTH ); - } - - mantissa = Long::parseLong( significand, HEX_RADIX ); - - if( exponent >= 1 ) { - processNormalNumber(); - } else{ - processSubNormalNumber(); - } - -} - -//////////////////////////////////////////////////////////////////////////////// -void HexStringParser::checkedAddExponent( long long offset ) { - - long long result = exponent + offset; - int expSign = Long::signum( exponent ); - - if( expSign * Long::signum( offset ) > 0 && - expSign * Long::signum( result ) < 0 ) { - - exponent = expSign * Long::MAX_VALUE; - } else { - exponent = result; - } -} - -//////////////////////////////////////////////////////////////////////////////// -void HexStringParser::processNormalNumber() { - int desiredWidth = MANTISSA_WIDTH + 2; - fitMantissaInDesiredWidth( desiredWidth ); - round(); - mantissa = mantissa & MANTISSA_MASK; -} - -//////////////////////////////////////////////////////////////////////////////// -void HexStringParser::processSubNormalNumber() { - int desiredWidth = MANTISSA_WIDTH + 1; - desiredWidth += (int)exponent;//lends bit from mantissa to exponent - exponent = 0; - fitMantissaInDesiredWidth( desiredWidth ); - round(); - mantissa = mantissa & MANTISSA_MASK; -} - -//////////////////////////////////////////////////////////////////////////////// -void HexStringParser::fitMantissaInDesiredWidth(int desiredWidth){ - int bitLength = countBitsLength( mantissa ); - if( bitLength > desiredWidth ) { - discardTrailingBits( bitLength - desiredWidth ); - } else { - mantissa <<= ( desiredWidth - bitLength ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void HexStringParser::discardTrailingBits( long long num ) { - long long mask = ~( -1L << num ); - abandonedNumber += ( mantissa & mask ); - mantissa >>= num; -} - -//////////////////////////////////////////////////////////////////////////////// -void HexStringParser::round() { - - std::string result = abandonedNumber; - replaceAll( result, "0+", "" ); - - bool moreThanZero = ( result.length() > 0 ? true : false ); - - int lastDiscardedBit = (int)( mantissa & 1L ); - mantissa >>= 1; - int tailBitInMantissa = (int)( mantissa & 1L ); - - if( lastDiscardedBit == 1 && ( moreThanZero || tailBitInMantissa == 1 ) ) { - - int oldLength = countBitsLength( mantissa ); - mantissa += 1L; - int newLength = countBitsLength( mantissa ); - - //Rounds up to exponent when whole bits of mantissa are one-bits. - if( oldLength >= MANTISSA_WIDTH && newLength > oldLength ) { - checkedAddExponent( 1 ); - } - } -} - -//////////////////////////////////////////////////////////////////////////////// -std::string HexStringParser::getNormalizedSignificand( - const std::string& strIntegerPart, const std::string& strDecimalPart ) { - - std::string significand = strIntegerPart + strDecimalPart; - - replaceFirst( significand, "^0x", "" ); - - if( significand.length() == 0 ) { - significand = "0"; - } - return significand; -} - -//////////////////////////////////////////////////////////////////////////////// -int HexStringParser::getOffset( - const std::string& strIntegerPart, const std::string& strDecimalPart ) { - - std::string strIntegerPart2 = strIntegerPart; - - replaceFirst( strIntegerPart2, "^0+", "" ); - - //If the Interger part is a nonzero number. - if( strIntegerPart.length() != 0 ) { - std::string leadingNumber = strIntegerPart.substr( 0, 1 ); - return ( strIntegerPart.length() - 1) * 4 + - countBitsLength(Long::parseLong( leadingNumber,HEX_RADIX ) ) - 1; - } - - //If the Interger part is a zero number. - int i; - for( i = 0; (std::size_t)i < strDecimalPart.length() && strDecimalPart.at(i) == '0'; i++ ); - - if( (std::size_t)i == strDecimalPart.length() ) { - return 0; - } - - std::string leadingNumber = strDecimalPart.substr( i,i + 1 ); - - return (-i - 1) * 4 + - countBitsLength( Long::parseLong( leadingNumber, HEX_RADIX) ) - 1; -} - -//////////////////////////////////////////////////////////////////////////////// -int HexStringParser::countBitsLength(long long value) { - int leadingZeros = Long::numberOfLeadingZeros( value ); - return Long::SIZE - leadingZeros; -}
diff --git a/src/decaf/src/main/decaf/internal/util/HexStringParser.h b/src/decaf/src/main/decaf/internal/util/HexStringParser.h deleted file mode 100644 index cfbe648..0000000 --- a/src/decaf/src/main/decaf/internal/util/HexStringParser.h +++ /dev/null
@@ -1,209 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_INTERNAL_UTIL_HEXSTRINGPARSER_H_ -#define _DECAF_INTERNAL_UTIL_HEXSTRINGPARSER_H_ - -#include <decaf/util/Config.h> -#include <string> - -namespace decaf{ -namespace internal{ -namespace util{ - - class HexStringParser { - private: - - static const unsigned int DOUBLE_EXPONENT_WIDTH = 11; - static const unsigned int DOUBLE_MANTISSA_WIDTH = 52; - static const unsigned int FLOAT_EXPONENT_WIDTH = 8; - static const unsigned int FLOAT_MANTISSA_WIDTH = 23; - static const unsigned int HEX_RADIX = 16; - static const unsigned int MAX_SIGNIFICANT_LENGTH = 15; - - static const std::string HEX_SIGNIFICANT; - static const std::string BINARY_EXPONENT; - static const std::string FLOAT_TYPE_SUFFIX; - static const std::string HEX_PATTERN; - - // TODO - //static final Pattern PATTERN = Pattern.compile(HEX_PATTERN); - - private: - - int EXPONENT_WIDTH; - int MANTISSA_WIDTH; - long EXPONENT_BASE; - long MAX_EXPONENT; - long MIN_EXPONENT; - long MANTISSA_MASK; - long sign; - long exponent; - long mantissa; - std::string abandonedNumber; - - public: - - /** - * Create a new HexParser - * @param exponentWidth - Width of the exponent for the type to parse - * @param mantissaWidth - Width of the mantissa for the type to parse - */ - HexStringParser( int exponentWidth, int mantissaWidth ); - - virtual ~HexStringParser() {} - - /** - * Parses a hex string using the specs given in the constructor - * and returns a long long with the bits of the parsed string, the - * caller can then convert those to a float or doulbe as needed. - * @param hexString - string to parse - * @returns the bits parsed from the string - */ - long long parse( const std::string& hexString ); - - private: - - /* - * Parses the sign field. - * @param sign string to parse - */ - void parseHexSign( const std::string& signStr ) { - this->sign = signStr.compare("-") == 0 ? 1 : 0; - } - - /* - * Parses the exponent field. - * @param exponent string to parse - */ - void parseExponent( const std::string& exponentStr ); - - /* - * Parses the mantissa field. - * @param mantissa string to parse - */ - void parseMantissa( const std::string& significantStr ); - - void setInfinite() { - exponent = MAX_EXPONENT; - mantissa = 0; - } - - void setZero() { - exponent = 0; - mantissa = 0; - } - - /* - * Sets the exponent variable to Long::MAX_VALUE or -Long::MAX_VALUE if - * overflow or underflow happens. - * @param the offset to set - */ - void checkedAddExponent( long long offset ); - - void processNormalNumber(); - void processSubNormalNumber(); - int countBitsLength( long long value ); - - /* - * Adjusts the mantissa to desired width for further analysis. - */ - void fitMantissaInDesiredWidth( int desiredWidth ); - - /* - * Stores the discarded bits to abandonedNumber. - */ - void discardTrailingBits( long long num ); - - /* - * The value is rounded up or down to the nearest infinitely precise result. - * If the value is exactly halfway between two infinitely precise results, - * then it should be rounded up to the nearest infinitely precise even. - */ - void round(); - - /* - * Returns the normalized significand after removing the leading zeros. - */ - std::string getNormalizedSignificand( const std::string& strIntegerPart, - const std::string& strDecimalPart ); - - /* - * Calculates the offset between the normalized number and unnormalized - * number. In a normalized representation, significand is represented by the - * characters "0x1." followed by a lowercase hexadecimal representation of - * the rest of the significand as a fraction. - */ - int getOffset( const std::string& strIntegerPart, - const std::string& strDecimalPart ); - - public: // Statics - - /* - * Parses the hex string to a double number. - * @param hexString - string to parse - * @returns the parsed double value - */ - static double parseDouble( const std::string& hexString ); - - /* - * Parses the hex string to a float number. - * @param hexString - string to parse - * @returns the parsed float value - */ - static float parseFloat( const std::string& hexString ); - - - private: // Static - - /* - * Analyzes the hex string and extracts the sign and digit segments. - * @param hexString - string to parse - * @returns array of three strings holding the segments caller owns - */ - static std::string* getSegmentsFromHexString( const std::string& hexString ); - - std::string& replaceFirst( std::string& target, - const std::string& find, - const std::string& replace ) { - - std::string::size_type pos = std::string::npos; - - if( ( pos = target.find_first_of( find, 0 ) ) != std::string::npos ) { - return target.replace( pos, find.length(), replace ); - } - - return target; - } - - std::string& replaceAll( std::string& target, - const std::string& find, - const std::string& replace ) { - - std::string::size_type pos = std::string::npos; - while( ( pos = target.find( find ) ) != std::string::npos ) { - target.replace( pos, find.length(), replace ); - } - - return target; - } - - }; - -}}} - -#endif /*_DECAF_INTERNAL_UTIL_HEXSTRINGPARSER_H_*/
diff --git a/src/decaf/src/main/decaf/internal/util/NumberConverter.cpp b/src/decaf/src/main/decaf/internal/util/NumberConverter.cpp deleted file mode 100644 index 21580ff..0000000 --- a/src/decaf/src/main/decaf/internal/util/NumberConverter.cpp +++ /dev/null
@@ -1,508 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "NumberConverter.h" - -#include <decaf/lang/Math.h> -#include <decaf/lang/Float.h> -#include <decaf/lang/Double.h> -#include <decaf/lang/Integer.h> - -#include <decaf/internal/util/BigInt.h> -#include <decaf/internal/util/BitOps.h> - -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::internal; -using namespace decaf::internal::util; - -//////////////////////////////////////////////////////////////////////////////// -const double NumberConverter::invLogOfTenBaseTwo = - Math::log(2.0) / Math::log(10.0); -NumberConverter::StaticInitializer NumberConverter::init; -std::vector<long long> NumberConverter::TEN_TO_THE; - -//////////////////////////////////////////////////////////////////////////////// -NumberConverter::StaticInitializer::StaticInitializer() { - - NumberConverter::TEN_TO_THE.resize(20); - NumberConverter::TEN_TO_THE[0] = 1L; - - for( std::size_t i = 1; i < TEN_TO_THE.size(); ++i ) { - long long previous = TEN_TO_THE[i - 1]; - TEN_TO_THE[i] = ( previous << 1 ) + ( previous << 3 ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -NumberConverter::NumberConverter() { - - this->getCount = 0; - this->setCount = 0; - this->firstK = 0; - this->uArray.resize(64); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string NumberConverter::convertD( double value ) { - - unsigned int p = 1023 + 52; // the power offset (precision) - - // the mask to get the sign of the number - unsigned long long signMask = 0x8000000000000000ULL; - // the mask to get the power bits - unsigned long long eMask = 0x7FF0000000000000ULL; - // the mask to get the significand bits - unsigned long long fMask = 0x000FFFFFFFFFFFFFULL; - - unsigned long long inputNumberBits = Double::doubleToLongBits( value ); - // the value of the sign... 0 is positive, ~0 is negative - std::string signString = ( inputNumberBits & signMask ) == 0 ? "" : "-"; - // the value of the 'power bits' of the value - unsigned int e = (int)(( inputNumberBits & eMask ) >> 52 ); - // the value of the 'significand bits' of the value - unsigned long long f = inputNumberBits & fMask; - bool mantissaIsZero = (f == 0); - int pow = 0, numBits = 52; - - if( e == 2047 ) { - return mantissaIsZero ? signString + "Infinity" : "NaN"; - } - - if( e == 0 ) { - - if( mantissaIsZero ) { - return signString + "0.0"; - } - - if( f == 1 ) { - // special case to increase precision even though 2 * - // Double::MIN_VALUE is 1.0e-323 - return signString + "4.9E-324"; - } - - pow = 1 - p; // a denormalized number - long long ff = f; - while( (ff & 0x0010000000000000ULL ) == 0 ) { - ff = ff << 1; - numBits--; - } - } else { - // 0 < e < 2047 - // a "normalized" number - f = f | 0x0010000000000000ULL; - pow = e - p; - } - - if( -59 < pow && pow < 6 || (pow == -59 && !mantissaIsZero) ) { - longDigitGenerator( f, pow, e == 0, mantissaIsZero, numBits ); - } else { - bigIntDigitGeneratorInstImpl( f, pow, e == 0, mantissaIsZero, numBits ); - } - - if( value >= 1e7 || value <= -1e7 || - ( value > -1e-3 && value < 1e-3 ) ) { - return signString + freeFormatExponential(); - } - - return signString + freeFormat(); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string NumberConverter::convertF(float value) { - - unsigned int p = 127 + 23; // the power offset (precision) - unsigned int signMask = 0x80000000; // the mask to get the sign of the number - unsigned int eMask = 0x7F800000; // the mask to get the power bits - unsigned int fMask = 0x007FFFFF; // the mask to get the significand bits - - unsigned int inputNumberBits = Float::floatToIntBits(value); - // the value of the sign... 0 is positive, ~0 is negative - std::string signString = (inputNumberBits & signMask) == 0 ? "" : "-"; - // the value of the 'power bits' of the value - unsigned int e = (inputNumberBits & eMask) >> 23; - // the value of the 'significand bits' of the value - unsigned int f = inputNumberBits & fMask; - bool mantissaIsZero = ( f == 0 ); - int pow = 0, numBits = 23; - - if( e == 255 ) { - return mantissaIsZero ? signString + "Infinity" : "NaN"; - } - - if( e == 0 ) { - - if( mantissaIsZero ) { - return signString + "0.0"; - } - - pow = 1 - p; // a denormalized number - if( f < 8 ) { // want more precision with smallest values - f = f << 2; - pow -= 2; - } - int ff = f; - while( (ff & 0x00800000) == 0) { - ff = ff << 1; - numBits--; - } - } else { - // 0 < e < 255 - // a "normalized" number - f = f | 0x00800000; - pow = e - p; - } - - if( -59 < pow && pow < 35 || (pow == -59 && !mantissaIsZero) ) { - longDigitGenerator( f, pow, e == 0, mantissaIsZero, numBits ); - } else { - bigIntDigitGeneratorInstImpl( f, pow, e == 0, mantissaIsZero, numBits); - } - - if( value >= 1e7f || value <= -1e7f || - ( value > -1e-3f && value < 1e-3f ) ) { - return signString + freeFormatExponential(); - } - - return signString + freeFormat(); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string NumberConverter::freeFormatExponential() { - - // corresponds to process "Free-Format Exponential" - char formattedDecimal[25] = {0}; - formattedDecimal[0] = (char)( '0' + uArray[getCount++] ); - formattedDecimal[1] = '.'; - // the position the next character is to be inserted into - // formattedDecimal - int charPos = 2; - - int k = firstK; - int expt = k; - while( true ) { - k--; - if( getCount >= setCount) { - break; - } - - formattedDecimal[charPos++] = (char)( '0' + uArray[getCount++] ); - } - - if( k == expt - 1 ) { - formattedDecimal[charPos++] = '0'; - } - formattedDecimal[charPos++] = 'E'; - - return std::string( formattedDecimal, 0, charPos ) + Integer::toString( expt ); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string NumberConverter::freeFormat() { - - // corresponds to process "Free-Format" - char formattedDecimal[25] = {0}; - // the position the next character is to be inserted into - // formattedDecimal - int charPos = 0; - int k = firstK; - if( k < 0 ) { - formattedDecimal[0] = '0'; - formattedDecimal[1] = '.'; - charPos += 2; - for( int i = k + 1; i < 0; i++ ) { - formattedDecimal[charPos++] = '0'; - } - } - - int U = uArray[getCount++]; - do{ - if( U != -1 ) { - formattedDecimal[charPos++] = (char) ('0' + U); - } else if (k >= -1) { - formattedDecimal[charPos++] = '0'; - } - - if( k == 0 ) { - formattedDecimal[charPos++] = '.'; - } - - k--; - U = getCount < setCount ? uArray[getCount++] : -1; - - } while( U != -1 || k >= -1 ); - - return std::string( formattedDecimal, 0, charPos ); -} - -//////////////////////////////////////////////////////////////////////////////// -void NumberConverter::bigIntDigitGeneratorInstImpl( - long long f, int e, bool isDenormalized, bool mantissaIsZero, int p ) { - - static const std::size_t RM_SIZE = 21; - static const std::size_t STemp_SIZE = 22; - - unsigned int RLength, SLength, TempLength, mplus_Length, mminus_Length; - int high, low, i; - int k, U; - - unsigned long long R[RM_SIZE] = {0}; - unsigned long long S[STemp_SIZE] = {0}; - unsigned long long mplus[RM_SIZE] = {0}; - unsigned long long mminus[RM_SIZE] = {0}; - unsigned long long Temp[STemp_SIZE] = {0}; - - if( e >= 0 ) { - - *R = f; - *mplus = *mminus = 1; - BigInt::simpleShiftLeftHighPrecision( mminus, RM_SIZE, e ); - - if( f != (2 << (p - 1)) ) { - - BigInt::simpleShiftLeftHighPrecision( R, RM_SIZE, e + 1 ); - *S = 2; - - /* - * m+ = m+ << e results in 1.0e23 to be printed as - * 0.9999999999999999E23 - * m+ = m+ << e+1 results in 1.0e23 to be printed as - * 1.0e23 (caused too much rounding) - * 470fffffffffffff = 2.0769187434139308E34 - * 4710000000000000 = 2.076918743413931E34 - */ - BigInt::simpleShiftLeftHighPrecision(mplus, RM_SIZE, e); - - } else { - - BigInt::simpleShiftLeftHighPrecision( R, RM_SIZE, e + 2 ); - *S = 4; - BigInt::simpleShiftLeftHighPrecision( mplus, RM_SIZE, e + 1 ); - } - - } else { - - if( isDenormalized || (f != (2 << (p - 1))) ) { - - *R = f << 1; - *S = 1; - BigInt::simpleShiftLeftHighPrecision( S, STemp_SIZE, 1 - e ); - *mplus = *mminus = 1; - - } else { - - *R = f << 2; - *S = 1; - BigInt::simpleShiftLeftHighPrecision( S, STemp_SIZE, 2 - e ); - *mplus = 2; - *mminus = 1; - } - } - - k = (int)Math::ceil( (e + p - 1) * invLogOfTenBaseTwo - 1e-10 ); - - if( k > 0 ) { - BigInt::timesTenToTheEHighPrecision( S, STemp_SIZE, k ); - } else { - BigInt::timesTenToTheEHighPrecision( R, RM_SIZE, -k ); - BigInt::timesTenToTheEHighPrecision( mplus, RM_SIZE, -k ); - BigInt::timesTenToTheEHighPrecision( mminus, RM_SIZE, -k ); - } - - RLength = mplus_Length = mminus_Length = RM_SIZE; - SLength = TempLength = STemp_SIZE; - - memset( Temp + RM_SIZE, 0, (STemp_SIZE - RM_SIZE) * sizeof (unsigned long long) ); - memcpy( Temp, R, RM_SIZE * sizeof (unsigned long long) ); - - while( RLength > 1 && R[RLength - 1] == 0 ) { - --RLength; - } - while( mplus_Length > 1 && mplus[mplus_Length - 1] == 0 ) { - --mplus_Length; - } - while( mminus_Length > 1 && mminus[mminus_Length - 1] == 0 ) { - --mminus_Length; - } - while( SLength > 1 && S[SLength - 1] == 0 ) { - --SLength; - } - - TempLength = (RLength > mplus_Length ? RLength : mplus_Length) + 1; - BigInt::addHighPrecision( Temp, TempLength, mplus, mplus_Length ); - - if( BigInt::compareHighPrecision (Temp, TempLength, S, SLength) >= 0 ) { - firstK = k; - } else { - - firstK = k - 1; - BigInt::simpleAppendDecimalDigitHighPrecision( R, ++RLength, 0 ); - BigInt::simpleAppendDecimalDigitHighPrecision( mplus, ++mplus_Length, 0 ); - BigInt::simpleAppendDecimalDigitHighPrecision( mminus, ++mminus_Length, 0 ); - while( RLength > 1 && R[RLength - 1] == 0 ) { - --RLength; - } - while( mplus_Length > 1 && mplus[mplus_Length - 1] == 0 ) { - --mplus_Length; - } - while( mminus_Length > 1 && mminus[mminus_Length - 1] == 0 ) { - --mminus_Length; - } - } - - getCount = setCount = 0; - do{ - - U = 0; - for( i = 3; i >= 0; --i ) { - TempLength = SLength + 1; - Temp[SLength] = 0; - memcpy( Temp, S, SLength * sizeof(unsigned long long) ); - BigInt::simpleShiftLeftHighPrecision( Temp, TempLength, i ); - if( BigInt::compareHighPrecision( R, RLength, Temp, TempLength ) >= 0 ) { - BigInt::subtractHighPrecision( R, RLength, Temp, TempLength ); - U += 1 << i; - } - } - - low = BigInt::compareHighPrecision( R, RLength, mminus, mminus_Length ) <= 0; - - memset( Temp + RLength, 0, (STemp_SIZE - RLength) * sizeof(unsigned long long) ); - memcpy( Temp, R, RLength * sizeof(unsigned long long) ); - TempLength = (RLength > mplus_Length ? RLength : mplus_Length) + 1; - BigInt::addHighPrecision( Temp, TempLength, mplus, mplus_Length ); - - high = BigInt::compareHighPrecision( Temp, TempLength, S, SLength ) >= 0; - - if( low || high ) { - break; - } - - BigInt::simpleAppendDecimalDigitHighPrecision( R, ++RLength, 0 ); - BigInt::simpleAppendDecimalDigitHighPrecision( mplus, ++mplus_Length, 0 ); - BigInt::simpleAppendDecimalDigitHighPrecision( mminus, ++mminus_Length, 0 ); - while( RLength > 1 && R[RLength - 1] == 0 ) { - --RLength; - } - while( mplus_Length > 1 && mplus[mplus_Length - 1] == 0 ) { - --mplus_Length; - } - while( mminus_Length > 1 && mminus[mminus_Length - 1] == 0 ) { - --mminus_Length; - } - uArray[setCount++] = U; - } - while( true ); - - BigInt::simpleShiftLeftHighPrecision( R, ++RLength, 1 ); - - if( low && !high ) { - uArray[setCount++] = U; - } else if( high && !low ) { - uArray[setCount++] = U + 1; - } else if( BigInt::compareHighPrecision( R, RLength, S, SLength) < 0 ) { - uArray[setCount++] = U; - } else { - uArray[setCount++] = U + 1; - } -} - -//////////////////////////////////////////////////////////////////////////////// -void NumberConverter::longDigitGenerator( - long long f, int e, bool isDenormalized, bool mantissaIsZero, int p ) { - - unsigned long long R, S, M; - - if( e >= 0 ) { - M = 1l << e; - if( !mantissaIsZero ) { - R = f << (e + 1); - S = 2; - } else { - R = f << (e + 2); - S = 4; - } - } else { - M = 1; - if( isDenormalized || !mantissaIsZero ) { - R = f << 1; - S = 1l << (1 - e); - } else { - R = f << 2; - S = 1l << (2 - e); - } - } - - int k = (int)Math::ceil( (e + p - 1) * invLogOfTenBaseTwo - 1e-10 ); - - if( k > 0 ) { - S = S * TEN_TO_THE[k]; - } else if( k < 0 ) { - long long scale = TEN_TO_THE[-k]; - R = R * scale; - M = M == 1 ? scale : M * scale; - } - - if( R + M > S ) { // was M_plus - firstK = k; - } else { - firstK = k - 1; - R = R * 10; - M = M * 10; - } - - getCount = setCount = 0; // reset indices - bool low, high; - int U; - long long Si[4] = { S, S << 1, S << 2, S << 3 }; - while( true ) { - // set U to be floor (R / S) and R to be the remainder - // using a kind of "binary search" to find the answer. - // It's a lot quicker than actually dividing since we know - // the answer will be between 0 and 10 - U = 0; - long long remainder; - for( int i = 3; i >= 0; i-- ) { - remainder = R - Si[i]; - if( remainder >= 0 ) { - R = remainder; - U += 1 << i; - } - } - - low = R < M; // was M_minus - high = R + M > S; // was M_plus - - if( low || high ) { - break; - } - - R = R * 10; - M = M * 10; - uArray[setCount++] = U; - } - - if( low && !high ) { - uArray[setCount++] = U; - } else if( high && !low ) { - uArray[setCount++] = U + 1; - } else if( ( R << 1 ) < S ) { - uArray[setCount++] = U; - } else { - uArray[setCount++] = U + 1; - } -}
diff --git a/src/decaf/src/main/decaf/internal/util/NumberConverter.h b/src/decaf/src/main/decaf/internal/util/NumberConverter.h deleted file mode 100644 index 05a6fd8..0000000 --- a/src/decaf/src/main/decaf/internal/util/NumberConverter.h +++ /dev/null
@@ -1,96 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_INTERNAL_UTIL_NUMBERCONVERTER_H_ -#define _DECAF_INTERNAL_UTIL_NUMBERCONVERTER_H_ - -#include <decaf/util/Config.h> -#include <vector> -#include <string> - -namespace decaf{ -namespace internal{ -namespace util{ - - class NumberConverter { - private: - - int setCount; - int getCount; - int firstK; - std::vector<int> uArray; - - static std::vector<long long> TEN_TO_THE; - static const double invLogOfTenBaseTwo; - - // Internal class used to init static arrays - struct StaticInitializer { - StaticInitializer(); - }; - - static StaticInitializer init; - - public: - - NumberConverter(); - virtual ~NumberConverter() {} - - /** - * @param value - the double to convert - * @returns the string representation of value - */ - std::string convertD( double value ); - - /** - * @param value - the float to convert - * @returns the string representation of value - */ - std::string convertF( float value ); - - public: // Statics - - /** - * @param value to convert to a string - * @returns the value converted to a string - */ - static std::string convert( double value ) { - return NumberConverter().convertD( value ); - } - - /** - * @param value to convert to a string - * @returns the value converted to a string - */ - static std::string convert( float value ) { - return NumberConverter().convertF( value ); - } - - private: - - std::string freeFormatExponential(); - std::string freeFormat(); - - void bigIntDigitGeneratorInstImpl( - long long f, int e, bool isDenormalized, bool mantissaIsZero, int p ); - void longDigitGenerator( - long long f, int e, bool isDenormalized, bool mantissaIsZero, int p ); - - }; - -}}} - -#endif /*_DECAF_INTERNAL_UTIL_NUMBERCONVERTER_H_*/
diff --git a/src/decaf/src/main/decaf/io/BlockingByteArrayInputStream.cpp b/src/decaf/src/main/decaf/io/BlockingByteArrayInputStream.cpp deleted file mode 100644 index c7c2475..0000000 --- a/src/decaf/src/main/decaf/io/BlockingByteArrayInputStream.cpp +++ /dev/null
@@ -1,151 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "BlockingByteArrayInputStream.h" -#include <algorithm> - -using namespace std; -using namespace decaf; -using namespace decaf::io; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -BlockingByteArrayInputStream::BlockingByteArrayInputStream(){ - pos = buffer.end(); - closing = false; -} - -//////////////////////////////////////////////////////////////////////////////// -BlockingByteArrayInputStream::BlockingByteArrayInputStream( - const unsigned char* buffer, - std::size_t bufferSize ){ - - closing = false; - setByteArray( buffer, bufferSize ); -} - -//////////////////////////////////////////////////////////////////////////////// -BlockingByteArrayInputStream::~BlockingByteArrayInputStream(){ -} - -//////////////////////////////////////////////////////////////////////////////// -void BlockingByteArrayInputStream::setByteArray( const unsigned char* lbuffer, - std::size_t lbufferSize ){ - synchronized( this ){ - - // Remove old data - buffer.clear(); - buffer.reserve( lbufferSize ); - - // Copy data to internal buffer. - std::back_insert_iterator< std::vector<unsigned char> > iter( buffer ); - std::copy( lbuffer, lbuffer + lbufferSize, iter ); - - // Begin at the Beginning. - pos = this->buffer.begin(); - - // Notify any listening threds that there is now data available. - notifyAll(); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void BlockingByteArrayInputStream::close() throw ( lang::Exception ){ - - synchronized( this ){ - - // Indicate that we're shutting down. - closing = true; - - // Clear out the buffer. - buffer.clear(); - - // Notify that this stream is shutting down. - notifyAll(); - } -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned char BlockingByteArrayInputStream::read() throw ( IOException ){ - - synchronized( this ){ - - while( !closing ){ - - if( pos != buffer.end() ){ - return *(pos++); - } - - // Wait for more data - wait(); - } - - throw IOException( __FILE__, __LINE__, "close occurred during read" ); - } - - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// -int BlockingByteArrayInputStream::read( unsigned char* buffer, - std::size_t bufferSize ) - throw ( IOException ){ - synchronized( this ){ - - std::size_t ix = 0; - - for( ; ix < bufferSize && !closing; ++ix, ++pos) - { - if(pos == this->buffer.end()) - { - // Wait for more data to come in. - wait(); - } - - if( !closing ){ - buffer[ix] = *(pos); - } - } - - if( closing ){ - throw IOException( - __FILE__, __LINE__, "close occurred during read" ); - } - - return ix; - } - - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// -std::size_t BlockingByteArrayInputStream::skip( std::size_t num ) - throw ( io::IOException, lang::exceptions::UnsupportedOperationException ){ - - std::size_t ix = 0; - - synchronized( this ){ - - // Increment the pos until we'v skipped the desired num - // or we've hit the end of the buffer. - for( ; ix < num && !closing && pos != buffer.end(); ++ix, ++pos) {} - } - - return ix; -} - -
diff --git a/src/decaf/src/main/decaf/io/BlockingByteArrayInputStream.h b/src/decaf/src/main/decaf/io/BlockingByteArrayInputStream.h deleted file mode 100644 index c4ca129..0000000 --- a/src/decaf/src/main/decaf/io/BlockingByteArrayInputStream.h +++ /dev/null
@@ -1,209 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_BLOCKINGBYTEARRAYINPUTSTREAM_H_ -#define _DECAF_IO_BLOCKINGBYTEARRAYINPUTSTREAM_H_ - -#include <decaf/io/InputStream.h> -#include <decaf/util/concurrent/Mutex.h> -#include <vector> - -namespace decaf{ -namespace io{ - - /** - * This is a blocking version of a byte buffer stream. Read operations - * block until the requested data becomes available in the internal - * buffer via a call to setByteArray. - */ - class DECAF_API BlockingByteArrayInputStream : public InputStream - { - private: - - /** - * Default buffer to use, if none provided. - */ - std::vector<unsigned char> buffer; - - /** - * iterator to current position in buffer. - */ - std::vector<unsigned char>::const_iterator pos; - - /** - * Synchronization object. - */ - util::concurrent::Mutex mutex; - - /** - * Indicates that this stream is in the process of shutting - * down. - */ - bool closing; - - public: - - /** - * Default Constructor - uses a default internal buffer - */ - BlockingByteArrayInputStream(); - - /** - * Constructor that initializes the internal buffer. - * @see setByteArray. - */ - BlockingByteArrayInputStream( const unsigned char* buffer, - std::size_t bufferSize ); - - /** - * Destructor - */ - virtual ~BlockingByteArrayInputStream(); - - /** - * Sets the data that this reader uses. Replaces any existing - * data and resets the read index to the beginning of the buffer. - * When this method is called, it notifies any other threads that - * data is now available to be read. - * @param buffer The new data to be copied to the internal buffer. - * @param bufferSize The size of the new buffer. - */ - virtual void setByteArray( const unsigned char* buffer, - std::size_t bufferSize ); - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void lock() throw( lang::Exception ){ - mutex.lock(); - } - - /** - * Unlocks the object. - * @throws Exception - */ - virtual void unlock() throw( lang::Exception ){ - mutex.unlock(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void wait() throw( lang::Exception ){ - mutex.wait(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. This wait will timeout after the specified time - * interval. - * @param time in millisecsonds to wait, or WAIT_INIFINITE - * @throws Exception - */ - virtual void wait( unsigned long millisecs ) throw( lang::Exception ){ - mutex.wait(millisecs); - } - - /** - * Signals a waiter on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notify() throw( lang::Exception ){ - mutex.notify(); - } - - /** - * Signals the waiters on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notifyAll() throw( lang::Exception ){ - mutex.notifyAll(); - } - - /** - * Indicates the number of bytes available to be read without - * blocking. - * @return the data available in the internal buffer. - * @throws IOException if an error occurs. - */ - virtual std::size_t available() const throw ( IOException ){ - return std::distance( pos, buffer.end() ); - } - - /** - * Reads a single byte from the buffer. This operation will - * block until data has been added to the buffer via a call - * to setByteArray. - * @return the next byte. - * @throws IOException if an error occurs. - */ - virtual unsigned char read() throw ( IOException ); - - /** - * Reads an array of bytes from the buffer. If the desired amount - * of data is not currently available, this operation - * will block until the appropriate amount of data is available - * in the buffer via a call to setByteArray. - * @param buffer (out) the target buffer - * @param bufferSize the size of the output buffer. - * @return the number of bytes read. or -1 if EOF - * @throws IOException f an error occurs. - */ - virtual int read( unsigned char* buffer, std::size_t bufferSize ) - throw ( IOException ); - - /** - * Closes the target input stream. - * @throws IOException if an error occurs. - */ - virtual void close() throw ( lang::Exception ); - - /** - * Skips over and discards n bytes of data from this input stream. The - * skip method may, for a variety of reasons, end up skipping over some - * smaller number of bytes, possibly 0. This may result from any of a - * number of conditions; reaching end of file before n bytes have been - * skipped is only one possibility. The actual number of bytes skipped - * is returned. If n is negative, no bytes are skipped. - * <p> - * The skip method of InputStream creates a byte array and then - * repeatedly reads into it until n bytes have been read or the end - * of the stream has been reached. Subclasses are encouraged to - * provide a more efficient implementation of this method. - * @param num - the number of bytes to skip - * @returns total butes skipped - * @throws IOException if an error occurs - */ - virtual std::size_t skip( std::size_t num ) - throw ( io::IOException, lang::exceptions::UnsupportedOperationException ); - - }; - -}} - -#endif /*_DECAF_IO_BLOCKINGBYTEARRAYINPUTSTREAM_H_*/
diff --git a/src/decaf/src/main/decaf/io/BufferedInputStream.cpp b/src/decaf/src/main/decaf/io/BufferedInputStream.cpp deleted file mode 100644 index 349eb53..0000000 --- a/src/decaf/src/main/decaf/io/BufferedInputStream.cpp +++ /dev/null
@@ -1,222 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "BufferedInputStream.h" -#include <algorithm> - -using namespace std; -using namespace decaf; -using namespace decaf::io; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -BufferedInputStream::BufferedInputStream( InputStream* stream, bool own ) -: FilterInputStream( stream, own ) -{ - // Default to a 1k buffer. - init( 1024 ); -} - -//////////////////////////////////////////////////////////////////////////////// -BufferedInputStream::BufferedInputStream( InputStream* stream, - std::size_t bufferSize, - bool own ) -: FilterInputStream( stream, own ) -{ - init( bufferSize ); -} - -//////////////////////////////////////////////////////////////////////////////// -BufferedInputStream::~BufferedInputStream() -{ - // Destroy the buffer. - if( buffer != NULL ){ - delete [] buffer; - buffer = NULL; - } -} - -//////////////////////////////////////////////////////////////////////////////// -void BufferedInputStream::init( std::size_t bufferSize ){ - - this->bufferSize = bufferSize; - - // Create the buffer and initialize the head and tail positions. - buffer = new unsigned char[bufferSize]; - head = 0; - tail = 0; -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned char BufferedInputStream::read() throw ( IOException ){ - - try{ - // If there's no data left, reset to pointers to the beginning of the - // buffer. - normalizeBuffer(); - - // If we don't have any data buffered yet - read as much as - // we can. - if( isEmpty() ){ - - // If we hit EOF without getting any Data, then throw IOException - if( bufferData() == -1 ){ - throw IOException( - __FILE__, __LINE__, - "BufferedInputStream::read - EOF has been Reached"); - } - } - - // Get the next character. - char returnValue = buffer[head++]; - - return returnValue; - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -int BufferedInputStream::read( unsigned char* targetBuffer, - std::size_t targetBufferSize ) throw ( IOException ){ - - try{ - - // For zero, do nothing - if( targetBufferSize == 0 ) { - return 0; - } - - // If there's no data left, reset to pointers to the beginning of the - // buffer. - normalizeBuffer(); - - // If we still haven't filled the output buffer AND there is data - // on the input stream to be read, read a buffer's worth from the stream. - std::size_t totalRead = 0; - while( totalRead < targetBufferSize ){ - - // Get the remaining bytes to copy. - std::size_t bytesToCopy = min( tail-head, (targetBufferSize-totalRead) ); - - // Copy the data to the output buffer. - memcpy( targetBuffer+totalRead, this->buffer+head, bytesToCopy ); - - // Increment the total bytes read. - totalRead += bytesToCopy; - - // Increment the head position. - head += bytesToCopy; - - // If the buffer is now empty, reset the positions to the - // head of the buffer. - normalizeBuffer(); - - // If we still haven't satisified the request, - // read more data. - if( totalRead < targetBufferSize ){ - - // Buffer as much data as we can, return EOF if we hit it. - if( bufferData() == -1 ) { - return -1; - } - } - } - - // Return the total number of bytes read. - return totalRead; - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -std::size_t BufferedInputStream::skip( std::size_t num ) - throw ( IOException, lang::exceptions::UnsupportedOperationException ){ - - try{ - // If there's no data left, reset to pointers to the beginning of the - // buffer. - normalizeBuffer(); - - // loop until we've skipped the desired number of bytes - std::size_t totalSkipped = 0; - while( totalSkipped < num ){ - - // Get the remaining bytes to copy. - std::size_t bytesToSkip = min( tail-head, num-totalSkipped ); - - // Increment the head position. - head += bytesToSkip; - - // If the buffer is now empty, reset the positions to the - // head of the buffer. - normalizeBuffer(); - - // If we still haven't satisified the request, - // read more data. - if( totalSkipped < num ){ - - // Buffer as much data as we can. - bufferData(); - } - } - - // Return the total number of bytes read. - return totalSkipped; - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -int BufferedInputStream::bufferData() throw ( IOException ){ - - try{ - if( getUnusedBytes() == 0 ){ - throw IOException( __FILE__, __LINE__, - "BufferedInputStream::bufferData - buffer full" ); - } - - // Get the number of bytes currently available on the input stream - // that could be read without blocking. - std::size_t available = inputStream->available(); - - // Calculate the number of bytes that we can read. Always >= 1 byte! - std::size_t bytesToRead = max( (std::size_t)1, min( available, getUnusedBytes() ) ); - - // Read the bytes from the input stream. - int bytesRead = inputStream->read( getTail(), bytesToRead ); - if( bytesRead == 0 ){ - throw IOException( __FILE__, __LINE__, - "BufferedInputStream::read() - failed reading bytes from stream"); - } - - // Dont add -1 to tail if we hit EOF - if( bytesRead == -1 ) { - return bytesRead; - } - - // Increment the tail to the new end position. - tail += bytesRead; - - return bytesRead; - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} -
diff --git a/src/decaf/src/main/decaf/io/BufferedInputStream.h b/src/decaf/src/main/decaf/io/BufferedInputStream.h deleted file mode 100644 index c840a50..0000000 --- a/src/decaf/src/main/decaf/io/BufferedInputStream.h +++ /dev/null
@@ -1,185 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_BUFFEREDINPUTSTREAM_H_ -#define _DECAF_IO_BUFFEREDINPUTSTREAM_H_ - -#include <decaf/io/FilterInputStream.h> -#include <assert.h> - -namespace decaf{ -namespace io{ - - /** - * A wrapper around another input stream that performs - * a buffered read, where it reads more data than it needs - * in order to reduce the number of io operations on the - * input stream. - */ - class DECAF_API BufferedInputStream : public FilterInputStream - { - private: - - /** - * The internal buffer. - */ - unsigned char* buffer; - - /** - * The buffer size. - */ - std::size_t bufferSize; - - /** - * The current head of the buffer. - */ - std::size_t head; - - /** - * The current tail of the buffer. - */ - std::size_t tail; - - public: - - /** - * Constructor - * @param stream The target input stream. - * @param own indicates if we own the stream object, defaults to false - */ - BufferedInputStream( InputStream* stream, bool own = false ); - - /** - * Constructor - * @param stream the target input stream - * @param bufferSize the size for the internal buffer. - * @param own indicates if we own the stream object, defaults to false. - */ - BufferedInputStream( InputStream* stream, - std::size_t bufferSize, - bool own = false); - - virtual ~BufferedInputStream(); - - /** - * Indcates the number of bytes avaialable. - * @return the sum of the amount of data avalable - * in the buffer and the data available on the target - * input stream. - */ - virtual std::size_t available() const throw ( IOException ) { - return ( tail - head ) + inputStream->available(); - } - - /** - * Reads a single byte from the buffer. Blocks until - * the data is available. - * @return The next byte. - * @throws IOException thrown if an error occurs. - */ - virtual unsigned char read() throw ( IOException ); - - /** - * Reads an array of bytes from the buffer. Blocks - * until the requested number of bytes are available. - * @param buffer (out) the target buffer. - * @param bufferSize the size of the output buffer. - * @return The number of bytes read or -1 if EOF - * @throws IOException thrown if an error occurs. - */ - virtual int read( unsigned char* buffer, std::size_t bufferSize ) - throw ( IOException ); - - /** - * Skips over and discards n bytes of data from this input stream. The - * skip method may, for a variety of reasons, end up skipping over some - * smaller number of bytes, possibly 0. This may result from any of a - * number of conditions; reaching end of file before n bytes have been - * skipped is only one possibility. The actual number of bytes skipped - * is returned. If n is negative, no bytes are skipped. - * <p> - * The skip method of InputStream creates a byte array and then - * repeatedly reads into it until n bytes have been read or the end - * of the stream has been reached. Subclasses are encouraged to - * provide a more efficient implementation of this method. - * @param num - the number of bytes to skip - * @returns total butes skipped - * @throws IOException if an error occurs - */ - virtual std::size_t skip( std::size_t num ) - throw ( io::IOException, lang::exceptions::UnsupportedOperationException ); - - private: - - /** - * Initializes the internal structures. - * @param size of buffer to allocate - */ - void init( std::size_t bufferSize ); - - /** - * Populates the buffer with as much data as possible - * from the target input stream. - * @returns total bytes read, or -1 if EOF. - * @throws CMSException - */ - int bufferData() throw ( IOException ); - - /** - * Returns the number of bytes that are currently unused - * in the buffer. - */ - std::size_t getUnusedBytes() const{ - return bufferSize - tail; - } - - /** - * Returns the current tail position of the buffer. - */ - unsigned char* getTail(){ - return buffer + tail; - } - - /** - * Initializes the head and tail indicies to the beginning - * of the buffer. - */ - void clear(){ - head = tail = 0; - } - - /** - * Inidicates whether or not the buffer is empty. - */ - bool isEmpty() const{ - return head == tail; - } - - /** - * Clears the buffer if there is no data remaining. - */ - void normalizeBuffer(){ - if( isEmpty() ){ - clear(); - } - } - - }; - -}} - -#endif /*_DECAF_IO_BUFFEREDINPUTSTREAM_H_*/
diff --git a/src/decaf/src/main/decaf/io/BufferedOutputStream.cpp b/src/decaf/src/main/decaf/io/BufferedOutputStream.cpp deleted file mode 100644 index 741ccde..0000000 --- a/src/decaf/src/main/decaf/io/BufferedOutputStream.cpp +++ /dev/null
@@ -1,123 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "BufferedOutputStream.h" -#include <algorithm> - -using namespace std; -using namespace decaf; -using namespace decaf::io; - -//////////////////////////////////////////////////////////////////////////////// -BufferedOutputStream::BufferedOutputStream( OutputStream* stream, bool own ) -: FilterOutputStream( stream, own ) -{ - // Default to 1k buffer. - init( 1024 ); -} - -//////////////////////////////////////////////////////////////////////////////// -BufferedOutputStream::BufferedOutputStream( OutputStream* stream, - std::size_t bufSize, - bool own ) -: FilterOutputStream( stream, own ) -{ - init( bufSize ); -} - -//////////////////////////////////////////////////////////////////////////////// -BufferedOutputStream::~BufferedOutputStream() -{ - // Destroy the buffer. - if( buffer != NULL ){ - delete [] buffer; - buffer = NULL; - } -} - -//////////////////////////////////////////////////////////////////////////////// -void BufferedOutputStream::init( std::size_t bufSize ){ - - this->bufferSize = bufSize; - - buffer = new unsigned char[bufSize]; - head = tail = 0; -} - -//////////////////////////////////////////////////////////////////////////////// -void BufferedOutputStream::close() throw( lang::Exception ){ - - // Flush this stream. - flush(); - - // Close the delegate stream. - outputStream->close(); -} - -//////////////////////////////////////////////////////////////////////////////// -void BufferedOutputStream::emptyBuffer() throw ( IOException ){ - - if( head != tail ){ - outputStream->write( buffer+head, tail-head ); - } - head = tail = 0; -} - -//////////////////////////////////////////////////////////////////////////////// -void BufferedOutputStream::flush() throw ( IOException ){ - - // Empty the contents of the buffer to the output stream. - emptyBuffer(); - - // Flush the output stream. - outputStream->flush(); -} - -//////////////////////////////////////////////////////////////////////////////// -void BufferedOutputStream::write( const unsigned char c ) throw ( IOException ){ - - if( tail >= bufferSize ){ - emptyBuffer(); - } - - buffer[tail++] = c; -} - -//////////////////////////////////////////////////////////////////////////////// -void BufferedOutputStream::write( const unsigned char* buffer, std::size_t len ) - throw ( IOException ) -{ - // Iterate until all the data is written. - for( std::size_t pos=0; pos < len; ){ - - if( tail >= bufferSize ){ - emptyBuffer(); - } - - // Get the number of bytes left to write. - std::size_t bytesToWrite = min( (int)bufferSize-tail, len-pos ); - - // Copy the data. - memcpy( this->buffer+tail, buffer+pos, bytesToWrite ); - - // Increase the tail position. - tail += bytesToWrite; - - // Decrease the number of bytes to write. - pos += bytesToWrite; - } -}
diff --git a/src/decaf/src/main/decaf/io/BufferedOutputStream.h b/src/decaf/src/main/decaf/io/BufferedOutputStream.h deleted file mode 100644 index 07e6b66..0000000 --- a/src/decaf/src/main/decaf/io/BufferedOutputStream.h +++ /dev/null
@@ -1,118 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_BUFFEREDOUTPUTSTREAM_H_ -#define _DECAF_IO_BUFFEREDOUTPUTSTREAM_H_ - -#include <decaf/io/FilterOutputStream.h> -#include <assert.h> - -namespace decaf{ -namespace io{ - - /** - * Wrapper around another output stream that buffers - * output before writing to the target output stream. - */ - class DECAF_API BufferedOutputStream : public FilterOutputStream - { - private: - - /** - * The internal buffer. - */ - unsigned char* buffer; - - /** - * The size of the internal buffer. - */ - std::size_t bufferSize; - - /** - * The current head of the buffer. - */ - std::size_t head; - - /** - * The current tail of the buffer. - */ - std::size_t tail; - - public: - - /** - * Constructor. - * @param stream the target output stream. - */ - BufferedOutputStream( OutputStream* stream, bool own = false ); - - /** - * Constructor - * @param stream the target output stream. - * @param bufSize the size for the internal buffer. - */ - BufferedOutputStream( OutputStream* stream, - std::size_t bufSize, - bool own = false); - - virtual ~BufferedOutputStream(); - - /** - * Writes a single byte to the output stream. - * @param c the byte. - * @throws IOException thrown if an error occurs. - */ - virtual void write( unsigned char c ) throw ( IOException ); - - /** - * Writes an array of bytes to the output stream. - * @param buffer The array of bytes to write. - * @param len The number of bytes from the buffer to be written. - * @throws IOException thrown if an error occurs. - */ - virtual void write( const unsigned char* buffer, std::size_t len ) - throw ( IOException ); - - /** - * Invokes flush on the target output stream. - * @throws IOException thrown if an error occurs. - */ - virtual void flush() throw ( IOException ); - - /** - * Invokes close on the target output stream. - * @throws CMSException thrown if an error occurs. - */ - void close() throw( lang::Exception ); - - private: - - /** - * Initializes the internal structures. - */ - void init( std::size_t bufSize ); - - /** - * Writes the contents of the buffer to the output stream. - */ - void emptyBuffer() throw ( IOException ); - - }; - -}} - -#endif /*_DECAF_IO_BUFFEREDOUTPUTSTREAM_H_*/
diff --git a/src/decaf/src/main/decaf/io/ByteArrayInputStream.cpp b/src/decaf/src/main/decaf/io/ByteArrayInputStream.cpp deleted file mode 100644 index ca2e035..0000000 --- a/src/decaf/src/main/decaf/io/ByteArrayInputStream.cpp +++ /dev/null
@@ -1,128 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ByteArrayInputStream.h" -#include <algorithm> - -using namespace std; -using namespace decaf; -using namespace decaf::io; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; - -//////////////////////////////////////////////////////////////////////////////// -ByteArrayInputStream::ByteArrayInputStream(){ -} - -//////////////////////////////////////////////////////////////////////////////// -ByteArrayInputStream::ByteArrayInputStream( const vector<unsigned char>& buffer ){ - setBuffer(buffer); -} - -//////////////////////////////////////////////////////////////////////////////// -ByteArrayInputStream::ByteArrayInputStream( const unsigned char* buffer, - std::size_t bufferSize ){ - setByteArray( buffer, bufferSize ); -} - -//////////////////////////////////////////////////////////////////////////////// -ByteArrayInputStream::~ByteArrayInputStream(){ -} - -//////////////////////////////////////////////////////////////////////////////// -void ByteArrayInputStream::setBuffer( const vector<unsigned char>& buffer ){ - - // We're using the default buffer. - activeBuffer = &buffer; - - // Begin at the Beginning. - reset(); -} - -//////////////////////////////////////////////////////////////////////////////// -void ByteArrayInputStream::setByteArray( const unsigned char* lbuffer, - std::size_t lbufferSize ){ - // We're using the default buffer. - activeBuffer = &defaultBuffer; - - // Remove old data - defaultBuffer.clear(); - defaultBuffer.reserve( lbufferSize ); - - // Copy data to internal buffer. - std::back_insert_iterator< std::vector<unsigned char> > iter( defaultBuffer ); - std::copy( lbuffer, lbuffer + lbufferSize, iter ); - - // Begin at the Beginning. - reset(); -} - -//////////////////////////////////////////////////////////////////////////////// -void ByteArrayInputStream::reset() throw ( lang::Exception){ - if( activeBuffer == NULL ){ - throw IOException( __FILE__, __LINE__, "Buffer has not been initialized" ); - } - - // Begin at the Beginning. - pos = activeBuffer->begin(); -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned char ByteArrayInputStream::read() throw ( IOException ){ - if( pos == activeBuffer->end() ){ - throw IOException( __FILE__, __LINE__, "Buffer is empty" ); - } - - return *(pos++); -} - -//////////////////////////////////////////////////////////////////////////////// -int ByteArrayInputStream::read( unsigned char* buffer, - std::size_t bufferSize ) - throw ( IOException ){ - std::size_t ix = 0; - - if( pos == activeBuffer->end() ) { - return -1; - } - - // How far are we from end - std::size_t remaining = (std::size_t)distance( pos, activeBuffer->end() ); - - // We only read as much as is left if the amount remaining is less than - // the amount of data asked for. - bufferSize = remaining < bufferSize ? remaining : bufferSize; - - for( ; ix < bufferSize; ++ix, ++pos) { - buffer[ix] = *(pos); - } - - return ix; -} - -//////////////////////////////////////////////////////////////////////////////// -std::size_t ByteArrayInputStream::skip( std::size_t num ) - throw ( IOException, lang::exceptions::UnsupportedOperationException ){ - - std::size_t ix = 0; - - // Increment the position until we've skipped the desired number - // or we've hit the end of the buffer. - for( ; ix < num && pos != activeBuffer->end(); ++ix, ++pos) {} - - return ix; -}
diff --git a/src/decaf/src/main/decaf/io/ByteArrayInputStream.h b/src/decaf/src/main/decaf/io/ByteArrayInputStream.h deleted file mode 100644 index e735bab..0000000 --- a/src/decaf/src/main/decaf/io/ByteArrayInputStream.h +++ /dev/null
@@ -1,228 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_BYTEARRAYINPUTSTREAM_H_ -#define _DECAF_IO_BYTEARRAYINPUTSTREAM_H_ - -#include <decaf/io/InputStream.h> -#include <decaf/util/concurrent/Mutex.h> -#include <vector> -#include <algorithm> - -namespace decaf{ -namespace io{ - - /** - * Simple implementation of InputStream that wraps around - * a std::vector<unsigned char>. - */ - class DECAF_API ByteArrayInputStream : public InputStream - { - private: - - /** - * Default buffer to use, if none provided. - */ - std::vector<unsigned char> defaultBuffer; - - /** - * Reference to the buffer being used by this stream. - */ - const std::vector<unsigned char>* activeBuffer; - - /** - * iterator to current position in buffer. - */ - std::vector<unsigned char>::const_iterator pos; - - /** - * Synchronization object. - */ - util::concurrent::Mutex mutex; - - public: - - /** - * Default Constructor - */ - ByteArrayInputStream(); - - /** - * Creates the input stream and calls setBuffer with the - * specified buffer object. - * @param buffer The buffer to be used. - */ - ByteArrayInputStream( const std::vector<unsigned char>& buffer ); - - /** - * Constructor - * @param buffer initial byte array to use to read from - * @param bufferSize the size of the buffer - */ - ByteArrayInputStream( const unsigned char* buffer, - std::size_t bufferSize ); - - virtual ~ByteArrayInputStream(); - - /** - * Sets the internal buffer. The input stream will wrap around - * this buffer and will perform all read operations on it. The - * position will be reinitialized to the beginning of the specified - * buffer. This class will not own the given buffer - it is the - * caller's responsibility to free the memory of the given buffer - * as appropriate. - * @param buffer The buffer to be used. - */ - virtual void setBuffer( const std::vector<unsigned char>& buffer ); - - /** - * Sets the data that this reader uses, replaces any existing - * data and resets to beginning of the buffer. - * @param buffer initial byte array to use to read from - * @param bufferSize the size of the buffer - */ - virtual void setByteArray( const unsigned char* buffer, - std::size_t bufferSize ); - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void lock() throw( lang::Exception ){ - mutex.lock(); - } - - /** - * Unlocks the object. - * @throws Exception - */ - virtual void unlock() throw( lang::Exception ){ - mutex.unlock(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void wait() throw( lang::Exception ){ - mutex.wait(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. This wait will timeout after the specified time - * interval. - * @param millisecs the time in millisecsonds to wait, or - * WAIT_INIFINITE - * @throws Exception - */ - virtual void wait( unsigned long millisecs ) throw( lang::Exception ){ - mutex.wait(millisecs); - } - - /** - * Signals a waiter on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notify() throw( lang::Exception ){ - mutex.notify(); - } - - /** - * Signals the waiters on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notifyAll() throw( lang::Exception ){ - mutex.notifyAll(); - } - - /** - * Indcates the number of bytes avaialable. - * @return The number of bytes until the end of the internal buffer. - */ - virtual std::size_t available() const throw ( IOException ) { - if( activeBuffer == NULL ){ - throw IOException( - __FILE__, __LINE__, - "buffer has not been initialized"); - } - - return std::distance( pos, activeBuffer->end() ); - } - - /** - * Reads a single byte from the buffer. - * @return The next byte. - * @throws IOException thrown if an error occurs. - */ - virtual unsigned char read() throw ( IOException ); - - /** - * Reads an array of bytes from the buffer. - * @param buffer (out) the target buffer. - * @param bufferSize the size of the output buffer. - * @return The number of bytes read. - * @throws IOException thrown if an error occurs. - */ - virtual int read( unsigned char* buffer, std::size_t bufferSize ) - throw ( IOException ); - - /** - * Closes the target input stream. - * @throws IOException thrown if an error occurs. - */ - virtual void close() throw( lang::Exception ){ /* do nothing */ } - - /** - * Resets the read index to the beginning of the byte - * array. - */ - virtual void reset() throw ( lang::Exception); - - /** - * Skips over and discards n bytes of data from this input stream. The - * skip method may, for a variety of reasons, end up skipping over some - * smaller number of bytes, possibly 0. This may result from any of a - * number of conditions; reaching end of file before n bytes have been - * skipped is only one possibility. The actual number of bytes skipped - * is returned. If n is negative, no bytes are skipped. - * <p> - * The skip method of InputStream creates a byte array and then - * repeatedly reads into it until n bytes have been read or the end - * of the stream has been reached. Subclasses are encouraged to - * provide a more efficient implementation of this method. - * @param num - the number of bytes to skip - * @returns total butes skipped - * @throws IOException if an error occurs - */ - virtual std::size_t skip( std::size_t num ) - throw ( io::IOException, lang::exceptions::UnsupportedOperationException ); - - }; - -}} - -#endif /*_DECAF_IO_BYTEARRAYINPUTSTREAM_H_*/
diff --git a/src/decaf/src/main/decaf/io/ByteArrayOutputStream.cpp b/src/decaf/src/main/decaf/io/ByteArrayOutputStream.cpp deleted file mode 100644 index 0be3354..0000000 --- a/src/decaf/src/main/decaf/io/ByteArrayOutputStream.cpp +++ /dev/null
@@ -1,66 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ByteArrayOutputStream.h" -#include <algorithm> - -using namespace std; -using namespace decaf; -using namespace decaf::io; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -ByteArrayOutputStream::ByteArrayOutputStream() -{ - activeBuffer = &defaultBuffer; -} - -//////////////////////////////////////////////////////////////////////////////// -ByteArrayOutputStream::ByteArrayOutputStream( vector<unsigned char>& buffer) -{ - setBuffer( buffer ); -} - -//////////////////////////////////////////////////////////////////////////////// -void ByteArrayOutputStream::setBuffer( vector<unsigned char>& buffer) -{ - activeBuffer = &buffer; -} - -//////////////////////////////////////////////////////////////////////////////// -void ByteArrayOutputStream::clear() throw ( IOException ) -{ - // Empty the contents of the buffer to the output stream. - activeBuffer->clear(); -} - -//////////////////////////////////////////////////////////////////////////////// -void ByteArrayOutputStream::write( unsigned char c ) - throw ( IOException ) -{ - activeBuffer->push_back( c ); -} - -//////////////////////////////////////////////////////////////////////////////// -void ByteArrayOutputStream::write( const unsigned char* buffer, - std::size_t len ) - throw ( IOException ) -{ - std::back_insert_iterator< std::vector<unsigned char> > iter( *activeBuffer ); - std::copy( buffer, buffer + len, iter ); -} -
diff --git a/src/decaf/src/main/decaf/io/ByteArrayOutputStream.h b/src/decaf/src/main/decaf/io/ByteArrayOutputStream.h deleted file mode 100644 index a8ae484..0000000 --- a/src/decaf/src/main/decaf/io/ByteArrayOutputStream.h +++ /dev/null
@@ -1,193 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_BYTEARRAYOUTPUTSTREAM_H_ -#define _DECAF_IO_BYTEARRAYOUTPUTSTREAM_H_ - -#include <decaf/io/OutputStream.h> -#include <decaf/util/concurrent/Mutex.h> -#include <vector> - -namespace decaf{ -namespace io{ - - class DECAF_API ByteArrayOutputStream : public OutputStream - { - private: - - /** - * Default buffer to use, if none provided. - */ - std::vector<unsigned char> defaultBuffer; - - /** - * Reference to the buffer being used by this stream. - */ - std::vector<unsigned char>* activeBuffer; - - /** - * Synchronization object. - */ - util::concurrent::Mutex mutex; - - public: - - /** - * Default Constructor - uses a default internal buffer - */ - ByteArrayOutputStream(); - - /** - * Uses the given buffer as the target. Calls setBuffer. - * @param buffer the target buffer. - */ - ByteArrayOutputStream( std::vector<unsigned char>& buffer ); - - /** - * Destructor - */ - virtual ~ByteArrayOutputStream() {}; - - /** - * Sets the internal buffer. This input stream will wrap around - * the given buffer and all writes will be performed directly on - * the buffer. This object does not retain control of the buffer's - * lifetime however - this is the job of the caller. - * @param buffer The target buffer. - */ - virtual void setBuffer( std::vector<unsigned char>& buffer ); - - /** - * Get a snapshot of the data - * @return pointer to the data - */ - virtual const unsigned char* getByteArray() const { - if( activeBuffer->size() == 0 ){ - return NULL; - } - - return &(*activeBuffer)[0]; - } - - /** - * Get the Size of the Internal Buffer - * @return size of the internal buffer - */ - virtual std::size_t getByteArraySize() const { - return activeBuffer->size(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void lock() throw( lang::Exception ){ - mutex.lock(); - } - - /** - * Unlocks the object. - * @throws Exception - */ - virtual void unlock() throw( lang::Exception ){ - mutex.unlock(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void wait() throw( lang::Exception ){ - mutex.wait(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. This wait will timeout after the specified time - * interval. - * @param time in millisecsonds to wait, or WAIT_INIFINITE - * @throws Exception - */ - virtual void wait( unsigned long millisecs ) throw( lang::Exception ){ - mutex.wait(millisecs); - } - - /** - * Signals a waiter on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notify() throw( lang::Exception ){ - mutex.notify(); - } - - /** - * Signals the waiters on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notifyAll() throw( lang::Exception ){ - mutex.notifyAll(); - } - - /** - * Writes a single byte to the output stream. - * @param c the byte. - * @throws IOException thrown if an error occurs. - */ - virtual void write( unsigned char c ) - throw ( IOException ); - - /** - * Writes an array of bytes to the output stream. - * @param buffer The array of bytes to write. - * @param len The number of bytes from the buffer to be written. - * @throws IOException thrown if an error occurs. - */ - virtual void write( const unsigned char* buffer, std::size_t len ) - throw ( IOException ); - - /** - * Invokes flush on the target output stream, has no affect. - * @throws IOException - */ - virtual void flush() throw ( IOException ){ /* do nothing */ } - - /** - * Clear current Stream contents - * @throws IOException - */ - virtual void clear() throw ( IOException ); - - /** - * Invokes close on the target output stream. - * @throws CMSException - */ - void close() throw( lang::Exception ){ /* do nothing */ } - - }; - -}} - -#endif /*_DECAF_IO_BYTEARRAYOUTPUTSTREAM_H_*/
diff --git a/src/decaf/src/main/decaf/io/Closeable.h b/src/decaf/src/main/decaf/io/Closeable.h deleted file mode 100644 index f3e8d3e..0000000 --- a/src/decaf/src/main/decaf/io/Closeable.h +++ /dev/null
@@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_CLOSEABLE_H_ -#define _DECAF_IO_CLOSEABLE_H_ - -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace io{ - - /** - * Interface for a class that implements the close method. - */ - class DECAF_API Closeable{ - - public: - - virtual ~Closeable(){} - - /** - * Closes this object and deallocates the appropriate resources. - * The object is generally no longer usable after calling close. - * @throws CMSException - */ - virtual void close() throw( lang::Exception ) = 0; - - }; - -}} - -#endif /*_DECAF_IO_CLOSEABLE_H_*/
diff --git a/src/decaf/src/main/decaf/io/DataInputStream.cpp b/src/decaf/src/main/decaf/io/DataInputStream.cpp deleted file mode 100644 index e0ebc10..0000000 --- a/src/decaf/src/main/decaf/io/DataInputStream.cpp +++ /dev/null
@@ -1,347 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <decaf/io/DataInputStream.h> - -using namespace std; -using namespace decaf; -using namespace decaf::io; -using namespace decaf::util; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; - -//////////////////////////////////////////////////////////////////////////////// -DataInputStream::DataInputStream( InputStream* inputStream, bool own ) - : FilterInputStream( inputStream, own ) {} - -//////////////////////////////////////////////////////////////////////////////// -DataInputStream::~DataInputStream() {} - -//////////////////////////////////////////////////////////////////////////////// -int DataInputStream::read( std::vector<unsigned char>& buffer ) - throw ( io::IOException ) { - - try { - return this->read( &buffer[0], 0, buffer.size() ); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -int DataInputStream::read( unsigned char* buffer, - std::size_t offset, - std::size_t length ) - throw ( IOException, IndexOutOfBoundsException, NullPointerException ) { - - try { - - if( buffer == NULL ) { - throw NullPointerException( - __FILE__, __LINE__, - "DataInputStream::read - Buffer is null" ); - } - - return inputStream->read( &buffer[offset], length ); - } - DECAF_CATCH_RETHROW( IndexOutOfBoundsException ) - DECAF_CATCH_RETHROW( NullPointerException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -bool DataInputStream::readBoolean() - throw( IOException, EOFException ) { - - try { - unsigned char value = 0; - readAllData( &value, sizeof(value) ); - return (bool)( value != 0 ); - } - DECAF_CATCH_RETHROW( EOFException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -char DataInputStream::readByte() - throw ( IOException, EOFException ) { - - try { - unsigned char value = 0; - readAllData( &value, sizeof(value) ); - return (char)( value ); - } - DECAF_CATCH_RETHROW( EOFException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned char DataInputStream::readUnsignedByte() - throw ( IOException, EOFException ) { - - try { - unsigned char value = 0; - readAllData( &value, sizeof(value) ); - return value; - } - DECAF_CATCH_RETHROW( EOFException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -char DataInputStream::readChar() throw ( IOException, EOFException ) { - try { - unsigned char value = 0; - readAllData( &value, sizeof(value) ); - return (char)( value ); - } - DECAF_CATCH_RETHROW( EOFException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -short DataInputStream::readShort() throw ( io::IOException, io::EOFException ) { - try { - short value = 0; - unsigned char buffer[sizeof(value)] = {0}; - readAllData( buffer, sizeof(value) ); - value |= (buffer[0] << 8 | buffer[1] << 0); - return value; - } - DECAF_CATCH_RETHROW( EOFException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned short DataInputStream::readUnsignedShort() - throw ( io::IOException, io::EOFException ) { - try { - unsigned short value = 0; - unsigned char buffer[sizeof(value)] = {0}; - readAllData( buffer, sizeof(value) ); - value |= (buffer[0] << 8 | buffer[1] << 0); - return value; - } - DECAF_CATCH_RETHROW( EOFException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -int DataInputStream::readInt() throw ( io::IOException, io::EOFException ) { - try { - unsigned int value = 0; - unsigned char buffer[sizeof(value)] = {0}; - readAllData( buffer, sizeof(value) ); - value |= (buffer[0] << 24 | buffer[1] << 16 | - buffer[2] << 8 | buffer[3] << 0); - return value; - } - DECAF_CATCH_RETHROW( EOFException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -double DataInputStream::readDouble() throw ( io::IOException, io::EOFException ) { - try { - unsigned long long lvalue = this->readLong(); - double value = 0.0; - memcpy( &value, &lvalue, sizeof( unsigned long long ) ); - return value; - } - DECAF_CATCH_RETHROW( EOFException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -float DataInputStream::readFloat() throw ( io::IOException, io::EOFException ) { - try { - unsigned int lvalue = this->readInt(); - float value = 0.0f; - memcpy( &value, &lvalue, sizeof( unsigned int ) ); - return value; - } - DECAF_CATCH_RETHROW( EOFException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -long long DataInputStream::readLong() - throw ( io::IOException, io::EOFException ) { - try { - unsigned long long value = 0; - unsigned char buffer[sizeof(value)] = {0}; - readAllData( buffer, sizeof(value) ); - - // Have to do it this way because on Solaris and Cygwin we get all - // kinds of warnings when shifting a byte up into a long long. - unsigned long long byte1 = buffer[0] & 0x00000000000000FFULL; - unsigned long long byte2 = buffer[1] & 0x00000000000000FFULL; - unsigned long long byte3 = buffer[2] & 0x00000000000000FFULL; - unsigned long long byte4 = buffer[3] & 0x00000000000000FFULL; - unsigned long long byte5 = buffer[4] & 0x00000000000000FFULL; - unsigned long long byte6 = buffer[5] & 0x00000000000000FFULL; - unsigned long long byte7 = buffer[6] & 0x00000000000000FFULL; - unsigned long long byte8 = buffer[7] & 0x00000000000000FFULL; - - value = ( byte1 << 56 | byte2 << 48 | byte3 << 40 | byte4 << 32 | - byte5 << 24 | byte6 << 16 | byte7 << 8 | byte8 << 0 ); - - return value; - } - DECAF_CATCH_RETHROW( EOFException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -std::string DataInputStream::readString() - throw ( io::IOException, io::EOFException ) { - try { - size_t size = 1024; - std::vector<char> buffer; - buffer.resize( size ); - size_t pos = 0; - - while( true ) { - - if( inputStream->read( (unsigned char*)( &buffer[pos] ), 1 ) == -1 ) { - throw EOFException( - __FILE__, __LINE__, - "DataInputStream::readString - Reached EOF" ); - } - - // if null is found we are done - if( buffer[pos] == '\0' ){ - break; - } - - // Resize to hold more if we exceed current size - if( ++pos > size ) { - buffer.resize( (size *= 2) ); - } - } - - return &buffer[0]; - } - DECAF_CATCH_RETHROW( EOFException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -std::string DataInputStream::readUTF() - throw ( io::IOException, io::EOFException ) { - try { - std::vector<unsigned char> buffer; - unsigned short length = readUnsignedShort(); - buffer.resize(length + 1); // Add one for a null charactor. - - std::size_t n = 0; - while( n < length ) { - int count = inputStream->read( &buffer[n], (length - n) ); - if( count == -1 ) { - throw EOFException( - __FILE__, __LINE__, - "DataInputStream::readUTF - Reached EOF" ); - } - n += count; - } - - return (char*)&buffer[0]; - } - DECAF_CATCH_RETHROW( EOFException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataInputStream::readFully( std::vector< unsigned char >& buffer ) - throw ( io::IOException, io::EOFException ) { - try { - if( buffer.empty() ) { - return; - } - this->readFully( &buffer[0], 0, buffer.size() ); - } - DECAF_CATCH_RETHROW( EOFException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataInputStream::readFully( unsigned char* buffer, - std::size_t offset, - std::size_t length ) - throw ( io::IOException, - io::EOFException, - lang::exceptions::IndexOutOfBoundsException, - lang::exceptions::NullPointerException ) -{ - try { - - if( buffer == NULL ) { - throw NullPointerException( - __FILE__, __LINE__, - "DataInputStream::readFully - Buffer is null" ); - } - - std::size_t n = 0; - while( n < length ) { - int count = inputStream->read( &buffer[offset + n], (length - n) ); - if( count == -1 ) { - throw EOFException( - __FILE__, __LINE__, - "DataInputStream::readFully - Reached EOF" ); - } - n += count; - } - } - DECAF_CATCH_RETHROW( IndexOutOfBoundsException ) - DECAF_CATCH_RETHROW( NullPointerException ) - DECAF_CATCH_RETHROW( EOFException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -std::size_t DataInputStream::skip( std::size_t num ) - throw( io::IOException, lang::exceptions::UnsupportedOperationException ) { - try { - std::size_t total = 0; - std::size_t cur = 0; - - while( ( total < num ) && - ( ( cur = inputStream->skip( num-total ) ) > 0 ) ) { - total += cur; - } - - return total; - } - DECAF_CATCH_RETHROW( UnsupportedOperationException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -}
diff --git a/src/decaf/src/main/decaf/io/DataInputStream.h b/src/decaf/src/main/decaf/io/DataInputStream.h deleted file mode 100644 index 8f58898..0000000 --- a/src/decaf/src/main/decaf/io/DataInputStream.h +++ /dev/null
@@ -1,374 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_DATAINPUTSTREAM_H_ -#define _DECAF_IO_DATAINPUTSTREAM_H_ - -#include <decaf/io/FilterInputStream.h> -#include <decaf/io/IOException.h> -#include <decaf/io/EOFException.h> -#include <decaf/lang/exceptions/NullPointerException.h> -#include <decaf/lang/exceptions/IndexOutOfBoundsException.h> - -namespace decaf{ -namespace io{ - - /** - * A data input stream lets an application read primitive Java data - * types from an underlying input stream in a machine-independent way. - * An application uses a data output stream to write data that can - * later be read by a data input stream. - * - * Due to the lack of garbage collection in C++ a design decision was - * made to add a boolean parameter to the constructor indicating if the - * wrapped <code>InputStream</code> is owned by this object. That way - * creation of the underlying stream can occur in a Java like way. Ex: - * - * DataInputStream os = new DataInputStream( new InputStream(), true ) - */ - class DECAF_API DataInputStream : public FilterInputStream - { - public: - - /** - * Creates a DataInputStream that uses the specified underlying - * InputStream. - * @param inputStream the InputStream instance to wrap. - * @param own, indicates if this class owns the wrapped string - * defaults to false. - */ - DataInputStream( InputStream* inputStream, bool own = false ); - - virtual ~DataInputStream(); - - /** - * Reads some number of bytes from the contained input stream and - * stores them into the buffer array b. The number of bytes actually - * read is returned as an integer. This method blocks until input - * data is available, end of file is detected, or an exception is - * thrown. - * <p> - * If the length of buffer is zero, then no bytes are read and 0 is - * returned; otherwise, there is an attempt to read at least one - * byte. If no byte is available because the stream is at end of - * file, the value -1 is returned; otherwise, at least one byte is - * read and stored into buffer. - * <p> - * The first byte read is stored into element buffer[0], the next one - * into buffer[1], and so on. The number of bytes read is, at most, - * equal to the length of buffer. Let k be the number of bytes actually - * read; these bytes will be stored in elements b[0] through b[k-1], - * leaving elements buffer[k] through buffer[buffer.length-1] - * unaffected. - * <p> - * If the first byte cannot be read for any reason other than end - * of file, then an IOException is thrown. In particular, an - * IOException is thrown if the input stream has been closed. - * <p> - * The read( buffer ) method has the same effect as: - * read( buffer, 0, b.length ) - * @param buffer - byte array to insert read data into - * @returns the total number of bytes read, or -1 if there is no - * more data because the stream is EOF. - * @throws IOException - */ - virtual int read( std::vector< unsigned char >& buffer ) - throw ( io::IOException ); - - /** - * Reads up to len bytes of data from the contained input stream - * into an array of bytes. An attempt is made to read as many as - * len bytes, but a smaller number may be read, possibly zero. The - * number of bytes actually read is returned as an integer. - * <p> - * This method blocks until input data is available, end of file is - * detected, or an exception is thrown. - * <p> - * If buffer is null, a NullPointerException is thrown. - * <p> - * If off is negative, or len is negative then an - * IndexOutOfBoundsException is thrown, if off + len is greater that - * the allocated length of the array, an IOException will result - * depending on the platform and compiler settings. - * <p> - * If len is zero, then no bytes are read and 0 is returned; - * otherwise, there is an attempt to read at least one byte. If no - * byte is available because the stream is at end of file, the - * value -1 is returned; otherwise, at least one byte is read and - * stored into buffer. - * <p> - * The first byte read is stored into element b[off], the next one - * into buffer[off+1], and so on. The number of bytes read is, at most, - * equal to len. Let k be the number of bytes actually read; these - * bytes will be stored in elements buffer[off] through buffer[off+k-1], - * leaving elements buffer[off+k] through buffer[off+len-1] unaffected. - * <p> - * In every case, elements buffer[0] through buffer[off] and elements - * buffer[off+len] through buffer[buffer.length-1] are unaffected. - * <p> - * If the first byte cannot be read for any reason other than end of - * file, then an IOException is thrown. In particular, an IOException - * is thrown if the input stream has been closed. - * @param buffer - byte array to insert read data into - * @param offset - location in buffer to start writing - * @param length - number of bytes to read - * @returns the total number of bytes read, or -1 if there is no - * more data because the stream is EOF. - * @throws IOException - */ - virtual int read( unsigned char* buffer, - std::size_t offset, - std::size_t length ) - throw ( io::IOException, - lang::exceptions::IndexOutOfBoundsException, - lang::exceptions::NullPointerException ); - - /** - * Reads one input byte and returns true if that byte is nonzero, - * false if that byte is zero. - * @returns the boolean value read. - * @throws IOException - * @throws EOFException - */ - virtual bool readBoolean() - throw( io::IOException, io::EOFException ); - - /** - * Reads and returns one input byte. The byte is treated as a - * signed value in the range -128 through 127, inclusive. - * @returns the 8-bit value read. - * @throws IOException - * @throws EOFException - */ - virtual char readByte() - throw ( io::IOException, io::EOFException ); - - /** - * Reads one input byte, zero-extends it to type int, and returns - * the result, which is therefore in the range 0 through 255. - * @returns the 8 bit unsigned value read - * @throws IOException - * @throws EOFException - */ - virtual unsigned char readUnsignedByte() - throw ( io::IOException, io::EOFException ); - - /** - * Reads an input char and returns the char value. A ascii char - * is made up of one bytes. This returns the same result as - * <code>readByte</code> - * @returns the 8 bit char read - * @throws IOException - * @throws EOFException - */ - virtual char readChar() throw ( io::IOException, io::EOFException ); - - /** - * Reads eight input bytes and returns a double value. It does this - * by first constructing a long long value in exactly the manner of - * the readlong method, then converting this long value to a double - * in exactly the manner of the method Double.longBitsToDouble. - * @returns the double value read - * @throws IOException - * @throws EOFException - */ - virtual double readDouble() - throw ( io::IOException, io::EOFException ); - - /** - * Reads four input bytes and returns a float value. It does this - * by first constructing an int value in exactly the manner of the - * readInt method, then converting this int value to a float in - * exactly the manner of the method Float.intBitsToFloat. - * @returns the float value read - * @throws IOException - * @throws EOFException - */ - virtual float readFloat() throw ( io::IOException, io::EOFException ); - - /** - * Reads four input bytes and returns an int value. Let a be the - * first byte read, b be the second byte, c be the third byte, and - * d be the fourth byte. The value returned is: <p> - * (((a & 0xff) << 24) | ((b & 0xff) << 16) | - * ((c & 0xff) << 8) | (d & 0xff)) - * @returns the int value read - * @throws IOException - * @throws EOFException - */ - virtual int readInt() throw ( io::IOException, io::EOFException ); - - /** - * Reads eight input bytes and returns a long value. Let a be the - * first byte read, b be the second byte, c be the third byte, d - * be the fourth byte, e be the fifth byte, f be the sixth byte, - * g be the seventh byte, and h be the eighth byte. The value - * returned is: - * (((long)(a & 0xff) << 56) | - * ((long)(b & 0xff) << 48) | - * ((long)(c & 0xff) << 40) | - * ((long)(d & 0xff) << 32) | - * ((long)(e & 0xff) << 24) | - * ((long)(f & 0xff) << 16) | - * ((long)(g & 0xff) << 8) | - * ((long)(h & 0xff))) - * @returns the 64 bit long long read - * @throws IOException - * @throws EOFException - */ - virtual long long readLong() - throw ( io::IOException, io::EOFException ); - - /** - * Reads two input bytes and returns a short value. Let a be the - * first byte read and b be the second byte. The value returned is: - * (short)((a << 8) | (b & 0xff)) - * @returns the 16 bit short value read - * @throws IOException - * @throws EOFException - */ - virtual short readShort() throw ( io::IOException, io::EOFException ); - - /** - * Reads two input bytes and returns an int value in the range 0 - * through 65535. Let a be the first byte read and b be the - * second byte. The value returned is: - * (((a & 0xff) << 8) | (b & 0xff)) - * @returns the 16 bit unsigned short read - * @throws IOException - * @throws EOFException - */ - virtual unsigned short readUnsignedShort() - throw ( io::IOException, io::EOFException ); - - /** - * Reads an null terminated ASCII string to the stream and returns the - * string to the caller. - * @returns string object containing the string read. - * @throws IOException - * @throws EOFException - */ - virtual std::string readString() - throw ( io::IOException, io::EOFException ); - - /** - * Reads a UTF8 encoded string in ASCII format and returns it, this is - * only useful if you know for sure that the string that is to be read - * was a string that contained all ascii values, and not uncide chars. - * @returns string read from stream. - * @throws IOException - * @throws EOFException - */ - virtual std::string readUTF() - throw ( io::IOException, io::EOFException ); - - /** - * Reads some bytes from an input stream and stores them into the - * buffer array buffer. The number of bytes read is equal to the length - * of buffer.<p> - * This method blocks until one of the following conditions occurs: - * * buffer.size() bytes of input data are available, in which case - * a normal return is made. - * * End of file is detected, in which case an EOFException is - * thrown. - * * An I/O error occurs, in which case an IOException other than - * EOFException is thrown. - * <p> - * If buffer.size() is zero, then no bytes are read. Otherwise, the - * first byte read is stored into element b[0], the next one into - * buffer[1], and so on. If an exception is thrown from this method, - * then it may be that some but not all bytes of buffer have been - * updated with data from the input stream. - * @param buffer - vector of char that is read to its size() - * @throws IOException - * @throws EOFException - */ - virtual void readFully( std::vector< unsigned char >& buffer ) - throw ( io::IOException, io::EOFException ); - - /** - * Reads length bytes from an input stream. - * <p> - * This method blocks until one of the following conditions occurs: - * * length bytes of input data are available, in which case a - * normal return is made. - * * End of file is detected, in which case an EOFException is - * thrown. - * * An I/O error occurs, in which case an IOException other - * than EOFException is thrown. - * <p> - * If buffer is null, a NullPointerException is thrown. If offset is - * negative, or len is negative, or offset+length is greater than the - * length of the array buffer, then an IndexOutOfBoundsException is - * thrown. If len is zero, then no bytes are read. Otherwise, the - * first byte read is stored into element buffer[off], the next one into - * buffer[offset+1], and so on. The number of bytes read is, at most, - * equal to len. - * @param buffer - byte array to insert read data into - * @param offset - location in buffer to start writing - * @param length - number of bytes to read - * @throws IOException - * @throws EOFException - */ - virtual void readFully( unsigned char* buffer, - std::size_t offset, - std::size_t length ) - throw ( io::IOException, - io::EOFException, - lang::exceptions::IndexOutOfBoundsException, - lang::exceptions::NullPointerException ); - - /** - * Makes an attempt to skip over n bytes of data from the input - * stream, discarding the skipped bytes. However, it may skip over - * some smaller number of bytes, possibly zero. This may result from - * any of a number of conditions; reaching end of file before n - * bytes have been skipped is only one possibility. This method - * never throws an EOFException. The actual number of bytes skipped - * is returned. - * @param num - number of bytes to skip - * @return the total number of bytes skipped - */ - virtual std::size_t skip( std::size_t num ) - throw( io::IOException, - lang::exceptions::UnsupportedOperationException ); - - private: - - // Used internally to reliable get data from the underlying stream - inline void readAllData( unsigned char* buffer, - std::size_t length ) - throw ( io::IOException, - io::EOFException ) { - - std::size_t n = 0; - do{ - int count = inputStream->read( &buffer[n], length - n ); - if( count == -1 ) { - throw EOFException( - __FILE__, __LINE__, - "DataInputStream::readLong - Reached EOF" ); - } - n += count; - } while( n < length ); - } - - }; - -}} - -#endif /*_DECAF_IO_DATAINPUTSTREAM_H_*/
diff --git a/src/decaf/src/main/decaf/io/DataOutputStream.cpp b/src/decaf/src/main/decaf/io/DataOutputStream.cpp deleted file mode 100644 index cc3a31b..0000000 --- a/src/decaf/src/main/decaf/io/DataOutputStream.cpp +++ /dev/null
@@ -1,245 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <decaf/io/DataOutputStream.h> -#include <decaf/util/Config.h> - -using namespace decaf; -using namespace decaf::io; -using namespace decaf::util; - -//////////////////////////////////////////////////////////////////////////////// -DataOutputStream::DataOutputStream( OutputStream* outputStream, bool own ) - : FilterOutputStream( outputStream, own ) -{ - // Init the written count - written = 0; -} - -//////////////////////////////////////////////////////////////////////////////// -DataOutputStream::~DataOutputStream() -{ -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStream::write( const unsigned char c ) throw ( IOException ) { - try { - outputStream->write( c ); - written++; - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStream::write( const std::vector<unsigned char>& buffer ) - throw ( IOException ) { - - try { - - if( buffer.size() == 0 ){ - // nothing to write. - return; - } - - outputStream->write( &buffer[0], buffer.size() ); - written += buffer.size(); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStream::write( const unsigned char* buffer, std::size_t len ) - throw ( IOException ) { - - try { - outputStream->write( buffer, len ); - written += len; - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStream::write( const unsigned char* buffer, - std::size_t offset, - std::size_t len ) throw ( IOException ) -{ - - try { - outputStream->write( buffer+offset, len ); - written += len; - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStream::writeBoolean( bool value ) throw ( IOException ) { - try { - unsigned char ivalue = 0; - value == true ? ivalue = 1 : ivalue = 0; - - outputStream->write( ivalue ); - written++; - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStream::writeByte( unsigned char value ) throw ( IOException ) { - try { - outputStream->write( value ); - written++; - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStream::writeChar( char value ) throw ( IOException ) { - try { - outputStream->write( value ); - written++; - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStream::writeShort( short value ) throw ( IOException ) { - try { - unsigned char buffer[sizeof(value)]; - - buffer[0] = (value & 0xFF00) >> 8; - buffer[1] = (value & 0x00FF) >> 0; - - outputStream->write( buffer, sizeof(value) ); - written += sizeof( value ); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStream::writeUnsignedShort( unsigned short value ) - throw ( IOException ) -{ - try { - unsigned char buffer[sizeof(value)]; - - buffer[0] = (value & 0xFF00) >> 8; - buffer[1] = (value & 0x00FF) >> 0; - - outputStream->write( buffer, sizeof(value) ); - written += sizeof( value ); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStream::writeInt( int value ) throw ( IOException ) { - try { - unsigned char buffer[sizeof(value)]; - - buffer[0] = (value & 0xFF000000) >> 24; - buffer[1] = (value & 0x00FF0000) >> 16; - buffer[2] = (value & 0x0000FF00) >> 8; - buffer[3] = (value & 0x000000FF) >> 0; - - outputStream->write( buffer, sizeof(value) ); - written += sizeof( value ); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStream::writeLong( long long value ) throw ( IOException ) { - try { - unsigned char buffer[sizeof(value)]; - - buffer[0] = (unsigned char)((value & 0xFF00000000000000ULL) >> 56); - buffer[1] = (unsigned char)((value & 0x00FF000000000000ULL) >> 48); - buffer[2] = (unsigned char)((value & 0x0000FF0000000000ULL) >> 40); - buffer[3] = (unsigned char)((value & 0x000000FF00000000ULL) >> 32); - buffer[4] = (unsigned char)((value & 0x00000000FF000000ULL) >> 24); - buffer[5] = (unsigned char)((value & 0x0000000000FF0000ULL) >> 16); - buffer[6] = (unsigned char)((value & 0x000000000000FF00ULL) >> 8); - buffer[7] = (unsigned char)((value & 0x00000000000000FFULL) >> 0); - - outputStream->write( buffer, sizeof(value) ); - written += sizeof( value ); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStream::writeFloat( float value ) throw ( IOException ) { - try { - unsigned int lvalue = 0; - memcpy( &lvalue, &value, sizeof( float ) ); - this->writeInt( lvalue ); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStream::writeDouble( double value ) throw ( IOException ) { - try { - unsigned long long lvalue = 0; - memcpy( &lvalue, &value, sizeof( double ) ); - this->writeLong( lvalue ); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStream::writeBytes( const std::string& value ) throw ( IOException ) { - try { - // do not add one so that we don't write the NULL - this->write( (const unsigned char*)value.c_str(), value.length() ); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStream::writeChars( const std::string& value ) throw ( IOException ) { - try { - // add one so that we write the NULL - this->write( (const unsigned char*)value.c_str(), value.length() + 1 ); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStream::writeUTF( const std::string& value ) throw ( IOException ) { - try { - this->writeUnsignedShort( (unsigned short)value.length() ); - this->write( (const unsigned char*)value.c_str(), value.length() ); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) -}
diff --git a/src/decaf/src/main/decaf/io/DataOutputStream.h b/src/decaf/src/main/decaf/io/DataOutputStream.h deleted file mode 100644 index e6e7f3c..0000000 --- a/src/decaf/src/main/decaf/io/DataOutputStream.h +++ /dev/null
@@ -1,218 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_DATAOUTPUTSTREAM_H_ -#define _DECAF_IO_DATAOUTPUTSTREAM_H_ - -#include <decaf/io/FilterOutputStream.h> - -namespace decaf{ -namespace io{ - - /** - * A data output stream lets an application write primitive Java data - * types to an output stream in a portable way. An application can then - * use a data input stream to read the data back in. - */ - class DECAF_API DataOutputStream : public FilterOutputStream - { - protected: - - // The number of bytes written to the data output stream so far. - std::size_t written; - - public: - - /** - * Creates a new data output stream to write data to the specified - * underlying output stream. - * @param outputStream a stream to wrap with this one. - * @param own true if this objects owns the stream that it wraps. - */ - DataOutputStream( OutputStream* outputStream, bool own = false ); - - virtual ~DataOutputStream(); - - /** - * Returns the current value of the counter written, the number of - * bytes written to this data output stream so far. If the counter - * overflows, it will be wrapped to Integer.MAX_VALUE. - * @return the value of the written field. - */ - virtual std::size_t size() const { - return written; - } - - /** - * Writes a single byte to the output stream. If no exception is - * thrown, the counter written is incremented by 1. - * @param c the byte. - * @throws IOException thrown if an error occurs. - */ - virtual void write( unsigned char c ) throw ( IOException ); - - /** - * Writes an array of bytes to the output stream. the counter - * written is incremented by len. - * @param buffer The array of bytes to write. - * @param len The number of bytes from the buffer to be written. - * @throws IOException thrown if an error occurs. - */ - virtual void write( const unsigned char* buffer, std::size_t len ) - throw ( IOException ); - - /** - * Writes an array of bytes to the output stream. the counter - * written is incremented by len. - * @param buffer The array of bytes to write. - * @param len The number of bytes from the buffer to be written. - * @throws IOException thrown if an error occurs. - */ - virtual void write( const unsigned char* buffer, - std::size_t offset, - std::size_t len ) throw ( IOException ); - - /** - * Writes an array of bytes to the output stream. - * @param buffer The bytes to write. - * @throws IOException thrown if an error occurs. - */ - virtual void write( const std::vector<unsigned char>& buffer ) - throw ( IOException ); - - /** - * Writes a boolean to the underlying output stream as a 1-byte value. The - * value true is written out as the value (byte)1; the value false - * is written out as the value (byte)0. If no exception is thrown, - * the counter written is incremented by 1. - * @param value the boolean to write. - * @throws IOException - * - */ - virtual void writeBoolean( bool value ) throw ( IOException ); - - /** - * Writes out a byte to the underlying output stream as a 1-byte - * value. If no exception is thrown, the counter written is - * incremented by 1. - * @param value the unsigned char value to write. - * @throws IOException - */ - virtual void writeByte( unsigned char value ) throw ( IOException ); - - /** - * Writes a short to the underlying output stream as two bytes, high - * byte first. If no exception is thrown, the counter written is - * incremented by 2. - * @param value the value to write. - * @throws IOException - */ - virtual void writeShort( short value ) throw ( IOException ); - - /** - * Writes a unsigned short to the bytes message stream as a 2 byte value - * @param value - unsigned short to write to the stream - * @throws IOException - */ - virtual void writeUnsignedShort( unsigned short value ) throw ( IOException ); - - /** - * Writes out a char to the underlying output stream as a one byte - * value If no exception is thrown, the counter written is - * incremented by 1. - * @param value the value to write. - * @throws IOException - */ - virtual void writeChar( char value ) throw ( IOException ); - - /** - * Writes an int to the underlying output stream as four bytes, high - * byte first. If no exception is thrown, the counter written is - * incremented by 4. - * @param value the value to write. - * @throws IOException - */ - virtual void writeInt( int value ) throw ( IOException ); - - /** - * Writes an 64 bit long to the underlying output stream as eight - * bytes, high byte first. If no exception is thrown, the counter - * written is incremented by 8. - * @param value the value to write. - * @throws IOException - */ - virtual void writeLong( long long value ) throw ( IOException ); - - /** - * Converts the float argument to an int using the floatToIntBits - * method in class Float, and then writes that int value to the - * underlying output stream as a 4-byte quantity, high byte first. - * If no exception is thrown, the counter written is incremented - * by 4. - * @param value the value to write. - * @throws IOException - */ - virtual void writeFloat( float value ) throw ( IOException ); - - /** - * Converts the double argument to a long using the doubleToLongBits - * method in class Double, and then writes that long value to the - * underlying output stream as an 8-byte quantity, high byte first. - * If no exception is thrown, the counter written is incremented - * by 8. - * @param value the value to write. - * @throws IOException - */ - virtual void writeDouble( double value ) throw ( IOException ); - - /** - * Writes out the string to the underlying output stream as a - * sequence of bytes. Each character in the string is written out, - * in sequence, by discarding its high eight bits. If no exception - * is thrown, the counter written is incremented by the length of - * value. The value written does not include a trailing null as that - * is not part of the sequence of bytes, if the null is needed, then use - * the writeChars method. - * @param value the value to write. - * @throws IOException - */ - virtual void writeBytes( const std::string& value ) throw ( IOException ); - - /** - * Writes a string to the underlying output stream as a sequence of - * characters. Each character is written to the data output stream - * as if by the writeChar method. If no exception is thrown, the - * counter written is incremented by the length of value. The trailing - * NULL charactor is written by this method. - * @param value the value to write. - * @throws IOException - */ - virtual void writeChars( const std::string& value ) throw ( IOException ); - - /** - * Writes out the string to the underlying output stream as a - * unsigned short indicating its length followed by the rest of - * the string. - * @param value the value to write. - * @throws IOException - */ - virtual void writeUTF( const std::string& value ) throw ( IOException ); - }; - -}} - -#endif /*_DECAF_IO_DATAOUTPUTSTREAM_H_*/
diff --git a/src/decaf/src/main/decaf/io/EOFException.h b/src/decaf/src/main/decaf/io/EOFException.h deleted file mode 100644 index 736f1a1..0000000 --- a/src/decaf/src/main/decaf/io/EOFException.h +++ /dev/null
@@ -1,91 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_EOFEXCEPTION_H -#define _DECAF_IO_EOFEXCEPTION_H - -#include <decaf/io/IOException.h> - -namespace decaf{ -namespace io{ - - /* - * Signals that an End of File exception has occurred. - */ - class DECAF_API EOFException : public io::IOException - { - public: - - /** - * Default Constructor - */ - EOFException() throw(){} - - /** - * Copy Constructor - * @param ex the exception to copy - */ - EOFException( const lang::Exception& ex ) throw() - : IOException() - { - *(lang::Exception*)this = ex; - } - - /** - * Copy Constructor - * @param ex the exception to copy, which is an instance of this type - */ - EOFException( const EOFException& ex ) throw() - : IOException() - { - *(lang::Exception*)this = ex; - } - - /** - * Consturctor - * @param file name of the file were the exception occured. - * @param lineNumber line where the exception occured - * @param msg the message that was generated - */ - EOFException( const char* file, const int lineNumber, - const char* msg, ... ) throw() - : IOException() - { - va_list vargs; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual EOFException* clone() const{ - return new EOFException( *this ); - } - - virtual ~EOFException() throw(){} - - }; - -}} - -#endif /*_DECAF*/
diff --git a/src/decaf/src/main/decaf/io/FilterInputStream.h b/src/decaf/src/main/decaf/io/FilterInputStream.h deleted file mode 100644 index 4929f41..0000000 --- a/src/decaf/src/main/decaf/io/FilterInputStream.h +++ /dev/null
@@ -1,225 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_FILTERINPUTSTREAM_H_ -#define _DECAF_IO_FILTERINPUTSTREAM_H_ - -#include <decaf/io/InputStream.h> -#include <decaf/io/IOException.h> -#include <decaf/util/concurrent/Mutex.h> - -namespace decaf{ -namespace io{ - - /** - * A FilterInputStream contains some other input stream, which it uses - * as its basic source of data, possibly transforming the data along the - * way or providing additional functionality. The class FilterInputStream - * itself simply overrides all methods of InputStream with versions - * that pass all requests to the contained input stream. Subclasses of - * FilterInputStream may further override some of these methods and may - * also provide additional methods and fields. - */ - class DECAF_API FilterInputStream : public InputStream - { - protected: - - // The input stream to wrap - InputStream* inputStream; - - // Synchronization object. - util::concurrent::Mutex mutex; - - // Indicates if we own the wrapped stream - bool own; - - public: - - /** - * Constructor to create a wrapped InputStream - * @param inputStream the stream to wrap and filter - * @param own indicates if we own the stream object, defaults to false - */ - FilterInputStream( InputStream* inputStream, bool own = false ) { - this->inputStream = inputStream; - this->own = own; - } - - virtual ~FilterInputStream() { - try { - if( own == true ) delete inputStream; - } - DECAF_CATCH_NOTHROW( IOException ) - DECAF_CATCHALL_NOTHROW( ) - } - - /** - * Returns the number of bytes that can be read from this input stream - * without blocking. This method simply performs in.available() and - * returns the result. - * @return the number of bytes available without blocking. - */ - virtual std::size_t available() const throw ( IOException ) { - try { - return inputStream->available(); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) - } - - /** - * Reads the next byte of data from this input stream. The value byte - * is returned as an unsigned char in the range 0 to 255. If no byte is - * available because the end of the stream has been reached, the value - * -1 is returned. This method blocks until input data is available, - * the end of the stream is detected, or an exception is thrown. - * This method simply performs in.read() and returns the result. - * @return The next byte. - * @throws IOException thrown if an error occurs. - */ - virtual unsigned char read() throw ( IOException ) { - try { - return inputStream->read(); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) - } - - /** - * Reads up to len bytes of data from this input stream into an array - * of bytes. This method blocks until some input is available. - * This method simply performs in.read(b, len) and returns the result. - * @param buffer (out) the target buffer. - * @param bufferSize the size of the output buffer. - * @return The number of bytes read or -1 if EOF is detected - * @throws IOException thrown if an error occurs. - */ - virtual int read( unsigned char* buffer, std::size_t bufferSize ) - throw ( IOException ) - { - try { - return inputStream->read( buffer, bufferSize ); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) - } - - /** - * Close the Stream, the FilterOutputStream simply calls the close - * method of the underlying stream - * @throws Exception - */ - virtual void close() throw ( lang::Exception ) { - try { - inputStream->close(); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) - } - - /** - * Skips over and discards n bytes of data from this input stream. The - * skip method may, for a variety of reasons, end up skipping over some - * smaller number of bytes, possibly 0. This may result from any of a - * number of conditions; reaching end of file before n bytes have been - * skipped is only one possibility. The actual number of bytes skipped - * is returned. If n is negative, no bytes are skipped. - * <p> - * The skip method of InputStream creates a byte array and then - * repeatedly reads into it until n bytes have been read or the end - * of the stream has been reached. Subclasses are encouraged to - * provide a more efficient implementation of this method. - * @param num - the number of bytes to skip - * @returns total butes skipped - * @throws IOException if an error occurs - */ - virtual std::size_t skip( std::size_t num ) throw ( io::IOException, lang::exceptions::UnsupportedOperationException ) { - try { - return inputStream->skip(num); - } - DECAF_CATCH_RETHROW( lang::exceptions::UnsupportedOperationException ) - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) - } - - public: // Synchronizable - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void lock() throw( lang::Exception ){ - mutex.lock(); - } - - /** - * Unlocks the object. - * @throws Exception - */ - virtual void unlock() throw( lang::Exception ){ - mutex.unlock(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void wait() throw( lang::Exception ){ - mutex.wait(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. This wait will timeout after the specified time - * interval. - * @param millisecs the time in millisecsonds to wait, or WAIT_INIFINITE - * @throws Exception - */ - virtual void wait( unsigned long millisecs ) throw( lang::Exception ){ - mutex.wait(millisecs); - } - - /** - * Signals a waiter on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notify() throw( lang::Exception ){ - mutex.notify(); - } - - /** - * Signals the waiters on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notifyAll() throw( lang::Exception ){ - mutex.notifyAll(); - } - - }; - -}} - -#endif /*_DECAF_IO_FILTERINPUTSTREAM_H_*/
diff --git a/src/decaf/src/main/decaf/io/FilterOutputStream.h b/src/decaf/src/main/decaf/io/FilterOutputStream.h deleted file mode 100644 index 3dd2651..0000000 --- a/src/decaf/src/main/decaf/io/FilterOutputStream.h +++ /dev/null
@@ -1,209 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_FILTEROUTPUTSTREAM_H_ -#define _DECAF_IO_FILTEROUTPUTSTREAM_H_ - -#include <decaf/io/OutputStream.h> -#include <decaf/io/IOException.h> -#include <decaf/util/concurrent/Mutex.h> - -namespace decaf{ -namespace io{ - - /** - * This class is the superclass of all classes that filter output - * streams. These streams sit on top of an already existing output - * stream (the underlying output stream) which it uses as its basic - * sink of data, but possibly transforming the data along the way or - * providing additional functionality. - * - * The class FilterOutputStream itself simply overrides all methods of - * OutputStream with versions that pass all requests to the underlying - * output stream. Subclasses of FilterOutputStream may further override - * some of these methods as well as provide additional methods and - * fields. - * - * Due to the lack of garbage collection in C++ a design decision was - * made to add a boolean parameter to the constructor indicating if the - * wrapped <code>InputStream</code> is owned by this object. That way - * creation of the underlying stream can occur in a Java like way. Ex: - * - * DataOutputStream os = new DataOutputStream( new OutputStream(), true ) - */ - class DECAF_API FilterOutputStream : public OutputStream - { - protected: - - // The output Stream to wrap - OutputStream* outputStream; - - // Synchronization object. - util::concurrent::Mutex mutex; - - // Indicates if we own the wrapped stream - bool own; - - public: - - /** - * Constructor, creates a wrapped output stream - * @param outputStream the OutputStream to wrap - * @param own If true, this object will control the lifetime of the - * output stream that it encapsulates. - */ - FilterOutputStream( OutputStream* outputStream, bool own = false ){ - this->outputStream = outputStream; - this->own = own; - } - - virtual ~FilterOutputStream() { - try { - if( own == true ) delete outputStream; - } - DECAF_CATCH_NOTHROW( IOException ) - DECAF_CATCHALL_NOTHROW( ) - } - - /** - * Writes a single byte to the output stream. The write method of - * FilterOutputStream calls the write method of its underlying output - * stream, that is, it performs out.write(b). - * @param c the byte. - * @throws IOException thrown if an error occurs. - */ - virtual void write( unsigned char c ) throw ( IOException ) { - try { - outputStream->write( c ); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) - } - - /** - * Writes an array of bytes to the output stream. The write method of - * FilterOutputStream calls the write method of one argument on each - * byte to output. - * @param buffer The array of bytes to write. - * @param len The number of bytes from the buffer to be written. - * @throws IOException thrown if an error occurs. - */ - virtual void write( const unsigned char* buffer, std::size_t len ) throw ( IOException ) { - try { - for( std::size_t ix = 0; ix < len; ++ix ) - { - outputStream->write( buffer[ix] ); - } - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) - } - - /** - * Flushes any pending writes in this output stream. - * The flush method of FilterOutputStream calls the flush method - * of its underlying output stream - * @throws IOException - */ - virtual void flush() throw ( IOException ) { - try { - outputStream->flush(); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) - } - - /** - * Close the Stream, the FilterOutputStream simply calls the close - * method of the underlying stream - * @throws CMSException - */ - virtual void close() throw ( lang::Exception ) { - try { - outputStream->close(); - } - DECAF_CATCH_RETHROW( IOException ) - DECAF_CATCHALL_THROW( IOException ) - } - - public: // Synchronizable - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void lock() throw( lang::Exception ){ - mutex.lock(); - } - - /** - * Unlocks the object. - * @throws Exception - */ - virtual void unlock() throw( lang::Exception ){ - mutex.unlock(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void wait() throw( lang::Exception ){ - mutex.wait(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. This wait will timeout after the specified time - * interval. - * @param millisecs the time in millisecsonds to wait, or WAIT_INIFINITE - * @throws Exception - */ - virtual void wait( unsigned long millisecs ) throw( lang::Exception ){ - mutex.wait( millisecs ); - } - - /** - * Signals a waiter on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notify() throw( lang::Exception ){ - mutex.notify(); - } - - /** - * Signals the waiters on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notifyAll() throw( lang::Exception ){ - mutex.notifyAll(); - } - - }; - -}} - -#endif /*_DECAF_IO_FILTEROUTPUTSTREAM_H_*/
diff --git a/src/decaf/src/main/decaf/io/IOException.h b/src/decaf/src/main/decaf/io/IOException.h deleted file mode 100644 index 24e553a..0000000 --- a/src/decaf/src/main/decaf/io/IOException.h +++ /dev/null
@@ -1,86 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_IO_IOEXCEPTION_H -#define _DECAF_IO_IOEXCEPTION_H - -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace io{ - - /* - * Signals that an I/O exception of some sort has occurred. - */ - class DECAF_API IOException : public lang::Exception { - public: - - /** - * Default Constructor - */ - IOException() throw() {} - - /** - * Copy Constructor - * @param ex the exception to copy - */ - IOException( const lang::Exception& ex ) throw() - : lang::Exception() { - *(lang::Exception*)this = ex; - } - - /** - * Copy Constructor - * @param ex the exception to copy, which is an instance of this type - */ - IOException( const IOException& ex ) throw() - : lang::Exception() { - *(lang::Exception*)this = ex; - } - - /** - * Consturctor - * @param file name of the file were the exception occured. - * @param lineNumber line where the exception occured - * @param msg the message that was generated - */ - IOException( const char* file, const int lineNumber, - const char* msg, ... ) throw() - : lang::Exception() { - va_list vargs; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual IOException* clone() const { - return new IOException( *this ); - } - - virtual ~IOException() throw() {} - - }; - -}} - -#endif /*_DECAF_IO_IOEXCEPTION_H*/
diff --git a/src/decaf/src/main/decaf/io/InputStream.h b/src/decaf/src/main/decaf/io/InputStream.h deleted file mode 100644 index e560b52..0000000 --- a/src/decaf/src/main/decaf/io/InputStream.h +++ /dev/null
@@ -1,89 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_INPUTSTREAM_H_ -#define _DECAF_IO_INPUTSTREAM_H_ - -#include <decaf/io/IOException.h> -#include <decaf/io/Closeable.h> -#include <decaf/util/concurrent/Synchronizable.h> -#include <decaf/lang/exceptions/UnsupportedOperationException.h> -#include <decaf/util/Config.h> - -namespace decaf{ -namespace io{ - - /** - * Base interface for an input stream. - */ - class DECAF_API InputStream : public Closeable, - public util::concurrent::Synchronizable - { - public: - - virtual ~InputStream(){} - - /** - * Indcates the number of bytes avaialable. - * @return the number of bytes available on this input stream. - * @throws IOException if an error occurs. - */ - virtual std::size_t available() const throw ( IOException ) = 0; - - /** - * Reads a single byte from the buffer. Blocks until - * data is available. - * @return The next byte. - * @throws IOException thrown if an error occurs. - */ - virtual unsigned char read() throw ( IOException ) = 0; - - /** - * Reads an array of bytes from the buffer. Blocks until - * the requested number of bytes are available. - * @param buffer (out) the target buffer. - * @param bufferSize the size of the output buffer. - * @return The number of bytes read or -1 if EOF is detected - * @throws IOException thrown if an error occurs. - */ - virtual int read( unsigned char* buffer, std::size_t bufferSize ) - throw ( IOException ) = 0; - - /** - * Skips over and discards n bytes of data from this input stream. The - * skip method may, for a variety of reasons, end up skipping over some - * smaller number of bytes, possibly 0. This may result from any of a - * number of conditions; reaching end of file before n bytes have been - * skipped is only one possibility. The actual number of bytes skipped - * is returned. If n is negative, no bytes are skipped. - * <p> - * The skip method of InputStream creates a byte array and then - * repeatedly reads into it until n bytes have been read or the end - * of the stream has been reached. Subclasses are encouraged to - * provide a more efficient implementation of this method. - * @param num - the number of bytes to skip - * @returns total butes skipped - * @throws IOException if an error occurs - */ - virtual std::size_t skip( std::size_t num ) - throw ( io::IOException, lang::exceptions::UnsupportedOperationException ) = 0; - - }; - -}} - -#endif /*_DECAF_IO_INPUTSTREAM_H_*/
diff --git a/src/decaf/src/main/decaf/io/InterruptedIOException.h b/src/decaf/src/main/decaf/io/InterruptedIOException.h deleted file mode 100644 index f891822..0000000 --- a/src/decaf/src/main/decaf/io/InterruptedIOException.h +++ /dev/null
@@ -1,87 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_IO_INTERRUPTEDIOEXCEPTION_H -#define _DECAF_IO_INTERRUPTEDIOEXCEPTION_H - -#include <decaf/lang/Exception.h> -#include <decaf/io/IOException.h> - -namespace decaf{ -namespace io{ - - /* - * Signals that an I/O exception of some sort has occurred. - */ - class DECAF_API InterruptedIOException : public io::IOException { - public: - - /** - * Default Constructor - */ - InterruptedIOException() throw() {} - - /** - * Copy Constructor - * @param ex the exception to copy - */ - InterruptedIOException( const lang::Exception& ex ) throw() - : IOException() { - *(lang::Exception*)this = ex; - } - - /** - * Copy Constructor - * @param ex the exception to copy, which is an instance of this type - */ - InterruptedIOException( const InterruptedIOException& ex ) throw() - : IOException() { - *(lang::Exception*)this = ex; - } - - /** - * Consturctor - * @param file name of the file were the exception occured. - * @param lineNumber line where the exception occured - * @param msg the message that was generated - */ - InterruptedIOException( const char* file, const int lineNumber, - const char* msg, ... ) throw() - : IOException() { - va_list vargs; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual InterruptedIOException* clone() const { - return new IOException( *this ); - } - - virtual ~InterruptedIOException() throw() {} - - }; - -}} - -#endif /*_DECAF_IO_INTERRUPTEDIOEXCEPTION_H*/
diff --git a/src/decaf/src/main/decaf/io/OutputStream.h b/src/decaf/src/main/decaf/io/OutputStream.h deleted file mode 100644 index 08d14bc..0000000 --- a/src/decaf/src/main/decaf/io/OutputStream.h +++ /dev/null
@@ -1,64 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_OUTPUTSTREAM_H -#define _DECAF_IO_OUTPUTSTREAM_H - -#include <decaf/io/Closeable.h> -#include <decaf/io/IOException.h> -#include <decaf/util/concurrent/Synchronizable.h> -#include <decaf/util/Config.h> - -namespace decaf{ -namespace io{ - - /** - * Base interface for an output stream. - */ - class DECAF_API OutputStream : public Closeable, - public util::concurrent::Synchronizable - { - public: - - virtual ~OutputStream(){} - - /** - * Writes a single byte to the output stream. - * @param c the byte. - * @throws IOException thrown if an error occurs. - */ - virtual void write( unsigned char c ) throw ( IOException ) = 0; - - /** - * Writes an array of bytes to the output stream. - * @param buffer The array of bytes to write. - * @param len The number of bytes from the buffer to be written. - * @throws IOException thrown if an error occurs. - */ - virtual void write( const unsigned char* buffer, std::size_t len ) - throw ( IOException ) = 0; - - /** - * Flushes any pending writes in this output stream. - * @throws IOException - */ - virtual void flush() throw ( IOException ) = 0; - }; - -}} - -#endif /*_DECAF_IO_OUTPUTSTREAM_H*/
diff --git a/src/decaf/src/main/decaf/io/Reader.h b/src/decaf/src/main/decaf/io/Reader.h deleted file mode 100644 index 10b365a..0000000 --- a/src/decaf/src/main/decaf/io/Reader.h +++ /dev/null
@@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_IO_READER_H -#define _DECAF_IO_READER_H - -#include <string> -#include <decaf/io/IOException.h> -#include <decaf/io/InputStream.h> - -namespace decaf{ -namespace io{ - - /* - * Reader interface that wraps around an input stream and provides - * an interface for extracting the data from the input stream. - */ - class DECAF_API Reader - { - public: - - virtual ~Reader(){}; - - /** - * Sets the target input stream. - */ - virtual void setInputStream( InputStream* is ) = 0; - - /** - * Gets the target input stream. - */ - virtual InputStream* getInputStream() = 0; - - /** - * Attempts to read an array of bytes from the stream. - * @param buffer The target byte buffer. - * @param count The number of bytes to read. - * @return The number of bytes read. - * @throws IOException thrown if an error occurs. - */ - virtual std::size_t read( unsigned char* buffer, std::size_t count ) - throw( IOException ) = 0; - - /** - * Attempts to read a byte from the input stream - * @return The byte. - * @throws IOException thrown if an error occurs. - */ - virtual unsigned char readByte() throw( IOException ) = 0; - - }; - -}} - -#endif /*_DECAF_IO_READER_H*/
diff --git a/src/decaf/src/main/decaf/io/StandardErrorOutputStream.h b/src/decaf/src/main/decaf/io/StandardErrorOutputStream.h deleted file mode 100644 index 57e9bdb..0000000 --- a/src/decaf/src/main/decaf/io/StandardErrorOutputStream.h +++ /dev/null
@@ -1,152 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_IO_STANDARDERROROUTPUTSTREAM_H_ -#define _DECAF_IO_STANDARDERROROUTPUTSTREAM_H_ - -#include <decaf/io/OutputStream.h> -#include <decaf/util/concurrent/Mutex.h> - -#include <iostream> - -namespace decaf{ -namespace io{ - - class DECAF_API StandardErrorOutputStream : public OutputStream - { - private: - - /** - * Synchronization object. - */ - util::concurrent::Mutex mutex; - - public: - - /** - * Default Constructor - */ - StandardErrorOutputStream(void) {} - - virtual ~StandardErrorOutputStream(void) {} - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void lock() throw( Exception ){ - mutex.lock(); - } - - /** - * Unlocks the object. - * @throws Exception - */ - virtual void unlock() throw( lang::Exception ){ - mutex.unlock(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void wait() throw( lang::Exception ){ - mutex.wait(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. This wait will timeout after the specified time - * interval. - * @param time in millisecsonds to wait, or WAIT_INIFINITE - * @throws Exception - */ - virtual void wait( unsigned long millisecs ) throw( lang::Exception ){ - mutex.wait( millisecs ); - } - - /** - * Signals a waiter on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notify() throw( lang::Exception ){ - mutex.notify(); - } - - /** - * Signals the waiters on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notifyAll() throw( lang::Exception ){ - mutex.notifyAll(); - } - - /** - * Writes a single byte to the output stream. - * @param c the byte. - * @throws IOException thrown if an error occurs. - */ - virtual void write( unsigned char c ) - throw ( IOException ) - { - std::cerr << c; - } - - /** - * Writes an array of bytes to the output stream. - * @param buffer The array of bytes to write. - * @param len The number of bytes from the buffer to be written. - * @throws IOException thrown if an error occurs. - */ - virtual void write( const unsigned char* buffer, int len ) - throw ( IOException ) - { - for(int i = 0; i < len; ++i) - { - std::cerr << buffer[i]; - } - } - - /** - * Invokes flush on the target output stream. - * throws IOException if an error occurs - */ - virtual void flush() throw ( IOException ){ - std::cerr.flush(); - } - - /** - * Invokes close on the target output stream. - * throws CMSException if an error occurs - */ - void close() throw( lang::Exception ){ - std::cerr.flush(); - } - - }; - -} - -#endif /*_DECAF_IO_STANDARDERROROUTPUTSTREAM_H_*/
diff --git a/src/decaf/src/main/decaf/io/Writer.h b/src/decaf/src/main/decaf/io/Writer.h deleted file mode 100644 index b691093..0000000 --- a/src/decaf/src/main/decaf/io/Writer.h +++ /dev/null
@@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_IO_WRITER_H -#define _DECAF_IO_WRITER_H - -#include <string> -#include <decaf/io/IOException.h> -#include <decaf/io/OutputStream.h> - -namespace decaf{ -namespace io{ - - /* - * Writer interface for an object that wraps around an output - * stream - */ - class DECAF_API Writer - { - public: - - virtual ~Writer(){}; - - /** - * Sets the target output stream. - * @param Outputstream to use - */ - virtual void setOutputStream( OutputStream* os ) = 0; - - /** - * Gets the target output stream. - * @returns the output stream currently being used - */ - virtual OutputStream* getOutputStream() = 0; - - /** - * Writes a byte array to the output stream. - * @param buffer a byte array - * @param count the number of bytes in the array to write. - * @throws IOException thrown if an error occurs. - */ - virtual void write( const unsigned char* buffer, - std::size_t count ) throw( IOException ) = 0; - - /** - * Writes a byte to the output stream. - * @param v The value to be written. - * @throws IOException thrown if an error occurs. - */ - virtual void writeByte( unsigned char v ) throw( IOException ) = 0; - }; - -}} - -#endif /*_DECAF_IO_WRITER_H*/
diff --git a/src/decaf/src/main/decaf/lang/Boolean.cpp b/src/decaf/src/main/decaf/lang/Boolean.cpp deleted file mode 100644 index 79c7cf2..0000000 --- a/src/decaf/src/main/decaf/lang/Boolean.cpp +++ /dev/null
@@ -1,107 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "Boolean.h" -#include <sstream> - -using namespace decaf; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -const Boolean Boolean::_FALSE( false ); -const Boolean Boolean::_TRUE( true ); - -//////////////////////////////////////////////////////////////////////////////// -Boolean::Boolean( bool value ) { - this->value = value; -} - -//////////////////////////////////////////////////////////////////////////////// -Boolean::Boolean( const std::string& value ) { - this->value = parseBoolean( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Boolean::compareTo( const Boolean& b ) const { - if( this->value == b.value ) { - return 0; - } else if( this->value && !b.value ) { - return 1; - } else { - return -1; - } -} - -//////////////////////////////////////////////////////////////////////////////// -bool Boolean::operator==( const Boolean& b ) const { - return this->value == b.value; -} - -//////////////////////////////////////////////////////////////////////////////// -bool Boolean::operator<( const Boolean& b ) const { - return this->value < b.value; -} - -//////////////////////////////////////////////////////////////////////////////// -int Boolean::compareTo( const bool& b ) const { - if( this->value == b ) { - return 0; - } else if( this->value && !b ) { - return 1; - } else { - return -1; - } -} - -//////////////////////////////////////////////////////////////////////////////// -bool Boolean::operator==( const bool& b ) const { - return this->value == b; -} - -//////////////////////////////////////////////////////////////////////////////// -bool Boolean::operator<( const bool& b ) const { - return this->value < b; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Boolean::toString() const { - return this->value ? "true" : "false"; -} - -//////////////////////////////////////////////////////////////////////////////// -Boolean Boolean::valueOf( const std::string& value ) { - return Boolean( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -Boolean Boolean::valueOf( bool value ) { - return Boolean( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -bool Boolean::parseBoolean( const std::string& value ) { - bool ret = 0; - std::istringstream istream( value ); - istream.clear(); - istream >> std::boolalpha >> ret; - return ret; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Boolean::toString( bool value ) { - return value ? "true" : "false"; -}
diff --git a/src/decaf/src/main/decaf/lang/Boolean.h b/src/decaf/src/main/decaf/lang/Boolean.h deleted file mode 100644 index a989dec..0000000 --- a/src/decaf/src/main/decaf/lang/Boolean.h +++ /dev/null
@@ -1,167 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_BOOLEAN_H_ -#define _DECAF_LANG_BOOLEAN_H_ - -#include <string> -#include <decaf/lang/Comparable.h> -#include <decaf/util/Config.h> - -namespace decaf{ -namespace lang{ - - class DECAF_API Boolean : public Comparable<Boolean>, - public Comparable<bool> { - private: - - // This objects boolean value - bool value; - - public: - - /** - * The Class object representing the primitive false boolean. - */ - static const Boolean _FALSE; - - /** - * The Class object representing the primitive type boolean. - */ - static const Boolean _TRUE; - - public: - - /** - * @param value - primitive boolean to wrap. - */ - Boolean( bool value ); - - /** - * @param value - String value to convert to a boolean. - */ - Boolean( const std::string& value ); - - virtual ~Boolean() {} - - /** - * @returns the primitive boolean value of this object - */ - bool booleanValue() const { - return value; - } - - /** - * @returns the string representation of this Booleans value. - */ - std::string toString() const; - - /** - * Compares this Boolean instance with another. - * @param b - the Boolean instance to be compared - * @return zero if this object represents the same boolean value as the - * argument; a positive value if this object represents true and the - * argument represents false; and a negative value if this object - * represents false and the argument represents true - */ - virtual int compareTo( const Boolean& b ) const; - - /** - * Compares equality between this object and the one passed. - * @param value - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const Boolean& value ) const; - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param value - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const Boolean& value ) const; - - /** - * @returns true if the two Boolean Objects have the same value. - */ - bool equals( const Boolean& b ) const { - return this->value == b.value; - } - - /** - * Compares this Boolean instance with another. - * @param b - the Boolean instance to be compared - * @return zero if this object represents the same boolean value as the - * argument; a positive value if this object represents true and the - * argument represents false; and a negative value if this object - * represents false and the argument represents true - */ - virtual int compareTo( const bool& b ) const; - - /** - * Compares equality between this object and the one passed. - * @param value - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const bool& value ) const; - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param value - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const bool& value ) const; - - /** - * @returns true if the two Boolean Objects have the same value. - */ - bool equals( const bool& b ) const { - return this->value == b; - } - - public: // Statics - - /** - * @returns a Boolean instance of the primitive boolean value - */ - static Boolean valueOf( bool value ); - - /** - * @returns a Boolean instance of the string value - */ - static Boolean valueOf( const std::string& value ); - - /** - * Parses the String passed and extracts an bool. - * @param String to parse - * @return bool value - */ - static bool parseBoolean( const std::string& value ); - - /** - * Converts the bool to a String representation - * @param bool to convert - * @return string representation - */ - static std::string toString( bool value ); - - }; - -}} - -#endif /*_DECAF_LANG_BOOLEAN_H_*/
diff --git a/src/decaf/src/main/decaf/lang/Byte.cpp b/src/decaf/src/main/decaf/lang/Byte.cpp deleted file mode 100644 index addd8be..0000000 --- a/src/decaf/src/main/decaf/lang/Byte.cpp +++ /dev/null
@@ -1,95 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "Byte.h" -#include <decaf/lang/Integer.h> - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; - -//////////////////////////////////////////////////////////////////////////////// -Byte::Byte( unsigned char value ) { - this->value = value; -} - -//////////////////////////////////////////////////////////////////////////////// -Byte::Byte( const std::string& value ) throw( exceptions::NumberFormatException ) { - this->value = parseByte( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Byte::toString() const { - return string( 1, this->value ); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Byte::toString( unsigned char value ) { - return Integer::toString( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned char Byte::parseByte( const std::string& s, int radix ) - throw ( exceptions::NumberFormatException ) { - - int intValue = Integer::parseInt( s, radix ); - unsigned char result = (unsigned char)intValue; - if( result != intValue ) { - throw NumberFormatException( - __FILE__, __LINE__, - "Byte::parseByte - Not a valid unsigned char encoded string."); - } - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned char Byte::parseByte( const std::string& s ) - throw ( exceptions::NumberFormatException ) { - - return parseByte( s, 10 ); -} - -//////////////////////////////////////////////////////////////////////////////// -Byte Byte::decode( const std::string& value ) - throw ( exceptions::NumberFormatException ) { - - int intValue = Integer::decode( value ).intValue(); - unsigned char result = (unsigned char)intValue; - if( result != intValue ) { - throw NumberFormatException( - __FILE__, __LINE__, - "Byte::decode - Not a valid unsigned char encoded string."); - } - - return Byte( result ); -} - -//////////////////////////////////////////////////////////////////////////////// -Byte Byte::valueOf( const std::string& value ) - throw ( exceptions::NumberFormatException ) { - - return Byte( parseByte( value, 10 ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -Byte Byte::valueOf( const std::string& value, int radix ) - throw ( exceptions::NumberFormatException ) { - - return Byte( parseByte( value, radix ) ); -}
diff --git a/src/decaf/src/main/decaf/lang/Byte.h b/src/decaf/src/main/decaf/lang/Byte.h deleted file mode 100644 index 9762bf5..0000000 --- a/src/decaf/src/main/decaf/lang/Byte.h +++ /dev/null
@@ -1,301 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_BYTE_H_ -#define _DECAF_LANG_BYTE_H_ - -#include <decaf/util/Config.h> -#include <decaf/lang/Number.h> -#include <decaf/lang/Comparable.h> -#include <decaf/lang/exceptions/NumberFormatException.h> -#include <string> - -namespace decaf{ -namespace lang{ - - class DECAF_API Byte : public Number, - public Comparable<Byte>, - public Comparable<unsigned char> { - private: - - unsigned char value; - - public: - - /** The minimum value that a unsigned char can take on. */ - static const unsigned char MIN_VALUE = 0x7F; - - /** The maximum value that a unsigned char can take on. */ - static const unsigned char MAX_VALUE = 0x80; - - /** The size of the primitive charactor in bits. */ - static const int SIZE = 8; - - public: - - /** - * @param value - the primitive value to wrap - */ - Byte( unsigned char value ); - - /** - * @param value - the string to convert to an unsigned char - * @throws NumberFormatException - */ - Byte( const std::string& value ) throw( exceptions::NumberFormatException ); - - virtual ~Byte() {} - - /** - * Compares this Byte instance with another. - * @param c - the Byte instance to be compared - * @return zero if this object represents the same char value as the - * argument; a positive value if this object represents a value greater - * than the passed in value, and -1 if this object repesents a value - * less than the passed in value. - */ - virtual int compareTo( const Byte& c ) const { - return this->value < c.value ? -1 : (this->value > c.value) ? 1 : 0; - } - - /** - * Compares equality between this object and the one passed. - * @param c - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const Byte& c ) const { - return this->value == c.value; - } - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param c - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const Byte& c ) const { - return this->value < c.value; - } - - /** - * Compares this Byte instance with a char type. - * @param c - the char instance to be compared - * @return zero if this object represents the same char value as the - * argument; a positive value if this object represents a value greater - * than the passed in value, and -1 if this object repesents a value - * less than the passed in value. - */ - virtual int compareTo( const unsigned char& c ) const { - return this->value < c ? -1 : (this->value > c) ? 1 : 0; - } - - /** - * Compares equality between this object and the one passed. - * @param c - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const unsigned char& c ) const { - return this->value == c; - } - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param c - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const unsigned char& c ) const { - return this->value < c; - } - - /** - * @returns true if the two Byte Objects have the same value. - */ - bool equals( const Byte& c ) const { - return this->value == c.value; - } - - /** - * @returns true if the two Bytes have the same value. - */ - bool equals( const unsigned char& c ) const { - return this->value == c; - } - - /** - * @returns this Byte Object as a String Representation - */ - std::string toString() const; - - /** - * Answers the double value which the receiver represents - * @return double the value of the receiver. - */ - virtual double doubleValue() const { - return (double)this->value; - } - - /** - * Answers the float value which the receiver represents - * @return float the value of the receiver. - */ - virtual float floatValue() const { - return (float)this->value; - } - - /** - * Answers the byte value which the receiver represents - * @return byte the value of the receiver. - */ - virtual unsigned char byteValue() const { - return this->value; - } - - /** - * Answers the short value which the receiver represents - * @return short the value of the receiver. - */ - virtual short shortValue() const { - return (short)this->value; - } - - /** - * Answers the int value which the receiver represents - * @return int the value of the receiver. - */ - virtual int intValue() const { - return (int)this->value; - } - - /** - * Answers the long value which the receiver represents - * @return long long the value of the receiver. - */ - virtual long long longValue() const { - return (long long)this->value; - } - - public: // statics - - /** - * @returns a string representing the primitive value as Base 10 - */ - static std::string toString( unsigned char value ); - - /** - * Decodes a String into a Byte. Accepts decimal, hexadecimal, and octal - * numbers given by the following grammar: - * - * The sequence of characters following an (optional) negative sign and/or - * radix specifier ("0x", "0X", "#", or leading zero) is parsed as by the - * Byte::parseByte method with the indicated radix (10, 16, or 8). This - * sequence of characters must represent a positive value or a - * NumberFormatException will be thrown. The result is negated if first - * character of the specified String is the minus sign. No whitespace - * characters are permitted in the string. - * @param value - The string to decode - * @returns a Byte object containing the decoded value - * @throws NumberFomatException if the string is not formatted correctly. - */ - static Byte decode( const std::string& value ) - throw ( exceptions::NumberFormatException ); - - /** - * Parses the string argument as a signed unsigned char in the radix specified by - * the second argument. The characters in the string must all be digits, - * of the specified radix (as determined by whether - * Character.digit(char, int) returns a nonnegative value) except that the - * first character may be an ASCII minus sign '-' ('\u002D') to indicate - * a negative value. The resulting byte value is returned. - * - * An exception of type NumberFormatException is thrown if any of the - * following situations occurs: - * * The first argument is null or is a string of length zero. - * * The radix is either smaller than Character.MIN_RADIX or larger than - * Character::MAX_RADIX. - * * Any character of the string is not a digit of the specified radix, - * except that the first character may be a minus sign '-' provided - * that the string is longer than length 1. - * * The value represented by the string is not a value of type unsigned char. - * - * @param s - the String containing the unsigned char to be parsed - * @param radix - the radix to be used while parsing s - * @return the unsigned char represented by the string argument in the - * specified radix. - * @throws NumberFormatException - If String does not contain a parsable - * unsigned char. - */ - static unsigned char parseByte( const std::string& s, int radix ) - throw ( exceptions::NumberFormatException ); - - /** - * Parses the string argument as a signed decimal unsigned char. The - * characters in the string must all be decimal digits, except that the - * first character may be an ASCII minus sign '-' ('\u002D') to indicate a - * negative value. The resulting unsigned char value is returned, exactly as - * if the argument and the radix 10 were given as arguments to the - * parseByte( const std::string, int ) method. - * @param s - String to convert to a unsigned char - * @returns the converted unsigned char value - * @throws NumberFormatException if the string is not a unsigned char. - */ - static unsigned char parseByte( const std::string& s ) - throw ( exceptions::NumberFormatException ); - - /** - * Returns a Character instance representing the specified char value. - * @param value - the primitive char to wrap. - * @returns a new Charactor instance that wraps this value. - */ - static Byte valueOf( unsigned char value ) { - return Byte( value ); - } - - /** - * Returns a Byte object holding the value given by the specified std::string. - * The argument is interpreted as representing a signed decimal unsigned char, - * exactly as if the argument were given to the parseByte( std::string ) - * method. The result is a Byte object that represents the unsigned char value - * specified by the string. - * @param value - std::string to parse as base 10 - * @return new Byte Object wrapping the primitive - * @throws NumberFormatException if the string is not a decimal unsigned char. - */ - static Byte valueOf( const std::string& value ) - throw ( exceptions::NumberFormatException ); - - /** - * Returns a Byte object holding the value extracted from the specified - * std::string when parsed with the radix given by the second argument. - * The first argument is interpreted as representing a signed unsigned char - * in the radix specified by the second argument, exactly as if the argument - * were given to the parseByte( std::string, int ) method. The result is a - * Byte object that represents the unsigned char value specified by the - * string. - * @param value - std::string to parse as base ( radix ) - * @param radix - base of the string to parse. - * @return new Byte Object wrapping the primitive - * @throws NumberFormatException if the string is not a valid unsigned char. - */ - static Byte valueOf( const std::string& value, int radix ) - throw ( exceptions::NumberFormatException ); - - }; - -}} - -#endif /*_DECAF_LANG_BYTE_H_*/
diff --git a/src/decaf/src/main/decaf/lang/Character.cpp b/src/decaf/src/main/decaf/lang/Character.cpp deleted file mode 100644 index e387808..0000000 --- a/src/decaf/src/main/decaf/lang/Character.cpp +++ /dev/null
@@ -1,48 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <decaf/lang/Character.h> - -using namespace std; -using namespace decaf; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -Character::Character( char value ) { - this->value = value; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Character::toString() const { - return string( 1, this->value ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Character::digit( char c, int radix ) { - if( radix >= MIN_RADIX && radix <= MAX_RADIX ) { - int result = -1; - if( '0' <= c && c <= '9' ) { - result = c - '0'; - } else if( 'a' <= c && c <= 'z' ) { - result = c - ('a' - 10); - } else if( 'A' <= c && c <= 'Z' ) { - result = c - ('A' - 10); - } - return result < radix ? result : -1; - } - return -1; -}
diff --git a/src/decaf/src/main/decaf/lang/Character.h b/src/decaf/src/main/decaf/lang/Character.h deleted file mode 100644 index f39e611..0000000 --- a/src/decaf/src/main/decaf/lang/Character.h +++ /dev/null
@@ -1,298 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_CHARACTER_H_ -#define _DECAF_LANG_CHARACTER_H_ - -#include <decaf/util/Config.h> -#include <decaf/lang/Number.h> -#include <decaf/lang/Comparable.h> -#include <string> - -namespace decaf{ -namespace lang{ - - class DECAF_API Character : public Number, - public Comparable<Character>, - public Comparable<char> { - private: - - // The primitive Char value - char value; - - public: - - /** The minimum radix available for conversion to and from strings. */ - static const int MIN_RADIX = 2; - - /** The maximum radix available for conversion to and from strings. */ - static const int MAX_RADIX = 36; - - /** The minimum value that a signed char can take on. */ - static const char MIN_VALUE = (char)0x7F; - - /** The maximum value that a signed char can take on. */ - static const char MAX_VALUE = (char)0x80; - - /** The size of the primitive charactor in bits. */ - static const int SIZE = 8; - - public: - - /** - * @param value - char to wrap. - */ - Character( char value ); - - /** - * Compares this Character instance with another. - * @param c - the Character instance to be compared - * @return zero if this object represents the same char value as the - * argument; a positive value if this object represents a value greater - * than the passed in value, and -1 if this object repesents a value - * less than the passed in value. - */ - virtual int compareTo( const Character& c ) const { - return this->value < c.value ? -1 : (this->value > c.value) ? 1 : 0; - } - - /** - * Compares equality between this object and the one passed. - * @param c - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const Character& c ) const { - return this->value == c.value; - } - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param c - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const Character& c ) const { - return this->value < c.value; - } - - /** - * Compares this Character instance with a char type. - * @param c - the char instance to be compared - * @return zero if this object represents the same char value as the - * argument; a positive value if this object represents a value greater - * than the passed in value, and -1 if this object repesents a value - * less than the passed in value. - */ - virtual int compareTo( const char& c ) const { - return this->value < c ? -1 : (this->value > c) ? 1 : 0; - } - - /** - * Compares equality between this object and the one passed. - * @param c - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const char& c ) const { - return this->value == c; - } - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param c - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const char& c ) const { - return this->value < c; - } - - /** - * @returns true if the two Character Objects have the same value. - */ - bool equals( const Character& c ) const { - return this->value == c.value; - } - - /** - * @returns true if the two Characters have the same value. - */ - bool equals( const char& c ) const { - return this->value == c; - } - - /** - * @returns this Character Object as a String Representation - */ - std::string toString() const; - - /** - * Answers the double value which the receiver represents - * @return double the value of the receiver. - */ - virtual double doubleValue() const { - return (double)this->value; - } - - /** - * Answers the float value which the receiver represents - * @return float the value of the receiver. - */ - virtual float floatValue() const { - return (float)this->value; - } - - /** - * Answers the byte value which the receiver represents - * @return int the value of the receiver. - */ - virtual unsigned char byteValue() const { - return (unsigned char)this->value; - } - - /** - * Answers the short value which the receiver represents - * @return int the value of the receiver. - */ - virtual short shortValue() const { - return (short)this->value; - } - - /** - * Answers the int value which the receiver represents - * @return int the value of the receiver. - */ - virtual int intValue() const { - return (int)this->value; - } - - /** - * Answers the long value which the receiver represents - * @return long the value of the receiver. - */ - virtual long long longValue() const { - return (long long)this->value; - } - - public: // statics - - /** - * Returns a Character instance representing the specified char value. - * @param value - the primitive char to wrap. - * @returns a new Charactor instance that wraps this value. - */ - static Character valueOf( char value ) { - return Character( value ); - } - - /** - * Indicates whether or not the given character is considered - * whitespace. - */ - static bool isWhitespace( char c ){ - switch ( c ) - { - case '\n': - case '\t': - case '\r': - case '\f': - case ' ': - return true; - } - - return false; - } - - /** - * Indicates whether or not the given character is - * a digit. - */ - static bool isDigit( char c ){ - return c >= '0' && c <= '9'; - } - - /** - * Indicates whether or not the given character is - * a lower case character. - */ - static bool isLowerCase( char c ){ - return c >= 'a' && c <= 'z'; - } - - /** - * Indicates whether or not the given character is - * a upper case character. - */ - static bool isUpperCase( char c ){ - return c >= 'A' && c <= 'Z'; - } - - /** - * Indicates whether or not the given character is - * a letter. - */ - static bool isLetter( char c ){ - return isUpperCase(c) || isLowerCase(c); - } - - /** - * Indicates whether or not the given character is - * either a letter or a digit. - */ - static bool isLetterOrDigit( char c ){ - return isLetter(c) || isDigit(c); - } - - /** - * Answers whether the character is an ISO control character, which - * is a char that lays in the range of 0 to 1f and 7f to 9f - * @param c - the character, including supplementary characters - * @return true if the char is an ISO control character - */ - static bool isISOControl( char c ) { - return ( c >= 0 && c <= 0x1f ) || - ( (unsigned char)c >= 0x7f && (unsigned char)c <= 0x9f ); - } - - /** - * Returns the numeric value of the character ch in the specified radix. - * - * If the radix is not in the range MIN_RADIX <= radix <= MAX_RADIX or if - * the value of ch is not a valid digit in the specified radix, -1 is - * returned. A character is a valid digit if at least one of the following - * is true: - * - * * The method isDigit is true of the character and the single-character - * decomposition is less than the specified radix. In this case the - * decimal digit value is returned. - * * The character is one of the uppercase Latin letters 'A' through 'Z' - * and its code is less than radix + 'A' - 10. In this case, - * ch - 'A' + 10 is returned. - * * The character is one of the lowercase Latin letters 'a' through 'z' - * and its code is less than radix + 'a' - 10. In this case, - * ch - 'a' + 10 is returned. - * - * @param c - the char to be converted - * @param radix - the radix of the number - * @returns the numeric value of the number represented in the given radix - */ - static int digit( char c, int radix ); - - }; - -}} - -#endif /*_DECAF_LANG_CHARACTER_H_*/
diff --git a/src/decaf/src/main/decaf/lang/Comparable.h b/src/decaf/src/main/decaf/lang/Comparable.h deleted file mode 100644 index 3ccfc76..0000000 --- a/src/decaf/src/main/decaf/lang/Comparable.h +++ /dev/null
@@ -1,90 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_COMPARABLE_H_ -#define _DECAF_LANG_COMPARABLE_H_ - -namespace decaf{ -namespace lang{ - - /** - * This interface imposes a total ordering on the objects of each class that - * implements it. This ordering is referred to as the class's natural - * ordering, and the class's compareTo method is referred to as its natural - * comparison method. - */ - template< typename T > - class Comparable{ - public: - - virtual ~Comparable() {} - - /** - * Compares this object with the specified object for order. Returns a - * negative integer, zero, or a positive integer as this object is less - * than, equal to, or greater than the specified object. - * - * In the foregoing description, the notation sgn(expression) designates - * the mathematical signum function, which is defined to return one of - * -1, 0, or 1 according to whether the value of expression is negative, - * zero or positive. The implementor must ensure sgn(x.compareTo(y)) == - * -sgn(y.compareTo(x)) for all x and y. (This implies that x.compareTo(y) - * must throw an exception iff y.compareTo(x) throws an exception.) - * - * The implementor must also ensure that the relation is transitive: - * (x.compareTo(y)>0 && y.compareTo(z)>0) implies x.compareTo(z)>0. - * - * Finally, the implementer must ensure that x.compareTo(y)==0 implies - * that sgn(x.compareTo(z)) == sgn(y.compareTo(z)), for all z. - * - * It is strongly recommended, but not strictly required that - * (x.compareTo(y)==0) == (x.equals(y)). Generally speaking, any class - * that implements the Comparable interface and violates this condition - * should clearly indicate this fact. The recommended language is - * "Note: this class has a natural ordering that is inconsistent with - * equals." - * @param value - the Object to be compared. - * @returns a negative integer, zero, or a positive integer as this - * object is less than, equal to, or greater than the specified object. - */ - virtual int compareTo( const T& value ) const = 0; - - /** - * @return true if this value is considered equal to the passed value. - */ - virtual bool equals( const T& value ) const = 0; - - /** - * Compares equality between this object and the one passed. - * @param value - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const T& value ) const = 0; - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param value - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const T& value ) const = 0; - - }; - -}} - -#endif /*_DECAF_LANG_COMPARABLE_H_*/
diff --git a/src/decaf/src/main/decaf/lang/Double.cpp b/src/decaf/src/main/decaf/lang/Double.cpp deleted file mode 100644 index c0f6a4b..0000000 --- a/src/decaf/src/main/decaf/lang/Double.cpp +++ /dev/null
@@ -1,244 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "Double.h" -#include <decaf/lang/Long.h> - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; - -//////////////////////////////////////////////////////////////////////////////// -const double Double::MAX_VALUE = 1.7976931348623157e+308; -const double Double::MIN_VALUE = 5e-324; -const double Double::NaN = 0.0f / 0.0f; -const double Double::POSITIVE_INFINITY = 1.0f / 0.0f; -const double Double::NEGATIVE_INFINITY = -1.0f / 0.0f; - -//////////////////////////////////////////////////////////////////////////////// -Double::Double( double value ) { - this->value = value; -} - -//////////////////////////////////////////////////////////////////////////////// -Double::Double( const std::string& value ) throw( exceptions::NumberFormatException ) { - this->value = Double::parseDouble( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Double::compareTo( const Double& d ) const { - return Double::compare( this->value, d.value ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Double::compareTo( const double& d ) const { - return Double::compare( this->value, d ); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Double::toString() const { - return Double::toString( this->value ); -} - -//////////////////////////////////////////////////////////////////////////////// -bool Double::isInfinite() const { - return Double::isInfinite( this->value ); -} - -//////////////////////////////////////////////////////////////////////////////// -bool Double::isNaN() const { - return Double::isNaN( this->value ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Double::compare( double d1, double d2 ) { - - long long l1, l2 = 0; - long NaNbits = Double::doubleToLongBits( Double::NaN ); - - if( ( l1 = Double::doubleToLongBits( d1 ) ) == NaNbits ) { - if( Double::doubleToLongBits( d2 ) == NaNbits ) { - return 0; - } - return 1; - } - - if( ( l2 = Double::doubleToLongBits( d2 ) ) == NaNbits ) { - return -1; - } - - if( d1 == d2 ) { - if( l1 == l2 ) { - return 0; - } - - // check for -0 - return l1 > l2 ? 1 : -1; - } - - return d1 > d2 ? 1 : -1; -} - -//////////////////////////////////////////////////////////////////////////////// -long long Double::doubleToLongBits( double value ) { - - long long longValue = 0; - memcpy( &longValue, &value, sizeof( double ) ); - - if( ( longValue & DOUBLE_EXPONENT_MASK ) == DOUBLE_EXPONENT_MASK ) { - if( longValue & DOUBLE_MANTISSA_MASK ) { - return DOUBLE_NAN_BITS; - } - } - - return longValue; -} - -//////////////////////////////////////////////////////////////////////////////// -long long Double::doubleToRawLongBits( double value ) { - - long long longValue = 0; - memcpy( &longValue, &value, sizeof( double ) ); - return longValue; -} - -//////////////////////////////////////////////////////////////////////////////// -bool Double::isInfinite( double value ) { - return ( value == POSITIVE_INFINITY ) || ( value == NEGATIVE_INFINITY ); -} - -//////////////////////////////////////////////////////////////////////////////// -bool Double::isNaN( double value ) { - return value != value; -} - -//////////////////////////////////////////////////////////////////////////////// -double Double::longBitsToDouble( long long bits ) { - double result = 0; - memcpy( &result, &bits, sizeof( long long ) ); - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -double Double::parseDouble( const std::string value ) - throw ( exceptions::NumberFormatException ) { - - return 0; // TODO -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Double::toHexString( double value ) { - /* - * Reference: http://en.wikipedia.org/wiki/IEEE_754 - */ - if( value != value ) { - return "NaN"; - } - if( value == POSITIVE_INFINITY ) { - return "Infinity"; - } - if( value == NEGATIVE_INFINITY ) { - return "-Infinity"; - } - - unsigned long long bitValue = Double::doubleToLongBits( value ); - - bool negative = ( bitValue & 0x8000000000000000LL ) != 0; - // mask exponent bits and shift down - unsigned long long exponent = ( bitValue & 0x7FF0000000000000LL ) >> 52; - // mask significand bits and shift up - unsigned long long significand = bitValue & 0x000FFFFFFFFFFFFFLL; - - if( exponent == 0 && significand == 0 ) { - return ( negative ? "-0x0.0p0" : "0x0.0p0" ); - } - - // Start with sign and hex indicator - std::string hexString( negative ? "-0x" : "0x" ); - - if( exponent == 0 ) { - // denormal (subnormal) value - hexString.append("0."); - // significand is 52-bits, so there can be 13 hex digits - unsigned int fractionDigits = 13; - // remove trailing hex zeros, so Integer.toHexString() won't print - // them - while( ( significand != 0 ) && ( ( significand & 0xF ) == 0 ) ) { - significand >>= 4; - fractionDigits--; - } - // this assumes Integer.toHexString() returns lowercase characters - std::string hexSignificand = Long::toHexString( significand ); - - // if there are digits left, then insert some '0' chars first - if( significand != 0 && fractionDigits > hexSignificand.length() ) { - int digitDiff = fractionDigits - hexSignificand.length(); - while( digitDiff-- != 0 ) { - hexString.append( "0" ); - } - } - - hexString.append( hexSignificand ); - hexString.append( "p-1022" ); - } else { - // normal value - hexString.append( "1." ); - // significand is 52-bits, so there can be 13 hex digits - unsigned int fractionDigits = 13; - // remove trailing hex zeros, so Integer.toHexString() won't print - // them - while( (significand != 0 ) && ( ( significand & 0xF ) == 0 ) ) { - significand >>= 4; - fractionDigits--; - } - // this assumes Integer.toHexString() returns lowercase characters - std::string hexSignificand = Long::toHexString( significand ); - - // if there are digits left, then insert some '0' chars first - if( significand != 0 && fractionDigits > hexSignificand.length() ) { - int digitDiff = fractionDigits - hexSignificand.length(); - while( digitDiff-- != 0 ) { - hexString.append( "0" ); - } - } - - hexString.append( hexSignificand ); - hexString.append( "p" ); - // remove exponent's 'bias' and convert to a string - hexString.append( Long::toString( exponent - 1023 ) ); - } - - return hexString; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Double::toString( double value ) { - return ""; //TODO -} - -//////////////////////////////////////////////////////////////////////////////// -Double Double::valueOf( double value ) { - return Double( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -Double Double::valueOf( const std::string& value ) - throw ( exceptions::NumberFormatException ) { - - return valueOf( parseDouble( value ) ); -}
diff --git a/src/decaf/src/main/decaf/lang/Double.h b/src/decaf/src/main/decaf/lang/Double.h deleted file mode 100644 index 39b8b21..0000000 --- a/src/decaf/src/main/decaf/lang/Double.h +++ /dev/null
@@ -1,412 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_DOUBLE_H_ -#define _DECAF_LANG_DOUBLE_H_ - -#include <decaf/util/Config.h> -#include <decaf/lang/Comparable.h> -#include <decaf/lang/Number.h> -#include <decaf/lang/exceptions/NumberFormatException.h> -#include <string> - -namespace decaf{ -namespace lang{ - - class DECAF_API Double : public Number, - public Comparable<Double>, - public Comparable<double> { - private: - - double value; - - public: - - /** The size in bits of the primitive int type */ - static const int SIZE = 64; - - /** The maximum value that the primitive type can hold */ - static const double MAX_VALUE; - - /** The minimum value that the primitive type can hold */ - static const double MIN_VALUE; - - /** Constant for the Not a Number Value */ - static const double NaN; - - /** Constant for Positive Infinity */ - static const double POSITIVE_INFINITY; - - /** Constant for Negative Infinitiy */ - static const double NEGATIVE_INFINITY; - - public: - - /** - * @param value - the primitve type to wrap - */ - Double( double value ); - - /** - * @param value - the string to convert to a primitve type to wrap - */ - Double( const std::string& value ) throw( exceptions::NumberFormatException ); - - virtual ~Double() {} - - /** - * Compares this Double instance with another. - * @param d - the Double instance to be compared - * @return zero if this object represents the same integer value as the - * argument; a positive value if this object represents a value greater - * than the passed in value, and -1 if this object repesents a value - * less than the passed in value. - */ - virtual int compareTo( const Double& d ) const; - - /** - * @param d - the Double object to compare against. - * @returns true if the two Double Objects have the same value. - */ - bool equals( const Double& d ) const { - return this->value == d.value; - } - - /** - * Compares equality between this object and the one passed. - * @param d - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const Double& d ) const { - return this->value == d.value; - } - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param d - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const Double& d ) const { - return this->value < d.value; - } - - /** - * Compares this Double instance with another. - * @param d - the Double instance to be compared - * @return zero if this object represents the same integer value as the - * argument; a positive value if this object represents a value greater - * than the passed in value, and -1 if this object repesents a value - * less than the passed in value. - */ - virtual int compareTo( const double& d ) const; - - /** - * @param d - the Double object to compare against. - * @returns true if the two Double Objects have the same value. - */ - bool equals( const double& d ) const { - return this->value == d; - } - - /** - * Compares equality between this object and the one passed. - * @param d - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const double& d ) const { - return this->value == d; - } - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param d - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const double& d ) const { - return this->value < d; - } - - /** - * @returns this Double Object as a String Representation - */ - std::string toString() const; - - /** - * Answers the double value which the receiver represents - * @return double the value of the receiver. - */ - virtual double doubleValue() const { - return this->value; - } - - /** - * Answers the float value which the receiver represents - * @return float the value of the receiver. - */ - virtual float floatValue() const { - return (float)this->value; - } - - /** - * Answers the byte value which the receiver represents - * @return byte the value of the receiver. - */ - virtual unsigned char byteValue() const { - return (unsigned char)this->value; - } - - /** - * Answers the short value which the receiver represents - * @return short the value of the receiver. - */ - virtual short shortValue() const { - return (short)this->value; - } - - /** - * Answers the int value which the receiver represents - * @return int the value of the receiver. - */ - virtual int intValue() const { - return (int)this->value; - } - - /** - * Answers the long value which the receiver represents - * @return long the value of the receiver. - */ - virtual long long longValue() const { - return (long long)this->value; - } - - /** - * @returns true if the double is equal to positive infinity. - */ - bool isInfinite() const; - - /** - * @returns true if the double is equal to NaN. - */ - bool isNaN() const; - - public: // Statics - - /** - * Compares the two specified double values. The sign of the integer value - * returned is the same as that of the integer that would be returned by the - * call: - * new Double(d1).compareTo(new Double(d2)) - * @param d1 - the first double to compare - * @param d2 - the second double to compare - * @returns the value 0 if d1 is numerically equal to d2; a value less than - * 0 if d1 is numerically less than d2; and a value greater than 0 if d1 is - * numerically greater than d2. - */ - static int compare( double d1, double d2 ); - - /** - * Returns a representation of the specified floating-point value according - * to the IEEE 754 floating-point "double format" bit layout. - * - * Bit 63 (the bit that is selected by the mask 0x8000000000000000L) - * represents the sign of the floating-point number. Bits 62-52 (the bits - * that are selected by the mask 0x7ff0000000000000L) represent the exponent. - * Bits 51-0 (the bits that are selected by the mask 0x000fffffffffffffL) - * represent the significand (sometimes called the mantissa) of the - * floating-point number. - * - * If the argument is positive infinity, the result is 0x7ff0000000000000L. - * If the argument is negative infinity, the result is 0xfff0000000000000L. - * If the argument is NaN, the result is 0x7ff8000000000000L. - * - * In all cases, the result is a long integer that, when given to the - * longBitsToDouble(long) method, will produce a floating-point value the - * same as the argument to doubleToLongBits (except all NaN values are - * collapsed to a single "canonical" NaN value). - * @param value - double to be converted - * @returns the long long bits that make up the double - */ - static long long doubleToLongBits( double value ); - - /** - * Returns a representation of the specified floating-point value according - * to the IEEE 754 floating-point "double format" bit layout, preserving - * Not-a-Number (NaN) values. - * - * Bit 63 (the bit that is selected by the mask 0x8000000000000000LL) - * represents the sign of the floating-point number. Bits 62-52 (the bits - * that are selected by the mask 0x7ff0000000000000L) represent the exponent. - * Bits 51-0 (the bits that are selected by the mask 0x000fffffffffffffL) - * represent the significand (sometimes called the mantissa) of the - * floating-point number. - * - * If the argument is positive infinity, the result is 0x7ff0000000000000LL. - * If the argument is negative infinity, the result is 0xfff0000000000000LL. - * If the argument is NaN, the result is the long integer representing the - * actual NaN value. Unlike the doubleToLongBits method, doubleToRawLongBits - * does not collapse all the bit patterns encoding a NaN to a single - * "canonical" NaN value. - * - * In all cases, the result is a long integer that, when given to the - * longBitsToDouble(long) method, will produce a floating-point value the - * same as the argument to doubleToRawLongBits. - * @param value - double to be converted - * @returns the long long bits that make up the double - */ - static long long doubleToRawLongBits( double value ); - - /** - * @param value - The double to check. - * @returns true if the double is equal to infinity. - */ - static bool isInfinite( double value ); - - /** - * @param value - The double to check. - * @returns true if the double is equal to NaN. - */ - static bool isNaN( double value ); - - /** - * Returns the double value corresponding to a given bit representation. - * The argument is considered to be a representation of a floating-point - * value according to the IEEE 754 floating-point "double format" bit layout. - * - * If the argument is 0x7ff0000000000000L, the result is positive infinity. - * If the argument is 0xfff0000000000000L, the result is negative infinity. - * If the argument is any value in the range 0x7ff0000000000001L through - * 0x7fffffffffffffffL or in the range 0xfff0000000000001L through - * 0xffffffffffffffffL, the result is a NaN. No IEEE 754 floating-point - * operation provided by C++ can distinguish between two NaN values of the - * same type with different bit patterns. Distinct values of NaN are only - * distinguishable by use of the Double.doubleToRawLongBits method. - * @param bits - the long long bits to convert to double - * @return the double converted from the bits - */ - static double longBitsToDouble( long long bits ); - - /** - * Returns a new double initialized to the value represented by the - * specified string, as performed by the valueOf method of class Double. - * @param value - The string to parse to an double - * @returns a double parsed from the passed string - * @throws NumberFormatException - */ - static double parseDouble( const std::string value ) - throw ( exceptions::NumberFormatException ); - - /** - * Returns a hexadecimal string representation of the double argument. All - * characters mentioned below are ASCII characters. - * - * * If the argument is NaN, the result is the string "NaN". - * * Otherwise, the result is a string that represents the sign and magnitude - * (absolute value) of the argument. If the sign is negative, the first - * character of the result is '-'; if the sign is positive, no sign - * character appears in the result. As for the magnitude m: - * o If m is infinity, it is represented by the string "Infinity"; thus, - * positive infinity produces the result "Infinity" and negative - * infinity produces the result "-Infinity". - * o If m is zero, it is represented by the string "0x0.0p0"; thus, - * negative zero produces the result "-0x0.0p0" and positive zero - * produces the result "0x0.0p0". - * o If m is a double value with a normalized representation, substrings - * are used to represent the significand and exponent fields. The - * significand is represented by the characters "0x1." followed by a - * lowercase hexadecimal representation of the rest of the - * significand as a fraction. Trailing zeros in the hexadecimal - * representation are removed unless all the digits are zero, in which - * case a single zero is used. Next, the exponent is represented by - * "p" followed by a decimal string of the unbiased exponent as if - * produced by a call to Integer.toString on the exponent value. - * o If m is a double value with a subnormal representation, the - * significand is represented by the characters "0x0." followed by a - * hexadecimal representation of the rest of the significand as a - * fraction. Trailing zeros in the hexadecimal representation are - * removed. Next, the exponent is represented by "p-126". Note that - * there must be at least one nonzero digit in a subnormal significand. - * - * @param value - The double to convert to a string - * @returns the Hex formatted double string. - */ - static std::string toHexString( double value ); - - /** - * Returns a string representation of the double argument. All characters - * mentioned below are ASCII characters. - * - * If the argument is NaN, the result is the string "NaN". - * Otherwise, the result is a string that represents the sign and magnitude - * (absolute value) of the argument. If the sign is negative, the first - * character of the result is '-'; if the sign is positive, no - * sign character appears in the result. As for the magnitude m: - * o If m is infinity, it is represented by the characters "Infinity"; thus, - * positive infinity produces the result "Infinity" and negative infinity - * produces the result "-Infinity". - * o If m is zero, it is represented by the characters "0.0"; thus, negative - * zero produces the result "-0.0" and positive zero produces the result - * "0.0". - * o If m is greater than or equal to 10-3 but less than 107, then it is - * represented as the integer part of m, in decimal form with no leading - * zeroes, followed by '.', followed by one or more decimal digits - * representing the fractional part of m. - * o If m is less than 10-3 or greater than or equal to 107, then it is - * represented in so-called "computerized scientific notation." Let n be - * the unique integer such that 10n <= m < 10n+1; then let a be the - * mathematically exact quotient of m and 10n so that 1 <= a < 10. - * The magnitude is then represented as the integer part of a, as a - * single decimal digit, followed by '.', followed by decimal digits - * representing the fractional part of a, followed by the letter 'E', - * followed by a representation of n as a decimal integer, as produced - * by the method Integer.toString(int). - * @param value - The double to convert to a string - * @returns the formatted double string. - */ - static std::string toString( double value ); - - /** - * Returns a Double instance representing the specified double value. - * @param value - double to wrap - * @returns new Double instance wrapping the primitive value - */ - static Double valueOf( double value ); - - /** - * Returns a Double instance that wraps a primtive double which is parsed - * from the string value passed. - * @param value - the string to parse - * @returns a new Double instance wrapping the double parsed from value - * @throws NumberFormatException on error. - */ - static Double valueOf( const std::string& value ) - throw ( exceptions::NumberFormatException ); - - private: - - static const long long DOUBLE_SIGN_MASK = 0x8000000000000000LL; - static const long long DOUBLE_EXPONENT_MASK = 0x7FF0000000000000LL; - static const long long DOUBLE_MANTISSA_MASK = 0x000FFFFFFFFFFFFFLL; - static const long long DOUBLE_NAN_BITS = - DOUBLE_EXPONENT_MASK | 0x0008000000000000LL; - - }; - -}} - -#endif /*_DECAF_LANG_DOUBLE_H_*/
diff --git a/src/decaf/src/main/decaf/lang/Exception.cpp b/src/decaf/src/main/decaf/lang/Exception.cpp deleted file mode 100644 index b4d3974..0000000 --- a/src/decaf/src/main/decaf/lang/Exception.cpp +++ /dev/null
@@ -1,139 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include <stdio.h> -#include "Exception.h" -#include <decaf/util/logging/LoggerDefines.h> -#include <sstream> - -#include <apr_pools.h> -#include <apr_strings.h> - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::util::logging; - -//////////////////////////////////////////////////////////////////////////////// -Exception::Exception() throw(){ -} - -//////////////////////////////////////////////////////////////////////////////// -Exception::Exception( const Exception& ex ) throw() : Throwable() { - *this = ex; -} - -//////////////////////////////////////////////////////////////////////////////// -Exception::Exception( const char* file, const int lineNumber, - const char* msg, ... ) throw() { - va_list vargs; - va_start( vargs, msg ) ; - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); -} - -//////////////////////////////////////////////////////////////////////////////// -Exception::~Exception() throw(){ -} - -//////////////////////////////////////////////////////////////////////////////// -void Exception::setMessage( const char* msg, ... ){ - va_list vargs; - va_start( vargs, msg ); - buildMessage( msg, vargs ); -} - -//////////////////////////////////////////////////////////////////////////////// -void Exception::buildMessage( const char* format, va_list& vargs ) { - - // Allocate buffer with a guess of it's size - apr_pool_t* pool = NULL; - apr_pool_create( &pool, NULL ); - - // Allocate a buffer of the specified size. - char* buffer = apr_pvsprintf( pool, format, vargs ); - - // Guessed size was enough. Assign the string. - message.assign( buffer, strlen( buffer ) ); - - // assign isn't passing ownership, just copying, delete - // the allocated buffer. - apr_pool_destroy( pool ); - - //decaf::util::logger::SimpleLogger logger("com.yadda1"); - //logger.log( message ); -} - -//////////////////////////////////////////////////////////////////////////////// -void Exception::setMark( const char* file, const int lineNumber ) { - - // Add this mark to the end of the stack trace. - stackTrace.push_back( std::make_pair( (std::string)file, (int)lineNumber ) ); - - std::ostringstream stream; - stream << "\tFILE: " << stackTrace[stackTrace.size()-1].first; - stream << ", LINE: " << stackTrace[stackTrace.size()-1].second; - - //decaf::util::logger::SimpleLogger logger("com.yadda2"); - //logger.log( stream.str() ); -} - -//////////////////////////////////////////////////////////////////////////////// -Exception* Exception::clone() const { - return new Exception( *this ); -} - -//////////////////////////////////////////////////////////////////////////////// -std::vector< std::pair< std::string, int> > Exception::getStackTrace() const { - return stackTrace; -} - -//////////////////////////////////////////////////////////////////////////////// -void Exception::printStackTrace() const { - printStackTrace( std::cerr ); -} - -//////////////////////////////////////////////////////////////////////////////// -void Exception::printStackTrace( std::ostream& stream ) const { - stream << getStackTraceString(); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Exception::getStackTraceString() const { - - // Create the output stream. - std::ostringstream stream; - - // Write the message and each stack entry. - stream << message << std::endl; - for( unsigned int ix=0; ix<stackTrace.size(); ++ix ){ - stream << "\tFILE: " << stackTrace[ix].first; - stream << ", LINE: " << stackTrace[ix].second; - stream << std::endl; - } - - // Return the string from the output stream. - return stream.str(); -} - -//////////////////////////////////////////////////////////////////////////////// -Exception& Exception::operator =( const Exception& ex ){ - this->message = ex.message; - this->stackTrace = ex.stackTrace; - return *this; -}
diff --git a/src/decaf/src/main/decaf/lang/Exception.h b/src/decaf/src/main/decaf/lang/Exception.h deleted file mode 100644 index ac567c6..0000000 --- a/src/decaf/src/main/decaf/lang/Exception.h +++ /dev/null
@@ -1,150 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_LANG_EXCEPTION_EXCEPTION_H_ -#define _DECAF_LANG_EXCEPTION_EXCEPTION_H_ - -#include <decaf/lang/Throwable.h> -#include <decaf/lang/exceptions/ExceptionDefines.h> -#include <decaf/util/Config.h> -#include <stdarg.h> -#include <sstream> - -namespace decaf{ -namespace lang{ - - /* - * Base class for all exceptions. - */ - class DECAF_API Exception : public Throwable - { - private: - - /** - * The cause of this exception. - */ - std::string message; - - /** - * The stack trace. - */ - std::vector< std::pair< std::string, int> > stackTrace; - - public: - - /** - * Default Constructor - */ - Exception() throw(); - - /** - * Copy Constructor - */ - Exception( const Exception& ex ) throw(); - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - Exception( const char* file, const int lineNumber, - const char* msg, ... ) throw(); - - virtual ~Exception() throw(); - - /** - * Gets the message for this exception. - * @return Text formatted error message - */ - virtual std::string getMessage() const{ - return message; - } - - /** - * Implement method from std::exception - * @return the const char* of <code>getMessage()</code>. - */ - virtual const char* what() const throw (){ - return message.c_str(); - } - - /** - * Sets the cause for this exception. - * @param msg the format string for the msg. - * @param variable - params to format into the string - */ - virtual void setMessage( const char* msg, ... ); - - /** - * Adds a file/line number to the stack trace. - * @param file The name of the file calling this method (use __FILE__). - * @param lineNumber The line number in the calling file (use __LINE__). - */ - virtual void setMark( const char* file, const int lineNumber ); - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - * @return Copy of this Exception object - */ - virtual Exception* clone() const; - - /** - * Provides the stack trace for every point where - * this exception was caught, marked, and rethrown. The first - * item in the returned vector is the first point where the mark - * was set (e.g. where the exception was created). - * @return the stack trace. - */ - virtual std::vector< std::pair< std::string, int> > getStackTrace() const; - - /** - * Prints the stack trace to std::err - */ - virtual void printStackTrace() const; - - /** - * Prints the stack trace to the given output stream. - * @param stream the target output stream. - */ - virtual void printStackTrace( std::ostream& stream ) const; - - /** - * Gets the stack trace as one contiguous string. - * @return string with formatted stack trace data - */ - virtual std::string getStackTraceString() const; - - /** - * Assignment operator. - * @param const reference to another Exception - */ - virtual Exception& operator =( const Exception& ex ); - - protected: - - virtual void buildMessage( const char* format, va_list& vargs ); - - }; - -}} - -#endif /*_DECAF_LANG_EXCEPTION_EXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/lang/Float.cpp b/src/decaf/src/main/decaf/lang/Float.cpp deleted file mode 100644 index aa13ade..0000000 --- a/src/decaf/src/main/decaf/lang/Float.cpp +++ /dev/null
@@ -1,253 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "Float.h" -#include <decaf/lang/Integer.h> -#include <decaf/internal/util/FloatingPointParser.h> -#include <decaf/internal/util/NumberConverter.h> - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; - -//////////////////////////////////////////////////////////////////////////////// -const float Float::MAX_VALUE = 3.40282346638528860e+38f; -const float Float::MIN_VALUE = 1.40129846432481707e-45f; -const float Float::NaN = 0.0f / 0.0f; -const float Float::POSITIVE_INFINITY = 1.0f / 0.0f; -const float Float::NEGATIVE_INFINITY = -1.0f / 0.0f; - -//////////////////////////////////////////////////////////////////////////////// -Float::Float( float value ) { - this->value = value; -} - -//////////////////////////////////////////////////////////////////////////////// -Float::Float( double value ) { - this->value = (float)value; -} - -//////////////////////////////////////////////////////////////////////////////// -Float::Float( const std::string& value ) throw( exceptions::NumberFormatException ) { - this->value = Float::parseFloat( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Float::compareTo( const Float& f ) const { - return Float::compare( this->value, f.value ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Float::compareTo( const float& f ) const { - return Float::compare( this->value, f ); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Float::toString() const { - return Float::toString( this->value ); -} - -//////////////////////////////////////////////////////////////////////////////// -bool Float::isInfinite() const { - return Float::isInfinite( this->value ); -} - -//////////////////////////////////////////////////////////////////////////////// -bool Float::isNaN() const { - return Float::isNaN( this->value ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Float::compare( float f1, float f2 ) { - - int i1, i2 = 0; - long NaNbits = Float::floatToIntBits( Float::NaN ); - - if( ( i1 = Float::floatToIntBits( f1 ) ) == NaNbits ) { - if( Float::floatToIntBits( f2 ) == NaNbits ) { - return 0; - } - return 1; - } - - if( ( i2 = Float::floatToIntBits( f2 ) ) == NaNbits ) { - return -1; - } - - if( f1 == f2 ) { - if( i1 == i2 ) { - return 0; - } - - // check for -0 - return i1 > i2 ? 1 : -1; - } - - return f1 > f2 ? 1 : -1; -} - -//////////////////////////////////////////////////////////////////////////////// -int Float::floatToIntBits( float value ) { - - int intValue = 0; - memcpy( &intValue, &value, sizeof( float ) ); - - if( ( intValue & SINGLE_EXPONENT_MASK ) == SINGLE_EXPONENT_MASK ) - { - if( intValue & SINGLE_MANTISSA_MASK ) - { - return SINGLE_NAN_BITS; - } - } - - return intValue; -} - -//////////////////////////////////////////////////////////////////////////////// -int Float::floatToRawIntBits( float value ) { - - int intValue = 0; - memcpy( &intValue, &value, sizeof( float ) ); - return intValue; -} - -//////////////////////////////////////////////////////////////////////////////// -float Float::intBitsToFloat( int bits ) { - - float floatValue = 0; - memcpy( &floatValue, &bits, sizeof( int ) ); - return floatValue; -} - -//////////////////////////////////////////////////////////////////////////////// -bool Float::isInfinite( float value ) { - return ( value == POSITIVE_INFINITY ) || ( value == NEGATIVE_INFINITY ); -} - -//////////////////////////////////////////////////////////////////////////////// -bool Float::isNaN( float value ) { - return value != value; -} - -//////////////////////////////////////////////////////////////////////////////// -float Float::parseFloat( const std::string& value ) - throw ( exceptions::NumberFormatException ) { - - return internal::util::FloatingPointParser::parseFloat( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Float::toHexString( float value ) { - /* - * Reference: http://en.wikipedia.org/wiki/IEEE_754 - */ - if( value != value ) { - return "NaN"; - } - if( value == POSITIVE_INFINITY ) { - return "Infinity"; - } - if( value == NEGATIVE_INFINITY ) { - return "-Infinity"; - } - - unsigned int bitValue = Float::floatToIntBits( value ); - - bool negative = ( bitValue & 0x80000000 ) != 0; - // mask exponent bits and shift down - unsigned int exponent = ( bitValue & 0x7f800000 ) >> 23; - // mask significand bits and shift up - // significand is 23-bits, so we shift to treat it like 24-bits - unsigned int significand = ( bitValue & 0x007FFFFF ) << 1; - - if( exponent == 0 && significand == 0 ) { - return ( negative ? "-0x0.0p0" : "0x0.0p0" ); - } - - // Start with the correct sign and Hex indicator - std::string hexString( negative ? "-0x" : "0x" ); - - if( exponent == 0 ) { - // denormal (subnormal) value - hexString.append( "0." ); - // significand is 23-bits, so there can be 6 hex digits - unsigned int fractionDigits = 6; - // remove trailing hex zeros, so Integer.toHexString() won't print - // them - while( ( significand != 0 ) && ( ( significand & 0xF ) == 0 ) ) { - significand >>= 4; - fractionDigits--; - } - // this assumes Integer.toHexString() returns lowercase characters - std::string hexSignificand = Integer::toHexString( significand ); - - // if there are digits left, then insert some '0' chars first - if( significand != 0 && fractionDigits > hexSignificand.length() ) { - unsigned int digitDiff = fractionDigits - hexSignificand.length(); - while( digitDiff-- != 0 ) { - hexString.append( "0" ); - } - } - hexString.append( hexSignificand ); - hexString.append( "p-126" ); - } else { - // normal value - hexString.append( "1." ); - // significand is 23-bits, so there can be 6 hex digits - unsigned int fractionDigits = 6; - // remove trailing hex zeros, so Integer.toHexString() won't print - // them - while( (significand != 0) && ((significand & 0xF ) == 0 ) ) { - significand >>= 4; - fractionDigits--; - } - // this assumes Integer.toHexString() returns lowercase characters - std::string hexSignificand = Integer::toHexString( significand ); - - // if there are digits left, then insert some '0' chars first - if( significand != 0 && fractionDigits > hexSignificand.length() ) { - unsigned int digitDiff = fractionDigits - hexSignificand.length(); - while( digitDiff-- != 0 ) { - hexString.append( "0" ); - } - } - hexString.append( hexSignificand ); - hexString.append( "p" ); - // remove exponent's 'bias' and convert to a string - hexString.append( Integer::toString( exponent - 127 ) ); - } - - return hexString; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Float::toString( float value ) { - return internal::util::NumberConverter::convert( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -Float Float::valueOf( float value ) { - return Float( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -Float Float::valueOf( const std::string& value ) - throw ( exceptions::NumberFormatException ) { - - return valueOf( parseFloat( value ) ); -}
diff --git a/src/decaf/src/main/decaf/lang/Float.h b/src/decaf/src/main/decaf/lang/Float.h deleted file mode 100644 index 0abd8ed..0000000 --- a/src/decaf/src/main/decaf/lang/Float.h +++ /dev/null
@@ -1,414 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_FLOAT_H_ -#define _DECAF_LANG_FLOAT_H_ - -#include <decaf/util/Config.h> -#include <decaf/lang/Number.h> -#include <decaf/lang/Comparable.h> -#include <decaf/lang/exceptions/NumberFormatException.h> -#include <string> - -namespace decaf{ -namespace lang{ - - class DECAF_API Float : public Number, - public Comparable<Float>, - public Comparable<float> { - private: - - float value; - - public: - - /** The size in bits of the primitive int type */ - static const int SIZE = 32; - - /** The maximum value that the primitive type can hold */ - static const float MAX_VALUE; - - /** The minimum value that the primitive type can hold */ - static const float MIN_VALUE; - - /** Constant for the Not a Number Value */ - static const float NaN; - - /** Constant for Positive Infinity */ - static const float POSITIVE_INFINITY; - - /** Constant for Negative Infinitiy */ - static const float NEGATIVE_INFINITY; - - public: - - /** - * @param value - the primitve type to wrap - */ - Float( float value ); - - /** - * @param value - the primitve type to wrap - */ - Float( double value ); - - /** - * @param value - the string to convert to a primitve type to wrap - */ - Float( const std::string& value ) throw( exceptions::NumberFormatException ); - - virtual ~Float() {} - - /** - * Compares this Float instance with another. - * @param f - the Float instance to be compared - * @return zero if this object represents the same integer value as the - * argument; a positive value if this object represents a value greater - * than the passed in value, and -1 if this object repesents a value - * less than the passed in value. - */ - virtual int compareTo( const Float& f ) const; - - /** - * @param f - the Float object to compare against. - * @returns true if the two Float Objects have the same value. - */ - bool equals( const Float& f ) const { - return this->value == f.value; - } - - /** - * Compares equality between this object and the one passed. - * @param f - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const Float& f ) const { - return this->value == f.value; - } - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param f - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const Float& f ) const { - return this->value < f.value; - } - - /** - * Compares this Float instance with another. - * @param f - the Float instance to be compared - * @return zero if this object represents the same integer value as the - * argument; a positive value if this object represents a value greater - * than the passed in value, and -1 if this object repesents a value - * less than the passed in value. - */ - virtual int compareTo( const float& f ) const; - - /** - * @param f - the Float object to compare against. - * @returns true if the two Float Objects have the same value. - */ - bool equals( const float& f ) const { - return this->value == f; - } - - /** - * Compares equality between this object and the one passed. - * @param f - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const float& f ) const { - return this->value == f; - } - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param f - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const float& f ) const { - return this->value < f; - } - - /** - * @returns this Float Object as a String Representation - */ - std::string toString() const; - - /** - * Answers the double value which the receiver represents - * @return double the value of the receiver. - */ - virtual double doubleValue() const { - return (double)this->value; - } - - /** - * Answers the float value which the receiver represents - * @return float the value of the receiver. - */ - virtual float floatValue() const { - return this->value; - } - - /** - * Answers the byte value which the receiver represents - * @return byte the value of the receiver. - */ - virtual unsigned char byteValue() const { - return (unsigned char)this->value; - } - - /** - * Answers the short value which the receiver represents - * @return short the value of the receiver. - */ - virtual short shortValue() const { - return (short)this->value; - } - - /** - * Answers the int value which the receiver represents - * @return int the value of the receiver. - */ - virtual int intValue() const { - return (int)this->value; - } - - /** - * Answers the long value which the receiver represents - * @return long the value of the receiver. - */ - virtual long long longValue() const { - return (long long)this->value; - } - - /** - * @returns true if the float is equal to positive infinity. - */ - bool isInfinite() const; - - /** - * @returns true if the float is equal to NaN. - */ - bool isNaN() const; - - public: // Statics - - /** - * Compares the two specified double values. The sign of the integer value - * returned is the same as that of the integer that would be returned by the - * call: Float( f1 ).compareTo( Float( f2) ) - * @param f1 - the first double to compare - * @param f2 - the second double to compare - * @returns the value 0 if d1 is numerically equal to f2; a value less than - * 0 if f1 is numerically less than f2; and a value greater than 0 if f1 is - * numerically greater than f2. - */ - static int compare( float f1, float f2 ); - - /** - * Returns a representation of the specified floating-point value according - * to the IEEE 754 floating-point "single format" bit layout. - * - * Bit 31 (the bit that is selected by the mask 0x80000000) represents the - * sign of the floating-point number. Bits 30-23 (the bits that are selected - * by the mask 0x7f800000) represent the exponent. Bits 22-0 (the bits that - * are selected by the mask 0x007fffff) represent the significand (sometimes - * called the mantissa) of the floating-point number. - * - * If the argument is positive infinity, the result is 0x7f800000. - * If the argument is negative infinity, the result is 0xff800000. - * If the argument is NaN, the result is 0x7fc00000. - * - * In all cases, the result is an integer that, when given to the - * intBitsToFloat(int) method, will produce a floating-point value the - * same as the argument to floatToIntBits (except all NaN values are - * collapsed to a single "canonical" NaN value). - * @param value - the float to convert to int bits - * @returns the int that holds the float's value - */ - static int floatToIntBits( float value ); - - /** - * Returns a representation of the specified floating-point value according - * to the IEEE 754 floating-point "single format" bit layout, preserving - * Not-a-Number (NaN) values. - * - * Bit 31 (the bit that is selected by the mask 0x80000000) represents the - * sign of the floating-point number. Bits 30-23 (the bits that are selected - * by the mask 0x7f800000) represent the exponent. Bits 22-0 (the bits that - * are selected by the mask 0x007fffff) represent the significand (sometimes - * called the mantissa) of the floating-point number. - * - * If the argument is positive infinity, the result is 0x7f800000. - * If the argument is negative infinity, the result is 0xff800000. - * If the argument is NaN, the result is the integer representing the - * actual NaN value. Unlike the floatToIntBits method, intToRawIntBits - * does not collapse all the bit patterns encoding a NaN to a single - * "canonical" NaN value. - * - * In all cases, the result is an integer that, when given to the - * intBitsToFloat(int) method, will produce a floating-point value the same - * as the argument to floatToRawIntBits. - * @param the float to convert to a raw int - * @returns the raw int value of the float - */ - static int floatToRawIntBits( float value ); - - /** - * Returns the float value corresponding to a given bit representation. The - * argument is considered to be a representation of a floating-point value - * according to the IEEE 754 floating-point "single format" bit layout. - * - * If the argument is 0x7f800000, the result is positive infinity. - * If the argument is 0xff800000, the result is negative infinity. - * If the argument is any value in the range 0x7f800001 through 0x7fffffff - * or in the range 0xff800001 through 0xffffffff, the result is a NaN. No - * IEEE 754 floating-point operation provided by C++ can distinguish - * between two NaN values of the same type with different bit patterns. - * Distinct values of NaN are only distinguishable by use of the - * Float::floatToRawIntBits method. - * - * @param bits - the bits of the float encoded as a float - * @return a new float created from the int bits. - */ - static float intBitsToFloat( int bits ); - - /** - * @param value - The float to check. - * @returns true if the float is equal to infinity. - */ - static bool isInfinite( float value ); - - /** - * @param value - The float to check. - * @returns true if the float is equal to NaN. - */ - static bool isNaN( float value ); - - /** - * Returns a new float initialized to the value represented by the - * specified string, as performed by the valueOf method of class Float. - * @param value - the string to parse - * @returns a float parsed from the string - * @throw NumberFormatException - */ - static float parseFloat( const std::string& value ) - throw ( exceptions::NumberFormatException ); - - /** - * Returns a hexadecimal string representation of the float argument. All - * characters mentioned below are ASCII characters. - * - * * If the argument is NaN, the result is the string "NaN". - * * Otherwise, the result is a string that represents the sign and magnitude - * (absolute value) of the argument. If the sign is negative, the first - * character of the result is '-'; if the sign is positive, no sign - * character appears in the result. As for the magnitude m: - * o If m is infinity, it is represented by the string "Infinity"; thus, - * positive infinity produces the result "Infinity" and negative - * infinity produces the result "-Infinity". - * o If m is zero, it is represented by the string "0x0.0p0"; thus, - * negative zero produces the result "-0x0.0p0" and positive zero - * produces the result "0x0.0p0". - * o If m is a float value with a normalized representation, substrings - * are used to represent the significand and exponent fields. The - * significand is represented by the characters "0x1." followed by a - * lowercase hexadecimal representation of the rest of the - * significand as a fraction. Trailing zeros in the hexadecimal - * representation are removed unless all the digits are zero, in which - * case a single zero is used. Next, the exponent is represented by - * "p" followed by a decimal string of the unbiased exponent as if - * produced by a call to Integer.toString on the exponent value. - * o If m is a float value with a subnormal representation, the - * significand is represented by the characters "0x0." followed by a - * hexadecimal representation of the rest of the significand as a - * fraction. Trailing zeros in the hexadecimal representation are - * removed. Next, the exponent is represented by "p-126". Note that - * there must be at least one nonzero digit in a subnormal significand. - * - * @param value - The float to convert to a string - * @returns the Hex formatted float string. - */ - static std::string toHexString( float value ); - - /** - * Returns a string representation of the float argument. All characters - * mentioned below are ASCII characters. - * - * If the argument is NaN, the result is the string "NaN". - * Otherwise, the result is a string that represents the sign and magnitude - * (absolute value) of the argument. If the sign is negative, the first - * character of the result is '-'; if the sign is positive, no - * sign character appears in the result. As for the magnitude m: - * o If m is infinity, it is represented by the characters "Infinity"; thus, - * positive infinity produces the result "Infinity" and negative infinity - * produces the result "-Infinity". - * o If m is zero, it is represented by the characters "0.0"; thus, negative - * zero produces the result "-0.0" and positive zero produces the result - * "0.0". - * o If m is greater than or equal to 10-3 but less than 107, then it is - * represented as the integer part of m, in decimal form with no leading - * zeroes, followed by '.', followed by one or more decimal digits - * representing the fractional part of m. - * o If m is less than 10-3 or greater than or equal to 107, then it is - * represented in so-called "computerized scientific notation." Let n be - * the unique integer such that 10n <= m < 10n+1; then let a be the - * mathematically exact quotient of m and 10n so that 1 <= a < 10. - * The magnitude is then represented as the integer part of a, as a - * single decimal digit, followed by '.', followed by decimal digits - * representing the fractional part of a, followed by the letter 'E', - * followed by a representation of n as a decimal integer, as produced - * by the method Integer.toString(int). - * @param value - The float to convert to a string - * @returns the formatted float string. - */ - static std::string toString( float value ); - - /** - * Returns a Float instance representing the specified float value. - * @param value - float to wrap - * @returns new Float instance wrapping the primitive value - */ - static Float valueOf( float value ); - - /** - * Returns a Float instance that wraps a primtive float which is parsed - * from the string value passed. - * - * @param value - the string to parse - * @returns a new Float instance wrapping the float parsed from value - * @throws NumberFormatException on error. - */ - static Float valueOf( const std::string& value ) - throw ( exceptions::NumberFormatException ); - - private: - - static const unsigned int SINGLE_EXPONENT_MASK = 0x7F800000; - static const unsigned int SINGLE_MANTISSA_MASK = 0x007FFFFF; - static const unsigned int SINGLE_NAN_BITS = (SINGLE_EXPONENT_MASK | 0x00400000); - - }; - -}} - -#endif /*_DECAF_LANG_FLOAT_H_*/
diff --git a/src/decaf/src/main/decaf/lang/Integer.cpp b/src/decaf/src/main/decaf/lang/Integer.cpp deleted file mode 100644 index 439d2b0..0000000 --- a/src/decaf/src/main/decaf/lang/Integer.cpp +++ /dev/null
@@ -1,475 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <decaf/lang/Integer.h> -#include <decaf/lang/Character.h> -#include <sstream> - -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; - -//////////////////////////////////////////////////////////////////////////////// -Integer::Integer( int value ) { - this->value = value; -} - -//////////////////////////////////////////////////////////////////////////////// -Integer::Integer( const std::string& value ) throw( exceptions::NumberFormatException ) { - this->value = parseInt( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Integer::compareTo( const Integer& i ) const { - return this->value < i.value ? -1 : this->value == i.value ? 0 : 1; -} - -//////////////////////////////////////////////////////////////////////////////// -int Integer::compareTo( const int& i ) const { - return this->value < i ? -1 : this->value == i ? 0 : 1; -} - -//////////////////////////////////////////////////////////////////////////////// -int Integer::bitCount( int value ) { - - if( value == 0 ) { - return 0; - } - - unsigned int uvalue = (unsigned int)value; - - // 32-bit recursive reduction using SWAR... - // but first step is mapping 2-bit values - // into sum of 2 1-bit values in sneaky way - uvalue -= ((uvalue >> 1) & 0x55555555); - uvalue = (((uvalue >> 2) & 0x33333333) + (uvalue & 0x33333333)); - uvalue = (((uvalue >> 4) + uvalue) & 0x0F0F0F0F); - uvalue += (uvalue >> 8); - uvalue += (uvalue >> 16); - return(uvalue & 0x0000003F); -} - -//////////////////////////////////////////////////////////////////////////////// -int Integer::reverseBytes( int value ) { - - if( value == 0 ) { - return 0; - } - - unsigned int uvalue = (unsigned int)value; - - unsigned int b3 = uvalue >> 24; - unsigned int b2 = (uvalue >> 8) & 0xFF00; - unsigned int b1 = (uvalue & 0xFF00) << 8; - unsigned int b0 = uvalue << 24; - return (b0 | b1 | b2 | b3); -} - -//////////////////////////////////////////////////////////////////////////////// -int Integer::reverse( int value ) { - - if( value == 0 ) { - return 0; - } - - unsigned int uvalue = (unsigned int)value; - - uvalue = (((uvalue & 0xAAAAAAAA) >> 1) | ((uvalue & 0x55555555) << 1)); - uvalue = (((uvalue & 0xCCCCCCCC) >> 2) | ((uvalue & 0x33333333) << 2)); - uvalue = (((uvalue & 0xF0F0F0F0) >> 4) | ((uvalue & 0x0F0F0F0F) << 4)); - uvalue = (((uvalue & 0xFF00FF00) >> 8) | ((uvalue & 0x00FF00FF) << 8)); - return ((uvalue >> 16) | (uvalue << 16)); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Integer::toString() const { - return Integer::toString( this->value, 10 ); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Integer::toString( int value ) { - return Integer::toString( value, 10 ); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Integer::toString( int value, int radix ) { - - if( radix < Character::MIN_RADIX || radix > Character::MAX_RADIX ) { - radix = 10; - } - - if( value == 0 ) { - return "0"; - } - - int count = 2, j = value; - bool negative = value < 0; - if( !negative ) { - count = 1; - j = -value; - } - - while( (value /= radix) != 0 ) { - count++; - } - - // Save length and allocate a new buffer for the string, add one - // more for the null character. - int length = count; - char* buffer = new char[length + 1]; - - do { - int ch = 0 - ( j % radix ); - if( ch > 9 ) { - ch = ch - 10 + 'a'; - } else { - ch += '0'; - } - buffer[--count] = (char)ch; - } while( (j /= radix) != 0 ); - - if( negative ) { - buffer[0] = '-'; - } - - // Ensure there's a null - buffer[length] = 0; - std::string result( &buffer[0] ); - delete [] buffer; - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Integer::toBinaryString( int value ) { - - int count = 1; - int j = value; - - if( value < 0 ) { - count = 32; - } else { - while ( (j >>= 1) != 0) { - count++; - } - } - - // Save length and allocate a new buffer for the string, add one - // more for the null character. - int length = count; - char* buffer = new char[length + 1]; - - do { - buffer[--count] = (char)( (value & 1) + '0' ); - value >>= 1; - } while( count > 0 ); - - // Ensure there's a null - buffer[length] = 0; - std::string result( &buffer[0] ); - delete [] buffer; - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Integer::toOctalString( int value ) { - - int count = 1, j = value; - - if( value < 0 ) { - count = 11; - } else { - while ( (j >>= 3) != 0 ) { - count++; - } - } - - // Save length and allocate a new buffer for the string, add one - // more for the null character. - int length = count; - char* buffer = new char[length + 1]; - - do { - buffer[--count] = (char)( (value & 7) + '0' ); - value >>= 3; - } while( count > 0 ); - - // Ensure there's a null - buffer[length] = 0; - std::string result( &buffer[0] ); - delete [] buffer; - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Integer::toHexString( int value ) { - - int count = 1; - int j = value; - - if( value < 0 ) { - count = 8; - } else { - while( (j >>= 4) != 0 ) { - count++; - } - } - - // Save length and allocate a new buffer for the string, add one - // more for the null character. - int length = count; - char* buffer = new char[length + 1]; - - do { - int t = value & 15; - if( t > 9 ) { - t = t - 10 + 'a'; - } else { - t += '0'; - } - buffer[--count] = (char)t; - value >>= 4; - } while( count > 0 ); - - // Ensure there's a null - buffer[length] = 0; - std::string result( &buffer[0] ); - delete [] buffer; - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -int Integer::parseInt( const std::string& value ) - throw ( exceptions::NumberFormatException ) { - - return Integer::parseInt( value, 10 ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Integer::parseInt( const std::string& value, int radix ) - throw ( exceptions::NumberFormatException ) { - - if( radix < Character::MIN_RADIX || - radix > Character::MAX_RADIX ) { - throw NumberFormatException( - __FILE__, __LINE__, - "Integer:decode - Invalid radix" ); - } - - int length = value.length(), i = 0; - if( length == 0 ) { - throw NumberFormatException( - __FILE__, __LINE__, - "Integer:decode - Invalid: zero length string"); - } - - bool negative = value[i] == '-'; - if( negative && ++i == length ) { - throw NumberFormatException( - __FILE__, __LINE__, - "Integer:decode - Invalid only a minus sign given"); - } - - return Integer::parse( value, i, radix, negative ); -} - -//////////////////////////////////////////////////////////////////////////////// -Integer Integer::valueOf( const std::string& value ) - throw ( exceptions::NumberFormatException ) { - - return Integer( Integer::parseInt( value ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -Integer Integer::valueOf( const std::string& value, int radix ) - throw ( exceptions::NumberFormatException ) { - - return Integer( Integer::parseInt( value, radix ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -Integer Integer::decode( const std::string& value ) - throw ( exceptions::NumberFormatException ) { - - int length = value.length(), i = 0; - if( length == 0 ) { - throw NumberFormatException( - __FILE__, __LINE__, - "Integer:decode - Invalid zero size string"); - } - - char firstDigit = value[i]; - bool negative = firstDigit == '-'; - if( negative ) { - if( length == 1 ) { - throw NumberFormatException( - __FILE__, __LINE__, - "Integer:decode - Invalid zero string, minus only"); - } - - firstDigit = value[++i]; - } - - int base = 10; - if( firstDigit == '0' ) { - if( ++i == length ) { - return valueOf( 0 ); - } - - if( ( firstDigit = value[i] ) == 'x' || firstDigit == 'X' ) { - if( i == length ) { - throw NumberFormatException( - __FILE__, __LINE__, - "Integer:decode - Invalid zero string, minus only"); - } - i++; - base = 16; - } else { - base = 8; - } - } else if( firstDigit == '#' ) { - if( i == length ) { - throw NumberFormatException( - __FILE__, __LINE__, - "Integer:decode - Invalid zero string, minus only"); - } - i++; - base = 16; - } - - int result = parse( value, i, base, negative ); - return valueOf( result ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Integer::parse( const std::string& value, int offset, - int radix, bool negative ) - throw ( exceptions::NumberFormatException ) { - - int max = Integer::MIN_VALUE / radix; - int result = 0, length = value.size(); - - while( offset < length ) { - int digit = Character::digit( value[offset++], radix ); - if( digit == -1 ) { - throw NumberFormatException( - __FILE__, __LINE__, - "Integer::parse - number string is invalid: ", - value.c_str() ); - } - if( max > result ) { - throw NumberFormatException( - __FILE__, __LINE__, - "Integer::parse - number string is invalid: ", - value.c_str() ); - } - int next = result * radix - digit; - if( next > result ) { - throw NumberFormatException( - __FILE__, __LINE__, - "Integer::parse - number string is invalid: ", - value.c_str() ); - } - result = next; - } - if( !negative ) { - result = -result; - if( result < 0 ) { - throw NumberFormatException( - __FILE__, __LINE__, - "Integer::parse - number string is invalid: ", - value.c_str() ); - } - } - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -int Integer::highestOneBit( int value ) { - - if( value == 0 ) { - return 0; - } - - unsigned int uvalue = (unsigned int)value; - - uvalue |= (uvalue >> 1); - uvalue |= (uvalue >> 2); - uvalue |= (uvalue >> 4); - uvalue |= (uvalue >> 8); - uvalue |= (uvalue >> 16); - return ( uvalue & ~(uvalue >> 1)); -} - -//////////////////////////////////////////////////////////////////////////////// -int Integer::lowestOneBit( int value ) { - if( value == 0 ) { - return 0; - } - - unsigned int uvalue = (unsigned int)value; - return ( uvalue & (-uvalue) ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Integer::numberOfLeadingZeros( int value ) { - - if( value == 0 ) { - return 0; - } - - unsigned int uvalue = (unsigned int)value; - - value |= value >> 1; - value |= value >> 2; - value |= value >> 4; - value |= value >> 8; - value |= value >> 16; - return Integer::bitCount( ~uvalue ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Integer::numberOfTrailingZeros( int value ) { - if( value == 0 ) { - return 0; - } - - unsigned int uvalue = (unsigned int)value; - return bitCount( (uvalue & -uvalue) - 1 ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Integer::rotateLeft( int value, int distance ) { - unsigned int i = (unsigned int)value; - int j = distance & 0x1F; - return ( i << j ) | ( i >> (-j & 0x1F ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Integer::rotateRight( int value, int distance ) { - unsigned int i = (unsigned int)value; - int j = distance & 0x1F; - return ( i >> j ) | ( i << (-j & 0x1F ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Integer::signum( int value ) { - return ( value == 0 ? 0 : ( value < 0 ? -1 : 1 ) ); -}
diff --git a/src/decaf/src/main/decaf/lang/Integer.h b/src/decaf/src/main/decaf/lang/Integer.h deleted file mode 100644 index 77c8edc..0000000 --- a/src/decaf/src/main/decaf/lang/Integer.h +++ /dev/null
@@ -1,516 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_INTEGER_H_ -#define _DECAF_LANG_INTEGER_H_ - -#include <decaf/util/Config.h> -#include <decaf/lang/Number.h> -#include <decaf/lang/Comparable.h> -#include <string> -#include <decaf/lang/exceptions/NumberFormatException.h> - -namespace decaf{ -namespace lang{ - - class DECAF_API Integer : public Number, - public Comparable<Integer>, - public Comparable<int> { - private: - - // The primitve Integer value. - int value; - - public: - - /** The size in bits of the primitive int type */ - static const int SIZE = 32; - - /** The maximum value that the primitive type can hold */ - static const int MAX_VALUE = (int)0x7FFFFFFF; - - /** The minimum value that the primitive type can hold */ - static const int MIN_VALUE = (int)0x80000000; - - public: - - /** - * @param the primitive value to wrap - */ - Integer( int value ); - - /** - * @param the base 10 encoded string to decode to sn int and wrap. - * @throws NumberFormatException - */ - Integer( const std::string& value ) throw( exceptions::NumberFormatException ); - - virtual ~Integer() {} - - /** - * Compares this Integer instance with another. - * @param i - the Integer instance to be compared - * @return zero if this object represents the same integer value as the - * argument; a positive value if this object represents a value greater - * than the passed in value, and -1 if this object repesents a value - * less than the passed in value. - */ - virtual int compareTo( const Integer& i ) const; - - /** - * @param i - the Integer object to compare against. - * @returns true if the two Integer Objects have the same value. - */ - bool equals( const Integer& i ) const { - return this->value == i.value; - } - - /** - * Compares equality between this object and the one passed. - * @param i - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const Integer& i ) const { - return this->value == i.value; - } - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param i - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const Integer& i ) const { - return this->value < i.value; - } - - /** - * Compares this Integer instance with another. - * @param i - the Integer instance to be compared - * @return zero if this object represents the same integer value as the - * argument; a positive value if this object represents a value greater - * than the passed in value, and -1 if this object repesents a value - * less than the passed in value. - */ - virtual int compareTo( const int& i ) const; - - /** - * @param i - the Integer object to compare against. - * @returns true if the two Integer Objects have the same value. - */ - bool equals( const int& i ) const { - return this->value == i; - } - - /** - * Compares equality between this object and the one passed. - * @param i - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const int& i ) const { - return this->value == i; - } - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param i - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const int& i ) const { - return this->value < i; - } - - /** - * @returns this Interger Object as a String Representation - */ - std::string toString() const; - - /** - * Answers the double value which the receiver represents - * @return double the value of the receiver. - */ - virtual double doubleValue() const { - return (double)this->value; - } - - /** - * Answers the float value which the receiver represents - * @return float the value of the receiver. - */ - virtual float floatValue() const { - return (float)this->value; - } - - /** - * Answers the byte value which the receiver represents - * @return int the value of the receiver. - */ - virtual unsigned char byteValue() const { - return (unsigned char)this->value; - } - - /** - * Answers the short value which the receiver represents - * @return int the value of the receiver. - */ - virtual short shortValue() const { - return (short)this->value; - } - - /** - * Answers the int value which the receiver represents - * @return int the value of the receiver. - */ - virtual int intValue() const { - return this->value; - } - - /** - * Answers the long value which the receiver represents - * @return long the value of the receiver. - */ - virtual long long longValue() const { - return (long long)this->value; - } - - public: // Statics - - /** - * Decodes a String into a Integer. Accepts decimal, hexadecimal, and octal - * numbers given by the following grammar: - * - * The sequence of characters following an (optional) negative sign and/or - * radix specifier ("0x", "0X", "#", or leading zero) is parsed as by the - * Integer.parseInteger method with the indicated radix (10, 16, or 8). This - * sequence of characters must represent a positive value or a - * NumberFormatException will be thrown. The result is negated if first - * character of the specified String is the minus sign. No whitespace - * characters are permitted in the string. - * @param value - The string to decode - * @returns a Integer object containing the decoded value - * @throws NumberFomatException if the string is not formatted correctly. - */ - static Integer decode( const std::string& value ) - throw ( exceptions::NumberFormatException ); - - /** - * Returns the value obtained by reversing the order of the bytes in the - * two's complement representation of the specified int value. - * @param value - the int whose bytes we are to reverse - * @return the reversed int. - */ - static int reverseBytes( int value ); - - /** - * Returns the value obtained by reversing the order of the bits in the - * two's complement binary representation of the specified int value. - * @param value - the value whose bits are to be reversed - * @returns the reversed bits int. - */ - static int reverse( int value ); - - /** - * Parses the string argument as a signed int in the radix specified by - * the second argument. The characters in the string must all be digits, - * of the specified radix (as determined by whether - * Character.digit(char, int) returns a nonnegative value) except that the - * first character may be an ASCII minus sign '-' to indicate a negative - * value. The resulting byte value is returned. - * - * An exception of type NumberFormatException is thrown if any of the - * following situations occurs: - * * The first argument is null or is a string of length zero. - * * The radix is either smaller than Character.MIN_RADIX or larger than - * Character.MAX_RADIX. - * * Any character of the string is not a digit of the specified radix, - * except that the first character may be a minus sign '-' ('\u002D') - * provided that the string is longer than length 1. - * * The value represented by the string is not a value of type int. - * - * @param s - the String containing the int representation to be parsed - * @param radix - the radix to be used while parsing s - * @return the int represented by the string argument in the specified radix. - * @throws NumberFormatException - If String does not contain a parsable int. - */ - static int parseInt( const std::string& s, int radix ) - throw ( exceptions::NumberFormatException ); - - /** - * Parses the string argument as a signed decimal int. The characters - * in the string must all be decimal digits, except that the first - * character may be an ASCII minus sign '-' ('\u002D') to indicate a - * negative value. The resulting int value is returned, exactly as if - * the argument and the radix 10 were given as arguments to the - * parseInteger( const std::string, int ) method. - * @param s - String to convert to a int - * @returns the converted int value - * @throws NumberFormatException if the string is not a int. - */ - static int parseInt( const std::string& s ) - throw ( exceptions::NumberFormatException ); - - /** - * Returns a Integer instance representing the specified int value. - * @param value - the int to wrap - * @return the new Integer object wrapping value. - */ - static Integer valueOf( int value ) { - return Integer( value ); - } - - /** - * Returns a Integer object holding the value given by the specified - * std::string. The argument is interpreted as representing a signed - * decimal int, exactly as if the argument were given to the - * parseInt( std::string ) method. The result is a Integer object that - * represents the int value specified by the string. - * @param value - std::string to parse as base 10 - * @return new Integer Object wrapping the primitive - * @throws NumberFormatException if the string is not a decimal int. - */ - static Integer valueOf( const std::string& value ) - throw ( exceptions::NumberFormatException ); - - /** - * Returns a Integer object holding the value extracted from the specified - * std::string when parsed with the radix given by the second argument. - * The first argument is interpreted as representing a signed int in the - * radix specified by the second argument, exactly as if the argument were - * given to the parseInt( std::string, int ) method. The result is a - * Integer object that represents the int value specified by the string. - * @param value - std::string to parse as base ( radix ) - * @param radix - base of the string to parse. - * @return new Integer Object wrapping the primitive - * @throws NumberFormatException if the string is not a valid int. - */ - static Integer valueOf( const std::string& value, int radix ) - throw ( exceptions::NumberFormatException ); - - /** - * Returns the number of one-bits in the two's complement binary - * representation of the specified int value. This function is sometimes - * referred to as the population count. - * @param value - the int to count - * @return the number of one-bits in the two's complement binary - * representation of the specified int value. - */ - static int bitCount( int value ); - - /** - * Converts the int to a String representation - * @param int to convert - * @return string representation - */ - static std::string toString( int value ); - - /** - * Returns a string representation of the first argument in the radix - * specified by the second argument. - * - * If the radix is smaller than Character.MIN_RADIX or larger than - * Character.MAX_RADIX, then the radix 10 is used instead. - * - * If the first argument is negative, the first element of the result is - * the ASCII minus character '-'. If the first argument is not - * negative, no sign character appears in the result. - * - * The remaining characters of the result represent the magnitude of the - * first argument. If the magnitude is zero, it is represented by a single - * zero character '0'; otherwise, the first character of the - * representation of the magnitude will not be the zero character. The - * following ASCII characters are used as digits: - * - * 0123456789abcdefghijklmnopqrstuvwxyz - * - * @param value - the int to convert to a string - * @param radix - the radix to format the string in - * @returns an int formatted to the string value of the radix given. - */ - static std::string toString( int value, int radix ); - - /** - * Returns a string representation of the integer argument as an unsigned - * integer in base 16. - * - * The unsigned integer value is the argument plus 2^32 if the argument is - * negative; otherwise, it is equal to the argument. This value is converted - * to a string of ASCII digits in hexadecimal (base 16) with no extra leading - * 0s. If the unsigned magnitude is zero, it is represented by a single zero - * character '0'; otherwise, the first character of the representation of the - * unsigned magnitude will not be the zero character. The following characters - * are used as hexadecimal digits: - * - * 0123456789abcdef - * - * If uppercase letters are desired, the toUpperCase() method may be called - * on the result: - * @param value - the int to be translated to an Octal string - * @returns the unsigned int value as a Octal string - */ - static std::string toHexString( int value ); - - /** - * Returns a string representation of the integer argument as an unsigned - * integer in base 8. - * - * The unsigned integer value is the argument plus 2^32 if the argument is - * negative; otherwise, it is equal to the argument. This value is converted - * to a string of ASCII digits in octal (base 8) with no extra leading 0s. - * - * If the unsigned magnitude is zero, it is represented by a single zero - * character '0'; otherwise, the first character of the representation - * of the unsigned magnitude will not be the zero character. The following - * characters are used as octal digits: - * - * 01234567 - * - * @param value - the int to be translated to an Octal string - * @returns the unsigned int value as a Octal string - */ - static std::string toOctalString( int value ); - - /** - * Returns a string representation of the integer argument as an unsigned - * integer in base 2. - * - * The unsigned integer value is the argument plus 2^32 if the argument is - * negative; otherwise it is equal to the argument. This value is converted - * to a string of ASCII digits in binary (base 2) with no extra leading 0s. - * If the unsigned magnitude is zero, it is represented by a single zero - * character '0' ('\u0030'); otherwise, the first character of the - * representation of the unsigned magnitude will not be the zero character. - * The characters '0' ('\u0030') and '1' ('\u0031') are used as binary - * digits. - * @param value - the int to be translated to a binary string - * @returns the unsigned int value as a binary string - */ - static std::string toBinaryString( int value ); - - /** - * Returns an int value with at most a single one-bit, in the position of - * the highest-order ("leftmost") one-bit in the specified int value. - * Returns zero if the specified value has no one-bits in its two's - * complement binary representation, that is, if it is equal to zero. - * @param value - the int to be inspected - * @return an int value with a single one-bit, in the position of the - * highest-order one-bit in the specified value, or zero if the specified - * value is itself equal to zero. - */ - static int highestOneBit( int value ); - - /** - * Returns an int value with at most a single one-bit, in the position of - * the lowest-order ("rightmost") one-bit in the specified int value. - * Returns zero if the specified value has no one-bits in its two's - * complement binary representation, that is, if it is equal to zero. - * @param value - the int to be inspected - * @return an int value with a single one-bit, in the position of the - * lowest-order one-bit in the specified value, or zero if the specified - * value is itself equal to zero. - */ - static int lowestOneBit( int value ); - - /** - * Returns the number of zero bits preceding the highest-order ("leftmost") - * one-bit in the two's complement binary representation of the specified - * int value. Returns 32 if the specified value has no one-bits in its two's - * complement representation, in other words if it is equal to zero. - * - * Note that this method is closely related to the logarithm base 2. For - * all positive int values x: - * - * * floor( log2(x)) = 31 - numberOfLeadingZeros(x) - * * ceil( log2(x)) = 32 - numberOfLeadingZeros(x - 1) - * - * @param value - the int to be inspected - * @return the number of zero bits preceding the highest-order ("leftmost") - * one-bit in the two's complement binary representation of the specified - * int value, or 32 if the value is equal to zero. - */ - static int numberOfLeadingZeros( int value ); - - /** - * Returns the number of zero bits following the lowest-order ("rightmost") - * one-bit in the two's complement binary representation of the specified - * int value. Returns 32 if the specified value has no one-bits in its - * two's complement representation, in other words if it is equal to zero. - * @param value - the int to be inspected - * @return the number of zero bits following the lowest-order ("rightmost") - * one-bit in the two's complement binary representation of the specified - * int value, or 32 if the value is equal to zero. - */ - static int numberOfTrailingZeros( int value ); - - /** - * Returns the value obtained by rotating the two's complement binary - * representation of the specified int value left by the specified number - * of bits. (Bits shifted out of the left hand, or high-order, side reenter - * on the right, or low-order.) - * - * Note that left rotation with a negative distance is equivalent to right - * rotation: rotateLeft(val, -distance) == rotateRight(val, distance). Note - * also that rotation by any multiple of 32 is a no-op, so all but the last - * five bits of the rotation distance can be ignored, even if the distance - * is negative: rotateLeft(val, distance) == rotateLeft(val, distance & 0x1F). - * @param value - the int to be inspected - * @param distance - the number of bits to rotate - * @return the value obtained by rotating the two's complement binary - * representation of the specified int value left by the specified number - * of bits. - */ - static int rotateLeft( int value, int distance ); - - /** - * Returns the value obtained by rotating the two's complement binary - * representation of the specified int value right by the specified number - * of bits. (Bits shifted out of the right hand, or low-order, side reenter - * on the left, or high-order.) - * - * Note that right rotation with a negative distance is equivalent to left - * rotation: rotateRight(val, -distance) == rotateLeft(val, distance). Note - * also that rotation by any multiple of 32 is a no-op, so all but the last - * five bits of the rotation distance can be ignored, even if the distance is - * negative: rotateRight(val, distance) == rotateRight(val, distance & 0x1F). - * @param value - the int to be inspected - * @param distance - the number of bits to rotate - * @return the value obtained by rotating the two's complement binary - * representation of the specified int value right by the specified number - * of bits. - */ - static int rotateRight( int value, int distance ); - - /** - * Returns the signum function of the specified int value. (The return value - * is -1 if the specified value is negative; 0 if the specified value is zero; - * and 1 if the specified value is positive.) - * @param value - the int to be inspected - * @return the signum function of the specified int value. - */ - static int signum( int value ); - - private: - - static int parse( const std::string& value, int offset, - int radix, bool negative ) - throw ( exceptions::NumberFormatException ); - - }; - -}} - -#endif /*_DECAF_LANG_INTEGER_H_*/
diff --git a/src/decaf/src/main/decaf/lang/Iterable.h b/src/decaf/src/main/decaf/lang/Iterable.h deleted file mode 100644 index e602117..0000000 --- a/src/decaf/src/main/decaf/lang/Iterable.h +++ /dev/null
@@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_ITERABLE_H_ -#define _DECAF_LANG_ITERABLE_H_ - -#include <decaf/util/Config.h> - -namespace decaf{ -namespace lang{ - - /** - * Implementing this interface allows an object to be cast to an Iterable - * type for generic collections API calls. - */ - template< typename T > - class DECAF_API Iterable { - public: - - virtual ~Iterable() {} - - /** - * @returns an iterator over a set of elements of type T. - */ - T iterator() = 0; - const T iterator() = 0; - - }; - -}} - -#endif /*_DECAF_LANG_ITERABLE_H_*/
diff --git a/src/decaf/src/main/decaf/lang/Long.cpp b/src/decaf/src/main/decaf/lang/Long.cpp deleted file mode 100644 index 0dba951..0000000 --- a/src/decaf/src/main/decaf/lang/Long.cpp +++ /dev/null
@@ -1,493 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "Long.h" -#include <decaf/lang/Character.h> -#include <sstream> - -using namespace decaf; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -Long::Long( long long value ) { - this->value = value; -} - -//////////////////////////////////////////////////////////////////////////////// -Long::Long( const std::string& value ) throw( exceptions::NumberFormatException ) { - this->value = parseLong( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Long::compareTo( const Long& l ) const { - return this->value < l.value ? -1 : this->value == l.value ? 0 : 1; -} - -//////////////////////////////////////////////////////////////////////////////// -int Long::compareTo( const long long& l ) const { - return this->value < l ? -1 : this->value == l ? 0 : 1; -} - -//////////////////////////////////////////////////////////////////////////////// -int Long::bitCount( long long value ) { - - if( value == 0 ) { - return 0; - } - - unsigned long long uvalue = (unsigned long long)value; - - uvalue = (uvalue & 0x5555555555555555LL) + ((uvalue >> 1) & 0x5555555555555555LL); - uvalue = (uvalue & 0x3333333333333333LL) + ((uvalue >> 2) & 0x3333333333333333LL); - // adjust for 64-bit integer - unsigned int i = (unsigned int)( (uvalue >> 32) + uvalue ); - i = (i & 0x0F0F0F0F) + ((i >> 4) & 0x0F0F0F0F); - i = (i & 0x00FF00FF) + ((i >> 8) & 0x00FF00FF); - i = (i & 0x0000FFFF) + ((i >> 16) & 0x0000FFFF); - return i; -} - -//////////////////////////////////////////////////////////////////////////////// -Long Long::decode( const std::string& value ) - throw ( exceptions::NumberFormatException ) { - - int length = value.length(), i = 0; - if( length == 0 ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "Long::decode - Zero length string given." ); - } - - char firstDigit = value[i]; - bool negative = firstDigit == '-'; - if( negative ) { - if( length == 1 ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "Long::decode - Invalid length string given.", - value.c_str() ); - } - firstDigit = value[++i]; - } - - int base = 10; - if( firstDigit == '0' ) { - if( ++i == length ) { - return valueOf( 0LL ); - } - if( ( firstDigit = value[i] ) == 'x' || firstDigit == 'X' ) { - if ( i == length ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "Long::decode - Invalid length string given.", - value.c_str() ); - } - i++; - base = 16; - } else { - base = 8; - } - } else if( firstDigit == '#' ) { - if( i == length ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "Long::decode - Invalid length string given.", - value.c_str() ); - } - i++; - base = 16; - } - - long long result = parse( value, i, base, negative ); - return valueOf( result ); -} - -//////////////////////////////////////////////////////////////////////////////// -long long Long::highestOneBit( long long value ) { - - if( value == 0 ) { - return 0; - } - - unsigned long long uvalue = (unsigned long long)value; - - uvalue |= (uvalue >> 1); - uvalue |= (uvalue >> 2); - uvalue |= (uvalue >> 4); - uvalue |= (uvalue >> 8); - uvalue |= (uvalue >> 16); - uvalue |= (uvalue >> 32); - return ( uvalue & ~( uvalue >> 1 ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -long long Long::lowestOneBit( long long value ) { - if( value == 0 ) { - return 0; - } - - unsigned long long uvalue = (unsigned long long)value; - return ( uvalue & (-uvalue) ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Long::numberOfLeadingZeros( long long value ) { - - if( value == 0 ) { - return 0; - } - - unsigned long long uvalue = (unsigned long long)value; - - value |= value >> 1; - value |= value >> 2; - value |= value >> 4; - value |= value >> 8; - value |= value >> 16; - value |= value >> 32; - return Long::bitCount( ~uvalue ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Long::numberOfTrailingZeros( long long value ) { - if( value == 0 ) { - return 0; - } - - unsigned long long uvalue = (unsigned long long)value; - return Long::bitCount( (uvalue & -uvalue) - 1 ); -} - -//////////////////////////////////////////////////////////////////////////////// -long long Long::parseLong( const std::string& value ) - throw ( exceptions::NumberFormatException ) { - - return Long::parseLong( value, 10 ); -} - -//////////////////////////////////////////////////////////////////////////////// -long long Long::parseLong( const std::string& value, int radix ) - throw ( exceptions::NumberFormatException ) { - - if( radix < Character::MIN_RADIX || - radix > Character::MAX_RADIX ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "Long::parseLong - Given Radix is out of range." ); - } - - int length = value.length(); - int i = 0; - - if( length == 0 ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "Long::parseLong - Zero length string is illegal." ); - } - - bool negative = value[i] == '-'; - if( negative && ++i == length ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "Long::parseLong - Only a minus given, string is invalid." ); - } - - return Long::parse( value, i, radix, negative ); -} - -//////////////////////////////////////////////////////////////////////////////// -long long Long::parse( const std::string& value, int offset, - int radix, bool negative ) - throw ( exceptions::NumberFormatException ) { - - long long max = Long::MIN_VALUE / radix; - long long result = 0; - long long length = value.length(); - - while( offset < length ) { - int digit = Character::digit( value[offset++], radix ); - - if( digit == -1 ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "Long::parseLong - String contains no digit characters." ); - } - - if( max > result ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "Long::parseLong - Parsed value greater than max for radix." ); - } - - long long next = result * radix - digit; - - if( next > result ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "Long::parseLong - Only a minus given, string is invalid." ); - } - - result = next; - } - - if( !negative ) { - result = -result; - if( result < 0 ) { - throw exceptions::NumberFormatException( - __FILE__, __LINE__, - "Long::parseLong - Value less than zero, but no minus sign." ); - } - } - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -long long Long::reverseBytes( long long value ) { - - if( value == 0 ) { - return 0; - } - - unsigned long long uvalue = (unsigned long long)value; - - long long b7 = (uvalue >> 56); - long long b6 = (uvalue >> 40) & 0xFF00ULL; - long long b5 = (uvalue >> 24) & 0xFF0000ULL; - long long b4 = (uvalue >> 8) & 0xFF000000ULL; - long long b3 = (uvalue & 0xFF000000ULL) << 8; - long long b2 = (uvalue & 0xFF0000ULL) << 24; - long long b1 = (uvalue & 0xFF00ULL) << 40; - long long b0 = (uvalue << 56); - return ( b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 ); -} - -//////////////////////////////////////////////////////////////////////////////// -long long Long::reverse( long long value ) { - - if( value == 0 ) { - return 0; - } - - unsigned long long uvalue = (unsigned long long)value; - - // From Hacker's Delight, 7-1, Figure 7-1 - uvalue = ( uvalue & 0x5555555555555555ULL ) << 1 | (uvalue >> 1) & - 0x5555555555555555ULL; - uvalue = ( uvalue & 0x3333333333333333ULL ) << 2 | (uvalue >> 2) & - 0x3333333333333333ULL; - uvalue = ( uvalue & 0x0F0F0F0F0F0F0F0FULL ) << 4 | (uvalue >> 4) & - 0x0F0F0F0F0F0F0F0FULL; - - return reverseBytes( uvalue ); -} - -//////////////////////////////////////////////////////////////////////////////// -long long Long::rotateLeft( long long value, int distance ) { - unsigned long long i = (unsigned long long)value; - int j = distance & 0x1F; - return ( i << j ) | ( i >> (-j & 0x1F ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -long long Long::rotateRight( long long value, int distance ) { - unsigned long long i = (unsigned long long)value; - int j = distance & 0x1F; - return ( i >> j ) | ( i << (-j & 0x1F ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Long::signum( long long value ) { - return ( value == 0 ? 0 : ( value < 0 ? -1 : 1 ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Long::toString() const { - return Long::toString( this->value, 10 ); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Long::toString( long long value ) { - return Long::toString( value, 10 ); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Long::toString( long long value, int radix ) { - - if( radix < Character::MIN_RADIX || radix > Character::MAX_RADIX ) { - radix = 10; - } - - if( value == 0 ) { - return "0"; - } - - int count = 2; - long long j = value; - bool negative = value < 0; - - if( !negative ) { - count = 1; - j = -value; - } - - while( (value /= radix) != 0 ) { - count++; - } - - // Save length and allocate a new buffer for the string, add one - // more for the null character. - int length = count; - char* buffer = new char[length + 1]; - - do { - int ch = 0 - ( j % radix ); - if( ch > 9 ) { - ch = ch - 10 + 'a'; - } else { - ch += '0'; - } - buffer[--count] = (char)ch; - } while( (j /= radix) != 0 ); - - if( negative ) { - buffer[0] = '-'; - } - - // Ensure there's a null - buffer[length] = 0; - std::string result( &buffer[0] ); - delete [] buffer; - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Long::toBinaryString( long long value ) { - - int count = 1; - long long j = value; - - if( value < 0 ) { - count = 32; - } else { - while ( (j >>= 1) != 0) { - count++; - } - } - - // Save length and allocate a new buffer for the string, add one - // more for the null character. - int length = count; - char* buffer = new char[length + 1]; - - do { - buffer[--count] = (char)( (value & 1) + '0' ); - value >>= 1; - } while( count > 0 ); - - // Ensure there's a null - buffer[length] = 0; - std::string result( &buffer[0] ); - delete [] buffer; - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Long::toOctalString( long long value ) { - - int count = 1; - long long j = value; - - if( value < 0 ) { - count = 11; - } else { - while ( (j >>= 3) != 0 ) { - count++; - } - } - - // Save length and allocate a new buffer for the string, add one - // more for the null character. - int length = count; - char* buffer = new char[length + 1]; - - do { - buffer[--count] = (char)( (value & 7) + '0' ); - value >>= 3; - } while( count > 0 ); - - // Ensure there's a null - buffer[length] = 0; - std::string result( &buffer[0] ); - delete [] buffer; - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Long::toHexString( long long value ) { - - int count = 1; - long long j = value; - - if( value < 0 ) { - count = 8; - } else { - while( (j >>= 4) != 0 ) { - count++; - } - } - - // Save length and allocate a new buffer for the string, add one - // more for the null character. - int length = count; - char* buffer = new char[length + 1]; - - do { - int t = value & 15; - if( t > 9 ) { - t = t - 10 + 'a'; - } else { - t += '0'; - } - buffer[--count] = (char)t; - value >>= 4; - } while( count > 0 ); - - // Ensure there's a null - buffer[length] = 0; - std::string result( &buffer[0] ); - delete [] buffer; - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -Long Long::valueOf( const std::string& value ) - throw ( exceptions::NumberFormatException ) { - - return Long( Long::parseLong( value ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -Long Long::valueOf( const std::string& value, int radix ) - throw ( exceptions::NumberFormatException ) { - - return Long( Long::parseLong( value, radix ) ); -}
diff --git a/src/decaf/src/main/decaf/lang/Long.h b/src/decaf/src/main/decaf/lang/Long.h deleted file mode 100644 index a715cd1..0000000 --- a/src/decaf/src/main/decaf/lang/Long.h +++ /dev/null
@@ -1,506 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_LONG_H_ -#define _DECAF_LANG_LONG_H_ - -#include <decaf/lang/Number.h> -#include <decaf/lang/Comparable.h> -#include <decaf/lang/exceptions/NumberFormatException.h> -#include <string> - -namespace decaf{ -namespace lang{ - - class DECAF_API Long : public Number, - public Comparable<Long>, - public Comparable<long long> { - private: - - // The primitive long long value - long long value; - - public: - - /** The size in bits of the primitive long long type */ - static const int SIZE = 64; - - /** The maximum value that the primitive type can hold */ - static const long long MAX_VALUE = (long long)0x7FFFFFFFFFFFFFFFLL; - - /** The minimum value that the primitive type can hold */ - static const long long MIN_VALUE = (long long)0x8000000000000000LL; - - public: - - /** - * @param value - the primitive long long to wrap - */ - Long( long long value ); - - /** - * @param value - the long long formated string to wrap - * @thorw NumberFormatException - */ - Long( const std::string& value ) throw( exceptions::NumberFormatException ); - - virtual ~Long() {} - - /** - * Compares this Long instance with another. - * @param l - the Long instance to be compared - * @return zero if this object represents the same integer value as the - * argument; a positive value if this object represents a value greater - * than the passed in value, and -1 if this object repesents a value - * less than the passed in value. - */ - virtual int compareTo( const Long& l ) const; - - /** - * @param l - the Long object to compare against. - * @returns true if the two Integer Objects have the same value. - */ - bool equals( const Long& l ) const { - return this->value == l.value; - } - - /** - * Compares equality between this object and the one passed. - * @param l - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const Long& l ) const { - return this->value == l.value; - } - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param l - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const Long& l ) const { - return this->value < l.value; - } - - /** - * Compares this Long instance with another. - * @param l - the Integer instance to be compared - * @return zero if this object represents the same integer value as the - * argument; a positive value if this object represents a value greater - * than the passed in value, and -1 if this object repesents a value - * less than the passed in value. - */ - virtual int compareTo( const long long& l ) const; - - /** - * @param l - the Long object to compare against. - * @returns true if the two Integer Objects have the same value. - */ - bool equals( const long long& l ) const { - return this->value == l; - } - - /** - * Compares equality between this object and the one passed. - * @param l - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const long long& l ) const { - return this->value == l; - } - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param l - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const long long& l ) const { - return this->value < l; - } - - /** - * @returns this Long Object as a String Representation - */ - std::string toString() const; - - /** - * Answers the double value which the receiver represents - * @return double the value of the receiver. - */ - virtual double doubleValue() const { - return (double)this->value; - } - - /** - * Answers the float value which the receiver represents - * @return float the value of the receiver. - */ - virtual float floatValue() const { - return (float)this->value; - } - - /** - * Answers the byte value which the receiver represents - * @return int the value of the receiver. - */ - virtual unsigned char byteValue() const { - return (unsigned char)this->value; - } - - /** - * Answers the short value which the receiver represents - * @return int the value of the receiver. - */ - virtual short shortValue() const { - return (short)this->value; - } - - /** - * Answers the int value which the receiver represents - * @return int the value of the receiver. - */ - virtual int intValue() const { - return (int)this->value; - } - - /** - * Answers the long value which the receiver represents - * @return long the value of the receiver. - */ - virtual long long longValue() const { - return this->value; - } - - public: - - /** - * Returns the number of one-bits in the two's complement binary - * representation of the specified int value. This function is sometimes - * referred to as the population count. - * @param value - the long long to count - * @return the number of one-bits in the two's complement binary - * representation of the specified long long value. - */ - static int bitCount( long long value ); - - /** - * Decodes a String into a Long. Accepts decimal, hexadecimal, and octal - * numbers given by the following grammar: - * - * The sequence of characters following an (optional) negative sign and/or - * radix specifier ("0x", "0X", "#", or leading zero) is parsed as by the - * Integer.parseInteger method with the indicated radix (10, 16, or 8). This - * sequence of characters must represent a positive value or a - * NumberFormatException will be thrown. The result is negated if first - * character of the specified String is the minus sign. No whitespace - * characters are permitted in the string. - * @param value - The string to decode - * @returns a Long object containing the decoded value - * @throws NumberFomatException if the string is not formatted correctly. - */ - static Long decode( const std::string& value ) - throw ( exceptions::NumberFormatException ); - - /** - * Returns an long long value with at most a single one-bit, in the position - * of the highest-order ("leftmost") one-bit in the specified int value. - * Returns zero if the specified value has no one-bits in its two's - * complement binary representation, that is, if it is equal to zero. - * @param value - the long long to be inspected - * @return an long long value with a single one-bit, in the position of the - * highest-order one-bit in the specified value, or zero if the specified - * value is itself equal to zero. - */ - static long long highestOneBit( long long value ); - - /** - * Returns an long long value with at most a single one-bit, in the position - * of the lowest-order ("rightmost") one-bit in the specified int value. - * Returns zero if the specified value has no one-bits in its two's - * complement binary representation, that is, if it is equal to zero. - * @param value - the long long to be inspected - * @return an long long value with a single one-bit, in the position of the - * lowest-order one-bit in the specified value, or zero if the specified - * value is itself equal to zero. - */ - static long long lowestOneBit( long long value ); - - /** - * Returns the number of zero bits preceding the highest-order ("leftmost") - * one-bit in the two's complement binary representation of the specified - * long long value. Returns 64 if the specified value has no one-bits in its - * two's complement representation, in other words if it is equal to zero. - * - * Note that this method is closely related to the logarithm base 2. For - * all positive int values x: - * - * * floor( log2(x)) = 63 - numberOfLeadingZeros(x) - * * ceil( log2(x)) = 64 - numberOfLeadingZeros(x - 1) - * - * @param value - the long long to be inspected - * @return the number of zero bits preceding the highest-order ("leftmost") - * one-bit in the two's complement binary representation of the specified - * long long value, or 64 if the value is equal to zero. - */ - static int numberOfLeadingZeros( long long value ); - - /** - * Returns the number of zero bits following the lowest-order ("rightmost") - * one-bit in the two's complement binary representation of the specified - * long long value. Returns 64 if the specified value has no one-bits in its - * two's complement representation, in other words if it is equal to zero. - * @param value - the int to be inspected - * @return the number of zero bits following the lowest-order ("rightmost") - * one-bit in the two's complement binary representation of the specified - * long long value, or 64 if the value is equal to zero. - */ - static int numberOfTrailingZeros( long long value ); - - /** - * Parses the string argument as a signed decimal long. The characters in the - * string must all be decimal digits, except that the first character may be - * an ASCII minus sign '-' to indicate a negative value. The resulting long - * value is returned, exactly as if the argument and the radix 10 were given - * as arguments to the parseLong(java.lang.String, int) method. - * - * Note that the characters LL or ULL are not permitted to appear at the end - * of this string as would normally be permitted in a C++ program. - * @param value - String to parse - * @return long long value - * @throws NumberFormatException on invalid string value - */ - static long long parseLong( const std::string& value ) - throw ( exceptions::NumberFormatException ); - - /** - * Returns a Long object holding the value extracted from the specified - * string when parsed with the radix given by the second argument. The - * first argument is interpreted as representing a signed long in the radix - * specified by the second argument, exactly as if the arguments were - * given to the parseLong(std::string, int) method. The result is a - * Long object that represents the long long value specified by the string. - * @param value - String to parse - * @param radix - the base encoding of the string - * @return long long value - * @throws NumberFormatException on invalid string value - */ - static long long parseLong( const std::string& value, int radix ) - throw ( exceptions::NumberFormatException ); - - /** - * Returns the value obtained by reversing the order of the bytes in the - * two's complement representation of the specified long long value. - * @param value - the long long whose bytes we are to reverse - * @return the reversed long long. - */ - static long long reverseBytes( long long value ); - - /** - * Returns the value obtained by reversing the order of the bits in the - * two's complement binary representation of the specified long long value. - * @param value - the value whose bits are to be reversed - * @returns the reversed bits long long. - */ - static long long reverse( long long value ); - - /** - * Returns the value obtained by rotating the two's complement binary - * representation of the specified value left by the specified number - * of bits. (Bits shifted out of the left hand, or high-order, side reenter - * on the right, or low-order.) - * - * Note that left rotation with a negative distance is equivalent to right - * rotation: rotateLeft(val, -distance) == rotateRight(val, distance). Note - * also that rotation by any multiple of 32 is a no-op, so all but the last - * five bits of the rotation distance can be ignored, even if the distance - * is negative: rotateLeft(val, distance) == rotateLeft(val, distance & 0x1F). - * @param value - the long long to be inspected - * @param distance - the number of bits to rotate - * @return the value obtained by rotating the two's complement binary - * representation of the specified value left by the specified number - * of bits. - */ - static long long rotateLeft( long long value, int distance ); - - /** - * Returns the value obtained by rotating the two's complement binary - * representation of the specified value right by the specified number - * of bits. (Bits shifted out of the right hand, or low-order, side reenter - * on the left, or high-order.) - * - * Note that right rotation with a negative distance is equivalent to left - * rotation: rotateRight(val, -distance) == rotateLeft(val, distance). Note - * also that rotation by any multiple of 32 is a no-op, so all but the last - * five bits of the rotation distance can be ignored, even if the distance is - * negative: rotateRight(val, distance) == rotateRight(val, distance & 0x1F). - * @param value - the long long to be inspected - * @param distance - the number of bits to rotate - * @return the value obtained by rotating the two's complement binary - * representation of the specified value right by the specified number - * of bits. - */ - static long long rotateRight( long long value, int distance ); - - /** - * Returns the signum function of the specified value. (The return value - * is -1 if the specified value is negative; 0 if the specified value is zero; - * and 1 if the specified value is positive.) - * @param value - the long long to be inspected - * @return the signum function of the specified long long value. - */ - static int signum( long long value ); - - /** - * Converts the long to a String representation - * @param long to convert - * @return string representation - */ - static std::string toString( long long value ); - - /* - * Returns a string representation of the first argument in the radix - * specified by the second argument. - * - * If the radix is smaller than Character.MIN_RADIX or larger than - * Character.MAX_RADIX, then the radix 10 is used instead. - * - * If the first argument is negative, the first element of the result is - * the ASCII minus character '-'. If the first argument is not - * negative, no sign character appears in the result. - * - * The remaining characters of the result represent the magnitude of the - * first argument. If the magnitude is zero, it is represented by a single - * zero character '0'; otherwise, the first character of the - * representation of the magnitude will not be the zero character. The - * following ASCII characters are used as digits: - * - * 0123456789abcdefghijklmnopqrstuvwxyz - * - * @param value - the long long to convert to a string - * @param radix - the radix to format the string in - * @returns an long long formatted to the string value of the radix given. - */ - static std::string toString( long long value, int radix ); - - /** - * Returns a string representation of the integer argument as an unsigned - * integer in base 16. - * - * The unsigned integer value is the argument plus 2^32 if the argument is - * negative; otherwise, it is equal to the argument. This value is converted - * to a string of ASCII digits in hexadecimal (base 16) with no extra leading - * 0s. If the unsigned magnitude is zero, it is represented by a single zero - * character '0'; otherwise, the first character of the representation of the - * unsigned magnitude will not be the zero character. The following characters - * are used as hexadecimal digits: - * - * 0123456789abcdef - * - * If uppercase letters are desired, the toUpperCase() method may be called - * on the result: - * @param value - the long long to be translated to an Octal string - * @returns the unsigned long long value as a Octal string - */ - static std::string toHexString( long long value ); - - /** - * Returns a string representation of the long long argument as an unsigned - * long long in base 8. - * - * The unsigned long long value is the argument plus 2^32 if the argument is - * negative; otherwise, it is equal to the argument. This value is converted - * to a string of ASCII digits in octal (base 8) with no extra leading 0s. - * - * If the unsigned magnitude is zero, it is represented by a single zero - * character '0'; otherwise, the first character of the representation - * of the unsigned magnitude will not be the zero character. The following - * characters are used as octal digits: - * - * 01234567 - * - * @param value - the long long to be translated to an Octal string - * @returns the unsigned long long value as a Octal string - */ - static std::string toOctalString( long long value ); - - /** - * Returns a string representation of the long long argument as an unsigned - * long long in base 2. - * - * The unsigned long long value is the argument plus 2^32 if the argument is - * negative; otherwise it is equal to the argument. This value is converted - * to a string of ASCII digits in binary (base 2) with no extra leading 0s. - * If the unsigned magnitude is zero, it is represented by a single zero - * character '0'; otherwise, the first character of the - * representation of the unsigned magnitude will not be the zero character. - * The characters '0' and '1' are used as binary - * digits. - * @param value - the long long to be translated to a binary string - * @returns the unsigned long long value as a binary string - */ - static std::string toBinaryString( long long value ); - - /** - * Returns a Long instance representing the specified int value. - * @param value - the long long to wrap - * @return the new Integer object wrapping value. - */ - static Long valueOf( long long value ) { - return Long( value ); - } - - /** - * Returns a Long object holding the value given by the specified - * std::string. The argument is interpreted as representing a signed - * decimal long long, exactly as if the argument were given to the - * parseLong( std::string ) method. The result is a Integer object that - * represents the long long value specified by the string. - * @param value - std::string to parse as base 10 - * @return new Long Object wrapping the primitive - * @throws NumberFormatException if the string is not a decimal long long. - */ - static Long valueOf( const std::string& value ) - throw ( exceptions::NumberFormatException ); - - /** - * Returns a Long object holding the value extracted from the specified - * std::string when parsed with the radix given by the second argument. - * The first argument is interpreted as representing a signed long long in the - * radix specified by the second argument, exactly as if the argument were - * given to the parseLong( std::string, int ) method. The result is a - * Long object that represents the long long value specified by the string. - * @param value - std::string to parse as base ( radix ) - * @param radix - base of the string to parse. - * @return new Long Object wrapping the primitive - * @throws NumberFormatException if the string is not a valid long long. - */ - static Long valueOf( const std::string& value, int radix ) - throw ( exceptions::NumberFormatException ); - - private: - - static long long parse( const std::string& value, int offset, - int radix, bool negative ) - throw ( exceptions::NumberFormatException ); - - }; - -}} - -#endif /*_DECAF_LANG_LONG_H_*/
diff --git a/src/decaf/src/main/decaf/lang/Math.cpp b/src/decaf/src/main/decaf/lang/Math.cpp deleted file mode 100644 index 0e0f978..0000000 --- a/src/decaf/src/main/decaf/lang/Math.cpp +++ /dev/null
@@ -1,502 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <decaf/lang/Math.h> -#include <decaf/lang/Double.h> -#include <decaf/lang/Float.h> -#include <decaf/lang/Integer.h> -#include <decaf/lang/Long.h> -#include <decaf/util/Random.h> - -using namespace decaf; -using namespace decaf::lang; - -#include <cmath> -#include <cstdlib> - -//////////////////////////////////////////////////////////////////////////////// -const double Math::E = 2.718281828459045; -const double Math::PI = 3.141592653589793; - -//////////////////////////////////////////////////////////////////////////////// -float Math::abs( float value ) { - return Float::intBitsToFloat( Float::floatToIntBits( value ) & 0x7FFFFFFF ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::abs( double value ) { - return Double::longBitsToDouble( Double::doubleToLongBits( value ) & 0x7FFFFFFFFFFFFFFFULL ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::acos( double value ) { - return std::acos( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::asin( double value ) { - return std::asin( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::atan( double value ) { - return std::atan( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::atan2( double x, double y ) { - return std::atan2( x, y ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::random() { - static util::Random random; - return random.nextDouble(); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::cbrt( double value ) { - - if( Double::isNaN( value ) ) { - return Double::NaN; - } else if( Double::isInfinite( value ) ) { - return value; - } else if( !( value < 0 || value > 0 ) ) { - return value; - } - - return ::cbrt( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::cos( double value ) { - - if( Double::isNaN( value ) || Double::isInfinite( value ) ) { - return Double::NaN; - } - - return std::cos( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::cosh( double value ) { - - if( Double::isNaN( value ) ) { - return Double::NaN; - } else if( Double::isInfinite( value ) ) { - return Double::POSITIVE_INFINITY; - } else if( value == 0.0 ) { - return 1.0; - } - - return std::cosh( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::sin( double value ) { - - if( Double::isNaN( value ) || Double::isInfinite( value ) ) { - return Double::NaN; - } else if( !( value < 0 || value > 0 ) ) { - return value; - } - - return std::sin( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::sinh( double value ) { - - if( Double::isNaN( value ) ) { - return Double::NaN; - } else if( Double::isInfinite( value ) ) { - return value; - } else if( !( value < 0 || value > 0 ) ) { - return value; - } - - return std::sinh( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::tan( double value ) { - - if( Double::isNaN( value ) || value < -1.0 ) { - return Double::NaN; - } else if( !( value < 0 || value > 0 ) ) { - return value; - } - - return std::tan( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::tanh( double value ) { - - if( Double::isNaN( value ) ) { - return Double::NaN; - } else if( value == Double::POSITIVE_INFINITY ) { - return 1.0; - } else if( value == Double::NEGATIVE_INFINITY ) { - return -1.0; - } else if( !( value < 0 || value > 0 ) ) { - return value; - } - - return std::tanh( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::sqrt( double value ) { - - if( Double::isNaN( value ) || value < 0.0 ) { - return Double::NaN; - } else if( value == Double::POSITIVE_INFINITY ) { - return Double::POSITIVE_INFINITY; - } else if( value == 0.0 || value == -0.0 ) { - return Double::NEGATIVE_INFINITY; - } - - return std::sqrt( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::rint( double value ) { - - if( Double::isNaN( value ) || Double::isInfinite( value ) ) { - return value; - } else if( value == 0.0 || value == -0.0 ) { - return value; - } - - return ::rint( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::exp( double value ) { - - if( Double::isNaN( value ) ) { - return Double::NaN; - } else if( value == Double::POSITIVE_INFINITY ) { - return Double::POSITIVE_INFINITY; - } else if( value == Double::NEGATIVE_INFINITY ) { - return 0.0; - } - - return std::exp( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::expm1( double value ) { - - if( Double::isNaN( value ) ) { - return Double::NaN; - } else if( value == Double::POSITIVE_INFINITY ) { - return Double::POSITIVE_INFINITY; - } else if( value == Double::NEGATIVE_INFINITY ) { - return -1.0; - } else if( !( value > 0 || value < 0 ) ) { - return value; - } - - return ::expm1( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -float Math::min( float a, float b ) { - - if( a > b ) { - return b; - } else if( a < b ) { - return a; - } - - // if either arg is NaN, return NaN - if( a != b ) { - return Float::NaN; - } - - // min( +0.0,-0.0) == -0.0 - if( a == 0.0f && - ( (Float::floatToIntBits( a ) | Float::floatToIntBits( b )) & 0x80000000) != 0) { - - return 0.0f * (-1.0f); - } - - return a; -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::min( double a, double b ) { - - if( a > b ) { - return b; - } else if( a < b ) { - return a; - } - - // if either arg is NaN, return NaN - if( a != b ) { - return Double::NaN; - } - - // min( +0.0,-0.0) == -0.0 - if( a == 0.0 && - ( (Double::doubleToLongBits( a ) | Double::doubleToLongBits( b )) & 0x8000000000000000ULL) != 0 ) { - return 0.0 * (-1.0); - } - - return a; -} - -//////////////////////////////////////////////////////////////////////////////// -float Math::max( float a, float b ) { - - if( a > b ) { - return a; - } else if( a < b ) { - return b; - } - - // if either arg is NaN, return NaN - if( a != b ) { - return Float::NaN; - } - // max( +0.0,-0.0) == +0.0 - if( a == 0.0f && - ( (Float::floatToIntBits( a ) & Float::floatToIntBits( b ) ) & 0x80000000 ) == 0 ) { - - return 0.0f; - } - - return a; -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::max( double a, double b ) { - - if( a > b ) { - return a; - } else if( a < b ) { - return b; - } - - // if either arg is NaN, return NaN - if( a != b ) { - return Double::NaN; - } - // max( +0.0,-0.0) == +0.0 - if( a == 0.0f && - ( (Double::doubleToLongBits( a ) & Double::doubleToLongBits( b ) ) & 0x80000000 ) == 0 ) { - - return 0.0f; - } - - return a; -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::log( double value ) { - - if( Double::isNaN( value ) || value < 0.0 ) { - return Double::NaN; - } else if( value == Double::POSITIVE_INFINITY ) { - return Double::POSITIVE_INFINITY; - } else if( !( value < 0 || value > 0 ) ) { - return Double::NEGATIVE_INFINITY; - } - - return std::log( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::log10( double value ) { - - if( Double::isNaN( value ) || value < 0 ) { - return Double::NaN; - } else if( value == Double::POSITIVE_INFINITY ) { - return Double::POSITIVE_INFINITY; - } else if( !( value < 0 || value > 0 ) ) { - return Double::NEGATIVE_INFINITY; - } - - return std::log10( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::log1p( double value ) { - - if( Double::isNaN( value ) || value < -1.0 ) { - return Double::NaN; - } else if( value == Double::POSITIVE_INFINITY ) { - return Double::POSITIVE_INFINITY; - } else if( value == -1.0 ) { - return Double::NEGATIVE_INFINITY; - } else if( !( value < 0 || value > 0 ) ) { - return value; - } - - return ::log1p( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::ceil( double value ) { - - if( Double::isNaN( value ) || Double::isInfinite( value ) ) { - return value; - } else if( !( value < 0 || value > 0 ) ) { - return value; - } else if( value > -1.0 && value < 0.0 ) { - return -0.0; - } - - return std::ceil( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::floor( double value ) { - - if( Double::isNaN( value ) || Double::isInfinite( value ) ) { - return value; - } else if( value > 0 || value < 0 ) { - return std::floor( value ); - } - - // +-0.0 - return value; -} - -//////////////////////////////////////////////////////////////////////////////// -int Math::round( float value ) { - - if( Float::isNaN( value ) ) { - return 0; - } - - return (int)Math::floor( value + 0.5f ); -} - -//////////////////////////////////////////////////////////////////////////////// -long long Math::round( double value ) { - - if( Double::isNaN( value ) ) { - return 0; - } - - return (long long)Math::floor( value + 0.5 ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::IEEEremainder( double f1, double f2 ) { - - if( Double::isNaN( f1 ) || Double::isNaN( f2 ) || - Double::isInfinite( f1 ) || !( f2 < 0 || f2 > 0 ) ) { - return Double::NaN; - } else if( Double::isInfinite( f2 ) ) { - return f1; - } - - return ::remainder( f1, f2 ); -} - -//////////////////////////////////////////////////////////////////////////////// -float Math::signum( float value ) { - - if( Float::isNaN( value ) ) { - return Float::NaN; - } else if( value > 0 ) { - return 1.0; - } else if( value < 0 ) { - return -1.0; - } - - return value; -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::signum( double value ) { - - if( Double::isNaN( value ) ) { - return Double::NaN; - } else if( value > 0 ) { - return 1.0; - } else if( value < 0 ) { - return -1.0; - } - - return value; -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::hypot( double x, double y ) { - - if( Double::isInfinite( x ) || Double::isInfinite( y ) ) { - return Double::POSITIVE_INFINITY; - } else if( Double::isNaN( x ) || Double::isNaN( y ) ) { - return Double::NaN; - } - - return ::hypot( x, y ); -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::pow( double base, double exp ) { - - if( !( exp < 0 || exp > 0 ) ) { - return 1.0; - } else if( Double::isNaN( exp ) ) { - return Double::NaN; - } else if( Double::isNaN( base ) && ( exp < 0 || exp > 0 ) ) { - return Double::NaN; - } - - return std::pow( base, exp ); -} - -//////////////////////////////////////////////////////////////////////////////// -float Math::ulp( float value ) { - - if( Float::isNaN( value ) ) { - return Float::NaN; - } else if( Float::isInfinite( value ) ) { - return Float::POSITIVE_INFINITY; - } else if( value == Float::MAX_VALUE || value == -Float::MAX_VALUE ) { - return (float)pow( 2, 104 ); - } else if( !( value < 0 || value > 0 ) ) { - return Float::MIN_VALUE; - } - - value = abs( value ); - return ::nextafterf( value, Float::MAX_VALUE ) - value; -} - -//////////////////////////////////////////////////////////////////////////////// -double Math::ulp( double value ) { - - if( Double::isNaN( value ) ) { - return Double::NaN; - } else if( Double::isInfinite( value ) ) { - return Double::POSITIVE_INFINITY; - } else if( value == Double::MAX_VALUE || value == -Double::MAX_VALUE ) { - return pow( 2, 971 ); - } else if( !( value < 0 || value > 0 ) ) { - return Double::MIN_VALUE; - } - - value = abs( value ); - return ::nextafter( value, Double::MAX_VALUE ) - value; -}
diff --git a/src/decaf/src/main/decaf/lang/Math.h b/src/decaf/src/main/decaf/lang/Math.h deleted file mode 100644 index 744a53d..0000000 --- a/src/decaf/src/main/decaf/lang/Math.h +++ /dev/null
@@ -1,761 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_MATH_H_ -#define _DECAF_LANG_MATH_H_ - -#include <decaf/util/Config.h> - -// On some systems there is a min and max macro defined. -#undef min -#undef max - -namespace decaf{ -namespace lang{ - - /** - * The class <code>Math</code> contains methods for performing basic - * numeric operations such as the elementary exponential, logarithm, - * square root, and trigonometric functions. - */ - class DECAF_API Math { - public: - - static const double E; - static const double PI; - - public: - - Math() {} - virtual ~Math() {} - - public: - - /** - * Returns the absolute value of an int value. If the argument is not - * negative, the argument is returned. If the argument is negative, the - * negation of the argument is returned. - * @param value - the value to return the abs of - * @returns the value if positive, otherwise the negative of value - */ - static int abs( int value ) { - return value < 0 ? -value : value; - } - - /** - * Returns the absolute value of an long long value. If the argument is not - * negative, the argument is returned. If the argument is negative, the - * negation of the argument is returned. - * @param value - the value to return the abs of - * @returns the value if positive, otherwise the negative of value - */ - static long long abs( long long value ) { - return value < 0 ? -value : value; - } - - /** - * Returns the absolute value of a float value. If the argument is not - * negative, the argument is returned. If the argument is negative, - * the negation of the argument is returned. Special cases: - * - * o If the argument is positive zero or negative zero, the result is - * positive zero. - * o If the argument is infinite, the result is positive infinity. - * o If the argument is NaN, the result is NaN. - * - * In other words, the result is the same as the value of the expression: - * Float::intBitsToFloat( 0x7fffffff & Float::floatToIntBits( value ) ) - * - * @param value - the value to return the abs of - * @returns the value if positive, otherwise the negative of value - */ - static float abs( float value ); - - /** - * Returns the absolute value of a double value. If the argument is not - * negative, the argument is returned. If the argument is negative, - * the negation of the argument is returned. Special cases: - * - * o If the argument is positive zero or negative zero, the result is - * positive zero. - * o If the argument is infinite, the result is positive infinity. - * o If the argument is NaN, the result is NaN. - * - * In other words, the result is the same as the value of the expression: - * Double::longBitsToDouble( 0x7fffffffffffffffULL & - * Double::doubleToLongBits( value ) ) - * - * @param value - the value to return the abs of - * @returns the value if positive, otherwise the negative of value - */ - static double abs( double value ); - - /** - * Returns the arc cosine of an angle, in the range of 0.0 through pi. - * Special case: - * - * o If the argument is NaN or its absolute value is greater than 1, then - * the result is NaN. - * - * @param value - the value to return the arc cosine of. - * @returns arc cosine of value in radians. - */ - static double acos( double value ); - - /** - * Returns the arc sine of an angle, in the range of -pi/2 through pi/2. - * Special cases: - * - * o If the argument is NaN or its absolute value is greater than 1, then - * the result is NaN. - * o If the argument is zero, then the result is a zero with the same sign - * as the argument. - * - * @param value - the value to return the arc cosine of. - * @returns arc cosine of value in radians. - */ - static double asin( double value ); - - /** - * Returns the arc tangent of an angle, in the range of -pi/2 through pi/2. - * Special cases: - * - * o If the argument is NaN, then the result is NaN. - * o If the argument is zero, then the result is a zero with the same sign - * as the argument. - * - * @param value - the value to return the arc cosine of. - * @returns arc tangent of value in radians. - */ - static double atan( double value ); - - /** - * Converts rectangular coordinates (x, y) to polar (r, theta). This method - * computes the phase theta by computing an arc tangent of y/x in the range - * of -pi to pi. Special cases: - * - * o If either argument is NaN, then the result is NaN. - * o If the first argument is positive zero and the second argument is - * positive, or the first argument is positive and finite and the second - * argument is positive infinity, then the result is positive zero. - * o If the first argument is negative zero and the second argument is - * positive, or the first argument is negative and finite and the second - * argument is positive infinity, then the result is negative zero. - * o If the first argument is positive zero and the second argument is - * negative, or the first argument is positive and finite and the second - * argument is negative infinity, then the result is the double value - * closest to pi. - * o If the first argument is negative zero and the second argument is - * negative, or the first argument is negative and finite and the second - * argument is negative infinity, then the result is the double value - * closest to -pi. - * o If the first argument is positive and the second argument is positive - * zero or negative zero, or the first argument is positive infinity and - * the second argument is finite, then the result is the double value - * closest to pi/2. - * o If the first argument is negative and the second argument is positive - * zero or negative zero, or the first argument is negative infinity and - * the second argument is finite, then the result is the double value - * closest to -pi/2. - * o If both arguments are positive infinity, then the result is the double - * value closest to pi/4. - * o If the first argument is positive infinity and the second argument is - * negative infinity, then the result is the double value closest to 3*pi/4. - * o If the first argument is negative infinity and the second argument is - * positive infinity, then the result is the double value closest to -pi/4. - * o If both arguments are negative infinity, then the result is the double - * value closest to -3*pi/4. - * - * @param y - the ordinate coordinate - * @param x - the abscissa coordinate - * @returns the theta component of the point (r, theta) in polar coordinates - * that corresponds to the point (x, y) in Cartesian coordinates. - */ - static double atan2( double x, double y ); - - /** - * Returns the cube root of a double value. For positive finite x, - * cbrt(-x) == -cbrt(x); that is, the cube root of a negative value is the - * negative of the cube root of that value's magnitude. Special cases: - * - * o If the argument is NaN, then the result is NaN. - * o If the argument is infinite, then the result is an infinity with the - * same sign as the argument. - * o If the argument is zero, then the result is a zero with the same sign - * as the argument. - * - * @param value - the double to compute the cube root of - * @returns the cube root of value - */ - static double cbrt( double value ); - - /** - * Returns the trigonometric cosine of an angle. Special cases: - * - * o If the argument is NaN or an infinity, then the result is NaN. - * - * @param value - an value in radians - * @returns the cosine of the argument. - */ - static double cos( double value ); - - /** - * Returns the hyperbolic cosine of a double value. The hyperbolic cosine - * of x is defined to be (ex + e-x)/2 where e is Euler's number. - * Special cases: - * - * o If the argument is NaN, then the result is NaN. - * o If the argument is infinite, then the result is positive infinity. - * o If the argument is zero, then the result is 1.0. - * - * @param value - the number whose hyperbolic cosine is to be found - * @return the hyperbolic cosine of value - */ - static double cosh( double value ); - - /** - * Returns the trigonometric sine of an angle. Special case: - * - * o If the argument is NaN or an infinity, then the result is NaN. - * o If the argument is zero, then the result is a zero with the same sign - * as the argument. - * - * @param value - the number whose sin is to be found - * @return the sine of value - */ - static double sin( double value ); - - /** - * Returns the hyperbolic sine of a double value. The hyperbolic sine of x - * is defined to be (ex - e-x)/2 where e is Euler's number. - * Special cases: - * - * o If the argument is NaN, then the result is NaN. - * o If the argument is infinite, then the result is an infinity with - * the same sign as the argument. - * o If the argument is zero, then the result is a zero with the same - * sign as the argument. - * - * @param value - the number whose hyperbolic sin is to be found - * @return the hyperbolic sine of value - */ - static double sinh( double value ); - - /** - * Returns the trigonometric tangent of an angle. Special cases: - * - * o If the argument is NaN or an infinity, then the result is NaN. - * o If the argument is zero, then the result is a zero with the same - * sign as the argument. - * - * @param value - the number whose tangent is to be found - * @return the tangent of value - */ - static double tan( double value ); - - /** - * Returns the hyperbolic tangent of a double value. The hyperbolic - * tangent of x is defined to be (ex - e-x)/(ex + e-x), in other words, - * sinh(x)/cosh(x). Note that the absolute value of the exact tanh is - * always less than 1. Special cases: - * - * o If the argument is NaN, then the result is NaN. - * o If the argument is zero, then the result is a zero with the same - * sign as the argument. - * o If the argument is positive infinity, then the result is +1.0. - * o If the argument is negative infinity, then the result is -1.0. - * - * @param value - the number whose hyperbolic tangent is to be found - * @return the hyperbolic cosine of value - */ - static double tanh( double value ); - - /** - * Returns the correctly rounded positive square root of a double value. - * Special cases: - * - * o If the argument is NaN or less than zero, then the result is NaN. - * o If the argument is positive infinity, then the result is positive infinity. - * o If the argument is positive zero or negative zero, then the result is - * the same as the argument. - * - * Otherwise, the result is the double value closest to the true mathematical - * square root of the argument value. - * @param value - the value to find the square root of - * @param the square root of the argument. - */ - static double sqrt( double value ); - - /** - * Returns the value of the first argument raised to the power of the second - * argument. Special cases: - * - * o If the second argument is positive or negative zero, then the result - * is 1.0. - * o If the second argument is 1.0, then the result is the same as the first - * argument. - * o If the second argument is NaN, then the result is NaN. - * o If the first argument is NaN and the second argument is nonzero, - * then the result is NaN. - * - * @param base - the base - * @param exp - the exponent - * @return the base raised to the power of exp. - */ - static double pow( double base, double exp ); - - /** - * Returns the double value that is closest in value to the argument and - * is equal to a mathematical integer. If two double values that are - * mathematical integers are equally close, the result is the integer - * value that is even. Special cases: - * - * o If the argument value is already equal to a mathematical integer, - * then the result is the same as the argument. - * o If the argument is NaN or an infinity or positive zero or negative - * zero, then the result is the same as the argument. - * - * @param value - the value to round to the nearest integer - * @returns the rounded value - */ - static double rint( double value ); - - /** - * Returns the smaller of two <code>short</code> values. That is, - * the result the argument closer to the value of - * <code>Short::MIN_VALUE</code>. If the arguments have the same - * value, the result is that same value. - * @param a - an argument. - * @param b - another argument. - * @return the smaller of <code>a</code> and <code>b</code>. - */ - static short min( short a, short b ) { - return ( a <= b ? a : b ); - } - - /** - * Returns the smaller of two <code>int</code> values. That is, - * the result the argument closer to the value of - * <code>Integer::MIN_VALUE</code>. If the arguments have the same - * value, the result is that same value. - * @param a - an argument. - * @param b - another argument. - * @return the smaller of <code>a</code> and <code>b</code>. - */ - static int min( int a, int b ) { - return ( a <= b ? a : b ); - } - - /** - * Returns the smaller of two <code>long long</code> values. That is, - * the result the argument closer to the value of - * <code>Long::MIN_VALUE</code>. If the arguments have the same - * value, the result is that same value. - * @param a - an argument. - * @param b - another argument. - * @return the smaller of <code>a</code> and <code>b</code>. - */ - static long long min( long long a, long long b ) { - return ( a <= b ? a : b ); - } - - /** - * Returns the smaller of two float values. That is, the result is the - * value closer to negative infinity. If the arguments have the same value, - * the result is that same value. If either value is NaN, then the result - * is NaN. Unlike the numerical comparison operators, this method considers - * negative zero to be strictly smaller than positive zero. If one argument - * is positive zero and the other is negative zero, the result is negative - * zero. - * @param a - an argument. - * @param b - another argument. - * @return the smaller of <code>a</code> and <code>b</code>. - */ - static float min( float a, float b ); - - /** - * Returns the smaller of two double values. That is, the result is the - * value closer to negative infinity. If the arguments have the same value, - * the result is that same value. If either value is NaN, then the result - * is NaN. Unlike the numerical comparison operators, this method considers - * negative zero to be strictly smaller than positive zero. If one argument - * is positive zero and the other is negative zero, the result is negative - * zero. - * @param a - an argument. - * @param b - another argument. - * @return the smaller of <code>a</code> and <code>b</code>. - */ - static double min( double a, double b ); - - /** - * Returns the larger of two <code>short</code> values. That is, - * the result the argument closer to the value of - * <code>Short::MAX_VALUE</code>. If the arguments have the same - * value, the result is that same value. - * @param a - an argument. - * @param b - another argument. - * @return the larger of <code>a</code> and <code>b</code>. - */ - static short max( short a, short b ) { - return ( a >= b ? a : b ); - } - - /** - * Returns the larger of two <code>int</code> values. That is, - * the result the argument closer to the value of - * <code>Integer::MAX_VALUE</code>. If the arguments have the same - * value, the result is that same value. - * @param a - an argument. - * @param b - another argument. - * @return the larger of <code>a</code> and <code>b</code>. - */ - static int max( int a, int b ) { - return ( a >= b ? a : b ); - } - - /** - * Returns the larger of two <code>long long</code> values. That is, - * the result the argument closer to the value of - * <code>Long::MAX_VALUE</code>. If the arguments have the same - * value, the result is that same value. - * @param a - an argument. - * @param b - another argument. - * @return the larger of <code>a</code> and <code>b</code>. - */ - static long long max( long long a, long long b ) { - return ( a >= b ? a : b ); - } - - /** - * Returns the greater of two float values. That is, the result is the - * argument closer to positive infinity. If the arguments have the same - * value, the result is that same value. If either value is NaN, then the - * result is NaN. Unlike the numerical comparison operators, this method - * considers negative zero to be strictly smaller than positive zero. If - * one argument is positive zero and the other negative zero, the result - * is positive zero. - * @param a - an argument. - * @param b - another argument. - * @return the larger of <code>a</code> and <code>b</code>. - */ - static float max( float a, float b ); - - /** - * Returns the greater of two double values. That is, the result is the - * argument closer to positive infinity. If the arguments have the same value, - * the result is that same value. If either value is NaN, then the result is - * NaN. Unlike the numerical comparison operators, this method considers - * negative zero to be strictly smaller than positive zero. If one argument - * is positive zero and the other negative zero, the result is positive zero. - * @param a - an argument. - * @param b - another argument. - * @return the larger of <code>a</code> and <code>b</code>. - */ - static double max( double a, double b ); - - /** - * Returns the natural logarithm (base e) of a double value. Special cases: - * - * o If the argument is NaN or less than zero, then the result is NaN. - * o If the argument is positive infinity, then the result is - * positive infinity. - * o If the argument is positive zero or negative zero, then the result - * is negative infinity. - * - * @param value the value to compute the natural log of. - * @returns the natural log of value. - */ - static double log( double value ); - - /** - * Returns the base 10 logarithm of a double value. Special cases: - * - * o If the argument is NaN or less than zero, then the result is NaN. - * o If the argument is positive infinity, then the result is positive - * infinity. - * o If the argument is positive zero or negative zero, then the result is - * negative infinity. - * o If the argument is equal to 10n for integer n, then the result is n. - * - * @param value - the value to operate on - * @returns the long base 10 of value - */ - static double log10( double value ); - - /** - * Returns the natural logarithm of the sum of the argument and 1. Note that - * for small values x, the result of log1p(x) is much closer to the true - * result of ln(1 + x) than the floating-point evaluation of log(1.0+x). - * - * Special cases: - * - * o If the argument is NaN or less than -1, then the result is NaN. - * o If the argument is positive infinity, then the result is positive - * infinity. - * o If the argument is negative one, then the result is negative infinity. - * o If the argument is zero, then the result is a zero with the same sign - * as the argument. - * - * @param value - the value to operate on - * @returns the the value ln(x + 1), the natural log of x + 1 - */ - static double log1p( double value ); - - /** - * Returns the smallest (closest to negative infinity) double value that is - * greater than or equal to the argument and is equal to a mathematical - * integer. Special cases: - * - * o If the argument value is already equal to a mathematical integer, - * then the result is the same as the argument. - * o If the argument is NaN or an infinity or positive zero or negative - * zero, then the result is the same as the argument. - * o If the argument value is less than zero but greater than -1.0, then - * the result is negative zero. - * - * Note that the value of Math.ceil(x) is exactly the value of -Math.floor(-x). - * @param value - the value to find the ceiling of - * @returns the smallest (closest to negative infinity) floating-point value - * that is greater than or equal to the argument and is equal to a - * mathematical integer. - */ - static double ceil( double value ); - - /** - * Returns the largest (closest to positive infinity) double value that is - * less than or equal to the argument and is equal to a mathematical integer. - * Special cases: - * - * o If the argument value is already equal to a mathematical integer, - * then the result is the same as the argument. - * o If the argument is NaN or an infinity or positive zero or negative - * zero, then the result is the same as the argument. - * - * @param value - the value to find the floor of - * @returns the largest (closest to positive infinity) floating-point value - * that less than or equal to the argument and is equal to a mathematical - * integer. - */ - static double floor( double value ); - - /** - * Returns the closest int to the argument. The result is rounded to an - * integer by adding 1/2, taking the floor of the result, and casting the - * result to type int. In other words, the result is equal to the value - * of the expression: (int)Math.floor( a + 0.5f ) - * - * o If the argument is NaN, the result is 0. - * o If the argument is negative infinity or any value less than or equal - * to the value of Integer::MIN_VALUE, the result is equal to the value of - * Integer::MIN_VALUE. - * o If the argument is positive infinity or any value greater than or equal - * to the value of Integer::MAX_VALUE, the result is equal to the value of - * Integer::MAX_VALUE. - * - * @param value - the value to round - * @returns the value of the argument rounded to the nearest integral value. - */ - static int round( float value ); - - /** - * Returns the closest long long to the argument. The result is rounded to - * an integer by adding 1/2, taking the floor of the result, and casting the - * result to type long long. In other words, the result is equal to the value - * of the expression: (long long)Math.floor(a + 0.5d) - * - * o If the argument is NaN, the result is 0. - * o If the argument is negative infinity or any value less than or equal - * to the value of Long::MIN_VALUE, the result is equal to the value of - * Long::MIN_VALUE. - * o If the argument is positive infinity or any value greater than or equal - * to the value of Long::MAX_VALUE, the result is equal to the value of - * Long::MAX_VALUE. - * - * @param value - the value to round - * @returns the value of the argument rounded to the nearest integral value. - */ - static long long round( double value ); - - /** - * Computes the remainder operation on two arguments as prescribed by the - * IEEE 754 standard. The remainder value is mathematically equal to - * f1 - f2 × n, where n is the mathematical integer closest to the exact - * mathematical value of the quotient f1/f2, and if two mathematical - * integers are equally close to f1/f2, then n is the integer that is even. - * If the remainder is zero, its sign is the same as the sign of the first - * argument. Special cases: - * - * o If either argument is NaN, or the first argument is infinite, or the - * second argument is positive zero or negative zero, then the result is - * NaN. - * o If the first argument is finite and the second argument is infinite, - * then the result is the same as the first argument. - * - * @param f1 - the dividend. - * @param f2 - the divisor - * @return the IEEE remainder of value - */ - static double IEEEremainder( double f1, double f2 ); - - /** - * Returns a double value with a positive sign, greater than or equal to 0.0 - * and less than 1.0. Returned values are chosen pseudorandomly with - * (approximately) uniform distribution from that range. - * - * When this method is first called, it creates a single new pseudorandom-number - * generator; This new pseudorandom-number generator is used thereafter for all - * calls to this method and is used nowhere else. - * - * This method is properly synchronized to allow correct use by more than - * one thread. However, if many threads need to generate pseudorandom numbers - * at a great rate, it may reduce contention for each thread to have its - * own pseudorandom-number generator. - * @returns a pseudorandom double greater than or equal to 0.0 and - * less than 1.0. - */ - static double random(); - - /** - * Returns Euler's number e raised to the power of a double value. - * Special cases: - * - * o If the argument is NaN, the result is NaN. - * o If the argument is positive infinity, then the result is positive infinity. - * o If the argument is negative infinity, then the result is positive zero. - * - * @param value - the exponent to raise e to - * @returns the value e^a, where e is the base of the natural logarithms. - */ - static double exp( double value ); - - /** - * Returns e^x - 1. Note that for values of x near 0, the exact sum of - * expm1(x) + 1 is much closer to the true result of ex than exp(x). - * Special cases: - * - * o If the argument is NaN, the result is NaN. - * o If the argument is positive infinity, then the result is positive infinity. - * o If the argument is negative infinity, then the result is -1.0. - * o If the argument is zero, then the result is a zero with the same sign as - * the argument. - * - * @param the value to raise e^x - 1 - * @returns the value ex - 1. - */ - static double expm1( double value ); - - /** - * Returns sqrt(x^2 + y^2) without intermediate overflow or underflow. - * Special cases: - * - * If either argument is infinite, then the result is positive infinity. - * If either argument is NaN and neither argument is infinite, then the - * result is NaN. - * - * @param x - an argument - * @param y - another argument - * @returns the sqrt(x^2 + y^2) without intermediate overflow or underflow - */ - static double hypot( double x, double y ); - - /** - * Returns the signum function of the argument; zero if the argument is zero, - * 1.0f if the argument is greater than zero, -1.0f if the argument is less - * than zero. Special Cases: - * - * o If the argument is NaN, then the result is NaN. - * o If the argument is positive zero or negative zero, then the result is - * the same as the argument. - * - * @param value - the floating-point value whose signum is to be returned - * @returns the signum function of the argument - */ - static float signum( float value ); - - /** - * Returns the signum function of the argument; zero if the argument is zero, - * 1.0f if the argument is greater than zero, -1.0f if the argument is less - * than zero. Special Cases: - * - * o If the argument is NaN, then the result is NaN. - * o If the argument is positive zero or negative zero, then the result is - * the same as the argument. - * - * @param value - the floating-point value whose signum is to be returned - * @returns the signum function of the argument - */ - static double signum( double value ); - - /** - * Returns the measure in radians of the supplied degree angle - * @param angdeg - an angle in degrees - * @return the radian measure of the angle. - */ - static double toRadians( double angdeg ) { - return angdeg / 180 * PI; - } - - /** - * Returns the measure in degrees of the supplied radian angle - * @param angrad - an angle in radians - * @return the degree measure of the angle. - */ - static double toDegrees( double angrad ) { - return angrad * 180 / PI; - } - - /** - * Returns the size of an ulp of the argument. An ulp of a float value is - * the positive distance between this floating-point value and the float - * value next larger in magnitude. Note that for non-NaN x, ulp(-x) == ulp(x). - * Special Cases: - * - * o If the argument is NaN, then the result is NaN. - * o If the argument is positive or negative infinity, then the result is - * positive infinity. - * o If the argument is positive or negative zero, then the result is - * Float::MIN_VALUE. - * o If the argument is ±Float::MAX_VALUE, then the result is equal to 2^104. - * - * @param value - the floating-point value whose ulp is to be returned - * @returns the size of an ulp of the argument - */ - static float ulp( float value ); - - /** - * Returns the size of an ulp of the argument. An ulp of a double value is - * the positive distance between this floating-point value and the double - * value next larger in magnitude. Note that for non-NaN x, ulp(-x) == ulp(x). - * Special Cases: - * - * o If the argument is NaN, then the result is NaN. - * o If the argument is positive or negative infinity, then the result is - * positive infinity. - * o If the argument is positive or negative zero, then the result is - * Double::MIN_VALUE. - * o If the argument is ±Float::MAX_VALUE, then the result is equal to 2^971. - * - * @param value - the floating-point value whose ulp is to be returned - * @returns the size of an ulp of the argument - */ - static double ulp( double value ); - - }; - -}} - -#endif /*_DECAF_LANG_MATH_H_*/
diff --git a/src/decaf/src/main/decaf/lang/Number.h b/src/decaf/src/main/decaf/lang/Number.h deleted file mode 100644 index e50d850..0000000 --- a/src/decaf/src/main/decaf/lang/Number.h +++ /dev/null
@@ -1,82 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_NUMBER_H_ -#define _DECAF_LANG_NUMBER_H_ - -#include <decaf/util/Config.h> - -namespace decaf{ -namespace lang{ - - /** - * The abstract class Number is the superclass of classes Byte, Double, - * Float, Integer, Long, and Short. - * - * Subclasses of Number must provide methods to convert the represented - * numeric value to byte, double, float, int, long, and short. - */ - class DECAF_API Number { - public: - - virtual ~Number() {} - - /** - * Answers the byte value which the receiver represents - * @return byte the value of the receiver. - */ - virtual unsigned char byteValue() const { - return (unsigned char)intValue(); - } - - /** - * Answers the double value which the receiver represents - * @return double the value of the receiver. - */ - virtual double doubleValue() const = 0; - - /** - * Answers the float value which the receiver represents - * @return float the value of the receiver. - */ - virtual float floatValue() const = 0; - - /** - * Answers the int value which the receiver represents - * @return int the value of the receiver. - */ - virtual int intValue() const = 0; - - /** - * Answers the long value which the receiver represents - * @return long long the value of the receiver. - */ - virtual long long longValue() const = 0; - - /** - * Answers the short value which the receiver represents - * @return short the value of the receiver. - */ - virtual short shortValue() const { - return (short) intValue(); - } - - }; - -}} - -#endif /*_DECAF_LANG_NUMBER_H_*/
diff --git a/src/decaf/src/main/decaf/lang/Runnable.h b/src/decaf/src/main/decaf/lang/Runnable.h deleted file mode 100644 index ebc5613..0000000 --- a/src/decaf/src/main/decaf/lang/Runnable.h +++ /dev/null
@@ -1,43 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_LANG_RUNNABLE_H_ -#define _DECAF_LANG_RUNNABLE_H_ - -#include <decaf/util/Config.h> - -namespace decaf{ -namespace lang{ - - /** - * Interface for a runnable object - defines a task - * that can be run by a thread. - */ - class DECAF_API Runnable{ - public: - - virtual ~Runnable(){} - - /** - * Run method - called by the Thread class in the context - * of the thread. - */ - virtual void run() = 0; - }; - -}} - -#endif /*_DECAF_LANG_RUNNABLE_H_*/
diff --git a/src/decaf/src/main/decaf/lang/Short.cpp b/src/decaf/src/main/decaf/lang/Short.cpp deleted file mode 100644 index c0cc798..0000000 --- a/src/decaf/src/main/decaf/lang/Short.cpp +++ /dev/null
@@ -1,117 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "Short.h" -#include "Integer.h" - -#include <sstream> - -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; - -//////////////////////////////////////////////////////////////////////////////// -Short::Short( short value ) { - this->value = value; -} - -//////////////////////////////////////////////////////////////////////////////// -Short::Short( const std::string& value ) throw( exceptions::NumberFormatException ) { - this->value = value.size(); //Short::parseShort( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Short::compareTo( const Short& s ) const { - return value == s.value ? 0 : ( value > s.value ? 1 : -1 ); -} - -//////////////////////////////////////////////////////////////////////////////// -int Short::compareTo( const short& s ) const { - return value == s ? 0 : ( value > s ? 1 : -1 ); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Short::toString() const { - return Integer::toString( this->value ); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string Short::toString( short value ) { - return Integer::toString( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -short Short::parseShort( const std::string& s, int radix ) - throw ( exceptions::NumberFormatException ) { - - int intValue = Integer::parseInt( s, radix ); - short result = (short)intValue; - if( result != intValue ) { - throw NumberFormatException( - __FILE__, __LINE__, - "Short::parseShort - Not a valid short encoded string."); - } - - return result; -} - -//////////////////////////////////////////////////////////////////////////////// -short Short::parseShort( const std::string& s ) - throw ( exceptions::NumberFormatException ) { - return parseShort( s, 10 ); -} - -//////////////////////////////////////////////////////////////////////////////// -Short Short::decode( const std::string& value ) - throw ( exceptions::NumberFormatException ) { - - int intValue = Integer::decode( value ).intValue(); - short result = (short)intValue; - if( result != intValue ) { - throw NumberFormatException( - __FILE__, __LINE__, - "Short::decode - Not a valid short encoded string."); - } - - return Short( result ); -} - -//////////////////////////////////////////////////////////////////////////////// -short Short::reverseBytes( short value ) { - unsigned short temp = value; - temp = ( ( temp & 0xFF00 ) >> 8 ) | ( ( temp & 0x00FF ) << 8 ); - return temp; -} - -//////////////////////////////////////////////////////////////////////////////// -Short Short::valueOf( short value ) { - return Short( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -Short Short::valueOf( const std::string& value ) - throw ( exceptions::NumberFormatException ) { - - return Short( parseShort( value, 10 ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -Short Short::valueOf( const std::string& value, int radix ) - throw ( exceptions::NumberFormatException ) { - - return Short( parseShort( value, radix ) ); -}
diff --git a/src/decaf/src/main/decaf/lang/Short.h b/src/decaf/src/main/decaf/lang/Short.h deleted file mode 100644 index 43e84bf..0000000 --- a/src/decaf/src/main/decaf/lang/Short.h +++ /dev/null
@@ -1,300 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_SHORT_H_ -#define _DECAF_LANG_SHORT_H_ - -#include <decaf/lang/Number.h> -#include <decaf/lang/Comparable.h> -#include <decaf/lang/exceptions/NumberFormatException.h> -#include <string> - -namespace decaf{ -namespace lang{ - - class Short : public Number, - public Comparable<Short>, - public Comparable<short> { - private: - - // The short value - short value; - - public: - - /** Size of this objects primitive type in bits */ - static const int SIZE = 16; - - /** Max Value for this Object's primitive type */ - static const short MAX_VALUE = (short)0x7FFF; - - /** Max Value for this Object's primitive type */ - static const short MIN_VALUE = (short)0x8000; - - public: - - /** - * @param value - short to wrap - */ - Short( short value ); - - /** - * @param value - string value to convert to short and wrap - * @throws NumberFormatException - */ - Short( const std::string& value ) throw( exceptions::NumberFormatException ); - - virtual ~Short() {} - - /** - * Compares this Short instance with another. - * @param s - the Short instance to be compared - * @return zero if this object represents the same short value as the - * argument; a positive value if this object represents a value greater - * than the passed in value, and -1 if this object repesents a value - * less than the passed in value. - */ - virtual int compareTo( const Short& s ) const; - - /** - * @returns true if the two Short Objects have the same value. - */ - bool equals( const Short& s ) const { - return this->value == s.value; - } - - /** - * Compares equality between this object and the one passed. - * @param s - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const Short& s ) const { - return this->value == s.value; - } - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param s - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const Short& s ) const { - return this->value < s.value; - } - - /** - * Compares this Short instance with another. - * @param s - the Short instance to be compared - * @return zero if this object represents the same short value as the - * argument; a positive value if this object represents a value greater - * than the passed in value, and -1 if this object repesents a value - * less than the passed in value. - */ - virtual int compareTo( const short& s ) const; - - /** - * @returns true if the two Short Objects have the same value. - */ - bool equals( const short& s ) const { - return this->value == s; - } - - /** - * Compares equality between this object and the one passed. - * @param s - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const short& s ) const { - return this->value == s; - } - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param s - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const short& s ) const { - return this->value < s; - } - - /** - * @returns this Short Object as a String Representation - */ - std::string toString() const; - - /** - * Answers the double value which the receiver represents - * @return double the value of the receiver. - */ - virtual double doubleValue() const { - return (double)this->value; - } - - /** - * Answers the float value which the receiver represents - * @return float the value of the receiver. - */ - virtual float floatValue() const { - return (float)this->value; - } - - /** - * Answers the byte value which the receiver represents - * @return int the value of the receiver. - */ - virtual unsigned char byteValue() const { - return (unsigned char)this->value; - } - - /** - * Answers the short value which the receiver represents - * @return int the value of the receiver. - */ - virtual short shortValue() const { - return this->value; - } - - /** - * Answers the int value which the receiver represents - * @return int the value of the receiver. - */ - virtual int intValue() const { - return (int)this->value; - } - - /** - * Answers the long value which the receiver represents - * @return long the value of the receiver. - */ - virtual long long longValue() const { - return (long long)this->value; - } - - public: // statics - - /** - * @returns a string representing the primitive value as Base 10 - */ - static std::string toString( short value ); - - /** - * Decodes a String into a Short. Accepts decimal, hexadecimal, and octal - * numbers given by the following grammar: - * - * The sequence of characters following an (optional) negative sign and/or - * radix specifier ("0x", "0X", "#", or leading zero) is parsed as by the - * Short.parseShort method with the indicated radix (10, 16, or 8). This - * sequence of characters must represent a positive value or a - * NumberFormatException will be thrown. The result is negated if first - * character of the specified String is the minus sign. No whitespace - * characters are permitted in the string. - * @param value - The string to decode - * @returns a Short object containing the decoded value - * @throws NumberFomatException if the string is not formatted correctly. - */ - static Short decode( const std::string& value ) - throw ( exceptions::NumberFormatException ); - - /** - * Returns the value obtained by reversing the order of the bytes in the - * two's complement representation of the specified short value. - * @param value - the short whose bytes we are to reverse - * @return the reversed short. - */ - static short reverseBytes( short value ); - - /** - * Parses the string argument as a signed short in the radix specified by - * the second argument. The characters in the string must all be digits, - * of the specified radix (as determined by whether - * Character.digit(char, int) returns a nonnegative value) except that the - * first character may be an ASCII minus sign '-' ('\u002D') to indicate - * a negative value. The resulting byte value is returned. - * - * An exception of type NumberFormatException is thrown if any of the - * following situations occurs: - * * The first argument is null or is a string of length zero. - * * The radix is either smaller than Character.MIN_RADIX or larger than - * Character.MAX_RADIX. - * * Any character of the string is not a digit of the specified radix, - * except that the first character may be a minus sign '-' ('\u002D') - * provided that the string is longer than length 1. - * * The value represented by the string is not a value of type short. - * - * @param s - the String containing the short representation to be parsed - * @param radix - the radix to be used while parsing s - * @return the short represented by the string argument in the specified radix. - * @throws NumberFormatException - If String does not contain a parsable short. - */ - static short parseShort( const std::string& s, int radix ) - throw ( exceptions::NumberFormatException ); - - /** - * Parses the string argument as a signed decimal short. The characters - * in the string must all be decimal digits, except that the first - * character may be an ASCII minus sign '-' ('\u002D') to indicate a - * negative value. The resulting short value is returned, exactly as if - * the argument and the radix 10 were given as arguments to the - * parseShort( const std::string, int ) method. - * @param s - String to convert to a short - * @returns the converted short value - * @throws NumberFormatException if the string is not a short. - */ - static short parseShort( const std::string& s ) - throw ( exceptions::NumberFormatException ); - - /** - * Returns a Short instance representing the specified short value. - * @param value - the short to wrap - * @return the new Short object wrapping value. - */ - static Short valueOf( short value ); - - /** - * Returns a Short object holding the value given by the specified std::string. - * The argument is interpreted as representing a signed decimal short, - * exactly as if the argument were given to the parseShort( std::string ) - * method. The result is a Short object that represents the short value - * specified by the string. - * @param value - std::string to parse as base 10 - * @return new Short Object wrapping the primitive - * @throws NumberFormatException if the string is not a decimal short. - */ - static Short valueOf( const std::string& value ) - throw ( exceptions::NumberFormatException ); - - /** - * Returns a Short object holding the value extracted from the specified - * std::string when parsed with the radix given by the second argument. - * The first argument is interpreted as representing a signed short in the - * radix specified by the second argument, exactly as if the argument were - * given to the parseShort( std::string, int ) method. The result is a - * Short object that represents the short value specified by the string. - * @param value - std::string to parse as base ( radix ) - * @param radix - base of the string to parse. - * @return new Short Object wrapping the primitive - * @throws NumberFormatException if the string is not a valid short. - */ - static Short valueOf( const std::string& value, int radix ) - throw ( exceptions::NumberFormatException ); - - }; - -}} - -#endif /*_DECAF_LANG_SHORT_H_*/
diff --git a/src/decaf/src/main/decaf/lang/System.cpp b/src/decaf/src/main/decaf/lang/System.cpp deleted file mode 100644 index 00e6615..0000000 --- a/src/decaf/src/main/decaf/lang/System.cpp +++ /dev/null
@@ -1,225 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "System.h" - -#include <decaf/lang/exceptions/NullPointerException.h> -#include <decaf/lang/exceptions/IllegalArgumentException.h> -#include <decaf/lang/exceptions/RuntimeException.h> -#include <decaf/util/Date.h> -#include <decaf/util/StringTokenizer.h> -#include <apr.h> -#include <apr_errno.h> -#include <apr_env.h> - -#ifdef APR_HAVE_UNISTD_H -#include <unistd.h> -#endif - -#include <cstdlib> - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::util; -using namespace decaf::internal; -using namespace decaf::lang::exceptions; - -//////////////////////////////////////////////////////////////////////////////// -AprPool System::aprPool; - -//////////////////////////////////////////////////////////////////////////////// -System::System() { -} - -//////////////////////////////////////////////////////////////////////////////// -void System::unsetenv( const std::string& name ) throw ( lang::Exception ) { - - apr_status_t result = APR_SUCCESS; - - // Clear the value, errors are thrown out as an exception - result = apr_env_delete( name.c_str(), aprPool.getAprPool() ); - aprPool.cleanup(); - - if( result != APR_SUCCESS ) { - - char buffer[256] = {0}; - - throw NullPointerException( - __FILE__, __LINE__, - "System::getenv - ", - apr_strerror( result, buffer, 255 ) ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -std::string System::getenv( const std::string& name ) throw ( Exception ) { - - char* value = NULL; - apr_status_t result = APR_SUCCESS; - - // Read the value, errors are thrown out as an exception - result = apr_env_get( &value, name.c_str(), aprPool.getAprPool() ); - - if( result != APR_SUCCESS ) { - - char buffer[256] = {0}; - - throw NullPointerException( - __FILE__, __LINE__, - "System::getenv - ", - apr_strerror( result, buffer, 255 ) ); - } - - // Copy and cleanup - if( value == NULL ) { - return ""; - } - - std::string envVal( value ); - aprPool.cleanup(); - - return value; -} - -//////////////////////////////////////////////////////////////////////////////// -void System::setenv( const std::string& name, const std::string& value ) - throw ( lang::Exception ) { - - apr_status_t result = APR_SUCCESS; - - // Write the value, errors are thrown out as an exception - result = apr_env_set( name.c_str(), value.c_str(), aprPool.getAprPool() ); - aprPool.cleanup(); - - if( result != APR_SUCCESS ) { - - char buffer[256] = {0}; - - throw NullPointerException( - __FILE__, __LINE__, - "System::getenv - ", - apr_strerror( result, buffer, 255 ) ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -long long System::currentTimeMillis() { - return Date::getCurrentTimeMilliseconds(); -} - -//////////////////////////////////////////////////////////////////////////////// -Map<string, string> System::getenv() throw ( Exception ) { - - Map<string, string> values; - StringTokenizer tokenizer( "" ); - string key = ""; - string value = ""; - int tokens = 0; - std::vector<std::string> env = getEnvArray(); - - for( std::size_t i = 0; i < env.size(); i++ ){ - tokenizer.reset( env[i], "=" ); - - tokens = tokenizer.countTokens(); - - if( tokens == 1 ) { - // special case, no value set, store empty string as value - key = tokenizer.nextToken(); - value = string(""); - } else if( tokens > 2 ) { - // special case: first equals delimits the key value, the rest are - // part of the variable - int pos = env[i].find( "=" ); - key = env[i].substr( 0, pos ); - value = env[i].substr( pos + 1, string::npos ); - } else if( tokens == 0 ) { - // Odd case, got a string with no equals sign. - throw IllegalArgumentException( - __FILE__, __LINE__, - "System::getenv - Invalid env string. %s", - env[i].c_str() ); - } else { - // Normal case. - key = tokenizer.nextToken(); - value = tokenizer.nextToken(); - } - - // Store the env var - values.setValue( key, value ); - } - - return values; -} - -#if defined(_WIN32) - -#include <windows.h> - -//////////////////////////////////////////////////////////////////////////////// -std::vector<std::string> System::getEnvArray() { - - std::vector<std::string> buffer; - int count = 0; - LPTSTR lpszVars; - LPVOID lpvEnv; - - lpvEnv = GetEnvironmentStrings(); - if( NULL == lpvEnv ){ - return NULL; - } - - lpszVars = (LPTSTR)lpvEnv; - while( *lpszVars != NULL ) { - count++; - lpszVars += strlen(lpszVars)+1; - } - - lpszVars = (LPTSTR)lpvEnv; - int index = 0; - while( *lpszVars != NULL ) { - buffer.push_back( lpszVars ); - lpszVars += strlen(lpszVars)+1; - } - - FreeEnvironmentStrings( (LPTCH)lpvEnv ); - return buffer; -} - -#else - -//////////////////////////////////////////////////////////////////////////////// -extern char** environ; - -//////////////////////////////////////////////////////////////////////////////// -std::vector<std::string> System::getEnvArray() { - - std::vector<std::string> buffer; - int count = 0; - - for( int i = 0; *(environ + i); i++ ){ - count++; - } - - for( int i = 0; *(environ + i); i++ ){ - buffer.push_back( environ[i] ); - } - - return buffer; -} - -#endif
diff --git a/src/decaf/src/main/decaf/lang/System.h b/src/decaf/src/main/decaf/lang/System.h deleted file mode 100644 index 4e48dd8..0000000 --- a/src/decaf/src/main/decaf/lang/System.h +++ /dev/null
@@ -1,97 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_SYSTEM_H_ -#define _DECAF_LANG_SYSTEM_H_ - -#include <decaf/util/Config.h> -#include <decaf/util/Map.h> -#include <decaf/lang/Exception.h> -#include <decaf/internal/AprPool.h> -#include <string> - -namespace decaf{ -namespace lang{ - - class DECAF_API System { - private: - - static internal::AprPool aprPool; - - public: - - System(); - virtual ~System() {} - - public: // Static Methods - - /** - * Enumerates the system environment and returns a map of env variable - * names to the string values they hold. - * @return A Map of all environment variables. - * @throw Exception if an error occurs - */ - static util::Map<std::string, std::string> getenv() - throw ( lang::Exception ); - - /** - * Reads an environment value from the system and returns it as a - * string object - * @param name - the env var to read - * @return a string with the value from the var or "" - * @throws an Exception if an error occurs while reading the Env. - */ - static std::string getenv( const std::string& name ) - throw ( lang::Exception ); - - /** - * Clears a set env value if one is set. - * @param name - the env var to clear - * @throws an Exception if an error occurs while reading the Env. - */ - static void unsetenv( const std::string& name ) - throw ( lang::Exception ); - - /** - * Sets the specified system property to the value given - * @param name - name of the env val to set - * @param value - value to assign to name - * @throws an Exception if an error occurs - */ - static void setenv( const std::string& name, const std::string& value ) - throw ( lang::Exception ); - - /** - * @returns the current system time in Milliseconds - */ - static long long currentTimeMillis(); - - private: - - /** - * Enumerates the environment and return an array of strings - * with the values. Caller owns the array. The array is terminated - * by an element that holds the value NULL - * @returns a vector of env name=value paris. - */ - static std::vector< std::string > getEnvArray(); - - }; - -}} - -#endif /*_DECAF_LANG_SYSTEM_H_*/
diff --git a/src/decaf/src/main/decaf/lang/Thread.cpp b/src/decaf/src/main/decaf/lang/Thread.cpp deleted file mode 100644 index 978f077..0000000 --- a/src/decaf/src/main/decaf/lang/Thread.cpp +++ /dev/null
@@ -1,129 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "Thread.h" - -#include <apr_time.h> -#include <apr_portable.h> - -#include <decaf/lang/Exception.h> -#include <decaf/lang/exceptions/RuntimeException.h> - -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; - -//////////////////////////////////////////////////////////////////////////////// -Thread::Thread() { - this->task = this; - this->started = false; - this->joined = false; - this->pool = NULL; - this->threadHandle = NULL; -} - -//////////////////////////////////////////////////////////////////////////////// -Thread::Thread( Runnable* task ) { - this->task = task; - this->started = false; - this->joined = false; - this->pool = NULL; - this->threadHandle = NULL; -} - -//////////////////////////////////////////////////////////////////////////////// -Thread::~Thread(){ - if( pool != NULL ) { - apr_pool_destroy( pool ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void Thread::start() throw ( Exception ) -{ - if( this->started ) { - throw Exception( - __FILE__, __LINE__, - "Thread::start - Thread already started"); - } - - apr_pool_create( &pool, NULL ); - apr_status_t err = apr_thread_create( - &this->threadHandle, - NULL, - runCallback, - this, - pool ); - - if( err != APR_SUCCESS ) { - throw Exception( - __FILE__, __LINE__, - "Thread::start - Coud not start thread"); - } - - // Mark the thread as started. - started = true; -} - -//////////////////////////////////////////////////////////////////////////////// -void Thread::join() throw( Exception ) -{ - if( !this->started ) { - throw Exception( __FILE__, __LINE__, - "Thread::join() called without having called Thread::start()"); - } - - if( !this->joined ) { - apr_status_t threadReturn; - if( apr_thread_join( &threadReturn, this->threadHandle ) != APR_SUCCESS ) { - throw Exception( __FILE__, __LINE__, - "Thread::join() - Failed to Join the Thread"); - } - } - this->joined = true; -} - -//////////////////////////////////////////////////////////////////////////////// -void Thread::sleep( int millisecs ) { - apr_sleep( (apr_interval_time_t)(millisecs * 1000) ); -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned long Thread::getId() { - return (long)( apr_os_thread_current() ); -} - -//////////////////////////////////////////////////////////////////////////////// -void* APR_THREAD_FUNC Thread::runCallback( apr_thread_t* self, void* param ) { - - // Get the instance. - Thread* thread = (Thread*)param; - - // Invoke run on the task. - try{ - thread->task->run(); - } catch( ... ){ - RuntimeException ex( - __FILE__, __LINE__, - "unhandled exception bubbled up to Thread::run"); - ex.printStackTrace(); - } - - // Indicate we are done. - apr_thread_exit( self, APR_SUCCESS ); - return NULL; -}
diff --git a/src/decaf/src/main/decaf/lang/Thread.h b/src/decaf/src/main/decaf/lang/Thread.h deleted file mode 100644 index fcbcbf7..0000000 --- a/src/decaf/src/main/decaf/lang/Thread.h +++ /dev/null
@@ -1,130 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_LANG_THREAD_H_ -#define _DECAF_LANG_THREAD_H_ - -#include <decaf/lang/Exception.h> -#include <decaf/lang/Runnable.h> -#include <decaf/util/Config.h> -#include <stdexcept> -#include <assert.h> - -#include <apr_pools.h> -#include <apr_thread_proc.h> - -namespace decaf{ -namespace lang{ - - /** - * Basic thread class - mimics the Java Thread. Derived classes may - * implement the run method, or this class can be used as is with - * a provided Runnable delegate. - */ - class DECAF_API Thread : public Runnable - { - private: - - /** - * The task to be run by this thread, defaults to - * this thread object. - */ - Runnable* task; - - /** - * APR Pool to allocate thread from - */ - apr_pool_t* pool; - - /** - * APR Thread Handle - */ - apr_thread_t* threadHandle; - - /** - * Started state of this thread. - */ - bool started; - - /** - * Indicates whether the thread has already been - * joined. - */ - bool joined; - - public: - - /** - * default Constructor - */ - Thread(); - - /** - * Constructor - * @param task the Runnable that this thread manages - */ - Thread( Runnable* task ); - - virtual ~Thread(); - - /** - * Creates a system thread and starts it in a joinable mode. - * Upon creation, the - * run() method of either this object or the provided Runnable - * object will be invoked in the context of this thread. - * @exception runtime_error is thrown if the system could - * not start the thread. - */ - virtual void start() throw ( Exception ); - - /** - * Wait til the thread exits. This is when the run() - * method has returned or has thrown an exception. - */ - virtual void join() throw ( Exception ); - - /** - * Default implementation of the run method - does nothing. - */ - virtual void run(){}; - - public: - - /** - * Halts execution of the calling thread for a specified no of millisec. - * - * Note that this method is a static method that applies to the - * calling thread and not to the thread object. - * @param millisecs time in milliseconds to sleep - */ - static void sleep( int millisecs ); - - /** - * Obtains the Thread Id of the current thread - * @return Thread Id - */ - static unsigned long getId(); - - private: - - // Internal thread handling - static void* APR_THREAD_FUNC runCallback( apr_thread_t* self, void* param ); - - }; - -}} - -#endif /*_DECAF_LANG_THREAD_H_*/
diff --git a/src/decaf/src/main/decaf/lang/Throwable.h b/src/decaf/src/main/decaf/lang/Throwable.h deleted file mode 100644 index b22a8d7..0000000 --- a/src/decaf/src/main/decaf/lang/Throwable.h +++ /dev/null
@@ -1,92 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_THROWABLE_H_ -#define _DECAF_LANG_THROWABLE_H_ - -// Includes -#include <string> -#include <vector> -#include <iostream> -#include <exception> - -#include <decaf/util/Config.h> - -namespace decaf{ -namespace lang{ - - /** - * This class represents an error that has occurred. - */ - class DECAF_API Throwable : public std::exception { - - public: - - Throwable() throw() {} - - virtual ~Throwable() throw() {} - - /** - * Gets the cause of the error. - * @return string errors message - */ - virtual std::string getMessage() const = 0; - - /** - * Adds a file/line number to the stack trace. - * @param file The name of the file calling this method (use __FILE__). - * @param lineNumber The line number in the calling file (use __LINE__). - */ - virtual void setMark( const char* file, const int lineNumber ) = 0; - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - * @return Copy of this Exception object - */ - virtual Throwable* clone() const = 0; - - /** - * Provides the stack trace for every point where - * this exception was caught, marked, and rethrown. - * @return vector containing stack trace strings - */ - virtual std::vector< std::pair< std::string, int> > getStackTrace() const = 0; - - /** - * Prints the stack trace to std::err - */ - virtual void printStackTrace() const = 0; - - /** - * Prints the stack trace to the given output stream. - * @param stream the target output stream. - */ - virtual void printStackTrace( std::ostream& stream ) const = 0; - - /** - * Gets the stack trace as one contiguous string. - * @return string with formatted stack trace data - */ - virtual std::string getStackTraceString() const = 0; - - }; - -}} - -#endif /*_DECAF_LANG_THROWABLE_H_*/
diff --git a/src/decaf/src/main/decaf/lang/exceptions/ExceptionDefines.h b/src/decaf/src/main/decaf/lang/exceptions/ExceptionDefines.h deleted file mode 100644 index f82fd2a..0000000 --- a/src/decaf/src/main/decaf/lang/exceptions/ExceptionDefines.h +++ /dev/null
@@ -1,79 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_EXCEPTIONS_EXCEPTIONDEFINES_H_ -#define _DECAF_LANG_EXCEPTIONS_EXCEPTIONDEFINES_H_ - -/** - * Macro for catching and rethrowing an exception of - * a given type. - * @param type The type of the exception to throw - * (e.g. Exception ). - */ -#define DECAF_CATCH_RETHROW( type ) \ - catch( type& ex ){ \ - ex.setMark( __FILE__, __LINE__ ); \ - throw ex; \ - } - -/** - * Macro for catching an exception of one type and then rethrowing - * as another type. - * @param sourceType the type of the exception to be caught. - * @param targetType the type of the exception to be thrown. - */ -#define DECAF_CATCH_EXCEPTION_CONVERT( sourceType, targetType ) \ - catch( sourceType& ex ){ \ - targetType target( ex ); \ - target.setMark( __FILE__, __LINE__ ); \ - throw target; \ - } - -/** - * A catch-all that throws a known exception. - * @param type the type of exception to be thrown. - */ -#define DECAF_CATCHALL_THROW( type ) \ - catch( ... ){ \ - type ex( __FILE__, __LINE__, \ - "caught unknown exception" ); \ - throw ex; \ - } - -/** - * A catch-all that does not throw an exception, one use would - * be to catch any exception in a destructor and mark it, but not - * throw so that cleanup would continue as normal. - */ -#define DECAF_CATCHALL_NOTHROW( ) \ - catch( ... ){ \ - lang::Exception ex( __FILE__, __LINE__, \ - "caught unknown exception, not rethrowing" ); \ - } - -/** - * Macro for catching and rethrowing an exception of - * a given type. - * @param type The type of the exception to throw - * (e.g. Exception ). - */ -#define DECAF_CATCH_NOTHROW( type ) \ - catch( type& ex ){ \ - ex.setMark( __FILE__, __LINE__ ); \ - } - -#endif /*_DECAF_LANG_EXCEPTIONS_EXCEPTIONDEFINES_H_*/
diff --git a/src/decaf/src/main/decaf/lang/exceptions/IllegalArgumentException.h b/src/decaf/src/main/decaf/lang/exceptions/IllegalArgumentException.h deleted file mode 100644 index bc95f1b..0000000 --- a/src/decaf/src/main/decaf/lang/exceptions/IllegalArgumentException.h +++ /dev/null
@@ -1,96 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_LANG_EXCEPTIONS_ILLEGALARGUMENTEXCEPTION_H_ -#define _DECAF_LANG_EXCEPTIONS_ILLEGALARGUMENTEXCEPTION_H_ - -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace lang{ -namespace exceptions{ - - /* - * Thrown when an illegal argument was passed into a method. - */ - class DECAF_API IllegalArgumentException : public Exception - { - public: - - /** - * Default Constructor - */ - IllegalArgumentException() throw() {} - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - IllegalArgumentException( const Exception& ex ) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - IllegalArgumentException( const IllegalArgumentException& ex ) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - IllegalArgumentException(const char* file, const int lineNumber, - const char* msg, ...) throw() - : Exception() - { - va_list vargs ; - va_start(vargs, msg) ; - buildMessage(msg, vargs) ; - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual Exception* clone() const{ - return new IllegalArgumentException( *this ); - } - - /** - * Destructor - */ - virtual ~IllegalArgumentException() throw() {} - - }; - -}}} - -#endif /*_DECAF_LANG_EXCEPTIONS_ILLEGALARGUMENTEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/lang/exceptions/IllegalMonitorStateException.h b/src/decaf/src/main/decaf/lang/exceptions/IllegalMonitorStateException.h deleted file mode 100644 index bbdb4a2..0000000 --- a/src/decaf/src/main/decaf/lang/exceptions/IllegalMonitorStateException.h +++ /dev/null
@@ -1,94 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_LANG_EXCEPTIONS_ILLEGALMONITORSTATEEXCEPTION_H_ -#define _DECAF_LANG_EXCEPTIONS_ILLEGALMONITORSTATEEXCEPTION_H_ - -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace lang{ -namespace exceptions{ - - /* - * Thrown when an error occurs from calling a method from syncronizable - * and the caller doesn't hold a lock on the object. - */ - class DECAF_API IllegalMonitorStateException : public Exception - { - public: - - /** - * Default Constructor - */ - IllegalMonitorStateException() throw() {}; - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - IllegalMonitorStateException(const Exception& ex) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - IllegalMonitorStateException(const IllegalMonitorStateException& ex) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - IllegalMonitorStateException( const char* file, - const int lineNumber, - const char* msg, ...) throw() - { - va_list vargs; - va_start(vargs, msg); - buildMessage(msg, vargs); - - // Set the first mark for this exception. - setMark(file, lineNumber); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual IllegalMonitorStateException* clone() const{ - return new IllegalMonitorStateException(*this); - } - - virtual ~IllegalMonitorStateException() throw() {} - - }; - -}}} - -#endif /*_DECAF_LANG_EXCEPTIONS_ILLEGALMONITORSTATEEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/lang/exceptions/IllegalStateException.h b/src/decaf/src/main/decaf/lang/exceptions/IllegalStateException.h deleted file mode 100644 index 810e2eb..0000000 --- a/src/decaf/src/main/decaf/lang/exceptions/IllegalStateException.h +++ /dev/null
@@ -1,95 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_LANG_EXCEPTIONS_ILLEGALSTATEEXCEPTION_H_ -#define _DECAF_LANG_EXCEPTIONS_ILLEGALSTATEEXCEPTION_H_ - -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace lang{ -namespace exceptions{ - - /* - * Thrown when an error occurs from calling a method from syncronizable - * and the caller doesn't hold a lock on the object. - */ - class DECAF_API IllegalStateException : public Exception - { - public: - - /** - * Default Constructor - */ - IllegalStateException() throw() {}; - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - IllegalStateException(const Exception& ex) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - IllegalStateException(const IllegalStateException& ex) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - IllegalStateException( const char* file, - const int lineNumber, - const char* msg, ...) throw() - : Exception() - { - va_list vargs; - va_start(vargs, msg); - buildMessage(msg, vargs); - - // Set the first mark for this exception. - setMark(file, lineNumber); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual IllegalStateException* clone() const{ - return new IllegalStateException(*this); - } - - virtual ~IllegalStateException() throw() {} - - }; - -}}} - -#endif /*_DECAF_LANG_EXCEPTIONS_ILLEGALSTATEEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/lang/exceptions/IndexOutOfBoundsException.h b/src/decaf/src/main/decaf/lang/exceptions/IndexOutOfBoundsException.h deleted file mode 100644 index 1e7a61b..0000000 --- a/src/decaf/src/main/decaf/lang/exceptions/IndexOutOfBoundsException.h +++ /dev/null
@@ -1,96 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_LANG_EXCEPTIONS_INDEXOUTOFBOUNDSEXCEPTION_H_ -#define _DECAF_LANG_EXCEPTIONS_INDEXOUTOFBOUNDSEXCEPTION_H_ - -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace lang{ -namespace exceptions{ - - /* - * Thrown when an illegal argument was passed into a method. - */ - class DECAF_API IndexOutOfBoundsException : public Exception - { - public: - - /** - * Default Constructor - */ - IndexOutOfBoundsException() throw() {} - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - IndexOutOfBoundsException( const Exception& ex ) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - IndexOutOfBoundsException( const IndexOutOfBoundsException& ex ) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - IndexOutOfBoundsException(const char* file, const int lineNumber, - const char* msg, ...) throw() - : Exception() - { - va_list vargs ; - va_start(vargs, msg) ; - buildMessage(msg, vargs) ; - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual IndexOutOfBoundsException* clone() const{ - return new IndexOutOfBoundsException( *this ); - } - - /** - * Destructor - */ - virtual ~IndexOutOfBoundsException() throw() {} - - }; - -}}} - -#endif /*_DECAF_LANG_EXCEPTIONS_INDEXOUTOFBOUNDSEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/lang/exceptions/InterruptedException.h b/src/decaf/src/main/decaf/lang/exceptions/InterruptedException.h deleted file mode 100644 index 7818933..0000000 --- a/src/decaf/src/main/decaf/lang/exceptions/InterruptedException.h +++ /dev/null
@@ -1,94 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_LANG_EXCEPTIONS_INTERRUPTEDENTEXCEPTION_H_ -#define _DECAF_LANG_EXCEPTIONS_INTERRUPTEDENTEXCEPTION_H_ - -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace lang{ -namespace exceptions{ - - /* - * Thrown when an Thread is interrupted during a wait. - */ - class DECAF_API InterruptedException : public Exception - { - public: - - /** - * Default Constructor - */ - InterruptedException() throw() {}; - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - InterruptedException(const Exception& ex) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - InterruptedException(const InterruptedException& ex) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - InterruptedException( const char* file, - const int lineNumber, - const char* msg, ... ) throw() - : Exception() - { - va_list vargs; - va_start(vargs, msg); - buildMessage(msg, vargs); - - // Set the first mark for this exception. - setMark(file, lineNumber); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual InterruptedException* clone() const{ - return new InterruptedException(*this); - } - - virtual ~InterruptedException() throw() {} - - }; - -}}} - -#endif /*_DECAF_LANG_EXCEPTIONS_INTERRUPTEDENTEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/lang/exceptions/InvalidStateException.h b/src/decaf/src/main/decaf/lang/exceptions/InvalidStateException.h deleted file mode 100644 index 3e64469..0000000 --- a/src/decaf/src/main/decaf/lang/exceptions/InvalidStateException.h +++ /dev/null
@@ -1,95 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_LANG_EXCEPTIONS_INVALIDSTATEEXCEPTION_H_ -#define _DECAF_LANG_EXCEPTIONS_INVALIDSTATEEXCEPTION_H_ - -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace lang{ -namespace exceptions{ - - /* - * Thrown when an operation is requested, but the state of the object - * servicing the request is not correct for that request. - */ - class DECAF_API InvalidStateException : public Exception - { - public: - - /** - * Default Constructor - */ - InvalidStateException() throw() {} - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - InvalidStateException(const Exception& ex) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - InvalidStateException( const InvalidStateException& ex ) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - InvalidStateException( const char* file, - const int lineNumber, - const char* msg, ... ) throw() - : Exception() - { - va_list vargs; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual InvalidStateException* clone() const{ - return new InvalidStateException(*this); - } - - virtual ~InvalidStateException() throw() {} - - }; - -}}} - -#endif /*_DECAF_LANG_EXCEPTIONS_INVALIDSTATEEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/lang/exceptions/NoSuchElementException.h b/src/decaf/src/main/decaf/lang/exceptions/NoSuchElementException.h deleted file mode 100644 index 5dcc04d..0000000 --- a/src/decaf/src/main/decaf/lang/exceptions/NoSuchElementException.h +++ /dev/null
@@ -1,95 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_LANG_EXCEPTIONS_NOSUCHELEMENTEXCEPTION_H_ -#define _DECAF_LANG_EXCEPTIONS_NOSUCHELEMENTEXCEPTION_H_ - -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace lang{ -namespace exceptions{ - - /* - * Thrown from an operation that attempts to access some element that does - * not exist. - */ - class DECAF_API NoSuchElementException : public Exception - { - public: - - /** - * Default Constructor - */ - NoSuchElementException() throw() {}; - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - NoSuchElementException( const Exception& ex ) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - NoSuchElementException( const NoSuchElementException& ex ) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - NoSuchElementException( const char* file, - const int lineNumber, - const char* msg, ... ) throw() - : Exception() - { - va_list vargs; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual NoSuchElementException* clone() const{ - return new NoSuchElementException(*this); - } - - virtual ~NoSuchElementException() throw() {} - - }; - -}}} - -#endif /*_DECAF_LANG_EXCEPTIONS_NOSUCHELEMENTEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/lang/exceptions/NullPointerException.h b/src/decaf/src/main/decaf/lang/exceptions/NullPointerException.h deleted file mode 100644 index ce97fc5..0000000 --- a/src/decaf/src/main/decaf/lang/exceptions/NullPointerException.h +++ /dev/null
@@ -1,95 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_EXCEPTIONS_NULLPOINTERENTEXCEPTION_H_ -#define _DECAF_LANG_EXCEPTIONS_NULLPOINTERENTEXCEPTION_H_ - -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace lang{ -namespace exceptions{ - - /* - * Thrown when an error occurs that involves a pointer being NULL - */ - class DECAF_API NullPointerException : public Exception - { - public: - - /** - * Default Constructor - */ - NullPointerException() throw() {}; - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - NullPointerException( const Exception& ex ) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - NullPointerException(const NullPointerException& ex) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - NullPointerException( const char* file, - const int lineNumber, - const char* msg, ... ) throw() - : Exception() - { - va_list vargs; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual NullPointerException* clone() const{ - return new NullPointerException( *this ); - } - - virtual ~NullPointerException() throw() {} - - }; - -}}} - -#endif /*_DECAF_LANG_EXCEPTIONS_NULLPOINTERENTEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/lang/exceptions/NumberFormatException.h b/src/decaf/src/main/decaf/lang/exceptions/NumberFormatException.h deleted file mode 100644 index 56d9bfd..0000000 --- a/src/decaf/src/main/decaf/lang/exceptions/NumberFormatException.h +++ /dev/null
@@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_EXCEPTIONS_NUMBERFORMATEXCEPTION_H_ -#define _DECAF_LANG_EXCEPTIONS_NUMBERFORMATEXCEPTION_H_ - -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace lang{ -namespace exceptions{ - - /* - * Thrown when an error occurs that involves a conversion to a Number from - * a string and the string is not a valid number. - */ - class NumberFormatException : public Exception - { - public: - - /** - * Default Constructor - */ - NumberFormatException() {} - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - NumberFormatException( const Exception& ex ) throw() - : Exception() { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - NumberFormatException(const NumberFormatException& ex) throw() - : Exception() { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - NumberFormatException( const char* file, - const int lineNumber, - const char* msg, ... ) throw() - : Exception() { - va_list vargs; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual NumberFormatException* clone() const { - return new NumberFormatException( *this ); - } - - virtual ~NumberFormatException() throw () {} - - }; - -}}} - -#endif /*_DECAF_LANG_EXCEPTIONS_NUMBERFORMATEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/lang/exceptions/RuntimeException.h b/src/decaf/src/main/decaf/lang/exceptions/RuntimeException.h deleted file mode 100644 index 7c24f7b..0000000 --- a/src/decaf/src/main/decaf/lang/exceptions/RuntimeException.h +++ /dev/null
@@ -1,96 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_LANG_EXCEPTIONS_RUNTIMEENTEXCEPTION_H_ -#define _DECAF_LANG_EXCEPTIONS_RUNTIMEENTEXCEPTION_H_ - -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace lang{ -namespace exceptions{ - - /* - * Thrown when an error occurs that involves something in the run time - * This could be a memory allocation exception or some other generally - * unrecoverable exception. - */ - class DECAF_API RuntimeException : public Exception - { - public: - - /** - * Default Constructor - */ - RuntimeException() throw() {}; - - /** - * Conversion Constructor from some other ActiveMQException - * @param An exception that should become this type of Exception - */ - RuntimeException( const Exception& ex ) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - RuntimeException( const RuntimeException& ex ) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - RuntimeException( const char* file, - const int lineNumber, - const char* msg, ... ) throw() - : Exception() - { - va_list vargs; - va_start(vargs, msg); - buildMessage(msg, vargs); - - // Set the first mark for this exception. - setMark(file, lineNumber); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual RuntimeException* clone() const{ - return new RuntimeException( *this ); - } - - virtual ~RuntimeException() throw() {} - - }; - -}}} - -#endif /*_DECAF_LANG_EXCEPTIONS_RUNTIMEENTEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/lang/exceptions/UnsupportedOperationException.h b/src/decaf/src/main/decaf/lang/exceptions/UnsupportedOperationException.h deleted file mode 100644 index 0ce3831..0000000 --- a/src/decaf/src/main/decaf/lang/exceptions/UnsupportedOperationException.h +++ /dev/null
@@ -1,94 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_LANG_EXCEPTIONS_UNSUPPORTEDOPERATIONEXCEPTION_H_ -#define _DECAF_LANG_EXCEPTIONS_UNSUPPORTEDOPERATIONEXCEPTION_H_ - -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace lang{ -namespace exceptions{ - - /* - * Thrown when an unsupported method is called. - */ - class DECAF_API UnsupportedOperationException : public lang::Exception - { - public: - - /** - * Default Constructor - */ - UnsupportedOperationException() throw() {}; - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - UnsupportedOperationException( const Exception& ex ) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - UnsupportedOperationException( const UnsupportedOperationException& ex ) throw() - : Exception() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - UnsupportedOperationException( const char* file, - const int lineNumber, - const char* msg, ... ) throw() - : Exception() - { - va_list vargs; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual UnsupportedOperationException* clone() const{ - return new UnsupportedOperationException( *this ); - } - - virtual ~UnsupportedOperationException() throw() {} - - }; - -}}} - -#endif /*_DECAF_LANG_EXCEPTIONS_UNSUPPORTEDOPERATIONEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/net/BindException.h b/src/decaf/src/main/decaf/net/BindException.h deleted file mode 100644 index a1fa5e9..0000000 --- a/src/decaf/src/main/decaf/net/BindException.h +++ /dev/null
@@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_BINDEXCEPTION_H_ -#define _DECAF_NET_BINDEXCEPTION_H_ - -#include <decaf/util/Config.h> -#include <decaf/net/SocketException.h> - -namespace decaf{ -namespace net{ - - class DECAF_API BindException : public SocketException { - public: - - /** - * Default Constructor - */ - BindException() throw() {} - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - BindException( const Exception& ex ) throw() - : SocketException() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - BindException( const BindException& ex ) throw() - : SocketException() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - BindException( const char* file, const int lineNumber, - const char* msg, ... ) throw () - : SocketException() - { - va_list vargs ; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual BindException* clone() const { - return new BindException( *this ); - } - - /** - * Destructor - */ - virtual ~BindException() throw() {} - - }; - -}} - -#endif /*_DECAF_NET_BINDEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/net/BufferedSocket.cpp b/src/decaf/src/main/decaf/net/BufferedSocket.cpp deleted file mode 100644 index 8f0f7a0..0000000 --- a/src/decaf/src/main/decaf/net/BufferedSocket.cpp +++ /dev/null
@@ -1,129 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "BufferedSocket.h" - -#include <decaf/lang/exceptions/IllegalArgumentException.h> - -using namespace decaf; -using namespace decaf::net; -using namespace decaf::io; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; - -//////////////////////////////////////////////////////////////////////////////// -BufferedSocket::BufferedSocket( Socket* socket, - int inputBufferSize, - int outputBufferSize, - bool own ) : - socket(NULL), - own(false), - inputStream(NULL), - outputStream(NULL), - inputBufferSize(0), - outputBufferSize(0) -{ - if(inputBufferSize < 0 || outputBufferSize < 0 ) { - throw IllegalArgumentException( - __FILE__, __LINE__, - "BufferedSocket::BufferedSocket - buffer sizes must be >=0! " - "Given input buffer size: %d, Given output buffer size: %d", - inputBufferSize, - outputBufferSize ); - } - - if(socket == NULL) { - throw IllegalArgumentException( - __FILE__, __LINE__, - "BufferedSocket::BufferedSocket - Constructed with NULL Socket"); - } - - this->socket = socket; - this->inputBufferSize = inputBufferSize; - this->outputBufferSize = outputBufferSize; - this->own = own; -} - -//////////////////////////////////////////////////////////////////////////////// -BufferedSocket::~BufferedSocket() { - try { - close(); - } - DECAF_CATCH_NOTHROW( Exception ) - DECAF_CATCHALL_NOTHROW() -} - -//////////////////////////////////////////////////////////////////////////////// -void BufferedSocket::connect( const char* host, int port ) - throw( SocketException ) { - - try { - - if( socket->isConnected() ) { - throw SocketException( __FILE__, __LINE__, - "BufferedSocket::connect() - socket already connected" ); - } - - // Connect the socket. - socket->connect( host, port ); - - // Now create the buffered streams that wrap around the socket. - inputStream = new BufferedInputStream( - socket->getInputStream(), (std::size_t)inputBufferSize ); - outputStream = new BufferedOutputStream( - socket->getOutputStream(), (std::size_t)outputBufferSize ); - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCH_EXCEPTION_CONVERT( Exception, SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void BufferedSocket::close() throw( lang::Exception ) { - - try { - - if( outputStream != NULL ) { - // Ensure all data is written - outputStream->flush(); - - delete outputStream; - outputStream = NULL; - } - - if( inputStream != NULL ){ - delete inputStream; - inputStream = NULL; - } - - if( socket != NULL ){ - // Close the socket - try{ - socket->close(); - } catch( lang::Exception& ex ){ /* Absorb */ } - - // if we own it, delete it. - if( own ) { - delete socket; - } - socket = NULL; - } - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCH_EXCEPTION_CONVERT( Exception, SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -}
diff --git a/src/decaf/src/main/decaf/net/BufferedSocket.h b/src/decaf/src/main/decaf/net/BufferedSocket.h deleted file mode 100644 index 313b79c..0000000 --- a/src/decaf/src/main/decaf/net/BufferedSocket.h +++ /dev/null
@@ -1,246 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_NET_BUFFEREDSOCKET_H_ -#define _DECAF_NET_BUFFEREDSOCKET_H_ - -#include <decaf/net/Socket.h> -#include <decaf/net/SocketException.h> -#include <decaf/io/BufferedInputStream.h> -#include <decaf/io/BufferedOutputStream.h> - -namespace decaf{ -namespace net{ - - /** - * Buffered Socket class that wraps a <code>Socket</code> derived - * object and provides Buffered input and Output Streams to improce - * the efficiency of the reads and writes. - */ - class DECAF_API BufferedSocket : public Socket - { - private: - - // Socket that this class wraps to provide buffering - Socket* socket; - - // Indicates if the lifetime of the Socket is controlled by this - // class. If true Socket is deleted at destruction. - bool own; - - // Buffered Input stream to wrap the Socket input stream - io::BufferedInputStream* inputStream; - - // Buffered Output stream to wrap the Socket input stream - io::BufferedOutputStream* outputStream; - - // Sizes for the Buffered Streams - int inputBufferSize; - int outputBufferSize; - - public: - - /** - * Constructs a new Buffered socket object - * @param socket the socket to buffer - * @param inputBufferSize size of the input buffer - * @param outputBufferSize size of the output buffer - * @param own does this object own the passed socket - */ - BufferedSocket( Socket* socket, - int inputBufferSize = 1000, - int outputBufferSize = 1000, - bool own = true ); - - virtual ~BufferedSocket(); - - /** - * Connects to the specified destination. Closes this socket if - * connected to another destination. - * @param host The host of the server to connect to. - * @param port The port of the server to connect to. - * @throws IOException Thrown if a failure occurred in the connect. - */ - virtual void connect( const char* host, int port ) - throw( SocketException ); - - /** - * Closes this object and deallocates the appropriate resources. - * @throws CMSException - */ - virtual void close() throw( lang::Exception ); - - /** - * Indicates whether or not this socket is connected to a destination. - * @return true if connected - */ - virtual bool isConnected() const{ - if( socket == NULL ){ - return false; - } - - return socket->isConnected(); - } - - /** - * Gets the InputStream for this socket. - * @return The InputStream for this socket. NULL if not connected. - */ - virtual io::InputStream* getInputStream(){ - return inputStream; - } - - /** - * Gets the OutputStream for this socket. - * @return the OutputStream for this socket. NULL if not connected. - */ - virtual io::OutputStream* getOutputStream(){ - return outputStream; - } - - /** - * Gets the linger time. - * @return The linger time in seconds. - * @throws SocketException if the operation fails. - */ - virtual int getSoLinger() const throw( SocketException ){ - checkSocket(); - return socket->getSoLinger(); - } - - /** - * Sets the linger time. - * @param linger The linger time in seconds. If 0, linger is off. - * @throws SocketException if the operation fails. - */ - virtual void setSoLinger( int linger ) throw( SocketException ){ - checkSocket(); - socket->setSoLinger( linger ); - } - - /** - * Gets the keep alive flag. - * @return True if keep alive is enabled. - * @throws SocketException if the operation fails. - */ - virtual bool getKeepAlive() const throw( SocketException ){ - checkSocket(); - return socket->getKeepAlive(); - } - - /** - * Enables/disables the keep alive flag. - * @param keepAlive If true, enables the flag. - * @throws SocketException if the operation fails. - */ - virtual void setKeepAlive( bool keepAlive ) throw( SocketException ){ - checkSocket(); - socket->setKeepAlive( keepAlive ); - } - - /** - * Gets the receive buffer size. - * @return the receive buffer size in bytes. - * @throws SocketException if the operation fails. - */ - virtual int getReceiveBufferSize() const throw( SocketException ){ - checkSocket(); - return socket->getReceiveBufferSize(); - } - - /** - * Sets the recieve buffer size. - * @param size Number of bytes to set the receive buffer to. - * @throws SocketException if the operation fails. - */ - virtual void setReceiveBufferSize( int size ) throw( SocketException ){ - checkSocket(); - socket->setReceiveBufferSize( size ); - } - - /** - * Gets the reuse address flag. - * @return True if the address can be reused. - * @throws SocketException if the operation fails. - */ - virtual bool getReuseAddress() const throw( SocketException ){ - checkSocket(); - return socket->getReuseAddress(); - } - - /** - * Sets the reuse address flag. - * @param reuse If true, sets the flag. - * @throws SocketException if the operation fails. - */ - virtual void setReuseAddress( bool reuse ) throw( SocketException ){ - checkSocket(); - socket->setReuseAddress( reuse ); - } - - /** - * Gets the send buffer size. - * @return the size in bytes of the send buffer. - * @throws SocketException if the operation fails. - */ - virtual int getSendBufferSize() const throw( SocketException ){ - checkSocket(); - return socket->getSendBufferSize(); - } - - /** - * Sets the send buffer size. - * @param size The number of bytes to set the send buffer to. - * @throws SocketException if the operation fails. - */ - virtual void setSendBufferSize( int size ) throw( SocketException ){ - checkSocket(); - socket->setSendBufferSize( size ); - } - - /** - * Gets the timeout for socket operations. - * @return The timeout in milliseconds for socket operations. - * @throws SocketException Thrown if unable to retrieve the information. - */ - virtual int getSoTimeout() const throw( SocketException ){ - checkSocket(); - return socket->getSoTimeout(); - } - - /** - * Sets the timeout for socket operations. - * @param timeout The timeout in milliseconds for socket operations.<p> - * @throws SocketException Thrown if unable to set the information. - */ - virtual void setSoTimeout( int timeout ) throw( SocketException ){ - checkSocket(); - socket->setSoTimeout( timeout ); - } - - private: - - void checkSocket() const throw ( SocketException ) { - if( socket == NULL ) { - throw SocketException( __FILE__, __LINE__, "socket is NULL" ); - } - } - - }; - -}} - -#endif /*_DECAF_NET_BUFFEREDSOCKET_H_*/
diff --git a/src/decaf/src/main/decaf/net/ConnectException.h b/src/decaf/src/main/decaf/net/ConnectException.h deleted file mode 100644 index e6f87ea..0000000 --- a/src/decaf/src/main/decaf/net/ConnectException.h +++ /dev/null
@@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_CONNECTEXCEPTION_H_ -#define _DECAF_NET_CONNECTEXCEPTION_H_ - -#include <decaf/util/Config.h> -#include <decaf/net/SocketException.h> - -namespace decaf{ -namespace net{ - - class DECAF_API ConnectException : public SocketException { - public: - - /** - * Default Constructor - */ - ConnectException() throw() {} - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - ConnectException( const Exception& ex ) throw() - : SocketException() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - ConnectException( const ConnectException& ex ) throw() - : SocketException() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - ConnectException( const char* file, const int lineNumber, - const char* msg, ... ) throw () - : SocketException() - { - va_list vargs ; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual ConnectException* clone() const { - return new ConnectException( *this ); - } - - /** - * Destructor - */ - virtual ~ConnectException() throw() {} - - }; - -}} - -#endif /*_DECAF_NET_CONNECTEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/net/HttpRetryException.h b/src/decaf/src/main/decaf/net/HttpRetryException.h deleted file mode 100644 index 0074cbc..0000000 --- a/src/decaf/src/main/decaf/net/HttpRetryException.h +++ /dev/null
@@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_HTTPRETRYEXCEPTION_H_ -#define _DECAF_NET_HTTPRETRYEXCEPTION_H_ - -#include <decaf/util/Config.h> -#include <decaf/io/IOException.h> - -namespace decaf{ -namespace net{ - - class DECAF_API HttpRetryException : public io::IOException { - public: - - /** - * Default Constructor - */ - HttpRetryException() throw() {} - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - HttpRetryException( const Exception& ex ) throw() - : io::IOException() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - HttpRetryException( const HttpRetryException& ex ) throw() - : io::IOException() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - HttpRetryException( const char* file, const int lineNumber, - const char* msg, ... ) throw () - : io::IOException() - { - va_list vargs ; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual HttpRetryException* clone() const { - return new HttpRetryException( *this ); - } - - /** - * Destructor - */ - virtual ~HttpRetryException() throw() {} - - }; - -}} - -#endif /*_DECAF_NET_HTTPRETRYEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/net/MalformedURLException.h b/src/decaf/src/main/decaf/net/MalformedURLException.h deleted file mode 100644 index e24acd4..0000000 --- a/src/decaf/src/main/decaf/net/MalformedURLException.h +++ /dev/null
@@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_MALFORMEDURLEXCEPTION_H_ -#define _DECAF_NET_MALFORMEDURLEXCEPTION_H_ - -#include <decaf/util/Config.h> -#include <decaf/io/IOException.h> - -namespace decaf{ -namespace net{ - - class DECAF_API MalformedURLException : public io::IOException { - public: - - /** - * Default Constructor - */ - MalformedURLException() throw() {} - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - MalformedURLException( const Exception& ex ) throw() - : io::IOException() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - MalformedURLException( const MalformedURLException& ex ) throw() - : io::IOException() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - MalformedURLException( const char* file, const int lineNumber, - const char* msg, ... ) throw () - : io::IOException() - { - va_list vargs ; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual MalformedURLException* clone() const { - return new MalformedURLException( *this ); - } - - /** - * Destructor - */ - virtual ~MalformedURLException() throw() {} - - }; - -}} - -#endif /*_DECAF_NET_MALFORMEDURLEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/net/NoRouteToHostException.h b/src/decaf/src/main/decaf/net/NoRouteToHostException.h deleted file mode 100644 index e8b2b85..0000000 --- a/src/decaf/src/main/decaf/net/NoRouteToHostException.h +++ /dev/null
@@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_NOROUTETOHOSTEXCEPTION_H_ -#define _DECAF_NET_NOROUTETOHOSTEXCEPTION_H_ - -#include <decaf/util/Config.h> -#include <decaf/net/SocketException.h> - -namespace decaf{ -namespace net{ - - class DECAF_API NoRouteToHostException : public SocketException { - public: - - /** - * Default Constructor - */ - NoRouteToHostException() throw() {} - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - NoRouteToHostException( const Exception& ex ) throw() - : SocketException() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - NoRouteToHostException( const NoRouteToHostException& ex ) throw() - : SocketException() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - NoRouteToHostException( const char* file, const int lineNumber, - const char* msg, ... ) throw () - : SocketException() - { - va_list vargs ; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual NoRouteToHostException* clone() const { - return new NoRouteToHostException( *this ); - } - - /** - * Destructor - */ - virtual ~NoRouteToHostException() throw() {} - - }; - -}} - -#endif /*_DECAF_NET_NOROUTETOHOSTEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/net/PortUnreachableException.h b/src/decaf/src/main/decaf/net/PortUnreachableException.h deleted file mode 100644 index 937e842..0000000 --- a/src/decaf/src/main/decaf/net/PortUnreachableException.h +++ /dev/null
@@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_PORTUNREACHABLEEXCEPTION_H_ -#define _DECAF_NET_PORTUNREACHABLEEXCEPTION_H_ - -#include <decaf/util/Config.h> -#include <decaf/net/SocketException.h> - -namespace decaf{ -namespace net{ - - class DECAF_API PortUnreachableException : public SocketException { - public: - - /** - * Default Constructor - */ - PortUnreachableException() throw() {} - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - PortUnreachableException( const Exception& ex ) throw() - : SocketException() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - PortUnreachableException( const PortUnreachableException& ex ) throw() - : SocketException() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - PortUnreachableException( const char* file, const int lineNumber, - const char* msg, ... ) throw () - : SocketException() - { - va_list vargs ; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual PortUnreachableException* clone() const { - return new PortUnreachableException( *this ); - } - - /** - * Destructor - */ - virtual ~PortUnreachableException() throw() {} - - }; - -}} - -#endif /*_DECAF_NET_PORTUNREACHABLEEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/net/ProtocolException.h b/src/decaf/src/main/decaf/net/ProtocolException.h deleted file mode 100644 index d422bc8..0000000 --- a/src/decaf/src/main/decaf/net/ProtocolException.h +++ /dev/null
@@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_PROTOCOLEXCEPTION_H_ -#define _DECAF_NET_PROTOCOLEXCEPTION_H_ - -#include <decaf/util/Config.h> -#include <decaf/io/IOException.h> - -namespace decaf{ -namespace net{ - - class DECAF_API ProtocolException : public io::IOException { - public: - - /** - * Default Constructor - */ - ProtocolException() throw() {} - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - ProtocolException( const Exception& ex ) throw() - : io::IOException() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - ProtocolException( const ProtocolException& ex ) throw() - : io::IOException() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - ProtocolException( const char* file, const int lineNumber, - const char* msg, ... ) throw () - : io::IOException() - { - va_list vargs ; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual ProtocolException* clone() const { - return new ProtocolException( *this ); - } - - /** - * Destructor - */ - virtual ~ProtocolException() throw() {} - - }; - -}} - -#endif /*_DECAF_NET_PROTOCOLEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/net/ServerSocket.cpp b/src/decaf/src/main/decaf/net/ServerSocket.cpp deleted file mode 100644 index 23511fa..0000000 --- a/src/decaf/src/main/decaf/net/ServerSocket.cpp +++ /dev/null
@@ -1,156 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ServerSocket.h" -#include "SocketError.h" - -#include <stdio.h> -#include <stdlib.h> -#include <stdarg.h> -#include <ctype.h> -#include <sys/types.h> -#include <assert.h> -#include <string> - -using namespace decaf; -using namespace decaf::net; - -//////////////////////////////////////////////////////////////////////////////// -ServerSocket::ServerSocket() { - socketHandle = (apr_socket_t*)Socket::INVALID_SOCKET_HANDLE; - apr_pool_create( &apr_pool, NULL ); -} - -//////////////////////////////////////////////////////////////////////////////// -ServerSocket::~ServerSocket() { - // No shutdown, just close - dont want blocking destructor. - close(); - - // Free up the APR pool, this will release any remaining data we - // allocated but have deallocated. - apr_pool_destroy( apr_pool ); -} - -//////////////////////////////////////////////////////////////////////////////// -void ServerSocket::bind( const char* host, int port ) throw ( SocketException ) { - this->bind( host, port, SOMAXCONN ); -} - -//////////////////////////////////////////////////////////////////////////////// -void ServerSocket::bind( const char* host, - int port, - int backlog ) throw ( SocketException ) { - - apr_status_t result = APR_SUCCESS; - - if( isBound() ) { - throw SocketException ( __FILE__, __LINE__, - "ServerSocket::bind - Socket already bound" ); - } - - // Verify the port value. - if( port <= 0 || port > 65535 ) { - throw SocketException( - __FILE__, __LINE__, - "ServerSocket::bind - Port out of range: %d", port ); - } - - // Create the Address Info for the Socket - result = apr_sockaddr_info_get( - &socketAddress, host, APR_INET, port, 0, apr_pool ); - - if( result != APR_SUCCESS ) { - socketHandle = (apr_socket_t*)Socket::INVALID_SOCKET_HANDLE; - throw SocketException( - __FILE__, __LINE__, - SocketError::getErrorString().c_str() ); - } - - // Create the socket. - result = apr_socket_create( - &socketHandle, APR_INET, SOCK_STREAM, APR_PROTO_TCP, apr_pool ); - - if( result != APR_SUCCESS ) { - socketHandle = (apr_socket_t*)Socket::INVALID_SOCKET_HANDLE; - throw SocketException( - __FILE__, __LINE__, - SocketError::getErrorString().c_str() ); - } - - // Set the socket to reuse the address and default as blocking - apr_socket_opt_set( socketHandle, APR_SO_REUSEADDR, 1 ); - apr_socket_opt_set( socketHandle, APR_SO_NONBLOCK, 0); - apr_socket_timeout_set( socketHandle, -1 ); - - // Bind to the Socket, this may be where we find out if the port is in use. - result = apr_socket_bind( socketHandle, socketAddress ); - - if( result != APR_SUCCESS ) { - close(); - throw SocketException( - __FILE__, __LINE__, - "ServerSocket::bind - %s", - SocketError::getErrorString().c_str() ); - } - - // Setup the listen for incoming connection requests - result = apr_socket_listen( socketHandle, backlog ); - - if( result != APR_SUCCESS ) { - close(); - throw SocketException( - __FILE__, __LINE__, - "ServerSocket::bind - %s", - SocketError::getErrorString().c_str() ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void ServerSocket::close() throw ( lang::Exception ){ - - if( isBound() ) { - apr_socket_close( socketHandle ); - socketHandle = (apr_socket_t*)Socket::INVALID_SOCKET_HANDLE; - } -} - -//////////////////////////////////////////////////////////////////////////////// -bool ServerSocket::isBound() const { - return this->socketHandle != (apr_socket_t*)Socket::INVALID_SOCKET_HANDLE; -} - -//////////////////////////////////////////////////////////////////////////////// -Socket* ServerSocket::accept() throw (SocketException) -{ - SocketHandle incoming = NULL; - apr_status_t result = APR_SUCCESS; - - // Loop to ignore any signal interruptions that occur during the operation. - do { - result = apr_socket_accept( &incoming, socketHandle, apr_pool ); - } while( result == APR_EINTR ); - - if( result != APR_SUCCESS ) { - std::cout << "Failed to accept New Connection:" << std::endl; - throw SocketException( - __FILE__, __LINE__, - "ServerSocket::accept - %s", - SocketError::getErrorString().c_str() ); - } - - return new TcpSocket( incoming ); -}
diff --git a/src/decaf/src/main/decaf/net/ServerSocket.h b/src/decaf/src/main/decaf/net/ServerSocket.h deleted file mode 100644 index ccff54e..0000000 --- a/src/decaf/src/main/decaf/net/ServerSocket.h +++ /dev/null
@@ -1,100 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_NET_SERVERSOCKETIMPL_H_ -#define _DECAF_NET_SERVERSOCKETIMPL_H_ - -#include <decaf/net/TcpSocket.h> -#include <decaf/net/SocketException.h> -#include <decaf/util/Config.h> - -#include <apr_pools.h> -#include <apr_network_io.h> - -namespace decaf{ -namespace net{ - - /** - * A server socket class (for testing purposes). - */ - class DECAF_API ServerSocket - { - public: - - typedef apr_socket_t* SocketHandle; - typedef apr_sockaddr_t* SocketAddress; - - private: - - SocketHandle socketHandle; - SocketAddress socketAddress; - apr_pool_t* apr_pool; - - public: - - /** - * Constructor. - * Creates a non-bound server socket. - */ - ServerSocket(); - - /** - * Destructor. - * Releases socket handle if close() hasn't been called. - */ - virtual ~ServerSocket(); - - public: - - /** - * Bind and listen to given IP/dns and port. - * @param host IP address or host name. - * @param port TCP port between 1..655535 - */ - virtual void bind( const char* host, int port ) throw ( SocketException ); - - /** - * Bind and listen to given IP/dns and port. - * @param host IP address or host name. - * @param port TCP port between 1..655535 - * @param backlog Size of listen backlog. - */ - virtual void bind( const char* host, - int port, - int backlog ) throw ( SocketException ); - - /** - * Blocks until a client connects to the bound socket. - * @return new socket. Never returns NULL. - */ - virtual Socket* accept () throw ( SocketException ); - - /** - * Closes the server socket. - */ - virtual void close() throw( lang::Exception ); - - /** - * @return true of the server socket is bound. - */ - virtual bool isBound() const; - - }; - -}} - -#endif // _DECAF_NET_SERVERSOCKETIMPL_H_ -
diff --git a/src/decaf/src/main/decaf/net/Socket.h b/src/decaf/src/main/decaf/net/Socket.h deleted file mode 100644 index 106428d..0000000 --- a/src/decaf/src/main/decaf/net/Socket.h +++ /dev/null
@@ -1,170 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_NET_SOCKET_H_ -#define _DECAF_NET_SOCKET_H_ - -#include <decaf/net/SocketException.h> -#include <decaf/io/InputStream.h> -#include <decaf/io/OutputStream.h> -#include <decaf/io/Closeable.h> -#include <decaf/util/Config.h> - -#include <apr_network_io.h> - -namespace decaf{ -namespace net{ - - class DECAF_API Socket : public decaf::io::Closeable - { - public: - - /** - * Define the SocketHandle type. - */ - typedef apr_socket_t* SocketHandle; - - /** - * Define the SocketAddress type - */ - typedef apr_sockaddr_t* SocketAddress; - - /** - * Defines a constant for an invalid socket handle. - */ - static const int INVALID_SOCKET_HANDLE = 0; - - public: - - virtual ~Socket() {} - - /** - * Connects to the specified destination. Closes this socket if - * connected to another destination. - * @param host The host of the server to connect to. - * @param port The port of the server to connect to. - * @throws IOException Thrown if a failure occurred in the connect. - */ - virtual void connect( const char* host, int port ) - throw(SocketException) = 0; - - /** - * Indicates whether or not this socket is connected to a destination. - * @returns true if connected - */ - virtual bool isConnected() const = 0; - - /** - * Gets the InputStream for this socket. - * @return The InputStream for this socket. NULL if not connected. - */ - virtual io::InputStream* getInputStream() = 0; - - /** - * Gets the OutputStream for this socket. - * @return the OutputStream for this socket. NULL if not connected. - */ - virtual io::OutputStream* getOutputStream() = 0; - - /** - * Gets the linger time. - * @return The linger time in seconds. - * @throws SocketException if the operation fails. - */ - virtual int getSoLinger() const throw( SocketException ) = 0; - - /** - * Sets the linger time. - * @param linger The linger time in seconds. If 0, linger is off. - * @throws SocketException if the operation fails. - */ - virtual void setSoLinger( int linger ) throw( SocketException ) = 0; - - /** - * Gets the keep alive flag. - * @return True if keep alive is enabled. - * @throws SocketException if the operation fails. - */ - virtual bool getKeepAlive() const throw( SocketException ) = 0; - - /** - * Enables/disables the keep alive flag. - * @param keepAlive If true, enables the flag. - * @throws SocketException if the operation fails. - */ - virtual void setKeepAlive( bool keepAlive ) throw( SocketException ) = 0; - - /** - * Gets the receive buffer size. - * @return the receive buffer size in bytes. - * @throws SocketException if the operation fails. - */ - virtual int getReceiveBufferSize() const throw( SocketException ) = 0; - - /** - * Sets the recieve buffer size. - * @param size Number of bytes to set the receive buffer to. - * @throws SocketException if the operation fails. - */ - virtual void setReceiveBufferSize( int size ) throw( SocketException ) = 0; - - /** - * Gets the reuse address flag. - * @return True if the address can be reused. - * @throws SocketException if the operation fails. - */ - virtual bool getReuseAddress() const throw( SocketException ) = 0; - - /** - * Sets the reuse address flag. - * @param reuse If true, sets the flag. - * @throws SocketException if the operation fails. - */ - virtual void setReuseAddress( bool reuse ) throw( SocketException ) = 0; - - /** - * Gets the send buffer size. - * @return the size in bytes of the send buffer. - * @throws SocketException if the operation fails. - */ - virtual int getSendBufferSize() const throw( SocketException ) = 0; - - /** - * Sets the send buffer size. - * @param size The number of bytes to set the send buffer to. - * @throws SocketException if the operation fails. - */ - virtual void setSendBufferSize( int size ) throw( SocketException ) = 0; - - /** - * Gets the timeout for socket operations. - * @return The timeout in milliseconds for socket operations. - * @throws SocketException Thrown if unable to retrieve the information. - */ - virtual int getSoTimeout() const throw( SocketException ) = 0; - - /** - * Sets the timeout for socket operations. - * @param timeout The timeout in milliseconds for socket operations.<p> - * @throws SocketException Thrown if unable to set the information. - */ - virtual void setSoTimeout( int timeout ) throw( SocketException ) = 0; - - }; - -}} - -#endif /*_DECAF_NET_SOCKET_H_*/
diff --git a/src/decaf/src/main/decaf/net/SocketError.cpp b/src/decaf/src/main/decaf/net/SocketError.cpp deleted file mode 100644 index e601b0d..0000000 --- a/src/decaf/src/main/decaf/net/SocketError.cpp +++ /dev/null
@@ -1,40 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "SocketError.h" -#include <decaf/util/Config.h> - -using namespace decaf; -using namespace decaf::net; - -//////////////////////////////////////////////////////////////////////////////// -int SocketError::getErrorCode() { - return apr_get_netos_error(); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string SocketError::getErrorString() { - - std::string returnValue; - - // Get the error code. - apr_status_t errorCode = apr_get_netos_error(); - - // Create a buffer and get the error - char buffer[256]; - return apr_strerror( errorCode, buffer, sizeof( buffer ) ); -}
diff --git a/src/decaf/src/main/decaf/net/SocketError.h b/src/decaf/src/main/decaf/net/SocketError.h deleted file mode 100644 index e9152aa..0000000 --- a/src/decaf/src/main/decaf/net/SocketError.h +++ /dev/null
@@ -1,47 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_SOCKETERROR_H_ -#define _DECAF_NET_SOCKETERROR_H_ - -#include <string> -#include <decaf/util/Config.h> - -namespace decaf{ -namespace net{ - - /** - * Static utility class to simplify handling of error codes - * for socket operations. - */ - class DECAF_API SocketError { - public: - - /** - * Gets the last error appropriate for the platform. - */ - static int getErrorCode(); - - /** - * Gets the string description for the last error. - */ - static std::string getErrorString(); - }; - -}} - -#endif /*_DECAF_NET_SOCKETERROR_H_*/
diff --git a/src/decaf/src/main/decaf/net/SocketException.h b/src/decaf/src/main/decaf/net/SocketException.h deleted file mode 100644 index 8933f31..0000000 --- a/src/decaf/src/main/decaf/net/SocketException.h +++ /dev/null
@@ -1,72 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_NET_SOCKETEXCEPTION_H_ -#define _DECAF_NET_SOCKETEXCEPTION_H_ - -#include <decaf/io/IOException.h> - -namespace decaf{ -namespace net{ - - /** - * Exception for errors when manipulating sockets. - */ - class DECAF_API SocketException : public io::IOException - { - public: - - SocketException() throw() {} - - SocketException( const lang::Exception& ex ) throw() - : io::IOException() { - *(lang::Exception*)this = ex; - } - - SocketException( const SocketException& ex ) throw() - : io::IOException() { - *(lang::Exception*)this = ex; - } - - SocketException( const char* file, const int lineNumber, - const char* msg, ...) throw() - : io::IOException() { - va_list vargs; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual SocketException* clone() const { - return new SocketException( *this ); - } - - virtual ~SocketException() throw() {} - - }; - -}} - - -#endif // _DECAF_NET_SOCKETEXCEPTION_H_ -
diff --git a/src/decaf/src/main/decaf/net/SocketFactory.cpp b/src/decaf/src/main/decaf/net/SocketFactory.cpp deleted file mode 100644 index c00d320..0000000 --- a/src/decaf/src/main/decaf/net/SocketFactory.cpp +++ /dev/null
@@ -1,131 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include <decaf/net/SocketFactory.h> -#include <decaf/net/BufferedSocket.h> -#include <decaf/net/TcpSocket.h> -#include <decaf/util/Properties.h> -#include <stdio.h> - -using namespace std; -using namespace decaf; -using namespace decaf::util; -using namespace decaf::net; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; - -//////////////////////////////////////////////////////////////////////////////// -Socket* SocketFactory::createSocket( - const std::string& uri, - const Properties& properties) - throw ( SocketException ) { - - try { - - // Ensure something is actually passed in for the URI - if( uri == "" ) { - throw SocketException( __FILE__, __LINE__, - "SocketTransport::start() - uri not provided" ); - } - - string dummy = uri; - - // Extract the port. - std::size_t portIx = dummy.find( ':' ); - if( portIx == string::npos ) { - throw SocketException( __FILE__, __LINE__, - "SocketTransport::start() - uri malformed - port not specified: %s", uri.c_str() ); - } - string host = dummy.substr( 0, portIx ); - string portString = dummy.substr( portIx + 1 ); - int port; - if( sscanf( portString.c_str(), "%d", &port) != 1 ) { - throw SocketException( __FILE__, __LINE__, - "SocketTransport::start() - unable to extract port from uri: %s", uri.c_str() ); - } - - // Get the read buffer size. - int inputBufferSize = 10000; - dummy = properties.getProperty( "inputBufferSize", "10000" ); - sscanf( dummy.c_str(), "%d", &inputBufferSize ); - - // Get the write buffer size. - int outputBufferSize = 10000; - dummy = properties.getProperty( "outputBufferSize", "10000" ); - sscanf( dummy.c_str(), "%d", &outputBufferSize ); - - // Get the linger flag. - int soLinger = 0; - dummy = properties.getProperty( "soLinger", "0" ); - sscanf( dummy.c_str(), "%d", &soLinger ); - - // Get the keepAlive flag. - bool soKeepAlive = - properties.getProperty( "soKeepAlive", "false" ) == "true"; - - // Get the socket receive buffer size. - int soReceiveBufferSize = -1; - dummy = properties.getProperty( "soReceiveBufferSize", "-1" ); - sscanf( dummy.c_str(), "%d", &soReceiveBufferSize ); - - // Get the socket send buffer size. - int soSendBufferSize = -1; - dummy = properties.getProperty( "soSendBufferSize", "-1" ); - sscanf( dummy.c_str(), "%d", &soSendBufferSize ); - - // Get the socket TCP_NODELAY flag. - bool tcpNoDelay = - properties.getProperty( "tcpNoDelay", "true" ) == "true"; - - // Now that we have all the elements that we wanted - let's do it! - // Create a TCP Socket and then Wrap it in a buffered socket - // so that users get the benefit of buffered reads and writes. - // The buffered socket will own the TcpSocket instance, and will - // clean it up when it is cleaned up. - TcpSocket* tcpSocket = new TcpSocket(); - - try { - - // Connect the socket. - tcpSocket->connect( host.c_str(), port ); - - // Set the socket options. - tcpSocket->setSoLinger( soLinger ); - tcpSocket->setKeepAlive( soKeepAlive ); - tcpSocket->setTcpNoDelay( tcpNoDelay ); - - if( soReceiveBufferSize > 0 ){ - tcpSocket->setReceiveBufferSize( soReceiveBufferSize ); - } - - if( soSendBufferSize > 0 ){ - tcpSocket->setSendBufferSize( soSendBufferSize ); - } - } catch ( SocketException& ex ) { - ex.setMark( __FILE__, __LINE__ ); - try{ - delete tcpSocket; - } catch( SocketException& ex2 ){ /* Absorb */ } - - throw ex; - } - - return tcpSocket; - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCH_EXCEPTION_CONVERT( Exception, SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -}
diff --git a/src/decaf/src/main/decaf/net/SocketFactory.h b/src/decaf/src/main/decaf/net/SocketFactory.h deleted file mode 100644 index ce5c5e3..0000000 --- a/src/decaf/src/main/decaf/net/SocketFactory.h +++ /dev/null
@@ -1,67 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_NET_SOCKETFACTORY_H_ -#define _DECAF_NET_SOCKETFACTORY_H_ - -#include <decaf/net/SocketException.h> -#include <decaf/util/Properties.h> -#include <decaf/util/Config.h> - -namespace decaf{ -namespace net{ - - class Socket; - - /** - * Socket Factory implementation for use in Creating Sockets - * <p> - * <p> - * Property Options: <p> - * Name Value <p> - * ------------------------------------- <p> - * inputBufferSize size in bytes of the buffered input stream buffer. Defaults to 10000.<p> - * outputBufferSize size in bytes of the buffered output stream buffer. Defaults to 10000.<p> - * soLinger linger time for the socket (in microseconds). Defaults to 0.<p> - * soKeepAlive keep alive flag for the socket (true/false). Defaults to false.<p> - * soReceiveBufferSize The size of the socket receive buffer (in bytes). Defaults to 2MB.<p> - * soSendBufferSize The size of the socket send buffer (in bytes). Defaults to 2MB.<p> - * soTimeout The timeout of socket IO operations (in microseconds). Defaults to 10000<p> - * - * @see <code>Socket</code> - */ - class DECAF_API SocketFactory - { - public: - - virtual ~SocketFactory(); - - /** - * Creates and returns a Socket dervied Object based on the values - * defined in the Properties Object that is passed in. - * @param the URI for the Socket Connection. - * @param properties a IProperties pointer. - * @throws SocketException. - */ - static Socket* createSocket( const std::string& uri, - const util::Properties& properties ) - throw ( SocketException ); - - }; - -}} - -#endif /*_DECAF_NET_SOCKETFACTORY_H_*/
diff --git a/src/decaf/src/main/decaf/net/SocketInputStream.cpp b/src/decaf/src/main/decaf/net/SocketInputStream.cpp deleted file mode 100644 index 9219768..0000000 --- a/src/decaf/src/main/decaf/net/SocketInputStream.cpp +++ /dev/null
@@ -1,190 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <decaf/util/Config.h> - -#if !defined(HAVE_WINSOCK2_H) - #include <sys/select.h> - #include <sys/socket.h> -#else - #include <Winsock2.h> -#endif - -#ifdef HAVE_SYS_IOCTL_H -#define BSD_COMP /* Get FIONREAD on Solaris2. */ -#include <sys/ioctl.h> -#endif - -// Pick up FIONREAD on Solaris 2.5. -#ifdef HAVE_SYS_FILIO_H -#include <sys/filio.h> -#endif - -#include <decaf/net/SocketInputStream.h> -#include <decaf/net/SocketError.h> -#include <decaf/io/IOException.h> -#include <decaf/lang/Character.h> -#include <decaf/lang/exceptions/UnsupportedOperationException.h> -#include <stdlib.h> -#include <string> -#include <stdio.h> -#include <iostream> - -#include <apr_portable.h> - -using namespace decaf; -using namespace decaf::net; -using namespace decaf::io; -using namespace decaf::util; -using namespace decaf::lang; -using namespace std; - -//////////////////////////////////////////////////////////////////////////////// -SocketInputStream::SocketInputStream( net::Socket::SocketHandle socket ) { - this->socket = socket; - this->closed = false; -} - -//////////////////////////////////////////////////////////////////////////////// -SocketInputStream::~SocketInputStream(){} - -//////////////////////////////////////////////////////////////////////////////// -void SocketInputStream::close() throw( lang::Exception ){ - this->closed = true; -} - -//////////////////////////////////////////////////////////////////////////////// -std::size_t SocketInputStream::available() const throw ( io::IOException ){ - - // Convert to an OS level socket. - apr_os_sock_t* oss = NULL; - apr_os_sock_get( oss, socket ); - -// The windows version -#if defined(HAVE_WINSOCK2_H) - - unsigned long numBytes = 0; - - if( ::ioctlsocket( *oss, FIONREAD, &numBytes ) == SOCKET_ERROR ){ - throw SocketException( __FILE__, __LINE__, "ioctlsocket failed" ); - } - - return (std::size_t)numBytes; - -#else // !defined(HAVE_WINSOCK2_H) - - // If FIONREAD is defined - use ioctl to find out how many bytes - // are available. - #if defined(FIONREAD) - - std::size_t numBytes = 0; - if( ::ioctl( *oss, FIONREAD, &numBytes ) != -1 ){ - return numBytes; - } - - #endif - - // If we didn't get anything we can use select. This is a little - // less functional. We will poll on the socket - if there is data - // available, we'll return 1, otherwise we'll return zero. - #if defined(HAVE_SELECT) - - fd_set rd; - FD_ZERO(&rd); - FD_SET( *oss, &rd ); - struct timeval tv; - tv.tv_sec = 0; - tv.tv_usec = 0; - int returnCode = ::select( *oss+1, &rd, NULL, NULL, &tv ); - if( returnCode == -1 ){ - throw IOException( - __FILE__, __LINE__, - SocketError::getErrorString().c_str() ); - } - return (returnCode == 0) ? 0 : 1; - - #else - - return 0; - - #endif /* HAVE_SELECT */ - -#endif // !defined(HAVE_WINSOCK2_H) -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned char SocketInputStream::read() throw ( IOException ){ - - apr_status_t result = APR_SUCCESS; - char c; - apr_size_t size = 1; - - result = apr_socket_recv( socket, &c, &size ); - - if( ( size != sizeof(c) && !closed ) || result != APR_SUCCESS ){ - throw IOException( __FILE__, __LINE__, - "activemq::io::SocketInputStream::read - failed reading a byte"); - } - - return c; -} - -//////////////////////////////////////////////////////////////////////////////// -int SocketInputStream::read( unsigned char* buffer, - std::size_t bufferSize ) throw ( IOException ) -{ - apr_size_t size = (apr_size_t)bufferSize; - apr_status_t result = APR_SUCCESS; - - // Read data from the socket, size on input is size of buffer, when done - // size is the number of bytes actually read, can be <= bufferSize. - result = apr_socket_recv( socket, (char*)buffer, &size ); - - // Check for EOF, on windows we only get size==0 so check that to, if we - // were closed though then we throw an IOException so the caller knows we - // aren't usable anymore. - if( ( APR_STATUS_IS_EOF( result ) || size == 0 ) && !closed ) { - return -1; - } - - // Check for a closed call from socket class, if closed then this read fails. - if( closed ){ - throw IOException( - __FILE__, __LINE__, - "activemq::io::SocketInputStream::read - The connection is broken" ); - } - - // Check for error. - if( result != APR_SUCCESS ){ - throw IOException( - __FILE__, __LINE__, - "decaf::net::SocketInputStream::read - %s", - SocketError::getErrorString().c_str() ); - } - - return size; -} - -//////////////////////////////////////////////////////////////////////////////// -std::size_t SocketInputStream::skip( std::size_t num DECAF_UNUSED ) - throw ( io::IOException, lang::exceptions::UnsupportedOperationException ) { - - throw lang::exceptions::UnsupportedOperationException( - __FILE__, __LINE__, - "SocketInputStream::skip() method is not supported"); -} -
diff --git a/src/decaf/src/main/decaf/net/SocketInputStream.h b/src/decaf/src/main/decaf/net/SocketInputStream.h deleted file mode 100644 index ae3bbd0..0000000 --- a/src/decaf/src/main/decaf/net/SocketInputStream.h +++ /dev/null
@@ -1,161 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_SOCKETINPUTSTREAM_H_ -#define _DECAF_NET_SOCKETINPUTSTREAM_H_ - -#include <decaf/io/InputStream.h> -#include <decaf/net/Socket.h> -#include <decaf/util/concurrent/Mutex.h> -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace net{ - - /** - * Input stream for performing reads on a socket. This - * class will only work properly for blocking sockets. - */ - class DECAF_API SocketInputStream : public io::InputStream { - private: - - // The socket handle. - Socket::SocketHandle socket; - util::concurrent::Mutex mutex; - bool closed; - - public: - - /** - * Constructor. - * @param socket the socket handle. - */ - SocketInputStream( Socket::SocketHandle socket ); - - /** - * Destructor. - */ - virtual ~SocketInputStream(); - - /** - * Locks the object. - * @throws Exception - */ - virtual void lock() throw( lang::Exception ){ - mutex.lock(); - } - - /** - * Unlocks the object. - * @throws Exception - */ - virtual void unlock() throw( lang::Exception ){ - mutex.unlock(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void wait() throw( lang::Exception ){ - mutex.wait(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. This wait will timeout after the specified time - * interval. - * @param millisecs time in millisecsonds to wait, or WAIT_INIFINITE - * @throws Exception - */ - virtual void wait( unsigned long millisecs ) - throw( lang::Exception ) { - - mutex.wait( millisecs ); - } - - /** - * Signals a waiter on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notify() throw( lang::Exception ){ - mutex.notify(); - } - - /** - * Signals the waiters on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notifyAll() throw( lang::Exception ){ - mutex.notifyAll(); - } - - /** - * Returns the number of bytes available on the socket to - * be read right now. - * @return The number of bytes currently available to - * be read on the socket. - */ - virtual std::size_t available() const throw ( io::IOException ); - - /** - * Reads a single byte from the buffer. If no data - * is available, blocks until their is. - * @return The next byte. - * @throws IOException thrown if an error occurs. - */ - virtual unsigned char read() throw ( io::IOException ); - - /** - * Reads an array of bytes from the buffer. If no data - * is available, blocks until there is. - * @param buffer (out) the target buffer. - * @param bufferSize the size of the output buffer. - * @return The number of bytes read. - * @throws IOException thrown if an error occurs. - */ - virtual int read( unsigned char* buffer, - std::size_t bufferSize ) - throw ( io::IOException ); - - /** - * Close - does nothing. It is the responsibility of the owner - * of the socket object to close it. - * @throws CMSException - */ - virtual void close() throw( lang::Exception ); - - /** - * Not supported. - * @throws an UnsupportedOperationException. - */ - virtual std::size_t skip( std::size_t num ) - throw ( io::IOException, - lang::exceptions::UnsupportedOperationException ); - - }; - -}} - -#endif /*_DECAF_NET_SOCKETINPUTSTREAM_H_*/
diff --git a/src/decaf/src/main/decaf/net/SocketOutputStream.cpp b/src/decaf/src/main/decaf/net/SocketOutputStream.cpp deleted file mode 100644 index fde0aa1..0000000 --- a/src/decaf/src/main/decaf/net/SocketOutputStream.cpp +++ /dev/null
@@ -1,73 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "SocketOutputStream.h" -#include <decaf/util/Config.h> -#include <decaf/lang/Character.h> -#include "SocketError.h" - -using namespace decaf; -using namespace decaf::net; -using namespace decaf::io; -using namespace decaf::util; -using namespace std; - -//////////////////////////////////////////////////////////////////////////////// -SocketOutputStream::SocketOutputStream( Socket::SocketHandle socket ) { - this->socket = socket; - this->closed = false; -} - -//////////////////////////////////////////////////////////////////////////////// -SocketOutputStream::~SocketOutputStream() { - close(); -} - -//////////////////////////////////////////////////////////////////////////////// -void SocketOutputStream::close() throw( lang::Exception ) { - this->closed = true; -} - -//////////////////////////////////////////////////////////////////////////////// -void SocketOutputStream::write( unsigned char c ) throw ( IOException ) { - write( &c, 1 ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SocketOutputStream::write( const unsigned char* buffer, std::size_t len ) - throw ( IOException ) { - - apr_size_t remaining = (apr_size_t)len; - apr_status_t result = APR_SUCCESS; - - while( remaining > 0 && !closed ) { - // On input remaining is the bytes to send, after return remaining - // is the amount actually sent. - result = apr_socket_send( socket, (const char*)buffer, &remaining ); - - if( result != APR_SUCCESS || closed ) { - throw IOException( - __FILE__, __LINE__, - "decaf::net::SocketOutputStream::write - %s", - SocketError::getErrorString().c_str() ); - } - - // move us to next position to write, or maybe end. - buffer += remaining; - remaining = len - remaining; - } -}
diff --git a/src/decaf/src/main/decaf/net/SocketOutputStream.h b/src/decaf/src/main/decaf/net/SocketOutputStream.h deleted file mode 100644 index 49e1e2d..0000000 --- a/src/decaf/src/main/decaf/net/SocketOutputStream.h +++ /dev/null
@@ -1,142 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_SOCKETOUTPUTSTREAM_H_ -#define _DECAF_NET_SOCKETOUTPUTSTREAM_H_ - -#include <decaf/io/OutputStream.h> -#include <decaf/net/Socket.h> -#include <decaf/util/concurrent/Mutex.h> - -namespace decaf{ -namespace net{ - - /** - * Output stream for performing write operations - * on a socket. - */ - class DECAF_API SocketOutputStream : public io::OutputStream { - private: - - // The socket. - Socket::SocketHandle socket; - util::concurrent::Mutex mutex; - bool closed; - - public: - - /** - * Constructor. - * @param socket the socket handle. - */ - SocketOutputStream( Socket::SocketHandle socket ); - - virtual ~SocketOutputStream(); - - /** - * Locks the object. - * @throws Exception - */ - virtual void lock() throw( lang::Exception ){ - mutex.lock(); - } - - /** - * Unlocks the object. - * @throws Exception - */ - virtual void unlock() throw( lang::Exception ){ - mutex.unlock(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void wait() throw( lang::Exception ){ - mutex.wait(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. This wait will timeout after the specified time - * interval. - * @param millisecs time in millisecsonds to wait, or WAIT_INIFINITE - * @throws Exception - */ - virtual void wait( unsigned long millisecs ) - throw( lang::Exception ) { - - mutex.wait( millisecs ); - } - - /** - * Signals a waiter on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notify() throw( lang::Exception ){ - mutex.notify(); - } - - /** - * Signals the waiters on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - */ - virtual void notifyAll() throw( lang::Exception ){ - mutex.notifyAll(); - } - - /** - * Writes a single byte to the output stream. - * @param c the byte. - * @throws IOException thrown if an error occurs. - */ - virtual void write( unsigned char c ) throw ( io::IOException ); - - /** - * Writes an array of bytes to the output stream. - * @param buffer The array of bytes to write. - * @param len The number of bytes from the buffer to be written. - * @throws IOException thrown if an error occurs. - */ - virtual void write( const unsigned char* buffer, - std::size_t len ) throw ( io::IOException ); - - /** - * Flush - does nothing. - * @throws IOException - */ - virtual void flush() throw ( io::IOException ){}; - - /** - * Close - does nothing. It is the responsibility of the owner - * of the socket object to close it. - * @throws CMSException - */ - virtual void close() throw( lang::Exception ); - - }; - -}} - -#endif /*_DECAF_NET_SOCKETOUTPUTSTREAM_H_*/
diff --git a/src/decaf/src/main/decaf/net/SocketTimeoutException.h b/src/decaf/src/main/decaf/net/SocketTimeoutException.h deleted file mode 100644 index 16e23b2..0000000 --- a/src/decaf/src/main/decaf/net/SocketTimeoutException.h +++ /dev/null
@@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_SOCKETTIMEOUTEXCEPTION_H_ -#define _DECAF_NET_SOCKETTIMEOUTEXCEPTION_H_ - -#include <decaf/util/Config.h> -#include <decaf/io/InterruptedIOException.h> - -namespace decaf{ -namespace net{ - - class DECAF_API SocketTimeoutException : public io::InterruptedIOException { - public: - - /** - * Default Constructor - */ - SocketTimeoutException() throw() {} - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - SocketTimeoutException( const Exception& ex ) throw() - : io::InterruptedIOException() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - SocketTimeoutException( const SocketTimeoutException& ex ) throw() - : io::InterruptedIOException() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - SocketTimeoutException( const char* file, const int lineNumber, - const char* msg, ... ) throw () - : io::InterruptedIOException() - { - va_list vargs ; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual SocketTimeoutException* clone() const { - return new SocketTimeoutException( *this ); - } - - /** - * Destructor - */ - virtual ~SocketTimeoutException() throw() {} - - }; - -}} - -#endif /*_DECAF_NET_SOCKETTIMEOUTEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/net/TcpSocket.cpp b/src/decaf/src/main/decaf/net/TcpSocket.cpp deleted file mode 100644 index 9eb0195..0000000 --- a/src/decaf/src/main/decaf/net/TcpSocket.cpp +++ /dev/null
@@ -1,320 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include <decaf/util/Config.h> - -#include "TcpSocket.h" -#include "SocketInputStream.h" -#include "SocketOutputStream.h" -#include "SocketError.h" - -using namespace decaf; -using namespace decaf::net; -using namespace decaf::io; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -TcpSocket::TcpSocket() throw ( SocketException ) - : apr_pool( NULL ), - socketHandle( INVALID_SOCKET_HANDLE ), - inputStream( NULL ), - outputStream( NULL ) { -} - -//////////////////////////////////////////////////////////////////////////////// -TcpSocket::TcpSocket( SocketHandle socketHandle ) - : apr_pool( NULL ), - socketHandle( INVALID_SOCKET_HANDLE ), - inputStream( NULL ), - outputStream( NULL ) { - - try { - - this->socketHandle = socketHandle; - this->inputStream = new SocketInputStream( socketHandle ); - this->outputStream = new SocketOutputStream( socketHandle ); - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -} - -//////////////////////////////////////////////////////////////////////////////// -TcpSocket::~TcpSocket() { - // No shutdown, just close - dont want blocking destructor. - close(); -} - -//////////////////////////////////////////////////////////////////////////////// -InputStream* TcpSocket::getInputStream(){ - return inputStream; -} - -//////////////////////////////////////////////////////////////////////////////// -OutputStream* TcpSocket::getOutputStream(){ - return outputStream; -} - -//////////////////////////////////////////////////////////////////////////////// -void TcpSocket::connect(const char* host, int port) throw ( SocketException ) { - - try{ - - if( isConnected() ) { - throw SocketException( __FILE__, __LINE__, - "Socket::connect - Socket already connected. host: %s, port: %d", host, port ); - } - - // Create the APR Pool - apr_pool_create( &apr_pool, NULL ); - - // Create the Address data - checkResult( apr_sockaddr_info_get( - &socketAddress, host, APR_INET, port, 0, apr_pool ) ); - - // Create the actual socket. - checkResult( apr_socket_create( - &socketHandle, socketAddress->family, SOCK_STREAM, APR_PROTO_TCP, apr_pool ) ); - - // it is a good idea to specify socket options explicitly. in this - // case, we make a blocking socket with system timeout, this should allow us - // the time needed to connect to the socket before returning, but not - // block us forever waiting if there isn't anyone there. Some poeple - // say that you shouldn't use this mode as its an OS timeout that is not - // controllable, if this becomes an issue, we should decide on what a - // reasonable timeout should be and set it here. - apr_socket_opt_set( socketHandle, APR_SO_NONBLOCK, 0 ); - apr_socket_timeout_set( socketHandle, -1 ); - - checkResult( apr_socket_connect( socketHandle, socketAddress ) ); - - // Now that we are connected, we want to set ourself up as a blocking - // socket by default. - apr_socket_opt_set( socketHandle, APR_SO_NONBLOCK, 0 ); - apr_socket_timeout_set( socketHandle, -1 ); - - // Create an input/output stream for this socket. - inputStream = new SocketInputStream( socketHandle ); - outputStream = new SocketOutputStream( socketHandle ); - - } catch( SocketException& ex ) { - ex.setMark( __FILE__, __LINE__); - try{ close(); } catch( lang::Exception& cx){ /* Absorb */ } - throw ex; - } catch( ... ) { - try{ close(); } catch( lang::Exception& cx){ /* Absorb */ } - throw SocketException( - __FILE__, __LINE__, - "TcpSocket::connect() - caught unknown exception" ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void TcpSocket::close() throw( lang::Exception ) -{ - // Destroy the input stream. - if( inputStream != NULL ){ - delete inputStream; - inputStream = NULL; - } - - // Destroy the output stream. - if( outputStream != NULL ){ - delete outputStream; - outputStream = NULL; - } - - // When connected we first shutdown, which breaks our reads and writes - // then we close to free APR resources. - if( isConnected() ) { - apr_socket_close( socketHandle ); - socketHandle = INVALID_SOCKET_HANDLE; - } - - // Destroy the APR Pool - if( apr_pool != NULL ) { - apr_pool_destroy( apr_pool ); - apr_pool = NULL; - } -} - -//////////////////////////////////////////////////////////////////////////////// -int TcpSocket::getSoLinger() const throw( SocketException ){ - - try{ - int value = 0; - checkResult( apr_socket_opt_get( socketHandle, APR_SO_LINGER, &value ) ); - return value; - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void TcpSocket::setSoLinger( int dolinger ) throw( SocketException ){ - - try{ - checkResult( apr_socket_opt_set( socketHandle, APR_SO_LINGER, dolinger ) ); - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -} - -//////////////////////////////////////////////////////////////////////////////// -bool TcpSocket::getKeepAlive() const throw( SocketException ){ - - try{ - int value = 0; - checkResult( apr_socket_opt_get( socketHandle, APR_SO_KEEPALIVE, &value ) ); - return value != 0; - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void TcpSocket::setKeepAlive( const bool keepAlive ) throw( SocketException ){ - - try{ - int value = keepAlive ? 1 : 0; - checkResult( apr_socket_opt_set( socketHandle, APR_SO_KEEPALIVE, value ) ); - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -} - -//////////////////////////////////////////////////////////////////////////////// -int TcpSocket::getReceiveBufferSize() const throw( SocketException ){ - - try{ - int value; - checkResult( apr_socket_opt_get( socketHandle, APR_SO_RCVBUF, &value ) ); - return value; - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void TcpSocket::setReceiveBufferSize( int size ) throw( SocketException ){ - - try{ - checkResult( apr_socket_opt_set( socketHandle, APR_SO_RCVBUF, size ) ); - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -} - -//////////////////////////////////////////////////////////////////////////////// -bool TcpSocket::getReuseAddress() const throw( SocketException ){ - - try{ - int value; - checkResult( apr_socket_opt_get( socketHandle, APR_SO_REUSEADDR, &value ) ); - return value != 0; - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void TcpSocket::setReuseAddress( bool reuse ) throw( SocketException ){ - - try{ - int value = reuse ? 1 : 0; - checkResult( apr_socket_opt_set( socketHandle, APR_SO_REUSEADDR, value ) ); - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -} - -//////////////////////////////////////////////////////////////////////////////// -int TcpSocket::getSendBufferSize() const throw( SocketException ){ - - try{ - int value; - checkResult( apr_socket_opt_get( socketHandle, APR_SO_SNDBUF, &value ) ); - return value; - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void TcpSocket::setSendBufferSize( int size ) throw( SocketException ){ - - try{ - checkResult( apr_socket_opt_set( socketHandle, APR_SO_SNDBUF, size ) ); - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void TcpSocket::setSoTimeout ( const int millisecs ) throw ( SocketException ) -{ - try{ - // Time is in microseconds so multiply by 1000. - checkResult( apr_socket_timeout_set( socketHandle, millisecs * 1000 ) ); - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -} - -//////////////////////////////////////////////////////////////////////////////// -int TcpSocket::getSoTimeout() const throw( SocketException ) -{ - try{ - // Time is in microseconds so divide by 1000. - apr_interval_time_t value = 0; - checkResult( apr_socket_timeout_get( socketHandle, &value ) ); - return value / 1000; - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -} - -//////////////////////////////////////////////////////////////////////////////// -bool TcpSocket::getTcpNoDelay() const throw ( lang::Exception ) { - - try{ - int value; - checkResult( apr_socket_opt_get( socketHandle, APR_TCP_NODELAY, &value ) ); - return value != 0; - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void TcpSocket::setTcpNoDelay( bool value ) throw ( lang::Exception ) { - - try{ - int ivalue = value ? 1 : 0; - checkResult( apr_socket_opt_set( socketHandle, APR_TCP_NODELAY, ivalue ) ); - } - DECAF_CATCH_RETHROW( SocketException ) - DECAF_CATCHALL_THROW( SocketException ) -} - -//////////////////////////////////////////////////////////////////////////////// -void TcpSocket::checkResult( apr_status_t value ) const throw (SocketException) { - - if( value != APR_SUCCESS ){ - throw SocketException( - __FILE__, __LINE__, - SocketError::getErrorString().c_str() ); - } -}
diff --git a/src/decaf/src/main/decaf/net/TcpSocket.h b/src/decaf/src/main/decaf/net/TcpSocket.h deleted file mode 100644 index 0c35988..0000000 --- a/src/decaf/src/main/decaf/net/TcpSocket.h +++ /dev/null
@@ -1,240 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_NET_TCPSOCKET_H_ -#define _DECAF_NET_TCPSOCKET_H_ - -#include <decaf/net/SocketException.h> -#include <decaf/net/Socket.h> -#include <decaf/io/InputStream.h> -#include <decaf/io/OutputStream.h> -#include <decaf/util/Config.h> - -#include <apr_pools.h> - -namespace decaf{ -namespace net{ - - // Forward declarations - class SocketInputStream; - class SocketOutputStream; - - /** - * Platform-independent implementation of the socket interface. - */ - class DECAF_API TcpSocket : public Socket { - private: - - /** - * APR Socket Pool to allocate from - */ - apr_pool_t* apr_pool; - - /** - * The handle for this socket. - */ - SocketHandle socketHandle; - - /** - * The Address info for this Socket - */ - SocketAddress socketAddress; - - /** - * The input stream for reading this socket. - */ - SocketInputStream* inputStream; - - /** - * The output stream for writing to this socket. - */ - SocketOutputStream* outputStream; - - public: - - /** - * Construct a non-connected socket. - * @throws SocketException thrown one windows if the static initialization - * call to WSAStartup was not successful. - */ - TcpSocket() throw ( SocketException ); - - /** - * Construct a connected or bound socket based on given - * socket handle. - * @param socketHandle a socket handle to wrap in the object - */ - TcpSocket( SocketHandle socketHandle ); - - /** - * Destruct. - * Releases the socket handle but not - * gracefully shut down the connection. - */ - virtual ~TcpSocket(); - - /** - * Gets the handle for the socket. - * @return SocketHabler for this Socket, can be NULL - */ - SocketHandle getSocketHandle () { - return socketHandle; - } - - /** - * Connects to the specified destination. Closes this socket if - * connected to another destination. - * @param host The host of the server to connect to. - * @param port The port of the server to connect to. - * @throws IOException Thrown if a failure occurred in the connect. - */ - virtual void connect( const char* host, int port ) throw( SocketException ); - - /** - * Indicates whether or not this socket is connected to a destination. - * @return true if connected - */ - virtual bool isConnected() const{ - return socketHandle != INVALID_SOCKET_HANDLE; - } - - /** - * Gets the InputStream for this socket. - * @return The InputStream for this socket. NULL if not connected. - */ - virtual io::InputStream* getInputStream(); - - /** - * Gets the OutputStream for this socket. - * @return the OutputStream for this socket. NULL if not connected. - */ - virtual io::OutputStream* getOutputStream(); - - /** - * Gets the linger time. - * @return The linger time in seconds. - * @throws SocketException if the operation fails. - */ - virtual int getSoLinger() const throw( SocketException ); - - /** - * Sets the linger time. - * @param linger The linger time in seconds. If 0, linger is off. - * @throws SocketException if the operation fails. - */ - virtual void setSoLinger( int linger ) throw( SocketException ); - - /** - * Gets the keep alive flag. - * @return True if keep alive is enabled. - * @throws SocketException if the operation fails. - */ - virtual bool getKeepAlive() const throw( SocketException ); - - /** - * Enables/disables the keep alive flag. - * @param keepAlive If true, enables the flag. - * @throws SocketException if the operation fails. - */ - virtual void setKeepAlive( bool keepAlive ) throw( SocketException ); - - /** - * Gets the receive buffer size. - * @return the receive buffer size in bytes. - * @throws SocketException if the operation fails. - */ - virtual int getReceiveBufferSize() const throw( SocketException ); - - /** - * Sets the recieve buffer size. - * @param size Number of bytes to set the receive buffer to. - * @throws SocketException if the operation fails. - */ - virtual void setReceiveBufferSize( int size ) throw( SocketException ); - - /** - * Gets the reuse address flag. - * @return True if the address can be reused. - * @throws SocketException if the operation fails. - */ - virtual bool getReuseAddress() const throw( SocketException ); - - /** - * Sets the reuse address flag. - * @param reuse If true, sets the flag. - * @throws SocketException if the operation fails. - */ - virtual void setReuseAddress( bool reuse ) throw( SocketException ); - - /** - * Gets the send buffer size. - * @return the size in bytes of the send buffer. - * @throws SocketException if the operation fails. - */ - virtual int getSendBufferSize() const throw( SocketException ); - - /** - * Sets the send buffer size. - * @param size The number of bytes to set the send buffer to. - * @throws SocketException if the operation fails. - */ - virtual void setSendBufferSize( int size ) throw( SocketException ); - - /** - * Gets the timeout for socket operations. - * @return The timeout in milliseconds for socket operations. - * @throws SocketException Thrown if unable to retrieve the information. - */ - virtual int getSoTimeout() const throw( SocketException ); - - /** - * Sets the timeout for socket operations. - * @param timeout The timeout in milliseconds for socket operations.<p> - * @throws SocketException Thrown if unable to set the information. - */ - virtual void setSoTimeout( int timeout ) throw(SocketException); - - /** - * Closes this object and deallocates the appropriate resources. - * @throws CMSException - */ - virtual void close() throw( lang::Exception ); - - public: - - /** - * Gets the Status of the TCP_NODELAY param for this socket as a Bool - * @returns true if TCP_NODELAY is enabled - * @throws CMSException - */ - virtual bool getTcpNoDelay() const throw ( lang::Exception ); - - /** - * Sets the Status of the TCP_NODELAY param for this socket as a Bool - * @param value - true if TCP_NODELAY is to be enabled - * @throws CMSException - */ - virtual void setTcpNoDelay( bool value ) throw ( lang::Exception ); - - protected: - - void checkResult( apr_status_t value ) const throw (SocketException); - - }; - -}} - -#endif /*_DECAF_NET_TCPSOCKET_H_*/
diff --git a/src/decaf/src/main/decaf/net/URI.cpp b/src/decaf/src/main/decaf/net/URI.cpp deleted file mode 100644 index 9293027..0000000 --- a/src/decaf/src/main/decaf/net/URI.cpp +++ /dev/null
@@ -1,284 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "URI.h" - -#include <apr_strings.h> -#include <decaf/lang/Integer.h> - -using namespace decaf; -using namespace decaf::net; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; - -//////////////////////////////////////////////////////////////////////////////// -const std::string URI::unreserved = "_-!.~\'()*"; -const std::string URI::punct = ",;:$&+="; -const std::string URI::reserved = punct + "?/[]@"; -const std::string URI::someLegal = unreserved + punct; -const std::string URI::allLegal = unreserved + reserved; - -//////////////////////////////////////////////////////////////////////////////// -URI::URI( const std::string& uri ) throw ( URISyntaxException) { - - this->uriString = NULL; - this->parseURI( uri ); -} - -//////////////////////////////////////////////////////////////////////////////// -URI::URI( const std::string& scheme, - const std::string& ssp, - const std::string& fragment ) throw ( URISyntaxException ) { - - std::string uri = ""; - - if( scheme != "" ) { - uri.append( scheme ); - uri.append( ":" ); - } - - if( ssp != "" ) { - // QUOTE ILLEGAL CHARACTERS - uri.append( quoteComponent( ssp, allLegal ) ); - } - - if( fragment != "" ) { - uri.append( "#" ); - // QUOTE ILLEGAL CHARACTERS - uri.append( quoteComponent( fragment, allLegal ) ); - } - - // Now hand of to the main parse function. - this->parseURI( uri ); -} - -//////////////////////////////////////////////////////////////////////////////// -URI::URI( const std::string& scheme, const std::string& userInfo, - const std::string& host, int port, - const std::string& path, const std::string& query, - const std::string& fragment ) throw ( URISyntaxException ) { - - this->uriString = NULL; - - if( scheme == "" && userInfo == "" && host == "" && - path == "" && query == "" && fragment == "" ) { - - this->uri.path = ""; - return; - } - - if( scheme != "" && path.length() > 0 && path.at(0) != '/') { - - throw URISyntaxException( - __FILE__, __LINE__, path, - "URI::URI - Path string: %s starts with invalid char '/'" ); - } - - std::string uri = ""; - if( scheme != "" ) { - uri.append( scheme ); - uri.append( ":" ); - } - - if( userInfo != "" || host != "" || port != -1 ) { - uri.append( "//" ); - } - - if( userInfo != "" ) { - // QUOTE ILLEGAL CHARACTERS in userinfo - uri.append(quoteComponent( userInfo, someLegal ) ); - uri.append( "@" ); - } - - if( host != "" ) { - std::string newHost = host; - - // check for ipv6 addresses that hasn't been enclosed - // in square brackets - if( host.find( ":" ) != std::string::npos && - host.find( "]" ) == std::string::npos && - host.find( "[" ) == std::string::npos ) { - - newHost = std::string( "[" ) + host + "]"; - } - - uri.append( newHost ); - } - - if( port != -1 ) { - uri.append( ":" ); - uri.append( Integer::toString( port ) ); - } - - if( path != "" ) { - // QUOTE ILLEGAL CHARS - uri.append( quoteComponent( path, "/@" + someLegal ) ); - } - - if( query != "" ) { - uri.append( "?" ); - // QUOTE ILLEGAL CHARS - uri.append( quoteComponent( query, allLegal ) ); - } - - if( fragment != "" ) { - // QUOTE ILLEGAL CHARS - uri.append( "#" ); - uri.append( quoteComponent( fragment, allLegal ) ); - } - - this->parseURI( uri ); -} - -//////////////////////////////////////////////////////////////////////////////// -URI::URI( const std::string& scheme, const std::string& host, - const std::string& path, const std::string& fragment ) - throw ( URISyntaxException ) { - - this->uriString = NULL; - - URI::URI( scheme, "", host, -1, path, "", fragment ); -} - -//////////////////////////////////////////////////////////////////////////////// -URI::URI( const std::string& scheme, const std::string& authority, - const std::string& path, const std::string& query, - const std::string& fragment ) throw ( URISyntaxException ) { - - this->uriString = NULL; - - if( scheme != "" && path.length() > 0 && path.at(0) != '/' ) { - throw URISyntaxException( - __FILE__, __LINE__, path, - "URI::URI - Path String %s must start with a '/'" ); - } - - std::string uri = ""; - if( scheme != "" ) { - uri.append( scheme ); - uri.append( ":" ); - } - if( authority != "" ) { - uri.append("//"); - // QUOTE ILLEGAL CHARS - uri.append( quoteComponent( authority, "@[]" + someLegal ) ); - } - - if( path != "" ) { - // QUOTE ILLEGAL CHARS - uri.append( quoteComponent( path, "/@" + someLegal ) ); - } - if( query != "" ) { - // QUOTE ILLEGAL CHARS - uri.append( "?" ); - uri.append( quoteComponent( query, allLegal ) ); - } - if( fragment != "" ) { - // QUOTE ILLEGAL CHARS - uri.append( "#" ); - uri.append( quoteComponent( fragment, allLegal ) ); - } - - this->parseURI( uri ); -} - -//////////////////////////////////////////////////////////////////////////////// -void URI::parseURI( const std::string& uri ) throw ( URISyntaxException ) { - - // Use APR to perform the main parse. - apr_status_t result = apr_uri_parse( pool.getAprPool(), - uri.c_str(), &this->uri ); - - if( result != APR_SUCCESS ) { - throw URISyntaxException( - __FILE__, __LINE__, uri, - "URI::praseURI - URI String %s invalid." ); - } - - std::cout << "\n"; - std::cout << "Original URI String: " << uri << std::endl; - std::cout << "\n"; - std::cout << "Scheme: " - << ( this->uri.scheme ? this->uri.scheme : "" ) << std::endl; - std::cout << "Host: " - << ( this->uri.hostinfo ? this->uri.hostinfo : "" ) << std::endl; - std::cout << "User: " - << ( this->uri.user ? this->uri.user : "" ) << std::endl; - std::cout << "Passwrod: " - << ( this->uri.password ? this->uri.password : "" ) << std::endl; - std::cout << "Host Name: " - << ( this->uri.hostname ? this->uri.hostname : "" ) << std::endl; - std::cout << "Port Str: " - << ( this->uri.port_str ? this->uri.port_str : "" ) << std::endl; - std::cout << "Path: " - << ( this->uri.path ? this->uri.path : "" ) << std::endl; - std::cout << "Query: " - << ( this->uri.query ? this->uri.query : "" ) << std::endl; - std::cout << "Fragment: " - << ( this->uri.fragment ? this->uri.fragment : "" ) << std::endl; - std::cout << "Port: " << this->uri.port << std::endl; - std::cout << "Is Initialized: " << this->uri.is_initialized << std::endl; - std::cout << "DNS Looked Up: " << this->uri.dns_looked_up << std::endl; - std::cout << "DNS Resolved: " << this->uri.dns_resolved << std::endl; -} - -//////////////////////////////////////////////////////////////////////////////// -int URI::compareTo( const URI& value ) const { - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// -bool URI::equals( const URI& value ) const { - return compareTo( value ) == 0 ? true : false; -} - -//////////////////////////////////////////////////////////////////////////////// -bool URI::operator==( const URI& value ) const { - return compareTo( value ) == 0 ? true : false; -} - -//////////////////////////////////////////////////////////////////////////////// -bool URI::operator<( const URI& value ) const { - return compareTo( value ) == -1 ? true : false; -} - -//////////////////////////////////////////////////////////////////////////////// -URI URI::create( const std::string uri ) - throw ( lang::exceptions::IllegalArgumentException ) { - - try { - return URI( uri ); - } catch( URISyntaxException& e ) { - throw IllegalArgumentException( e ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -std::string URI::quoteComponent( const std::string& component, - const std::string& legalset ) { -// try { - /* - * Use a different encoder than URLEncoder since: 1. chars like "/", - * "#", "@" etc needs to be preserved instead of being encoded, 2. - * UTF-8 char set needs to be used for encoding instead of default - * platform one - */ -// return URIEncoderDecoder.quoteIllegal(component, legalset); -// } catch( UnsupportedEncodingException e ) { -// throw RuntimeException( e ); -// } -}
diff --git a/src/decaf/src/main/decaf/net/URI.h b/src/decaf/src/main/decaf/net/URI.h deleted file mode 100644 index cbc3114..0000000 --- a/src/decaf/src/main/decaf/net/URI.h +++ /dev/null
@@ -1,433 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_URI_H_ -#define _DECAF_NET_URI_H_ - -#include <decaf/util/Config.h> -#include <decaf/lang/Comparable.h> -#include <decaf/lang/exceptions/IllegalArgumentException.h> -#include <decaf/net/URISyntaxException.h> -#include <decaf/net/MalformedURLException.h> -#include <decaf/net/URL.h> -#include <string> -#include <apr_uri.h> -#include <decaf/internal/AprPool.h> - -namespace decaf{ -namespace net{ - - /** - * This class represents an instance of a URI as defined by RFC 2396. - */ - class DECAF_API URI : public lang::Comparable<URI> { - private: - - // Apr Data for parsing the uri. - apr_uri_t uri; - internal::AprPool pool; - - // The original string entered from URI( string ), empty if not set. - const char* uriString; - - static const std::string unreserved; - static const std::string punct; - static const std::string reserved; - static const std::string someLegal; - static const std::string allLegal; - - public: - - /** - * Constructs a URI from the given string - * @param uri - string uri to parse. - */ - URI( const std::string& uri ) throw ( URISyntaxException ); - - /** - * Constructs a URI from the given components. - * @param scheme - the uri scheme - * @param ssp - Scheme specific part - * @param fragment - Fragment - */ - URI( const std::string& scheme, - const std::string& ssp, - const std::string& fragment) throw ( URISyntaxException ); - - /** - * Constructs a URI from the given components. - * @param scheme - Scheme name - * @param userInfo - User name and authorization information - * @param host - Host name - * @param port - Port number - * @param path - Path - * @param query - Query - * @param fragment - Fragment - */ - URI( const std::string& scheme, const std::string& userInfo, - const std::string& host, int port, - const std::string& path, const std::string& query, - const std::string& fragment ) throw ( URISyntaxException ); - - /** - * Constructs a URI from the given components. - * @param scheme - Scheme name - * @param host - Host name - * @param path - Path - * @param fragment - Fragment - */ - URI( const std::string& scheme, const std::string& host, - const std::string& path, const std::string& fragment ) - throw ( URISyntaxException ); - - /** - * Constructs a URI from the given components. - * @param scheme - Scheme name - * @param authority - Authority - * @param path - Path - * @param query - Query - * @param fragment - Fragment - */ - URI( const std::string& scheme, const std::string& authority, - const std::string& path, const std::string& query, - const std::string& fragment ) throw ( URISyntaxException); - - virtual ~URI() {} - - /** - * Compares this object with the specified object for order. Returns a - * negative integer, zero, or a positive integer as this object is less - * than, equal to, or greater than the specified object. - * @param value - the value to compare to this one. - * @returns zero if equal minus one if less than and one if greater than. - */ - virtual int compareTo( const URI& value ) const; - - /** - * @return true if this value is considered equal to the passed value. - */ - virtual bool equals( const URI& value ) const; - - /** - * Compares equality between this object and the one passed. - * @param value - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const URI& value ) const; - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param value - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const URI& value ) const; - - /** - * @eturns the decoded authority component of this URI. - */ - std::string getAuthority() const; - - /** - * @returns the decoded fragment component of this URI. - */ - std::string getFragment() const; - - /** - * @returns the host component of this URI. - */ - std::string getHost() const; - - /** - * @returns the path component of this URI. - */ - std::string getPath() const; - - /** - * @returns the port component of this URI. - */ - int getPort() const; - - /** - * @returns the query component of this URI. - */ - std::string getQuery() const; - - /** - * @returns the scheme component of this URI - */ - std::string getScheme() const; - - /** - * @returns the user info component of this URI - */ - std::string getUserInfo() const; - - /** - * Returns the raw authority component of this URI. - * - * The authority component of a URI, if defined, only contains the - * commercial-at character ('@') and characters in the unreserved, punct, - * escaped, and other categories. If the authority is server-based then - * it is further constrained to have valid user-information, host, and - * port components. - * @returns the raw authority component of the URI - */ - std::string getRawAuthority() const; - - /** - * Returns the raw fragment component of this URI. - * - * The fragment component of a URI, if defined, only contains legal URI - * characters. - * @returns the raw fragment component of this URI - */ - std::string getRawFragment() const; - - /** - * Returns the raw path component of this URI. - * - * The path component of a URI, if defined, only contains the slash - * character ('/'), the commercial-at character ('@'), and characters - * in the unreserved, punct, escaped, and other categories. - * @returns the raw path component of this URI - */ - std::string getRawPath() const; - - /** - * Returns the raw query component of this URI. - * The query component of a URI, if defined, only contains legal URI characters. - * @returns the raw query component of the URI. - */ - std::string getRawQuery() const; - - /** - * Returns the raw scheme-specific part of this URI. The scheme-specific - * part is never undefined, though it may be empty. - * The scheme-specific part of a URI only contains legal URI characters. - * @returns the raw scheme special part of the uri - */ - std::string getRawSchemeSpecificPart() const; - - /** - * Returns the decoded scheme-specific part of this URI. - * The string returned by this method is equal to that returned by the - * getRawSchemeSpecificPart method except that all sequences of escaped - * octets are decoded. - * @returns the raw scheme specific part of the uri. - */ - std::string getSchemeSpecificPart() const; - - /** - * Returns the raw user-information component of this URI. - * The user-information component of a URI, if defined, only contains - * characters in the unreserved, punct, escaped, and other categories. - * @returns the raw user-information component of the URI - */ - std::string getRawUserInfo() const; - - /** - * Tells whether or not this URI is absolute. A URI is absolute if, - * and only if, it has a scheme component. - * @returns true if, and only if, this URI is absolute - */ - bool isAbsolute() const; - - /** - * Tells whether or not this URI is opaque. A URI is opaque if, and only - * if, it is absolute and its scheme-specific part does not begin with a - * slash character ('/'). An opaque URI has a scheme, a scheme-specific - * part, and possibly a fragment; all other components are undefined. - * @returns true if, and only if, this URI is opaque - */ - bool isOpaque() const; - - /** - * Normalizes this URI's path. If this URI is opaque, or if its path is - * already in normal form, then this URI is returned. Otherwise a new URI - * is constructed that is identical to this URI except that its path is - * computed by normalizing this URI's path in a manner consistent with - * RFC 2396, section 5.2, step 6, sub-steps c through f; that is: - * - * 1. All "." segments are removed. - * 2. If a ".." segment is preceded by a non-".." segment then both of t - * hese segments are removed. This step is repeated until it is no - * longer applicable. - * 3. If the path is relative, and if its first segment contains a colon - * character (':'), then a "." segment is prepended. This prevents a - * relative URI with a path such as "a:b/c/d" from later being re-parsed - * as an opaque URI with a scheme of "a" and a scheme-specific part of - * "b/c/d". (Deviation from RFC 2396) - * - * A normalized path will begin with one or more ".." segments if there were - * insufficient non-".." segments preceding them to allow their removal. A - * normalized path will begin with a "." segment if one was inserted by step - * 3 above. Otherwise, a normalized path will not contain any "." or ".." - * segments. - * @returns A URI equivalent to this URI, but whose path is in normal form - */ - URI normalize() const; - - /** - * Attempts to parse this URI's authority component, if defined, into - * user-information, host, and port components. - * - * If this URI's authority component has already been recognized as being - * server-based then it will already have been parsed into user-information, - * host, and port components. In this case, or if this URI has no authority - * component, this method simply returns this URI. - * - * Otherwise this method attempts once more to parse the authority component - * into user-information, host, and port components, and throws an exception - * describing why the authority component could not be parsed in that way. - * @returns A URI whose authority field has been parsed as a server-based - * authority - * @throws URISyntaxException - If the authority component of this URI is - * defined but cannot be parsed as a server-based authority. - */ - URI parseServerAuthority() const throw ( URISyntaxException ); - - /** - * Relativizes the given URI against this URI. The relativization of the - * given URI against this URI is computed as follows: - * - * 1. If either this URI or the given URI are opaque, or if the scheme and - * authority components of the two URIs are not identical, or if the path - * of this URI is not a prefix of the path of the given URI, then the - * given URI is returned. - * 2. Otherwise a new relative hierarchical URI is constructed with query - * and fragment components taken from the given URI and with a path - * component computed by removing this URI's path from the beginning of - * the given URI's path. - * - * @param uri - The URI to be relativized against this URI - * @returns The resulting URI - */ - URI relativize( const URI& uri ) const; - - /** - * Constructs a new URI by parsing the given string and then resolving it - * against this URI. - * - * This convenience method works as if invoking it were equivalent to - * evaluating the expression resolve( URI::create( str ) ). - * @param str - The string to be parsed into a URI - * @returns The resulting URI - * @throws IllegalArgumentException - If the given string violates RFC 2396 - */ - URI resolve( const std::string& str ) - throw ( lang::exceptions::IllegalArgumentException ); - - /** - * Resolves the given URI against this URI. - * - * If the given URI is already absolute, or if this URI is opaque, then a - * copy of the given URI is returned. - * - * If the given URI's fragment component is defined, its path component is - * empty, and its scheme, authority, and query components are undefined, then - * a URI with the given fragment but with all other components equal to those - * of this URI is returned. This allows a URI representing a standalone - * fragment reference, such as "#foo", to be usefully resolved against a base - * URI. - * - * Otherwise this method constructs a new hierarchical URI in a manner - * consistent with RFC 2396, section 5.2; that is: - * - * 1. A new URI is constructed with this URI's scheme and the given URI's - * query and fragment components. - * 2. If the given URI has an authority component then the new URI's authority - * and path are taken from the given URI. - * 3. Otherwise the new URI's authority component is copied from this URI, - * and its path is computed as follows: - * - * 1. If the given URI's path is absolute then the new URI's path is - * taken from the given URI. - * 2. Otherwise the given URI's path is relative, and so the new URI's - * path is computed by resolving the path of the given URI against the - * path of this URI. This is done by concatenating all but the last - * segment of this URI's path, if any, with the given URI's path and - * then normalizing the result as if by invoking the normalize method. - * - * The result of this method is absolute if, and only if, either this URI is - * absolute or the given URI is absolute. - * @param uri - The URI to be resolved against this URI - * @returns The resulting URI - */ - URI resolve( const URI& uri ); - - /** - * Returns the content of this URI as a string. - * - * If this URI was created by invoking one of the constructors in this class - * then a string equivalent to the original input string, or to the string - * computed from the originally-given components, as appropriate, is returned. - * Otherwise this URI was created by normalization, resolution, or - * relativization, and so a string is constructed from this URI's components - * according to the rules specified in RFC 2396, section 5.2, step 7. - * @returns the string form of this URI - */ - std::string toString() const; - - /** - * Constructs a URL from this URI. - * - * This convenience method works as if invoking it were equivalent to - * evaluating the expression new URL(this.toString()) after first checking - * that this URI is absolute. - * @returns A URL constructed from this URI - * @throws IllegalArgumentException - If this URL is not absolute - * @throws MalformedURLException - If a protocol handler for the URL could not - * be found, or if some other error occurred while constructing the URL - */ - URL toURL() const - throw ( MalformedURLException, lang::exceptions::IllegalArgumentException ); - - public: // Static Methods - - /** - * Creates a URI by parsing the given string. - * This convenience factory method works as if by invoking the URI(string) - * constructor; any URISyntaxException thrown by the constructor is caught - * and wrapped in a new IllegalArgumentException object, which is then thrown. - * @param uri - URI string to parse - * @throws IllegalArgumentException - */ - static URI create( const std::string uri ) - throw ( lang::exceptions::IllegalArgumentException ); - - private: - - // Parses a URI string and fills in the member data, throws a - // URISyntaxException if things fail - void parseURI( const std::string& uri ) throw ( URISyntaxException ); - - /* - * Quote illegal chars for each component, but not the others - * - * @param component java.lang.String the component to be converted @param - * legalset java.lang.String the legal character set allowed in the - * component s @return java.lang.String the converted string - */ - std::string quoteComponent( const std::string& component, - const std::string& legalset ); - - }; - -}} - -#endif /*_DECAF_NET_URI_H_*/
diff --git a/src/decaf/src/main/decaf/net/URISyntaxException.h b/src/decaf/src/main/decaf/net/URISyntaxException.h deleted file mode 100644 index f50e9c6..0000000 --- a/src/decaf/src/main/decaf/net/URISyntaxException.h +++ /dev/null
@@ -1,158 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_URISYNTAXEXCEPTION_H_ -#define _DECAF_NET_URISYNTAXEXCEPTION_H_ - -#include <decaf/util/Config.h> -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace net{ - - class DECAF_API URISyntaxException : public lang::Exception { - private: - - std::string reason; - std::string input; - int index; - - public: - - /** - * Default Constructor - */ - URISyntaxException() throw() { - this->reason = ""; - this->input = ""; - this->index = -1; - } - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - URISyntaxException( const Exception& ex ) throw() : Exception() { - - *(Exception*)this = ex; - this->reason = ""; - this->input = ""; - this->index = -1; - } - - /** - * Copy Constructor - */ - URISyntaxException( const URISyntaxException& ex ) throw() : Exception() { - - *(Exception*)this = ex; - this->reason = ex.getReason(); - this->input = ex.getInput(); - this->index = ex.getIndex(); - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the input string that caused the error - * and the reason for the error. - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param input uri string - * @param reason string for the failure. - * @param list of primitives that are formatted into the message - */ - URISyntaxException( const char* file, const int lineNumber, - const std::string& input, - const std::string& reason ) throw () : Exception() { - - this->reason = reason; - this->input = input; - this->index = -1; - - const char * message = "Input: %s, Reason it failed: %s"; - this->setMessage( message, input.c_str(), reason.c_str() ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the input string that caused the error - * and the reason for the error. - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param input uri string - * @param reason string for the failure. - * @param index in the uri string where the error occured. - */ - URISyntaxException( const char* file, const int lineNumber, - const std::string& input, - const std::string& reason, - int index ) throw () : Exception() { - - this->reason = reason; - this->input = input; - this->index = index; - - const char * message = "Input: %s, Index %d resulted in this error: %s"; - this->setMessage( message, input.c_str(), index, reason.c_str() ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual URISyntaxException* clone() const { - return new URISyntaxException( *this ); - } - - /** - * Destructor - */ - virtual ~URISyntaxException() throw() {} - - /** - * @returns the Input string that cause this exception or "" - */ - std::string getInput() const { - return input; - } - - /** - * @returns the Reason given for this failure, or "" - */ - std::string getReason() const { - return reason; - } - - /** - * @returns the index in the input string where the error occured or -1 - */ - int getIndex() const { - return index; - } - - }; - -}} - -#endif /*_DECAF_NET_URISYNTAXEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/net/URL.cpp b/src/decaf/src/main/decaf/net/URL.cpp deleted file mode 100644 index f1595fe..0000000 --- a/src/decaf/src/main/decaf/net/URL.cpp +++ /dev/null
@@ -1,25 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "URL.h" - -using namespace decaf; -using namespace decaf::net; - -//////////////////////////////////////////////////////////////////////////////// -URL::URL() { -}
diff --git a/src/decaf/src/main/decaf/net/URL.h b/src/decaf/src/main/decaf/net/URL.h deleted file mode 100644 index fb4b0d9..0000000 --- a/src/decaf/src/main/decaf/net/URL.h +++ /dev/null
@@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_URL_H_ -#define _DECAF_NET_URL_H_ - -#include <decaf/util/Config.h> - -namespace decaf{ -namespace net{ - - class DECAF_API URL { - public: - - URL(); - virtual ~URL() {} - - }; - -}} - -#endif /*_DECAF_NET_URL_H_*/
diff --git a/src/decaf/src/main/decaf/net/URLDecoder.cpp b/src/decaf/src/main/decaf/net/URLDecoder.cpp deleted file mode 100644 index edb0d8c..0000000 --- a/src/decaf/src/main/decaf/net/URLDecoder.cpp +++ /dev/null
@@ -1,25 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "URLDecoder.h" - -using namespace decaf; -using namespace decaf::net; - -//////////////////////////////////////////////////////////////////////////////// -URLDecoder::URLDecoder() { -}
diff --git a/src/decaf/src/main/decaf/net/URLDecoder.h b/src/decaf/src/main/decaf/net/URLDecoder.h deleted file mode 100644 index 5ef665e..0000000 --- a/src/decaf/src/main/decaf/net/URLDecoder.h +++ /dev/null
@@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_URLDECODER_H_ -#define _DECAF_NET_URLDECODER_H_ - -#include <decaf/util/Config.h> - -namespace decaf{ -namespace net{ - - class DECAF_API URLDecoder { - public: - - URLDecoder(); - virtual ~URLDecoder() {} - - }; - -}} - -#endif /*_DECAF_NET_URLDECODER_H_*/
diff --git a/src/decaf/src/main/decaf/net/URLEncoder.cpp b/src/decaf/src/main/decaf/net/URLEncoder.cpp deleted file mode 100644 index 5bd0654..0000000 --- a/src/decaf/src/main/decaf/net/URLEncoder.cpp +++ /dev/null
@@ -1,25 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "URLEncoder.h" - -using namespace decaf; -using namespace decaf::net; - -//////////////////////////////////////////////////////////////////////////////// -URLEncoder::URLEncoder() { -}
diff --git a/src/decaf/src/main/decaf/net/URLEncoder.h b/src/decaf/src/main/decaf/net/URLEncoder.h deleted file mode 100644 index fa7e0b0..0000000 --- a/src/decaf/src/main/decaf/net/URLEncoder.h +++ /dev/null
@@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_URLENCODER_H_ -#define _DECAF_NET_URLENCODER_H_ - -#include <decaf/util/Config.h> - -namespace decaf{ -namespace net{ - - class DECAF_API URLEncoder { - public: - - URLEncoder(); - virtual ~URLEncoder() {} - - }; - -}} - -#endif /*_DECAF_NET_URLENCODER_H_*/
diff --git a/src/decaf/src/main/decaf/net/UnknownHostException.h b/src/decaf/src/main/decaf/net/UnknownHostException.h deleted file mode 100644 index 40e9e23..0000000 --- a/src/decaf/src/main/decaf/net/UnknownHostException.h +++ /dev/null
@@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_UNKNOWNHOSTEXCEPTION_H_ -#define _DECAF_NET_UNKNOWNHOSTEXCEPTION_H_ - -#include <decaf/util/Config.h> -#include <decaf/io/IOException.h> - -namespace decaf{ -namespace net{ - - class DECAF_API UnknownHostException : public io::IOException { - public: - - /** - * Default Constructor - */ - UnknownHostException() throw() {} - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - UnknownHostException( const Exception& ex ) throw() - : io::IOException() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - UnknownHostException( const UnknownHostException& ex ) throw() - : io::IOException() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - UnknownHostException( const char* file, const int lineNumber, - const char* msg, ... ) throw () - : io::IOException() - { - va_list vargs ; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual UnknownHostException* clone() const { - return new UnknownHostException( *this ); - } - - /** - * Destructor - */ - virtual ~UnknownHostException() throw() {} - - }; - -}} - -#endif /*_DECAF_NET_UNKNOWNHOSTEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/net/UnknownServiceException.h b/src/decaf/src/main/decaf/net/UnknownServiceException.h deleted file mode 100644 index a97d0fe..0000000 --- a/src/decaf/src/main/decaf/net/UnknownServiceException.h +++ /dev/null
@@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_UNKNOWNSERVICEEXCEPTION_H_ -#define _DECAF_NET_UNKNOWNSERVICEEXCEPTION_H_ - -#include <decaf/util/Config.h> -#include <decaf/io/IOException.h> - -namespace decaf{ -namespace net{ - - class DECAF_API UnknownServiceException : public io::IOException { - public: - - /** - * Default Constructor - */ - UnknownServiceException() throw() {} - - /** - * Conversion Constructor from some other Exception - * @param An exception that should become this type of Exception - */ - UnknownServiceException( const Exception& ex ) throw() - : io::IOException() - { - *(Exception*)this = ex; - } - - /** - * Copy Constructor - */ - UnknownServiceException( const UnknownServiceException& ex ) throw() - : io::IOException() - { - *(Exception*)this = ex; - } - - /** - * Constructor - Initializes the file name and line number where - * this message occured. Sets the message to report, using an - * optional list of arguments to parse into the message - * @param file name where exception occurs - * @param line number where the exception occurred. - * @param message to report - * @param list of primitives that are formatted into the message - */ - UnknownServiceException( const char* file, const int lineNumber, - const char* msg, ... ) throw () - : io::IOException() - { - va_list vargs ; - va_start( vargs, msg ); - buildMessage( msg, vargs ); - - // Set the first mark for this exception. - setMark( file, lineNumber ); - } - - /** - * Clones this exception. This is useful for cases where you need - * to preserve the type of the original exception as well as the message. - * All subclasses should override. - */ - virtual UnknownServiceException* clone() const { - return new UnknownServiceException( *this ); - } - - /** - * Destructor - */ - virtual ~UnknownServiceException() throw() {} - - }; - -}} - -#endif /*_DECAF_NET_UNKNOWNSERVICEEXCEPTION_H_*/
diff --git a/src/decaf/src/main/decaf/util/Collection.h b/src/decaf/src/main/decaf/util/Collection.h deleted file mode 100644 index 7562a62..0000000 --- a/src/decaf/src/main/decaf/util/Collection.h +++ /dev/null
@@ -1,245 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_COLLECTION_H_ -#define _DECAF_UTIL_COLLECTION_H_ - -#include <decaf/util/Config.h> -#include <devaf/lang/exceptions/UnsupportedOperationException.h> -#include <devaf/lang/exceptions/NullPointerException.h> -#include <devaf/lang/exceptions/IllegalArgumentException.h> -#include <decaf/util/Iterator.h> - -namespace decaf{ -namespace util{ - - /** - * The root interface in the collection hierarchy. A collection represents - * a group of objects, known as its elements. Some collections allow - * duplicate elements and others do not. Some are ordered and others - * unordered. This interface is typically used to pass collections - * around and manipulate them where maximum generality is desired. - * - * All general-purpose Collection implementation classes (which typically - * implement Collection indirectly through one of its subinterfaces) should - * provide two "standard" constructors: a void (no arguments) constructor, - * which creates an empty collection, and a constructor with a single argument - * of type Collection, which creates a new collection with the same elements - * as its argument. In effect, the latter constructor allows the user to copy - * any collection, producing an equivalent collection of the desired - * implementation type. There is no way to enforce this convention - * (as interfaces cannot contain constructors) but all of the general-purpose - * Collection implementations in the Decaf platform libraries comply. - * - * The "destructive" methods contained in this interface, that is, the methods - * that modify the collection on which they operate, are specified to throw - * UnsupportedOperationException if this collection does not support the - * operation. If this is the case, these methods may, but are not required - * to, throw an UnsupportedOperationException if the invocation would have - * no effect on the collection. For example, invoking the addAll(Collection) - * method on an unmodifiable collection may, but is not required to, throw - * the exception if the collection to be added is empty. - * - * Many methods in Collections Framework interfaces are defined in terms of - * the equals method. For example, the specification for the - * contains(Object o) method says: "returns true if and only if this - * collection contains at least one element e such that - * (o==null ? e==null : o.equals(e))." - * - * @since 1.0 - */ - template< typename T > - class DECAF_API Collection - { - public: - - virtual ~Collection() {} - - /** - * Returns the number of elements in this collection. If this collection - * contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE. - * @returns the number of elements in this collection - */ - virtual int size() = 0; - - /** - * @returns true if this collection contains no elements. - */ - virtual bool isEmpty() = 0; - - /** - * Returns true if this collection contains the specified element. More - * formally, returns true if and only if this collection contains at - * least one element e such that (o==null ? e==null : o.equals(e)). - * @param value - value to check for presence in the collection - * @returns true if there is at least one of the elements in the collection - * @thorws NullPointerException - */ - virtual bool contains( const E& value ) - throw ( lang::exceptions::NullPointerException ) = 0; - - /** - * Returns an iterator over the elements in this collection. There are - * no guarantees concerning the order in which the elements are - * returned (unless this collection is an instance of some class that - * provides a guarantee). - * @returns an Iterator over the elements in this collection - */ - virtual Iterator<E>* iterator() = 0; - - /** - * Returns an array containing all of the elements in this collection. If - * the collection makes any guarantees as to what order its elements are - * returned by its iterator, this method must return the elements in the - * same order. - * - * This method acts as bridge between array-based and collection-based APIs. - * @returns an array of the elements in this collection. - */ - virtual std::vector<E> toArray() = 0; - - /** - * Returns true if this collection changed as a result of the call. - * (Returns false if this collection does not permit duplicates and - * already contains the specified element.) - * - * Collections that support this operation may place limitations on - * what elements may be added to this collection. In particular, - * some collections will refuse to add null elements, and others - * will impose restrictions on the type of elements that may be - * added. Collection classes should clearly specify in their - * documentation any restrictions on what elements may be added. - * - * If a collection refuses to add a particular element for any - * reason other than that it already contains the element, it must - * throw an exception (rather than returning false). This preserves - * the invariant that a collection always contains the specified - * element after this call returns. - * - * For non-pointer values, i.e. class instances or string's the object - * will be copied into the collection, thus the object must support - * being copied, must not hide the copy constructor and assignment - * operator. - * - * @param value - reference to the element to add. - * @returns true if the element was added - * @throw UnsupportedOperationException - * @throw NullPointerException - * @throw IllegalArgumentException - */ - virtual bool add( const E& value ) - throw ( lang::exceptions::UnsupportedOperationException, - lang::exceptions::NullPointerException, - lang::exceptions::IllegalArgumentException ) = 0; - - /** - * Removes a single instance of the specified element from the - * collection. More formally, removes an element e such that - * (o==null ? e==null : o.equals(e)), if this collection contains one - * or more such elements. Returns true if this collection contained - * the specified element (or equivalently, if this collection changed - * as a result of the call). - * @param value - reference to the element to remove. - * @returns true if the collection was changed - * @throw UnsupportedOperationException - * @throw NullPointerException - */ - virtual bool remove( const E& value ) - throw ( lang::exceptions::UnsupportedOperationException, - lang::exceptions::NullPointerException ) = 0; - - /** - * Returns true if this collection contains all of the elements in - * the specified collection. - * @param source - Collection to compare to this one. - * @thorw Exception - */ - virtual bool containsAll( const Collection<E>& source ) - throw ( lang::Exception ) = 0; - - /** - * Adds all of the elements in the specified collection to this - * collection. The behavior of this operation is undefined if the - * specified collection is modified while the operation is in progress. - * (This implies that the behavior of this call is undefined if the - * specified collection is this collection, and this collection is - * nonempty.) - * @param source - Collection whose elements are added to this one. - * @return true if this collection changed as a result of the call - * @throw UnsupportedOperationException - * @throw NullPointerException - * @throw IllegalArgumentException - */ - virtual bool addAll( const Collection<E>& source ) - throw ( lang::exceptions::UnsupportedOperationException, - lang::exceptions::NullPointerException, - lang::exceptions::IllegalArgumentException ) = 0; - - /** - * Removes all this collection's elements that are also contained in - * the specified collection (optional operation). After this call returns, - * this collection will contain no elements in common with the specified - * collection. - * @param value - The Collection whose elements are to be removed - * @returns true if the collection changed as a result of this call - * @throw UnsupportedOperationException - * @throw NullPointerException - * @throw IllegalArgumentException - */ - virtual bool removeAll( const Collection<E>& value ) - throw ( lang::exceptions::UnsupportedOperationException, - lang::exceptions::NullPointerException, - lang::exceptions::IllegalArgumentException ) = 0; - - /** - * Retains only the elements in this collection that are contained in the - * specified collection (optional operation). In other words, removes from - * this collection all of its elements that are not contained in the - * specified collection. - * @param value - The Collection whose elements are to be retained - * @returns true if the collection changed as a result of this call - * @throw UnsupportedOperationException - * @throw NullPointerException - * @throw IllegalArgumentException - */ - virtual bool retainAll( const Collection<E> value ) - throw ( lang::exceptions::UnsupportedOperationException, - lang::exceptions::NullPointerException, - lang::exceptions::IllegalArgumentException ) = 0; - - /** - * Removes all of the elements from this collection (optional operation). - * This collection will be empty after this method returns unless it throws - * an exception. - * @throw UnsupportedOperationException - */ - virtual void clear() - throw ( lang::exceptions::UnsupportedOperationException ) = 0; - - /** - * Compares the passed collection to this one, if they contain the - * same elements, i.e. all their elements are equivalent, then it - * returns true. - * @returns true if the Collections contain the same elements. - */ - virtual bool equals( const Collection<E>& value ) = 0; - - }; - -}} - -#endif /*_DECAF_UTIL_COLLECTION_H_*/
diff --git a/src/decaf/src/main/decaf/util/Comparator.h b/src/decaf/src/main/decaf/util/Comparator.h deleted file mode 100644 index 3701966..0000000 --- a/src/decaf/src/main/decaf/util/Comparator.h +++ /dev/null
@@ -1,76 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_COMPARATOR_H_ -#define _DECAF_UTIL_COMPARATOR_H_ - -#include <decaf/util/Config.h> - -namespace decaf{ -namespace util{ - - /** - * A comparison function, which imposes a total ordering on some collection - * of objects. Comparators can be passed to a sort method (such as - * Collections.sort) to allow precise control over the sort order. Comparators - * can also be used to control the order of certain data structures. - * - * The ordering imposed by a Comparator c on a set of elements S is said to - * be consistent with equals if and only if - * ( compare( e1, e2) == 0 ) has the same boolean value as ( e1 == e2 ) for - * every e1 and e2 in S. - */ - template<typename T> - class DECAF_API Comparator - { - public: - - virtual ~Comparator() {} - - /** - * Compares its two arguments for order. Returns a negative integer, zero, - * or a positive integer as the first argument is less than, equal to, or - * greater than the second. - * - * The implementor must ensure that - * sgn( compare(x, y)) == -sgn(compare(y, x) ) for all x and y. - * (This implies that compare(x, y) must throw an exception if and only - * if compare(y, x) throws an exception.) - * - * The implementor must also ensure that the relation is transitive: - * ((compare(x, y)>0) && (compare(y, z)>0)) implies compare(x, z)>0. - * - * Finally, the implementer must ensure that compare(x, y)==0 implies - * that sgn(compare(x, z))==sgn(compare(y, z)) for all z. - * - * It is generally the case, but not strictly required that - * (compare(x, y)==0) == ( x == y) ). Generally speaking, any comparator - * that violates this condition should clearly indicate this fact. The - * recommended language is "Note: this comparator imposes orderings that - * are inconsistent with equals." - * @param o1 - the first object to be compared - * @param o2 - the second object to be compared - * @returns a negative integer, zero, or a positive integer as the first - * argument is less than, equal to, or greater than the second. - */ - virtual int compare( const E& o1, const E& o2 ) = 0; - - }; - -}} - -#endif /*_DECAF_UTIL_COMPARATOR_H_*/
diff --git a/src/decaf/src/main/decaf/util/Config.cpp b/src/decaf/src/main/decaf/util/Config.cpp deleted file mode 100644 index 191aa53..0000000 --- a/src/decaf/src/main/decaf/util/Config.cpp +++ /dev/null
@@ -1,20 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <decaf/util/Config.h> - -_APR_LIBRARY _APR_LIBRARY::self;
diff --git a/src/decaf/src/main/decaf/util/Config.h b/src/decaf/src/main/decaf/util/Config.h deleted file mode 100644 index 7ca005a..0000000 --- a/src/decaf/src/main/decaf/util/Config.h +++ /dev/null
@@ -1,113 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_CONFIG_H_ -#define _DECAF_UTIL_CONFIG_H_ - -#ifdef DECAF_DLL -#ifdef DECAF_EXPORTS -#define DECAF_API __declspec(dllexport) -#else -#define DECAF_API __declspec(dllimport) -#endif -#else -#define DECAF_API -#endif - -// -// The purpose of this header is to try to detect the supported headers -// of the platform when the ./configure script is not being used to generate -// the config.h file. -// -#if defined(HAVE_CONFIG_H) - - // config.h is generated by the ./configure script and it only - // used by unix like systems (including cygwin) - #include <config.h> - -#else /* !defined(HAVE_CONFIG_H) */ - - // Not using ./configure script and make system.. chances are your using the native build tools - // of Windows or OS X to do this build - - #if defined(_WIN32) - #ifndef HAVE_OBJBASE_H - #define HAVE_OBJBASE_H - #endif - #ifndef HAVE_RPCDCE_H - #define HAVE_RPCDCE_H - #endif - #ifndef HAVE_WINSOCK2_H - #define HAVE_WINSOCK2_H - #endif - #ifndef HAVE_STRUCT_ADDRINFO - #define HAVE_STRUCT_ADDRINFO - #endif - #ifndef HAVE_SYS_TIMEB_H - #define HAVE_SYS_TIMEB_H - #endif - #ifndef HAVE_FTIME - #define HAVE_FTIME - #endif - #ifndef HAVE_WINDOWS_H - #define HAVE_WINDOWS_H - #endif - #else - #ifndef HAVE_UUID_UUID_H - #define HAVE_UUID_UUID_H - #endif - #ifndef HAVE_UUID_T - #define HAVE_UUID_T - #endif - #ifndef HAVE_PTHREAD_H - #define HAVE_PTHREAD_H - #endif - #endif - -#endif /* !defined(HAVE_CONFIG_H) */ - -// Macro to mark attributes as unused -#ifdef __GNUC__ - #define DECAF_UNUSED __attribute__ ((__unused__)) -#else - #define DECAF_UNUSED -#endif - - -// Define a class to hanlde APR initialization and termination, then declare a global -// static instance that will cause the library to only be initialized once. -#include <apr.h> -#include <apr_general.h> -#include <apr_pools.h> - -class _APR_LIBRARY { -public: - - _APR_LIBRARY() { - apr_initialize(); - } - - ~_APR_LIBRARY() { - apr_terminate(); - } - -private: - - static _APR_LIBRARY self; - -}; - -#endif /*_DECAF_UTIL_CONFIG_H_*/
diff --git a/src/decaf/src/main/decaf/util/Date.cpp b/src/decaf/src/main/decaf/util/Date.cpp deleted file mode 100644 index 9eb6ea9..0000000 --- a/src/decaf/src/main/decaf/util/Date.cpp +++ /dev/null
@@ -1,32 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <decaf/util/Date.h> -#include <decaf/util/Config.h> -#include <decaf/lang/exceptions/UnsupportedOperationException.h> - -#include <apr_time.h> - -using namespace std; -using namespace decaf; -using namespace decaf::util; -using namespace decaf::lang::exceptions; - -//////////////////////////////////////////////////////////////////////////////// -long long Date::getCurrentTimeMilliseconds(){ - return apr_time_now() / 1000; -}
diff --git a/src/decaf/src/main/decaf/util/Date.h b/src/decaf/src/main/decaf/util/Date.h deleted file mode 100644 index 54c8f4e..0000000 --- a/src/decaf/src/main/decaf/util/Date.h +++ /dev/null
@@ -1,130 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_DATE_H_ -#define _DECAF_UTIL_DATE_H_ - -#include <decaf/util/Config.h> - -namespace decaf{ -namespace util{ - - /** - * Wrapper class around a time value in milliseconds. This - * class is comparable to Java's java.util.Date class. - */ - class DECAF_API Date - { - private: - - /** - * The underlying time value in milliseconds� - */ - long long time; - - public: - - /** - * Default constructor - sets time to now. - */ - Date(){ - time = getCurrentTimeMilliseconds(); - } - - /** - * Constructs the date with a given time value. - * @param milliseconds The time in milliseconds; - */ - Date( long long milliseconds ){ - this->time = milliseconds; - } - - /** - * Copy constructor. - */ - Date( const Date& source ){ - (*this) = source; - } - - virtual ~Date(){} - - /** - * Gets the underlying time. - * @return The underlying time value in milliseconds. - */ - long long getTime() const{ - return time; - } - - /** - * Sets the underlying time. - * @param milliseconds The underlying time value in - * milliseconds. - */ - void setTime( long long milliseconds ){ - this->time = milliseconds; - } - - /** - * Determines wether or not this date falls after the - * specified time. - * @param when The date to compare - * @return true if this date falls after when. - */ - bool after( Date& when ) const{ - return time > when.time; - } - - /** - * Determines wether or not this date falls before the - * specified time. - * @param when The date to compare - * @return true if this date falls before when. - */ - bool before( Date& when ) const{ - return time < when.time; - } - - /** - * Determines wether or not this date is equal to the - * specified time. - * @param when The date to compare - * @return true if this date is equal to when. - */ - bool equals( Date& when ) const{ - return time == when.time; - } - - /** - * Assignment operator. - */ - Date& operator =( const Date& source ){ - this->time = source.time; - return *this; - } - - /** - * Returns the current time in milliseconds. Comparable - * to Java's System.currentTimeMillis method. - * @return The current time in milliseconds. - */ - static long long getCurrentTimeMilliseconds(); - }; - -}} - -#endif /*_DECAF_UTIL_DATE_H_*/
diff --git a/src/decaf/src/main/decaf/util/Iterator.h b/src/decaf/src/main/decaf/util/Iterator.h deleted file mode 100644 index 3409697..0000000 --- a/src/decaf/src/main/decaf/util/Iterator.h +++ /dev/null
@@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_ITERATOR_H_ -#define _DECAF_UTIL_ITERATOR_H_ - -#include <decaf/lang/exceptions/NoSuchElementException.h> -#include <decaf/lang/exceptions/IllegalStateException.h> -#include <decaf/lang/exceptions/UnsupportedOperationException.h> - -namespace decaf{ -namespace util{ - - /** - * Defines an object that can be used to iterate over the elements of a - * collection. The iterator provides a way to access and remove elements - * with well defined semantics. - */ - template< typename T> - class DECAF_API Iterator { - public: - - virtual ~Iterator() {} - - /** - * Returns the next element in the iteration. Calling this method - * repeatedly until the hasNext() method returns false will return - * each element in the underlying collection exactly once. - * @returns next element in the iteration of elements - * @throws NoSuchElementException - iteration has no more elements. - */ - virtual T next() throw( lang::exceptions::NoSuchElementException ) = 0; - - /** - * Returns true if the iteration has more elements. Returns false if - * the next call to next would result in an NoSuchElementException to - * be thrown. - */ - virtual bool hasNext() const = 0; - - /** - * Removes from the underlying collection the last element returned - * by the iterator (optional operation). This method can be called - * only once per call to next. The behavior of an iterator is - * unspecified if the underlying collection is modified while the - * iteration is in progress in any way other than by calling this - * method. - * @throws UnsupportedOperationException - if the remove operation - * is not supported by this Iterator. - * @throws IllegalStateException - if the next method has not yet been - * called, or the remove method has already been called after - * the last call to the next method. - */ - virtual void remove() throw ( lang::exceptions::IllegalStateException, - lang::exceptions::UnsupportedOperationException ) = 0; - - }; - -}} - -#endif /*_DECAF_UTIL_ITERATOR_H_*/
diff --git a/src/decaf/src/main/decaf/util/Map.h b/src/decaf/src/main/decaf/util/Map.h deleted file mode 100644 index 7575d4c..0000000 --- a/src/decaf/src/main/decaf/util/Map.h +++ /dev/null
@@ -1,273 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_MAP_H_ -#define _DECAF_UTIL_MAP_H_ - -#include <map> -#include <vector> -#include <decaf/lang/exceptions/NoSuchElementException.h> -#include <decaf/util/concurrent/Synchronizable.h> -#include <decaf/util/concurrent/Mutex.h> - -namespace decaf{ -namespace util{ - - /** - * Map template that wraps around a std::map to provide - * a more user-friendly interface and to provide common - * functions that do not exist in std::map. - */ - template <typename K, typename V> class DECAF_API Map : public concurrent::Synchronizable - { - private: - - std::map<K,V> valueMap; - concurrent::Mutex mutex; - - public: - - /** - * Default constructor - does nothing. - */ - Map() {} - - /** - * Copy constructor - copies the content of the given map into this - * one. - * @param source The source map. - */ - Map( const Map& source ) : concurrent::Synchronizable() { - copy( source ); - } - - virtual ~Map() {} - - /** - * Comparison, equality is dependant on the method of determining - * if the element are equal. - * @param source - Map to compare to this one. - * @returns true if the Map passed is equal in value to this one. - */ - virtual bool equals( const Map& source ) const { - return this->valueMap == source.valueMap; - } - - /** - * Copies the content of the source map into this map. Erases - * all existing data in this map. - * @param source The source object to copy from. - */ - virtual void copy( const Map& source ) { - - // Erase the content of this object, and copy from the source - // all the elements. We access source's private map since we - // are also a Map, this saves us a lot of time. - valueMap.clear(); - valueMap.insert( source.valueMap.begin(), source.valueMap.end() ); - } - - /** - * Removes all keys and values from this map. - */ - virtual void clear() { - valueMap.clear(); - } - - /** - * Indicates whether or this map contains a value for the - * given key. - * @param key The key to look up. - * @return true if this map contains the value, otherwise false. - */ - virtual bool containsKey( const K& key ) const { - typename std::map<K,V>::const_iterator iter; - iter = valueMap.find(key); - return iter != valueMap.end(); - } - - /** - * Indicates whether or this map contains a value for the - * given value, i.e. they are equal, this is done by operator== - * so the types must pass equivalence testing in this manner. - * @param value The Value to look up. - * @return true if this map contains the value, otherwise false. - */ - virtual bool containsValue( const V& value ) const { - - if( valueMap.empty() ){ - return false; - } - - typename std::map<K,V>::const_iterator iter = valueMap.begin(); - for( ; iter != valueMap.end(); ++iter ){ - if( (*iter).second == value ) { - return true; - } - } - - return false; - } - - /** - * @return if the Map contains any element or not, TRUE or FALSE - */ - virtual bool isEmpty() const { - return valueMap.empty(); - } - - /** - * @return The number of elements (key/value pairs) in this map. - */ - virtual std::size_t size() const { - return valueMap.size(); - } - - /** - * Gets the value for the specified key. - * @param key The search key. - * @return The value for the given key. - * @throws activemq::exceptions::NoSuchElementException - */ - virtual V getValue( const K& key ) const - throw( lang::exceptions::NoSuchElementException ) { - - typename std::map<K,V>::const_iterator iter; - iter = valueMap.find(key); - if( iter == valueMap.end() ){ - throw lang::exceptions::NoSuchElementException( __FILE__, - __LINE__, - "Key does not exist in map" ); - } - - return iter->second; - } - - /** - * Sets the value for the specified key. - * @param key The target key. - * @param value The value to be set. - */ - virtual void setValue( const K& key, V value ) { - valueMap[key] = value; - } - - /** - * Removes the value (key/value pair) for the specified key from - * the map. - * @param key The search key. - */ - virtual void remove( const K& key ) { - valueMap.erase( key ); - } - - /** - * @return the entire set of keys in this map as a std::vector. - */ - virtual std::vector<K> getKeys() const{ - std::vector<K> keys( valueMap.size() ); - - typename std::map<K,V>::const_iterator iter; - iter=valueMap.begin(); - for( int ix=0; iter != valueMap.end(); ++iter, ++ix ){ - keys[ix] = iter->first; - } - - return keys; - } - - /** - * @return the entire set of values in this map as a std::vector. - */ - virtual std::vector<V> getValues() const { - std::vector<V> values( valueMap.size() ); - - typename std::map<K,V>::const_iterator iter; - iter=valueMap.begin(); - for( int ix=0; iter != valueMap.end(); ++iter, ++ix ){ - values[ix] = iter->second; - } - - return values; - } - - public: // Methods from Synchronizable - - /** - * Locks the object. - * @throws ActiveMQException - */ - virtual void lock() throw( lang::Exception ) { - mutex.lock(); - } - - /** - * Unlocks the object. - * @throws ActiveMQException - */ - virtual void unlock() throw( lang::Exception ) { - mutex.unlock(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws ActiveMQException - */ - virtual void wait() throw( lang::Exception ) { - mutex.wait(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. This wait will timeout after the specified time - * interval. - * @param millisecs the time in millisecsonds to wait, or - * WAIT_INIFINITE - * @throws ActiveMQException - */ - virtual void wait( unsigned long millisecs ) - throw( lang::Exception ) { - mutex.wait(millisecs); - } - - /** - * Signals a waiter on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws ActiveMQException - */ - virtual void notify() throw( lang::Exception ) { - mutex.notify(); - } - - /** - * Signals the waiters on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws ActiveMQException - */ - virtual void notifyAll() throw( lang::Exception ) { - mutex.notifyAll(); - } - }; - -}} - -#endif /*_DECAF_UTIL_MAP_H_*/
diff --git a/src/decaf/src/main/decaf/util/Properties.h b/src/decaf/src/main/decaf/util/Properties.h deleted file mode 100644 index 0993aef..0000000 --- a/src/decaf/src/main/decaf/util/Properties.h +++ /dev/null
@@ -1,193 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_PROPERTIES_H_ -#define _DECAF_UTIL_PROPERTIES_H_ - -#include <map> -#include <vector> -#include <string> -#include <sstream> -#include <decaf/util/Config.h> - -namespace decaf{ -namespace util{ - - /** - * Java-like properties class for mapping string names to string values. - */ - class DECAF_API Properties{ - private: - - std::map< std::string, std::string > properties; - - public: - - virtual ~Properties(){} - - /** - * Returns true if the properties object is empty - * @return true if empty - */ - virtual bool isEmpty() const { - return properties.empty(); - } - - /** - * Looks up the value for the given property. - * @param name The name of the property to be looked up. - * @return the value of the property with the given name, if it - * exists. If it does not exist, returns NULL. - */ - virtual const char* getProperty( const std::string& name ) const{ - - std::map< std::string, std::string >::const_iterator iter = - properties.find( name ); - if( iter == properties.end() ){ - return NULL; - } - - return iter->second.c_str(); - } - - /** - * Looks up the value for the given property. - * @param name the name of the property to be looked up. - * @param defaultValue The value to be returned if the given - * property does not exist. - * @return The value of the property specified by <code>name</code>, if it - * exists, otherwise the <code>defaultValue</code>. - */ - virtual std::string getProperty( const std::string& name, - const std::string& defaultValue ) const { - - std::map< std::string, std::string >::const_iterator iter = - properties.find( name ); - if( iter == properties.end() ){ - return defaultValue; - } - - return iter->second; - } - - /** - * Sets the value for a given property. If the property already - * exists, overwrites the value. - * @param name The name of the value to be written. - * @param value The value to be written. - */ - virtual void setProperty( const std::string& name, - const std::string& value ){ - properties[name] = value; - //properties.insert( std::make_pair( name, value ) ); - } - - /** - * Check to see if the Property exists in the set - * @param name - property name to check for in this properties set. - * @return true if property exists, false otherwise. - */ - virtual bool hasProperty( const std::string& name ) const - { - if(properties.find(name) != properties.end()) - { - return true; - } - - return false; - } - - /** - * Removes the property with the given name. - * @param name the name of the property to remove. - */ - virtual void remove( const std::string& name ){ - properties.erase( name ); - } - - /** - * Method that serializes the contents of the property map to - * an arryay. - * @return list of pairs where the first is the name and the second - * is the value. - */ - virtual std::vector< std::pair< std::string, std::string > > toArray() const{ - - // Create a vector big enough to hold all the elements in the map. - std::vector< std::pair<std::string, std::string> > vec( - properties.begin(), properties.end() ); - - return vec; - } - - /** - * Copies the contents of the given properties object to this one. - * @param source The source properties object. - */ - virtual void copy( const Properties* source ){ - - clear(); - this->properties = source->properties; - } - - /** - * Clones this object. - * @returns a replica of this object. - */ - virtual Properties* clone() const{ - - Properties* props = new Properties(); - - props->properties = properties; - - return props; - } - - /** - * Clears all properties from the map. - */ - virtual void clear(){ - properties.clear(); - } - - /** - * Formats the contents of the Properties Object into a string - * that can be logged, etc. - * @returns string value of this object. - */ - virtual std::string toString() const { - - std::ostringstream stream; - std::map< std::string, std::string >::const_iterator iter; - - stream << "Begin Class activemq::util::Properties:" << std::endl; - - for( iter = properties.begin(); iter != properties.end(); ++iter ){ - stream << " properties[" << iter->first << "] = " - << iter->second << std::endl; - } - - stream << "End Class activemq::util::Properties:" << std::endl; - - return stream.str(); - } - - }; - -}} - -#endif /*_DECAF_UTIL_PROPERTIES_H_*/
diff --git a/src/decaf/src/main/decaf/util/Queue.h b/src/decaf/src/main/decaf/util/Queue.h deleted file mode 100644 index 294cf74..0000000 --- a/src/decaf/src/main/decaf/util/Queue.h +++ /dev/null
@@ -1,269 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_QUEUE_H_ -#define _DECAF_UTIL_QUEUE_H_ - -#include <list> -#include <vector> -#include <decaf/util/concurrent/Mutex.h> -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace util{ - - /** - * The Queue class accepts messages with an psuh(m) command - * where m is the message to be queued. It destructively - * returns the message with pop(). pop() returns messages in - * the order they were enqueued. - * - * Queue is implemented with an instance of the STL queue object. - * The interface is essentially the same as that of the STL queue - * except that the pop method actually reaturns a reference to the - * element popped. This frees the app from having to call the - * <code>front</code> method before calling pop. - * - * Queue<string> sq; // make a queue to hold string messages - * sq.push(s); // enqueues a message m - * string s = sq.pop(); // dequeues a message - * - * = DESIGN CONSIDERATIONS - * - * The Queue class inherits from the Synchronizable interface and - * provides methods for locking and unlocking this queue as well as - * waiting on this queue. In a multi-threaded app this can allow - * for multiple threads to be reading from and writing to the same - * Queue. - * - * Clients should consider that in a multiple threaded app it is - * possible that items could be placed on the queue faster than - * you are taking them off, so protection should be placed in your - * polling loop to ensure that you don't get stuck there. - */ - - template <typename T> class DECAF_API Queue : public concurrent::Synchronizable { - public: - - Queue() {} - virtual ~Queue() {} - - /** - * Empties this queue. - */ - void clear() { - queue.clear(); - } - - /** - * Returns a Reference to the element at the head of the queue - * @return reference to a queue type object or (safe) - */ - T& front() { - if( queue.empty() ) { - return safe; - } - - return queue.front(); - } - - /** - * Returns a Reference to the element at the head of the queue - * @return reference to a queue type object or (safe) - */ - const T& front() const { - if( queue.empty() ) { - return safe; - } - - return queue.front(); - } - - /** - * Returns a Reference to the element at the tail of the queue - * @return reference to a queue type object or (safe) - */ - T& back() { - if( queue.empty() ) { - return safe; - } - - return queue.back(); - } - - /** - * Returns a Reference to the element at the tail of the queue - * @return reference to a queue type object or (safe) - */ - const T& back() const { - if( queue.empty() ) { - return safe; - } - - return queue.back(); - } - - /** - * Places a new Object at the Tail of the queue - * @param t - Queue Object Type reference. - */ - void push( const T &t ) { - queue.push_back( t ); - } - - /** - * Places a new Object at the front of the queue - * @param t - Queue Object Type reference. - */ - void enqueueFront( const T &t ) { - queue.push_front( t ); - } - - /** - * Removes and returns the element that is at the Head of the queue - * @return reference to a queue type object or (safe) - */ - T pop() { - if( queue.empty() ) { - return safe; - } - - // Pop the element into a temp, since we need to remain locked. - // this means getting front and then popping. - T temp = queue.front(); - queue.pop_front(); - - return temp; - } - - /** - * Gets the Number of elements currently in the Queue - * @return Queue Size - */ - size_t size() const{ - return queue.size(); - } - - /** - * Checks if this Queue is currently empty - * @return boolean indicating queue emptiness - */ - bool empty() const { - return queue.empty(); - } - - /** - * @return the all values in this queue as a std::vector. - */ - virtual std::vector<T> toArray() const { - std::vector<T> valueArray( queue.begin(), queue.end() ); - return valueArray; - } - - /** - * Reverses the order of the contents of this queue and stores them - * in the target queue. - * @param target - The target queue that will receive the contents of - * this queue in reverse order. - */ - void reverse( Queue<T>& target ) const { - target.queue.insert( target.queue.end(), queue.rbegin(), queue.rend() ); - } - - /** - * Locks the object. - */ - virtual void lock() throw( lang::Exception ){ - mutex.lock(); - } - - /** - * Unlocks the object. - */ - virtual void unlock() throw( lang::Exception ){ - mutex.unlock(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - */ - virtual void wait() throw( lang::Exception ){ - mutex.wait(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. This wait will timeout after the specified time - * interval. - * @param millisecs time to wait, or WAIT_INIFINITE - * @throws ActiveMQException - */ - virtual void wait( unsigned long millisecs ) - throw( lang::Exception ) { - - mutex.wait(millisecs); - } - - /** - * Signals a waiter on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - */ - virtual void notify() throw( lang::Exception ){ - mutex.notify(); - } - - /** - * Signals the waiters on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - */ - virtual void notifyAll() throw( lang::Exception ){ - mutex.notifyAll(); - } - - public: // Statics - - /** - * Fetch a reference to the safe value this object will return - * when there is nothing to fetch from the queue. - * @return Reference to this Queues safe object - */ - static const T& getSafeValue() { return safe; } - - private: - - // The real queue - std::list<T> queue; - - // Object used for sync - util::concurrent::Mutex mutex; - - // Safe value used when pop, front or back are - // called and the queue is empty. - static T safe; - - }; - - //-----{ Static Init }----------------------------------------------------// - template <typename T> T Queue<T>::safe; - -}} - -#endif /*_DECAF_UTIL_QUEUE_H_*/
diff --git a/src/decaf/src/main/decaf/util/Random.cpp b/src/decaf/src/main/decaf/util/Random.cpp deleted file mode 100644 index 0df6574..0000000 --- a/src/decaf/src/main/decaf/util/Random.cpp +++ /dev/null
@@ -1,141 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "Random.h" - -#include <decaf/util/Date.h> - -using namespace decaf; -using namespace decaf::util; -using namespace decaf::lang; - -unsigned long long Random::multiplier = 0x5deece66dLL; - -//////////////////////////////////////////////////////////////////////////////// -Random::Random() { - setSeed(Date::getCurrentTimeMilliseconds()); -} - -//////////////////////////////////////////////////////////////////////////////// -Random::Random( unsigned long long seed ) { - setSeed(seed); -} - -//////////////////////////////////////////////////////////////////////////////// -bool Random::nextBoolean() { - return next(1) != 0; -} - -//////////////////////////////////////////////////////////////////////////////// -void Random::nextBytes( std::vector<unsigned char>& buf ) { - int rand = 0; - std::size_t count = 0, loop = 0; - while (count < buf.size()) { - if (loop == 0) { - rand = nextInt(); - loop = 3; - } else { - loop--; - } - buf[count++] = (unsigned char) rand; - rand >>= 8; - } -} - -//////////////////////////////////////////////////////////////////////////////// -double Random::nextDouble() { - // was: return ((((long long) next(26) << 27) + next(27)) / (double) (1L << 53)); - long long divisor = 1LL; - divisor <<= 31; - divisor <<= 22; - return ((((long long) next(26) << 27) + next(27)) / (double) divisor); -} - -//////////////////////////////////////////////////////////////////////////////// -float Random::nextFloat() { - return (next(24) / 16777216.0f); -} - -//////////////////////////////////////////////////////////////////////////////// -double Random::nextGaussian() { - if (haveNextNextGaussian) { - // if X1 has been returned, return the second Gaussian - haveNextNextGaussian = false; - return nextNextGaussian; - } - - double v1, v2, s; - do { - // Generates two independent random variables U1, U2 - v1 = 2 * nextDouble() - 1; - v2 = 2 * nextDouble() - 1; - s = v1 * v1 + v2 * v2; - } while (s >= 1); - double norm = std::sqrt(-2 * std::log(s) / s); - // should that not be norm instead of multiplier ? - nextNextGaussian = v2 * norm; - haveNextNextGaussian = true; - // should that not be norm instead of multiplier ? - return v1 * norm; -} - -//////////////////////////////////////////////////////////////////////////////// -int Random::nextInt() { - return next(32); -} - -//////////////////////////////////////////////////////////////////////////////// -int Random::nextInt( int n ) throw( exceptions::IllegalArgumentException ) { - if (n > 0) { - if ((n & -n) == n) { - return (int) ((n * (long long) next(31)) >> 31); - } - int bits, val; - do { - bits = next(31); - val = bits % n; - } while (bits - val + (n - 1) < 0); - return val; - } - throw exceptions::IllegalArgumentException(); -} - -//////////////////////////////////////////////////////////////////////////////// -long long Random::nextLong() { - return ((long long) next(32) << 32) + next(32); -} - -//////////////////////////////////////////////////////////////////////////////// -void Random::setSeed( unsigned long long seed ) { - // was this->seed = (seed ^ multiplier) & ((1L << 48) - 1); - unsigned long long mask = 1ULL; - mask <<= 31; - mask <<= 17; - this->seed = (seed ^ multiplier) & (mask - 1); - haveNextNextGaussian = false; -} - -//////////////////////////////////////////////////////////////////////////////// -int Random::next( int bits ) { - // was: seed = (seed * multiplier + 0xbL) & ((1L << 48) - 1); - long long mask = 1L; - mask <<= 31; - mask <<= 17; - seed = (seed * multiplier + 0xbL) & (mask - 1); - // was: return (int) (seed >>> (48 - bits)); - return (int) (seed >> (48 - bits)); -}
diff --git a/src/decaf/src/main/decaf/util/Random.h b/src/decaf/src/main/decaf/util/Random.h deleted file mode 100644 index 0ea456b..0000000 --- a/src/decaf/src/main/decaf/util/Random.h +++ /dev/null
@@ -1,200 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_RANDOM_H_ -#define _DECAF_UTIL_RANDOM_H_ - -#include <decaf/lang/exceptions/IllegalArgumentException.h> -#include <decaf/util/Config.h> -#include <vector> -#include <cmath> - -namespace decaf{ -namespace util{ - - class DECAF_API Random - { - public: - - /** - * Construct a random generator with the current time of day in - * milliseconds as the initial state. - * - * @see #setSeed - */ - Random(); - - /** - * Construct a random generator with the given <code>seed</code> - * as the initial state. - * - * @param seed the seed that will determine the initial state of - * this random number generator - * - * @see #setSeed - */ - Random( unsigned long long seed ); - - /** - * Answers the next pseudo-random, uniformly distributed boolean - * value generated by this generator. - * - * @return boolean a pseudo-random, uniformly distributed boolean - * value - */ - bool nextBoolean(); - - /** - * Modifies the byte array by a random sequence of bytes generated - * by this random number generator. - * - * @param buf non-null array to contain the new random bytes - * - * @see #next - */ - void nextBytes( std::vector<unsigned char>& buf ); - - /** - * Generates a normally distributed random double number between - * 0.0 inclusively and 1.0 exclusively. - * - * @return double - * - * @see #nextFloat - */ - double nextDouble(); - - /** - * Generates a normally distributed random float number between - * 0.0 inclusively and 1.0 exclusively. - * - * @return float a random float number between 0.0 and 1.0 - * - * @see #nextDouble - */ - float nextFloat(); - - /** - * Pseudo-randomly generates (approximately) a normally - * distributed <code>double</code> value with mean 0.0 and a - * standard deviation value of <code>1.0</code> using the <i>polar - * method<i> of G. E. P. Box, M. E. Muller, and G. Marsaglia, as - * described by Donald E. Knuth in <i>The Art of Computer - * Programming, Volume 2: Seminumerical Algorithms</i>, section - * 3.4.1, subsection C, algorithm P - * - * @return double - * - * @see #nextDouble - */ - double nextGaussian(); - - /** - * Generates a uniformly distributed 32-bit <code>int</code> value - * from the this random number sequence. - * - * @return int uniformly distributed <code>int</code> value - * - * @see #next - * @see #nextLong - */ - int nextInt(); - - /** - * Returns to the caller a new pseudo-random integer value which - * is uniformly distributed between 0 (inclusively) and the value - * of <code>n</code> (exclusively). - * - * @return int - * @param n int - * - * @throws IllegalArgumentException - */ - int nextInt( int n ) throw( lang::exceptions::IllegalArgumentException ); - - /** - * Generates a uniformly distributed 64-bit <code>int</code> value - * from the this random number sequence. - * - * @return 64-bit <code>int</code> random number - * - * @see #next - * @see #nextInt() - * @see #nextInt(int) - */ - long long nextLong(); - - /** - * Modifies the seed using linear congruential formula presented - * in <i>The Art of Computer Programming, Volume 2</i>, Section - * 3.2.1. - * - * @param seed the seed that alters the state of the random number - * generator - * - * @see #next - * @see #Random() - * @see #Random(long) - */ - void setSeed( unsigned long long seed ); - - protected: - - /** - * Answers a pseudo-random uniformly distributed <code>int</code> - * value of the number of bits specified by the argument - * <code>bits</code> as described by Donald E. Knuth in <i>The Art - * of Computer Programming, Volume 2: Seminumerical - * Algorithms</i>, section 3.2.1. - * - * @return int a pseudo-random generated int number - * @param bits number of bits of the returned value - * - * @see #nextBytes - * @see #nextDouble - * @see #nextFloat - * @see #nextInt() - * @see #nextInt(int) - * @see #nextGaussian - * @see #nextLong - */ - int next( int bits ); - - private: - - static unsigned long long multiplier; - - /** - * The boolean value indicating if the second Gaussian number is available. - */ - bool haveNextNextGaussian; - - /** - * It is associated with the internal state of this generator. - */ - unsigned long long seed; - - /** - * The second Gaussian generated number. - */ - double nextNextGaussian; - - }; - -}} - -#endif /*_DECAF_UTIL_RANDOM_H_*/
diff --git a/src/decaf/src/main/decaf/util/Set.h b/src/decaf/src/main/decaf/util/Set.h deleted file mode 100644 index a6ae16a..0000000 --- a/src/decaf/src/main/decaf/util/Set.h +++ /dev/null
@@ -1,255 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_SET_H_ -#define _DECAF_UTIL_SET_H_ - -#include <set> -#include <vector> -#include <decaf/lang/exceptions/NoSuchElementException.h> -#include <decaf/util/concurrent/Synchronizable.h> -#include <decaf/util/concurrent/Mutex.h> -#include <decaf/util/Iterator.h> - -namespace decaf{ -namespace util{ - - /** - * Map template that wraps around a std::map to provide - * a more user-friendly interface and to provide common - * functions that do not exist in std::map. - */ - template <typename E> class DECAF_API Set : public util::concurrent::Synchronizable - { - private: - - std::set<E> values; - util::concurrent::Mutex mutex; - - private: - - class SetIterator : public Iterator<E> { - private: - - typename std::set<E>::iterator current; - typename std::set<E>::iterator previous; - typename std::set<E>* set; - - public: - - SetIterator( typename std::set<E>* set ) { - this->current = set->begin(); - this->previous = set->end(); - this->set = set; - } - virtual ~SetIterator() {} - - virtual E next() throw( lang::exceptions::NoSuchElementException ){ - if( this->current == set->end() ) { - throw lang::exceptions::NoSuchElementException( - __FILE__, __LINE__, - "Set::Iterator::next - No more elements to return" ); - } - - this->previous = this->current; - return *( this->current++ ); - } - - virtual bool hasNext() const { - return ( this->current != set->end() ); - } - - virtual void remove() throw ( lang::exceptions::IllegalStateException, - lang::exceptions::UnsupportedOperationException ){ - if( this->previous == set->end() ) { - throw lang::exceptions::IllegalStateException( - __FILE__, __LINE__, - "Set::Iterator::remove - Invalid State to call remove" ); - } - - this->set->erase( this->previous ); - this->previous = this->set->end(); - } - }; - - public: - - /** - * Default constructor - does nothing. - */ - Set(){} - - /** - * Copy constructor - copies the content of the given set into this - * one. - * @param source The source set. - */ - Set( const Set& source ){ - copy( source ); - } - - virtual ~Set(){} - - /** - * Returns an iterator for this collection. The order of Iteration - * is in no particular order other than the natural ording of the - * elements in the Set class. - * @returns Iterator<E> for this collection - */ - Iterator<E>* iterator() { - return new SetIterator( &values ); - } - - /** - * Copies the content of the source set into this set. Erases - * all existing data in this st. - * @param source The source object to copy from. - */ - virtual void copy( const Set& source ) { - // Add all of the entries to this map. - values = source.values; - } - - /** - * Removes all values from this set. - */ - virtual void clear() { - values.clear(); - } - - /** - * Indicates whether or this set contains the given value. - * @param value The value to look up. - * @return true if this set contains the value, otherwise false. - */ - virtual bool contains( const E& value ) const { - typename std::set<E>::const_iterator iter; - iter = values.find( value ); - return iter != values.end(); - } - - /** - * @return if the set contains any element or not, TRUE or FALSE - */ - virtual bool isEmpty() const { - return values.empty(); - } - - /** - * @return The number of elements in this set. - */ - virtual std::size_t size() const { - return values.size(); - } - - /** - * Adds the given value to the set. - * @param value The value to add. - */ - virtual void add( const E& value ) { - values.insert( value ); - } - - /** - * Removes the value from the set. - * @param value The value to be removed. - */ - virtual void remove( const E& value ) { - values.erase( value ); - } - - /** - * @return the all values in this set as a std::vector. - */ - virtual std::vector<E> toArray() const { - std::vector<E> valueArray( values.size() ); - - typename std::set<E>::const_iterator iter; - iter=values.begin(); - for( int ix=0; iter != values.end(); ++iter, ++ix ){ - valueArray[ix] = *iter; - } - - return valueArray; - } - - public: // Methods from Synchronizable - - /** - * Locks the object. - * @throws Exception - */ - virtual void lock() throw( lang::Exception ) { - mutex.lock(); - } - - /** - * Unlocks the object. - * @throws Exception - */ - virtual void unlock() throw( lang::Exception ) { - mutex.unlock(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void wait() throw( lang::Exception ) { - mutex.wait(); - } - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. This wait will timeout after the specified time - * interval. - * @param millisecs the time in millisecsonds to wait, or - * WAIT_INIFINITE - * @throws Exception - */ - virtual void wait( unsigned long millisecs ) - throw( lang::Exception ) { - mutex.wait( millisecs ); - } - - /** - * Signals a waiter on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notify() throw( lang::Exception ) { - mutex.notify(); - } - - /** - * Signals the waiters on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notifyAll() throw( lang::Exception ) { - mutex.notifyAll(); - } - }; - -}} - -#endif /*_DECAF_UTIL_SET_H_*/
diff --git a/src/decaf/src/main/decaf/util/StringTokenizer.cpp b/src/decaf/src/main/decaf/util/StringTokenizer.cpp deleted file mode 100644 index a65834a..0000000 --- a/src/decaf/src/main/decaf/util/StringTokenizer.cpp +++ /dev/null
@@ -1,157 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "StringTokenizer.h" - -using namespace std; -using namespace decaf; -using namespace decaf::util; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; - -//////////////////////////////////////////////////////////////////////////////// -StringTokenizer::StringTokenizer( const std::string& str, - const std::string& delim, - bool returnDelims ) { - // store off the data - this->str = str; - this->delim = delim; - this->returnDelims = returnDelims; - - // Start and the beginning - pos = 0; -} - -//////////////////////////////////////////////////////////////////////////////// -StringTokenizer::~StringTokenizer(){ -} - -//////////////////////////////////////////////////////////////////////////////// -int StringTokenizer::countTokens() const -{ - int count = 0; - string::size_type localPos = pos; - string::size_type lastPos = pos; - - while( localPos != string::npos ) { - - if( returnDelims && str.find_first_of( delim, localPos ) == localPos ) { - count += 1; - localPos += 1; - continue; - } - - // Find first token by spanning the fist non-delimiter, to the - // next delimiter, skipping any delimiters that are at the curret - // location. - lastPos = str.find_first_not_of( delim, localPos ); - localPos = str.find_first_of( delim, lastPos ); - - if( lastPos != string::npos ) { - count++; - } - } - - return count; -} - -//////////////////////////////////////////////////////////////////////////////// -bool StringTokenizer::hasMoreTokens() const -{ - string::size_type nextpos = - returnDelims ? str.find_first_of( delim, pos ) : - str.find_first_not_of( delim, pos ); - - return ( nextpos != string::npos ); -} - -//////////////////////////////////////////////////////////////////////////////// -std::string StringTokenizer::nextToken() - throw ( lang::exceptions::NoSuchElementException ) -{ - if( pos == string::npos ) { - throw NoSuchElementException( - __FILE__, __LINE__, - "StringTokenizer::nextToken - No more Tokens available"); - } - - if( returnDelims ) { - // if char at current pos is a delim return it and advance pos - if( str.find_first_of( delim, pos ) == pos ) { - return str.substr( pos++, 1 ); - } - } - - // Skip delimiters at beginning. - string::size_type lastPos = str.find_first_not_of( delim, pos ); - - // Find the next delimiter in the string, the charactors in between - // will be the token to return. If this returns string::npos then - // there are no more delimiters in the string. - pos = str.find_first_of( delim, lastPos ); - - if( string::npos != lastPos ) { - // Found a token, count it, if the pos of the next delim is npos - // then we set length to copy to npos so that all the remianing - // portion of the string is copied, otherwise we set it to the - return str.substr( lastPos, - pos == string::npos ? pos : pos-lastPos ); - } else { - throw NoSuchElementException( - __FILE__, __LINE__, - "StringTokenizer::nextToken - No more Tokens available" ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -std::string StringTokenizer::nextToken( const std::string& delim ) - throw ( lang::exceptions::NoSuchElementException ) { - - this->delim = delim; - return nextToken(); -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned int StringTokenizer::toArray( std::vector<std::string>& array ) -{ - int count = 0; - - while( hasMoreTokens() ) { - array.push_back( nextToken() ); - count++; - } - - return count; -} - -//////////////////////////////////////////////////////////////////////////////// -void StringTokenizer::reset( const std::string& str, - const std::string& delim, - bool returnDelims ) -{ - if( str != "" ) { - this->str = str; - } - - if( delim != "" ) { - this->delim = delim; - } - - this->returnDelims = returnDelims; - - // Begin at the Beginning - this->pos = 0; -}
diff --git a/src/decaf/src/main/decaf/util/StringTokenizer.h b/src/decaf/src/main/decaf/util/StringTokenizer.h deleted file mode 100644 index 7ae75b2..0000000 --- a/src/decaf/src/main/decaf/util/StringTokenizer.h +++ /dev/null
@@ -1,137 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_STRINGTOKENIZER_H_ -#define _DECAF_UTIL_STRINGTOKENIZER_H_ - -#include <decaf/lang/exceptions/NoSuchElementException.h> -#include <decaf/util/Config.h> -#include <string> - -namespace decaf{ -namespace util{ - - class DECAF_API StringTokenizer - { - private: - - // String to tokenize - std::string str; - - // The delimiter string - std::string delim; - - // The current pos in the string - std::string::size_type pos; - - // Are we returning delimiters - bool returnDelims; - - public: - - /** - * Constructs a string tokenizer for the specified string. All - * characters in the delim argument are the delimiters for separating - * tokens. - * - * If the returnDelims flag is true, then the delimiter characters are - * also returned as tokens. Each delimiter is returned as a string of - * length one. If the flag is false, the delimiter characters are - * skipped and only serve as separators between tokens. - * - * Note that if delim is "", this constructor does not throw an - * exception. However, trying to invoke other methods on the resulting - * StringTokenizer may result in an Exception. - * @param string to tokenize - * @param String containing the delimiters - * @param boolean indicating if the delimiters are returned as tokens - */ - StringTokenizer( const std::string& str, - const std::string& delim = " \t\n\r\f", - bool returnDelims = false); - - virtual ~StringTokenizer(); - - /** - * Calculates the number of times that this tokenizer's nextToken - * method can be called before it generates an exception. The current - * position is not advanced. - * @return Count of remaining tokens - */ - virtual int countTokens() const; - - /** - * Tests if there are more tokens available from this tokenizer's - * string. - * @return true if there are more tokens remaining - */ - virtual bool hasMoreTokens() const; - - /** - * Returns the next token from this string tokenizer. - * @return string value of next token - * @thorws NoSuchElementException - */ - virtual std::string nextToken() - throw ( lang::exceptions::NoSuchElementException ); - - /** - * Returns the next token in this string tokenizer's string. First, - * the set of characters considered to be delimiters by this - * StringTokenizer object is changed to be the characters in the - * string delim. Then the next token in the string after the current - * position is returned. The current position is advanced beyond the - * recognized token. The new delimiter set remains the default after - * this call. - * @param string containing the new set of delimiters - * @return next string in the token list - * @throw NoSuchElementException - */ - virtual std::string nextToken( const std::string& delim ) - throw ( lang::exceptions::NoSuchElementException ); - - /** - * Grab all remaining tokens in the String and return them - * in the vector that is passed in by reference. - * @param vector to place token strings in - * @return number of string placed into the vector - */ - virtual unsigned int toArray( std::vector< std::string >& array ); - - /** - * Resets the Tokenizer's position in the String to the Beginning - * calls to countToken and nextToken now start back at the beginning. - * This allows this object to be reused, the caller need not create - * a new instance every time a String needs tokenizing. - * If set the string param will reset the string that this Tokenizer - * is working on. If set to "" no change is made. - * If set the delim param will reset the string that this Tokenizer - * is using to tokenizer the string. If set to "", no change is made - * If set the return Delims will set if this Tokenizer will return - * delimiters as tokens. Defaults to false. - * @param New String to tokenize or "", defaults to "" - * @param New Delimiter String to use or "", defaults to "" - * @param Should the Tokenizer return delimiters as Tokens, default false - */ - virtual void reset( const std::string& str = "", - const std::string& delim = "", - bool returnDelims = false ); - - }; - -}} - -#endif /*_DECAF_UTIL_STRINGTOKENIZER_H_*/
diff --git a/src/decaf/src/main/decaf/util/UUID.cpp b/src/decaf/src/main/decaf/util/UUID.cpp deleted file mode 100644 index e460910..0000000 --- a/src/decaf/src/main/decaf/util/UUID.cpp +++ /dev/null
@@ -1,244 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "UUID.h" -#include <apr_strings.h> -#include <apr_md5.h> -#include <decaf/lang/exceptions/RuntimeException.h> - -using namespace std; -using namespace decaf; -using namespace decaf::util; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -UUID::UUID( long long mostSigBits, long long leastSigBits ) { - - memcpy( &apr_uuid.data[0], &mostSigBits, sizeof( long long ) ); - memcpy( &apr_uuid.data[sizeof(long long)], &leastSigBits, sizeof(long long ) ); - - this->mostSigBits = mostSigBits; - this->leastSigBits = leastSigBits; - - // Version indicator, set when a UUID is generated - this->uuidVersion = (int)( mostSigBits & 0x000000000000F000LL ) >> 12; -} - -//////////////////////////////////////////////////////////////////////////////// -UUID::~UUID() { -} - -//////////////////////////////////////////////////////////////////////////////// -int UUID::compareTo( const UUID& value ) const { - return apr_strnatcmp( (const char*)this->apr_uuid.data, - (const char*)value.apr_uuid.data ); -} - -//////////////////////////////////////////////////////////////////////////////// -bool UUID::equals( const UUID& value ) const { - return apr_strnatcmp( (const char*)this->apr_uuid.data, - (const char*)value.apr_uuid.data ) == 0 ? true : false; -} - -//////////////////////////////////////////////////////////////////////////////// -bool UUID::operator==( const UUID& value ) const { - return this->equals( value ); -} - -//////////////////////////////////////////////////////////////////////////////// -bool UUID::operator<( const UUID& value ) const { - return this->compareTo( value ) == -1 ? true : false; -} - -//////////////////////////////////////////////////////////////////////////////// -std::string UUID::toString() const { - char buffer[APR_UUID_FORMATTED_LENGTH+1] = {0}; - apr_uuid_format( &buffer[0], &apr_uuid ); - return &buffer[0]; -} - -//////////////////////////////////////////////////////////////////////////////// -long long UUID::getLeastSignificantBits() const { - return this->leastSigBits; -} - -//////////////////////////////////////////////////////////////////////////////// -long long UUID::getMostSignificantBits() const { - long long result = 0; - memcpy( &result, &this->apr_uuid.data[sizeof(long long)], sizeof(long long) ); - return this->mostSigBits; -} - -//////////////////////////////////////////////////////////////////////////////// -long long UUID::node() throw ( lang::exceptions::UnsupportedOperationException ) { - - if( this->version() != 1 ) { - throw exceptions::UnsupportedOperationException( - __FILE__, __LINE__, - "UUID::node - Only a Version 1 UUID supports this operation." ); - } - - return ( this->leastSigBits & 0x0000FFFFFFFFFFFFULL ); -} - -//////////////////////////////////////////////////////////////////////////////// -long long UUID::timestamp() throw ( lang::exceptions::UnsupportedOperationException ) { - - if( this->version() != 1 ) { - throw exceptions::UnsupportedOperationException( - __FILE__, __LINE__, - "UUID::node - Only a Version 1 UUID supports this operation." ); - } - - // Mask out the version and shift values around to make time. - long long timeLow = ( mostSigBits & 0xFFFFFFFF00000000ULL) >> 32; - long long timeMid = ( mostSigBits & 0x00000000FFFF0000ULL) << 16; - long long timeHigh = ( mostSigBits & 0x0000000000000FFFULL) << 48; - - return timeLow | timeMid | timeHigh; -} - -//////////////////////////////////////////////////////////////////////////////// -int UUID::clockSequence() throw ( lang::exceptions::UnsupportedOperationException ) { - - if( this->version() != 1 ) { - throw exceptions::UnsupportedOperationException( - __FILE__, __LINE__, - "UUID::node - Only a Version 1 UUID supports this operation." ); - } - - return (int)( ( this->leastSigBits & 0x3FFF000000000000ULL ) >> 48 ); -} - -//////////////////////////////////////////////////////////////////////////////// -int UUID::variant() throw ( lang::exceptions::UnsupportedOperationException ) { - - // determine variant field - if( ( this->leastSigBits & 0x8000000000000000ULL ) == 0 ) { - // MSB0 not set, NCS backwards compatibility variant - return 0; - } else if( ( this->leastSigBits & 0x4000000000000000ULL ) != 0 ) { - // MSB1 set, either MS reserved or future reserved - return (int)( ( this->leastSigBits & 0xE000000000000000ULL ) >> 61 ); - } - - // MSB1 not set, RFC 4122 variant - return 2; -} - -//////////////////////////////////////////////////////////////////////////////// -int UUID::version() throw ( lang::exceptions::UnsupportedOperationException ) { - return this->uuidVersion; -} - -//////////////////////////////////////////////////////////////////////////////// -UUID UUID::randomUUID() { - - apr_uuid_t temp; - // Generate some random bytes. - apr_uuid_get( &temp ); - - long long msb = 0; - long long lsb = 0; - - msb = (temp.data[0] & 0xFFLL) << 56; - msb |= (temp.data[1] & 0xFFLL) << 48; - msb |= (temp.data[2] & 0xFFLL) << 40; - msb |= (temp.data[3] & 0xFFLL) << 32; - msb |= (temp.data[4] & 0xFFLL) << 24; - msb |= (temp.data[5] & 0xFFLL) << 16; - msb |= (temp.data[6] & 0x0FLL) << 8; - msb |= (0x4LL << 12); // set the version to 4 - msb |= (temp.data[7] & 0xFFLL); - - lsb = (temp.data[8] & 0x3FLL) << 56; - lsb |= (0x2LL << 62); // set the variant to bits 01 - lsb |= (temp.data[9] & 0xFFLL) << 48; - lsb |= (temp.data[10] & 0xFFLL) << 40; - lsb |= (temp.data[11] & 0xFFLL) << 32; - lsb |= (temp.data[12] & 0xFFLL) << 24; - lsb |= (temp.data[13] & 0xFFLL) << 16; - lsb |= (temp.data[14] & 0xFFLL) << 8; - lsb |= (temp.data[15] & 0xFFLL); - - return UUID( msb, lsb ); -} - -//////////////////////////////////////////////////////////////////////////////// -UUID UUID::nameUUIDFromBytes( const std::vector<char>& name ) { - return UUID::nameUUIDFromBytes( &name[0], name.size() ); -} - -//////////////////////////////////////////////////////////////////////////////// -UUID UUID::nameUUIDFromBytes( const char* name, std::size_t size ) { - - apr_uuid_t temp; - - if( apr_md5( &temp.data[0], name, size ) != APR_SUCCESS ) { - throw exceptions::RuntimeException( - __FILE__, __LINE__, - "UUID::nameUUIDFromBytes - Failed to run MD5 encoder." ); - } - - long long msb = 0; - long long lsb = 0; - - msb = (temp.data[0] & 0xFFLL) << 56; - msb |= (temp.data[1] & 0xFFLL) << 48; - msb |= (temp.data[2] & 0xFFLL) << 40; - msb |= (temp.data[3] & 0xFFLL) << 32; - msb |= (temp.data[4] & 0xFFLL) << 24; - msb |= (temp.data[5] & 0xFFLL) << 16; - msb |= (temp.data[6] & 0x0FLL) << 8; - msb |= (0x3LL << 12); // set the version to 3 - msb |= (temp.data[7] & 0xFFLL); - - lsb = (temp.data[8] & 0x3FLL) << 56; - lsb |= (0x2LL << 62); // set the variant to bits 01 - lsb |= (temp.data[9] & 0xFFLL) << 48; - lsb |= (temp.data[10] & 0xFFLL) << 40; - lsb |= (temp.data[11] & 0xFFLL) << 32; - lsb |= (temp.data[12] & 0xFFLL) << 24; - lsb |= (temp.data[13] & 0xFFLL) << 16; - lsb |= (temp.data[14] & 0xFFLL) << 8; - lsb |= (temp.data[15] & 0xFFLL); - - return UUID( msb, lsb ); -} - -//////////////////////////////////////////////////////////////////////////////// -UUID UUID::fromString( const std::string& name ) - throw ( lang::exceptions::IllegalArgumentException ){ - - apr_uuid_t temp; - - if( apr_uuid_parse( &temp, name.c_str() ) != APR_SUCCESS ) { - throw lang::exceptions::IllegalArgumentException( - __FILE__, __LINE__, - "UUID::fromString - Invalid UUID String: ", - name.c_str() ); - } - - long long mostSigBits = 0; - long long leastSigBits = 0; - - // Extract to data from the uuid data - memcpy( &mostSigBits, &temp.data[0], sizeof(long long) ); - memcpy( &leastSigBits, &temp.data[sizeof(long long)], sizeof(long long) ); - - return UUID( mostSigBits, leastSigBits ); -}
diff --git a/src/decaf/src/main/decaf/util/UUID.h b/src/decaf/src/main/decaf/util/UUID.h deleted file mode 100644 index 753c137..0000000 --- a/src/decaf/src/main/decaf/util/UUID.h +++ /dev/null
@@ -1,258 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_UUID_H_ -#define _DECAF_UTIL_UUID_H_ - -#include <decaf/util/Config.h> -#include <decaf/lang/Comparable.h> -#include <decaf/lang/exceptions/UnsupportedOperationException.h> -#include <decaf/lang/exceptions/IllegalArgumentException.h> -#include <apr_uuid.h> -#include <string> - -namespace decaf{ -namespace util{ - - /** - * A class that represents an immutable universally unique identifier (UUID). - * A UUID represents a 128-bit value. - * - * There exist different variants of these global identifiers. The methods of - * this class are for manipulating the Leach-Salz variant, although the - * constructors allow the creation of any variant of UUID (described below). - * - * The layout of a variant 2 (Leach-Salz) UUID is as follows: The most - * significant long consists of the following unsigned fields: - * - * 0xFFFFFFFF00000000 time_low - * 0x00000000FFFF0000 time_mid - * 0x000000000000F000 version - * 0x0000000000000FFF time_hi - * - * The least significant long consists of the following unsigned fields: - * - * 0xC000000000000000 variant - * 0x3FFF000000000000 clock_seq - * 0x0000FFFFFFFFFFFF node - * - * The variant field contains a value which identifies the layout of the UUID. - * The bit layout described above is valid only for a UUID with a variant value - * of 2, which indicates the Leach-Salz variant. - * - * The version field holds a value that describes the type of this UUID. There - * are four different basic types of UUIDs: time-based, DCE security, name-based, - * and randomly generated UUIDs. These types have a version value of 1, 2, 3 and - * 4, respectively. - * - * For more information including algorithms used to create UUIDs, see the - * Internet-Draft UUIDs and GUIDs or the standards body definition at - * ISO/IEC 11578:1996. - */ - class UUID : public lang::Comparable<UUID> { - private: - - // APR Uuid Type - apr_uuid_t apr_uuid; - - // Copy of the High part of the data - unsigned long long mostSigBits; - - // Copy of the Low part of the data - unsigned long long leastSigBits; - - // Version indicator, set when a UUID is generated - int uuidVersion; - - public: - - /** - * Static factory to retrieve a type 4 (pseudo randomly generated) UUID. - * The UUID is generated using a cryptographically strong pseudo random - * number generator. - * @return type 4 UUID - */ - static UUID randomUUID(); - - /** - * Static factory to retrieve a type 3 (name based) UUID based on the - * specified byte array. - * @param name - a byte array to be used to construct a UUID. - * @return type 3 UUID - */ - static UUID nameUUIDFromBytes( const std::vector<char>& name ); - - /** - * Static factory to retrieve a type 3 (name based) UUID based on the - * specified byte array. - * @param name - a byte array to be used to construct a UUID. - * @param size - the size of the byte array, or number of bytes to use. - * @return type 3 UUID - */ - static UUID nameUUIDFromBytes( const char* name, std::size_t size ); - - /** - * Creates a UUID from the string standard representation as described - * in the toString() method. - * @param name - a string to be used to construct a UUID. - * @return type 3 UUID - */ - static UUID fromString( const std::string& name ) - throw ( lang::exceptions::IllegalArgumentException ); - - public: - - /** - * Constructs a new UUID using the specified data. mostSigBits is used - * for the most significant 64 bits of the UUID and leastSigBits becomes - * the least significant 64 bits of the UUID. - * @param mostSigBits - * @param leastSigBits - */ - UUID( long long mostSigBits, long long leastSigBits ); - - virtual ~UUID(); - - /** - * Compare the given UUID to this one - * @param value - the UUID to compare to - */ - virtual int compareTo( const UUID& value ) const; - - /** - * Compares this UUID to the one given, returns true if they are - * equal - * @param value - the UUID to compare to. - * @return true if UUIDs are the same. - */ - virtual bool equals( const UUID& value ) const; - - /** - * Compares equality between this object and the one passed. - * @param value - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator==( const UUID& value ) const; - - /** - * Compares this object to another and returns true if this object - * is considered to be less than the one passed. This - * @param value - the value to be compared to this one. - * @return true if this object is equal to the one passed. - */ - virtual bool operator<( const UUID& value ) const; - - /** - * Returns a String object representing this UUID. UUID's are formatted - * as: 00112233-4455-6677-8899-AABBCCDDEEFF whose length is 36. - * @returns formatted string for this UUID - */ - virtual std::string toString() const; - - /** - * @returns the most significant 64 bits of this UUID's 128 bit value. - */ - virtual long long getLeastSignificantBits() const; - - /** - * @returns the most significant 64 bits of this UUID's 128 bit value. - */ - virtual long long getMostSignificantBits() const; - - /** - * The node value associated with this UUID. - * - * The 48 bit node value is constructed from the node field of this UUID. - * This field is intended to hold the IEEE 802 address of the machine that - * generated this UUID to guarantee spatial uniqueness. - * - * The node value is only meaningful in a time-based UUID, which has - * version type 1. If this UUID is not a time-based UUID then this method - * throws UnsupportedOperationException. - * @returns the node value of this UUID - * @throws UnsupportedOperationException - */ - virtual long long node() - throw ( lang::exceptions::UnsupportedOperationException ); - - /** - * The timestamp value associated with this UUID. - * - * The 60 bit timestamp value is constructed from the time_low, time_mid, - * and time_hi fields of this UUID. The resulting timestamp is measured in - * 100-nanosecond units since midnight, October 15, 1582 UTC. - * - * The timestamp value is only meaningful in a time-based UUID, which has - * version type 1. If this UUID is not a time-based UUID then this method - * throws UnsupportedOperationException. - * @returns the timestamp associated with a V1 UUID - * @throws UnsupportedOperationException - */ - virtual long long timestamp() - throw ( lang::exceptions::UnsupportedOperationException ); - - /** - * The clock sequence value associated with this UUID. - * - * The 14 bit clock sequence value is constructed from the clock sequence - * field of this UUID. The clock sequence field is used to guarantee temporal - * uniqueness in a time-based UUID. - * - * The clockSequence value is only meaningful in a time-based UUID, which - * has version type 1. If this UUID is not a time-based UUID then this - * method throws UnsupportedOperationException. - * @returns the clockSequeunce associated with a V1 UUID - * @throws UnsupportedOperationException - */ - virtual int clockSequence() - throw ( lang::exceptions::UnsupportedOperationException ); - - /** - * The variant number associated with this UUID. The variant number describes - * the layout of the UUID. The variant number has the following meaning: - * - * * 0 Reserved for NCS backward compatibility - * * 2 The Leach-Salz variant (used by this class) - * * 6 Reserved, Microsoft Corporation backward compatibility - * * 7 Reserved for future definition - * - * @returns the variant associated with a V1 UUID - * @throws UnsupportedOperationException - */ - virtual int variant() - throw ( lang::exceptions::UnsupportedOperationException ); - - /** - * The version number associated with this UUID. The version number describes - * how this UUID was generated. The version number has the following meaning: - * - * * 1 Time-based UUID - * * 2 DCE security UUID - * * 3 Name-based UUID - * * 4 Randomly generated UUID - * - * @returns the version associated with a V1 UUID - * @throws UnsupportedOperationException - */ - virtual int version() - throw ( lang::exceptions::UnsupportedOperationException ); - - }; - -}} - -#endif /*_DECAF_UTIL_UUID_H_*/
diff --git a/src/decaf/src/main/decaf/util/concurrent/Concurrent.h b/src/decaf/src/main/decaf/util/concurrent/Concurrent.h deleted file mode 100644 index 70b5be9..0000000 --- a/src/decaf/src/main/decaf/util/concurrent/Concurrent.h +++ /dev/null
@@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_CONCURRENT_CONCURRENT_H_ -#define _DECAF_UTIL_CONCURRENT_CONCURRENT_H_ - -#include <decaf/util/concurrent/Lock.h> - -namespace decaf{ -namespace util{ -namespace concurrent{ - -/** - * The synchronized macro defines a mechanism for snycronizing - * a scetion of code. The macro must be passed an object that - * implements the Syncronizable interface. - * - * The macro works by creating a for loop that will loop exactly - * once, creating a Lock object that is scoped to the loop. Once - * the loop conpletes and exits the Lock object goes out of scope - * releasing the lock on object W. For added safety the if else - * is used because not all compiles restrict the lifetime of - * loop variables to the loop, they will however restrict them - * to the scope of the else. - * - * The macro would be used as follows. - * - * <Syncronizable> X; - * - * somefunction() - * { - * syncronized(X) - * { - * // Do something that needs syncronizing. - * } - * } - */ - -#define WAIT_INFINITE 0xFFFFFFFF - -#define synchronized(W) \ - if(false){} \ - else \ - for( decaf::util::concurrent::Lock lock_W(W); \ - lock_W.isLocked(); lock_W.unlock() ) - -}}} - -#endif /*_DECAF_UTIL_CONCURRENT_CONCURRENT_H_*/
diff --git a/src/decaf/src/main/decaf/util/concurrent/CountDownLatch.cpp b/src/decaf/src/main/decaf/util/concurrent/CountDownLatch.cpp deleted file mode 100644 index 6de53c9..0000000 --- a/src/decaf/src/main/decaf/util/concurrent/CountDownLatch.cpp +++ /dev/null
@@ -1,98 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "CountDownLatch.h" - -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::util; -using namespace decaf::util::concurrent; - -//////////////////////////////////////////////////////////////////////////////// -CountDownLatch::CountDownLatch( int count ) -{ - this->count = count; -} - -//////////////////////////////////////////////////////////////////////////////// -CountDownLatch::~CountDownLatch() -{ - try { - - synchronized( &mutex ) { - mutex.notifyAll(); - } - } - DECAF_CATCHALL_NOTHROW() -} - -//////////////////////////////////////////////////////////////////////////////// -void CountDownLatch::await() throw ( lang::Exception ) { - - try { - - synchronized( &mutex ) { - if( count == 0 ){ - return; - } - - mutex.wait(); - } - } - DECAF_CATCH_RETHROW( lang::Exception ) - DECAF_CATCHALL_THROW( lang::Exception ) -} - -//////////////////////////////////////////////////////////////////////////////// -bool CountDownLatch::await( unsigned long timeOut ) throw ( lang::Exception ) { - try { - - synchronized( &mutex ) { - if( count == 0 ){ - return true; - } - - mutex.wait( timeOut ); - - return count == 0; - } - - return true; - } - DECAF_CATCH_RETHROW( lang::Exception ) - DECAF_CATCHALL_THROW( lang::Exception ) -} - -//////////////////////////////////////////////////////////////////////////////// -void CountDownLatch::countDown() { - try { - - if( count == 0 ) { - return; - } - - synchronized( &mutex ) { - count--; - - // Signal when done. - if( count == 0 ){ - mutex.notifyAll(); - } - } - } - DECAF_CATCHALL_NOTHROW() -}
diff --git a/src/decaf/src/main/decaf/util/concurrent/CountDownLatch.h b/src/decaf/src/main/decaf/util/concurrent/CountDownLatch.h deleted file mode 100644 index 0936f68..0000000 --- a/src/decaf/src/main/decaf/util/concurrent/CountDownLatch.h +++ /dev/null
@@ -1,84 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_CONCURRENT_COUNTDOWNLATCH_H_ -#define _DECAF_CONCURRENT_COUNTDOWNLATCH_H_ - -#include <decaf/util/concurrent/Mutex.h> -#include <decaf/util/Config.h> -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace util{ -namespace concurrent{ - - class DECAF_API CountDownLatch - { - private: - - /** - * number to count down to - */ - int count; - - /** - * Mutex to protect the counts, and wait on. - */ - Mutex mutex; - - public: - - /** - * Constructor - * @param count - number to count down from. - */ - CountDownLatch( int count ); - - virtual ~CountDownLatch(); - - /** - * Waits for the Count to be zero, and then returns - * @throws CMSException - */ - virtual void await() throw ( lang::Exception ); - - /** - * Waits for the Count to hit zero, or a timeout. - * @param timeOut - time in milliseconds to wait. - * @returns true if the wait made it to count zero, otherwise false - */ - virtual bool await( unsigned long timeOut ) throw ( lang::Exception ); - - /** - * Counts down the latch, releasing all waiting threads when - * the count hits zero. - */ - virtual void countDown(); - - /** - * Gets the current count - * @returns int count value - */ - virtual int getCount() const { - return this->count; - } - - }; - -}}} - -#endif /*_DECAF_CONCURRENT_COUNTDOWNLATCH_H_*/
diff --git a/src/decaf/src/main/decaf/util/concurrent/Lock.h b/src/decaf/src/main/decaf/util/concurrent/Lock.h deleted file mode 100644 index 9973253..0000000 --- a/src/decaf/src/main/decaf/util/concurrent/Lock.h +++ /dev/null
@@ -1,126 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_CONCURRENT_LOCK_H_ -#define _DECAF_UTIL_CONCURRENT_LOCK_H_ - -#include <decaf/lang/Exception.h> -#include <decaf/util/concurrent/Synchronizable.h> -#include <decaf/util/Config.h> - -namespace decaf{ -namespace util{ -namespace concurrent{ - - /** - * A wrapper class around a given synchronization mechanism that - * provides automatic release upon destruction. - * @author Nathan Mittler - */ - class Lock - { - private: - - /** - * Flag to indicate whether or not this object has locked the - * sync object. - */ - bool locked; - - /** - * The synchronizable object to lock/unlock. - */ - Synchronizable* syncObject; - - public: - - /** - * Constructor - initializes the object member and locks - * the object if desired. - * @param object The sync object to control - * @param intiallyLocked If true, the object will automatically - * be locked. - */ - Lock( Synchronizable* object, const bool intiallyLocked = true ) - { - try{ - syncObject = object; - locked = false; - - if( intiallyLocked ) - { - lock(); - } - } - DECAF_CATCH_RETHROW( lang::Exception ) - DECAF_CATCHALL_THROW( lang::Exception ) - } - - /** - * Destructor - Unlocks the object if it is locked. - */ - virtual ~Lock() - { - try{ - if( locked ) - { - syncObject->unlock(); - } - } - DECAF_CATCH_RETHROW( lang::Exception ) - DECAF_CATCHALL_THROW( lang::Exception ) - } - - /** - * Locks the object. - */ - void lock() - { - try{ - syncObject->lock(); - locked = true; - } - DECAF_CATCH_RETHROW( lang::Exception ) - DECAF_CATCHALL_THROW( lang::Exception ) - } - - /** - * Unlocks the object. - */ - void unlock() - { - try{ - if(locked) - { - syncObject->unlock(); - locked = false; - } - } - DECAF_CATCH_RETHROW( lang::Exception ) - DECAF_CATCHALL_THROW( lang::Exception ) - } - - /** - * Indicates whether or not the object is locked. - * @return true if the object is locked, otherwise false. - */ - bool isLocked() const{ return locked; } - }; - -}}} - -#endif // _DECAF_UTIL_CONCURRENT_LOCK_H_
diff --git a/src/decaf/src/main/decaf/util/concurrent/Mutex.cpp b/src/decaf/src/main/decaf/util/concurrent/Mutex.cpp deleted file mode 100644 index 9a0b65f..0000000 --- a/src/decaf/src/main/decaf/util/concurrent/Mutex.cpp +++ /dev/null
@@ -1,164 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <decaf/util/concurrent/Mutex.h> - -#include <apr_errno.h> -#include <apr_time.h> - -using namespace decaf; -using namespace decaf::util; -using namespace decaf::util::concurrent; - -//////////////////////////////////////////////////////////////////////////////// -Mutex::Mutex() { - - apr_pool_create( &pool, NULL ); - apr_thread_mutex_create( &mutex, APR_THREAD_MUTEX_NESTED, pool ); - this->lock_owner = 0; - this->lock_count = 0; -} - -//////////////////////////////////////////////////////////////////////////////// -Mutex::~Mutex() { - - // Unlock the mutex. - unlock(); - - apr_thread_mutex_destroy( mutex ); - apr_pool_destroy( pool ); -} - -//////////////////////////////////////////////////////////////////////////////// -void Mutex::lock() throw( lang::Exception ) { - - unsigned long threadId = lang::Thread::getId(); - - if( threadId == lock_owner ) { - lock_count++; - } else { - apr_thread_mutex_lock( mutex ); - lock_owner = threadId; - lock_count = 1; - } -} - -//////////////////////////////////////////////////////////////////////////////// -void Mutex::unlock() throw( lang::Exception ) { - - if( lock_owner == 0 ) { - return; - } - - if( !isLockOwner() ) { - throw lang::Exception( - __FILE__, __LINE__, - "Mutex::unlock - Failed, not Lock Owner!" ); - } - - lock_count--; - - if(lock_count == 0) { - lock_owner = 0; - apr_thread_mutex_unlock( mutex ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void Mutex::wait() throw( lang::Exception ) -{ - // Delegate to the timed version - wait( WAIT_INFINITE ); -} - -//////////////////////////////////////////////////////////////////////////////// -void Mutex::wait( unsigned long millisecs ) - throw( lang::Exception ) -{ - if( !isLockOwner() ) { - throw lang::Exception( - __FILE__, __LINE__, - "Mutex::wait - Failed, not Lock Owner!"); - } - - // Save the current owner as we are going to unlock and release for - // someone else to lock on potentially. When we come back and - // re-lock we want to restore to the state we were in before. - unsigned long lock_owner = this->lock_owner; - unsigned long lock_count = this->lock_count; - - this->lock_owner = 0; - this->lock_count = 0; - - // Create this threads wait event - apr_thread_cond_t* waitEvent = NULL; - apr_thread_cond_create( &waitEvent, pool ); - - // Store the event in the queue so that a notify can - // call it and wake up the thread. - eventQ.push_back( waitEvent ); - - if( millisecs != WAIT_INFINITE ) { - apr_interval_time_t wait = millisecs * 1000; - apr_thread_cond_timedwait( waitEvent, mutex, wait ); - } else { - apr_thread_cond_wait( waitEvent, mutex ); - } - - // Be Sure that the event is now removed - eventQ.remove( waitEvent ); - - // Destroy our wait event now, the notify method will have removed it - // from the event queue. - apr_thread_cond_destroy( waitEvent ); - - // restore the owner - this->lock_owner = lock_owner; - this->lock_count = lock_count; -} - -//////////////////////////////////////////////////////////////////////////////// -void Mutex::notify() throw( lang::Exception ) -{ - if( !isLockOwner() ) { - throw lang::Exception( - __FILE__, __LINE__, - "Mutex::Notify - Failed, not Lock Owner!" ); - } - - if( !eventQ.empty() ) { - apr_thread_cond_t* event = eventQ.front(); - eventQ.remove( event ); - apr_thread_cond_signal( event ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void Mutex::notifyAll() throw( lang::Exception ) -{ - if( !isLockOwner() ) { - throw lang::Exception( - __FILE__, __LINE__, - "Mutex::NotifyAll - Failed, not Lock Owner!" ); - } - - while( !eventQ.empty() ) { - apr_thread_cond_t* event = eventQ.front(); - eventQ.remove( event ); - apr_thread_cond_signal( event ); - } -}
diff --git a/src/decaf/src/main/decaf/util/concurrent/Mutex.h b/src/decaf/src/main/decaf/util/concurrent/Mutex.h deleted file mode 100644 index 1d1ab7b..0000000 --- a/src/decaf/src/main/decaf/util/concurrent/Mutex.h +++ /dev/null
@@ -1,129 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_CONCURRENT_MUTEX_H_ -#define _DECAF_CONCURRENT_MUTEX_H_ - -#include <decaf/util/concurrent/Synchronizable.h> -#include <decaf/util/concurrent/Concurrent.h> -#include <decaf/lang/Thread.h> -#include <decaf/util/Config.h> - -#include <apr_pools.h> -#include <apr_thread_mutex.h> -#include <apr_thread_cond.h> - -#include <list> -#include <assert.h> - -namespace decaf{ -namespace util{ -namespace concurrent{ - - /** - * Creates a pthread_mutex_t object. The object is created - * such that successive locks from the same thread is allowed - * and will be successful. - * @see pthread_mutex_t - */ - class DECAF_API Mutex : public Synchronizable { - private: - - // APR Pool Allocator - apr_pool_t* pool; - - // The mutex object. - apr_thread_mutex_t* mutex; - - // List of waiting threads - std::list<apr_thread_cond_t*> eventQ; - - // Lock Status Members - volatile unsigned long lock_owner; - volatile unsigned long lock_count; - - public: - - /** - * Constructor - creates and initializes the mutex. - */ - Mutex(); - - /** - * Destructor - destroys the mutex object. - */ - virtual ~Mutex(); - - /** - * Locks the object. - * @throws ActiveMQException - */ - virtual void lock() throw( lang::Exception ); - - /** - * Unlocks the object. - * @throws ActiveMQException - */ - virtual void unlock() throw( lang::Exception ); - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. - * @throws ActiveMQException - */ - virtual void wait() throw( lang::Exception ); - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. This wait will timeout after the specified time - * interval. - * @param millisecs the time in milliseconds to wait. - * @throws ActiveMQException - */ - virtual void wait( unsigned long millisecs ) - throw( lang::Exception ); - - /** - * Signals a waiter on this object that it can now wake - * up and continue. - * @throws ActiveMQException - */ - virtual void notify() throw( lang::Exception ); - - /** - * Signals the waiters on this object that it can now wake - * up and continue. - * @throws ActiveMQException - */ - virtual void notifyAll() throw( lang::Exception ); - - private: - - /** - * Check if the calling thread is the Lock Owner - * @retun true if the caller is the lock owner - */ - bool isLockOwner(){ - return lock_owner == lang::Thread::getId(); - } - - }; - -}}} - -#endif /*_DECAF_CONCURRENT_MUTEX_H_*/
diff --git a/src/decaf/src/main/decaf/util/concurrent/PooledThread.cpp b/src/decaf/src/main/decaf/util/concurrent/PooledThread.cpp deleted file mode 100644 index dc6daef..0000000 --- a/src/decaf/src/main/decaf/util/concurrent/PooledThread.cpp +++ /dev/null
@@ -1,164 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include <decaf/util/concurrent/PooledThread.h> -#include <decaf/util/concurrent/ThreadPool.h> -#include <decaf/util/concurrent/TaskListener.h> -#include <decaf/lang/exceptions/IllegalArgumentException.h> - -#include <iostream> - -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; -using namespace decaf::util; -using namespace decaf::util::concurrent; - -//////////////////////////////////////////////////////////////////////////////// -LOGDECAF_INITIALIZE(logger, PooledThread, "com.activemq.concurrent.PooledThread") - -//////////////////////////////////////////////////////////////////////////////// -PooledThread::PooledThread(ThreadPool* pool) -{ - if(pool == NULL) - { - throw IllegalArgumentException( __FILE__, __LINE__, - "PooledThread::PooledThread"); - } - - busy = false; - done = false; - - listener = NULL; - - // Store our Pool. - this->pool = pool; -} - -//////////////////////////////////////////////////////////////////////////////// -PooledThread::~PooledThread() -{ -} - -//////////////////////////////////////////////////////////////////////////////// -void PooledThread::run(void) -{ - ThreadPool::Task task; - - try - { - while(!done) - { - //LOGCMS_DEBUG(logger, "PooledThread::run - Entering deQ"); - - // Blocks until there something to be done - task = pool->deQueueTask(); - - //LOGCMS_DEBUG(logger, "PooledThread::run - Exited deQ"); - - // Check if the Done Flag is set, in case it happened while we - // were waiting for a task - if(done) - { - break; - } - - // If we got here and the runnable was null then something - // bad must have happened. Throw an Exception and bail. - if(!task.first) - { - throw Exception( __FILE__, __LINE__, - "PooledThread::run - Retrieive NULL task from Pool."); - } - - // Got some work to do, so set flag to busy - busy = true; - - // Inform a listener that we are going to start - if(listener) - { - /*LOGCMS_DEBUG(logger, - "PooledThread::run - Inform Listener we are starting");*/ - listener->onTaskStarted(this); - } - - // Perform the work - task.first->run(); - - /*LOGCMS_DEBUG(logger, - "PooledThread::run - Inform Task Listener we are done");*/ - - // Notify the Task listener that we are done - task.second->onTaskComplete(task.first); - - // Inform a listener that we are going to stop and wait - // for a new task - if(listener) - { - /*LOGCMS_DEBUG(logger, - "PooledThread::run - Inform Listener we are done");*/ - listener->onTaskCompleted(this); - } - - // Set flag to inactive, we will wait for work - busy = false; - } - } - catch( Exception& ex ) - { - ex.setMark( __FILE__, __LINE__ ); - - // Notify the Task owner - if(task.first && task.second) - { - task.second->onTaskException(task.first, ex); - } - - busy = false; - - // Notify the PooledThreadListener - if(listener) - { - listener->onTaskException(this, ex); - } - } - catch(...) - { - Exception ex( - __FILE__, __LINE__, - "PooledThread::run - Caught Unknown Exception"); - - // Notify the Task owner - if(task.first && task.second) - { - task.second->onTaskException(task.first, ex); - } - - busy = false; - - // Notify the PooledThreadListener - if(listener) - { - listener->onTaskException(this, ex); - } - } -} - -//////////////////////////////////////////////////////////////////////////////// -void PooledThread::stop(void) throw ( Exception ) -{ - done = true; -}
diff --git a/src/decaf/src/main/decaf/util/concurrent/PooledThread.h b/src/decaf/src/main/decaf/util/concurrent/PooledThread.h deleted file mode 100644 index d1d4fff..0000000 --- a/src/decaf/src/main/decaf/util/concurrent/PooledThread.h +++ /dev/null
@@ -1,107 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_CONCURRENT_POOLEDTHREAD_H_ -#define _DECAF_UTIL_CONCURRENT_POOLEDTHREAD_H_ - -#include <decaf/lang/Thread.h> -#include <decaf/util/concurrent/PooledThreadListener.h> -#include <decaf/util/logging/LoggerDefines.h> -#include <decaf/util/Config.h> - -#include <decaf/lang/Exception.h> - -namespace decaf{ -namespace util{ -namespace concurrent{ - - class ThreadPool; - - class DECAF_API PooledThread : public lang::Thread - { - private: - - // Is this thread currently processing something - bool busy; - - // Boolean flag indicating thread should stop - bool done; - - // Listener for Task related events - PooledThreadListener* listener; - - // The thread pool this Pooled Thread is Servicing - ThreadPool* pool; - - // Logger Init - LOGDECAF_DECLARE(logger) - - public: - - /** - * Constructor - * @param pool the parant ThreadPool object - */ - PooledThread( ThreadPool* pool ); - - virtual ~PooledThread(); - - /** - * Run Method for this object waits for something to be - * enqueued on the ThreadPool and then grabs it and calls - * its run method. - */ - virtual void run(); - - /** - * Stops the Thread, thread will complete its task if currently - * running one, and then die. Does not block. - * @throws Exception - */ - virtual void stop() throw ( lang::Exception ); - - /** - * Checks to see if the thread is busy, if busy it means - * that this thread has taken a task from the ThreadPool's - * queue and is processing it. - * @returns true if the Thread is busy - */ - virtual bool isBusy() { return busy; } - - /** - * Adds a listener to this <code>PooledThread</code> to be - * notified when this thread starts and completes a task. - * @param listener the listener to send notifications to. - */ - virtual void setPooledThreadListener( PooledThreadListener* listener ) - { - this->listener = listener; - } - - /** - * Removes a listener for this <code>PooledThread</code> to be - * notified when this thread starts and completes a task. - * @return a pointer to this thread's listener or NULL - */ - virtual PooledThreadListener* getPooledThreadListener() - { - return this->listener; - } - }; - -}}} - -#endif /*_DECAF_UTIL_CONCURRENT_POOLEDTHREAD_H_*/
diff --git a/src/decaf/src/main/decaf/util/concurrent/PooledThreadListener.h b/src/decaf/src/main/decaf/util/concurrent/PooledThreadListener.h deleted file mode 100644 index c818757..0000000 --- a/src/decaf/src/main/decaf/util/concurrent/PooledThreadListener.h +++ /dev/null
@@ -1,67 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_CONCURRENT_POOLEDTHREADLISTENER_H_ -#define _DECAF_UTIL_CONCURRENT_POOLEDTHREADLISTENER_H_ - -#include <decaf/lang/Exception.h> -#include <decaf/util/Config.h> - -namespace decaf{ -namespace util{ -namespace concurrent{ - - class PooledThread; - - class DECAF_API PooledThreadListener - { - public: - - /** - * Destructor - */ - virtual ~PooledThreadListener() {} - - /** - * Called by a pooled thread when it is about to begin - * executing a new task. - * @param Pointer to the Pooled Thread that is making this call - */ - virtual void onTaskStarted( PooledThread* thread ) = 0; - - /** - * Called by a pooled thread when it has completed a task - * and is going back to waiting for another task to run - * @param Pointer the the Pooled Thread that is making this call. - */ - virtual void onTaskCompleted( PooledThread* thread ) = 0; - - /** - * Called by a pooled thread when it has encountered an exception - * while running a user task, after receiving this notification - * the callee should assume that the PooledThread is now no longer - * running. - * @param Pointer to the Pooled Thread that is making this call - * @param The Exception that occured. - */ - virtual void onTaskException( PooledThread* thread, - lang::Exception& ex) = 0; - - }; - -}}} - -#endif /*_DECAF_UTIL_CONCURRENT_POOLEDTHREADLISTENER_H_*/
diff --git a/src/decaf/src/main/decaf/util/concurrent/Synchronizable.h b/src/decaf/src/main/decaf/util/concurrent/Synchronizable.h deleted file mode 100644 index 0918bb7..0000000 --- a/src/decaf/src/main/decaf/util/concurrent/Synchronizable.h +++ /dev/null
@@ -1,90 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_CONCURRENT_SYNCHRONIZABLE_H_ -#define _DECAF_UTIL_CONCURRENT_SYNCHRONIZABLE_H_ - -#include <decaf/lang/Exception.h> -#include <decaf/util/Config.h> - -namespace decaf{ -namespace util{ -namespace concurrent{ - - /** - * The interface for all synchronizable objects (that is, objects - * that can be locked and unlocked). - */ - class DECAF_API Synchronizable - { - public: - - virtual ~Synchronizable(){} - - /** - * Locks the object. - * @throws Exception - */ - virtual void lock() throw( lang::Exception ) = 0; - - /** - * Unlocks the object. - * @throws Exception - */ - virtual void unlock() throw( lang::Exception ) = 0; - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void wait() throw( lang::Exception ) = 0; - - /** - * Waits on a signal from this object, which is generated - * by a call to Notify. Must have this object locked before - * calling. This wait will timeout after the specified time - * interval. - * @param millisecs the time in millisecsonds to wait, or - * WAIT_INIFINITE - * @throws Exception - */ - virtual void wait(unsigned long millisecs) - throw( lang::Exception ) = 0; - - /** - * Signals a waiter on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notify() throw( lang::Exception ) = 0; - - /** - * Signals the waiters on this object that it can now wake - * up and continue. Must have this object locked before - * calling. - * @throws Exception - */ - virtual void notifyAll() throw( lang::Exception ) = 0; - - }; - -}}} - -#endif /*_DECAF_UTIL_CONCURRENT_SYNCHRONIZABLE_H_*/
diff --git a/src/decaf/src/main/decaf/util/concurrent/TaskListener.h b/src/decaf/src/main/decaf/util/concurrent/TaskListener.h deleted file mode 100644 index af22c9e..0000000 --- a/src/decaf/src/main/decaf/util/concurrent/TaskListener.h +++ /dev/null
@@ -1,55 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_CONCURRENT_TASKLISTENER_H_ -#define _DECAF_UTIL_CONCURRENT_TASKLISTENER_H_ - -#include <decaf/lang/Runnable.h> -#include <decaf/lang/Exception.h> -#include <decaf/util/Config.h> - -namespace decaf{ -namespace util{ -namespace concurrent{ - - class DECAF_API TaskListener - { - public: - - virtual ~TaskListener() {} - - /** - * Called when a queued task has completed, the task that - * finished is passed along for user consumption - * @param task Runnable Pointer to the task that finished - */ - virtual void onTaskComplete( lang::Runnable* task ) = 0; - - /** - * Called when a queued task has thrown an exception while - * being run. The Callee should assume that this was an - * unrecoverable exeption and that this task is now defunct. - * @param task Runnable Pointer to the task - * @param ex The ActiveMQException that was thrown. - */ - virtual void onTaskException( lang::Runnable* task, - lang::Exception& ex ) = 0; - - }; - -}}} - -#endif /*_DECAF_UTIL_CONCURRENT_TASKLISTENER_H_*/
diff --git a/src/decaf/src/main/decaf/util/concurrent/ThreadPool.cpp b/src/decaf/src/main/decaf/util/concurrent/ThreadPool.cpp deleted file mode 100644 index 66b6d3c..0000000 --- a/src/decaf/src/main/decaf/util/concurrent/ThreadPool.cpp +++ /dev/null
@@ -1,354 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include <decaf/util/concurrent/ThreadPool.h> -#include <decaf/util/concurrent/Concurrent.h> -#include <decaf/lang/exceptions/IllegalArgumentException.h> -#include <decaf/util/Config.h> - -#ifdef min -#undef min -#endif - -#include <algorithm> -#include <iostream> - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; -using namespace decaf::util; -using namespace decaf::util::concurrent; - -//////////////////////////////////////////////////////////////////////////////// -LOGDECAF_INITIALIZE(logger, ThreadPool, "com.activemq.concurrent.ThreadPool") -LOGDECAF_INITIALIZE(marker, ThreadPool, "com.activemq.concurrent.ThreadPool.Marker") - -//////////////////////////////////////////////////////////////////////////////// -ThreadPool ThreadPool::instance; - -//////////////////////////////////////////////////////////////////////////////// -ThreadPool::ThreadPool() -{ - maxThreads = DEFAULT_MAX_POOL_SIZE; - blockSize = DEFAULT_MAX_BLOCK_SIZE; - freeThreads = 0; - - shutdown = false; -} - -//////////////////////////////////////////////////////////////////////////////// -ThreadPool::~ThreadPool() -{ - try - { - std::vector<PooledThread*>::iterator itr = pool.begin(); - - // Stop all the threads - for(; itr != pool.end(); ++itr) - { - (*itr)->stop(); - } - - // Set the shutdown flag so that the DeQueue methods all quit - // when we interrupt them. - shutdown = true; - - synchronized(&queue) - { - // Signal the Queue so that all waiters are notified - queue.notifyAll(); - } - - // Wait for everyone to die - for(itr = pool.begin(); itr != pool.end(); ++itr) - { - (*itr)->join(); - - // Destroy the threads - delete *itr; - } - - pool.clear(); - } - DECAF_CATCH_RETHROW( lang::Exception ) - DECAF_CATCHALL_THROW( lang::Exception ) -} - -//////////////////////////////////////////////////////////////////////////////// -void ThreadPool::queueTask( ThreadPool::Task task ) - throw ( lang::Exception ) -{ - try - { - if( !task.first || !task.second ) - { - throw exceptions::IllegalArgumentException( __FILE__, __LINE__, - "ThreadPool::QueueTask - Invalid args for Task"); - } - - //LOGCMS_DEBUG(logger, "ThreadPool::QueueTask - syncing on queue"); - - synchronized(&queue) - { - //LOGCMS_DEBUG(logger, "ThreadPool::QueueTask - sync'd, synching pool"); - - // If there's nobody open to do work, then create some more - // threads to handle the work. - if(freeThreads == 0) - { - AllocateThreads(blockSize); - } - - //LOGCMS_DEBUG(logger, "ThreadPool::QueueTask - pushing task"); - - // queue the new work. - queue.push(task); - - //LOGCMS_DEBUG(logger, "ThreadPool::QueueTask - calling notify"); - - // Inform waiters that we put some work on the queue. - queue.notify(); - } - } - DECAF_CATCH_RETHROW( lang::Exception ) - DECAF_CATCHALL_THROW( lang::Exception ) -} - -//////////////////////////////////////////////////////////////////////////////// -ThreadPool::Task ThreadPool::deQueueTask() - throw ( lang::Exception ) -{ - try - { - //LOGCMS_DEBUG(logger, "ThreadPool::DeQueueTask - syncing on queue"); - - synchronized(&queue) - { - /*LOGCMS_DEBUG(logger, - "ThreadPool::DeQueueTask - sync'd checking queue empty");*/ - - // Wait for work, wait in a while loop since another thread could - // be waiting for a lock and get the work before we get woken up - // from our wait. - while(queue.empty() && !shutdown) - { - //LOGCMS_DEBUG(logger, "ThreadPool::DeQueueTask - Q empty, waiting"); - - queue.wait(); - - //LOGCMS_DEBUG(logger, "ThreadPool::DeQueueTask - done waiting"); - } - - // Don't give more work if we are closing down - if(shutdown) - { - return Task(); - } - - // check size again. - if(queue.empty()) - { - throw lang::Exception( __FILE__, __LINE__, - "ThreadPool::DeQueueUserWorkItem - Empty Taskn, not in shutdown."); - } - - //LOGCMS_DEBUG(logger, "ThreadPool::DeQueueTask - popping task"); - - // not empty so get the new work to do - return queue.pop(); - } - - return Task(); - } - DECAF_CATCH_RETHROW( lang::Exception ) - DECAF_CATCHALL_THROW( lang::Exception ) -} - -//////////////////////////////////////////////////////////////////////////////// -void ThreadPool::reserve( std::size_t size ) -{ - try - { - synchronized(&poolLock) - { - if(size < pool.size() || pool.size() == maxThreads) - { - return; - } - - // How many do we reserve - std::size_t allocCount = size - pool.size(); - - // Allocate the new Threads - AllocateThreads(allocCount); - } - } - DECAF_CATCH_RETHROW( lang::Exception ) - DECAF_CATCHALL_THROW( lang::Exception ) -} - -//////////////////////////////////////////////////////////////////////////////// -void ThreadPool::setMaxThreads( std::size_t maxThreads ) -{ - try - { - synchronized(&poolLock) - { - if(maxThreads == 0) - { - // Caller tried to do something stupid, ignore them. - return; - } - - this->maxThreads = maxThreads; - } - } - DECAF_CATCH_RETHROW( lang::Exception ) - DECAF_CATCHALL_THROW( lang::Exception ) -} - -//////////////////////////////////////////////////////////////////////////////// -void ThreadPool::setBlockSize( std::size_t blockSize ) -{ - try - { - if(blockSize <= 0) - { - // User tried something dumb, protect them from themselves - return; - } - - synchronized(&poolLock) - { - this->blockSize = blockSize; - } - } - DECAF_CATCH_RETHROW( lang::Exception ) - DECAF_CATCHALL_THROW( lang::Exception ) -} - -//////////////////////////////////////////////////////////////////////////////// -void ThreadPool::AllocateThreads( std::size_t count ) -{ - try - { - if(pool.size() >= maxThreads) - { - return; - } - - synchronized(&poolLock) - { - // Take the min of alloc size of maxThreads since we don't - // want anybody sneaking eaxtra threads in, greedy bastards. - count = std::min(count, maxThreads - pool.size()); - - // Each time we create a thread we increment the free Threads - // counter, but before we call start so that the Thread doesn't - // get ahead of us. - for(std::size_t i = 0; i < count; ++i) - { - pool.push_back(new PooledThread(this)); - pool.back()->setPooledThreadListener(this); - freeThreads++; - pool.back()->start(); - } - } - } - DECAF_CATCH_RETHROW( lang::Exception ) - DECAF_CATCHALL_THROW( lang::Exception ) -} - -//////////////////////////////////////////////////////////////////////////////// -void ThreadPool::onTaskStarted( PooledThread* thread DECAF_UNUSED ) -{ - try - { - synchronized(&poolLock) - { - freeThreads--; - - // Now that this callback has decremented the free threads coutner - // let check if there is any outstanding work to be done and no - // threads to handle it. This could happen if the QueueTask - // method was called successively without any of the PooledThreads - // having a chance to wake up and service the queue. This would - // cause the number of Task to exceed the number of free threads - // once the Threads got a chance to wake up and service the queue - if( freeThreads == 0 && !queue.empty() ) - { - // Allocate a new block of threads - AllocateThreads( blockSize ); - } - } - - //LOGCMS_DEBUG(logger, "ThreadPool::onTaskStarted:"); - } - DECAF_CATCH_RETHROW( lang::Exception ) - DECAF_CATCHALL_THROW( lang::Exception ) -} - -//////////////////////////////////////////////////////////////////////////////// -void ThreadPool::onTaskCompleted( PooledThread* thread DECAF_UNUSED) -{ - try - { - synchronized(&poolLock) - { - freeThreads++; - } - - //LOGCMS_DEBUG(logger, "ThreadPool::onTaskCompleted: "); - } - DECAF_CATCH_RETHROW( lang::Exception ) - DECAF_CATCHALL_THROW( lang::Exception ) -} - -//////////////////////////////////////////////////////////////////////////////// -void ThreadPool::onTaskException( - PooledThread* thread, - lang::Exception& ex DECAF_UNUSED ) -{ - //LOGCMS_DEBUG(logger, "ThreadPool::onTaskException: "); - - try - { - synchronized(&poolLock) - { - // Delete the thread that had the exception and start a new - // one to take its place. - freeThreads--; - - std::vector<PooledThread*>::iterator itr = - std::find(pool.begin(), pool.end(), thread); - - if(itr != pool.end()) - { - pool.erase(itr); - } - - // Bye-Bye Thread Object - delete thread; - - // Now allocate a replacement - AllocateThreads(1); - } - } - DECAF_CATCH_RETHROW( lang::Exception ) - DECAF_CATCHALL_THROW( lang::Exception ) -} -
diff --git a/src/decaf/src/main/decaf/util/concurrent/ThreadPool.h b/src/decaf/src/main/decaf/util/concurrent/ThreadPool.h deleted file mode 100644 index ebf6329..0000000 --- a/src/decaf/src/main/decaf/util/concurrent/ThreadPool.h +++ /dev/null
@@ -1,239 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_CONCURRENT_THREADPOOL_H_ -#define _DECAF_UTIL_CONCURRENT_THREADPOOL_H_ - -#include <decaf/lang/Runnable.h> -#include <decaf/util/concurrent/PooledThread.h> -#include <decaf/util/concurrent/PooledThreadListener.h> -#include <decaf/util/concurrent/TaskListener.h> -#include <decaf/util/concurrent/Mutex.h> -#include <decaf/util/Queue.h> -#include <decaf/util/logging/LoggerDefines.h> -#include <decaf/util/Config.h> - -#include <vector> - -namespace decaf{ -namespace util{ -namespace concurrent{ - - /** - * Defines a Thread Pool object that implements the functionality - * of pooling threads to perform user tasks. The Thread Poll has - * max size that it will grow to. The thread pool allocates threads - * in blocks. When there are no waiting worker threads and a task - * is queued then a new batch is allocated. The user can specify - * the size of the blocks, otherwise a default value is used. - * <P> - * When the user queues a task they must also queue a listner to - * be notified when the task has completed, this provides the user - * with a mechanism to know when a task object can be freed. - * <P> - * To have the Thread Pool perform a task, the user enqueue's an - * object that implements the <code>Runnable</code> insterface and - * one of the worker threads will executing it in its thread context. - */ - class DECAF_API ThreadPool : public PooledThreadListener - { - public: - - // Constants - static const size_t DEFAULT_MAX_POOL_SIZE = 10; - static const size_t DEFAULT_MAX_BLOCK_SIZE = 3; - - // Types - typedef std::pair<lang::Runnable*, TaskListener*> Task; - - private: - - // Vector of threads that this object has created for its pool. - std::vector< PooledThread* > pool; - - // Queue of Task that are in need of completion - util::Queue<Task> queue; - - // Max number of Threads this Pool can contian - std::size_t maxThreads; - - // Max number of tasks that can be allocated at a time - std::size_t blockSize; - - // boolean flag use to indocate that this object is shutting down. - bool shutdown; - - // Count of threads that are currently free to perfom some work. - std::size_t freeThreads; - - // Mutex for locking operations that affect the pool. - Mutex poolLock; - - // Logger Init - LOGDECAF_DECLARE(logger) - LOGDECAF_DECLARE(marker) - - private: // Statics - - // The singleton instance of this class - static ThreadPool instance; - - public: - - ThreadPool(); - virtual ~ThreadPool(); - - /** - * Queue a task to be completed by one of the Pooled Threads. - * tasks are serviced as soon as a <code>PooledThread</code> - * is available to run it. - * @param task object that derives from Runnable - * @throws ActiveMQException - */ - virtual void queueTask( Task task ) - throw ( lang::Exception ); - - /** - * DeQueue a task to be completed by one of the Pooled Threads. - * A caller of this method will block until there is something - * in the tasks queue, therefore care must be taken when calling - * this function. Normally clients of ThreadPool don't use - * this, only the <code>PooledThread</code> objects owned by - * this ThreadPool. - * @return object that derives from Runnable - * @throws ActiveMQException - */ - virtual Task deQueueTask() - throw ( lang::Exception ); - - /** - * Returns the current number of Threads in the Pool, this is - * how many there are now, not how many are active or the max - * number that might exist. - * @return integer number of threads in existance. - */ - virtual std::size_t getPoolSize() const { return pool.size(); } - - /** - * Returns the current backlog of items in the tasks queue, this - * is how much work is still waiting to get done. - * @return number of outstanding tasks. - */ - virtual std::size_t getBacklog() const { return queue.size(); } - - /** - * Ensures that there is at least the specified number of Threads - * allocated to the pool. If the size is greater than the MAX - * number of threads in the pool, then only MAX threads are - * reservved. If the size is smaller than the number of threads - * currently in the pool, than nothing is done. - * @param size the number of threads to reserve. - */ - virtual void reserve( std::size_t size ); - - /** - * Get the Max Number of Threads this Pool can contain - * @return max size - */ - virtual std::size_t getMaxThreads() const { return maxThreads; } - - /** - * Sets the Max number of threads this pool can contian. - * if this value is smaller than the current size of the - * pool nothing is done. - * @param maxThreads total number of threads that can be pooled - */ - virtual void setMaxThreads( std::size_t maxThreads ); - - /** - * Gets the Max number of threads that can be allocated at a time - * when new threads are needed. - * @return max Thread Block Size - */ - virtual std::size_t getBlockSize() const { return blockSize; } - - /** - * Sets the Max number of Threads that can be allocated at a time - * when the Thread Pool determines that more Threads are needed. - * @param blockSize Max Thread Block Size - */ - virtual void setBlockSize( std::size_t blockSize ); - - /** - * Returns the current number of available threads in the pool, threads - * that are performing a user task are considered unavailable. This value - * could change immeadiately after calling as Threads could finish right - * after and be available again. This is informational only. - * @return totoal free threads - */ - virtual std::size_t getFreeThreadCount() const { - return freeThreads; - } - - public: // PooledThreadListener Callbacks - - /** - * Called by a pooled thread when it is about to begin - * executing a new task. This will decrement the available - * threads counter so that this object knows when there are - * no more free threads and must create new ones. - * @param thread Pointer to the Pooled Thread that is making this call - */ - virtual void onTaskStarted( PooledThread* thread ); - - /** - * Called by a pooled thread when it has completed a task - * and is going back to waiting for another task to run, - * this will increment the free threads counter. - * @param thread Pointer the the Pooled Thread that is making this call. - */ - virtual void onTaskCompleted( PooledThread* thread ); - - /** - * Called by a pooled thread when it has encountered an exception - * while running a user task, after receiving this notification - * the callee should assume that the PooledThread is now no longer - * running. - * @param thread Pointer to the Pooled Thread that is making this call - * @param ex The Exception that occured. - */ - virtual void onTaskException( PooledThread* thread, - lang::Exception& ex ); - - public: // Statics - - /** - * Return the one and only Thread Pool instance. - * @return The Thread Pool Pointer - */ - static ThreadPool* getInstance() { - return &instance; - } - - private: - - /** - * Allocates the requested ammount of Threads, won't exceed - * <code>maxThreads</code>. - * @param count the number of threads to create - */ - void AllocateThreads( std::size_t count ); - - }; - -}}} - -#endif /*_DECAF_UTIL_CONCURRENT_THREADPOOL_H_*/
diff --git a/src/decaf/src/main/decaf/util/logging/ConsoleHandler.h b/src/decaf/src/main/decaf/util/logging/ConsoleHandler.h deleted file mode 100644 index 09f97d1..0000000 --- a/src/decaf/src/main/decaf/util/logging/ConsoleHandler.h +++ /dev/null
@@ -1,80 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_LOGGING_CONSOLEHANDLER_H_ -#define _DECAF_UTIL_LOGGING_CONSOLEHANDLER_H_ - -#include <decaf/util/logging/StreamHandler.h> -#include <decaf/io/StandardErrorOutputStream.h> - -namespace decaf{ -namespace util{ -namespace logging{ - - /** - * This Handler publishes log records to System.err. By default the - * SimpleFormatter is used to generate brief summaries. - * - * Configuration: By default each ConsoleHandler is initialized using - * the following LogManager configuration properties. If properties are - * not defined (or have invalid values) then the specified default - * values are used. - * - * ConsoleHandler.level specifies the default level for the Handler - * (defaults to Level.INFO). - * ConsoleHandler.filter specifies the name of a Filter class to use - * (defaults to no Filter). - * ConsoleHandler.formatter specifies the name of a Formatter class to - * use (defaults to SimpleFormatter). - */ - class DECAF_API ConsoleHandler : public StreamHandler { - private: - - // The Standard Error Stream to log to - io::StandardErrorOutputStream stream; - - // The default Simple Formatter - SimpleFormatter formatter; - - public: - - ConsoleHandler() : StreamHandler( &stream, &formatter ) { - - // Defaults level to Info - setLevel( Level.INFO ); - } - - virtual ~ConsoleHandler() {} - - /** - * Close the current output stream. - * <p> - * Override the StreamHandler close to flush the Std Err stream - * but doesn't close. - * @throw CMSException - */ - virtual void close() throw ( cms::CMSException ) - { - if( getOutputStream() ) { - getOutputStream->flush(); - } - } - - }; - -}}) - -#endif /*_DECAF_UTIL_LOGGING_CONSOLEHANDLER_H_*/
diff --git a/src/decaf/src/main/decaf/util/logging/Filter.h b/src/decaf/src/main/decaf/util/logging/Filter.h deleted file mode 100644 index c1132b8..0000000 --- a/src/decaf/src/main/decaf/util/logging/Filter.h +++ /dev/null
@@ -1,51 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_LOGGING_FILTER_H_ -#define _DECAF_UTIL_LOGGING_FILTER_H_ - -#include <decaf/util/logging/LogRecord.h> - -namespace decaf{ -namespace util{ -namespace logging{ - - /** - * A Filter can be used to provide fine grain control over what is - * logged, beyond the control provided by log levels. - * - * Each Logger and each Handler can have a filter associated with it. - * The Logger or Handler will call the isLoggable method to check if a - * given LogRecord should be published. If isLoggable returns false, - * the LogRecord will be discarded. - */ - class DECAF_API Filter { - public: - - virtual ~Filter() {} - - /** - * Check if a given log record should be published. - * @param record the <code>LogRecord</code> to check. - * @returns true if the record is loggable. - */ - virtual bool isLoggable( const LogRecord& record ) const = 0; - - }; - -}}} - -#endif /*_DECAF_UTIL_LOGGING_FILTER_H_*/
diff --git a/src/decaf/src/main/decaf/util/logging/Formatter.h b/src/decaf/src/main/decaf/util/logging/Formatter.h deleted file mode 100644 index 18f5799..0000000 --- a/src/decaf/src/main/decaf/util/logging/Formatter.h +++ /dev/null
@@ -1,73 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_LOGGING_FORMATTER_H_ -#define _DECAF_UTIL_LOGGING_FORMATTER_H_ - -namespace decaf{ -namespace util{ -namespace logging{ - - /** - * A Formatter provides support for formatting LogRecords. - * - * Typically each logging Handler will have a Formatter associated with - * it. The Formatter takes a LogRecord and converts it to a string. - * - * Some formatters (such as the XMLFormatter) need to wrap head and - * tail strings around a set of formatted records. The getHeader and - * getTail methods can be used to obtain these strings. - */ - class DECAF_API Formatter { - public: - - virtual ~Formatter() {} - - /** - * Format the given log record and return the formatted string. - * @param record The Log Record to Format - * @returns the formatted record. - */ - virtual std::string format( const LogRecord& record ) const = 0; - - /** - * Format the message string from a log record. - * @param record The Log Record to Format - * @returns the formatted message - */ - virtual std::string formatMessage( const LogRecord& record ) const = 0; - - /** - * Return the header string for a set of formatted records. In the - * default implementation this method should return empty string - * @param handler the target handler, can be null - * @return the head string - */ - virtual std::string getHead( const Handler* handler ) = 0; - - /** - * Return the tail string for a set of formatted records. In the - * default implementation this method should return empty string - * @param handler the target handler, can be null - * @return the tail string - */ - virtual std::string getTail( const Handler* handler ) = 0; - - }; - -}}} - -#endif /*_DECAF_UTIL_LOGGING_FORMATTER_H_*/
diff --git a/src/decaf/src/main/decaf/util/logging/Handler.h b/src/decaf/src/main/decaf/util/logging/Handler.h deleted file mode 100644 index bef829b..0000000 --- a/src/decaf/src/main/decaf/util/logging/Handler.h +++ /dev/null
@@ -1,122 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_LOGGING_HANDLER_H_ -#define _DECAF_UTIL_LOGGING_HANDLER_H_ - -#include <decaf/io/Closeable.h> -#include <decaf/util/logging/LogRecord.h> - -namespace decaf{ -namespace util{ -namespace logging{ - - class Filter; - class Formatter; - - /** - * A Handler object takes log messages from a Logger and exports them. - * It might for example, write them to a console or write them to a file, - * or send them to a network logging service, or forward them to an OS - * log, or whatever. - * - * A Handler can be disabled by doing a setLevel(Level.OFF) and can be - * re-enabled by doing a setLevel with an appropriate level. - * - * Handler classes typically use LogManager properties to set default - * values for the Handler's Filter, Formatter, and Level. See the - * specific documentation for each concrete Handler class. - */ - class DECAF_API Handler : public io::Closeable { - public: - - virtual ~Handler() {} - - /** - * Flush the Handler's output, clears any buffers. - */ - virtual void flush() = 0; - - /** - * Publish the Log Record to this Handler - * @param record The Log Record to Publish - */ - virtual void publish( const LogRecord& record ) = 0; - - /** - * Check if this Handler would actually log a given LogRecord. - * <p> - * This method checks if the LogRecord has an appropriate Level and - * whether it satisfies any Filter. It also may make other Handler - * specific checks that might prevent a handler from logging the - * LogRecord. - * @param record <code>LogRecord</code> to check - */ - virtual void isLoggable( const LogRecord& record ) = 0; - - /** - * Sets the Filter that this Handler uses to filter Log Records - * <p> - * For each call of publish the Handler will call this Filter (if it - * is non-null) to check if the LogRecord should be published or - * discarded. - * @param filter <code>Filter</code> derived instance - */ - virtual void setFilter( const Filter* filter ) = 0; - - /** - * Gets the Filter that this Handler uses to filter Log Records - * @returns <code>Filter</code> derived instance - */ - virtual const Filter* getFilter() = 0; - - /** - * Set the log level specifying which message levels will be logged - * by this Handler. - * <p> - * The intention is to allow developers to turn on voluminous logging, - * but to limit the messages that are sent to certain Handlers. - * @param value Level enumeration value - */ - virtual void setLevel( Level value ) = 0; - - /** - * Get the log level specifying which message levels will be logged - * by this Handler. - * @returns Level enumeration value - */ - virtual Level getLevel() = 0; - - /** - * Sets the <code>Formatter</code> used by this Handler - * <p> - * Some Handlers may not use Formatters, in which case the - * Formatter will be remembered, but not used. - * @param formatter <code>Filter</code> derived instance - */ - virtual void setFormatter( const Formatter* formatter ) = 0; - - /** - * Gets the <code>Formatter</code> used by this Handler - * @returns <code>Filter</code> derived instance - */ - virtual const Formatter* getFormatter() = 0; - - }; - -}}} - -#endif /*_DECAF_UTIL_LOGGING_HANDLER_H_*/
diff --git a/src/decaf/src/main/decaf/util/logging/LogManager.cpp b/src/decaf/src/main/decaf/util/logging/LogManager.cpp deleted file mode 100644 index f4cc21d..0000000 --- a/src/decaf/src/main/decaf/util/logging/LogManager.cpp +++ /dev/null
@@ -1,121 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#include "LogManager.h" - -#include <decaf/util/logging/PropertiesChangeListener.h> -#include <decaf/util/concurrent/Concurrent.h> -#include <decaf/util/Config.h> - -#include <algorithm> - -using namespace std; -using namespace decaf; -using namespace decaf::util; -using namespace decaf::util::logging; - -//////////////////////////////////////////////////////////////////////////////// -concurrent::Mutex LogManager::mutex; -LogManager* LogManager::instance = NULL; -unsigned int LogManager::refCount = 0; - -//////////////////////////////////////////////////////////////////////////////// -LogManager::~LogManager() -{ - // TODO - Delete all the loggers. -} - -//////////////////////////////////////////////////////////////////////////////// -void LogManager::setProperties( const Properties* properties ) -{ - // Copy the properties - this->properties.copy(properties); - - // Update the configuration of the loggers. - // TODO -} - -//////////////////////////////////////////////////////////////////////////////// -void LogManager::addPropertyChangeListener( - PropertyChangeListener* listener ) -{ - if( find(listeners.begin(), listeners.end(), listener) == listeners.end() ) { - listeners.push_back( listener ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void LogManager::removePropertyChangeListener( - PropertyChangeListener* listener ) -{ - listeners.remove( listener ); -} - -//////////////////////////////////////////////////////////////////////////////// -Logger* LogManager::getLogger( const std::string& name DECAF_UNUSED ) { - return NULL; -} - -//////////////////////////////////////////////////////////////////////////////// -int LogManager::getLoggerNames( const std::vector<std::string>& names DECAF_UNUSED ) { - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// -LogManager* LogManager::getInstance() { - - synchronized( &mutex ) { - if( instance == NULL ) { - instance = new LogManager(); - } - - refCount++; - - return instance; - } - - return NULL; -} - -//////////////////////////////////////////////////////////////////////////////// -void LogManager::returnInstance() { - - synchronized( &mutex ) { - if( refCount == 0 ) { - return ; - } - - refCount--; - - if( refCount == 0 ) { - delete instance; - instance = NULL; - } - } -} - -//////////////////////////////////////////////////////////////////////////////// -void LogManager::destroy() -{ - if( instance != NULL ) { - - synchronized( &mutex ) { - delete instance; - instance = NULL; - refCount = 0; - } - } -}
diff --git a/src/decaf/src/main/decaf/util/logging/LogManager.h b/src/decaf/src/main/decaf/util/logging/LogManager.h deleted file mode 100644 index 194ba55..0000000 --- a/src/decaf/src/main/decaf/util/logging/LogManager.h +++ /dev/null
@@ -1,252 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef _DECAF_UTIL_LOGGING_LOGMANAGER_H_ -#define _DECAF_UTIL_LOGGING_LOGMANAGER_H_ - -#include <map> -#include <list> -#include <string> -#include <vector> - -#include <decaf/util/Properties.h> -#include <decaf/util/concurrent/Mutex.h> -#include <decaf/util/Config.h> - -namespace decaf{ -namespace util{ -namespace logging{ - - class Logger; - class PropertyChangeListener; - - /** - * There is a single global LogManager object that is used to maintain - * a set of shared state about Loggers and log services. - * - * This LogManager object: - * - * * Manages a hierarchical namespace of Logger objects. All named - * Loggers are stored in this namespace. - * * Manages a set of logging control properties. These are simple - * key-value pairs that can be used by Handlers and other logging - * objects to configure themselves. - * - * The global LogManager object can be retrieved using - * LogManager.getLogManager(). The LogManager object is created during - * class initialization and cannot subsequently be changed. - * - * ***TODO**** - * By default, the LogManager reads its initial configuration from a - * properties file "lib/logging.properties" in the JRE directory. If - * you edit that property file you can change the default logging - * configuration for all uses of that JRE. - * - * In addition, the LogManager uses two optional system properties that - * allow more control over reading the initial configuration: - * - * * "decaf.logger.config.class" - * * "decaf.logger.config.file" - * - * These two properties may be set via the Preferences API, or as - * command line property definitions to the "java" command, or as - * system property definitions passed to JNI_CreateJavaVM. - * - * If the "java.util.logging.config.class" property is set, then the - * property value is treated as a class name. The given class will be - * loaded, an object will be instantiated, and that object's constructor - * is responsible for reading in the initial configuration. (That object - * may use other system properties to control its configuration.) The - * alternate configuration class can use readConfiguration(InputStream) - * to define properties in the LogManager. - * - * If "java.util.logging.config.class" property is not set, then the - * "java.util.logging.config.file" system property can be used to specify - * a properties file (in java.util.Properties format). The initial - * logging configuration will be read from this file. - * - * If neither of these properties is defined then, as described above, - * the LogManager will read its initial configuration from a properties - * file "lib/logging.properties" in the JRE directory. - * - * The properties for loggers and Handlers will have names starting with - * the dot-separated name for the handler or logger. - * ***TODO**** - * - * The global logging properties may include: - * - * * A property "handlers". This defines a whitespace separated - * list of class names for handler classes to load and register as - * handlers on the root Logger (the Logger named ""). Each class - * name must be for a Handler class which has a default constructor. - * Note that these Handlers may be created lazily, when they are - * first used. - * * A property "<logger>.handlers". This defines a whitespace or - * comma separated list of class names for handlers classes to load - * and register as handlers to the specified logger. Each class name - * must be for a Handler class which has a default constructor. Note - * that these Handlers may be created lazily, when they are first - * used. - * * A property "<logger>.useParentHandlers". This defines a boolean - * value. By default every logger calls its parent in addition to - * handling the logging message itself, this often result in - * messages being handled by the root logger as well. When setting - * this property to false a Handler needs to be configured for this - * logger otherwise no logging messages are delivered. - * * A property "config". This property is intended to allow arbitrary - * configuration code to be run. The property defines a whitespace - * separated list of class names. A new instance will be created for - * each named class. The default constructor of each class may - * execute arbitrary code to update the logging configuration, such - * as setting logger levels, adding handlers, adding filters, etc. - * - * Loggers are organized into a naming hierarchy based on their dot - * separated names. Thus "a.b.c" is a child of "a.b", but "a.b1" and - * a.b2" are peers. - * - * All properties whose names end with ".level" are assumed to define - * log levels for Loggers. Thus "foo.level" defines a log level for - * the logger called "foo" and (recursively) for any of its children - * in the naming hierarchy. Log Levels are applied in the order they - * are defined in the properties file. Thus level settings for child - * nodes in the tree should come after settings for their parents. The - * property name ".level" can be used to set the level for the root of - * the tree. - * - * All methods on the LogManager object are multi-thread safe. - */ - class DECAF_API LogManager { - private: - - // Change listener on this class's Properties - std::list<PropertyChangeListener*> listeners; - - // Properties of the Log Manager - util::Properties properties; - - public: - - virtual ~LogManager(); - - /** - * Sets the Properties this LogManager should use to configure - * its loggers. Once set a properties change event is fired. - * @param properties Pointer to read the configuration from - */ - virtual void setProperties( const util::Properties* properties ); - - /** - * Gets a reference to the Logging Properties used by this - * logger. - * @returns The Logger Properties Pointer - */ - virtual const util::Properties& getProperties() const { - return properties; - } - - /** - * Gets the value of a named property of this LogManager - * @param name of the Property to retrieve - * @return the value of the property - */ - virtual std::string getProperty( const std::string& name ) { - return properties.getProperty( name ); - } - - /** - * Adds a change listener for LogManager Properties, adding the same - * instance of a change event listener does nothing. - * @param listener a PropertyChangeListener - */ - virtual void addPropertyChangeListener( - PropertyChangeListener* listener ); - - /** - * Removes a properties change listener from the LogManager. - * @param listener a PropertyChangeListener - */ - virtual void removePropertyChangeListener( - PropertyChangeListener* listener ); - - /** - * Retrieves or creates a new Logger using the name specified - * a new logger inherits the configuration of the logger's - * parent if there is no configuration data for the logger. - * @param name The name of the Logger. - */ - virtual Logger* getLogger( const std::string& name ); - - /** - * Gets a list of known Logger Names from this Manager - * @param names STL Vector to hold string logger names - * @return names count of how many loggers were inserted - */ - virtual int getLoggerNames( const std::vector<std::string>& names ); - - public: // Static Singleton Methods. - - /** - * Get the singleton instance - * @return Pointer to an instance of the Log Manager - */ - static LogManager* getInstance(); - - /** - * Returns a Checked out instance of this Manager - */ - static void returnInstance(); - - /** - * Forcefully Delete the Instance of this LogManager - * even if there are outstanding references. - */ - static void destroy(); - - protected: - - /** - * Constructor, hidden to protect against direct instantiation - */ - LogManager() {} - - /** - * Copy Constructo - * @param manager the Manager to copy - */ - LogManager( const LogManager& manager ); - - /** - * Assignment operator - * @param manager the manager to assign from - */ - void operator=( const LogManager& manager ); - - private: - - // Static mutex to protect the singleton methods - static concurrent::Mutex mutex; - - // Static pointer to the one and only instance. - static LogManager* instance; - - // Static counter for number of outstanding references - static unsigned int refCount; - - }; - -}}} - -#endif /*_DECAF_UTIL_LOGGING_LOGMANAGER_H_*/
diff --git a/src/decaf/src/main/decaf/util/logging/LogRecord.h b/src/decaf/src/main/decaf/util/logging/LogRecord.h deleted file mode 100644 index 942f586..0000000 --- a/src/decaf/src/main/decaf/util/logging/LogRecord.h +++ /dev/null
@@ -1,191 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_LOGGING_LOGRECORD_H_ -#define _DECAF_UTIL_LOGGING_LOGRECORD_H_ - -#include <decaf/util/logging/LoggerCommon.h> -#include <decaf/util/Config.h> - -#include <string> - -namespace decaf{ -namespace util{ -namespace logging{ - - class DECAF_API LogRecord - { - private: - - // Level of this Record - Level level; - - // Name of the source Logger - std::string loggerName; - - // Name of the File that originated the Log - std::string sourceFile; - - // Line in the source file where log occured - unsigned long sourceLine; - - // The message to Log. - std::string message; - - // The function Name where the log occured - std::string functionName; - - // Time in Mills since UTC that this Record was logged - unsigned long timeStamp; - - // Thread Id of the Thread that logged this Record - unsigned long threadId; - - public: - - LogRecord() {} - virtual ~LogRecord() {} - - /** - * Get Level of this log record - * @return Level enumeration value. - */ - Level getLevel() const { - return level; - }; - - /** - * Set the Level of this Log Record - * @param value Level Enumeration Value - */ - void setLevel( Level value ) { - level = value; - }; - - /** - * Gets the Source Logger's Name - * @return the source loggers name - */ - const std::string& getLoggerName() const { - return loggerName; - }; - - /** - * Sets the Source Logger's Name - * @param loggerName the source loggers name - */ - void setLoggerName( const std::string& loggerName ) { - this->loggerName = loggerName; - }; - - /** - * Gets the Source Log File name - * @return the source loggers name - */ - const std::string& getSourceFile() const { - return sourceFile; - }; - - /** - * Sets the Source Log File Name - * @param loggerName the source loggers name - */ - void setSourceFile( const std::string& sourceFile ) { - this->sourceFile = sourceFile; - }; - - /** - * Gets the Source Log line number - * @return the source loggers line number - */ - unsigned long getSourceLine() const { - return sourceLine; - }; - - /** - * Sets the Source Log line number - * @param sourceLine the source logger's line number - */ - void setSourceLine( long sourceLine ) { - this->sourceLine = sourceLine; - }; - - /** - * Gets the Message to be Logged - * @return the source logger's message - */ - const std::string& getMessage() const { - return message; - }; - - /** - * Sets the Message to be Logged - * @param message the source loggers message - */ - void setMessage( const std::string& message ) { - this->message = message; - }; - - /** - * Gets the name of the function where this log was logged - * @return the source logger's message - */ - const std::string& getSourceFunction() const { - return functionName; - }; - - /** - * Sets the name of the function where this log was logged - * @param functionName the source of the log - */ - void setSourceFunction( const std::string& functionName ) { - this->functionName = functionName; - }; - - /** - * Gets the time in mills that this message was logged. - * @return UTC time in milliseconds - */ - unsigned long getTimestamp() const { return timeStamp; }; - - /** - * Sets the time in mills that this message was logged. - * @param timeStamp UTC Time in Milliseconds. - */ - void setTimestamp( long timeStamp ) { - this->timeStamp = timeStamp; - }; - - /** - * Gets the Thread Id where this Log was created - * @return the source loggers line number - */ - unsigned long getTreadId() const { - return threadId; - }; - - /** - * Sets the Thread Id where this Log was created - * @param threadId the source logger's line number - */ - void setTreadId( long threadId ) { - this->threadId = threadId; - }; - }; - -}}} - -#endif /*_DECAF_UTIL_LOGGING_LOGRECORD_H_*/
diff --git a/src/decaf/src/main/decaf/util/logging/LogWriter.cpp b/src/decaf/src/main/decaf/util/logging/LogWriter.cpp deleted file mode 100644 index 1bb649e..0000000 --- a/src/decaf/src/main/decaf/util/logging/LogWriter.cpp +++ /dev/null
@@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "LogWriter.h" - -#include <iostream> -#include <decaf/lang/Thread.h> -#include <decaf/util/concurrent/Concurrent.h> -#include <decaf/util/concurrent/Mutex.h> -#include <decaf/util/Config.h> - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::util; -using namespace decaf::util::concurrent; -using namespace decaf::util::logging; - -//////////////////////////////////////////////////////////////////////////////// -concurrent::Mutex LogWriter::mutex; - -//////////////////////////////////////////////////////////////////////////////// -LogWriter::LogWriter(void) -{ -} - -//////////////////////////////////////////////////////////////////////////////// -LogWriter::~LogWriter(void) -{ -} - -//////////////////////////////////////////////////////////////////////////////// -void LogWriter::log(const std::string& file DECAF_UNUSED, - const int line DECAF_UNUSED, - const std::string& prefix, - const std::string& message) -{ - synchronized(&mutex) - { - cout << prefix << " " - << message << " - tid: " << Thread::getId() << endl; - } -} - -//////////////////////////////////////////////////////////////////////////////// -void LogWriter::log(const std::string& message) -{ - synchronized(&mutex) - { - cout << message << " - tid: " << Thread::getId() << endl; - } -} - -//////////////////////////////////////////////////////////////////////////////// -LogWriter& LogWriter::getInstance(void) -{ - // This one instance - static LogWriter instance; - - return instance; -} -
diff --git a/src/decaf/src/main/decaf/util/logging/LogWriter.h b/src/decaf/src/main/decaf/util/logging/LogWriter.h deleted file mode 100644 index 676a339..0000000 --- a/src/decaf/src/main/decaf/util/logging/LogWriter.h +++ /dev/null
@@ -1,78 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_LOGGING_LOGWRITER_H_ -#define _DECAF_UTIL_LOGGING_LOGWRITER_H_ - -#include <decaf/util/concurrent/Mutex.h> - -namespace decaf{ -namespace util{ -namespace logging{ - - class DECAF_API LogWriter - { - public: - - LogWriter(void); - virtual ~LogWriter(void); - - /** - * Writes a message to the output destination - * @param file - * @param line - * @param prefix - * @param message - */ - virtual void log(const std::string& file, - const int line, - const std::string& prefix, - const std::string& message); - - /** - * Writes a message to the output destination - * @param message - */ - virtual void log(const std::string& message); - - public: // Static methods - - /** - * Get the singleton instance - */ - static LogWriter& getInstance(); - - /** - * Returns a Checked out instance of this Writer - */ - static void returnInstance(); - - /** - * Forcefully Delete the Instance of this LogWriter - * even if there are outstanding references. - */ - static void destroy(); - - private: - - // Syncronization mutex - static concurrent::Mutex mutex; - - }; - -}}} - -#endif /*_DECAF_UTIL_LOGGING_LOGWRITER_H_*/
diff --git a/src/decaf/src/main/decaf/util/logging/Logger.cpp b/src/decaf/src/main/decaf/util/logging/Logger.cpp deleted file mode 100644 index 6c54cb2..0000000 --- a/src/decaf/src/main/decaf/util/logging/Logger.cpp +++ /dev/null
@@ -1,155 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "Logger.h" - -#include <decaf/util/logging/Handler.h> -#include <decaf/util/Config.h> -#include <algorithm> - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; -using namespace decaf::util::logging; - -//////////////////////////////////////////////////////////////////////////////// -Logger::Logger( const std::string& name DECAF_UNUSED, - Logger* parent DECAF_UNUSED ) { -} - -//////////////////////////////////////////////////////////////////////////////// -Logger::~Logger() { -} - -//////////////////////////////////////////////////////////////////////////////// -void Logger::addHandler( Handler* handler ) throw ( IllegalArgumentException ) { - - if( handler == NULL ) - { - IllegalArgumentException( - __FILE__, __LINE__, - "Logger::addHandler - HAndler cannot be null"); - } - - if( find( handlers.begin(), handlers.end(), handler) != handlers.end() ) - { - handlers.push_back( handler ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void Logger::removeHandler( Handler* handler ) { - - list<Handler*>::iterator itr = - find( handlers.begin(), handlers.end(), handler ); - - if( itr != handlers.end() ) { - - delete *itr; - handlers.erase(itr); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void Logger::setFilter( Filter* filter DECAF_UNUSED ){ -} - -//////////////////////////////////////////////////////////////////////////////// -bool Logger::isLoggable( Level level DECAF_UNUSED ) const{ - return false; -} - -//////////////////////////////////////////////////////////////////////////////// -void Logger::entry( const std::string& blockName DECAF_UNUSED, - const std::string& file DECAF_UNUSED, - const int line DECAF_UNUSED ) { -} - -//////////////////////////////////////////////////////////////////////////////// -void Logger::exit(const std::string& blockName DECAF_UNUSED, - const std::string& file DECAF_UNUSED, - const int line DECAF_UNUSED) { -} - -//////////////////////////////////////////////////////////////////////////////// -void Logger::debug( const std::string& file DECAF_UNUSED, - const int line DECAF_UNUSED, - const std::string fnctionName DECAF_UNUSED, - const std::string& message DECAF_UNUSED ) { -} - -//////////////////////////////////////////////////////////////////////////////// -void Logger::info( const std::string& file DECAF_UNUSED, - const int line DECAF_UNUSED, - const std::string fnctionName DECAF_UNUSED, - const std::string& message DECAF_UNUSED ) { -} - -//////////////////////////////////////////////////////////////////////////////// -void Logger::error( const std::string& file DECAF_UNUSED, - const int line DECAF_UNUSED, - const std::string fnctionName DECAF_UNUSED, - const std::string& message DECAF_UNUSED ) { -} - -//////////////////////////////////////////////////////////////////////////////// -void Logger::warn( const std::string& file DECAF_UNUSED, - const int line DECAF_UNUSED, - const std::string fnctionName DECAF_UNUSED, - const std::string& message DECAF_UNUSED ) { -} - -//////////////////////////////////////////////////////////////////////////////// -void Logger::fatal( const std::string& file DECAF_UNUSED, - const int line DECAF_UNUSED, - const std::string fnctionName DECAF_UNUSED, - const std::string& message DECAF_UNUSED ) { -} - -//////////////////////////////////////////////////////////////////////////////// -void Logger::log( Level level DECAF_UNUSED, - const std::string& message DECAF_UNUSED ) { -} - -//////////////////////////////////////////////////////////////////////////////// -void Logger::log( Level level DECAF_UNUSED, - const std::string& file DECAF_UNUSED, - const int line DECAF_UNUSED, - const std::string& message DECAF_UNUSED, - lang::Exception& ex DECAF_UNUSED ) { -} - -//////////////////////////////////////////////////////////////////////////////// -void Logger::log( Level level DECAF_UNUSED, - const std::string& file DECAF_UNUSED, - const int line DECAF_UNUSED, - const std::string& message DECAF_UNUSED, ... ) { -} - -//////////////////////////////////////////////////////////////////////////////// -void Logger::log( LogRecord& record DECAF_UNUSED ) { -} - -//////////////////////////////////////////////////////////////////////////////// -Logger* Logger::getLogger( const std::string& name DECAF_UNUSED ) { - return NULL; -} - -//////////////////////////////////////////////////////////////////////////////// -Logger* Logger::getAnonymousLogger() { - return NULL; -}
diff --git a/src/decaf/src/main/decaf/util/logging/Logger.h b/src/decaf/src/main/decaf/util/logging/Logger.h deleted file mode 100644 index 9d46c7c..0000000 --- a/src/decaf/src/main/decaf/util/logging/Logger.h +++ /dev/null
@@ -1,406 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_LOGGING_LOGGER_H_ -#define _DECAF_UTIL_LOGGING_LOGGER_H_ - -#include <decaf/util/logging/LoggerCommon.h> -#include <decaf/util/logging/LogRecord.h> -#include <decaf/lang/exceptions/IllegalArgumentException.h> -#include <decaf/util/Config.h> - -#include <list> -#include <string> -#include <stdarg.h> - -namespace decaf{ -namespace util{ -namespace logging{ - - class Handler; - class Filter; - - class DECAF_API Logger - { - private: - - // The name of this Logger - std::string name; - - // The Parent of this Logger - Logger* parent; - - // list of Handlers owned by this logger - std::list<Handler*> handlers; - - // Filter used by this Logger - Filter* filter; - - // The Log Level of this Logger - Level level; - - // Using Parent Handlers? - bool useParentHandlers; - - public: - - /** - * Creates a new instance of the Logger with the given name - * and assign it the given parent logger. - * <p> - * The logger will be initially configured with a null Level - * and with useParentHandlers true. - * @param name - A name for the logger. This should be a - * dot-separated name and should normally be based on the package - * name or class name of the subsystem, such as java.net or - * javax.swing. It may be null for anonymous Loggers. - * @param parent logger that is this one's parent - */ - Logger( const std::string& name, Logger* parent ); - - virtual ~Logger(); - - /** - * Gets the name of this Logger - * @return logger name - */ - virtual const std::string& getName(void) const { - return name; - } - - /** - * Add a log Handler to receive logging messages. - * <p> - * By default, Loggers also send their output to their parent logger. - * Typically the root Logger is configured with a set of Handlers - * that essentially act as default handlers for all loggers. - * - * @param handler A Logging Handler - * #throws IllegalArgumentException - */ - virtual void addHandler( Handler* handler ) - throw ( lang::exceptions::IllegalArgumentException ); - - /** - * Removes the specified Handler and destroys it - * <p> - * Returns silently if the given Handler is not found. - * @param handler The Handler to remove - */ - virtual void removeHandler( Handler* handler ); - - /** - * Gets a vector containing all the handlers that this class - * has been assigned to use. - * @returns a list of handlers that are used by this logger - */ - // virtual const std::list<Handler*>& getHandlers(void) const; - - /** - * Set a filter to control output on this Logger. - * <p> - * After passing the initial "level" check, the Logger will call - * this Filter to check if a log record should really be published. - * <p> - * The caller releases ownership of this filter to this logger - * @param filter to use, can be null - */ - virtual void setFilter( Filter* filter ); - - /** - * Gets the Filter object that this class is using. - * @return the Filter in use, can be null - */ - virtual const Filter* getFilter() const { - return filter; - } - - /** - * Get the log Level that has been specified for this Logger. The - * result may be the Null level, which means that this logger's - * effective level will be inherited from its parent. - * @return the level that is currently set - */ - virtual Level getLevel() const { - return level; - } - - /** - * Set the log level specifying which message levels will be logged - * by this logger. Message levels lower than this value will be - * discarded. The level value Level.OFF can be used to turn off - * logging. - * <p> - * If the new level is the Null Level, it means that this node - * should inherit its level from its nearest ancestor with a - * specific (non-null) level value. - * @param level new Level value - */ - virtual void setLevel( Level level ) { - this->level = level; - } - - /** - * Discover whether or not this logger is sending its output to - * its parent logger. - * @return true if using Parent Handlers - */ - virtual bool getUseParentHandlers() const { - return useParentHandlers; - } - - /** - * pecify whether or not this logger should send its output to it's - * parent Logger. This means that any LogRecords will also be - * written to the parent's Handlers, and potentially to its parent, - * recursively up the namespace. - * @param value True is output is to be writen to the parent - */ - virtual void setUseParentHandlers( bool value ) { - this->useParentHandlers = value; - } - - /** - * Logs an Block Enter message - * <p> - * This is a convenience method that is used to tag a block enter, a - * log record with the class name function name and the string - * Entering is logged at the DEBUG log level. - * @param blockName source block name - * @param file source file name - * @param line source line name - */ - virtual void entry( const std::string& blockName, - const std::string& file, - const int line ); - - /** - * Logs an Block Exit message - * <p> - * This is a convenience method that is used to tag a block exit, a - * log record with the class name function name and the string - * Exiting is logged at the DEBUG log level. - * @param blockName source block name - * @param file source file name - * @param line source line name - */ - virtual void exit( const std::string& blockName, - const std::string& file, - const int line ); - - /** - * Log a Debug Level Log - * <p> - * If the logger is currently enabled for the DEBUG message level - * then the given message is forwarded to all the registered output - * Handler objects. - * @param file the file name where the log was generated - * @param line the line number where the log was generated - * @param functionName name of the function that logged this - * @param message the message to log - */ - virtual void debug( const std::string& file, - const int line, - const std::string functionName, - const std::string& message ); - - /** - * Log a info Level Log - * <p> - * If the logger is currently enabled for the info message level - * then the given message is forwarded to all the registered output - * Handler objects. - * - * @param file the file name where the log was generated - * @param line the line number where the log was generated - * @param functionName name of the function that logged this - * @param message the message to log - */ - virtual void info( const std::string& file, - const int line, - const std::string functionName, - const std::string& message ); - - /** - * Log a warn Level Log - * <p> - * If the logger is currently enabled for the warn message level - * then the given message is forwarded to all the registered output - * Handler objects. - * @param file the file name where the log was generated - * @param line the line number where the log was generated - * @param functionName name of the function that logged this - * @param message the message to log - */ - virtual void warn( const std::string& file, - const int line, - const std::string functionName, - const std::string& message ); - - /** - * Log a error Level Log - * <p> - * If the logger is currently enabled for the error message level - * then the given message is forwarded to all the registered output - * Handler objects. - * @param file the file name where the log was generated - * @param line the line number where the log was generated - * @param fnctionName name of the function that logged this - * @param message the message to log - */ - virtual void error( const std::string& file, - const int line, - const std::string fnctionName, - const std::string& message ); - - /** - * Log a fatal Level Log - * <p> - * If the logger is currently enabled for the fatal message level - * then the given message is forwarded to all the registered output - * Handler objects. - * @param file the file name where the log was generated - * @param line the line number where the log was generated - * @param fnctionName name of the function that logged this - * @param message the message to log - */ - virtual void fatal( const std::string& file, - const int line, - const std::string functionName, - const std::string& message ); - - /** - * Log a Throw Message - * <p> - * If the logger is currently enabled for the Throwing message level - * then the given message is forwarded to all the registered output - * Handler objects. - * @param file the file name where the log was generated - * @param line the line number where the log was generated - * @param fnctionName name of the function that logged this - * @param message the message to log - virtual void throwing( const std::string& file, - const int line, - const std::string fnctionName, - const std::string& message ); - */ - - /** - * Check if a message of the given level would actually be logged - * by this logger. This check is based on the Loggers effective - * level, which may be inherited from its parent. - * @param level - a message logging level - * @returns true if the given message level is currently being logged. - */ - virtual bool isLoggable( Level level ) const; - - /** - * Log a LogRecord. - * All the other logging methods in this class call through this - * method to actually perform any logging. Subclasses can override - * this single method to capture all log activity. - * @param record - the LogRecord to be published - */ - virtual void log( LogRecord& record ); - - /** - * Log a message, with no arguments. - * <p> - * If the logger is currently enabled for the given message level - * then the given message is forwarded to all the registered output - * Handler objects - * @param level the Level to log at - * @param message the message to log - */ - virtual void log( Level level, const std::string& message ); - - /** - * Log a message, with the list of params that is formatted into - * the message string. - * <p> - * If the logger is currently enabled for the given message level - * then the given message is forwarded to all the registered output - * Handler objects - * @param level the Level to log at - * @param file the message to log - * @param line the line in the file - * @param variable length arguement to format the message string. - */ - virtual void log( Level level, - const std::string& file, - const int line, - const std::string& message, ... ); - - /** - * Log a message, with associated Throwable information. - * If the logger is currently enabled for the given message level - * then the given arguments are stored in a LogRecord which is - * forwarded to all registered output handlers. - * Note that the thrown argument is stored in the LogRecord thrown - * property, rather than the LogRecord parameters property. Thus is - * it processed specially by output Formatters and is not treated - * as a formatting parameter to the LogRecord message property. - * @param level the Level to log at - * @param file File that the message was logged in - * @param line the line number where the message was logged at. - * @param ex the Exception to log - */ - virtual void log( Level level, - const std::string& file, - const int line, - const std::string& message, - lang::Exception& ex ); - - public: - - /** - * Creates an anonymous logger - * <p> - * The newly created Logger is not registered in the LogManager - * namespace. There will be no access checks on updates to the - * logger. - * Even although the new logger is anonymous, it is configured to - * have the root logger ("") as its parent. This means that by - * default it inherits its effective level and handlers from the - * root logger. - * <p> - * The caller is responsible for destroying the returned logger. - * @return Newly created anonymous logger - */ - static Logger* getAnonymousLogger(); - - /** - * Find or create a logger for a named subsystem. If a logger has - * already been created with the given name it is returned. - * Otherwise a new logger is created. - * <p> - * If a new logger is created its log level will be configured based - * on the LogManager and it will configured to also send logging - * output to its parent loggers Handlers. It will be registered in - * the LogManager global namespace. - * @param name - A name for the logger. This should be a - * dot-separated name and should normally be based on the package - * name or class name of the subsystem, such as cms or - * activemq.core.ActiveMQConnection - * @return a suitable logger. - */ - static Logger* getLogger( const std::string& name ); - - }; - -}}} - -#endif /*_DECAF_UTIL_LOGGING_LOGGER_H_*/
diff --git a/src/decaf/src/main/decaf/util/logging/LoggerCommon.h b/src/decaf/src/main/decaf/util/logging/LoggerCommon.h deleted file mode 100644 index a660e8b..0000000 --- a/src/decaf/src/main/decaf/util/logging/LoggerCommon.h +++ /dev/null
@@ -1,42 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_LOGGING_LOGGERCOMMON_H_ -#define _DECAF_UTIL_LOGGING_LOGGERCOMMON_H_ - -namespace decaf{ -namespace util{ -namespace logging{ - - /** - * Defines an enumeration for logging levels - */ - enum Level - { - Off, - Null, - Markblock, - Debug, - Info, - Warn, - Error, - Fatal, - Throwing - }; - -}}} - -#endif /*_DECAF_UTIL_LOGGING_LOGGERCOMMON_H_ */
diff --git a/src/decaf/src/main/decaf/util/logging/LoggerDefines.h b/src/decaf/src/main/decaf/util/logging/LoggerDefines.h deleted file mode 100644 index 83d7047..0000000 --- a/src/decaf/src/main/decaf/util/logging/LoggerDefines.h +++ /dev/null
@@ -1,55 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_LOGGING_LOGGERDEFINES_H_ -#define _DECAF_UTIL_LOGGING_LOGGERDEFINES_H_ - -#include <decaf/util/logging/SimpleLogger.h> -#include <sstream> - -#define LOGDECAF_DECLARE(loggerName) \ - static decaf::util::logging::SimpleLogger loggerName; - -#define LOGDECAF_INITIALIZE(loggerName, className, loggerFamily) \ - decaf::util::logging::SimpleLogger className::loggerName(loggerFamily); - -#define LOGDECAF_DECLARE_LOCAL(loggerName) \ - decaf::util::logging::Logger loggerName; - -#define LOGDECAF_DEBUG(logger, message) \ - logger.debug(__FILE__, __LINE__, message); - -#define LOGDECAF_DEBUG_1(logger, message, value); \ - { \ - std::ostringstream ostream; \ - ostream << message << value; \ - logger.debug(__FILE__, __LINE__, ostream.str()); \ - } - -#define LOGDECAF_INFO(logger, message) \ - logger.info(__FILE__, __LINE__, message); - -#define LOGDECAF_ERROR(logger, message) \ - logger.error(__FILE__, __LINE__, message); - -#define LOGDECAF_WARN(logger, message) \ - logger.warn(__FILE__, __LINE__, message); - -#define LOGDECAF_FATAL(logger, message) \ - logger.fatal(__FILE__, __LINE__, message); - - -#endif
diff --git a/src/decaf/src/main/decaf/util/logging/LoggerHierarchy.cpp b/src/decaf/src/main/decaf/util/logging/LoggerHierarchy.cpp deleted file mode 100644 index e1c5a59..0000000 --- a/src/decaf/src/main/decaf/util/logging/LoggerHierarchy.cpp +++ /dev/null
@@ -1,29 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#include "LoggerHierarchy.h" - -using namespace decaf::util::logging; - -//////////////////////////////////////////////////////////////////////////////// -LoggerHierarchy::LoggerHierarchy(){ -} - -//////////////////////////////////////////////////////////////////////////////// -LoggerHierarchy::~LoggerHierarchy(){ -} -
diff --git a/src/decaf/src/main/decaf/util/logging/LoggerHierarchy.h b/src/decaf/src/main/decaf/util/logging/LoggerHierarchy.h deleted file mode 100644 index b63353d..0000000 --- a/src/decaf/src/main/decaf/util/logging/LoggerHierarchy.h +++ /dev/null
@@ -1,35 +0,0 @@ -/* -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -#ifndef _DECAF_UTIL_LOGGING_LOGGERHIERARCHY_H_ -#define _DECAF_UTIL_LOGGING_LOGGERHIERARCHY_H_ - -namespace decaf{ -namespace util{ -namespace logging{ - - class LoggerHierarchy - { - public: - - LoggerHierarchy(); - virtual ~LoggerHierarchy(); - - }; - -}}} - -#endif /*_DECAF_UTIL_LOGGING_LOGGERHIERARCHY_H_*/
diff --git a/src/decaf/src/main/decaf/util/logging/MarkBlockLogger.h b/src/decaf/src/main/decaf/util/logging/MarkBlockLogger.h deleted file mode 100644 index ea304b2..0000000 --- a/src/decaf/src/main/decaf/util/logging/MarkBlockLogger.h +++ /dev/null
@@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_LOGGING_MARKBLOCKLOGGER_H_ -#define _DECAF_UTIL_LOGGING_MARKBLOCKLOGGER_H_ - -#include <decaf/util/logging/Logger.h> - -namespace decaf{ -namespace util{ -namespace logging{ - - /** - * Defines a class that can be used to mark the entry and exit from - * scoped blocks. - * <p> - * Create an instance of this class at the start of a scoped block, - * passing it the logger to use and the name of the block. The block - * entry and exit will be marked using the scope name, logger to the - * logger at the MARKBLOCK log level. - */ - class DECAF_API MarkBlockLogger - { - private: - - // Pointer to the Logger to use for Logging - Logger* logger; - - // Block Name to Log - std::string blockName; - - public: - - /** - * Constructor - Marks Block entry - * @param logger Logger to use - * @param blockName Block name - */ - MarkBlockLogger(Logger* logger, const std::string& blockName) - { - this->logger = logger; - this->blockName = blockName; - - logger.mark(blockName + " - Entered"); - } - - virtual ~MarkBlockLogger(void) - { - logger->mark(blockName + " - Exited"); - } - - }; - -}}} - -#endif /*_DECAF_UTIL_LOGGING_MARKBLOCKLOGGER_H_*/
diff --git a/src/decaf/src/main/decaf/util/logging/PropertiesChangeListener.h b/src/decaf/src/main/decaf/util/logging/PropertiesChangeListener.h deleted file mode 100644 index 2997431..0000000 --- a/src/decaf/src/main/decaf/util/logging/PropertiesChangeListener.h +++ /dev/null
@@ -1,50 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_LOGGING_PROPERTIESCHANGELISTENER_H_ -#define _DECAF_UTIL_LOGGING_PROPERTIESCHANGELISTENER_H_ - -#include <decaf/util/Config.h> - -namespace decaf{ -namespace util{ -namespace logging{ - - /** - * Defines the interface that classes can use to listen for change - * events on Properties. - */ - class DECAF_API PropertiesChangeListener - { - public: - - virtual ~PropertiesChangeListener() {} - - /** - * Change Event, called when a property is changed - * @param name - Name of the Property - * @param oldValue - Old Value of the Property - * @param newValue - New Value of the Property - */ - virtual void onPropertyChanged( const std::string& name, - const std::string& oldValue, - const std::string& newValue ) = 0; - - }; - -}}} - -#endif /*_DECAF_UTIL_LOGGING_PROPERTIESCHANGELISTENER_H_*/
diff --git a/src/decaf/src/main/decaf/util/logging/SimpleFormatter.h b/src/decaf/src/main/decaf/util/logging/SimpleFormatter.h deleted file mode 100644 index e7513a9..0000000 --- a/src/decaf/src/main/decaf/util/logging/SimpleFormatter.h +++ /dev/null
@@ -1,76 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_LOGGING_SIMPLEFORMATTER_H_ -#define _DECAF_UTIL_LOGGING_SIMPLEFORMATTER_H_ - -#include <decaf/util/logging/formatter.h> - -namespace decaf{ -namespace util{ -namespace logging{ - - /** - * Print a brief summary of the LogRecord in a human readable format. - * The summary will typically be 1 or 2 lines. - */ - class DECAF_API SimpleFormatter : public Formatter { - public: - - SimpleFormatter() {} - virtual ~SimpleFormatter() {} - - /** - * Format the given log record and return the formatted string. - * @param record The Log Record to Format - */ - virtual std::string format( const LogRecord& record ) const { - return ""; - } - - /** - * Format the message string from a log record. - * @param record The Log Record to Format - */ - virtual std::string formatMessage( const LogRecord& record ) const{ - return record.getMessage(); - } - - /** - * Return the header string for a set of formatted records. In the - * default implementation this method should return empty string - * @param handler the target handler, can be null - * @return empty string - */ - virtual std::string getHead( const Handler* handler ) { - return ""; - } - - /** - * Return the tail string for a set of formatted records. In the - * default implementation this method should return empty string - * @param handler the target handler, can be null - * @return empty string - */ - virtual std::string getTail( const Handler* handler ) { - return ""; - } - - }; - -}}} - -#endif /*_DECAF_UTIL_LOGGING_SIMPLEFORMATTER_H_*/
diff --git a/src/decaf/src/main/decaf/util/logging/SimpleLogger.cpp b/src/decaf/src/main/decaf/util/logging/SimpleLogger.cpp deleted file mode 100644 index 1fc0840..0000000 --- a/src/decaf/src/main/decaf/util/logging/SimpleLogger.cpp +++ /dev/null
@@ -1,80 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "SimpleLogger.h" - -#include <iostream> -#include <decaf/util/logging/LogWriter.h> - -using namespace std; -using namespace decaf; -using namespace decaf::util::concurrent; -using namespace decaf::util::logging; - -//////////////////////////////////////////////////////////////////////////////// -SimpleLogger::SimpleLogger( const std::string& name ) -{ - this->name = name; -} - -//////////////////////////////////////////////////////////////////////////////// -SimpleLogger::~SimpleLogger() -{} - -//////////////////////////////////////////////////////////////////////////////// -void SimpleLogger::mark( const std::string& message ) { - LogWriter::getInstance().log( "", 0, "", message ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SimpleLogger::debug( const std::string& file, - const int line, - const std::string& message ) { - LogWriter::getInstance().log( file, line, "DEBUG:", message ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SimpleLogger::info( const std::string& file, - const int line, - const std::string& message ) { - LogWriter::getInstance().log( file, line, "INFO:", message ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SimpleLogger::warn( const std::string& file, - const int line, - const std::string& message ) { - LogWriter::getInstance().log( file, line, "WARNING:", message ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SimpleLogger::error( const std::string& file, - const int line, - const std::string& message ) { - LogWriter::getInstance().log( file, line, "ERROR:", message ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SimpleLogger::fatal( const std::string& file, - const int line, - const std::string& message ) { - LogWriter::getInstance().log( file, line, "FATAL:", message ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SimpleLogger::log(const std::string& message ) { - LogWriter::getInstance().log( message ); -}
diff --git a/src/decaf/src/main/decaf/util/logging/SimpleLogger.h b/src/decaf/src/main/decaf/util/logging/SimpleLogger.h deleted file mode 100644 index 2ef0d89..0000000 --- a/src/decaf/src/main/decaf/util/logging/SimpleLogger.h +++ /dev/null
@@ -1,95 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_LOGGING_SIMPLELOGGER_H_ -#define _DECAF_UTIL_LOGGING_SIMPLELOGGER_H_ - -#include <string> -#include <decaf/util/Config.h> - -namespace decaf{ -namespace util{ -namespace logging{ - - class DECAF_API SimpleLogger - { - public: - - /** - * Constructor - */ - SimpleLogger( const std::string& name ); - - /** - * Destructor - */ - virtual ~SimpleLogger(); - - /** - * Log a Mark Block Level Log - */ - virtual void mark(const std::string& message); - - /** - * Log a Debug Level Log - */ - virtual void debug(const std::string& file, - const int line, - const std::string& message); - - /** - * Log a Informational Level Log - */ - virtual void info(const std::string& file, - const int line, - const std::string& message); - - /** - * Log a Warning Level Log - */ - virtual void warn(const std::string& file, - const int line, - const std::string& message); - - /** - * Log a Error Level Log - */ - virtual void error(const std::string& file, - const int line, - const std::string& message); - - /** - * Log a Fatal Level Log - */ - virtual void fatal(const std::string& file, - const int line, - const std::string& message); - - /** - * No-frills log. - */ - virtual void log(const std::string& message); - - private: - - // Name of this Logger - std::string name; - - }; - -}}} - -#endif /*_DECAF_UTIL_LOGGING_SIMPLELOGGER_H_*/
diff --git a/src/decaf/src/main/decaf/util/logging/StreamHandler.h b/src/decaf/src/main/decaf/util/logging/StreamHandler.h deleted file mode 100644 index b03087c..0000000 --- a/src/decaf/src/main/decaf/util/logging/StreamHandler.h +++ /dev/null
@@ -1,218 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_LOGGING_STREAMHANDLER_H_ -#define _DECAF_UTIL_LOGGING_STREAMHANDLER_H_ - -#include <decaf/util/logging/LoggerCommon.h> -#include <decaf/util/logging/Handler.h> -#include <decaf/util/logging/Formatter.h> -#include <decaf/util/logging/Filter.h> -#include <decaf/io/OutputStream.h> -#include <decaf/kang/exceptions/NullPointerException.h> -#include <decaf/lang/exceptions/InvalidStateException.h> -#include <decaf/util/concurrent/Concurrent.h> -#include <decaf/util/Config.h> - -namespace decaf{ -namespace util{ -namespace logging{ - - class DECAF_API StreamHandler : public Handler { - private: - - // OutputStream to write to - io::OutputStream* stream; - - // Formats this Handlers output - Formatter* formatter; - - // Filter object for Log Filtering - Filter* filter; - - public: - - /** - * Create a StreamHandler, with no current output stream. - */ - StreamHandler() { - this->stream = NULL; - this->formatter = NULL; - this->filter = NULL; - - this->level = Level::FATAL; // We take everything by default - } - - /** - * Create a StreamHandler, with no current output stream. - */ - StreamHandler( io::OutputStream* stream, Formatter* formatter ) - { - this->stream = stream; - this->formatter = formatter; - this->filter = NULL; - - this->level = Level::Fatal; // We take everything by default - } - - /** - * Destructor - */ - virtual ~StreamHandler() { - try { - this->close(); - } - AMQ_CATCH_NOTHROW( lang::Exception) - AMQ_CATCALL_NOTHROW() - } - - /** - * Close the current output stream. - * <p> - * The close method will perform a flush and then close the Handler. - * After close has been called this Handler should no longer be used. - * Method calls may either be silently ignored or may throw runtime - * exceptions. - * @throw CMSException - */ - virtual void close() throw ( cms::CMSException ) { - if( stream ) { - stream.flush(); - stream.close(); - } - } - - /** - * Flush the Handler's output, clears any buffers. - */ - virtual void flush() { - if(stream) { - stream->flush(); - } - } - - /** - * Publish the Log Record to this Handler - * @param The Log Record to Publish - */ - virtual void publish( const LogRecord& record ) { - - try { - - if( !stream ) { - throw lang::exceptions::NullPointerException( - __FILE__, __LINE__, - "StreamHandler::publish - Stream not set."); - } - - // Check if we should log this record - if(isLoggable( record) ) { - - std::string log = formatter->format(record); - - synchronized(stream) { - // Write the data to the stream - stream->write(log.c_str(), log.length()); - } - } - } - AMQ_CATCH_RETHROW( lang::Exception ) - AMQ_CATCHALL_THROW( lang::Exception ) - } - - /** - * Check if this Handler would actually log a given LogRecord. - * <p> - * @param <code>LogRecord</code> to check - */ - virtual void isLoggable( const LogRecord& record ) { - - if( filter ) { - // Allow for some filtering to occurr - return filter->isLoggable( record ); - } - - // By default we want everything that is greater than or - // equal to the set level of this Handler. - return record.level >= level; - } - - /** - * Sets the Filter that this Handler uses to filter Log Records - * @param <code>Filter</code> derived instance - */ - virtual void setFilter( const Filter* filter ){ - this->filter = filter; - } - - /** - * Gets the Filter that this Handler uses to filter Log Records - * @param <code>Filter</code> derived instance - */ - virtual const Filter* getFilter(){ - return filter; - } - - /** - * Set the log level specifying which message levels will be logged - * by this Handler. - * <p> - * The intention is to allow developers to turn on voluminous logging, - * but to limit the messages that are sent to certain Handlers. - * @param Level enumeration value - */ - virtual void setLevel( Level level ){ - this->level = level; - } - - /** - * Get the log level specifying which message levels will be logged - * by this Handler. - * @param Level enumeration value - */ - virtual Level getLevel(){ - return level; - } - - /** - * Sets the <code>Formatter</code> used by this Handler - * @param <code>Filter</code> derived instance - */ - virtual void setFormatter( const Formatter* formatter ){ - this->formatter = formatter; - } - - /** - * Gets the <code>Formatter</code> used by this Handler - * @param <code>Filter</code> derived instance - */ - virtual const Formatter* getFormatter(){ - return formatter; - } - - /** - * Gets the output Stream that this Handler is using - * @return OuputStream pointer - */ - virtual io::OutputStream* getOutputStream() const( - return stream; - } - - }; - -}}} - -#endif /*_DECAF_UTIL_LOGGING_STREAMHANDLER_H_*/
diff --git a/src/decaf/src/test-benchmarks/Makefile.am b/src/decaf/src/test-benchmarks/Makefile.am deleted file mode 100644 index d5f203a..0000000 --- a/src/decaf/src/test-benchmarks/Makefile.am +++ /dev/null
@@ -1,50 +0,0 @@ -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- - -cc_sources = \ - decaf/lang/BooleanBenchmark.cpp \ - decaf/util/PropertiesBenchmark.cpp \ - decaf/util/QueueBenchmark.cpp \ - decaf/util/SetBenchmark.cpp \ - decaf/util/MapBenchmark.cpp \ - decaf/io/DataInputStreamBenchmark.cpp \ - decaf/io/DataOutputStreamBenchmark.cpp \ - benchmark/PerformanceTimer.cpp \ - testRegistry.cpp \ - main.cpp - -hh_sources = \ - decaf/lang/BooleanBenchmark.h \ - decaf/util/PropertiesBenchmark.h \ - decaf/util/QueueBenchmark.h \ - decaf/util/SetBenchmark.h \ - decaf/util/MapBenchmark.h \ - decaf/io/DataInputStreamBenchmark.h \ - decaf/io/DataOutputStreamBenchmark.h \ - benchmark/BenchmarkBase.h \ - benchmark/PerformanceTimer.h - -## Compile this as part of make check -check_PROGRAMS = decaf-test-benchmarks - -## -## Compiler/Linker Options -## -decaf_test_benchmarks_SOURCES = $(cc_sources) -decaf_test_benchmarks_CXXFLAGS = $(DECAF_TEST_CXXFLAGS) -I$(srcdir)/../main @CPPUNIT_CFLAGS@ -decaf_test_benchmarks_LDADD= $(DECAF_TEST_LIBS) @CPPUNIT_LIBS@ -
diff --git a/src/decaf/src/test-benchmarks/benchmark/BenchmarkBase.h b/src/decaf/src/test-benchmarks/benchmark/BenchmarkBase.h deleted file mode 100644 index 946b805..0000000 --- a/src/decaf/src/test-benchmarks/benchmark/BenchmarkBase.h +++ /dev/null
@@ -1,66 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _BENCHMARK_BENCHMARKBASE_H_ -#define _BENCHMARK_BENCHMARKBASE_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> -#include <decaf/lang/Runnable.h> -#include <benchmark/PerformanceTimer.h> -#include <string> - -namespace benchmark{ - - template < class NAME, class TARGET, int ITERATIONS = 100 > - class BenchmarkBase : public decaf::lang::Runnable, - public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( NAME ); - CPPUNIT_TEST( runBenchmark ); - CPPUNIT_TEST_SUITE_END(); - - private: - - PerformanceTimer timer; - - public: - - virtual ~BenchmarkBase() {} - - int getIterations() const { - return ITERATIONS; - } - - void runBenchmark(){ - - for( int i = 0; i < ITERATIONS; ++i ){ - timer.start(); - this->run(); - timer.stop(); - } - - std::cout << typeid( TARGET ).name() << " Benchmark Time = " - << timer.getAverageTime() << " Millisecs" - << std::endl; - } - - }; - -} - -#endif /*_BENCHMARK_BENCHMARKBASE_H_*/
diff --git a/src/decaf/src/test-benchmarks/benchmark/PerformanceTimer.cpp b/src/decaf/src/test-benchmarks/benchmark/PerformanceTimer.cpp deleted file mode 100644 index a21cbb5..0000000 --- a/src/decaf/src/test-benchmarks/benchmark/PerformanceTimer.cpp +++ /dev/null
@@ -1,70 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "PerformanceTimer.h" - -#include <decaf/util/Date.h> - -using namespace std; -using namespace benchmark; -using namespace decaf::util; - -//////////////////////////////////////////////////////////////////////////////// -PerformanceTimer::PerformanceTimer(){ - this->numberOfRuns = 0; -} - -//////////////////////////////////////////////////////////////////////////////// -PerformanceTimer::~PerformanceTimer(){ -} - -//////////////////////////////////////////////////////////////////////////////// -void PerformanceTimer::start(){ - this->startTime = Date::getCurrentTimeMilliseconds(); -} - -//////////////////////////////////////////////////////////////////////////////// -void PerformanceTimer::stop(){ - - this->endTime = Date::getCurrentTimeMilliseconds(); - times.push_back( endTime - startTime ); - numberOfRuns++; -} - -//////////////////////////////////////////////////////////////////////////////// -void PerformanceTimer::reset(){ - this->startTime = 0; - this->endTime = 0; - this->times.clear(); -} - -//////////////////////////////////////////////////////////////////////////////// -long long PerformanceTimer::getAverageTime() const{ - - std::vector<long long>::const_iterator iter = times.begin(); - long long totalTime = 0; - - do{ - totalTime += *iter; - } while( ++iter != times.end() ); - - if( totalTime == 0 || numberOfRuns == 0 ) { - return 0; - } - - return totalTime / numberOfRuns; -}
diff --git a/src/decaf/src/test-benchmarks/benchmark/PerformanceTimer.h b/src/decaf/src/test-benchmarks/benchmark/PerformanceTimer.h deleted file mode 100644 index 0af0ff6..0000000 --- a/src/decaf/src/test-benchmarks/benchmark/PerformanceTimer.h +++ /dev/null
@@ -1,81 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _BENCHMARK_PERFORMANCETIMER_H_ -#define _BENCHMARK_PERFORMANCETIMER_H_ - -#include <decaf/util/Config.h> -#include <vector> - -namespace benchmark{ - - /** - * This class is used to aid in testing the performace of code. This class - * maintains a running list of performance numbers for successive calls to - * the method start and stop. Once the desired number of tests has been run, - * the user can call getAverageTime to find out the average time it took for - * all start / stop cycles. - */ - class PerformanceTimer { - private: - - long long numberOfRuns; - std::vector<long long> times; - long long startTime; - long long endTime; - - public: - - PerformanceTimer(); - virtual ~PerformanceTimer(); - - /** - * Starts the timer, time is from the call to start until a call - * to stop is made. - */ - void start(); - - /** - * Stops the timer and records the latest time. - */ - void stop(); - - /** - * Resets the Timer to an unused state all data is thrown out. - */ - void reset(); - - /** - * Gets the number of runs made so far - * @returns unsigned int that counts the number of runs - */ - unsigned int getNumberOfRuns() const { - return numberOfRuns; - } - - /** - * Gets the overall average time that the count has recoreded - * for all start / stop cycles. - * @returns the average time for all the runs times / numberOfRuns - */ - long long getAverageTime() const; - - }; - -} - -#endif /*_PERFORMANCETIMER_H_*/
diff --git a/src/decaf/src/test-benchmarks/decaf/io/DataInputStreamBenchmark.cpp b/src/decaf/src/test-benchmarks/decaf/io/DataInputStreamBenchmark.cpp deleted file mode 100644 index d5ebf2f..0000000 --- a/src/decaf/src/test-benchmarks/decaf/io/DataInputStreamBenchmark.cpp +++ /dev/null
@@ -1,112 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "DataInputStreamBenchmark.h" - -using namespace std; -using namespace decaf; -using namespace decaf::io; - -//////////////////////////////////////////////////////////////////////////////// -DataInputStreamBenchmark::DataInputStreamBenchmark(){ -} - -//////////////////////////////////////////////////////////////////////////////// -void DataInputStreamBenchmark::setUp(){ - - buffer = new unsigned char[bufferSize]; - - // init to full String Buffer - for( int ix = 0; ix < bufferSize - 1; ++ix ) { - buffer[ix] = 65; - } - buffer[bufferSize-1] = 0; - bis.setByteArray( buffer, bufferSize ); -} - -//////////////////////////////////////////////////////////////////////////////// -void DataInputStreamBenchmark::tearDown(){ - - delete buffer; -} - -//////////////////////////////////////////////////////////////////////////////// -void DataInputStreamBenchmark::run(){ - - DataInputStream dis( &bis ); - - bool boolResult = 0; - char charResult = 0; - unsigned char byteResult = 0; - unsigned short ushortResult = 0; - short shortResult = 0; - int intResult = 0; - long long longResult = 0; - double doubleResult = 0.0; - float floatResult = 0.0f; - std::string stringResult = ""; - - for( size_t iy = 0; iy < bufferSize / sizeof( boolResult ); ++iy ){ - boolResult = dis.readBoolean(); - } - bis.reset(); - - for( size_t iy = 0; iy < bufferSize / sizeof( charResult ); ++iy ){ - charResult = dis.readChar(); - } - bis.reset(); - - for( size_t iy = 0; iy < bufferSize / sizeof( byteResult ); ++iy ){ - byteResult = dis.readByte(); - } - bis.reset(); - - for( size_t iy = 0; iy < bufferSize / sizeof( ushortResult ); ++iy ){ - ushortResult = dis.readUnsignedShort(); - } - bis.reset(); - - for( size_t iy = 0; iy < bufferSize / sizeof( shortResult ); ++iy ){ - shortResult = dis.readShort(); - } - bis.reset(); - - for( size_t iy = 0; iy < bufferSize / sizeof( intResult ); ++iy ){ - intResult = dis.readInt(); - } - bis.reset(); - - for( size_t iy = 0; iy < bufferSize / sizeof( longResult ); ++iy ){ - longResult = dis.readLong(); - } - bis.reset(); - - for( size_t iy = 0; iy < bufferSize / sizeof( floatResult ); ++iy ){ - floatResult = dis.readFloat(); - } - bis.reset(); - - for( size_t iy = 0; iy < bufferSize / sizeof( doubleResult ); ++iy ){ - doubleResult = dis.readDouble(); - } - bis.reset(); - - for( int i = 0; i < 5; ++i ) { - stringResult = dis.readString(); - bis.reset(); - } -}
diff --git a/src/decaf/src/test-benchmarks/decaf/io/DataInputStreamBenchmark.h b/src/decaf/src/test-benchmarks/decaf/io/DataInputStreamBenchmark.h deleted file mode 100644 index b166895..0000000 --- a/src/decaf/src/test-benchmarks/decaf/io/DataInputStreamBenchmark.h +++ /dev/null
@@ -1,50 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_DATAINPUTSTREAMBENCHMARK_H_ -#define _DECAF_IO_DATAINPUTSTREAMBENCHMARK_H_ - -#include <benchmark/BenchmarkBase.h> -#include <decaf/io/DataInputStream.h> -#include <decaf/io/ByteArrayInputStream.h> - -namespace decaf{ -namespace io{ - - class DataInputStreamBenchmark : - public benchmark::BenchmarkBase< - decaf::io::DataInputStreamBenchmark, DataInputStream > - { - private: - - unsigned char* buffer; - static const int bufferSize = 200000; - ByteArrayInputStream bis; - - public: - - DataInputStreamBenchmark(); - virtual ~DataInputStreamBenchmark() {} - - virtual void setUp(); - virtual void tearDown(); - virtual void run(); - }; - -}} - -#endif /*_DECAF_IO_DATAINPUTSTREAMBENCHMARK_H_*/
diff --git a/src/decaf/src/test-benchmarks/decaf/io/DataOutputStreamBenchmark.cpp b/src/decaf/src/test-benchmarks/decaf/io/DataOutputStreamBenchmark.cpp deleted file mode 100644 index 1116b38..0000000 --- a/src/decaf/src/test-benchmarks/decaf/io/DataOutputStreamBenchmark.cpp +++ /dev/null
@@ -1,84 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "DataOutputStreamBenchmark.h" -#include <decaf/io/ByteArrayOutputStream.h> - -using namespace std; -using namespace decaf; -using namespace decaf::io; - -//////////////////////////////////////////////////////////////////////////////// -DataOutputStreamBenchmark::DataOutputStreamBenchmark(){ -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStreamBenchmark::setUp(){ - - for( size_t i = 0; i < 8096; ++i ) { - testString += 'a'; - } -} - -//////////////////////////////////////////////////////////////////////////////// -void DataOutputStreamBenchmark::run(){ - - std::vector<unsigned char> outputBuffer; - int numRuns = 500; - - ByteArrayOutputStream bos( outputBuffer ); - DataOutputStream dos( &bos ); - - for( int iy = 0; iy < numRuns * 40; ++iy ){ - dos.writeLong( 0xFF00FF00FF00FF00LL ); - } - for( int iy = 0; iy < numRuns * 40; ++iy ){ - dos.writeInt( 312568 ); - } - for( int iy = 0; iy < numRuns * 40; ++iy ){ - dos.writeShort( 12568 ); - } - for( int iy = 0; iy < numRuns * 40; ++iy ){ - dos.writeUnsignedShort( 12568 ); - } - for( int iy = 0; iy < numRuns * 40; ++iy ){ - dos.writeBoolean( true ); - } - for( int iy = 0; iy < numRuns * 40; ++iy ){ - dos.writeDouble( 10.34235234 ); - } - for( int iy = 0; iy < numRuns + 40; ++iy ){ - dos.writeFloat( 32.4f ); - } - - outputBuffer.clear(); - - for( int iy = 0; iy < numRuns; ++iy ){ - dos.writeChars( testString ); - outputBuffer.clear(); - } - for( int iy = 0; iy < numRuns; ++iy ){ - dos.writeBytes( testString ); - outputBuffer.clear(); - } - for( int iy = 0; iy < numRuns; ++iy ){ - dos.writeUTF( testString ); - outputBuffer.clear(); - } - - outputBuffer.clear(); -}
diff --git a/src/decaf/src/test-benchmarks/decaf/io/DataOutputStreamBenchmark.h b/src/decaf/src/test-benchmarks/decaf/io/DataOutputStreamBenchmark.h deleted file mode 100644 index cc9d07d..0000000 --- a/src/decaf/src/test-benchmarks/decaf/io/DataOutputStreamBenchmark.h +++ /dev/null
@@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_DATAOUTPUTSTREAMBENCHMARK_H_ -#define _DECAF_IO_DATAOUTPUTSTREAMBENCHMARK_H_ - -#include <benchmark/BenchmarkBase.h> -#include <decaf/io/DataOutputStream.h> - -namespace decaf{ -namespace io{ - - class DataOutputStreamBenchmark : - public benchmark::BenchmarkBase< - decaf::io::DataOutputStreamBenchmark, DataOutputStream > - { - private: - - std::string testString; - - public: - - DataOutputStreamBenchmark(); - virtual ~DataOutputStreamBenchmark() {} - - virtual void setUp(); - virtual void run(); - }; - -}} - -#endif /*_DECAF_IO_DATAOUTPUTSTREAMBENCHMARK_H_*/
diff --git a/src/decaf/src/test-benchmarks/decaf/lang/BooleanBenchmark.cpp b/src/decaf/src/test-benchmarks/decaf/lang/BooleanBenchmark.cpp deleted file mode 100644 index c547bcd..0000000 --- a/src/decaf/src/test-benchmarks/decaf/lang/BooleanBenchmark.cpp +++ /dev/null
@@ -1,52 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "BooleanBenchmark.h" - -using namespace decaf; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -BooleanBenchmark::BooleanBenchmark() { -} - -//////////////////////////////////////////////////////////////////////////////// -void BooleanBenchmark::run(){ - - int numRuns = 1000; - Boolean boolean( false ); - - std::string value = ""; - - for( int i = 0; i < numRuns; ++i ) { - value = boolean.toString(); - } - - for( int i = 0; i < numRuns; ++i ) { - value = boolean.toString( false ); - value = boolean.toString( true ); - } - - for( int i = 0; i < numRuns; ++i ) { - bool value1 = Boolean::parseBoolean( "false" ); - bool value2 = Boolean::parseBoolean( "true" ); - - value = Boolean::valueOf( value1 ).toString(); - value = Boolean::valueOf( value2 ).toString(); - } - -}
diff --git a/src/decaf/src/test-benchmarks/decaf/lang/BooleanBenchmark.h b/src/decaf/src/test-benchmarks/decaf/lang/BooleanBenchmark.h deleted file mode 100644 index ba3097c..0000000 --- a/src/decaf/src/test-benchmarks/decaf/lang/BooleanBenchmark.h +++ /dev/null
@@ -1,40 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_BOOLEANBENCHMARK_H_ -#define _DECAF_LANG_BOOLEANBENCHMARK_H_ - -#include <benchmark/BenchmarkBase.h> -#include <decaf/lang/Boolean.h> - -namespace decaf{ -namespace lang{ - - class BooleanBenchmark : - public benchmark::BenchmarkBase< decaf::lang::BooleanBenchmark, Boolean > - { - public: - - BooleanBenchmark(); - virtual ~BooleanBenchmark() {} - - virtual void run(); - }; - -}} - -#endif /*_DECAF_LANG_BOOLEANBENCHMARK_H_*/
diff --git a/src/decaf/src/test-benchmarks/decaf/util/MapBenchmark.cpp b/src/decaf/src/test-benchmarks/decaf/util/MapBenchmark.cpp deleted file mode 100644 index 9f3155c..0000000 --- a/src/decaf/src/test-benchmarks/decaf/util/MapBenchmark.cpp +++ /dev/null
@@ -1,76 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "MapBenchmark.h" -#include <decaf/lang/Integer.h> - -using namespace decaf; -using namespace decaf::util; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -MapBenchmark::MapBenchmark() { -} - -//////////////////////////////////////////////////////////////////////////////// -void MapBenchmark::run() { - - int numRuns = 500; - std::string test = "test"; - std::string resultStr = ""; - Map<std::string, std::string> stringCopy; - Map<int, int> intCopy; - - for( int i = 0; i < numRuns; ++i ) { - stringMap.setValue( test + Integer::toString(i), test + Integer::toString(i) ); - intMap.setValue( 100 + i, 100 + i ); - stringMap.containsKey( test + Integer::toString(i) ); - intMap.containsKey( 100 + i ); - stringMap.containsValue( test + Integer::toString(i) ); - intMap.containsValue( 100 + i ); - } - - for( int i = 0; i < numRuns; ++i ) { - stringMap.remove( test + Integer::toString(i) ); - intMap.remove( 100 + i ); - stringMap.containsKey( test + Integer::toString(i) ); - intMap.containsKey( 100 + i ); - } - - for( int i = 0; i < numRuns; ++i ) { - stringMap.setValue( test + Integer::toString(i), test + Integer::toString(i) ); - intMap.setValue( 100 + i, 100 + i ); - } - - std::vector<std::string> stringVec; - std::vector<int> intVec; - - for( int i = 0; i < numRuns / 2; ++i ) { - stringVec = stringMap.getKeys(); - stringVec = stringMap.getValues(); - intVec = intMap.getKeys(); - intVec = intMap.getValues(); - } - - for( int i = 0; i < numRuns / 2; ++i ) { - stringCopy.copy( stringMap ); - stringCopy.clear(); - intCopy.copy( intMap ); - intCopy.clear(); - } - -}
diff --git a/src/decaf/src/test-benchmarks/decaf/util/MapBenchmark.h b/src/decaf/src/test-benchmarks/decaf/util/MapBenchmark.h deleted file mode 100644 index 847034b..0000000 --- a/src/decaf/src/test-benchmarks/decaf/util/MapBenchmark.h +++ /dev/null
@@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_MAPBENCHMARK_H_ -#define _DECAF_UTIL_MAPBENCHMARK_H_ - -#include <benchmark/BenchmarkBase.h> -#include <decaf/util/Map.h> - -namespace decaf{ -namespace util{ - - class MapBenchmark : - public benchmark::BenchmarkBase< - decaf::util::MapBenchmark, Map<int, int> > - { - private: - - Map< std::string, std::string> stringMap; - Map<int, int> intMap; - - public: - - MapBenchmark(); - virtual ~MapBenchmark() {} - - virtual void run(); - }; - -}} - -#endif /*_DECAF_UTIL_MAPBENCHMARK_H_*/
diff --git a/src/decaf/src/test-benchmarks/decaf/util/PropertiesBenchmark.cpp b/src/decaf/src/test-benchmarks/decaf/util/PropertiesBenchmark.cpp deleted file mode 100644 index efb8a25..0000000 --- a/src/decaf/src/test-benchmarks/decaf/util/PropertiesBenchmark.cpp +++ /dev/null
@@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "PropertiesBenchmark.h" - -#include <decaf/lang/Integer.h> - -using namespace std; -using namespace decaf; -using namespace decaf::util; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -PropertiesBenchmark::PropertiesBenchmark() { -} - -//////////////////////////////////////////////////////////////////////////////// -void PropertiesBenchmark::run() { - - int numRuns = 250; - std::string result = ""; - bool hasIt = false; - Properties copy; - - for( int i = 0; i < numRuns; ++i ) { - properties.setProperty( "test", "value" ); - hasIt = properties.hasProperty( "test" ); - result = properties.getProperty( "test" ); - properties.remove( "test" ); - } - - std::vector< std::pair< std::string, std::string > > array; - - std::string prefix = "test"; - for( int i = 0; i < numRuns; ++i ) { - properties.setProperty( - prefix + Integer::toString(i), prefix + Integer::toString(i) ); - } - - for( int i = 0; i < numRuns; ++i ) { - array = properties.toArray(); - } - - for( int i = 0; i < numRuns; ++i ) { - copy.copy( &properties ); - copy.clear(); - } - -}
diff --git a/src/decaf/src/test-benchmarks/decaf/util/PropertiesBenchmark.h b/src/decaf/src/test-benchmarks/decaf/util/PropertiesBenchmark.h deleted file mode 100644 index 3e7ffbc..0000000 --- a/src/decaf/src/test-benchmarks/decaf/util/PropertiesBenchmark.h +++ /dev/null
@@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_PROPERTIESBENCHMARK_H_ -#define _DECAF_UTIL_PROPERTIESBENCHMARK_H_ - -#include <benchmark/BenchmarkBase.h> - -#include <decaf/util/Properties.h> - -namespace decaf{ -namespace util{ - - class PropertiesBenchmark : - public benchmark::BenchmarkBase< - decaf::util::PropertiesBenchmark, Properties > - { - private: - - Properties properties; - - public: - - PropertiesBenchmark(); - virtual ~PropertiesBenchmark() {} - - virtual void run(); - }; - -}} - -#endif /*_DECAF_UTIL_PROPERTIESBENCHMARK_H_*/
diff --git a/src/decaf/src/test-benchmarks/decaf/util/QueueBenchmark.cpp b/src/decaf/src/test-benchmarks/decaf/util/QueueBenchmark.cpp deleted file mode 100644 index a8d8967..0000000 --- a/src/decaf/src/test-benchmarks/decaf/util/QueueBenchmark.cpp +++ /dev/null
@@ -1,78 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "QueueBenchmark.h" - -#include <decaf/lang/Integer.h> - -using namespace std; -using namespace decaf; -using namespace decaf::util; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -QueueBenchmark::QueueBenchmark(){ -} - -//////////////////////////////////////////////////////////////////////////////// -void QueueBenchmark::run(){ - - int numRuns = 300; - std::string test = "test"; - std::string resultStr = ""; - int resultInt = 0; - Queue<std::string> stringQCopy; - Queue<int> intQCopy; - - for( int i = 0; i < numRuns; ++i ) { - stringQ.push( test ); - intQ.push( 65536 ); - } - - for( int i = 0; i < numRuns; ++i ) { - stringQ.pop(); - intQ.pop(); - } - - for( int i = 0; i < numRuns; ++i ) { - stringQ.enqueueFront( test ); - intQ.enqueueFront( 1024 ); - } - - for( int i = 0; i < numRuns; ++i ) { - stringQ.reverse( stringQCopy ); - intQ.reverse( intQCopy ); - } - - std::vector<std::string> stringVec; - std::vector<int> intVec; - - for( int i = 0; i < numRuns; ++i ) { - stringVec = stringQ.toArray(); - intVec = intQ.toArray(); - } - - for( int i = 0; i < numRuns; ++i ) { - resultStr = stringQ.front(); - resultStr = stringQ.back(); - resultInt = intQ.front(); - resultInt = intQ.back(); - stringQ.pop(); - intQ.pop(); - } - -}
diff --git a/src/decaf/src/test-benchmarks/decaf/util/QueueBenchmark.h b/src/decaf/src/test-benchmarks/decaf/util/QueueBenchmark.h deleted file mode 100644 index be07b67..0000000 --- a/src/decaf/src/test-benchmarks/decaf/util/QueueBenchmark.h +++ /dev/null
@@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_QUEUE_QUEUEBENCHMARK_H_ -#define _DECAF_QUEUE_QUEUEBENCHMARK_H_ - -#include <benchmark/BenchmarkBase.h> -#include <decaf/util/Queue.h> - -namespace decaf{ -namespace util{ - - class QueueBenchmark : - public benchmark::BenchmarkBase< - decaf::util::QueueBenchmark, Queue<int> > - { - private: - - Queue<std::string> stringQ; - Queue<int> intQ; - - public: - - QueueBenchmark(); - virtual ~QueueBenchmark() {} - - virtual void run(); - }; - -}} - -#endif /*_DECAF_QUEUE_QUEUEBENCHMARK_H_*/
diff --git a/src/decaf/src/test-benchmarks/decaf/util/SetBenchmark.cpp b/src/decaf/src/test-benchmarks/decaf/util/SetBenchmark.cpp deleted file mode 100644 index 835cf3b..0000000 --- a/src/decaf/src/test-benchmarks/decaf/util/SetBenchmark.cpp +++ /dev/null
@@ -1,94 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "SetBenchmark.h" - -#include <decaf/lang/Integer.h> -#include <decaf/util/Iterator.h> - -using namespace decaf; -using namespace decaf::util; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -SetBenchmark::SetBenchmark(){ -} - -//////////////////////////////////////////////////////////////////////////////// -void SetBenchmark::run(){ - - int numRuns = 500; - std::string test = "test"; - std::string resultStr = ""; - Set<std::string> stringCopy; - Set<int> intCopy; - - for( int i = 0; i < numRuns; ++i ) { - stringSet.add( test + Integer::toString(i) ); - intSet.add( 100 + i ); - stringSet.contains( test + Integer::toString(i) ); - intSet.contains( 100 + i ); - } - - for( int i = 0; i < numRuns; ++i ) { - stringSet.remove( test + Integer::toString(i) ); - intSet.remove( 100 + i ); - stringSet.contains( test + Integer::toString(i) ); - intSet.contains( 100 + i ); - } - - for( int i = 0; i < numRuns; ++i ) { - stringSet.add( test + Integer::toString(i) ); - intSet.add( 100 + i ); - } - - std::vector<std::string> stringVec; - std::vector<int> intVec; - - for( int i = 0; i < numRuns / 2; ++i ) { - stringVec = stringSet.toArray(); - intVec = intSet.toArray(); - } - - std::string tempStr = ""; - int tempInt = 0; - - for( int i = 0; i < numRuns / 2; ++i ) { - - Iterator<std::string>* strIter = stringSet.iterator(); - Iterator<int>* intIter = intSet.iterator(); - - while( strIter->hasNext() ){ - tempStr = strIter->next(); - } - - while( intIter->hasNext() ){ - tempInt = intIter->next(); - } - - delete strIter; - delete intIter; - } - - for( int i = 0; i < numRuns / 2; ++i ) { - stringCopy.copy( stringSet ); - stringCopy.clear(); - intCopy.copy( intSet ); - intCopy.clear(); - } - -}
diff --git a/src/decaf/src/test-benchmarks/decaf/util/SetBenchmark.h b/src/decaf/src/test-benchmarks/decaf/util/SetBenchmark.h deleted file mode 100644 index 7c57ef9..0000000 --- a/src/decaf/src/test-benchmarks/decaf/util/SetBenchmark.h +++ /dev/null
@@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_SETBENCHMARK_H_ -#define _DECAF_UTIL_SETBENCHMARK_H_ - -#include <benchmark/BenchmarkBase.h> -#include <decaf/util/Set.h> - -namespace decaf{ -namespace util{ - - class SetBenchmark : - public benchmark::BenchmarkBase< - decaf::util::SetBenchmark, Set<int> > - { - private: - - Set<int> intSet; - Set<std::string> stringSet; - - public: - - SetBenchmark(); - virtual ~SetBenchmark() {} - - virtual void run(); - }; - -}} - -#endif /*_DECAF_UTIL_SETBENCHMARK_H_*/
diff --git a/src/decaf/src/test-benchmarks/main.cpp b/src/decaf/src/test-benchmarks/main.cpp deleted file mode 100644 index ae67c6c..0000000 --- a/src/decaf/src/test-benchmarks/main.cpp +++ /dev/null
@@ -1,47 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <cppunit/ui/text/TestRunner.h> -#include <cppunit/TestResult.h> -#include <decaf/util/Config.h> -#include <iostream> - -int main( int argc DECAF_UNUSED, char **argv DECAF_UNUSED ) { - try { - CppUnit::TextUi::TestRunner runner; - CppUnit::TestFactoryRegistry ®istry = - CppUnit::TestFactoryRegistry::getRegistry(); - runner.addTest( registry.makeTest() ); - - std::cout << "=====================================================\n"; - std::cout << "Starting the Benchmarks:" << std::endl; - std::cout << "-----------------------------------------------------\n"; - - bool wasSuccessful = runner.run( "", false ); - - std::cout << "-----------------------------------------------------\n"; - std::cout << "Finished with the Benchmarks." << std::endl; - std::cout << "=====================================================\n"; - - return !wasSuccessful; - } catch(...) { - std::cout << "----------------------------------------" << std::endl; - std::cout << "- AN ERROR HAS OCCURED: -" << std::endl; - std::cout << "----------------------------------------" << std::endl; - } -}
diff --git a/src/decaf/src/test-benchmarks/testRegistry.cpp b/src/decaf/src/test-benchmarks/testRegistry.cpp deleted file mode 100644 index 31af405..0000000 --- a/src/decaf/src/test-benchmarks/testRegistry.cpp +++ /dev/null
@@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <decaf/lang/BooleanBenchmark.h> - -#include <decaf/util/PropertiesBenchmark.h> -#include <decaf/util/QueueBenchmark.h> -#include <decaf/util/SetBenchmark.h> -#include <decaf/util/MapBenchmark.h> - -#include <decaf/io/DataInputStreamBenchmark.h> -#include <decaf/io/DataOutputStreamBenchmark.h> - -CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::BooleanBenchmark ); - -CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::PropertiesBenchmark ); -CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::QueueBenchmark ); -CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::SetBenchmark ); -CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::MapBenchmark ); - -CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::DataInputStreamBenchmark ); -CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::DataOutputStreamBenchmark );
diff --git a/src/decaf/src/test/Makefile.am b/src/decaf/src/test/Makefile.am deleted file mode 100644 index ce264fa..0000000 --- a/src/decaf/src/test/Makefile.am +++ /dev/null
@@ -1,100 +0,0 @@ -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- - -cc_sources = \ - decaf/lang/ByteTest.cpp \ - decaf/lang/CharacterTest.cpp \ - decaf/lang/BooleanTest.cpp \ - decaf/lang/ShortTest.cpp \ - decaf/lang/IntegerTest.cpp \ - decaf/lang/LongTest.cpp \ - decaf/lang/FloatTest.cpp \ - decaf/lang/DoubleTest.cpp \ - decaf/lang/ThreadTest.cpp \ - decaf/lang/ExceptionTest.cpp \ - decaf/lang/MathTest.cpp \ - decaf/lang/SystemTest.cpp \ - decaf/io/BufferedInputStreamTest.cpp \ - decaf/io/BufferedOutputStreamTest.cpp \ - decaf/io/ByteArrayInputStreamTest.cpp \ - decaf/io/ByteArrayOutputStreamTest.cpp \ - decaf/io/DataInputStreamTest.cpp \ - decaf/io/DataOutputStreamTest.cpp \ - decaf/net/SocketFactoryTest.cpp \ - decaf/net/SocketTest.cpp \ - decaf/net/URITest.cpp \ - decaf/net/URISyntaxExceptionTest.cpp \ - decaf/util/StringTokenizerTest.cpp \ - decaf/util/Endian.cpp \ - decaf/util/DateTest.cpp \ - decaf/util/UUIDTest.cpp \ - decaf/util/RandomTest.cpp \ - decaf/util/MapTest.cpp \ - decaf/util/QueueTest.cpp \ - decaf/util/SetTest.cpp \ - decaf/util/concurrent/CountDownLatchTest.cpp \ - decaf/util/concurrent/MutexTest.cpp \ - decaf/util/concurrent/ThreadPoolTest.cpp \ - testRegistry.cpp \ - main.cpp - -h_sources = \ - decaf/lang/ByteTest.h \ - decaf/lang/CharacterTest.h \ - decaf/lang/BooleanTest.h \ - decaf/lang/ShortTest.h \ - decaf/lang/IntegerTest.h \ - decaf/lang/LongTest.h \ - decaf/lang/FloatTest.h \ - decaf/lang/DoubleTest.h \ - decaf/lang/ThreadTest.h \ - decaf/lang/ExceptionTest.h \ - decaf/lang/MathTest.h \ - decaf/lang/SystemTest.h \ - decaf/io/BufferedInputStreamTest.h \ - decaf/io/BufferedOutputStreamTest.h \ - decaf/io/ByteArrayInputStreamTest.h \ - decaf/io/ByteArrayOutputStreamTest.h \ - decaf/io/DataInputStreamTest.h \ - decaf/io/DataOutputStreamTest.h \ - decaf/net/SocketFactoryTest.h \ - decaf/net/SocketTest.h \ - decaf/net/URITest.h \ - decaf/net/URISyntaxExceptionTest.h \ - decaf/util/StringTokenizerTest.h \ - decaf/util/Endian.h \ - decaf/util/DateTest.h \ - decaf/util/UUIDTest.h \ - decaf/util/RandomTest.h \ - decaf/util/MapTest.h \ - decaf/util/QueueTest.h \ - decaf/util/SetTest.h \ - decaf/util/concurrent/CountDownLatchTest.h \ - decaf/util/concurrent/MutexTest.h \ - decaf/util/concurrent/ThreadPoolTest.h - -## Compile this as part of make check -check_PROGRAMS = decaf-test -## Also run the tests as part of make check -## TESTS = $(check_PROGRAMS) - -## -## Compiler/Linker Options -## -decaf_test_SOURCES = $(cc_sources) -decaf_test_CXXFLAGS = $(DECAF_TEST_CXXFLAGS) -I$(srcdir)/../main @CPPUNIT_CFLAGS@ -decaf_test_LDADD= $(DECAF_TEST_LIBS) @CPPUNIT_LIBS@
diff --git a/src/decaf/src/test/decaf/io/BufferedInputStreamTest.cpp b/src/decaf/src/test/decaf/io/BufferedInputStreamTest.cpp deleted file mode 100644 index 13286db..0000000 --- a/src/decaf/src/test/decaf/io/BufferedInputStreamTest.cpp +++ /dev/null
@@ -1,104 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "BufferedInputStreamTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::io; -using namespace decaf::util; - -void BufferedInputStreamTest::testSmallerBuffer(){ - - std::string testStr = "TEST12345678910"; - MyInputStream myStream( testStr ); - BufferedInputStream bufStream( &myStream, (std::size_t)1 ); - - std::size_t available = bufStream.available(); - CPPUNIT_ASSERT( available == testStr.length() ); - - unsigned char dummy = bufStream.read(); - CPPUNIT_ASSERT( dummy == 'T' ); - - available = bufStream.available(); - CPPUNIT_ASSERT( available == (testStr.length() - 1) ); - - dummy = bufStream.read(); - CPPUNIT_ASSERT( dummy == 'E' ); - - available = bufStream.available(); - CPPUNIT_ASSERT( available == (testStr.length() - 2 ) ); - - dummy = bufStream.read(); - CPPUNIT_ASSERT( dummy == 'S' ); - - available = bufStream.available(); - CPPUNIT_ASSERT( available == (testStr.length() - 3 ) ); - - dummy = bufStream.read(); - CPPUNIT_ASSERT( dummy == 'T' ); - - unsigned char dummyBuf[20]; - memset( dummyBuf, 0, 20 ); - std::size_t numRead = bufStream.read( dummyBuf, 10 ); - CPPUNIT_ASSERT( numRead == 10 ); - CPPUNIT_ASSERT( strcmp( (char*)dummyBuf, "1234567891" ) == 0 ); - - available = bufStream.available(); - CPPUNIT_ASSERT( available == 1 ); -} - -void BufferedInputStreamTest::testBiggerBuffer(){ - - std::string testStr = "TEST12345678910"; - MyInputStream myStream( testStr ); - BufferedInputStream bufStream( &myStream, (std::size_t)10 ); - - std::size_t available = bufStream.available(); - CPPUNIT_ASSERT( available == testStr.length() ); - - unsigned char dummy = bufStream.read(); - CPPUNIT_ASSERT( dummy == 'T' ); - - available = bufStream.available(); - CPPUNIT_ASSERT( available == (testStr.length() - 1 ) ); - - dummy = bufStream.read(); - CPPUNIT_ASSERT( dummy == 'E' ); - - available = bufStream.available(); - CPPUNIT_ASSERT( available == (testStr.length() - 2 ) ); - - dummy = bufStream.read(); - CPPUNIT_ASSERT( dummy == 'S' ); - - available = bufStream.available(); - CPPUNIT_ASSERT( available == (testStr.length() - 3 ) ); - - dummy = bufStream.read(); - CPPUNIT_ASSERT( dummy == 'T' ); - - unsigned char dummyBuf[20]; - memset( dummyBuf, 0, 20 ); - std::size_t numRead = bufStream.read( dummyBuf, 10 ); - CPPUNIT_ASSERT( numRead == 10 ); - CPPUNIT_ASSERT( strcmp( (char*)dummyBuf, "1234567891" ) == 0 ); - - available = bufStream.available(); - CPPUNIT_ASSERT( available == 1 ); -}
diff --git a/src/decaf/src/test/decaf/io/BufferedInputStreamTest.h b/src/decaf/src/test/decaf/io/BufferedInputStreamTest.h deleted file mode 100644 index 0664a4b..0000000 --- a/src/decaf/src/test/decaf/io/BufferedInputStreamTest.h +++ /dev/null
@@ -1,109 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_BUFFEREDINPUTSTREAMTEST_H_ -#define _DECAF_IO_BUFFEREDINPUTSTREAMTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/io/BufferedInputStream.h> -#include <decaf/util/Config.h> - -namespace decaf{ -namespace io{ - - class BufferedInputStreamTest : public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE( BufferedInputStreamTest ); - CPPUNIT_TEST( testSmallerBuffer ); - CPPUNIT_TEST( testBiggerBuffer ); - CPPUNIT_TEST_SUITE_END(); - - public: - - class MyInputStream : public InputStream{ - private: - std::string data; - std::size_t pos; - public: - - MyInputStream( const std::string& data ){ - this->data = data; - pos = 0; - } - virtual ~MyInputStream(){} - - virtual std::size_t available() const throw (IOException){ - std::size_t len = data.length(); - return len - pos; - } - virtual unsigned char read() throw (IOException){ - if( pos >= data.length() ){ - throw IOException(); - } - - return data.c_str()[pos++]; - } - virtual int read( unsigned char* buffer, std::size_t bufferSize ) throw (IOException){ - std::size_t numToRead = std::min( bufferSize, available() ); - - const char* str = data.c_str(); - for( std::size_t ix=0; ix<numToRead; ++ix ){ - buffer[ix] = str[pos+ix]; - } - - pos += numToRead; - - return numToRead; - } - - virtual void close() throw(lang::Exception){ - // do nothing. - } - virtual std::size_t skip( std::size_t num DECAF_UNUSED) throw ( io::IOException, lang::exceptions::UnsupportedOperationException ) { - return 0; - } - - virtual void lock() throw(lang::Exception){ - } - virtual void unlock() throw(lang::Exception){ - } - virtual void wait() throw(lang::Exception){ - } - virtual void wait(unsigned long millisecs DECAF_UNUSED) throw(lang::Exception){ - } - virtual void notify() throw(lang::Exception){ - } - virtual void notifyAll() throw(lang::Exception){ - } - }; - - public: - - virtual ~BufferedInputStreamTest(){} - virtual void setUp(){} - virtual void tearDown(){} - - void testSmallerBuffer(); - void testBiggerBuffer(); - - }; - -}} - -#endif /*_DECAF_IO_BUFFEREDINPUTSTREAMTEST_H_*/
diff --git a/src/decaf/src/test/decaf/io/BufferedOutputStreamTest.cpp b/src/decaf/src/test/decaf/io/BufferedOutputStreamTest.cpp deleted file mode 100644 index 406ff30..0000000 --- a/src/decaf/src/test/decaf/io/BufferedOutputStreamTest.cpp +++ /dev/null
@@ -1,72 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "BufferedOutputStreamTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::io; -using namespace decaf::util; - -void BufferedOutputStreamTest::testSmallerBuffer(){ - - MyOutputStream myStream; - BufferedOutputStream bufStream( &myStream, (std::size_t)1 ); - - const char* buffer = myStream.getBuffer(); - - bufStream.write( (unsigned char)'T' ); - // Should not be written yet. - CPPUNIT_ASSERT( strcmp( buffer, "" ) == 0 ); - - bufStream.write( (unsigned char)'E' ); - // This time the T should have been written. - CPPUNIT_ASSERT( strcmp( buffer, "T" ) == 0 ); - - bufStream.write( (unsigned char*)"ST", 2 ); - // This time the ES should have been written. - CPPUNIT_ASSERT( strcmp( buffer, "TES" ) == 0 ); - - bufStream.flush(); - CPPUNIT_ASSERT( strcmp( buffer, "TEST" ) == 0 ); -} - -void BufferedOutputStreamTest::testBiggerBuffer(){ - - MyOutputStream myStream; - BufferedOutputStream bufStream( &myStream, (std::size_t)10 ); - - const char* buffer = myStream.getBuffer(); - - bufStream.write( (unsigned char*)"TEST", 4 ); - - // Should not be written yet. - CPPUNIT_ASSERT( strcmp( buffer, "" ) == 0 ); - - bufStream.flush(); - CPPUNIT_ASSERT( strcmp( buffer, "TEST" ) == 0 ); - - bufStream.write( (unsigned char*)"TEST", 4 ); - bufStream.write( (unsigned char*)"12345678910", 11); - - CPPUNIT_ASSERT( strcmp( buffer, "TESTTEST123456" ) == 0 ); - - bufStream.flush(); - CPPUNIT_ASSERT( strcmp( buffer, "TESTTEST12345678910" ) == 0 ); - -}
diff --git a/src/decaf/src/test/decaf/io/BufferedOutputStreamTest.h b/src/decaf/src/test/decaf/io/BufferedOutputStreamTest.h deleted file mode 100644 index a4b5cfd..0000000 --- a/src/decaf/src/test/decaf/io/BufferedOutputStreamTest.h +++ /dev/null
@@ -1,107 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_BUFFEREDOUTPUTSTREAMTEST_H_ -#define _DECAF_IO_BUFFEREDOUTPUTSTREAMTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/io/BufferedOutputStream.h> -#include <decaf/util/Config.h> -#include <string.h> - -namespace decaf{ -namespace io{ - - class BufferedOutputStreamTest : public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE( BufferedOutputStreamTest ); - CPPUNIT_TEST( testSmallerBuffer ); - CPPUNIT_TEST( testBiggerBuffer ); - CPPUNIT_TEST_SUITE_END(); - - public: - - class MyOutputStream : public OutputStream{ - private: - char buffer[100]; - std::size_t pos; - public: - - MyOutputStream(){ - pos = 0; - memset( buffer, 0, 100 ); - } - virtual ~MyOutputStream(){} - - const char* getBuffer() const{ return buffer; } - - virtual void write( unsigned char c ) throw (IOException){ - if( pos >= 100 ){ - throw IOException(); - } - - buffer[pos++] = c; - } - - virtual void write( const unsigned char* buffer, std::size_t len ) throw (IOException){ - - if( (pos + len) > 100 ){ - throw IOException(); - } - - memcpy( this->buffer + pos, buffer, len ); - - pos += len; - } - - virtual void flush() throw (IOException){ - } - - virtual void close() throw(lang::Exception){ - // do nothing. - } - - virtual void lock() throw(lang::Exception){ - } - virtual void unlock() throw(lang::Exception){ - } - virtual void wait() throw(lang::Exception){ - } - virtual void wait(unsigned long millisecs DECAF_UNUSED) throw(lang::Exception){ - } - virtual void notify() throw(lang::Exception){ - } - virtual void notifyAll() throw(lang::Exception){ - } - }; - - public: - - virtual ~BufferedOutputStreamTest(){} - virtual void setUp(){} - virtual void tearDown(){} - - void testSmallerBuffer(); - void testBiggerBuffer(); - - }; - -}} - -#endif /*_DECAF_IO_BUFFEREDOUTPUTSTREAMTEST_H_*/
diff --git a/src/decaf/src/test/decaf/io/ByteArrayInputStreamTest.cpp b/src/decaf/src/test/decaf/io/ByteArrayInputStreamTest.cpp deleted file mode 100644 index 51ef27e..0000000 --- a/src/decaf/src/test/decaf/io/ByteArrayInputStreamTest.cpp +++ /dev/null
@@ -1,72 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ByteArrayInputStreamTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::io; -using namespace decaf::util; - -void ByteArrayInputStreamTest::testStream() -{ - std::vector<unsigned char> testBuffer; - - testBuffer.push_back('t'); - testBuffer.push_back('e'); - testBuffer.push_back('s'); - testBuffer.push_back('t'); - - ByteArrayInputStream stream_a(&testBuffer[0], testBuffer.size()); - - CPPUNIT_ASSERT( stream_a.available() == 4 ); - - char a = stream_a.read(); - char b = stream_a.read(); - char c = stream_a.read(); - char d = stream_a.read(); - - CPPUNIT_ASSERT( a == 't' && b == 'e' && c == 's' && d == 't' ); - CPPUNIT_ASSERT( stream_a.available() == 0 ); - - testBuffer.push_back('e'); - - stream_a.setByteArray(&testBuffer[0], testBuffer.size()); - - CPPUNIT_ASSERT( stream_a.available() == 5 ); - - unsigned char* buffer = new unsigned char[6]; - - buffer[5] = '\0'; - - CPPUNIT_ASSERT( stream_a.read(buffer, 5) == 5 ); - CPPUNIT_ASSERT( std::string((const char*)buffer) == std::string("teste") ); - CPPUNIT_ASSERT( stream_a.available() == 0 ); - - stream_a.setByteArray(&testBuffer[0], testBuffer.size()); - - memset(buffer, 0, 6); - - CPPUNIT_ASSERT( stream_a.read(buffer, 3) == 3 ); - CPPUNIT_ASSERT( stream_a.read(&buffer[3], 2) == 2 ); - CPPUNIT_ASSERT( std::string((const char*)buffer) == std::string("teste") ); - - stream_a.close(); - - delete [] buffer; -}
diff --git a/src/decaf/src/test/decaf/io/ByteArrayInputStreamTest.h b/src/decaf/src/test/decaf/io/ByteArrayInputStreamTest.h deleted file mode 100644 index 0a68cb0..0000000 --- a/src/decaf/src/test/decaf/io/ByteArrayInputStreamTest.h +++ /dev/null
@@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_BYTEARRAYINPUTSTREAMTEST_H_ -#define _DECAF_IO_BYTEARRAYINPUTSTREAMTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/io/ByteArrayInputStream.h> - -namespace decaf{ -namespace io{ - - class ByteArrayInputStreamTest : public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( ByteArrayInputStreamTest ); - CPPUNIT_TEST( testStream ); - CPPUNIT_TEST_SUITE_END(); - - public: - - ByteArrayInputStreamTest() {} - virtual ~ByteArrayInputStreamTest() {} - - void testStream(); - - }; - -}} - -#endif /*_DECAF_IO_BYTEARRAYINPUTSTREAMTEST_H_*/
diff --git a/src/decaf/src/test/decaf/io/ByteArrayOutputStreamTest.cpp b/src/decaf/src/test/decaf/io/ByteArrayOutputStreamTest.cpp deleted file mode 100644 index 6a843c1..0000000 --- a/src/decaf/src/test/decaf/io/ByteArrayOutputStreamTest.cpp +++ /dev/null
@@ -1,56 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ByteArrayOutputStreamTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::io; -using namespace decaf::util; - -void ByteArrayOutputStreamTest::testStream() -{ - ByteArrayOutputStream stream_a; - - stream_a.write('a'); - stream_a.write(60); - stream_a.write('c'); - - CPPUNIT_ASSERT( stream_a.getByteArraySize() == 3 ); - - stream_a.clear(); - - CPPUNIT_ASSERT( stream_a.getByteArraySize() == 0 ); - - stream_a.write((const unsigned char*)("abc"), 3); - - CPPUNIT_ASSERT( stream_a.getByteArraySize() == 3 ); - - stream_a.clear(); - - CPPUNIT_ASSERT( stream_a.getByteArraySize() == 0 ); - - stream_a.write((const unsigned char*)("abc"), 3); - - unsigned char buffer[4]; - - memset(buffer, 0, 4); - memcpy(buffer, stream_a.getByteArray(), stream_a.getByteArraySize()); - - CPPUNIT_ASSERT( std::string((const char*)buffer) == std::string("abc") ); -}
diff --git a/src/decaf/src/test/decaf/io/ByteArrayOutputStreamTest.h b/src/decaf/src/test/decaf/io/ByteArrayOutputStreamTest.h deleted file mode 100644 index e467afa..0000000 --- a/src/decaf/src/test/decaf/io/ByteArrayOutputStreamTest.h +++ /dev/null
@@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_BYTEARRAYOUTPUTSTREAMTEST_H_ -#define _DECAF_IO_BYTEARRAYOUTPUTSTREAMTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/io/ByteArrayOutputStream.h> - -namespace decaf{ -namespace io{ - - class ByteArrayOutputStreamTest : public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( ByteArrayOutputStreamTest ); - CPPUNIT_TEST( testStream ); - CPPUNIT_TEST_SUITE_END(); - - public: - - ByteArrayOutputStreamTest() {} - virtual ~ByteArrayOutputStreamTest() {} - - void testStream(); - - }; - -}} - -#endif /*_DECAF_IO_BYTEARRAYOUTPUTSTREAMTEST_H_*/
diff --git a/src/decaf/src/test/decaf/io/DataInputStreamTest.cpp b/src/decaf/src/test/decaf/io/DataInputStreamTest.cpp deleted file mode 100644 index a5d61a3..0000000 --- a/src/decaf/src/test/decaf/io/DataInputStreamTest.cpp +++ /dev/null
@@ -1,192 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "DataInputStreamTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::io; -using namespace decaf::util; - -void DataInputStreamTest::test(){ - - unsigned char buffer[30]; - int ix = 0; - - unsigned char byteVal = (unsigned char)'T'; - unsigned short shortVal = 5; - unsigned int intVal = 10000; - unsigned long long longVal = 1000000000; - float floatVal = 10.0f; - double doubleVal = 100.0; - unsigned char arrayVal[3] = { - 'a', 'b', 'c' - }; - - int size = sizeof(char); - memcpy( (char*)(buffer+ix), (char*)&byteVal, size ); - ix += size; - - size = sizeof(unsigned short); - unsigned short tempShort = util::Endian::byteSwap(shortVal); - memcpy( (char*)(buffer+ix), (char*)&tempShort, size ); - ix += size; - - size = sizeof(unsigned int); - unsigned int tempInt = util::Endian::byteSwap(intVal); - memcpy( (char*)(buffer+ix), (char*)&tempInt, size ); - ix += size; - - size = sizeof(unsigned long long); - unsigned long long tempLong = util::Endian::byteSwap(longVal); - memcpy( (char*)(buffer+ix), (char*)&tempLong, size ); - ix += size; - - size = sizeof(float); - float tempFloat = util::Endian::byteSwap(floatVal); - memcpy( (char*)(buffer+ix), (char*)&tempFloat, size ); - ix += size; - - size = sizeof(double); - double tempDouble = util::Endian::byteSwap(doubleVal); - memcpy( (char*)(buffer+ix), (char*)&tempDouble, size ); - ix += size; - - size = 3; - memcpy( (char*)(buffer+ix), (char*)&arrayVal, size ); - ix += size; - - // Create the stream with the buffer we just wrote to. - ByteArrayInputStream myStream( buffer, 30 ); - DataInputStream reader( &myStream ); - - byteVal = reader.readByte(); - //std::cout << "Byte Value = " << byteVal << std::endl; - CPPUNIT_ASSERT( byteVal == (unsigned char)'T' ); - - shortVal = reader.readShort(); - //std::cout << "short Value = " << shortVal << std::endl; - CPPUNIT_ASSERT( shortVal == 5 ); - - intVal = reader.readInt(); - //std::cout << "int Value = " << intVal << std::endl; - CPPUNIT_ASSERT( intVal == 10000 ); - - longVal = reader.readLong(); - //std::cout << "long long Value = " << longVal << std::endl; - CPPUNIT_ASSERT( longVal == 1000000000 ); - - floatVal = reader.readFloat(); - //std::cout << "float Value = " << floatVal << std::endl; - CPPUNIT_ASSERT( floatVal == 10.0f ); - - doubleVal = reader.readDouble(); - //std::cout << "double Value = " << doubleVal << std::endl; - CPPUNIT_ASSERT( doubleVal == 100.0 ); - - reader.read( arrayVal, 0, 3 ); - //std::cout << "char[0] Value = " << (int)arrayVal[0] << std::endl; - CPPUNIT_ASSERT( arrayVal[0] == 'a' ); - //std::cout << "char[1] Value = " << (int)arrayVal[1] << std::endl; - CPPUNIT_ASSERT( arrayVal[1] == 'b' ); - //std::cout << "char[2] Value = " << (int)arrayVal[2] << std::endl; - CPPUNIT_ASSERT( arrayVal[2] == 'c' ); -} - -void DataInputStreamTest::testString() { - - std::string data1 = "This is a Test"; - std::string data2 = "of the readString method"; - std::string data3 = "This one should fail"; - - std::vector<unsigned char> buffer; - - buffer.insert( buffer.begin(), data1.begin(), data1.end() ); - buffer.push_back( '\0' ); - buffer.insert( buffer.end(), data2.begin(), data2.end() ); - buffer.push_back( '\0' ); - buffer.insert( buffer.end(), data3.begin(), data3.end() ); - - // Create the stream with the buffer we just wrote to. - ByteArrayInputStream myStream( buffer ); - DataInputStream reader( &myStream ); - - std::string result1 = reader.readString(); - std::string result2 = reader.readString(); - - CPPUNIT_ASSERT( result1 == data1 ); - CPPUNIT_ASSERT( result2 == data2 ); - - try{ - std::string result3 = reader.readString(); - CPPUNIT_ASSERT( false ); - } catch(...){ - CPPUNIT_ASSERT( true ); - } - - try{ - std::vector<unsigned char> buffer2; - reader.readFully( buffer2 ); - } catch(...){ - CPPUNIT_ASSERT( false ); - } -} - -void DataInputStreamTest::testUTF() { - - std::string data1 = "This is a Test"; - std::string data2 = "of the readString method"; - std::string data3 = "This one should fail"; - - char sizeData[sizeof(short)] = {0}; - short tempShort = 0; - - std::vector<unsigned char> buffer; - - tempShort = util::Endian::byteSwap( ((unsigned short)data1.size()) ); - memcpy( sizeData, (char*)&tempShort, sizeof( short ) ); - buffer.insert( buffer.end(), sizeData, sizeData + sizeof(short) ); - buffer.insert( buffer.end(), data1.begin(), data1.end() ); - - tempShort = util::Endian::byteSwap( ((unsigned short)data2.size()) ); - memcpy( sizeData, (char*)&tempShort, sizeof( short ) ); - buffer.insert( buffer.end(), sizeData, sizeData + sizeof(short) ); - buffer.insert( buffer.end(), data2.begin(), data2.end() ); - - tempShort = util::Endian::byteSwap( (unsigned short)(data3.size() + 10 ) ); - memcpy( sizeData, (char*)&tempShort, sizeof( short ) ); - buffer.insert( buffer.end(), sizeData, sizeData + sizeof(short) ); - buffer.insert( buffer.end(), data3.begin(), data3.end() ); - - // Create the stream with the buffer we just wrote to. - ByteArrayInputStream myStream( buffer ); - DataInputStream reader( &myStream ); - - std::string result1 = reader.readUTF(); - std::string result2 = reader.readUTF(); - - CPPUNIT_ASSERT( result1 == data1 ); - CPPUNIT_ASSERT( result2 == data2 ); - - try{ - std::string result3 = reader.readUTF(); - CPPUNIT_ASSERT( false ); - } catch(...){ - CPPUNIT_ASSERT( true ); - } -}
diff --git a/src/decaf/src/test/decaf/io/DataInputStreamTest.h b/src/decaf/src/test/decaf/io/DataInputStreamTest.h deleted file mode 100644 index 07f3411..0000000 --- a/src/decaf/src/test/decaf/io/DataInputStreamTest.h +++ /dev/null
@@ -1,61 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_DATAINPUTSTREAMTEST_H_ -#define _DECAF_IO_DATAINPUTSTREAMTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/util/Endian.h> -#include <decaf/lang/Exception.h> -#include <decaf/io/BufferedInputStream.h> -#include <decaf/io/ByteArrayInputStream.h> -#include <decaf/io/DataInputStream.h> - -#ifdef min -#undef min -#endif - -#include <algorithm> - -namespace decaf{ -namespace io{ - - class DataInputStreamTest : public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE( DataInputStreamTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST( testString ); - CPPUNIT_TEST( testUTF ); - CPPUNIT_TEST_SUITE_END(); - - public: - - virtual ~DataInputStreamTest(){} - virtual void setUp(){} - virtual void tearDown(){} - - void test(); - void testString(); - void testUTF(); - - }; - -}} - -#endif /*_DECAF_IO_DATAINPUTSTREAMTEST_H_*/
diff --git a/src/decaf/src/test/decaf/io/DataOutputStreamTest.cpp b/src/decaf/src/test/decaf/io/DataOutputStreamTest.cpp deleted file mode 100644 index da6b7e2..0000000 --- a/src/decaf/src/test/decaf/io/DataOutputStreamTest.cpp +++ /dev/null
@@ -1,86 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "DataOutputStreamTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::io; -using namespace decaf::util; - -void DataOutputStreamTest::test(){ - - unsigned char byteVal = (unsigned char)'T'; - unsigned short shortVal = 5; - unsigned int intVal = 10000; - unsigned long long longVal = 1000000000; - float floatVal = 10.0f; - double doubleVal = 100.0; - unsigned char arrayVal[3] = { - 'a', 'b', 'c' - }; - - // Create the stream with the buffer we just wrote to. - ByteArrayOutputStream myStream; - DataOutputStream writer( &myStream ); - - writer.writeByte( byteVal ); - writer.writeShort( shortVal ); - writer.writeInt( intVal ); - writer.writeLong( longVal ); - writer.writeFloat( floatVal ); - writer.writeDouble( doubleVal ); - writer.write( arrayVal, 3 ); - - const unsigned char* buffer = myStream.getByteArray(); - int ix = 0; - - unsigned char tempByte = buffer[ix]; - CPPUNIT_ASSERT( tempByte == byteVal ); - ix += sizeof( tempByte ); - - unsigned short tempShort = 0; - memcpy( &tempShort, buffer+ix, sizeof( unsigned short ) ); - tempShort = util::Endian::byteSwap( tempShort ); - CPPUNIT_ASSERT( tempShort == shortVal ); - ix += sizeof( tempShort ); - - unsigned int tempInt = 0; - memcpy( &tempInt, buffer+ix, sizeof( unsigned int ) ); - tempInt = util::Endian::byteSwap( tempInt ); - CPPUNIT_ASSERT( tempInt == intVal ); - ix += sizeof( tempInt ); - - unsigned long long tempLong = 0; - memcpy( &tempLong, buffer+ix, sizeof( unsigned long long ) ); - tempLong = util::Endian::byteSwap( tempLong ); - CPPUNIT_ASSERT( tempLong == longVal ); - ix += sizeof( tempLong ); - - float tempFloat = 0; - memcpy( &tempFloat, buffer+ix, sizeof( float ) ); - tempFloat = util::Endian::byteSwap( tempFloat ); - CPPUNIT_ASSERT( tempFloat == floatVal ); - ix += sizeof( tempFloat ); - - double tempDouble = 0; - memcpy( &tempDouble, buffer+ix, sizeof( double ) ); - tempDouble = util::Endian::byteSwap( tempDouble ); - CPPUNIT_ASSERT( tempDouble == doubleVal ); - ix += sizeof( tempDouble ); -}
diff --git a/src/decaf/src/test/decaf/io/DataOutputStreamTest.h b/src/decaf/src/test/decaf/io/DataOutputStreamTest.h deleted file mode 100644 index a31f573..0000000 --- a/src/decaf/src/test/decaf/io/DataOutputStreamTest.h +++ /dev/null
@@ -1,49 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_IO_DATAOUTPUTSTREAMTEST_H_ -#define _DECAF_IO_DATAOUTPUTSTREAMTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/util/Endian.h> -#include <decaf/io/DataOutputStream.h> -#include <decaf/io/ByteArrayOutputStream.h> - -namespace decaf{ -namespace io{ - - class DataOutputStreamTest : public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE( DataOutputStreamTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST_SUITE_END(); - - public: - - virtual ~DataOutputStreamTest(){} - virtual void setUp(){} - virtual void tearDown(){} - - void test(); - - }; - -}} - -#endif /*_DECAF_IO_DATAOUTPUTSTREAMTEST_H_*/
diff --git a/src/decaf/src/test/decaf/lang/BooleanTest.cpp b/src/decaf/src/test/decaf/lang/BooleanTest.cpp deleted file mode 100644 index 679552f..0000000 --- a/src/decaf/src/test/decaf/lang/BooleanTest.cpp +++ /dev/null
@@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "BooleanTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::lang; - -void BooleanTest::test(void) -{ - bool x = Boolean::parseBoolean("false"); - bool y = Boolean::parseBoolean("true"); - bool z = Boolean::parseBoolean("false"); - - CPPUNIT_ASSERT( x == false ); - CPPUNIT_ASSERT( y == true ); - CPPUNIT_ASSERT( z == false ); - - std::string x1 = Boolean::toString( x ); - std::string y1 = Boolean::toString( y ); - std::string z1 = Boolean::toString( z ); - - CPPUNIT_ASSERT( x1 == "false" ); - CPPUNIT_ASSERT( y1 == "true" ); - CPPUNIT_ASSERT( z1 == "false" ); - - Boolean b( true ); - CPPUNIT_ASSERT( b.booleanValue() == true ); - -}
diff --git a/src/decaf/src/test/decaf/lang/BooleanTest.h b/src/decaf/src/test/decaf/lang/BooleanTest.h deleted file mode 100644 index fd9050e..0000000 --- a/src/decaf/src/test/decaf/lang/BooleanTest.h +++ /dev/null
@@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_BOOLEANTEST_H_ -#define _DECAF_LANG_BOOLEANTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/lang/Boolean.h> - -namespace decaf{ -namespace lang{ - - class BooleanTest : public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( BooleanTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST_SUITE_END(); - - public: - - BooleanTest() {} - virtual ~BooleanTest() {} - - virtual void test(void); - - }; - -}} - -#endif /*_DECAF_LANG_BOOLEANTEST_H_*/
diff --git a/src/decaf/src/test/decaf/lang/ByteTest.cpp b/src/decaf/src/test/decaf/lang/ByteTest.cpp deleted file mode 100644 index 8be8dc5..0000000 --- a/src/decaf/src/test/decaf/lang/ByteTest.cpp +++ /dev/null
@@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ByteTest.h" - -using namespace decaf; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -ByteTest::ByteTest(){ -} - -//////////////////////////////////////////////////////////////////////////////// -void ByteTest::test() { - - Byte ubyte( 'b' ); - - CPPUNIT_ASSERT( ubyte < 'a' == false ); - CPPUNIT_ASSERT( ubyte.compareTo( 'a' ) == 1 ); - CPPUNIT_ASSERT( ubyte.compareTo( 'b' ) == 0 ); - CPPUNIT_ASSERT( ubyte.compareTo( 'c' ) == -1 ); - - CPPUNIT_ASSERT( ubyte.parseByte( "60" ) == 60 ); - CPPUNIT_ASSERT( ubyte.parseByte( "ff", 16 ) == 255 ); - - CPPUNIT_ASSERT( ubyte.toString( 60 ) == "60" ); - CPPUNIT_ASSERT( ubyte.toString( 255 ) == "255" ); - - CPPUNIT_ASSERT( ubyte.decode( "0xFF" ) == 255 ); - CPPUNIT_ASSERT( ubyte.decode( "255" ) == 255 ); - -}
diff --git a/src/decaf/src/test/decaf/lang/ByteTest.h b/src/decaf/src/test/decaf/lang/ByteTest.h deleted file mode 100644 index 5e62c59..0000000 --- a/src/decaf/src/test/decaf/lang/ByteTest.h +++ /dev/null
@@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_BYTETEST_H_ -#define _DECAF_LANG_BYTETEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/lang/Byte.h> - -namespace decaf{ -namespace lang{ - - class ByteTest : public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( ByteTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST_SUITE_END(); - - public: - - ByteTest(); - virtual ~ByteTest() {} - - virtual void test(); - }; - -}} - -#endif /*_DECAF_LANG_BYTETEST_H_*/
diff --git a/src/decaf/src/test/decaf/lang/CharacterTest.cpp b/src/decaf/src/test/decaf/lang/CharacterTest.cpp deleted file mode 100644 index 63e50e4..0000000 --- a/src/decaf/src/test/decaf/lang/CharacterTest.cpp +++ /dev/null
@@ -1,50 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "CharacterTest.h" - -using namespace decaf; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -CharacterTest::CharacterTest() { -} - -//////////////////////////////////////////////////////////////////////////////// -void CharacterTest::test() { - - Character character( 'b' ); - - CPPUNIT_ASSERT( character < 'a' == false ); - CPPUNIT_ASSERT( character.compareTo( 'a' ) == 1 ); - CPPUNIT_ASSERT( character.compareTo( 'b' ) == 0 ); - CPPUNIT_ASSERT( character.compareTo( 'c' ) == -1 ); - - CPPUNIT_ASSERT( Character::isDigit('a') == false ); - CPPUNIT_ASSERT( Character::isDigit('7') == true ); - CPPUNIT_ASSERT( Character::isLowerCase('a') == true ); - CPPUNIT_ASSERT( Character::isLowerCase('A') == false ); - CPPUNIT_ASSERT( Character::isUpperCase('a') == false ); - CPPUNIT_ASSERT( Character::isUpperCase('A') == true ); - CPPUNIT_ASSERT( Character::isLetter('a') == true ); - CPPUNIT_ASSERT( Character::isLetter('8') == false ); - CPPUNIT_ASSERT( Character::isLetterOrDigit('a') == true ); - CPPUNIT_ASSERT( Character::isLetterOrDigit('&') == false ); - CPPUNIT_ASSERT( Character::digit( '9', 10 ) == 9 ); - -} -
diff --git a/src/decaf/src/test/decaf/lang/CharacterTest.h b/src/decaf/src/test/decaf/lang/CharacterTest.h deleted file mode 100644 index 1624208..0000000 --- a/src/decaf/src/test/decaf/lang/CharacterTest.h +++ /dev/null
@@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_CHARACTERTEST_H_ -#define _DECAF_LANG_CHARACTERTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/lang/Character.h> - -namespace decaf{ -namespace lang{ - - class CharacterTest : public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( CharacterTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST_SUITE_END(); - - public: - - CharacterTest(); - virtual ~CharacterTest() {} - - virtual void test(); - - }; - -}} - -#endif /*_DECAF_LANG_CHARACTERTEST_H_*/
diff --git a/src/decaf/src/test/decaf/lang/DoubleTest.cpp b/src/decaf/src/test/decaf/lang/DoubleTest.cpp deleted file mode 100644 index 823f756..0000000 --- a/src/decaf/src/test/decaf/lang/DoubleTest.cpp +++ /dev/null
@@ -1,33 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "DoubleTest.h" - -#include <decaf/lang/Double.h> -#include <string> - -using namespace std; -using namespace decaf; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -DoubleTest::DoubleTest() { -} - -//////////////////////////////////////////////////////////////////////////////// -void DoubleTest::test() { -}
diff --git a/src/decaf/src/test/decaf/lang/DoubleTest.h b/src/decaf/src/test/decaf/lang/DoubleTest.h deleted file mode 100644 index c8af6df..0000000 --- a/src/decaf/src/test/decaf/lang/DoubleTest.h +++ /dev/null
@@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_DOUBLETEST_H_ -#define _DECAF_LANG_DOUBLETEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -namespace decaf{ -namespace lang{ - - class DoubleTest : public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( DoubleTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST_SUITE_END(); - - public: - - DoubleTest(); - virtual ~DoubleTest() {} - - virtual void test(); - - }; - -}} - -#endif /*_DECAF_LANG_DOUBLETEST_H_*/
diff --git a/src/decaf/src/test/decaf/lang/ExceptionTest.cpp b/src/decaf/src/test/decaf/lang/ExceptionTest.cpp deleted file mode 100644 index 96e5113..0000000 --- a/src/decaf/src/test/decaf/lang/ExceptionTest.cpp +++ /dev/null
@@ -1,37 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ExceptionTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -void ExceptionTest::testMessage0(){ - char* text = "This is a test"; - Exception ex( __FILE__, __LINE__, text ); - CPPUNIT_ASSERT( strcmp( ex.getMessage().c_str(), text ) == 0 ); -} - -//////////////////////////////////////////////////////////////////////////////// -void ExceptionTest::testMessage3(){ - Exception ex( __FILE__, __LINE__, - "This is a test %d %d %d", 1, 100, 1000 ); - CPPUNIT_ASSERT( strcmp( ex.getMessage().c_str(), - "This is a test 1 100 1000" ) == 0 ); -}
diff --git a/src/decaf/src/test/decaf/lang/ExceptionTest.h b/src/decaf/src/test/decaf/lang/ExceptionTest.h deleted file mode 100644 index b21bc24..0000000 --- a/src/decaf/src/test/decaf/lang/ExceptionTest.h +++ /dev/null
@@ -1,51 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_EXCEPTIONTEST_H_ -#define _DECAF_LANG_EXCEPTIONTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/lang/Exception.h> -#include <string.h> - -namespace decaf{ -namespace lang{ - - class ExceptionTest : public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE( ExceptionTest ); - CPPUNIT_TEST( testMessage0 ); - CPPUNIT_TEST( testMessage3 ); - CPPUNIT_TEST_SUITE_END(); - - public: - - virtual ~ExceptionTest(){} - - virtual void setUp(){} - virtual void tearDown(){} - - void testMessage0(); - void testMessage3(); - - }; - -}} - -#endif /*_DECAF_LANG_EXCEPTIONTEST_H_*/
diff --git a/src/decaf/src/test/decaf/lang/FloatTest.cpp b/src/decaf/src/test/decaf/lang/FloatTest.cpp deleted file mode 100644 index f28133b..0000000 --- a/src/decaf/src/test/decaf/lang/FloatTest.cpp +++ /dev/null
@@ -1,393 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "FloatTest.h" - -#include <decaf/lang/Float.h> -#include <decaf/lang/Integer.h> -#include <decaf/lang/Long.h> -#include <decaf/lang/Math.h> -#include <string> - -using namespace std; -using namespace decaf; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -const int FloatTest::rawBitsFor3_4eN38To38[] = { - 0x1394470, 0x2e7958c, 0x490bd77, 0x634ecd5, - 0x7e2280b, 0x98d5907, 0xb30af48, 0xcdcdb1a, 0xe8a08f0, 0x102c8b2d, 0x11d7adf8, - 0x1386ccbb, 0x15287fe9, 0x16d29fe4, 0x1883a3ee, 0x1a248cea, 0x1bcdb025, 0x1d808e17, - 0x1f20b19d, 0x20c8de04, 0x227b1585, 0x241ced73, 0x25c428d0, 0x27753303, 0x29193fe2, - 0x2abf8fdb, 0x2c6f73d1, 0x2e15a863, 0x2fbb127c, 0x3169d71a, 0x33122671, 0x34b6b00d, - 0x36645c10, 0x380eb98a, 0x39b267ec, 0x3b5f01e8, 0x3d0b6131, 0x3eae397d, 0x4059c7dc, - 0x42081cea, 0x43aa2424, 0x4554ad2d, 0x4704ec3c, 0x48a6274b, 0x4a4fb11e, 0x4c01ceb3, - 0x4da2425f, 0x4f4ad2f7, 0x50fd87b5, 0x529e74d1, 0x54461205, 0x55f79687, 0x579abe14, - 0x59416d99, 0x5af1c900, 0x5c971da0, 0x5e3ce508, 0x5fec1e4a, 0x619392ee, 0x633877a9, - 0x64e69594, 0x66901d7c, 0x683424dc, 0x69e12e12, 0x6b8cbccb, 0x6d2febfe, 0x6edbe6fe, - 0x7089705f, 0x722bcc76, 0x73d6bf94, 0x758637bc, 0x7727c5ac, 0x78d1b717, 0x7a83126e, - 0x7c23d70a, 0x7dcccccc, 0x7f7fffff }; - -//////////////////////////////////////////////////////////////////////////////// -const std::string FloatTest::expectedStringFor3_4eN38To38[] = { - "3.4028235E-38", "3.4028235E-37", - "3.4028233E-36", "3.4028234E-35", "3.4028236E-34", "3.4028236E-33", - "3.4028234E-32", "3.4028234E-31", "3.4028233E-30", "3.4028236E-29", - "3.4028235E-28", "3.4028235E-27", "3.4028233E-26", "3.4028235E-25", - "3.4028233E-24", "3.4028235E-23", "3.4028236E-22", "3.4028235E-21", - "3.4028236E-20", "3.4028236E-19", "3.4028236E-18", "3.4028235E-17", - "3.4028236E-16", "3.4028234E-15", "3.4028234E-14", "3.4028235E-13", - "3.4028234E-12", "3.4028235E-11", "3.4028236E-10", "3.4028234E-9", "3.4028236E-8", - "3.4028236E-7", "3.4028235E-6", "3.4028235E-5", "3.4028233E-4", "0.0034028236", - "0.034028236", "0.34028235", "3.4028234", "34.028236", "340.28235", "3402.8235", - "34028.234", "340282.34", "3402823.5", "3.4028236E7", "3.40282336E8", - "3.40282342E9", "3.40282348E10", "3.40282343E11", "3.40282337E12", "3.40282353E13", - "3.4028234E14", "3.4028234E15", "3.40282356E16", "3.40282356E17", "3.40282356E18", - "3.4028236E19", "3.4028235E20", "3.4028233E21", "3.4028235E22", "3.4028233E23", - "3.4028236E24", "3.4028234E25", "3.4028233E26", "3.4028234E27", "3.4028235E28", - "3.4028236E29", "3.4028233E30", "3.4028235E31", "3.4028233E32", "3.4028236E33", - "3.4028236E34", "3.4028234E35", "3.4028236E36", "3.4028235E37", "3.4028235E38" }; - -//////////////////////////////////////////////////////////////////////////////// -const int FloatTest::rawBitsFor1_17eN38To38[] = { - 0x80800000, 0x82200000, 0x83c80000, - 0x857a0000, 0x871c4000, 0x88c35000, 0x8a742400, 0x8c189680, 0x8dbebc20, 0x8f6e6b28, - 0x911502f9, 0x92ba43b7, 0x9468d4a5, 0x961184e7, 0x97b5e621, 0x99635fa9, 0x9b0e1bca, - 0x9cb1a2bc, 0x9e5e0b6b, 0xa00ac723, 0xa1ad78ec, 0xa358d727, 0xa5078678, 0xa6a96816, - 0xa853c21c, 0xaa045951, 0xaba56fa6, 0xad4ecb8f, 0xaf013f39, 0xb0a18f08, 0xb249f2ca, - 0xb3fc6f7c, 0xb59dc5ae, 0xb7453719, 0xb8f684df, 0xba9a130c, 0xbc4097ce, 0xbdf0bdc2, - 0xbf967699, 0xc13c1440, 0xc2eb1950, 0xc492efd2, 0xc637abc6, 0xc7e596b8, 0xc98f7e33, - 0xcb335dc0, 0xcce0352f, 0xce8c213e, 0xd02f298d, 0xd1daf3f0, 0xd388d876, 0xd52b0e94, - 0xd6d5d239, 0xd885a363, 0xda270c3c, 0xdbd0cf4b, 0xdd82818f, 0xdf2321f3, 0xe0cbea70, - 0xe27ee50b, 0xe41f4f27, 0xe5c722f1, 0xe778ebad, 0xe91b934c, 0xeac2781f, 0xec731627, - 0xee17edd8, 0xefbde94f, 0xf16d63a2, 0xf3145e45, 0xf4b975d7, 0xf667d34c, 0xf810e410, - 0xf9b51d14, 0xfb626459, 0xfd0d7eb7, 0xfeb0de65 }; - -//////////////////////////////////////////////////////////////////////////////// -const std::string FloatTest::expectedStringFor1_17eN38To38[] = { - "-1.17549435E-38", - "-1.1754944E-37", "-1.17549435E-36", "-1.17549435E-35", "-1.1754944E-34", - "-1.17549435E-33", "-1.17549435E-32", "-1.1754944E-31", "-1.17549435E-30", - "-1.17549435E-29", "-1.1754944E-28", "-1.1754943E-27", "-1.17549435E-26", - "-1.1754943E-25", "-1.1754944E-24", "-1.1754943E-23", "-1.1754944E-22", - "-1.1754943E-21", "-1.1754943E-20", "-1.1754943E-19", "-1.1754944E-18", - "-1.1754944E-17", "-1.1754943E-16", "-1.1754943E-15", "-1.1754944E-14", - "-1.1754943E-13", "-1.1754944E-12", "-1.1754943E-11", "-1.1754943E-10", - "-1.1754944E-9", "-1.1754944E-8", "-1.1754943E-7", "-1.1754944E-6", - "-1.1754943E-5", "-1.1754943E-4", "-0.0011754944", "-0.011754943", "-0.117549434", - "-1.1754943", "-11.754944", "-117.54944", "-1175.4944", "-11754.943", "-117549.44", - "-1175494.4", "-1.1754944E7", "-1.17549432E8", "-1.1754944E9", "-1.17549435E10", - "-1.17549433E11", "-1.17549433E12", "-1.17549438E13", "-1.17549438E14", - "-1.1754943E15", "-1.17549432E16", "-1.17549432E17", "-1.17549434E18", - "-1.1754944E19", "-1.1754944E20", "-1.1754943E21", "-1.1754943E22", - "-1.1754944E23", "-1.17549434E24", "-1.1754943E25", "-1.1754943E26", - "-1.17549434E27", "-1.1754943E28", "-1.1754944E29", "-1.1754943E30", - "-1.1754943E31", "-1.1754944E32", "-1.1754943E33", "-1.1754944E34", - "-1.1754944E35", "-1.1754944E36", "-1.1754943E37", "-1.1754943E38" }; - -//////////////////////////////////////////////////////////////////////////////// -FloatTest::FloatTest() { -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::doTestCompareRawBits( const std::string& originalFloatString, - int expectedRawBits, - const std::string& expectedString ) { - - int rawBits; - float result = Float::parseFloat( originalFloatString ); - rawBits = Float::floatToIntBits( result ); - CPPUNIT_ASSERT_MESSAGE( - std::string( "Original float(" ) + originalFloatString + - ") Converted float(" + Float::toString( result ) + - ") Expecting:" + Integer::toHexString( expectedRawBits ) + - " Got: " + Integer::toHexString( rawBits ), - expectedRawBits == rawBits ); -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::test_ConstructorF() { - // Test for method decaf.lang.Float(float) - Float f( 900.89f ); - CPPUNIT_ASSERT_MESSAGE( "Created incorrect float", f.floatValue() == 900.89f ); -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::test_ConstructorString() { - // Test for method decaf.lang.Float(decaf.lang.String) - Float f( "900.89" ); - CPPUNIT_ASSERT_MESSAGE("Created incorrect Float", f.floatValue() == 900.89f); -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::test_byteValue() { - // Test for method byte decaf.lang.Float::byteValue() - Float f( 0.46874f ); - Float f2( 90.8f ); - - CPPUNIT_ASSERT_MESSAGE( "Returned incorrect byte value", - f.byteValue() == 0 && f2.byteValue() == 90 ); -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::test_compare() { - - float values[] = { Float::NEGATIVE_INFINITY, - -Float::MAX_VALUE, - -2.0f, - -Float::MIN_VALUE, - -0.0f, 0.0f, - Float::MIN_VALUE, - 2.0f, - Float::MAX_VALUE, - Float::POSITIVE_INFINITY, - Float::NaN }; - - for( std::size_t i = 0; i < sizeof(values) / sizeof(float); i++ ) { - - float f1 = values[i]; - CPPUNIT_ASSERT_MESSAGE( "compare() should be equal:", - Float::compare( f1, f1 ) == 0 ); - Float F1( f1 ); - CPPUNIT_ASSERT_MESSAGE( "compareTo() should be equal: ", - F1.compareTo( F1 ) == 0); - - for( std::size_t j = i + 1; j < sizeof(values) / sizeof(float); j++ ) { - float f2 = values[j]; - CPPUNIT_ASSERT_MESSAGE( "compare() should be less ", - Float::compare(f1, f2) == -1 ); - CPPUNIT_ASSERT_MESSAGE( "compare() should be greater ", - Float::compare(f2, f1) == 1 ); - Float F2(f2); - CPPUNIT_ASSERT_MESSAGE( "compareTo() should be less ", - F1.compareTo(F2) == -1 ); - CPPUNIT_ASSERT_MESSAGE( "compareTo() should be greater ", - F2.compareTo(F1) == 1 ); - } - } -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::test_doubleValue() { - // Test for method double decaf.lang.Float::doubleValue() - CPPUNIT_ASSERT_MESSAGE( - "Incorrect double value returned", - Math::abs( Float( 999999.999f ).doubleValue() - 999999.999 ) < 1 ); -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::test_floatToIntBitsF() { - float f = 9876.2345f; - int bits = Float::floatToIntBits( f ); - float r = Float::intBitsToFloat( bits ); - CPPUNIT_ASSERT_MESSAGE("Incorrect intBits returned", f == r); -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::test_floatToRawIntBitsF() { - int i = 0x7fc004d2; - float f = Float::intBitsToFloat( i ); - CPPUNIT_ASSERT_MESSAGE( "Wrong raw bits", Float::floatToRawIntBits(f) == i ); -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::test_floatValue() { - // Test for method float decaf.lang.Float::floatValue() - Float f( 87.657f ); - Float f2( -0.876f ); - CPPUNIT_ASSERT_MESSAGE( "Returned incorrect floatValue", - f.floatValue() == 87.657f && - ( f2.floatValue() == -0.876f ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::test_intBitsToFloatI() { - float f = 9876.2345f; - int bits = Float::floatToIntBits(f); - float r = Float::intBitsToFloat(bits); - CPPUNIT_ASSERT_MESSAGE("Incorrect intBits returned", f == r ); -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::test_intValue() { - // Test for method int decaf.lang.Float::intValue() - Float f( 0.46874f ); - Float f2( 90.8f ); - CPPUNIT_ASSERT_MESSAGE( "Returned incorrect int value", - f.intValue() == 0 && f2.intValue() == 90 ); -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::test_isInfinite() { - // Test for method boolean decaf.lang.Float::isInfinite() - CPPUNIT_ASSERT_MESSAGE("Infinity check failed", - Float( Float::POSITIVE_INFINITY ).isInfinite() && - Float( Float::NEGATIVE_INFINITY ).isInfinite() && - !(Float( 0.13131414f ).isInfinite() ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::test_isInfiniteF() { - // Test for method boolean decaf.lang.Float::isInfinite(float) - - CPPUNIT_ASSERT_MESSAGE( "Infinity check failed", - Float::isInfinite( Float::POSITIVE_INFINITY ) && - (Float::isInfinite( Float::NEGATIVE_INFINITY) ) && - !( Float::isInfinite( 1.0f ) ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::test_isNaN() { - // Test for method boolean decaf.lang.Float::isNaN() - CPPUNIT_ASSERT_MESSAGE( "NAN check failed", - Float( Float::NaN ).isNaN() && !( Float( 1.0f ).isNaN() ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::test_isNaNF() { - // Test for method boolean decaf.lang.Float::isNaN(float) - CPPUNIT_ASSERT_MESSAGE( "NaN check failed", - Float::isNaN( Float::NaN ) && !( Float::isNaN( 12.09f ) ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::test_longValue() { - // Test for method long decaf.lang.Float::longValue() - Float f( 0.46874f ); - Float f2( 90.8f ); - CPPUNIT_ASSERT_MESSAGE( "Returned incorrect long value", - f.longValue() == 0 && f2.longValue() == 90 ); -} - -//////////////////////////////////////////////////////////////////////////////// -void FloatTest::test_parseFloatLDecaf_lang_String() { - - CPPUNIT_ASSERT_MESSAGE( "Incorrect float returned, expected zero.", - 0.0 == Float::parseFloat("7.0064923216240853546186479164495e-46")); - CPPUNIT_ASSERT_MESSAGE("Incorrect float returned, expected minimum float.", - Float::MIN_VALUE == - Float::parseFloat("7.0064923216240853546186479164496e-46") ); - -// doTestCompareRawBits( -// "0.000000000000000000000000000000000000011754942807573642917278829910357665133228589927589904276829631184250030649651730385585324256680905818939208984375", -// 0x800000, "1.17549435E-38"); -// doTestCompareRawBits( -// "0.00000000000000000000000000000000000001175494280757364291727882991035766513322858992758990427682963118425003064965173038558532425668090581893920898437499999f", -// 0x7fffff, "1.1754942E-38"); -// -// /* Test a set of regular floats with exponents from -38 to +38 */ -// for (int i = 38; i > 3; i--) { -// std::string testString; -// testString = "3.4028234663852886e-" + i; -// doTestCompareRawBits(testString, rawBitsFor3_4eN38To38[38 - i], -// expectedStringFor3_4eN38To38[38 - i]); -// } -// doTestCompareRawBits("3.4028234663852886e-3", rawBitsFor3_4eN38To38[38 - 3], -// expectedStringFor3_4eN38To38[38 - 3]); -// doTestCompareRawBits("3.4028234663852886e-2", rawBitsFor3_4eN38To38[38 - 2], -// expectedStringFor3_4eN38To38[38 - 2]); -// doTestCompareRawBits("3.4028234663852886e-1", rawBitsFor3_4eN38To38[38 - 1], -// expectedStringFor3_4eN38To38[38 - 1]); -// doTestCompareRawBits("3.4028234663852886e-0", rawBitsFor3_4eN38To38[38 - 0], -// expectedStringFor3_4eN38To38[38 - 0]); -// doTestCompareRawBits("3.4028234663852886e+1", rawBitsFor3_4eN38To38[38 + 1], -// expectedStringFor3_4eN38To38[38 + 1]); -// doTestCompareRawBits("3.4028234663852886e+2", rawBitsFor3_4eN38To38[38 + 2], -// expectedStringFor3_4eN38To38[38 + 2]); -// doTestCompareRawBits("3.4028234663852886e+3", rawBitsFor3_4eN38To38[38 + 3], -// expectedStringFor3_4eN38To38[38 + 3]); -// doTestCompareRawBits("3.4028234663852886e+4", rawBitsFor3_4eN38To38[38 + 4], -// expectedStringFor3_4eN38To38[38 + 4]); -// doTestCompareRawBits("3.4028234663852886e+5", rawBitsFor3_4eN38To38[38 + 5], -// expectedStringFor3_4eN38To38[38 + 5]); -// doTestCompareRawBits("3.4028234663852886e+6", rawBitsFor3_4eN38To38[38 + 6], -// expectedStringFor3_4eN38To38[38 + 6]); -// -// for (int i = 7; i < 39; i++) { -// std::string testString; -// testString = "3.4028234663852886e+" + i; -// doTestCompareRawBits(testString, rawBitsFor3_4eN38To38[38 + i], -// expectedStringFor3_4eN38To38[38 + i]); -// } -// -// /* Test another set of regular floats with exponents from -38 to +38 */ -// for (int i = 38; i > 3; i--) { -// std::string testString; -// testString = "-1.1754943508222875e-" + i; -// doTestCompareRawBits(testString, rawBitsFor1_17eN38To38[38 - i], -// expectedStringFor1_17eN38To38[38 - i]); -// } -// doTestCompareRawBits("-1.1754943508222875e-3", rawBitsFor1_17eN38To38[38 - 3], -// expectedStringFor1_17eN38To38[38 - 3]); -// doTestCompareRawBits("-1.1754943508222875e-2", rawBitsFor1_17eN38To38[38 - 2], -// expectedStringFor1_17eN38To38[38 - 2]); -// doTestCompareRawBits("-1.1754943508222875e-1", rawBitsFor1_17eN38To38[38 - 1], -// expectedStringFor1_17eN38To38[38 - 1]); -// doTestCompareRawBits("-1.1754943508222875e-0", rawBitsFor1_17eN38To38[38 - 0], -// expectedStringFor1_17eN38To38[38 - 0]); -// doTestCompareRawBits("-1.1754943508222875e+1", rawBitsFor1_17eN38To38[38 + 1], -// expectedStringFor1_17eN38To38[38 + 1]); -// doTestCompareRawBits("-1.1754943508222875e+2", rawBitsFor1_17eN38To38[38 + 2], -// expectedStringFor1_17eN38To38[38 + 2]); -// doTestCompareRawBits("-1.1754943508222875e+3", rawBitsFor1_17eN38To38[38 + 3], -// expectedStringFor1_17eN38To38[38 + 3]); -// doTestCompareRawBits("-1.1754943508222875e+4", rawBitsFor1_17eN38To38[38 + 4], -// expectedStringFor1_17eN38To38[38 + 4]); -// doTestCompareRawBits("-1.1754943508222875e+5", rawBitsFor1_17eN38To38[38 + 5], -// expectedStringFor1_17eN38To38[38 + 5]); -// doTestCompareRawBits("-1.1754943508222875e+6", rawBitsFor1_17eN38To38[38 + 6], -// expectedStringFor1_17eN38To38[38 + 6]); - -// for( int i = 7; i < 39; i++ ) { -// std::string testString; -// testString = "-1.1754943508222875e+" + Integer::toString( i ); -// doTestCompareRawBits( testString, -// rawBitsFor1_17eN38To38[38 + i], -// expectedStringFor1_17eN38To38[38 + i] ); -// } - - // Test denormalized floats (floats with exponents <= -38 - doTestCompareRawBits("1.1012984643248170E-45", 1, "1.4E-45"); - doTestCompareRawBits("-1.1012984643248170E-45", 0x80000001, "-1.4E-45"); - doTestCompareRawBits("1.0E-45", 1, "1.4E-45"); - doTestCompareRawBits("-1.0E-45", 0x80000001, "-1.4E-45"); - doTestCompareRawBits("0.9E-45", 1, "1.4E-45"); - doTestCompareRawBits("-0.9E-45", 0x80000001, "-1.4E-45"); - doTestCompareRawBits("4.203895392974451e-45", 3, "4.2E-45"); - doTestCompareRawBits("-4.203895392974451e-45", 0x80000003, "-4.2E-45"); - doTestCompareRawBits("0.004E-45", 0, "0.0"); - doTestCompareRawBits("-0.004E-45", 0x80000000, "-0.0"); - - // Test for large floats close to and greater than 3.4028235E38 and - // -3.4028235E38 - doTestCompareRawBits("1.2E+38", 0x7eb48e52, "1.2E38"); - doTestCompareRawBits("-1.2E+38", 0xfeb48e52, "-1.2E38"); - doTestCompareRawBits("3.2E+38", 0x7f70bdc2, "3.2E38"); - doTestCompareRawBits("-3.2E+38", 0xff70bdc2, "-3.2E38"); - doTestCompareRawBits("3.4E+38", 0x7f7fc99e, "3.4E38"); - doTestCompareRawBits("-3.4E+38", 0xff7fc99e, "-3.4E38"); - doTestCompareRawBits("3.4028234663852886E+38", 0x7f7fffff, "3.4028235E38"); - doTestCompareRawBits("-3.4028234663852886E+38", 0xff7fffff, "-3.4028235E38"); - doTestCompareRawBits("3.405E+38", 0x7f800000, "Infinity"); - doTestCompareRawBits("-3.405E+38", 0xff800000, "-Infinity"); - doTestCompareRawBits("3.41E+38", 0x7f800000, "Infinity"); - doTestCompareRawBits("-3.41E+38", 0xff800000, "-Infinity"); - doTestCompareRawBits("3.42E+38", 0x7f800000, "Infinity"); - doTestCompareRawBits("-3.42E+38", 0xff800000, "-Infinity"); - doTestCompareRawBits("1.0E+39", 0x7f800000, "Infinity"); - doTestCompareRawBits("-1.0E+39", 0xff800000, "-Infinity"); -}
diff --git a/src/decaf/src/test/decaf/lang/FloatTest.h b/src/decaf/src/test/decaf/lang/FloatTest.h deleted file mode 100644 index 95bf288..0000000 --- a/src/decaf/src/test/decaf/lang/FloatTest.h +++ /dev/null
@@ -1,113 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_FLOATTEST_H_ -#define _DECAF_LANG_FLOATTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -namespace decaf{ -namespace lang{ - - class FloatTest : public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( FloatTest ); - CPPUNIT_TEST( test_ConstructorF ); - CPPUNIT_TEST( test_ConstructorString ); -// CPPUNIT_TEST( test_byteValue ); -// CPPUNIT_TEST( test_compare ); -// CPPUNIT_TEST( test_doubleValue ); -// CPPUNIT_TEST( test_floatToIntBitsF ); -// CPPUNIT_TEST( test_floatToRawIntBitsF ); -// CPPUNIT_TEST( test_floatValue ); -// CPPUNIT_TEST( test_intBitsToFloatI ); -// CPPUNIT_TEST( test_intValue ); -// CPPUNIT_TEST( test_isInfinite ); -// CPPUNIT_TEST( test_isInfiniteF ); -// CPPUNIT_TEST( test_isNaN ); -// CPPUNIT_TEST( test_isNaNF ); -// CPPUNIT_TEST( test_longValue ); -// CPPUNIT_TEST( test_parseFloatLDecaf_lang_String ); - -// CPPUNIT_TEST( test_byteValue ); -// CPPUNIT_TEST( test_byteValue ); -// CPPUNIT_TEST( test_byteValue ); -// CPPUNIT_TEST( test_byteValue ); -// CPPUNIT_TEST( test_byteValue ); -// CPPUNIT_TEST( test_byteValue ); -// CPPUNIT_TEST( test_byteValue ); -// CPPUNIT_TEST( test_byteValue ); -// CPPUNIT_TEST( test_byteValue ); -// CPPUNIT_TEST( test_byteValue ); -// CPPUNIT_TEST( test_byteValue ); -// CPPUNIT_TEST( test_byteValue ); - CPPUNIT_TEST_SUITE_END(); - - public: - - static const int rawBitsFor3_4eN38To38[]; - static const std::string expectedStringFor3_4eN38To38[]; - static const int rawBitsFor1_17eN38To38[]; - static const std::string expectedStringFor1_17eN38To38[]; - - FloatTest(); - virtual ~FloatTest() {} - - void test_ConstructorF(); - void test_ConstructorString(); - void test_byteValue(); - void test_compare(); - void test_doubleValue(); - void test_floatToIntBitsF(); - void test_floatToRawIntBitsF(); - void test_floatValue(); - void test_intBitsToFloatI(); - void test_intValue(); - void test_isInfinite(); - void test_isInfiniteF(); - void test_isNaN(); - void test_isNaNF(); - void test_longValue(); - void test_parseFloatLDecaf_lang_String(); - -// void test_byteValue(); -// void test_byteValue(); -// void test_byteValue(); -// void test_byteValue(); -// void test_byteValue(); -// void test_byteValue(); -// void test_byteValue(); -// void test_byteValue(); -// void test_byteValue(); -// void test_byteValue(); -// void test_byteValue(); -// void test_byteValue(); -// void test_byteValue(); -// void test_byteValue(); - - private: - - void doTestCompareRawBits( const std::string& originalFloatString, - int expectedRawBits, - const std::string& expectedString ); - - }; - -}} - -#endif /*_DECAF_LANG_FLOATTEST_H_*/
diff --git a/src/decaf/src/test/decaf/lang/IntegerTest.cpp b/src/decaf/src/test/decaf/lang/IntegerTest.cpp deleted file mode 100644 index b843cba..0000000 --- a/src/decaf/src/test/decaf/lang/IntegerTest.cpp +++ /dev/null
@@ -1,109 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "IntegerTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -void IntegerTest::test(void) -{ - int x = Integer::parseInt("12"); - int y = Integer::parseInt("FF", 16); - int z = Integer::parseInt("42"); - - CPPUNIT_ASSERT( x == 12 ); - CPPUNIT_ASSERT( y == 255 ); - CPPUNIT_ASSERT( z == 42 ); - - std::string x1 = Integer::toString( x ); - std::string y1 = Integer::toString( y ); - std::string z1 = Integer::toString( z ); - - CPPUNIT_ASSERT( x1 == "12" ); - CPPUNIT_ASSERT( y1 == "255" ); - CPPUNIT_ASSERT( z1 == "42" ); - -} - -//////////////////////////////////////////////////////////////////////////////// -void IntegerTest::test2() { - Integer integer( 255 ); - - // Test cast functions - CPPUNIT_ASSERT( integer.byteValue() == 255 ); - CPPUNIT_ASSERT( integer.shortValue() == 255 ); - CPPUNIT_ASSERT( integer.intValue() == 255 ); - CPPUNIT_ASSERT( integer.longValue() == 255 ); - CPPUNIT_ASSERT( integer.floatValue() == 255.0f ); - CPPUNIT_ASSERT( integer.doubleValue() == 255.0 ); - - // Comparison functions - CPPUNIT_ASSERT( integer.compareTo( 256 ) == -1 ); - CPPUNIT_ASSERT( integer.compareTo( 255 ) == 0 ); - CPPUNIT_ASSERT( integer.compareTo( 254 ) == 1 ); - CPPUNIT_ASSERT( integer.equals( Integer( 255 ) ) == true ); - CPPUNIT_ASSERT( integer.compareTo( Integer( 255 ) ) == 0 ); - CPPUNIT_ASSERT( integer == Integer( 255 ) ); - - // decode - CPPUNIT_ASSERT( integer == Integer::decode( "255" ) ); - CPPUNIT_ASSERT( integer == Integer::decode( "0xFF" ) ); - CPPUNIT_ASSERT( integer == Integer::decode( "255" ) ); - CPPUNIT_ASSERT( Integer::decode( "-255" ) == -255 ); - - // reverseBytes - CPPUNIT_ASSERT( (int)0xFF000000 == Integer::reverseBytes( 255 ) ); - - // reverse - CPPUNIT_ASSERT( Integer::reverse( Integer::reverse( 255 ) ) == 255 ); - - // parseInt - CPPUNIT_ASSERT( Integer::parseInt( "255") == 255 ); - CPPUNIT_ASSERT( Integer::parseInt( "255", 10 ) == 255 ); - CPPUNIT_ASSERT( Integer::parseInt( "255", 11 ) != 255 ); - CPPUNIT_ASSERT( Integer::parseInt( "FF", 16 ) == 255 ); - - // valueOf - CPPUNIT_ASSERT( Integer::valueOf( 255 ) == 255 ); - CPPUNIT_ASSERT( Integer::valueOf( "255" ) == 255 ); - CPPUNIT_ASSERT( Integer::valueOf( "255", 10 ) == 255 ); - CPPUNIT_ASSERT( (Integer::valueOf( "255", 11 )).intValue() != 255 ); - CPPUNIT_ASSERT( Integer::valueOf( "FF", 16 ) == 255 ); - - // bitCount - CPPUNIT_ASSERT( Integer::bitCount( 255 ) == 8 ); - CPPUNIT_ASSERT( Integer::bitCount( 0xFFFFFFFF ) == 32 ); - - //toXXXString - CPPUNIT_ASSERT( Integer::toString( 255 ) == "255" ); - CPPUNIT_ASSERT( Integer::toString( 255, 16 ) == "ff" ); - CPPUNIT_ASSERT( Integer::toHexString( 255 ) == "ff" ); - CPPUNIT_ASSERT( Integer::toOctalString( 255 ) == "377" ); - CPPUNIT_ASSERT( Integer::toBinaryString( 255 ) == "11111111" ); - CPPUNIT_ASSERT( Integer::toString( 255255 ) == "255255" ); - - // highestOneBit - CPPUNIT_ASSERT( Integer::highestOneBit( 255 ) == 128 ); - CPPUNIT_ASSERT( Integer::highestOneBit( 0xFF000000 ) == (int)0x80000000 ); - - // lowestOneBit - CPPUNIT_ASSERT( Integer::lowestOneBit( 255 ) == 1 ); - CPPUNIT_ASSERT( Integer::lowestOneBit( 0xFF000000 ) == (int)0x01000000 ); -}
diff --git a/src/decaf/src/test/decaf/lang/IntegerTest.h b/src/decaf/src/test/decaf/lang/IntegerTest.h deleted file mode 100644 index 881b723..0000000 --- a/src/decaf/src/test/decaf/lang/IntegerTest.h +++ /dev/null
@@ -1,48 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_INTEGERTEST_H_ -#define _DECAF_LANG_INTEGERTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/lang/Integer.h> - -namespace decaf{ -namespace lang{ - - class IntegerTest : public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( IntegerTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST( test2 ); - CPPUNIT_TEST_SUITE_END(); - - public: - - IntegerTest(void) {} - virtual ~IntegerTest(void) {} - - virtual void test(); - virtual void test2(); - - }; - -}} - -#endif /*_DECAF_LANG_INTEGERTEST_H_*/
diff --git a/src/decaf/src/test/decaf/lang/LongTest.cpp b/src/decaf/src/test/decaf/lang/LongTest.cpp deleted file mode 100644 index d745579..0000000 --- a/src/decaf/src/test/decaf/lang/LongTest.cpp +++ /dev/null
@@ -1,110 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "LongTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -void LongTest::test() { - - long long x = Long::parseLong("12"); - long long y = Long::parseLong("FF", 16); - long long z = Long::parseLong("42"); - - CPPUNIT_ASSERT( x == 12 ); - CPPUNIT_ASSERT( y == 255 ); - CPPUNIT_ASSERT( z == 42 ); - - std::string x1 = Long::toString( x ); - std::string y1 = Long::toString( y ); - std::string z1 = Long::toString( z ); - - CPPUNIT_ASSERT( x1 == "12" ); - CPPUNIT_ASSERT( y1 == "255" ); - CPPUNIT_ASSERT( z1 == "42" ); -} - -//////////////////////////////////////////////////////////////////////////////// -void LongTest::test2() { - - Long llong( 255 ); - - // Test cast functions - CPPUNIT_ASSERT( llong.byteValue() == 255 ); - CPPUNIT_ASSERT( llong.shortValue() == 255 ); - CPPUNIT_ASSERT( llong.intValue() == 255 ); - CPPUNIT_ASSERT( llong.longValue() == 255 ); - CPPUNIT_ASSERT( llong.floatValue() == 255.0f ); - CPPUNIT_ASSERT( llong.doubleValue() == 255.0 ); - - // Comparison functions - CPPUNIT_ASSERT( llong.compareTo( 256 ) == -1 ); - CPPUNIT_ASSERT( llong.compareTo( 255 ) == 0 ); - CPPUNIT_ASSERT( llong.compareTo( 254 ) == 1 ); - CPPUNIT_ASSERT( llong.equals( Long( 255 ) ) == true ); - CPPUNIT_ASSERT( llong.compareTo( Long( 255 ) ) == 0 ); - CPPUNIT_ASSERT( llong == Long( 255 ) ); - - // decode - CPPUNIT_ASSERT( llong == Long::decode( "255" ) ); - CPPUNIT_ASSERT( llong == Long::decode( "0xFF" ) ); - CPPUNIT_ASSERT( llong == Long::decode( "255" ) ); - CPPUNIT_ASSERT( Long::decode( "-255" ) == -255 ); - - // reverseBytes - CPPUNIT_ASSERT( (long long)0xFF00000000000000LL == Long::reverseBytes( 255 ) ); - - // reverse - CPPUNIT_ASSERT( Long::reverse( Long::reverse( 255 ) ) == 255 ); - - // parseInt - CPPUNIT_ASSERT( Long::parseLong( "255") == 255 ); - CPPUNIT_ASSERT( Long::parseLong( "255", 10 ) == 255 ); - CPPUNIT_ASSERT( Long::parseLong( "255", 11 ) != 255 ); - CPPUNIT_ASSERT( Long::parseLong( "FF", 16 ) == 255 ); - - // valueOf - CPPUNIT_ASSERT( Long::valueOf( 255 ) == 255 ); - CPPUNIT_ASSERT( Long::valueOf( "255" ) == 255 ); - CPPUNIT_ASSERT( Long::valueOf( "255", 10 ) == 255 ); - CPPUNIT_ASSERT( (Long::valueOf( "255", 11 )).intValue() != 255 ); - CPPUNIT_ASSERT( Long::valueOf( "FF", 16 ) == 255 ); - - // bitCount - CPPUNIT_ASSERT( Long::bitCount( 255 ) == 8 ); - CPPUNIT_ASSERT( Long::bitCount( 0xFFFFFFFF ) == 32 ); - - //toXXXString - CPPUNIT_ASSERT( Long::toString( 255 ) == "255" ); - CPPUNIT_ASSERT( Long::toString( 255, 16 ) == "ff" ); - CPPUNIT_ASSERT( Long::toHexString( 255 ) == "ff" ); - CPPUNIT_ASSERT( Long::toOctalString( 255 ) == "377" ); - CPPUNIT_ASSERT( Long::toBinaryString( 255 ) == "11111111" ); - CPPUNIT_ASSERT( Long::toString( 255255 ) == "255255" ); - - // highestOneBit - CPPUNIT_ASSERT( Long::highestOneBit( 255 ) == 128 ); - CPPUNIT_ASSERT( Long::highestOneBit( 0xFF000000 ) == (long long)0x80000000 ); - - // lowestOneBit - CPPUNIT_ASSERT( Long::lowestOneBit( 255 ) == 1 ); - CPPUNIT_ASSERT( Long::lowestOneBit( 0xFF000000 ) == (long long)0x01000000 ); - -}
diff --git a/src/decaf/src/test/decaf/lang/LongTest.h b/src/decaf/src/test/decaf/lang/LongTest.h deleted file mode 100644 index 29d62d1..0000000 --- a/src/decaf/src/test/decaf/lang/LongTest.h +++ /dev/null
@@ -1,48 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_LONGTEST_H_ -#define _DECAF_LANG_LONGTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/lang/Long.h> - -namespace decaf{ -namespace lang{ - - class LongTest : public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( LongTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST( test2 ); - CPPUNIT_TEST_SUITE_END(); - - public: - - LongTest() {} - virtual ~LongTest() {} - - virtual void test(); - virtual void test2(); - - }; - -}} - -#endif /*_DECAF_LANG_LONGTEST_H_*/
diff --git a/src/decaf/src/test/decaf/lang/MathTest.cpp b/src/decaf/src/test/decaf/lang/MathTest.cpp deleted file mode 100644 index f4b16cb..0000000 --- a/src/decaf/src/test/decaf/lang/MathTest.cpp +++ /dev/null
@@ -1,687 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "MathTest.h" - -#include <decaf/lang/Math.h> -#include <decaf/lang/Double.h> -#include <decaf/lang/Float.h> - -using namespace std; -using namespace decaf; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -MathTest::MathTest() { - this->HYP = Math::sqrt( 2.0 ); - this->OPP = 1.0; - this->ADJ = 1.0; -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_absD() { - // Test for method double decaf.lang.Math.abs(double) - - CPPUNIT_ASSERT_MESSAGE( "Incorrect double abs value", - ( Math::abs(-1908.8976) == 1908.8976)); - CPPUNIT_ASSERT_MESSAGE( "Incorrect double abs value", - ( Math::abs(1908.8976) == 1908.8976)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_absF() { - // Test for method float decaf.lang.Math::abs(float) - CPPUNIT_ASSERT_MESSAGE("Incorrect float abs value", - (Math::abs(-1908.8976f) == 1908.8976f)); - CPPUNIT_ASSERT_MESSAGE("Incorrect float abs value", - (Math::abs(1908.8976f) == 1908.8976f)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_absI() { - // Test for method int decaf.lang.Math::abs(int) - CPPUNIT_ASSERT_MESSAGE("Incorrect int abs value", (Math::abs(-1908897) == 1908897)); - CPPUNIT_ASSERT_MESSAGE("Incorrect int abs value", (Math::abs(1908897) == 1908897)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_absJ() { - // Test for method long decaf.lang.Math::abs(long) - CPPUNIT_ASSERT_MESSAGE("Incorrect long abs value", - (Math::abs(-19088976000089LL) == 19088976000089LL)); - CPPUNIT_ASSERT_MESSAGE("Incorrect long abs value", - (Math::abs(19088976000089LL) == 19088976000089LL)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_acosD() { - // Test for method double decaf.lang.Math::acos(double) - double r = Math::cos(Math::acos(ADJ / HYP)); - long long lr = Double::doubleToLongBits(r); - long long t = Double::doubleToLongBits(ADJ / HYP); - CPPUNIT_ASSERT_MESSAGE("Returned incorrect arc cosine", lr == t || (lr + 1) == t - || (lr - 1) == t); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_asinD() { - // Test for method double decaf.lang.Math::asin(double) - double r = Math::sin(Math::asin(OPP / HYP)); - long long lr = Double::doubleToLongBits(r); - long long t = Double::doubleToLongBits(OPP / HYP); - CPPUNIT_ASSERT_MESSAGE("Returned incorrect arc sine", lr == t || (lr + 1) == t - || (lr - 1) == t); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_atanD() { - // Test for method double decaf.lang.Math::atan(double) - double answer = Math::tan(Math::atan(1.0)); - CPPUNIT_ASSERT_MESSAGE("Returned incorrect arc tangent: ", - answer <= 1.0 && answer >= 9.9999999999999983E-1); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_atan2DD() { - // Test for method double decaf.lang.Math::atan2(double, double) - double answer = Math::atan(Math::tan(1.0)); - CPPUNIT_ASSERT_MESSAGE("Returned incorrect arc tangent: ", - answer <= 1.0 && answer >= 9.9999999999999983E-1); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_cbrt_D() { - //Test for special situations - CPPUNIT_ASSERT_MESSAGE("Should return Double::NaN", - Double::isNaN(Math::cbrt(Double::NaN))); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return Double::POSITIVE_INFINITY", - Math::cbrt(Double::POSITIVE_INFINITY), Double::POSITIVE_INFINITY ); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return Double::NEGATIVE_INFINITY", - Math::cbrt(Double::NEGATIVE_INFINITY), Double::NEGATIVE_INFINITY); - CPPUNIT_ASSERT_EQUAL( - Double::doubleToLongBits(0.0), - Double::doubleToLongBits(Math::cbrt(0.0))); - CPPUNIT_ASSERT_EQUAL( Double::doubleToLongBits(+0.0), - Double::doubleToLongBits(Math::cbrt(+0.0))); - CPPUNIT_ASSERT_EQUAL( Double::doubleToLongBits(-0.0), - Double::doubleToLongBits(Math::cbrt(-0.0))); - - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 3.0", Math::cbrt(27.0), 3.0); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 5.643803094122362E102", - 5.643803094122362E102, Math::cbrt(Double::MAX_VALUE)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 0.01", 0.01, Math::cbrt(0.000001)); - - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return -3.0", -3.0, Math::cbrt(-27.0)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 1.7031839360032603E-108", - 1.7031839360032603E-108, Math::cbrt(Double::MIN_VALUE)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return -0.01", -0.01, Math::cbrt(-0.000001)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_ceilD() { - // Test for method double decaf.lang.Math::ceil(double) - CPPUNIT_ASSERT_EQUAL_MESSAGE( "Incorrect ceiling for double", - 79.0, Math::ceil(78.89) ); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect ceiling for double", - -78.0, Math::ceil(-78.89) ); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_cosD() { - // Test for method double decaf.lang.Math::cos(double) - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect answer", 1.0, Math::cos(0)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect answer", 0.5403023058681398, Math::cos(1)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_cosh_D() { - // Test for special situations - CPPUNIT_ASSERT(Double::isNaN(Math::cosh(Double::NaN))); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, Math::cosh(Double::POSITIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, Math::cosh(Double::NEGATIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 1.0", 1.0, Math::cosh(+0.0)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 1.0", 1.0, Math::cosh(-0.0)); - - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, Math::cosh(1234.56)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, Math::cosh(-1234.56)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 1.0000000000005", - 1.0000000000005, Math::cosh(0.000001)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 1.0000000000005", - 1.0000000000005, Math::cosh(-0.000001)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 5.212214351945598", - 5.212214351945598, Math::cosh(2.33482)); - - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, Math::cosh(Double::MAX_VALUE)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 1.0", - 1.0, Math::cosh(Double::MIN_VALUE)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_expD() { - // Test for method double decaf.lang.Math::exp(double) - CPPUNIT_ASSERT_MESSAGE("Incorrect answer returned for simple power", - Math::abs(Math::exp(4.0) - - Math::E * Math::E * Math::E * Math::E) < 0.1 ); - CPPUNIT_ASSERT_MESSAGE("Incorrect answer returned for larger power", - Math::log( Math::abs( Math::exp(5.5) ) - 5.5) < 10.0 ); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_expm1_D() { - // Test for special cases - CPPUNIT_ASSERT_MESSAGE("Should return NaN", Double::isNaN(Math::expm1(Double::NaN))); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, Math::expm1(Double::POSITIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return -1.0", -1.0, - Math::expm1(Double::NEGATIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL( Double::doubleToLongBits(0.0), - Double::doubleToLongBits(Math::expm1(0.0)) ); - CPPUNIT_ASSERT_EQUAL(Double::doubleToLongBits(+0.0), - Double::doubleToLongBits(Math::expm1(+0.0))); - CPPUNIT_ASSERT_EQUAL(Double::doubleToLongBits(-0.0), - Double::doubleToLongBits(Math::expm1(-0.0))); - - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return -9.999950000166666E-6", - -9.999950000166666E-6, Math::expm1(-0.00001)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 1.0145103074469635E60", - 1.0145103074469635E60, Math::expm1(138.16951162)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, - Math::expm1(123456789123456789123456789.4521584223)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, Math::expm1(Double::MAX_VALUE)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return MIN_VALUE", Double::MIN_VALUE, - Math::expm1(Double::MIN_VALUE)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_floorD() { - // Test for method double decaf.lang.Math::floor(double) - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect floor for double", - 78.0, Math::floor(78.89)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect floor for double", - -79.0, Math::floor(-78.89)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_hypot_DD() { - // Test for special cases - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, Math::hypot(Double::POSITIVE_INFINITY, - 1.0)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, Math::hypot(Double::NEGATIVE_INFINITY, - 123.324)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, - Math::hypot(-758.2587,Double::POSITIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, - Math::hypot(5687.21, Double::NEGATIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, Math::hypot(Double::POSITIVE_INFINITY, - Double::NEGATIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, Math::hypot(Double::NEGATIVE_INFINITY, - Double::POSITIVE_INFINITY)); - CPPUNIT_ASSERT_MESSAGE("Should be NaN", Double::isNaN(Math::hypot(Double::NaN, - 2342301.89843))); - CPPUNIT_ASSERT_MESSAGE("Should be NaN", Double::isNaN(Math::hypot(-345.2680, - Double::NaN))); - - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 2396424.905416697", - 2396424.905416697, Math::hypot(12322.12, -2396393.2258)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 138.16958070558556", 138.16958070558556, - Math::hypot(-138.16951162, 0.13817035864)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 1.7976931348623157E308", - 1.7976931348623157E308, Math::hypot(Double::MAX_VALUE, 211370.35)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 5413.7185", 5413.7185, Math::hypot( - -5413.7185, Double::MIN_VALUE)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_IEEEremainderDD() { - // Test for method double decaf.lang.Math::IEEEremainder(double, double) - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect remainder returned", - 0.0, Math::IEEEremainder(1.0, 1.0)); - CPPUNIT_ASSERT_MESSAGE("Incorrect remainder returned", - Math::IEEEremainder(1.32,89.765) >= 1.4705063220631647E-2 || - Math::IEEEremainder(1.32, 89.765) >= 1.4705063220631649E-2); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_logD() { - // Test for method double decaf.lang.Math::log(double) - for( double d = 10; d >= -10; d -= 0.5 ) { - double answer = Math::log( Math::exp(d) ); - - std::cout << "d: " << d << std::endl; - std::cout << "answer: " << answer << std::endl; - - CPPUNIT_ASSERT_MESSAGE( - "Answer does not equal expected answer for d", - Math::abs( answer - d ) <= Math::abs(d * 0.00000001) ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_log10_D() { - // Test for special cases - CPPUNIT_ASSERT(Double::isNaN(Math::log10(Double::NaN))); - CPPUNIT_ASSERT(Double::isNaN(Math::log10(-2541.05745687234187532))); - CPPUNIT_ASSERT(Double::isNaN(Math::log10(-0.1))); - CPPUNIT_ASSERT_EQUAL(Double::POSITIVE_INFINITY, Math::log10(Double::POSITIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL(Double::NEGATIVE_INFINITY, Math::log10(0.0)); - CPPUNIT_ASSERT_EQUAL(Double::NEGATIVE_INFINITY, Math::log10(+0.0)); - CPPUNIT_ASSERT_EQUAL(Double::NEGATIVE_INFINITY, Math::log10(-0.0)); - - CPPUNIT_ASSERT_EQUAL(3.0, Math::log10(1000.0)); - CPPUNIT_ASSERT_EQUAL(14.0, Math::log10(Math::pow(10, 14))); - CPPUNIT_ASSERT_EQUAL(3.7389561269540406, Math::log10(5482.2158)); - CPPUNIT_ASSERT_EQUAL(14.661551142893833, Math::log10(458723662312872.125782332587)); - CPPUNIT_ASSERT_EQUAL(-0.9083828622192334, Math::log10(0.12348583358871)); - CPPUNIT_ASSERT_EQUAL(308.25471555991675, Math::log10(Double::MAX_VALUE)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_log1p_D() { - // Test for special cases - CPPUNIT_ASSERT_MESSAGE("Should return NaN", Double::isNaN(Math::log1p(Double::NaN))); - CPPUNIT_ASSERT_MESSAGE("Should return NaN", Double::isNaN(Math::log1p(-32.0482175))); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, Math::log1p(Double::POSITIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL( Double::doubleToLongBits(0.0), - Double::doubleToLongBits(Math::log1p(0.0))); - CPPUNIT_ASSERT_EQUAL( Double::doubleToLongBits(+0.0), - Double::doubleToLongBits(Math::log1p(+0.0))); - CPPUNIT_ASSERT_EQUAL( Double::doubleToLongBits(-0.0), - Double::doubleToLongBits(Math::log1p(-0.0))); - - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return -0.2941782295312541", -0.2941782295312541, - Math::log1p(-0.254856327)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 7.368050685564151", 7.368050685564151, - Math::log1p(1583.542)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 0.4633708685409921", 0.4633708685409921, - Math::log1p(0.5894227)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 709.782712893384", 709.782712893384, - Math::log1p(Double::MAX_VALUE)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return Double::MIN_VALUE", Double::MIN_VALUE, - Math::log1p(Double::MIN_VALUE)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_maxDD() { - // Test for method double decaf.lang.Math::max(double, double) - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect double max value", 1908897.6000089, - Math::max(-1908897.6000089, 1908897.6000089)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect double max value", - 1908897.6000089, Math::max(2.0, 1908897.6000089)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect double max value", -2.0, - Math::max(-2.0, -1908897.6000089)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_maxFF() { - // Test for method float decaf.lang.Math::max(float, float) - CPPUNIT_ASSERT_MESSAGE("Incorrect float max value", Math::max(-1908897.600f, - 1908897.600f) == 1908897.600f); - CPPUNIT_ASSERT_MESSAGE("Incorrect float max value", - Math::max(2.0f, 1908897.600f) == 1908897.600f); - CPPUNIT_ASSERT_MESSAGE("Incorrect float max value", - Math::max(-2.0f, -1908897.600f) == -2.0f); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_maxII() { - // Test for method int decaf.lang.Math::max(int, int) - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect int max value", - 19088976, Math::max(-19088976, 19088976)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect int max value", - 19088976, Math::max(20, 19088976)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect int max value", -20, Math::max(-20, -19088976)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_maxJJ() { - // Test for method long long decaf.lang.Math::max(long long, long long) - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect long max value", - 19088976000089LL, Math::max(-19088976000089LL, 19088976000089LL)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect long max value", - 19088976000089LL, Math::max(20LL, 19088976000089LL)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect long max value", - -20LL, Math::max(-20LL, -19088976000089LL)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_minDD() { - // Test for method double decaf.lang.Math::min(double, double) - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect double min value", - -1908897.6000089, Math::min(-1908897.6000089, 1908897.6000089)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect double min value", - 2.0, Math::min(2.0, 1908897.6000089)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect double min value", - -1908897.6000089, Math::min(-2.0,-1908897.6000089)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_minFF() { - // Test for method float decaf.lang.Math::min(float, float) - CPPUNIT_ASSERT_MESSAGE("Incorrect float min value", Math::min(-1908897.600f, - 1908897.600f) == -1908897.600f); - CPPUNIT_ASSERT_MESSAGE("Incorrect float min value", - Math::min(2.0f, 1908897.600f) == 2.0f); - CPPUNIT_ASSERT_MESSAGE("Incorrect float min value", - Math::min(-2.0f, -1908897.600f) == -1908897.600f); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_minII() { - // Test for method int decaf.lang.Math::min(int, int) - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect int min value", - -19088976, Math::min(-19088976, 19088976)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect int min value", 20, Math::min(20, 19088976)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect int min value", - -19088976, Math::min(-20, -19088976)); - -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_minJJ() { - // Test for method long long decaf.lang.Math::min(long long, long long) - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect long min value", - -19088976000089LL, Math::min(-19088976000089LL, 19088976000089LL)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect long min value", - 20LL, Math::min(20LL, 19088976000089LL)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect long min value", - -19088976000089LL, Math::min(-20LL, -19088976000089LL)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_powDD() { - // Test for method double decaf.lang.Math::pow(double, double) - CPPUNIT_ASSERT_MESSAGE("pow returned incorrect value", - (long) Math::pow(2, 8) == 256l); - CPPUNIT_ASSERT_MESSAGE("pow returned incorrect value", - Math::pow(2, -8) == 0.00390625); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect root returned1", - 2.0, Math::sqrt(Math::pow(Math::sqrt(2), 4))); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_rintD() { - // Test for method double decaf.lang.Math::rint(double) - CPPUNIT_ASSERT_EQUAL_MESSAGE("Failed to round properly - up to odd", - 3.0, Math::rint(2.9)); - CPPUNIT_ASSERT_MESSAGE("Failed to round properly - NaN", - Double::isNaN(Math::rint(Double::NaN))); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Failed to round properly down to even", - 2.0, Math::rint(2.1)); - CPPUNIT_ASSERT_MESSAGE("Failed to round properly to even", - Math::rint(2.5) == 2.0); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_roundD() { - // Test for method long decaf.lang.Math::round(double) - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect rounding of a float", - -91LL, Math::round(-90.89)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_roundF() { - // Test for method int decaf.lang.Math::round(float) - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect rounding of a float", - -91, Math::round(-90.89f)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_signum_D() { - CPPUNIT_ASSERT(Double::isNaN(Math::signum(Double::NaN))); - CPPUNIT_ASSERT(Double::isNaN(Math::signum(Double::NaN))); - CPPUNIT_ASSERT_EQUAL(Double::doubleToLongBits(0.0), - Double::doubleToLongBits(Math::signum(0.0))); - CPPUNIT_ASSERT_EQUAL(Double::doubleToLongBits(+0.0), - Double::doubleToLongBits(Math::signum(+0.0))); - CPPUNIT_ASSERT_EQUAL(Double::doubleToLongBits(-0.0), - Double::doubleToLongBits(Math::signum(-0.0))); - - CPPUNIT_ASSERT_EQUAL(1.0, Math::signum(253681.2187962)); - CPPUNIT_ASSERT_EQUAL(-1.0, Math::signum(-125874693.56)); - CPPUNIT_ASSERT_EQUAL(1.0, Math::signum(1.2587E-308)); - CPPUNIT_ASSERT_EQUAL(-1.0, Math::signum(-1.2587E-308)); - - CPPUNIT_ASSERT_EQUAL(1.0, Math::signum(Double::MAX_VALUE)); - CPPUNIT_ASSERT_EQUAL(1.0, Math::signum(Double::MIN_VALUE)); - CPPUNIT_ASSERT_EQUAL(-1.0, Math::signum(-Double::MAX_VALUE)); - CPPUNIT_ASSERT_EQUAL(-1.0, Math::signum(-Double::MIN_VALUE)); - CPPUNIT_ASSERT_EQUAL(1.0, Math::signum(Double::POSITIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL(-1.0, Math::signum(Double::NEGATIVE_INFINITY)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_signum_F() { - CPPUNIT_ASSERT(Float::isNaN(Math::signum(Float::NaN))); - CPPUNIT_ASSERT_EQUAL(Float::floatToIntBits(0.0f), - Float::floatToIntBits(Math::signum(0.0f))); - CPPUNIT_ASSERT_EQUAL(Float::floatToIntBits(+0.0f), - Float::floatToIntBits(Math::signum(+0.0f))); - CPPUNIT_ASSERT_EQUAL(Float::floatToIntBits(-0.0f), - Float::floatToIntBits(Math::signum(-0.0f))); - - CPPUNIT_ASSERT_EQUAL(1.0f, Math::signum(253681.2187962f)); - CPPUNIT_ASSERT_EQUAL(-1.0f, Math::signum(-125874693.56f)); - CPPUNIT_ASSERT_EQUAL(1.0f, Math::signum(1.2587E-11f)); - CPPUNIT_ASSERT_EQUAL(-1.0f, Math::signum(-1.2587E-11f)); - - CPPUNIT_ASSERT_EQUAL(1.0f, Math::signum(Float::MAX_VALUE)); - CPPUNIT_ASSERT_EQUAL(1.0f, Math::signum(Float::MIN_VALUE)); - CPPUNIT_ASSERT_EQUAL(-1.0f, Math::signum(-Float::MAX_VALUE)); - CPPUNIT_ASSERT_EQUAL(-1.0f, Math::signum(-Float::MIN_VALUE)); - CPPUNIT_ASSERT_EQUAL(1.0f, Math::signum(Float::POSITIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL(-1.0f, Math::signum(Float::NEGATIVE_INFINITY)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_sinD() { - // Test for method double decaf.lang.Math::sin(double) - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect answer", - 0.0, Math::sin(0)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect answer", - 0.8414709848078965, Math::sin(1)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_sinh_D() { - // Test for special situations - CPPUNIT_ASSERT_MESSAGE("Should return NaN", Double::isNaN(Math::sinh(Double::NaN))); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, Math::sinh(Double::POSITIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return NEGATIVE_INFINITY", - Double::NEGATIVE_INFINITY, Math::sinh(Double::NEGATIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL(Double::doubleToLongBits(0.0), - Double::doubleToLongBits(Math::sinh(0.0))); - CPPUNIT_ASSERT_EQUAL(Double::doubleToLongBits(+0.0), - Double::doubleToLongBits(Math::sinh(+0.0))); - CPPUNIT_ASSERT_EQUAL(Double::doubleToLongBits(-0.0), - Double::doubleToLongBits(Math::sinh(-0.0))); - - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, Math::sinh(1234.56)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return NEGATIVE_INFINITY", - Double::NEGATIVE_INFINITY, Math::sinh(-1234.56)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 1.0000000000001666E-6", - 1.0000000000001666E-6, Math::sinh(0.000001)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return -1.0000000000001666E-6", - -1.0000000000001666E-6, Math::sinh(-0.000001)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 5.11538644196386", - 5.11538644196386, Math::sinh( 2.33482 ) ); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return POSITIVE_INFINITY", - Double::POSITIVE_INFINITY, Math::sinh(Double::MAX_VALUE)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 4.9E-324", 4.9E-324, - Math::sinh(Double::MIN_VALUE)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_sqrtD() { - // Test for method double decaf.lang.Math::sqrt(double) - CPPUNIT_ASSERT_EQUAL_MESSAGE( - "Incorrect root returned2", 7.0, Math::sqrt(49.0) ); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_tanD() { - // Test for method double decaf.lang.Math::tan(double) - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect answer", - 0.0, Math::tan(0)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Incorrect answer", - 1.5574077246549023, Math::tan(1)); - -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_tanh_D() { - // Test for special situations - CPPUNIT_ASSERT_MESSAGE("Should return NaN", Double::isNaN(Math::tanh(Double::NaN))); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return +1.0", +1.0, - Math::tanh(Double::POSITIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return -1.0", -1.0, - Math::tanh(Double::NEGATIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL(Double::doubleToLongBits(0.0), - Double::doubleToLongBits(Math::tanh(0.0))); - CPPUNIT_ASSERT_EQUAL(Double::doubleToLongBits(+0.0), - Double::doubleToLongBits(Math::tanh(+0.0))); - CPPUNIT_ASSERT_EQUAL(Double::doubleToLongBits(-0.0), - Double::doubleToLongBits(Math::tanh(-0.0))); - - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 1.0", 1.0, Math::tanh(1234.56)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return -1.0", -1.0, Math::tanh(-1234.56)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 9.999999999996666E-7", - 9.999999999996666E-7, Math::tanh(0.000001)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 0.981422884124941", 0.981422884124941, - Math::tanh(2.33482)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 1.0", - 1.0, Math::tanh(Double::MAX_VALUE)); - - CPPUNIT_ASSERT_EQUAL_MESSAGE("Should return 4.9E-324", 4.9E-324, - Math::tanh(Double::MIN_VALUE)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_random() { - // There isn't a place for these tests so just stick them here - CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong value E", - 4613303445314885481LL, Double::doubleToLongBits(Math::E)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Wrong value PI", - 4614256656552045848LL, Double::doubleToLongBits(Math::PI)); - - for (int i = 500; i >= 0; i--) { - double d = Math::random(); - CPPUNIT_ASSERT_MESSAGE("Generated number is out of range: ", - d >= 0.0 && d < 1.0); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_toRadiansD() { - for (double d = 500; d >= 0; d -= 1.0) { - double converted = Math::toDegrees(Math::toRadians(d)); - CPPUNIT_ASSERT_MESSAGE("Converted number not equal to original. d ", - converted >= d * 0.99999999 && converted <= d * 1.00000001); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_toDegreesD() { - for (double d = 500; d >= 0; d -= 1.0) { - double converted = Math::toRadians(Math::toDegrees(d)); - CPPUNIT_ASSERT_MESSAGE("Converted number not equal to original. d ", - converted >= d * 0.99999999 && converted <= d * 1.00000001); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_ulp_D() { - // Test for special cases - CPPUNIT_ASSERT_MESSAGE("Should return NaN", Double::isNaN(Math::ulp(Double::NaN))); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", Double::POSITIVE_INFINITY, - Math::ulp(Double::POSITIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", Double::POSITIVE_INFINITY, - Math::ulp(Double::NEGATIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", - Double::MIN_VALUE, Math::ulp(0.0) ); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", Double::MIN_VALUE, - Math::ulp(+0.0)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", Double::MIN_VALUE, - Math::ulp(-0.0)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", Math::pow(2, 971), - Math::ulp(Double::MAX_VALUE)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", Math::pow(2, 971), - Math::ulp(-Double::MAX_VALUE)); - - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", - Double::MIN_VALUE, Math::ulp(Double::MIN_VALUE) ); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", - Double::MIN_VALUE, Math::ulp(-Double::MIN_VALUE) ); - - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", 2.220446049250313E-16, - Math::ulp(1.0)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", 2.220446049250313E-16, - Math::ulp(-1.0)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", 2.2737367544323206E-13, - Math::ulp(1153.0)); -} - -//////////////////////////////////////////////////////////////////////////////// -void MathTest::test_ulp_f() { - - // Test for special cases - CPPUNIT_ASSERT_MESSAGE("Should return NaN", Float::isNaN(Math::ulp(Float::NaN))); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", - Float::POSITIVE_INFINITY, Math::ulp(Float::POSITIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", - Float::POSITIVE_INFINITY, Math::ulp(Float::NEGATIVE_INFINITY)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", - Float::MIN_VALUE, Math::ulp(0.0f)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", Float::MIN_VALUE, Math - ::ulp(+0.0f)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", - Math::ulp(-0.0f), Float::MIN_VALUE ); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", - 2.028241E31f, Math::ulp(Float::MAX_VALUE)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", - 2.028241E31f, Math::ulp(-Float::MAX_VALUE)); - - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", - 1.4E-45f, Math::ulp( Float::MIN_VALUE ) ); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", - 1.4E-45f, Math::ulp( -Float::MIN_VALUE ) ); - - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", - 1.1920929E-7f, Math::ulp(1.0f)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", 1.1920929E-7f, - Math::ulp(-1.0f)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", - 1.2207031E-4f, Math::ulp(1153.0f)); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Returned incorrect value", - 5.6E-45f, Math::ulp(9.403954E-38f) ); -} -
diff --git a/src/decaf/src/test/decaf/lang/MathTest.h b/src/decaf/src/test/decaf/lang/MathTest.h deleted file mode 100644 index 9edf228..0000000 --- a/src/decaf/src/test/decaf/lang/MathTest.h +++ /dev/null
@@ -1,136 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_MATHTEST_H_ -#define _DECAF_LANG_MATHTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -namespace decaf{ -namespace lang{ - - class MathTest : public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( MathTest ); - CPPUNIT_TEST( test_absD ); - CPPUNIT_TEST( test_absF ); - CPPUNIT_TEST( test_absI ); - CPPUNIT_TEST( test_absJ ); - CPPUNIT_TEST( test_acosD ); - CPPUNIT_TEST( test_asinD ); - CPPUNIT_TEST( test_atanD ); - CPPUNIT_TEST( test_atan2DD ); - CPPUNIT_TEST( test_cbrt_D ); - CPPUNIT_TEST( test_ceilD ); - CPPUNIT_TEST( test_cosD ); - CPPUNIT_TEST( test_cosh_D ); - CPPUNIT_TEST( test_expD ); - CPPUNIT_TEST( test_expm1_D ); - CPPUNIT_TEST( test_floorD ); - CPPUNIT_TEST( test_hypot_DD ); - CPPUNIT_TEST( test_IEEEremainderDD ); - CPPUNIT_TEST( test_logD ); - CPPUNIT_TEST( test_log10_D ); - CPPUNIT_TEST( test_log1p_D ); - CPPUNIT_TEST( test_maxDD ); - CPPUNIT_TEST( test_maxFF ); - CPPUNIT_TEST( test_maxII ); - CPPUNIT_TEST( test_maxJJ ); - CPPUNIT_TEST( test_minDD ); - CPPUNIT_TEST( test_minFF ); - CPPUNIT_TEST( test_minII ); - CPPUNIT_TEST( test_minJJ ); - CPPUNIT_TEST( test_powDD ); - CPPUNIT_TEST( test_rintD ); - CPPUNIT_TEST( test_roundD ); - CPPUNIT_TEST( test_roundF ); - CPPUNIT_TEST( test_signum_D ); - CPPUNIT_TEST( test_signum_F ); - CPPUNIT_TEST( test_sinD ); - CPPUNIT_TEST( test_sinh_D ); - CPPUNIT_TEST( test_sqrtD ); - CPPUNIT_TEST( test_tanD ); - CPPUNIT_TEST( test_tanh_D ); - CPPUNIT_TEST( test_random ); - CPPUNIT_TEST( test_toRadiansD ); - CPPUNIT_TEST( test_toDegreesD ); - CPPUNIT_TEST( test_ulp_D ); - CPPUNIT_TEST( test_ulp_f ); - CPPUNIT_TEST_SUITE_END(); - - private: - - double HYP; - double OPP; - double ADJ; - - public: - - MathTest(); - virtual ~MathTest() {} - - virtual void test_absD(); - virtual void test_absF(); - virtual void test_absI(); - virtual void test_absJ(); - virtual void test_acosD(); - virtual void test_asinD(); - virtual void test_atanD(); - virtual void test_atan2DD(); - virtual void test_cbrt_D(); - virtual void test_ceilD(); - virtual void test_cosD(); - virtual void test_cosh_D(); - virtual void test_expD(); - virtual void test_expm1_D(); - virtual void test_floorD(); - virtual void test_hypot_DD(); - virtual void test_IEEEremainderDD(); - virtual void test_logD(); - virtual void test_log10_D(); - virtual void test_log1p_D(); - virtual void test_maxDD(); - virtual void test_maxFF(); - virtual void test_maxII(); - virtual void test_maxJJ(); - virtual void test_minDD(); - virtual void test_minFF(); - virtual void test_minII(); - virtual void test_minJJ(); - virtual void test_powDD(); - virtual void test_rintD(); - virtual void test_roundD(); - virtual void test_roundF(); - virtual void test_signum_D(); - virtual void test_signum_F(); - virtual void test_sinD(); - virtual void test_sinh_D(); - virtual void test_sqrtD(); - virtual void test_tanD(); - virtual void test_tanh_D(); - virtual void test_random(); - virtual void test_toRadiansD(); - virtual void test_toDegreesD(); - virtual void test_ulp_D(); - virtual void test_ulp_f(); - - }; - -}} - -#endif /*_DECAF_LANG_MATHTEST_H_*/
diff --git a/src/decaf/src/test/decaf/lang/ShortTest.cpp b/src/decaf/src/test/decaf/lang/ShortTest.cpp deleted file mode 100644 index f43669c..0000000 --- a/src/decaf/src/test/decaf/lang/ShortTest.cpp +++ /dev/null
@@ -1,80 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ShortTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -ShortTest::ShortTest() { -} - -//////////////////////////////////////////////////////////////////////////////// -void ShortTest::test() { - - Short short1( 65 ); - - CPPUNIT_ASSERT( short1.byteValue() == 65 ); - CPPUNIT_ASSERT( short1.shortValue() == 65 ); - CPPUNIT_ASSERT( short1.intValue() == 65 ); - CPPUNIT_ASSERT( short1.longValue() == 65 ); - CPPUNIT_ASSERT( short1.floatValue() == 65.0f ); - CPPUNIT_ASSERT( short1.doubleValue() == 65.0 ); - - CPPUNIT_ASSERT( short1.toString() == "65" ); - CPPUNIT_ASSERT( short1.toString( 99 ) == "99" ); - - CPPUNIT_ASSERT( Short::reverseBytes( (short)0xFF00 ) == (short)0x00FF ); - CPPUNIT_ASSERT( Short::reverseBytes( (short)0x0F00 ) == (short)0x000F ); - CPPUNIT_ASSERT( Short::reverseBytes( (short)0xDE00 ) == (short)0x00DE ); - CPPUNIT_ASSERT( Short::reverseBytes( (short)0x00AB ) == (short)0xAB00 ); - - Short short2( 255 ); - - // Comparison functions - CPPUNIT_ASSERT( short2.compareTo( 256 ) == -1 ); - CPPUNIT_ASSERT( short2.compareTo( 255 ) == 0 ); - CPPUNIT_ASSERT( short2.compareTo( 254 ) == 1 ); - CPPUNIT_ASSERT( short2.equals( Short( 255 ) ) == true ); - CPPUNIT_ASSERT( short2.compareTo( Short( 255 ) ) == 0 ); - CPPUNIT_ASSERT( short2 == Short( 255 ) ); - - // decode - CPPUNIT_ASSERT( short2 == Short::decode( "255" ) ); - CPPUNIT_ASSERT( short2 == Short::decode( "0xFF" ) ); - CPPUNIT_ASSERT( short2 == Short::decode( "255" ) ); - CPPUNIT_ASSERT( Short::decode( "-255" ) == -255 ); - - // parseInt - CPPUNIT_ASSERT( Short::parseShort( "255") == 255 ); - CPPUNIT_ASSERT( Short::parseShort( "255", 10 ) == 255 ); - CPPUNIT_ASSERT( Short::parseShort( "255", 11 ) != 255 ); - CPPUNIT_ASSERT( Short::parseShort( "FF", 16 ) == 255 ); - - // valueOf - CPPUNIT_ASSERT( Short::valueOf( 255 ) == 255 ); - CPPUNIT_ASSERT( Short::valueOf( "255" ) == 255 ); - CPPUNIT_ASSERT( Short::valueOf( "255", 10 ) == 255 ); - CPPUNIT_ASSERT( (Short::valueOf( "255", 11 )).shortValue() != 255 ); - CPPUNIT_ASSERT( Short::valueOf( "FF", 16 ) == 255 ); - - CPPUNIT_ASSERT( Short::toString( 255 ) == "255" ); - -} -
diff --git a/src/decaf/src/test/decaf/lang/ShortTest.h b/src/decaf/src/test/decaf/lang/ShortTest.h deleted file mode 100644 index c9dba63..0000000 --- a/src/decaf/src/test/decaf/lang/ShortTest.h +++ /dev/null
@@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_SHORTTEST_H_ -#define _DECAF_LANG_SHORTTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/lang/Short.h> - -namespace decaf{ -namespace lang{ - - class ShortTest : public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( ShortTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST_SUITE_END(); - - public: - - ShortTest(); - virtual ~ShortTest() {} - - void test(); - - }; - -}} - -#endif /*_DECAF_LANG_SHORTTEST_H_*/
diff --git a/src/decaf/src/test/decaf/lang/SystemTest.cpp b/src/decaf/src/test/decaf/lang/SystemTest.cpp deleted file mode 100644 index 258dc52..0000000 --- a/src/decaf/src/test/decaf/lang/SystemTest.cpp +++ /dev/null
@@ -1,81 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "SystemTest.h" - -#include <decaf/lang/System.h> -#include <decaf/util/Map.h> - -using namespace std; -using namespace decaf; -using namespace decaf::util; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -SystemTest::SystemTest() { -} - -//////////////////////////////////////////////////////////////////////////////// -void SystemTest::test_getenv() { - - CPPUNIT_ASSERT( System::getenv( "PATH" ) != "" ); - - try { - System::getenv( "PATH_ASDFGHJKL" ); - CPPUNIT_ASSERT( false ); - } catch (...) { - } -} - -//////////////////////////////////////////////////////////////////////////////// -void SystemTest::test_getenv2() { - - Map<std::string, std::string> values = System::getenv(); - - CPPUNIT_ASSERT( values.size() != 0 ); - CPPUNIT_ASSERT( values.containsKey( "PATH" ) ); - CPPUNIT_ASSERT( !values.containsKey( "PATH_ASDFGHJKL" ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SystemTest::test_setenv() { - - Map<std::string, std::string> values1 = System::getenv(); - CPPUNIT_ASSERT( !values1.containsKey( "PATH_ASDFGHJKL" ) ); - System::setenv( "PATH_ASDFGHJKL", "test" ); - Map<std::string, std::string> values2 = System::getenv(); - CPPUNIT_ASSERT( values2.containsKey( "PATH_ASDFGHJKL" ) ); - System::unsetenv( "PATH_ASDFGHJKL" ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SystemTest::test_unsetenv() { - - Map<std::string, std::string> values1 = System::getenv(); - CPPUNIT_ASSERT( !values1.containsKey( "PATH_ASDFGHJKL" ) ); - System::setenv( "PATH_ASDFGHJKL", "test" ); - Map<std::string, std::string> values2 = System::getenv(); - CPPUNIT_ASSERT( values2.containsKey( "PATH_ASDFGHJKL" ) ); - System::unsetenv( "PATH_ASDFGHJKL" ); - Map<std::string, std::string> values3 = System::getenv(); - CPPUNIT_ASSERT( !values3.containsKey( "PATH_ASDFGHJKL" ) ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SystemTest::test_currentTimeMillis() { - CPPUNIT_ASSERT( System::currentTimeMillis() != 0 ); -}
diff --git a/src/decaf/src/test/decaf/lang/SystemTest.h b/src/decaf/src/test/decaf/lang/SystemTest.h deleted file mode 100644 index b0c03b8..0000000 --- a/src/decaf/src/test/decaf/lang/SystemTest.h +++ /dev/null
@@ -1,52 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_SYSTEMTEST_H_ -#define _DECAF_LANG_SYSTEMTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -namespace decaf{ -namespace lang{ - - class SystemTest : public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE( SystemTest ); - CPPUNIT_TEST( test_getenv ); - CPPUNIT_TEST( test_getenv2 ); - CPPUNIT_TEST( test_setenv ); - CPPUNIT_TEST( test_unsetenv ); - CPPUNIT_TEST( test_currentTimeMillis ); - CPPUNIT_TEST_SUITE_END(); - - public: - - SystemTest(); - virtual ~SystemTest() {} - - void test_getenv(); - void test_getenv2(); - void test_setenv(); - void test_unsetenv(); - void test_currentTimeMillis(); - - }; - -}} - -#endif /*_DECAF_LANG_SYSTEMTEST_H_*/
diff --git a/src/decaf/src/test/decaf/lang/ThreadTest.cpp b/src/decaf/src/test/decaf/lang/ThreadTest.cpp deleted file mode 100644 index 2a5e0d5..0000000 --- a/src/decaf/src/test/decaf/lang/ThreadTest.cpp +++ /dev/null
@@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ThreadTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::lang; - -void ThreadTest::testDelegate(){ - - Delegate test; - int initialValue = test.getStuff(); - - Thread thread( &test ); - thread.start(); - thread.join(); - - int finalValue = test.getStuff(); - - // The values should be different - this proves - // that the runnable was run. - CPPUNIT_ASSERT( finalValue != initialValue ); -} - -void ThreadTest::testDerived(){ - - Derived test; - int initialValue = test.getStuff(); - - test.start(); - test.join(); - - int finalValue = test.getStuff(); - - // The values should be different - this proves - // that the runnable was run. - CPPUNIT_ASSERT( finalValue != initialValue ); -} - -void ThreadTest::testJoin(){ - - JoinTest test; - - time_t startTime = time( NULL ); - test.start(); - test.join(); - time_t endTime = time( NULL ); - - time_t delta = endTime - startTime; - - // Should be about 5 seconds that elapsed. - CPPUNIT_ASSERT( delta >= 1 && delta <= 3 ); -}
diff --git a/src/decaf/src/test/decaf/lang/ThreadTest.h b/src/decaf/src/test/decaf/lang/ThreadTest.h deleted file mode 100644 index b91f688..0000000 --- a/src/decaf/src/test/decaf/lang/ThreadTest.h +++ /dev/null
@@ -1,108 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_LANG_THREADTEST_H_ -#define _DECAF_LANG_THREADTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/lang/Thread.h> -#include <time.h> - -namespace decaf{ -namespace lang{ - - class ThreadTest : public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE( ThreadTest ); - CPPUNIT_TEST( testDelegate ); - CPPUNIT_TEST( testDerived ); - CPPUNIT_TEST( testJoin ); - CPPUNIT_TEST_SUITE_END(); - - public: - - class Delegate : public Runnable{ - private: - - int stuff; - - public: - - Delegate(){ stuff = 0; } - virtual ~Delegate(){} - - int getStuff(){ - return stuff; - } - - virtual void run(){ - stuff = 1; - } - - }; - - class Derived : public Thread{ - private: - - int stuff; - - public: - - Derived(){ stuff = 0; } - virtual ~Derived(){} - - int getStuff(){ - return stuff; - } - - virtual void run(){ - stuff = 1; - } - - }; - - class JoinTest : public Thread{ - public: - - JoinTest(){} - virtual ~JoinTest(){} - - virtual void run(){ - - // Sleep for 2 seconds. - Thread::sleep( 2000 ); - } - - }; - - public: - - virtual ~ThreadTest(){} - - virtual void setUp(){} - virtual void tearDown(){} - - void testDelegate(); - void testDerived(); - void testJoin(); - }; - -}} - -#endif /*_DECAF_LANG_THREADTEST_H_*/
diff --git a/src/decaf/src/test/decaf/net/SocketFactoryTest.cpp b/src/decaf/src/test/decaf/net/SocketFactoryTest.cpp deleted file mode 100644 index 883fb78..0000000 --- a/src/decaf/src/test/decaf/net/SocketFactoryTest.cpp +++ /dev/null
@@ -1,147 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "SocketFactoryTest.h" - -#include <decaf/util/Properties.h> -#include <decaf/net/SocketFactory.h> -#include <decaf/net/TcpSocket.h> - -using namespace decaf; -using namespace decaf::net; -using namespace decaf::util; -using namespace decaf::lang; -using namespace decaf::util::concurrent; - -//////////////////////////////////////////////////////////////////////////////// -void SocketFactoryTest::test() -{ - try - { - MyServerThread serverThread; - serverThread.start(); - - Thread::sleep( 500 ); - - util::Properties properties; - - std::ostringstream ostream; - - ostream << "127.0.0.1:" << port; - - properties.setProperty("soLinger", "false"); - - Socket* client = SocketFactory::createSocket( - ostream.str(), properties ); - - synchronized(&serverThread.mutex) - { - if(serverThread.getNumClients() != 1) - { - serverThread.mutex.wait(10000); - } - } - - CPPUNIT_ASSERT( client->isConnected() ); - - CPPUNIT_ASSERT( serverThread.getNumClients() == 1 ); - - client->close(); - - synchronized(&serverThread.mutex) - { - if(serverThread.getNumClients() != 0) - { - serverThread.mutex.wait(10000); - } - } - - CPPUNIT_ASSERT( serverThread.getNumClients() == 0 ); - - serverThread.stop(); - serverThread.join(); - - delete client; - } - catch(lang::Exception ex) - { - std::cout << "SocketFactoryTest::test - Caught Exception." << std::endl; - ex.printStackTrace(); - CPPUNIT_ASSERT( false ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void SocketFactoryTest::testNoDelay() -{ - try - { - MyServerThread serverThread; - serverThread.start(); - - Thread::sleep( 40 ); - - util::Properties properties; - - std::ostringstream ostream; - - ostream << "127.0.0.1:" << port; - - properties.setProperty( "soLinger", "false" ); - properties.setProperty( "tcpNoDelay", "true" ); - - Socket* client = SocketFactory::createSocket( - ostream.str(), properties ); - - TcpSocket* tcpSock = dynamic_cast<TcpSocket*>( client ); - CPPUNIT_ASSERT( tcpSock != NULL ); - CPPUNIT_ASSERT( tcpSock->getTcpNoDelay() == true ); - - synchronized(&serverThread.mutex) - { - if(serverThread.getNumClients() != 1) - { - serverThread.mutex.wait(1000); - } - } - - CPPUNIT_ASSERT( client->isConnected() ); - - CPPUNIT_ASSERT( serverThread.getNumClients() == 1 ); - - client->close(); - - synchronized(&serverThread.mutex) - { - if(serverThread.getNumClients() != 0) - { - serverThread.mutex.wait(1000); - } - } - - CPPUNIT_ASSERT( serverThread.getNumClients() == 0 ); - - serverThread.stop(); - serverThread.join(); - - delete client; - } - catch(lang::Exception ex) - { - CPPUNIT_ASSERT( false ); - } -}
diff --git a/src/decaf/src/test/decaf/net/SocketFactoryTest.h b/src/decaf/src/test/decaf/net/SocketFactoryTest.h deleted file mode 100644 index 8562bfb..0000000 --- a/src/decaf/src/test/decaf/net/SocketFactoryTest.h +++ /dev/null
@@ -1,148 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_SOCKETFACTORYTEST_H_ -#define _DECAF_NET_SOCKETFACTORYTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/net/Socket.h> -#include <decaf/net/ServerSocket.h> -#include <decaf/util/concurrent/Concurrent.h> -#include <decaf/util/concurrent/Mutex.h> -#include <decaf/lang/Thread.h> - -#include <sstream> - -namespace decaf{ -namespace net{ - - class SocketFactoryTest : public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( SocketFactoryTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST( testNoDelay ); - CPPUNIT_TEST_SUITE_END(); - - static const int port = 23232; - - class MyServerThread : public lang::Thread{ - private: - - bool done; - int numClients; - std::string lastMessage; - - public: - - util::concurrent::Mutex mutex; - - public: - - MyServerThread(){ - done = false; - numClients = 0; - } - virtual ~MyServerThread(){ - stop(); - } - - std::string getLastMessage(){ - return lastMessage; - } - - int getNumClients(){ - return numClients; - } - - virtual void stop(){ - done = true; - } - - virtual void run(){ - try{ - unsigned char buf[1000]; - - ServerSocket server; - server.bind( "127.0.0.1", port ); - - net::Socket* socket = server.accept(); - server.close(); - - socket->setSoLinger( false ); - - synchronized(&mutex) - { - numClients++; - mutex.notifyAll(); - } - - while( !done && socket != NULL ){ - - io::InputStream* stream = socket->getInputStream(); - memset( buf, 0, 1000 ); - try{ - if( stream->read( buf, 1000 ) == -1 ) { - done = true; - continue; - } - - lastMessage = (char*)buf; - - if( strcmp( (char*)buf, "reply" ) == 0 ){ - io::OutputStream* output = socket->getOutputStream(); - output->write( (unsigned char*)"hello", strlen("hello" ) ); - } - - }catch( io::IOException& ex ){ - done = true; - } - } - - socket->close(); - delete socket; - - numClients--; - - synchronized(&mutex) - { - mutex.notifyAll(); - } - - }catch( io::IOException& ex ){ - printf("%s\n", ex.getMessage().c_str() ); - CPPUNIT_ASSERT( false ); - }catch( ... ){ - CPPUNIT_ASSERT( false ); - } - } - }; - - public: - - SocketFactoryTest() {} - virtual ~SocketFactoryTest() {} - - void test(); - void testNoDelay(); - - }; - -}} - -#endif /*_DECAF_NET_SOCKETFACTORYTEST_H_*/
diff --git a/src/decaf/src/test/decaf/net/SocketTest.cpp b/src/decaf/src/test/decaf/net/SocketTest.cpp deleted file mode 100644 index 97122bf..0000000 --- a/src/decaf/src/test/decaf/net/SocketTest.cpp +++ /dev/null
@@ -1,280 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "SocketTest.h" - -#include <decaf/net/TcpSocket.h> - -using namespace std; -using namespace decaf; -using namespace decaf::net; -using namespace decaf::util; -using namespace decaf::lang; - -//////////////////////////////////////////////////////////////////////////////// -void SocketTest::testConnect() { - - try{ - - MyServerThread serverThread; - serverThread.start(); - - Thread::sleep( 40 ); - - TcpSocket client; - - client.connect("127.0.0.1", port); - client.setSoLinger( false ); - - synchronized(&serverThread.mutex) - { - if(serverThread.getNumClients() != 1) - { - serverThread.mutex.wait(1000); - } - } - - CPPUNIT_ASSERT( serverThread.getNumClients() == 1 ); - - client.close(); - - synchronized(&serverThread.mutex) - { - if(serverThread.getNumClients() != 0) - { - serverThread.mutex.wait(1000); - } - } - - CPPUNIT_ASSERT( serverThread.getNumClients() == 0 ); - - serverThread.stop(); - serverThread.join(); - - }catch( io::IOException& ex ){ - printf( "%s\n", ex.getMessage().c_str() ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void SocketTest::testTx() { - - try{ - - MyServerThread serverThread; - serverThread.start(); - - Thread::sleep( 10 ); - - TcpSocket client; - - client.connect("127.0.0.1", port); - client.setSoLinger( false ); - - synchronized(&serverThread.mutex) - { - if(serverThread.getNumClients() != 1) - { - serverThread.mutex.wait(1000); - } - } - - CPPUNIT_ASSERT( serverThread.getNumClients() == 1 ); - - io::OutputStream* stream = client.getOutputStream(); - - std::string msg = "don't reply"; - stream->write( (unsigned char*)msg.c_str(), msg.length() ); - - Thread::sleep( 10 ); - - CPPUNIT_ASSERT( serverThread.getLastMessage() == msg ); - - client.close(); - - synchronized(&serverThread.mutex) - { - if(serverThread.getNumClients() != 0) - { - serverThread.mutex.wait(1000); - } - } - - CPPUNIT_ASSERT( serverThread.getNumClients() == 0 ); - - serverThread.stop(); - serverThread.join(); - - }catch( io::IOException& ex ){ - printf( "%s\n", ex.getMessage().c_str() ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void SocketTest::testTrx() { - - try{ - - MyServerThread serverThread; - serverThread.start(); - - Thread::sleep( 10 ); - - TcpSocket client; - - client.connect("127.0.0.1", port); - client.setSoLinger(false); - - synchronized(&serverThread.mutex) - { - if(serverThread.getNumClients() != 1) - { - serverThread.mutex.wait(1000); - } - } - - CPPUNIT_ASSERT( serverThread.getNumClients() == 1 ); - - io::OutputStream* stream = client.getOutputStream(); - - std::string msg = "reply"; - stream->write( (unsigned char*)msg.c_str(), msg.length() ); - - synchronized(&serverThread.mutex) - { - serverThread.mutex.wait(300); - } - - unsigned char buf[500]; - memset( buf, 0, 500 ); - io::InputStream* istream = client.getInputStream(); - std::size_t numRead = istream->read( buf, 500 ); - CPPUNIT_ASSERT( numRead == 5 ); - CPPUNIT_ASSERT( strcmp( (char*)buf, "hello" ) == 0 ); - - client.close(); - - serverThread.stop(); - serverThread.join(); - - }catch( io::IOException& ex ){ - printf( "%s\n", ex.getMessage().c_str() ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void SocketTest::testRxFail() { - - try{ - - MyServerThread serverThread; - serverThread.start(); - - Thread::sleep( 10 ); - - TcpSocket client; - - client.connect("127.0.0.1", port); - client.setSoLinger( false ); - - synchronized(&serverThread.mutex) - { - if(serverThread.getNumClients() != 1) - { - serverThread.mutex.wait(1000); - } - } - - CPPUNIT_ASSERT( serverThread.getNumClients() == 1 ); - - // Give it a chance to get to its read call - Thread::sleep( 100 ); - - client.close(); - - synchronized(&serverThread.mutex) - { - if(serverThread.getNumClients() != 0) - { - serverThread.mutex.wait(1000); - } - } - - CPPUNIT_ASSERT( serverThread.getNumClients() == 0 ); - - serverThread.stop(); - serverThread.join(); - - }catch( io::IOException& ex ){ - printf( "%s\n", ex.getMessage().c_str() ); - } -} - -//////////////////////////////////////////////////////////////////////////////// -void SocketTest::testTrxNoDelay() { - - try{ - - MyServerThread serverThread; - serverThread.start(); - - Thread::sleep( 10 ); - - TcpSocket client; - - client.connect("127.0.0.1", port); - client.setSoLinger(false); - client.setTcpNoDelay(true); - - CPPUNIT_ASSERT( client.getTcpNoDelay() == true ); - - synchronized(&serverThread.mutex) - { - if(serverThread.getNumClients() != 1) - { - serverThread.mutex.wait(1000); - } - } - - CPPUNIT_ASSERT( serverThread.getNumClients() == 1 ); - - io::OutputStream* stream = client.getOutputStream(); - - std::string msg = "reply"; - stream->write( (unsigned char*)msg.c_str(), msg.length() ); - - synchronized(&serverThread.mutex) - { - serverThread.mutex.wait(300); - } - - unsigned char buf[500]; - memset( buf, 0, 500 ); - io::InputStream* istream = client.getInputStream(); - std::size_t numRead = istream->read( buf, 500 ); - CPPUNIT_ASSERT( numRead == 5 ); - CPPUNIT_ASSERT( strcmp( (char*)buf, "hello" ) == 0 ); - - client.close(); - - serverThread.stop(); - serverThread.join(); - - }catch( io::IOException& ex ){ - printf( "%s\n", ex.getMessage().c_str() ); - } -}
diff --git a/src/decaf/src/test/decaf/net/SocketTest.h b/src/decaf/src/test/decaf/net/SocketTest.h deleted file mode 100644 index b9bba61..0000000 --- a/src/decaf/src/test/decaf/net/SocketTest.h +++ /dev/null
@@ -1,164 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_SOCKETTEST_H_ -#define _DECAF_NET_SOCKETTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/net/ServerSocket.h> -#include <decaf/util/concurrent/Concurrent.h> -#include <decaf/util/concurrent/Mutex.h> -#include <decaf/lang/Thread.h> -#include <list> -#include <string.h> - -namespace decaf{ -namespace net{ - - class SocketTest : public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE( SocketTest ); - CPPUNIT_TEST( testConnect ); - CPPUNIT_TEST( testTx ); - CPPUNIT_TEST( testTrx ); - CPPUNIT_TEST( testTrxNoDelay ); - CPPUNIT_TEST( testRxFail ); - CPPUNIT_TEST_SUITE_END(); - - public: - - static const int port = 23232; - - class MyServerThread : public lang::Thread{ - private: - - bool done; - int numClients; - std::string lastMessage; - - public: - - util::concurrent::Mutex mutex; - - public: - - MyServerThread(){ - done = false; - numClients = 0; - } - - virtual ~MyServerThread(){ - stop(); - } - - std::string getLastMessage(){ - return lastMessage; - } - - int getNumClients(){ - return numClients; - } - - virtual void stop(){ - done = true; - } - - virtual void run(){ - try{ - unsigned char buf[1000]; - - ServerSocket server; - server.bind( "127.0.0.1", port ); - - Socket* socket = server.accept(); - server.close(); - - //socket->setSoTimeout( 10 ); - socket->setSoLinger( false ); - numClients++; - - synchronized(&mutex) - { - mutex.notifyAll(); - } - - while( !done && socket != NULL ){ - - io::InputStream* stream = socket->getInputStream(); - - memset( buf, 0, 1000 ); - try{ - - if( stream->read( buf, 1000 ) == -1 ) { - done = true; - continue; - } - - lastMessage = (char*)buf; - - if( strcmp( (char*)buf, "reply" ) == 0 ){ - io::OutputStream* output = socket->getOutputStream(); - output->write( (unsigned char*)"hello", strlen("hello" ) ); - - synchronized(&mutex) - { - mutex.notifyAll(); - } - } - - }catch( io::IOException& ex ){ - done = true; - } - } - - socket->close(); - delete socket; - - numClients--; - - synchronized(&mutex) - { - mutex.notifyAll(); - } - - }catch( io::IOException& ex ){ - printf("%s\n", ex.getMessage().c_str() ); - CPPUNIT_ASSERT( false ); - }catch( ... ){ - CPPUNIT_ASSERT( false ); - } - } - - }; - - public: - - virtual ~SocketTest() {} - - void testConnect(); - void testTx(); - void testTrx(); - void testRxFail(); - void testTrxNoDelay(); - - }; - -}} - -#endif /*_DECAF_NET_SOCKETTEST_H_*/
diff --git a/src/decaf/src/test/decaf/net/URISyntaxExceptionTest.cpp b/src/decaf/src/test/decaf/net/URISyntaxExceptionTest.cpp deleted file mode 100644 index 191f769..0000000 --- a/src/decaf/src/test/decaf/net/URISyntaxExceptionTest.cpp +++ /dev/null
@@ -1,42 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "URISyntaxExceptionTest.h" - -#include <decaf/net/URISyntaxException.h> - -using namespace decaf; -using namespace decaf::net; - -//////////////////////////////////////////////////////////////////////////////// -URISyntaxExceptionTest::URISyntaxExceptionTest() { -} - -//////////////////////////////////////////////////////////////////////////////// -void URISyntaxExceptionTest::test() { - - URISyntaxException e1( __FILE__, __LINE__, "str", "problem", 2); - CPPUNIT_ASSERT_MESSAGE("returned incorrect reason", - e1.getReason() == "problem" ); - CPPUNIT_ASSERT_MESSAGE("returned incorrect input", e1.getInput() == "str" ); - CPPUNIT_ASSERT_MESSAGE("returned incorrect index", 2 == e1.getIndex()); - - URISyntaxException e2( __FILE__, __LINE__, "str", "problem"); - CPPUNIT_ASSERT_MESSAGE("returned incorrect reason", e2.getReason() == "problem" ); - CPPUNIT_ASSERT_MESSAGE("returned incorrect input", e2.getInput() == "str" ); - CPPUNIT_ASSERT_MESSAGE("returned incorrect index", -1 == e2.getIndex()); -}
diff --git a/src/decaf/src/test/decaf/net/URISyntaxExceptionTest.h b/src/decaf/src/test/decaf/net/URISyntaxExceptionTest.h deleted file mode 100644 index a2df0fe..0000000 --- a/src/decaf/src/test/decaf/net/URISyntaxExceptionTest.h +++ /dev/null
@@ -1,43 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_URISYNTAXEXCEPTIONTEST_H_ -#define _DECAF_NET_URISYNTAXEXCEPTIONTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -namespace decaf{ -namespace net{ - - class URISyntaxExceptionTest : public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE( URISyntaxExceptionTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST_SUITE_END(); - - public: - - URISyntaxExceptionTest(); - virtual ~URISyntaxExceptionTest() {} - - void test(); - }; - -}} - -#endif /*_DECAF_NET_URISYNTAXEXCEPTIONTEST_H_*/
diff --git a/src/decaf/src/test/decaf/net/URITest.cpp b/src/decaf/src/test/decaf/net/URITest.cpp deleted file mode 100644 index 6c89315..0000000 --- a/src/decaf/src/test/decaf/net/URITest.cpp +++ /dev/null
@@ -1,156 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "URITest.h" - -#include <decaf/net/URI.h> - -using namespace std; -using namespace decaf; -using namespace decaf::net; -using namespace decaf::lang; -using namespace decaf::lang::exceptions; - -//////////////////////////////////////////////////////////////////////////////// -URITest::URITest() { -} - -//////////////////////////////////////////////////////////////////////////////// -void URITest::test_Constructor_String() { - -// const std::string constructorTests[27] = { -// "http://user@www.google.com:45/search?q=helpinfo#somefragment", -// // http with authority, query and fragment -// "ftp://ftp.is.co.za/rfc/rfc1808.txt", // ftp -// "gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles", -// // gopher -// "mailto:mduerst@ifi.unizh.ch", // mailto -// "news:comp.infosystems.www.servers.unix", // news -// "telnet://melvyl.ucop.edu/", // telnet -// "http://123.24.17.98/test", // IPv4 authority -// "http://www.google.com:80/test",// domain name authority -// "http://joe@[3ffe:2a00:100:7031::1]:80/test", -// // IPv6 authority, with userinfo and port -// "/relative", // relative starting with / -// "//relative", // relative starting with // -// "relative", // relative with no / -// "#fragment",// relative just with fragment -// "http://user@host:80", // UI, host,port -// "http://user@host", // ui, host -// "http://host", // host -// "http://host:80", // host,port -// "http://joe@:80", // ui, port (becomes registry-based) -// "file:///foo/bar", // empty authority, non empty path -// "ht?tp://hoe@host:80", // miscellaneous tests -// "mai/lto:hey?joe#man", "http://host/a%20path#frag", -// // path with an escaped octet for space char -// "http://host/a%E2%82%ACpath#frag", -// // path with escaped octet for unicode char, not USASCII -// "http://host/a\u20ACpath#frag", -// // path with unicode char, not USASCII equivalent to -// // = "http://host/a\u0080path#frag", -// "http://host%20name/", // escaped octets in host (becomes -// // registry based) -// "http://host\u00DFname/", // unicodechar in host (becomes -// // registry based) -// // equivalent to = "http://host\u00dfname/", -// "ht123-+tp://www.google.com:80/test", // legal chars in scheme -// }; -// -// for( int i = 0; i < 27; i++ ) { -// try { -// new URI(constructorTests[i]); -// } catch ( URISyntaxException e ) { -// CPPUNIT_FAIL( string( "Failed to construct URI for: " ) + -// constructorTests[i] + " : " + -// e.getMessage() ); -// } -// } - - std::vector<const char*> constructorTestsInvalid; - // space char in path, not in escaped - constructorTestsInvalid.push_back( "http:///a path#frag" ); - // octet form, with no host - constructorTestsInvalid.push_back( "http://host/a[path#frag" ); - // an illegal char, not in escaped octet form, should throw an exception - // invalid escape sequence in path - constructorTestsInvalid.push_back( "http://host/a%path#frag" ); - // incomplete escape sequence in path - constructorTestsInvalid.push_back( "http://host/a%#frag" ); - // space char in fragment, not in - constructorTestsInvalid.push_back( "http://host#a frag" ); - // escaped octet form, no path - // illegal char in fragment - constructorTestsInvalid.push_back( "http://host/a#fr#ag" ); - // invalid escape sequence in fragment, - constructorTestsInvalid.push_back( "http:///path#fr%ag" ); - // with no host - // incomplete escape sequence in fragment - constructorTestsInvalid.push_back( "http://host/path#frag%" ); - // space char in query, not in escaped octet form - constructorTestsInvalid.push_back( "http://host/path?a query#frag" ); - // invalid escape sequence in query, no path - constructorTestsInvalid.push_back( "http://host?query%ag" ); - // incomplete escape sequence in query, with no host - constructorTestsInvalid.push_back( "http:///path?query%" ); - // invalid char in scheme specific part - constructorTestsInvalid.push_back( "mailto:user^name@fklkf.com" ); - -// for( size_t i = 0; i < constructorTestsInvalid.size(); i++ ) { -// try { -// new URI( constructorTestsInvalid[i] ); -// CPPUNIT_FAIL( string( "Failed to throw URISyntaxException for: " ) + -// constructorTestsInvalid[i] ); -// } catch( URISyntaxException e ) {} -// } - -// std::string invalid2[18] = { -// // authority validation -// "http://user@[3ffe:2x00:100:7031::1]:80/test", // malformed -// // IPv6 authority -// "http://[ipv6address]/apath#frag", // malformed ipv6 address -// "http://[ipv6address/apath#frag", // malformed ipv6 address -// "http://ipv6address]/apath#frag", // illegal char in host name -// "http://ipv6[address/apath#frag", -// "http://ipv6addr]ess/apath#frag", -// "http://ipv6address[]/apath#frag", -// // illegal char in username... -// "http://us[]er@host/path?query#frag", "http://host name/path", // illegal -// // char -// // in -// // authority -// "http://host^name#fragment", // illegal char in authority -// "telnet://us er@hostname/", // illegal char in authority -// // missing components -// "//", // Authority expected -// "ascheme://", // Authority expected -// "ascheme:", // Scheme-specific part expected -// // scheme validation -// "a scheme://reg/", // illegal char -// "1scheme://reg/", // non alpha char as 1st char -// "asche\u00dfme:ssp", // unicode char , not USASCII -// "asc%20heme:ssp" // escape octets -// }; -// -// for( int i = 0; i < 18; i++ ) { -// try { -// new URI( invalid2[i] ); -// CPPUNIT_FAIL( -// string( "Failed to throw URISyntaxException for: " ) + invalid2[i] ); -// } catch( URISyntaxException e ) {} -// } -}
diff --git a/src/decaf/src/test/decaf/net/URITest.h b/src/decaf/src/test/decaf/net/URITest.h deleted file mode 100644 index 5cf0628..0000000 --- a/src/decaf/src/test/decaf/net/URITest.h +++ /dev/null
@@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_NET_URITEST_H_ -#define _DECAF_NET_URITEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -namespace decaf{ -namespace net{ - - class URITest : public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE( URITest ); - CPPUNIT_TEST( test_Constructor_String ); - CPPUNIT_TEST_SUITE_END(); - - public: - - URITest(); - virtual ~URITest() {} - - void test_Constructor_String(); - - }; - -}} - -#endif /*_DECAF_NET_URITEST_H_*/
diff --git a/src/decaf/src/test/decaf/util/DateTest.cpp b/src/decaf/src/test/decaf/util/DateTest.cpp deleted file mode 100644 index 7d06df1..0000000 --- a/src/decaf/src/test/decaf/util/DateTest.cpp +++ /dev/null
@@ -1,42 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "DateTest.h" - -#include <decaf/util/Date.h> -#include <decaf/lang/Thread.h> - -using namespace std; -using namespace decaf; -using namespace decaf::util; -using namespace decaf::lang; - -void DateTest::test(){ - - Date date1; - CPPUNIT_ASSERT( date1.getTime() != 0 ); - - decaf::lang::Thread::sleep(55); - - Date date2; - - CPPUNIT_ASSERT( date1.before(date2) == true ); - CPPUNIT_ASSERT( date1.after(date2) == false ); - - Date date3 = date1; - CPPUNIT_ASSERT( date1.equals( date3 ) == true ); -}
diff --git a/src/decaf/src/test/decaf/util/DateTest.h b/src/decaf/src/test/decaf/util/DateTest.h deleted file mode 100644 index bd37140..0000000 --- a/src/decaf/src/test/decaf/util/DateTest.h +++ /dev/null
@@ -1,43 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_DATETEST_H_ -#define _DECAF_UTIL_DATETEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -namespace decaf{ -namespace util{ - - class DateTest : public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( DateTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST_SUITE_END(); - - public: - DateTest(){}; - virtual ~DateTest(){}; - - void test(); - - }; - -}} - -#endif /*_DECAF_UTIL_DATETEST_H_*/
diff --git a/src/decaf/src/test/decaf/util/Endian.cpp b/src/decaf/src/test/decaf/util/Endian.cpp deleted file mode 100644 index af11202..0000000 --- a/src/decaf/src/test/decaf/util/Endian.cpp +++ /dev/null
@@ -1,117 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "Endian.h" -#include <decaf/util/Config.h> -#include <string.h> - -using namespace decaf; -using namespace decaf::util; - -//////////////////////////////////////////////////////////////////////////////// -void Endian::byteSwap(unsigned char* data, int dataLength) { - - #ifdef WORDS_BIGENDIAN - return; - #endif - - for (int i = 0; i<dataLength/2; i++) { - unsigned char temp = data[i]; - data[i] = data[dataLength-1-i]; - data[dataLength-1-i] = temp; - } -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned char Endian::byteSwap( unsigned char value ){ - - #ifdef WORDS_BIGENDIAN - return value; - #endif - - return value; -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned short Endian::byteSwap( unsigned short value ){ - - #ifdef WORDS_BIGENDIAN - return value; - #endif - - return (((unsigned short)value & 0xFF00 ) >> 8 ) | - (((unsigned short)value & 0x00FF ) << 8 ); -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned int Endian::byteSwap( unsigned int value ){ - - #ifdef WORDS_BIGENDIAN - return value; - #endif - - return (((unsigned int)value & 0xFF000000 ) >> 24 ) | - (((unsigned int)value & 0x00FF0000 ) >> 8 ) | - (((unsigned int)value & 0x0000FF00 ) << 8 ) | - (((unsigned int)value & 0x000000FF ) << 24 ); -} - -//////////////////////////////////////////////////////////////////////////////// -unsigned long long Endian::byteSwap( unsigned long long value ){ - - #ifdef WORDS_BIGENDIAN - return value; - #endif - - return (((unsigned long long)value & 0xFF00000000000000ULL ) >> 56 ) | - (((unsigned long long)value & 0x00FF000000000000ULL ) >> 40 ) | - (((unsigned long long)value & 0x0000FF0000000000ULL ) >> 24 ) | - (((unsigned long long)value & 0x000000FF00000000ULL ) >> 8 ) | - (((unsigned long long)value & 0x00000000FF000000ULL ) << 8 ) | - (((unsigned long long)value & 0x0000000000FF0000ULL ) << 24 ) | - (((unsigned long long)value & 0x000000000000FF00ULL ) << 40 ) | - (((unsigned long long)value & 0x00000000000000FFULL ) << 56 ); -} - -//////////////////////////////////////////////////////////////////////////////// -float Endian::byteSwap( float value ){ - - #ifdef WORDS_BIGENDIAN - return value; - #endif - - unsigned int lvalue = 0; - memcpy( &lvalue, &value, sizeof( float ) ); - lvalue = byteSwap( lvalue ); - memcpy( &value, &lvalue, sizeof( unsigned int ) ); - return value; -} - -//////////////////////////////////////////////////////////////////////////////// -double Endian::byteSwap( double value ){ - - #ifdef WORDS_BIGENDIAN - return value; - #endif - - unsigned long long lvalue = 0; - memcpy( &lvalue, &value, sizeof( double ) ); - lvalue = byteSwap( lvalue ); - memcpy( &value, &lvalue, sizeof( unsigned long long ) ); - return value; -} -
diff --git a/src/decaf/src/test/decaf/util/Endian.h b/src/decaf/src/test/decaf/util/Endian.h deleted file mode 100644 index 6c4eb58..0000000 --- a/src/decaf/src/test/decaf/util/Endian.h +++ /dev/null
@@ -1,43 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _DECAF_UTIL_ENDIAN_H -#define _DECAF_UTIL_ENDIAN_H - -namespace decaf{ -namespace util{ - - class Endian{ - public: - - static void byteSwap(unsigned char* data, int dataLength); - - static unsigned char byteSwap( unsigned char value ); - - static unsigned short byteSwap( unsigned short value ); - - static unsigned int byteSwap( unsigned int value ); - - static unsigned long long byteSwap( unsigned long long value ); - - static float byteSwap( float value ); - - static double byteSwap( double value ); - }; - -}} - -#endif /*_DECAF_UTIL_ENDIAN_H*/
diff --git a/src/decaf/src/test/decaf/util/MapTest.cpp b/src/decaf/src/test/decaf/util/MapTest.cpp deleted file mode 100644 index f42b850..0000000 --- a/src/decaf/src/test/decaf/util/MapTest.cpp +++ /dev/null
@@ -1,119 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "MapTest.h" -#include <string> - -using namespace std; -using namespace decaf; -using namespace decaf::util; - -//////////////////////////////////////////////////////////////////////////////// -MapTest::MapTest(){ -} - -//////////////////////////////////////////////////////////////////////////////// -MapTest::~MapTest(){ -} - -//////////////////////////////////////////////////////////////////////////////// -void MapTest::testContainsKey(){ - - Map<string, bool> boolMap; - CPPUNIT_ASSERT(boolMap.containsKey("bob") == false); - - boolMap.setValue( "bob", true ); - - CPPUNIT_ASSERT(boolMap.containsKey("bob") == true ); - CPPUNIT_ASSERT(boolMap.containsKey("fred") == false ); -} - -//////////////////////////////////////////////////////////////////////////////// -void MapTest::testClear(){ - - Map<string, bool> boolMap; - boolMap.setValue( "bob", true ); - boolMap.setValue( "fred", true ); - - CPPUNIT_ASSERT(boolMap.size() == 2 ); - boolMap.clear(); - CPPUNIT_ASSERT(boolMap.size() == 0 ); -} - -//////////////////////////////////////////////////////////////////////////////// -void MapTest::testIsEmpty(){ - - Map<string, bool> boolMap; - boolMap.setValue( "bob", true ); - boolMap.setValue( "fred", true ); - - CPPUNIT_ASSERT(boolMap.isEmpty() == false ); - boolMap.clear(); - CPPUNIT_ASSERT(boolMap.isEmpty() == true ); -} - -//////////////////////////////////////////////////////////////////////////////// -void MapTest::testSize(){ - - Map<string, bool> boolMap; - - CPPUNIT_ASSERT(boolMap.size() == 0 ); - boolMap.setValue( "bob", true ); - CPPUNIT_ASSERT(boolMap.size() == 1 ); - boolMap.setValue( "fred", true ); - CPPUNIT_ASSERT(boolMap.size() == 2 ); -} - -//////////////////////////////////////////////////////////////////////////////// -void MapTest::testValue(){ - - Map<string, bool> boolMap; - - boolMap.setValue( "fred", true ); - CPPUNIT_ASSERT( boolMap.getValue("fred") == true ); - - boolMap.setValue( "bob", false ); - CPPUNIT_ASSERT( boolMap.getValue("bob") == false ); - CPPUNIT_ASSERT( boolMap.getValue("fred") == true ); - - try{ - boolMap.getValue( "mike" ); - CPPUNIT_ASSERT(false); - } catch( decaf::lang::exceptions::NoSuchElementException& e ){ - } -} - -//////////////////////////////////////////////////////////////////////////////// -void MapTest::testRemove(){ - Map<string, bool> boolMap; - - boolMap.setValue( "fred", true ); - CPPUNIT_ASSERT( boolMap.containsKey("fred") == true ); - boolMap.remove( "fred" ); - CPPUNIT_ASSERT( boolMap.containsKey("fred") == false ); -} - -//////////////////////////////////////////////////////////////////////////////// -void MapTest::testContiansValue(){ - Map<string, bool> boolMap; - - boolMap.setValue( "fred", true ); - boolMap.setValue( "fred1", false ); - CPPUNIT_ASSERT( boolMap.containsValue(true) == true ); - boolMap.remove( "fred" ); - CPPUNIT_ASSERT( boolMap.containsValue(true) == false ); -}
diff --git a/src/decaf/src/test/decaf/util/MapTest.h b/src/decaf/src/test/decaf/util/MapTest.h deleted file mode 100644 index ed57f73..0000000 --- a/src/decaf/src/test/decaf/util/MapTest.h +++ /dev/null
@@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_MAPTEST_H_ -#define _DECAF_UTIL_MAPTEST_H_ - -#include <decaf/util/Map.h> - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -namespace decaf{ -namespace util{ - - class MapTest : public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( MapTest ); - CPPUNIT_TEST( testContainsKey ); - CPPUNIT_TEST( testClear ); - CPPUNIT_TEST( testSize ); - CPPUNIT_TEST( testValue ); - CPPUNIT_TEST( testRemove ); - CPPUNIT_TEST( testContiansValue ); - CPPUNIT_TEST( testIsEmpty ); - CPPUNIT_TEST_SUITE_END(); - - public: - MapTest(); - virtual ~MapTest(); - - void testContainsKey(); - void testClear(); - void testSize(); - void testValue(); - void testRemove(); - void testContiansValue(); - void testIsEmpty(); - - }; - -}} - -#endif /*_DECAF_UTIL_MAPTEST_H_*/
diff --git a/src/decaf/src/test/decaf/util/QueueTest.cpp b/src/decaf/src/test/decaf/util/QueueTest.cpp deleted file mode 100644 index f0a7fda..0000000 --- a/src/decaf/src/test/decaf/util/QueueTest.cpp +++ /dev/null
@@ -1,47 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "QueueTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::util; - -//////////////////////////////////////////////////////////////////////////////// -void QueueTest::test() -{ - Queue<char> q; - - CPPUNIT_ASSERT( q.empty() == true ); - CPPUNIT_ASSERT( q.size() == 0 ); - - q.push('a'); - - CPPUNIT_ASSERT( q.front() == 'a' ); - - q.pop(); - - CPPUNIT_ASSERT( q.empty() == true ); - - q.push('b'); - q.push('c'); - - CPPUNIT_ASSERT( q.size() == 2 ); - - CPPUNIT_ASSERT( q.front() == 'b' ); - CPPUNIT_ASSERT( q.back() == 'c' ); -}
diff --git a/src/decaf/src/test/decaf/util/QueueTest.h b/src/decaf/src/test/decaf/util/QueueTest.h deleted file mode 100644 index a57ce40..0000000 --- a/src/decaf/src/test/decaf/util/QueueTest.h +++ /dev/null
@@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_QUEUETEST_H_ -#define _DECAF_UTIL_QUEUETEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/util/Queue.h> - -namespace decaf{ -namespace util{ - - class QueueTest : public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE( QueueTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST_SUITE_END(); - - public: - - virtual ~QueueTest() {} - - void test(); - }; - -}} - -#endif /*_DECAF_UTIL_QUEUETEST_H_*/
diff --git a/src/decaf/src/test/decaf/util/RandomTest.cpp b/src/decaf/src/test/decaf/util/RandomTest.cpp deleted file mode 100644 index 79e5383..0000000 --- a/src/decaf/src/test/decaf/util/RandomTest.cpp +++ /dev/null
@@ -1,84 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "RandomTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::util; - -void RandomTest::test(){ - - Random rand(122760); - CPPUNIT_ASSERT_EQUAL(-1524104671, rand.nextInt()); - CPPUNIT_ASSERT_EQUAL(2785759620113032781LL, rand.nextLong()); - CPPUNIT_ASSERT_EQUAL(rand.nextDouble(), 0.8173322904425151); - CPPUNIT_ASSERT_EQUAL(rand.nextFloat(), 0.8239248f); - - std::vector<unsigned char> b(0); - rand.nextBytes(b); - CPPUNIT_ASSERT_EQUAL(-899478426, rand.nextInt()); - - rand = Random(122760); - rand.nextInt(); - rand.nextLong(); - rand.nextDouble(); - rand.nextFloat(); - b = std::vector<unsigned char>(3); - rand.nextBytes(b); - CPPUNIT_ASSERT_EQUAL((unsigned char)102, b[0]); - CPPUNIT_ASSERT_EQUAL((unsigned char)12, b[1]); - CPPUNIT_ASSERT_EQUAL((unsigned char)99, b[2]); - CPPUNIT_ASSERT_EQUAL(-1550323395, rand.nextInt()); - - rand = Random(122760); - rand.nextInt(); - rand.nextLong(); - rand.nextDouble(); - rand.nextFloat(); - b = std::vector<unsigned char>(4); - rand.nextBytes(b); - CPPUNIT_ASSERT_EQUAL((unsigned char)102, b[0]); - CPPUNIT_ASSERT_EQUAL((unsigned char)12, b[1]); - CPPUNIT_ASSERT_EQUAL((unsigned char)99, b[2]); - CPPUNIT_ASSERT_EQUAL((unsigned char)-54, b[3]); - CPPUNIT_ASSERT_EQUAL(-1550323395, rand.nextInt()); - - rand = Random(122760); - rand.nextInt(); - rand.nextLong(); - rand.nextDouble(); - rand.nextFloat(); - b = std::vector<unsigned char>(5); - rand.nextBytes(b); - CPPUNIT_ASSERT_EQUAL((unsigned char)102, b[0]); - CPPUNIT_ASSERT_EQUAL((unsigned char)12, b[1]); - CPPUNIT_ASSERT_EQUAL((unsigned char)99, b[2]); - CPPUNIT_ASSERT_EQUAL((unsigned char)-54, b[3]); - CPPUNIT_ASSERT_EQUAL((unsigned char)61, b[4]); - CPPUNIT_ASSERT_EQUAL(-270809961, rand.nextInt()); - - bool ok = true; - rand = Random(0); - for (int i=0; i < 1000000; ++i) { - int x = rand.nextInt(1000); - if (x < 0 || x >= 1000) { - ok = false; - } - } - CPPUNIT_ASSERT(ok); -}
diff --git a/src/decaf/src/test/decaf/util/RandomTest.h b/src/decaf/src/test/decaf/util/RandomTest.h deleted file mode 100644 index 10c6acd..0000000 --- a/src/decaf/src/test/decaf/util/RandomTest.h +++ /dev/null
@@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_RANDOMTEST_H_ -#define _DECAF_UTIL_RANDOMTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/util/Random.h> - -namespace decaf{ -namespace util{ - - class RandomTest : public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( RandomTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST_SUITE_END(); - - public: - - RandomTest(){} - virtual ~RandomTest(){} - - void test(); - }; - -}} - -#endif /*_DECAF_UTIL_RANDOMTEST_H_*/
diff --git a/src/decaf/src/test/decaf/util/SetTest.cpp b/src/decaf/src/test/decaf/util/SetTest.cpp deleted file mode 100644 index a841d0f..0000000 --- a/src/decaf/src/test/decaf/util/SetTest.cpp +++ /dev/null
@@ -1,147 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "SetTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::util; - -//////////////////////////////////////////////////////////////////////////////// -SetTest::SetTest(){ -} - -//////////////////////////////////////////////////////////////////////////////// -void SetTest::testContains(){ - - Set<string> set; - CPPUNIT_ASSERT( set.contains( "bob" ) == false); - - set.add( "bob" ); - - CPPUNIT_ASSERT(set.contains( "bob" ) == true ); - CPPUNIT_ASSERT(set.contains( "fred" ) == false ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SetTest::testClear(){ - - Set<string> set; - set.add( "bob" ); - set.add( "fred" ); - - CPPUNIT_ASSERT( set.size() == 2 ); - set.clear(); - CPPUNIT_ASSERT( set.size() == 0 ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SetTest::testIsEmpty(){ - - Set<string> set; - set.add( "bob" ); - set.add( "fred" ); - - CPPUNIT_ASSERT(set.isEmpty() == false ); - set.clear(); - CPPUNIT_ASSERT(set.isEmpty() == true ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SetTest::testSize(){ - - Set<string> set; - - CPPUNIT_ASSERT( set.size() == 0 ); - set.add( "bob" ); - CPPUNIT_ASSERT( set.size() == 1 ); - set.add( "fred" ); - CPPUNIT_ASSERT( set.size() == 2 ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SetTest::testAdd(){ - Set<string> set; - - set.add( "fred" ); - set.add( "fred" ); - set.add( "fred" ); - CPPUNIT_ASSERT( set.contains("fred") == true ); - CPPUNIT_ASSERT( set.size() == 1 ); - set.remove( "fred" ); - CPPUNIT_ASSERT( set.contains("fred") == false ); - CPPUNIT_ASSERT( set.isEmpty() ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SetTest::testRemove(){ - Set<string> set; - - set.add( "fred" ); - CPPUNIT_ASSERT( set.contains( "fred" ) == true ); - set.remove( "fred" ); - CPPUNIT_ASSERT( set.contains( "fred" ) == false ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SetTest::testToArray(){ - - Set<string> set; - - set.add( "fred1" ); - set.add( "fred2" ); - set.add( "fred3" ); - CPPUNIT_ASSERT( set.size() == 3 ); - - std::vector<std::string> array = set.toArray(); - - CPPUNIT_ASSERT( array.size() == 3 ); -} - -//////////////////////////////////////////////////////////////////////////////// -void SetTest::testIterator(){ - - Set<string> set; - - set.add( "fred1" ); - set.add( "fred2" ); - set.add( "fred3" ); - - Iterator<string>* iterator1 = set.iterator(); - CPPUNIT_ASSERT( iterator1 != NULL ); - CPPUNIT_ASSERT( iterator1->hasNext() == true ); - - size_t count = 0; - while( iterator1->hasNext() ) { - iterator1->next(); - ++count; - } - - CPPUNIT_ASSERT( count == set.size() ); - - Iterator<string>* iterator2 = set.iterator(); - - while( iterator2->hasNext() ) { - iterator2->next(); - iterator2->remove(); - } - - CPPUNIT_ASSERT( set.isEmpty() ); - - delete iterator1; - delete iterator2; -}
diff --git a/src/decaf/src/test/decaf/util/SetTest.h b/src/decaf/src/test/decaf/util/SetTest.h deleted file mode 100644 index dd2e0d8..0000000 --- a/src/decaf/src/test/decaf/util/SetTest.h +++ /dev/null
@@ -1,61 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_SETTEST_H_ -#define _DECAF_UTIL_SETTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/util/Set.h> -#include <decaf/util/Iterator.h> - -namespace decaf{ -namespace util{ - - class SetTest : public CppUnit::TestFixture - { - CPPUNIT_TEST_SUITE( SetTest ); - CPPUNIT_TEST( testContains ); - CPPUNIT_TEST( testClear ); - CPPUNIT_TEST( testSize ); - CPPUNIT_TEST( testAdd ); - CPPUNIT_TEST( testRemove ); - CPPUNIT_TEST( testIsEmpty ); - CPPUNIT_TEST( testToArray ); - CPPUNIT_TEST( testIterator ); - CPPUNIT_TEST_SUITE_END(); - - public: - - SetTest(); - virtual ~SetTest() {} - - void testContains(); - void testClear(); - void testSize(); - void testAdd(); - void testRemove(); - void testIsEmpty(); - void testToArray(); - void testIterator(); - - }; - -}} - -#endif /*_DECAF_UTIL_SETTEST_H_*/
diff --git a/src/decaf/src/test/decaf/util/StringTokenizerTest.cpp b/src/decaf/src/test/decaf/util/StringTokenizerTest.cpp deleted file mode 100644 index 89930f4..0000000 --- a/src/decaf/src/test/decaf/util/StringTokenizerTest.cpp +++ /dev/null
@@ -1,97 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "StringTokenizerTest.h" -#include <decaf/util/StringTokenizer.h> - -using namespace std; -using namespace decaf; -using namespace decaf::util; - -//////////////////////////////////////////////////////////////////////////////// -void StringTokenizerTest::test() -{ - StringTokenizer tokenizer("stomp://127.0.0.1:23232", "://"); - CPPUNIT_ASSERT( tokenizer.countTokens() == 3 ); - CPPUNIT_ASSERT( tokenizer.nextToken() == "stomp" ); - CPPUNIT_ASSERT( tokenizer.nextToken() == "127.0.0.1" ); - CPPUNIT_ASSERT( tokenizer.nextToken() == "23232" ); - - StringTokenizer tokenizer1("::://stomp://127.0.0.1:23232:", ":/"); - CPPUNIT_ASSERT( tokenizer1.countTokens() == 3 ); - CPPUNIT_ASSERT( tokenizer1.nextToken() == "stomp" ); - CPPUNIT_ASSERT( tokenizer1.nextToken() == "127.0.0.1" ); - CPPUNIT_ASSERT( tokenizer1.nextToken() == "23232" ); - - StringTokenizer tokenizer2("test"); - CPPUNIT_ASSERT( tokenizer2.countTokens() == 1 ); - CPPUNIT_ASSERT( tokenizer2.hasMoreTokens() == true ); - CPPUNIT_ASSERT( tokenizer2.nextToken() == "test" ); - CPPUNIT_ASSERT( tokenizer2.hasMoreTokens() == false ); - - StringTokenizer tokenizer3(":", ":"); - CPPUNIT_ASSERT( tokenizer3.countTokens() == 0 ); - CPPUNIT_ASSERT( tokenizer3.hasMoreTokens() == false ); - CPPUNIT_ASSERT( tokenizer3.nextToken(" ") == ":" ); - - try - { - tokenizer3.nextToken(); - CPPUNIT_ASSERT( false ); - } - catch(lang::exceptions::NoSuchElementException ex) - { - CPPUNIT_ASSERT( true ); - } - - StringTokenizer tokenizer4("the quick brown fox"); - CPPUNIT_ASSERT( tokenizer4.countTokens() == 4 ); - CPPUNIT_ASSERT( tokenizer4.hasMoreTokens() == true ); - CPPUNIT_ASSERT( tokenizer4.nextToken() == "the" ); - CPPUNIT_ASSERT( tokenizer4.nextToken() == "quick" ); - CPPUNIT_ASSERT( tokenizer4.nextToken() == "brown" ); - CPPUNIT_ASSERT( tokenizer4.nextToken() == "fox" ); - CPPUNIT_ASSERT( tokenizer4.countTokens() == 0 ); - CPPUNIT_ASSERT( tokenizer4.hasMoreTokens() == false ); - - StringTokenizer tokenizer5("the:quick:brown:fox", ":", true); - CPPUNIT_ASSERT( tokenizer5.countTokens() == 7 ); - CPPUNIT_ASSERT( tokenizer5.hasMoreTokens() == true ); - CPPUNIT_ASSERT( tokenizer5.nextToken() == "the" ); - CPPUNIT_ASSERT( tokenizer5.nextToken() == ":" ); - CPPUNIT_ASSERT( tokenizer5.nextToken() == "quick" ); - CPPUNIT_ASSERT( tokenizer5.nextToken() == ":" ); - CPPUNIT_ASSERT( tokenizer5.nextToken() == "brown" ); - CPPUNIT_ASSERT( tokenizer5.nextToken() == ":" ); - CPPUNIT_ASSERT( tokenizer5.nextToken() == "fox" ); - CPPUNIT_ASSERT( tokenizer5.countTokens() == 0 ); - CPPUNIT_ASSERT( tokenizer5.hasMoreTokens() == false ); - - std::vector<std::string> myArray; - StringTokenizer tokenizer6("the:quick:brown:fox", ":"); - CPPUNIT_ASSERT( tokenizer6.countTokens() == 4 ); - CPPUNIT_ASSERT( tokenizer6.toArray(myArray) == 4 ); - CPPUNIT_ASSERT( tokenizer6.countTokens() == 0 ); - tokenizer6.reset(); - CPPUNIT_ASSERT( tokenizer6.countTokens() == 4 ); - tokenizer6.reset("the:quick:brown:fox", "$"); - CPPUNIT_ASSERT( tokenizer6.countTokens() == 1 ); - tokenizer6.reset("this$is$a$test"); - CPPUNIT_ASSERT( tokenizer6.countTokens() == 4 ); - tokenizer6.reset("this$is$a$test", "$", true); - CPPUNIT_ASSERT( tokenizer6.countTokens() == 7 ); -}
diff --git a/src/decaf/src/test/decaf/util/StringTokenizerTest.h b/src/decaf/src/test/decaf/util/StringTokenizerTest.h deleted file mode 100644 index 66d8776..0000000 --- a/src/decaf/src/test/decaf/util/StringTokenizerTest.h +++ /dev/null
@@ -1,43 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_STRINGTOKENIZERTEST_H_ -#define _DECAF_UTIL_STRINGTOKENIZERTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -namespace decaf{ -namespace util{ - - class StringTokenizerTest : public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE( StringTokenizerTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST_SUITE_END(); - - public: - - virtual ~StringTokenizerTest() {} - - void test(); - - }; - -}} - -#endif /*_DECAF_UTIL_STRINGTOKENIZERTEST_H_*/
diff --git a/src/decaf/src/test/decaf/util/UUIDTest.cpp b/src/decaf/src/test/decaf/util/UUIDTest.cpp deleted file mode 100644 index e2f5c5e..0000000 --- a/src/decaf/src/test/decaf/util/UUIDTest.cpp +++ /dev/null
@@ -1,53 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "UUIDTest.h" - -#include <decaf/util/UUID.h> - -using namespace decaf; -using namespace decaf::util; - -//////////////////////////////////////////////////////////////////////////////// -UUIDTest::UUIDTest() { -} - -//////////////////////////////////////////////////////////////////////////////// -void UUIDTest::test() { - - std::string bytes = "ASDASFSADGSDGSDASFA"; - - UUID randId = UUID::randomUUID(); - UUID bytesId = UUID::nameUUIDFromBytes( bytes.c_str(), bytes.size() ); - - CPPUNIT_ASSERT( !( randId == bytesId ) ); - CPPUNIT_ASSERT( !( randId.equals( bytesId ) ) ); - CPPUNIT_ASSERT( randId.compareTo( bytesId ) != 0 ); - - std::string uuidStr = randId.toString(); - - UUID strId = UUID::fromString( uuidStr ); - - CPPUNIT_ASSERT( randId == strId ); - - CPPUNIT_ASSERT( randId.variant() == 2 ); - - UUID fromBits( randId.getMostSignificantBits(), - randId.getLeastSignificantBits() ); - - CPPUNIT_ASSERT( randId.compareTo( fromBits) == 0 ); -}
diff --git a/src/decaf/src/test/decaf/util/UUIDTest.h b/src/decaf/src/test/decaf/util/UUIDTest.h deleted file mode 100644 index ba7d188..0000000 --- a/src/decaf/src/test/decaf/util/UUIDTest.h +++ /dev/null
@@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_UUIDTEST_H_ -#define _DECAF_UTIL_UUIDTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -namespace decaf{ -namespace util{ - - class UUIDTest : public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE( UUIDTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST_SUITE_END(); - - public: - - UUIDTest(); - virtual ~UUIDTest() {} - - virtual void test(); - - }; - -}} - -#endif /*_DECAF_UTIL_UUIDTEST_H_*/
diff --git a/src/decaf/src/test/decaf/util/concurrent/CountDownLatchTest.cpp b/src/decaf/src/test/decaf/util/concurrent/CountDownLatchTest.cpp deleted file mode 100644 index 10d2f43..0000000 --- a/src/decaf/src/test/decaf/util/concurrent/CountDownLatchTest.cpp +++ /dev/null
@@ -1,64 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "CountDownLatchTest.h" - -using namespace decaf; -using namespace decaf::util; -using namespace decaf::util::concurrent; - -//////////////////////////////////////////////////////////////////////////////// -void CountDownLatchTest::test() -{ - CountDownLatch latch( 50 ); - - CPPUNIT_ASSERT( latch.getCount() == 50 ); - - MyThread thread; - thread.latch = &latch; - thread.start(); - - latch.await(); - - CPPUNIT_ASSERT( latch.getCount() == 0 ); - - thread.join(); - - CPPUNIT_ASSERT( true ); -} - -//////////////////////////////////////////////////////////////////////////////// -void CountDownLatchTest::test2() -{ - CountDownLatch latch( 75 ); - - CPPUNIT_ASSERT( latch.getCount() == 75 ); - - MyThread thread; - thread.latch = &latch; - thread.start(); - - CPPUNIT_ASSERT( latch.await( 2 ) == false ); - - latch.await(); - - CPPUNIT_ASSERT( latch.getCount() == 0 ); - - thread.join(); - - CPPUNIT_ASSERT( true ); -}
diff --git a/src/decaf/src/test/decaf/util/concurrent/CountDownLatchTest.h b/src/decaf/src/test/decaf/util/concurrent/CountDownLatchTest.h deleted file mode 100644 index 048a813..0000000 --- a/src/decaf/src/test/decaf/util/concurrent/CountDownLatchTest.h +++ /dev/null
@@ -1,73 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_CONCURRENT_COUNTDOWNLATCHTEST_H_ -#define _DECAF_UTIL_CONCURRENT_COUNTDOWNLATCHTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/lang/Thread.h> -#include <decaf/util/concurrent/CountDownLatch.h> - -namespace decaf{ -namespace util{ -namespace concurrent{ - - class CountDownLatchTest : public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE( CountDownLatchTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST( test2 ); - CPPUNIT_TEST_SUITE_END(); - - protected: - - class MyThread : public lang::Thread - { - public: - - CountDownLatch* latch; - - public: - - MyThread(){} - virtual ~MyThread(){} - - virtual void run(){ - - while( latch->getCount() > 0 ) { - latch->countDown(); - - lang::Thread::sleep( 20 ); - } - } - - }; - - public: - - CountDownLatchTest() {} - virtual ~CountDownLatchTest() {} - - virtual void test(); - virtual void test2(); - }; - -}}} - -#endif /*_DECAF_UTIL_CONCURRENT_COUNTDOWNLATCHTEST_H_*/
diff --git a/src/decaf/src/test/decaf/util/concurrent/MutexTest.cpp b/src/decaf/src/test/decaf/util/concurrent/MutexTest.cpp deleted file mode 100644 index 2eac067..0000000 --- a/src/decaf/src/test/decaf/util/concurrent/MutexTest.cpp +++ /dev/null
@@ -1,349 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "MutexTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::util; -using namespace decaf::util::concurrent; - -/////////////////////////////////////////////////////////////////////////////// -void MutexTest::testTimedWait(){ - - try - { - MyTimedWaitingThread test; - time_t startTime = time( NULL ); - test.start(); - test.join(); - time_t endTime = time( NULL ); - - time_t delta = endTime - startTime; - - CPPUNIT_ASSERT( delta >= 1 && delta <= 3 ); - } - catch(lang::Exception& ex) - { - std::cout << ex.getMessage() << std::endl; - } -} - -void MutexTest::testWait(){ - - try - { - MyWaitingThread test; - test.start(); - - Thread::sleep( 1000 ); - - synchronized( &test ) - { - for( int ix=0; ix<100; ix++ ){ - test.value += 1; - } - - test.notify(); - } - - test.join(); - - CPPUNIT_ASSERT( test.value == 2500 ); - } catch( lang::Exception& ex ) { - ex.setMark( __FILE__, __LINE__ ); - } -} - -void MutexTest::test() -{ - MyThread test; - - synchronized(&test){ - - test.start(); - - for( int ix=0; ix<100; ix++ ){ - test.value += 1; - } - } - - test.join(); - - CPPUNIT_ASSERT( test.value == 2500 ); -} - -void MutexTest::testNotify() -{ - try{ - Mutex mutex; - Mutex started; - Mutex completed; - - const int numThreads = 30; - MyNotifiedThread* threads[numThreads]; - - // Create and start all the threads. - for( int ix=0; ix<numThreads; ++ix ){ - threads[ix] = new MyNotifiedThread( &mutex, &started, &completed ); - threads[ix]->start(); - } - - synchronized( &started ) - { - int count = 0; - - while( count < ( numThreads ) ) - { - started.wait( 30 ); - count++; - } - } - - synchronized(&mutex) - { - mutex.notify(); - } - - Thread::sleep( 1000 ); - - int counter = 0; - for( int ix=0; ix<numThreads; ++ix ){ - if( threads[ix]->done ){ - counter++; - } - } - - // Make sure only 1 thread was notified. - CPPUNIT_ASSERT( counter == 1 ); - - synchronized(&mutex) - { - // Notify all threads. - for( int ix=0; ix<numThreads-1; ++ix ){ - mutex.notify(); - } - } - - synchronized( &started ) - { - int count = 0; - - while( count < ( numThreads ) ) - { - started.wait( 30 ); - count++; - } - } - - int numComplete = 0; - for( int ix=0; ix<numThreads; ++ix ){ - if( threads[ix]->done ){ - numComplete++; - } - } - CPPUNIT_ASSERT( numComplete == numThreads ); - - synchronized( &mutex ) - { - mutex.wait( 5 ); - } - - synchronized( &mutex ) - { - mutex.notifyAll(); - } - - // Delete all the threads. - for( int ix=0; ix<numThreads; ++ix ){ - delete threads[ix]; - } - - }catch( lang::Exception& ex ){ - ex.setMark( __FILE__, __LINE__ ); - } -} - -void MutexTest::testNotifyAll() -{ - try{ - Mutex mutex; - Mutex started; - Mutex completed; - - const int numThreads = 100; - MyNotifiedThread* threads[numThreads]; - - // Create and start all the threads. - for( int ix=0; ix<numThreads; ++ix ){ - threads[ix] = new MyNotifiedThread( &mutex, &started, &completed ); - threads[ix]->start(); - } - - synchronized( &started ) - { - int count = 0; - - while( count < ( numThreads ) ) - { - started.wait( 30 ); - count++; - } - } - - for( int ix=0; ix<numThreads; ++ix ) - { - if( threads[ix]->done == true ){ - printf("threads[%d] is done prematurely\n", ix ); - } - CPPUNIT_ASSERT( threads[ix]->done == false ); - } - - // Notify all threads. - synchronized( &mutex ){ - mutex.notifyAll(); - } - - synchronized( &completed ) - { - int count = 0; - - while( count < ( numThreads ) ) - { - completed.wait( 30 ); - count++; - } - } - - int numComplete = 0; - for( int ix=0; ix<numThreads; ++ix ){ - if( threads[ix]->done ){ - numComplete++; - } - } - //printf("numComplete: %d, numThreads: %d\n", numComplete, numThreads ); - CPPUNIT_ASSERT( numComplete == numThreads ); - - // Delete all the threads. - for( int ix=0; ix<numThreads; ++ix ){ - threads[ix]->join(); - delete threads[ix]; - } - - }catch( lang::Exception& ex ){ - ex.setMark( __FILE__, __LINE__ ); - } -} - -void MutexTest::testRecursiveLock() -{ - try{ - Mutex mutex; - - const int numThreads = 30; - MyRecursiveLockThread* threads[numThreads]; - - // Create and start all the threads. - for( int ix=0; ix<numThreads; ++ix ){ - threads[ix] = new MyRecursiveLockThread( &mutex ); - threads[ix]->start(); - } - - // Sleep so all the threads can get to the wait. - Thread::sleep( 1000 ); - - for( int ix=0; ix<numThreads; ++ix ){ - if( threads[ix]->done == true ){ - std::cout << "threads[" << ix - << "] is done prematurely\n"; - } - CPPUNIT_ASSERT( threads[ix]->done == false ); - } - - // Notify all threads. - synchronized( &mutex ) - { - synchronized( &mutex ) - { - mutex.notifyAll(); - } - } - - // Sleep to give the threads time to wake up. - Thread::sleep( 1000 ); - - for( int ix=0; ix<numThreads; ++ix ){ - if( threads[ix]->done != true ){ - std::cout<< "threads[" << ix << "] is not done\n"; - } - CPPUNIT_ASSERT( threads[ix]->done == true ); - } - - // Delete all the threads. - for( int ix=0; ix<numThreads; ++ix ){ - delete threads[ix]; - } - - }catch( lang::Exception& ex ){ - ex.setMark( __FILE__, __LINE__ ); - } -} - -void MutexTest::testDoubleLock() -{ - try{ - Mutex mutex1; - Mutex mutex2; - - MyDoubleLockThread thread(&mutex1, &mutex2); - - thread.start(); - - // Let the thread get both locks - Thread::sleep( 200 ); - - // Lock mutex 2, thread is waiting on it - synchronized(&mutex2) - { - mutex2.notify(); - } - - // Let the thread die - thread.join(); - - CPPUNIT_ASSERT( thread.done ); - }catch( lang::Exception& ex ){ - ex.setMark( __FILE__, __LINE__ ); - } -} - -/////////////////////////////////////////////////////////////////////////////// -void MutexTest::testStressMutex(){ - MyStoppableThread tester; - - tester.start(); - - CPPUNIT_ASSERT( tester.isStarted() ); - - for( int i = 0; i < 100; ++i ) { - tester.stop(); - tester.start(); - } - - CPPUNIT_ASSERT( true ); -}
diff --git a/src/decaf/src/test/decaf/util/concurrent/MutexTest.h b/src/decaf/src/test/decaf/util/concurrent/MutexTest.h deleted file mode 100644 index af62da4..0000000 --- a/src/decaf/src/test/decaf/util/concurrent/MutexTest.h +++ /dev/null
@@ -1,493 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_CONCURRENT_MUTEXTEST_H_ -#define _DECAF_UTIL_CONCURRENT_MUTEXTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/lang/Thread.h> -#include <decaf/lang/Runnable.h> -#include <decaf/util/concurrent/Concurrent.h> -#include <decaf/util/concurrent/Mutex.h> -#include <decaf/util/Random.h> -#include <time.h> - -namespace decaf{ -namespace util{ -namespace concurrent{ - - class MutexTest : public CppUnit::TestFixture { - - CPPUNIT_TEST_SUITE( MutexTest ); - CPPUNIT_TEST( test ); - CPPUNIT_TEST( testWait ); - CPPUNIT_TEST( testTimedWait ); - CPPUNIT_TEST( testNotify ); - CPPUNIT_TEST( testNotifyAll ); - CPPUNIT_TEST( testRecursiveLock ); - CPPUNIT_TEST( testDoubleLock ); - CPPUNIT_TEST( testStressMutex ); - CPPUNIT_TEST_SUITE_END(); - - public: - - class MyThread - : - public lang::Thread, - public Synchronizable{ - - private: - - Mutex mutex; - - public: - - int value; - MyThread(){ value = 0;} - virtual ~MyThread(){} - - virtual void lock() throw(lang::Exception){ - mutex.lock(); - } - virtual void unlock() throw(lang::Exception){ - mutex.unlock(); - } - virtual void wait() throw(lang::Exception){ - mutex.wait(); - } - virtual void wait(unsigned long millisecs) throw(lang::Exception){ - mutex.wait( millisecs ); - } - virtual void notify() throw(lang::Exception){ - mutex.notify(); - } - virtual void notifyAll() throw(lang::Exception){ - mutex.notifyAll(); - } - - virtual void run(){ - - { - Lock lock (this); - - value = value * 25; - } - } - - }; - - class MyWaitingThread - : - public lang::Thread, - public Synchronizable{ - - private: - - Mutex mutex; - - public: - - int value; - MyWaitingThread(){ value = 0;} - virtual ~MyWaitingThread(){} - virtual void lock() throw(lang::Exception){ - mutex.lock(); - } - virtual void unlock() throw(lang::Exception){ - mutex.unlock(); - } - virtual void wait() throw(lang::Exception){ - mutex.wait(); - } - virtual void wait(unsigned long millisecs) throw(lang::Exception){ - mutex.wait( millisecs ); - } - virtual void notify() throw(lang::Exception){ - mutex.notify(); - } - virtual void notifyAll() throw(lang::Exception){ - mutex.notifyAll(); - } - - virtual void run(){ - - try - { - synchronized(this) - { - this->wait(); - - std::cout.flush(); - - value = value * 25; - } - } - catch(lang::Exception& ex) - { - ex.setMark( __FILE__, __LINE__ ); - } - } - }; - - class MyTimedWaitingThread - : - public lang::Thread, - public Synchronizable{ - - private: - - Mutex mutex; - - public: - - int value; - MyTimedWaitingThread(){ value = 0;} - virtual ~MyTimedWaitingThread(){} - virtual void lock() throw(lang::Exception){ - mutex.lock(); - } - virtual void unlock() throw(lang::Exception){ - mutex.unlock(); - } - virtual void wait() throw(lang::Exception){ - mutex.wait(); - } - virtual void wait(unsigned long millisecs) throw(lang::Exception){ - mutex.wait( millisecs ); - } - virtual void notify() throw(lang::Exception){ - mutex.notify(); - } - virtual void notifyAll() throw(lang::Exception){ - mutex.notifyAll(); - } - - virtual void run(){ - - try - { - synchronized(this) - { - this->wait(2000); - - value = 666; - } - } - catch(lang::Exception& ex) - { - ex.setMark( __FILE__, __LINE__ ); - } - } - }; - - class MyNotifiedThread - : - public lang::Thread, - public Synchronizable{ - - public: - - bool done; - Mutex* mutex; - Mutex* started; - Mutex* completed; - - public: - - int value; - MyNotifiedThread(Mutex* mutex, Mutex* started, Mutex* completed ){ - this->mutex = mutex; - this->started = started; - this->completed = completed; - this->done = false; - } - virtual ~MyNotifiedThread(){} - virtual void lock() throw(lang::Exception){ - mutex->lock(); - } - virtual void unlock() throw(lang::Exception){ - mutex->unlock(); - } - virtual void wait() throw(lang::Exception){ - mutex->wait(); - } - virtual void wait(unsigned long millisecs) throw(lang::Exception){ - mutex->wait( millisecs ); - } - virtual void notify() throw(lang::Exception){ - mutex->notify(); - } - virtual void notifyAll() throw(lang::Exception){ - mutex->notifyAll(); - } - - virtual void run(){ - - try - { - done = false; - synchronized(this) - { - synchronized( started ) - { - started->notify(); - } - - this->wait(); - done = true; - - synchronized( completed ) - { - completed->notify(); - } - } - } - catch(lang::Exception& ex) - { - ex.setMark( __FILE__, __LINE__ ); - } - } - }; - - class MyRecursiveLockThread - : - public lang::Thread, - public Synchronizable{ - - public: - - bool done; - Mutex* mutex; - - public: - - int value; - MyRecursiveLockThread(Mutex* mutex){ this->mutex = mutex; done = false; } - virtual ~MyRecursiveLockThread(){} - virtual void lock() throw(lang::Exception){ - mutex->lock(); - } - virtual void unlock() throw(lang::Exception){ - mutex->unlock(); - } - virtual void wait() throw(lang::Exception){ - mutex->wait(); - } - virtual void wait(unsigned long millisecs) throw(lang::Exception){ - mutex->wait( millisecs ); - } - virtual void notify() throw(lang::Exception){ - mutex->notify(); - } - virtual void notifyAll() throw(lang::Exception){ - mutex->notifyAll(); - } - - virtual void run(){ - - try - { - done = false; - synchronized(this) - { - synchronized(this) - { - this->wait(); - done = true; - } - } - } - catch(lang::Exception& ex) - { - ex.setMark( __FILE__, __LINE__ ); - } - } - }; - - class MyDoubleLockThread - : - public lang::Thread - { - - public: - - bool done; - Mutex* mutex1; - Mutex* mutex2; - - public: - - int value; - MyDoubleLockThread(Mutex* mutex1, Mutex* mutex2) - { - this->mutex1 = mutex1; - this->mutex2 = mutex2; - done = false; - } - - virtual ~MyDoubleLockThread(){} - - virtual void run(){ - - try - { - done = false; - synchronized(mutex1) - { - synchronized(mutex2) - { - mutex2->wait(); - done = true; - } - } - } - catch(lang::Exception& ex) - { - ex.setMark( __FILE__, __LINE__ ); - } - } - }; - - class MyStoppableThread : public lang::Runnable - { - public: - - bool started; - bool closed; - Mutex mutex; - lang::Thread* thread; - util::Random rand; - - public: - - MyStoppableThread() { - this->started = false; - this->closed = false; - this->thread = NULL; - } - - virtual ~MyStoppableThread(){ close(); } - - virtual void start(){ - synchronized( &mutex ) { - - if( closed || started ) { - return; - } - - started = true; - - // Don't create the thread unless we need to. - if( thread == NULL ) { - thread = new lang::Thread( this ); - thread->start(); - } - - mutex.notifyAll(); - } - } - - virtual void stop() { - synchronized( &mutex ) { - - if( closed || !started ) { - return; - } - - // Set the state to stopped. - started = false; - - // Wakeup the thread so that it can acknowledge the stop request. - mutex.notifyAll(); - - // Wait for the thread to notify us that it has acknowledged - // the stop request. - mutex.wait(); - } - } - - virtual void close() { - synchronized( &mutex ) { - - closed = true; - mutex.notifyAll(); - } - - if( thread != NULL ) { - thread->join(); - delete thread; - thread = NULL; - } - } - - virtual bool isStarted() const { - return started; - } - - virtual void run(){ - try { - - while( true ) { - - lang::Thread::sleep( rand.nextInt( 100 ) ); - - synchronized( &mutex ) { - - // If we're closing down, exit the thread. - if( closed ) { - return; - } - - // When told to stop, the calling thread will wait for a - // responding notification, indicating that we have acknowledged - // the stop command. - if( !isStarted() ) { - mutex.notifyAll(); - - // Wait for more data or to be woken up. - mutex.wait(); - } - } - } - } catch(...) { - CPPUNIT_ASSERT( false ); - } - } - }; - - public: - - virtual ~MutexTest(){} - virtual void setUp(){} - virtual void tearDown(){} - - void testTimedWait(); - void testWait(); - void test(); - void testNotify(); - void testNotifyAll(); - void testRecursiveLock(); - void testDoubleLock(); - void testStressMutex(); - - }; - -}}} - -#endif /*_DECAF_UTIL_CONCURRENT_MUTEXTEST_H_*/
diff --git a/src/decaf/src/test/decaf/util/concurrent/ThreadPoolTest.cpp b/src/decaf/src/test/decaf/util/concurrent/ThreadPoolTest.cpp deleted file mode 100644 index e0ae705..0000000 --- a/src/decaf/src/test/decaf/util/concurrent/ThreadPoolTest.cpp +++ /dev/null
@@ -1,149 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "ThreadPoolTest.h" - -using namespace std; -using namespace decaf; -using namespace decaf::lang; -using namespace decaf::util; -using namespace decaf::util::concurrent; - -/////////////////////////////////////////////////////////////////////////////// -void ThreadPoolTest::test1() -{ - CountDownLatch myLatch( 3 ); - this->latch = &myLatch; - - MyTask task1( 1 ); - MyTask task2( 2 ); - MyTask task3( 3 ); - - this->complete = 0; - this->tasksToComplete = 3; - - ThreadPool* pool = ThreadPool::getInstance(); - - pool->queueTask( ThreadPool::Task( &task1, this ) ); - pool->queueTask( ThreadPool::Task( &task2, this ) ); - pool->queueTask( ThreadPool::Task( &task3, this ) ); - - // Wait for them to finish, if we can't do this in 30 seconds then - // there's probably something really wrong. - myLatch.await( 30000 ); - - CPPUNIT_ASSERT( this->complete == this->tasksToComplete ); - - CPPUNIT_ASSERT( task1.value == 101 ); - CPPUNIT_ASSERT( task2.value == 102 ); - CPPUNIT_ASSERT( task3.value == 103 ); - - CPPUNIT_ASSERT( pool->getPoolSize() > 0 ); - CPPUNIT_ASSERT( pool->getBacklog() == 0 ); - - CPPUNIT_ASSERT( pool->getMaxThreads() == ThreadPool::DEFAULT_MAX_POOL_SIZE ); - CPPUNIT_ASSERT( pool->getBlockSize() == ThreadPool::DEFAULT_MAX_BLOCK_SIZE ); - - pool->setMaxThreads(50); - pool->setBlockSize(50); - - CPPUNIT_ASSERT( pool->getMaxThreads() == 50 ); - CPPUNIT_ASSERT( pool->getBlockSize() == 50 ); - - // Give it a little time to create all those threads. - for( int i = 0; i < 1000; ++i ) { - if( pool->getFreeThreadCount() == pool->getPoolSize() ) { - break; - } - - Thread::sleep( 100 ); - } - - CPPUNIT_ASSERT( pool->getFreeThreadCount() == pool->getPoolSize() ); - CPPUNIT_ASSERT( this->caughtEx == false ); -} - -/////////////////////////////////////////////////////////////////////////////// -void ThreadPoolTest::test2() { - - try - { - ThreadPool pool; - Mutex myMutex; - - CPPUNIT_ASSERT( pool.getMaxThreads() == ThreadPool::DEFAULT_MAX_POOL_SIZE ); - CPPUNIT_ASSERT( pool.getBlockSize() == ThreadPool::DEFAULT_MAX_BLOCK_SIZE ); - pool.setMaxThreads(3); - pool.setBlockSize(1); - CPPUNIT_ASSERT( pool.getMaxThreads() == 3 ); - CPPUNIT_ASSERT( pool.getBlockSize() == 1 ); - CPPUNIT_ASSERT( pool.getPoolSize() == 0 ); - pool.reserve( 4 ); - CPPUNIT_ASSERT( pool.getPoolSize() == 3 ); - CPPUNIT_ASSERT( pool.getFreeThreadCount() == 3 ); - - CountDownLatch startedLatch1(3); // First three should go right away - CountDownLatch startedLatch2(1); // The fourth one goes after others finish - CountDownLatch doneLatch(4); // All should be done when we are at the end. - - this->latch = &doneLatch; - - MyWaitingTask task1( &myMutex, &startedLatch1 ); - MyWaitingTask task2( &myMutex, &startedLatch1 ); - MyWaitingTask task3( &myMutex, &startedLatch1 ); - MyWaitingTask task4( &myMutex, &startedLatch2 ); - - this->complete = 0; - this->tasksToComplete = 4; - - pool.queueTask( ThreadPool::Task( &task1, this ) ); - pool.queueTask( ThreadPool::Task( &task2, this ) ); - pool.queueTask( ThreadPool::Task( &task3, this ) ); - pool.queueTask( ThreadPool::Task( &task4, this ) ); - - // Wait 30 seconds, then we let it fail because something is - // probably very wrong. - startedLatch1.await( 30000 ); - - CPPUNIT_ASSERT( pool.getFreeThreadCount() == 0 ); - CPPUNIT_ASSERT( pool.getBacklog() == 1 ); - - // Wake up the tasks. - synchronized(&myMutex) { - myMutex.notifyAll(); - } - - // Wait 30 seconds, then we let it fail because something is - // probably very wrong. - startedLatch2.await( 30000 ); - - // Wake up the last task. - synchronized(&myMutex) { - myMutex.notifyAll(); - } - - // Wait for them to finish, if it takes longer than 30 seconds - // something is not right. - doneLatch.await( 30000 ); - - CPPUNIT_ASSERT( this->complete == this->tasksToComplete ); - CPPUNIT_ASSERT( this->caughtEx == false ); - } - catch( lang::Exception& ex ) { - ex.setMark( __FILE__, __LINE__ ); - } -}
diff --git a/src/decaf/src/test/decaf/util/concurrent/ThreadPoolTest.h b/src/decaf/src/test/decaf/util/concurrent/ThreadPoolTest.h deleted file mode 100644 index 298eaba..0000000 --- a/src/decaf/src/test/decaf/util/concurrent/ThreadPoolTest.h +++ /dev/null
@@ -1,138 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _DECAF_UTIL_CONCURRENT_THREADPOOLTEST_H_ -#define _DECAF_UTIL_CONCURRENT_THREADPOOLTEST_H_ - -#include <cppunit/TestFixture.h> -#include <cppunit/extensions/HelperMacros.h> - -#include <decaf/util/concurrent/CountDownLatch.h> -#include <decaf/util/concurrent/Concurrent.h> -#include <decaf/lang/Thread.h> -#include <decaf/util/concurrent/ThreadPool.h> -#include <decaf/util/concurrent/TaskListener.h> -#include <decaf/util/concurrent/Mutex.h> -#include <decaf/util/Config.h> - -namespace decaf{ -namespace util{ -namespace concurrent{ - - class ThreadPoolTest : - public CppUnit::TestFixture, - public TaskListener - { - CPPUNIT_TEST_SUITE( ThreadPoolTest ); - CPPUNIT_TEST( test1 ); - CPPUNIT_TEST( test2 ); - CPPUNIT_TEST_SUITE_END(); - - int tasksToComplete; - int complete; - Mutex mutex; - bool caughtEx; - CountDownLatch* latch; - - public: - - ThreadPoolTest() { - complete = 0; - tasksToComplete = 0; - caughtEx = false; - latch = NULL; - } - - virtual ~ThreadPoolTest() {} - - virtual void onTaskComplete( lang::Runnable* task DECAF_UNUSED) - { - try{ - - complete++; - - if( latch != NULL ) { - latch->countDown(); - } - }catch( lang::Exception& ex ){ - ex.setMark( __FILE__, __LINE__ ); - } - } - - virtual void onTaskException( - lang::Runnable* task DECAF_UNUSED, - lang::Exception& ex DECAF_UNUSED) { - caughtEx = true; - } - - public: - - class MyTask : public lang::Runnable - { - public: - - int value; - - MyTask( int x ) { - value = x; - } - - virtual ~MyTask() {}; - - virtual void run(void) { - value += 100; - } - }; - - class MyWaitingTask : public lang::Runnable - { - public: - - Mutex* mutex; - CountDownLatch* startedLatch; - - MyWaitingTask( Mutex* mutex, CountDownLatch* startedLatch ) { - this->mutex = mutex; - this->startedLatch = startedLatch; - } - - virtual ~MyWaitingTask() {}; - - virtual void run(void) { - try - { - synchronized(mutex) { - startedLatch->countDown(); - mutex->wait(); - } - } - catch( lang::Exception& ex ) { - ex.setMark( __FILE__, __LINE__ ); - } - } - }; - - public: - - virtual void test1(); - virtual void test2(); - - }; - -}}} - -#endif /*_DECAF_UTIL_CONCURRENT_THREADPOOLTEST_H_*/
diff --git a/src/decaf/src/test/main.cpp b/src/decaf/src/test/main.cpp deleted file mode 100644 index d2ac513..0000000 --- a/src/decaf/src/test/main.cpp +++ /dev/null
@@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <cppunit/ui/text/TestRunner.h> -#include <cppunit/BriefTestProgressListener.h> -#include <cppunit/TestResult.h> -#include <decaf/util/Config.h> - -int main( int argc DECAF_UNUSED, char **argv DECAF_UNUSED ) -{ - CppUnit::TextUi::TestRunner runner; - CppUnit::TestFactoryRegistry ®istry = CppUnit::TestFactoryRegistry::getRegistry(); - runner.addTest( registry.makeTest() ); - - // Shows a message as each test starts - CppUnit::BriefTestProgressListener listener; - runner.eventManager().addListener( &listener ); - - bool wasSuccessful = runner.run( "", false ); - return !wasSuccessful; -}
diff --git a/src/decaf/src/test/testRegistry.cpp b/src/decaf/src/test/testRegistry.cpp deleted file mode 100644 index 216d185..0000000 --- a/src/decaf/src/test/testRegistry.cpp +++ /dev/null
@@ -1,88 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// All CPP Unit tests are registered in here so we can disable them and -// enable them easily in one place. - -//#include <decaf/io/BufferedInputStreamTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::BufferedInputStreamTest ); -//#include <decaf/io/BufferedOutputStreamTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::BufferedOutputStreamTest ); -//#include <decaf/io/ByteArrayInputStreamTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::ByteArrayInputStreamTest ); -//#include <decaf/io/ByteArrayOutputStreamTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::ByteArrayOutputStreamTest ); -//#include <decaf/io/DataInputStreamTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::DataInputStreamTest ); -//#include <decaf/io/DataOutputStreamTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::io::DataOutputStreamTest ); - -//#include <decaf/lang/MathTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::MathTest ); -//#include <decaf/lang/ByteTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ByteTest ); -//#include <decaf/lang/CharacterTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::CharacterTest ); -//#include <decaf/lang/BooleanTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::BooleanTest ); -//#include <decaf/lang/ShortTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ShortTest ); -//#include <decaf/lang/IntegerTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::IntegerTest ); -//#include <decaf/lang/LongTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::LongTest ); -//#include <decaf/lang/FloatTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::FloatTest ); -//#include <decaf/lang/DoubleTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::DoubleTest ); -//#include <decaf/lang/ExceptionTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ExceptionTest ); -//#include <decaf/lang/ThreadTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::ThreadTest ); -//#include <decaf/lang/SystemTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::lang::SystemTest ); -// -//#include <decaf/net/SocketFactoryTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::SocketFactoryTest ); -//#include <decaf/net/SocketTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::SocketTest ); -#include <decaf/net/URITest.h> -CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::URITest ); -#include <decaf/net/URISyntaxExceptionTest.h> -CPPUNIT_TEST_SUITE_REGISTRATION( decaf::net::URISyntaxExceptionTest ); -// -//#include <decaf/util/concurrent/CountDownLatchTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::CountDownLatchTest ); -//#include <decaf/util/concurrent/MutexTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::MutexTest ); -//#include <decaf/util/concurrent/ThreadPoolTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::concurrent::ThreadPoolTest ); -// -//#include <decaf/util/DateTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::DateTest ); -//#include <decaf/util/UUIDTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::UUIDTest ); -//#include <decaf/util/MapTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::MapTest ); -//#include <decaf/util/QueueTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::QueueTest ); -//#include <decaf/util/RandomTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::RandomTest ); -//#include <decaf/util/SetTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::SetTest ); -//#include <decaf/util/StringTokenizerTest.h> -//CPPUNIT_TEST_SUITE_REGISTRATION( decaf::util::StringTokenizerTest );
diff --git a/src/decaf/vs2005-build/vs2005-decaf-example.vcproj b/src/decaf/vs2005-build/vs2005-decaf-example.vcproj deleted file mode 100644 index 3215efd..0000000 --- a/src/decaf/vs2005-build/vs2005-decaf-example.vcproj +++ /dev/null
@@ -1,379 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8.00" - Name="vs2005-decaf-example" - ProjectGUID="{3F0BD46A-0AD3-4FAE-9962-F3A252E53498}" - RootNamespace="vs2005decafexample" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="1" - BuildLogFile="$(IntDir)\$(ProjectName)\BuildLog.htm" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\src\test;..\src\main;"C:\Program Files\CPPUnit\include";"C:\Program Files\Microsoft Platform SDK\Include";"D:\Program Files\Microsoft Platform SDK\Include";"C:\Apps\cppunit-1.11.6\include";"E:\dev\cppunit-1.11.6\include"" - PreprocessorDefinitions="WIN32;WIN32_LEAN_AND_MEAN;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;NOMINMAX" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - UsePrecompiledHeader="0" - ObjectFile="$(IntDir)\$(ProjectName)\" - ProgramDataBaseFileName="$(IntDir)\$(ProjectName)\vc80.pdb" - XMLDocumentationFileName="$(IntDir)\$(ProjectName)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - DisableSpecificWarnings="4290, 4101" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="ws2_32.lib rpcrt4.lib cppunitd.lib" - OutputFile="$(OutDir)\$(ProjectName).exe" - LinkIncremental="2" - AdditionalLibraryDirectories=""C:\Program Files\CPPUnit\lib";"C:\Apps\cppunit-1.11.6\lib";"E:\dev\cppunit-1.11.6\lib";"C:\Program Files\Microsoft Platform SDK\Lib";"D:\Program Files\Microsoft Platform SDK\Lib"" - ManifestFile="$(IntDir)\$(ProjectName)\$(TargetFileName).intermediate.manifest" - GenerateDebugInformation="true" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - OutputManifestFile="$(IntDir)\$(ProjectName)\$(TargetFileName).embed.manifest" - ManifestResourceFile="$(IntDir)\$(ProjectName)\$(TargetFileName).embed.manifest.res" - DependencyInformationFile="$(IntDir)\$(ProjectName)\mt.dep" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="1" - WholeProgramOptimization="1" - BuildLogFile="$(IntDir)\$(ProjectName)\BuildLog.htm" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\src\test;..\src\main;"C:\Program Files\CPPUnit\include";"C:\Apps\cppunit-1.11.6\include";"E:\dev\cppunit-1.11.6\include";"C:\Program Files\Microsoft Platform SDK\Include";"D:\Program Files\Microsoft Platform SDK\Include"" - PreprocessorDefinitions="WIN32;WIN32_LEAN_AND_MEAN;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;NOMINMAX" - RuntimeLibrary="2" - UsePrecompiledHeader="0" - ObjectFile="$(IntDir)\$(ProjectName)\" - ProgramDataBaseFileName="$(IntDir)\$(ProjectName)\vc80.pdb" - XMLDocumentationFileName="$(IntDir)\$(ProjectName)\" - WarningLevel="2" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="ws2_32.lib rpcrt4.lib cppunit.lib" - OutputFile="$(OutDir)\$(ProjectName).exe" - LinkIncremental="1" - AdditionalLibraryDirectories=""C:\Program Files\CPPUnit\lib";"C:\Apps\cppunit-1.11.6\lib";"E:\dev\cppunit-1.11.6\lib";"C:\Program Files\Microsoft Platform SDK\Lib";"D:\Program Files\Microsoft Platform SDK\Lib"" - ManifestFile="$(IntDir)\$(ProjectName)\$(TargetFileName).intermediate.manifest" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - OutputManifestFile="$(IntDir)\$(ProjectName)\$(TargetFileName).embed.manifest" - ManifestResourceFile="$(IntDir)\$(ProjectName)\$(TargetFileName).embed.manifest.res" - DependencyInformationFile="$(IntDir)\$(ProjectName)\mt.dep" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseDLL|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="1" - WholeProgramOptimization="1" - BuildLogFile="$(IntDir)\$(ProjectName)\BuildLog.htm" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\src\test;..\src\main;"C:\Program Files\CPPUnit\include";"C:\Apps\cppunit-1.11.6\include";"E:\dev\cppunit-1.11.6\include";"C:\Program Files\Microsoft Platform SDK\Include";"D:\Program Files\Microsoft Platform SDK\Include"" - PreprocessorDefinitions="WIN32;WIN32_LEAN_AND_MEAN;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;DECAF_DLL" - RuntimeLibrary="2" - UsePrecompiledHeader="0" - ObjectFile="$(IntDir)\$(ProjectName)\" - ProgramDataBaseFileName="$(IntDir)\$(ProjectName)\vc80.pdb" - XMLDocumentationFileName="$(IntDir)\$(ProjectName)\" - WarningLevel="2" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="ws2_32.lib rpcrt4.lib cppunit.lib" - OutputFile="$(OutDir)\$(ProjectName).exe" - LinkIncremental="1" - AdditionalLibraryDirectories=""C:\Program Files\CPPUnit\lib";"C:\Apps\cppunit-1.11.6\lib";"E:\dev\cppunit-1.11.6\lib";"C:\Program Files\Microsoft Platform SDK\Lib";"D:\Program Files\Microsoft Platform SDK\Lib"" - ManifestFile="$(IntDir)\$(ProjectName)\$(TargetFileName).intermediate.manifest" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - OutputManifestFile="$(IntDir)\$(ProjectName)\$(TargetFileName).embed.manifest" - ManifestResourceFile="$(IntDir)\$(ProjectName)\$(TargetFileName).embed.manifest.res" - DependencyInformationFile="$(IntDir)\$(ProjectName)\mt.dep" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="DebugDLL|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="1" - BuildLogFile="$(IntDir)\$(ProjectName)\BuildLog.htm" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\src\test;..\src\main;"C:\Program Files\CPPUnit\include";"C:\Program Files\Microsoft Platform SDK\Include";"D:\Program Files\Microsoft Platform SDK\Include";"C:\Apps\cppunit-1.11.6\include";"E:\dev\cppunit-1.11.6\include"" - PreprocessorDefinitions="WIN32;WIN32_LEAN_AND_MEAN;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;DECAF_DLL" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - UsePrecompiledHeader="0" - ObjectFile="$(IntDir)\$(ProjectName)\" - ProgramDataBaseFileName="$(IntDir)\$(ProjectName)\vc80.pdb" - XMLDocumentationFileName="$(IntDir)\$(ProjectName)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - DisableSpecificWarnings="4290, 4101" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="ws2_32.lib rpcrt4.lib cppunitd.lib" - OutputFile="$(OutDir)\$(ProjectName).exe" - LinkIncremental="2" - AdditionalLibraryDirectories=""C:\Program Files\CPPUnit\lib";"C:\Apps\cppunit-1.11.6\lib";"E:\dev\cppunit-1.11.6\lib";"C:\Program Files\Microsoft Platform SDK\Lib";"D:\Program Files\Microsoft Platform SDK\Lib"" - ManifestFile="$(IntDir)\$(ProjectName)\$(TargetFileName).intermediate.manifest" - GenerateDebugInformation="true" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - OutputManifestFile="$(IntDir)\$(ProjectName)\$(TargetFileName).embed.manifest" - ManifestResourceFile="$(IntDir)\$(ProjectName)\$(TargetFileName).embed.manifest.res" - DependencyInformationFile="$(IntDir)\$(ProjectName)\mt.dep" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <File - RelativePath="..\src\examples\main.cpp" - > - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject>
diff --git a/src/decaf/vs2005-build/vs2005-decaf-unittests.vcproj b/src/decaf/vs2005-build/vs2005-decaf-unittests.vcproj deleted file mode 100644 index ebd02ee..0000000 --- a/src/decaf/vs2005-build/vs2005-decaf-unittests.vcproj +++ /dev/null
@@ -1,535 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8.00" - Name="vs2005-decaf-unittests" - ProjectGUID="{71582D83-8CC9-4C85-83BF-2E272B6DAE8A}" - RootNamespace="vs2005decafunittests" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="1" - BuildLogFile="$(IntDir)\$(ProjectName)\BuildLog.htm" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\src\test;..\src\main;"C:\Program Files\CPPUnit\include";"C:\Program Files\Microsoft Platform SDK\Include";"D:\Program Files\Microsoft Platform SDK\Include";"C:\Apps\cppunit-1.11.6\include";"E:\dev\cppunit-1.11.6\include"" - PreprocessorDefinitions="WIN32;WIN32_LEAN_AND_MEAN;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;NOMINMAX" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - UsePrecompiledHeader="0" - ObjectFile="$(IntDir)\$(ProjectName)\" - ProgramDataBaseFileName="$(IntDir)\$(ProjectName)\vc80.pdb" - XMLDocumentationFileName="$(IntDir)\$(ProjectName)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - DisableSpecificWarnings="4290, 4101" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="ws2_32.lib rpcrt4.lib cppunitd.lib" - OutputFile="$(OutDir)\$(ProjectName).exe" - LinkIncremental="2" - AdditionalLibraryDirectories=""C:\Program Files\CPPUnit\lib";"C:\Apps\cppunit-1.11.6\lib";"E:\dev\cppunit-1.11.6\lib";"C:\Program Files\Microsoft Platform SDK\Lib";"D:\Program Files\Microsoft Platform SDK\Lib"" - ManifestFile="$(IntDir)\$(ProjectName)\$(TargetFileName).intermediate.manifest" - GenerateDebugInformation="true" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - OutputManifestFile="$(IntDir)\$(ProjectName)\$(TargetFileName).embed.manifest" - ManifestResourceFile="$(IntDir)\$(ProjectName)\$(TargetFileName).embed.manifest.res" - DependencyInformationFile="$(IntDir)\$(ProjectName)\mt.dep" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="1" - WholeProgramOptimization="1" - BuildLogFile="$(IntDir)\$(ProjectName)\BuildLog.htm" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\src\test;..\src\main;"C:\Program Files\CPPUnit\include";"C:\Apps\cppunit-1.11.6\include";"E:\dev\cppunit-1.11.6\include";"C:\Program Files\Microsoft Platform SDK\Include";"D:\Program Files\Microsoft Platform SDK\Include"" - PreprocessorDefinitions="WIN32;WIN32_LEAN_AND_MEAN;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;NOMINMAX" - RuntimeLibrary="2" - UsePrecompiledHeader="0" - ObjectFile="$(IntDir)\$(ProjectName)\" - ProgramDataBaseFileName="$(IntDir)\$(ProjectName)\vc80.pdb" - XMLDocumentationFileName="$(IntDir)\$(ProjectName)\" - WarningLevel="2" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="ws2_32.lib rpcrt4.lib cppunit.lib" - OutputFile="$(OutDir)\$(ProjectName).exe" - LinkIncremental="1" - AdditionalLibraryDirectories=""C:\Program Files\CPPUnit\lib";"C:\Apps\cppunit-1.11.6\lib";"E:\dev\cppunit-1.11.6\lib";"C:\Program Files\Microsoft Platform SDK\Lib";"D:\Program Files\Microsoft Platform SDK\Lib"" - ManifestFile="$(IntDir)\$(ProjectName)\$(TargetFileName).intermediate.manifest" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - OutputManifestFile="$(IntDir)\$(ProjectName)\$(TargetFileName).embed.manifest" - ManifestResourceFile="$(IntDir)\$(ProjectName)\$(TargetFileName).embed.manifest.res" - DependencyInformationFile="$(IntDir)\$(ProjectName)\mt.dep" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseDLL|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="1" - WholeProgramOptimization="1" - BuildLogFile="$(IntDir)\$(ProjectName)\BuildLog.htm" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\src\test;..\src\main;"C:\Program Files\CPPUnit\include";"C:\Apps\cppunit-1.11.6\include";"E:\dev\cppunit-1.11.6\include";"C:\Program Files\Microsoft Platform SDK\Include";"D:\Program Files\Microsoft Platform SDK\Include"" - PreprocessorDefinitions="WIN32;WIN32_LEAN_AND_MEAN;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;DECAF_DLL" - RuntimeLibrary="2" - UsePrecompiledHeader="0" - ObjectFile="$(IntDir)\$(ProjectName)\" - ProgramDataBaseFileName="$(IntDir)\$(ProjectName)\vc80.pdb" - XMLDocumentationFileName="$(IntDir)\$(ProjectName)\" - WarningLevel="2" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="ws2_32.lib rpcrt4.lib cppunit.lib" - OutputFile="$(OutDir)\$(ProjectName).exe" - LinkIncremental="1" - AdditionalLibraryDirectories=""C:\Program Files\CPPUnit\lib";"C:\Apps\cppunit-1.11.6\lib";"E:\dev\cppunit-1.11.6\lib";"C:\Program Files\Microsoft Platform SDK\Lib";"D:\Program Files\Microsoft Platform SDK\Lib"" - ManifestFile="$(IntDir)\$(ProjectName)\$(TargetFileName).intermediate.manifest" - GenerateDebugInformation="true" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - OutputManifestFile="$(IntDir)\$(ProjectName)\$(TargetFileName).embed.manifest" - ManifestResourceFile="$(IntDir)\$(ProjectName)\$(TargetFileName).embed.manifest.res" - DependencyInformationFile="$(IntDir)\$(ProjectName)\mt.dep" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="DebugDLL|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="1" - CharacterSet="1" - BuildLogFile="$(IntDir)\$(ProjectName)\BuildLog.htm" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\src\test;..\src\main;"C:\Program Files\CPPUnit\include";"C:\Program Files\Microsoft Platform SDK\Include";"D:\Program Files\Microsoft Platform SDK\Include";"C:\Apps\cppunit-1.11.6\include";"E:\dev\cppunit-1.11.6\include"" - PreprocessorDefinitions="WIN32;WIN32_LEAN_AND_MEAN;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;DECAF_DLL" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - UsePrecompiledHeader="0" - ObjectFile="$(IntDir)\$(ProjectName)\" - ProgramDataBaseFileName="$(IntDir)\$(ProjectName)\vc80.pdb" - XMLDocumentationFileName="$(IntDir)\$(ProjectName)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - DisableSpecificWarnings="4290, 4101" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="ws2_32.lib rpcrt4.lib cppunitd.lib" - OutputFile="$(OutDir)\$(ProjectName).exe" - LinkIncremental="2" - AdditionalLibraryDirectories=""C:\Program Files\CPPUnit\lib";"C:\Apps\cppunit-1.11.6\lib";"E:\dev\cppunit-1.11.6\lib";"C:\Program Files\Microsoft Platform SDK\Lib";"D:\Program Files\Microsoft Platform SDK\Lib"" - ManifestFile="$(IntDir)\$(ProjectName)\$(TargetFileName).intermediate.manifest" - GenerateDebugInformation="true" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - OutputManifestFile="$(IntDir)\$(ProjectName)\$(TargetFileName).embed.manifest" - ManifestResourceFile="$(IntDir)\$(ProjectName)\$(TargetFileName).embed.manifest.res" - DependencyInformationFile="$(IntDir)\$(ProjectName)\mt.dep" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="decaf" - > - <Filter - Name="io" - > - <File - RelativePath="..\src\test\decaf\io\BufferedInputStreamTest.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\io\BufferedInputStreamTest.h" - > - </File> - <File - RelativePath="..\src\test\decaf\io\BufferedOutputStreamTest.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\io\BufferedOutputStreamTest.h" - > - </File> - <File - RelativePath="..\src\test\decaf\io\ByteArrayInputStreamTest.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\io\ByteArrayInputStreamTest.h" - > - </File> - <File - RelativePath="..\src\test\decaf\io\ByteArrayOutputStreamTest.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\io\ByteArrayOutputStreamTest.h" - > - </File> - <File - RelativePath="..\src\test\decaf\io\DataInputStreamTest.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\io\DataInputStreamTest.h" - > - </File> - <File - RelativePath="..\src\test\decaf\io\DataOutputStreamTest.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\io\DataOutputStreamTest.h" - > - </File> - </Filter> - <Filter - Name="lang" - > - <File - RelativePath="..\src\test\decaf\lang\BooleanTest.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\lang\BooleanTest.h" - > - </File> - <File - RelativePath="..\src\test\decaf\lang\IntegerTest.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\lang\IntegerTest.h" - > - </File> - <File - RelativePath="..\src\test\decaf\lang\LongTest.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\lang\LongTest.h" - > - </File> - <File - RelativePath="..\src\test\decaf\lang\ThreadTest.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\lang\ThreadTest.h" - > - </File> - </Filter> - <Filter - Name="util" - > - <File - RelativePath="..\src\test\decaf\util\DateTest.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\util\DateTest.h" - > - </File> - <File - RelativePath="..\src\test\decaf\util\Endian.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\util\Endian.h" - > - </File> - <File - RelativePath="..\src\test\decaf\util\GuidTest.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\util\GuidTest.h" - > - </File> - <File - RelativePath="..\src\test\decaf\util\StringTokenizerTest.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\util\StringTokenizerTest.h" - > - </File> - <Filter - Name="concurrent" - > - <File - RelativePath="..\src\test\decaf\util\concurrent\CountDownLatchTest.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\util\concurrent\CountDownLatchTest.h" - > - </File> - <File - RelativePath="..\src\test\decaf\util\concurrent\MutexTest.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\util\concurrent\MutexTest.h" - > - </File> - <File - RelativePath="..\src\test\decaf\util\concurrent\ThreadPoolTest.cpp" - > - </File> - <File - RelativePath="..\src\test\decaf\util\concurrent\ThreadPoolTest.h" - > - </File> - </Filter> - </Filter> - </Filter> - <File - RelativePath="..\src\test\main.cpp" - > - </File> - </Files> - <Globals> - </Globals> -</VisualStudioProject>
diff --git a/src/decaf/vs2005-build/vs2005-decaf.sln b/src/decaf/vs2005-build/vs2005-decaf.sln deleted file mode 100644 index e76b9f6..0000000 --- a/src/decaf/vs2005-build/vs2005-decaf.sln +++ /dev/null
@@ -1,51 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual C++ Express 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vs2005-decaf", "vs2005-decaf.vcproj", "{D85BD1AB-82E9-4012-BEBE-67AD5CE2E399}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vs2005-decaf-unittests", "vs2005-decaf-unittests.vcproj", "{71582D83-8CC9-4C85-83BF-2E272B6DAE8A}" - ProjectSection(ProjectDependencies) = postProject - {D85BD1AB-82E9-4012-BEBE-67AD5CE2E399} = {D85BD1AB-82E9-4012-BEBE-67AD5CE2E399} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vs2005-decaf-example", "vs2005-decaf-example.vcproj", "{3F0BD46A-0AD3-4FAE-9962-F3A252E53498}" - ProjectSection(ProjectDependencies) = postProject - {D85BD1AB-82E9-4012-BEBE-67AD5CE2E399} = {D85BD1AB-82E9-4012-BEBE-67AD5CE2E399} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - DebugDLL|Win32 = DebugDLL|Win32 - Release|Win32 = Release|Win32 - ReleaseDLL|Win32 = ReleaseDLL|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D85BD1AB-82E9-4012-BEBE-67AD5CE2E399}.Debug|Win32.ActiveCfg = Debug|Win32 - {D85BD1AB-82E9-4012-BEBE-67AD5CE2E399}.Debug|Win32.Build.0 = Debug|Win32 - {D85BD1AB-82E9-4012-BEBE-67AD5CE2E399}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 - {D85BD1AB-82E9-4012-BEBE-67AD5CE2E399}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 - {D85BD1AB-82E9-4012-BEBE-67AD5CE2E399}.Release|Win32.ActiveCfg = Release|Win32 - {D85BD1AB-82E9-4012-BEBE-67AD5CE2E399}.Release|Win32.Build.0 = Release|Win32 - {D85BD1AB-82E9-4012-BEBE-67AD5CE2E399}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 - {D85BD1AB-82E9-4012-BEBE-67AD5CE2E399}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 - {71582D83-8CC9-4C85-83BF-2E272B6DAE8A}.Debug|Win32.ActiveCfg = Debug|Win32 - {71582D83-8CC9-4C85-83BF-2E272B6DAE8A}.Debug|Win32.Build.0 = Debug|Win32 - {71582D83-8CC9-4C85-83BF-2E272B6DAE8A}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 - {71582D83-8CC9-4C85-83BF-2E272B6DAE8A}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 - {71582D83-8CC9-4C85-83BF-2E272B6DAE8A}.Release|Win32.ActiveCfg = Release|Win32 - {71582D83-8CC9-4C85-83BF-2E272B6DAE8A}.Release|Win32.Build.0 = Release|Win32 - {71582D83-8CC9-4C85-83BF-2E272B6DAE8A}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 - {71582D83-8CC9-4C85-83BF-2E272B6DAE8A}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 - {3F0BD46A-0AD3-4FAE-9962-F3A252E53498}.Debug|Win32.ActiveCfg = Debug|Win32 - {3F0BD46A-0AD3-4FAE-9962-F3A252E53498}.Debug|Win32.Build.0 = Debug|Win32 - {3F0BD46A-0AD3-4FAE-9962-F3A252E53498}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 - {3F0BD46A-0AD3-4FAE-9962-F3A252E53498}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 - {3F0BD46A-0AD3-4FAE-9962-F3A252E53498}.Release|Win32.ActiveCfg = Release|Win32 - {3F0BD46A-0AD3-4FAE-9962-F3A252E53498}.Release|Win32.Build.0 = Release|Win32 - {3F0BD46A-0AD3-4FAE-9962-F3A252E53498}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 - {3F0BD46A-0AD3-4FAE-9962-F3A252E53498}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal
diff --git a/src/decaf/vs2005-build/vs2005-decaf.vcproj b/src/decaf/vs2005-build/vs2005-decaf.vcproj deleted file mode 100644 index c5653a6..0000000 --- a/src/decaf/vs2005-build/vs2005-decaf.vcproj +++ /dev/null
@@ -1,794 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8.00" - Name="vs2005-decaf" - ProjectGUID="{D85BD1AB-82E9-4012-BEBE-67AD5CE2E399}" - RootNamespace="vs2005decaf" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)\$(ProjectName)" - ConfigurationType="4" - CharacterSet="1" - BuildLogFile="$(IntDir)\$(ProjectName)\BuildLog.htm" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - UseUnicodeResponseFiles="false" - Optimization="0" - AdditionalIncludeDirectories="..\src\main;"C:\Program Files\Microsoft Platform SDK\Include";"D:\Program Files\Microsoft Platform SDK\Include"" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;$(NOINHERIT)" - KeepComments="false" - MinimalRebuild="false" - ExceptionHandling="1" - BasicRuntimeChecks="0" - RuntimeLibrary="3" - UsePrecompiledHeader="0" - ObjectFile="$(IntDir)\$(ProjectName)\" - ProgramDataBaseFileName="$(IntDir)\$(ProjectName)\vc80.pdb" - XMLDocumentationFileName="$(IntDir)\$(ProjectName)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - DisableSpecificWarnings="4290;4101" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)\libdecafd.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)\$(ProjectName)" - ConfigurationType="4" - CharacterSet="1" - WholeProgramOptimization="1" - BuildLogFile="$(IntDir)\$(ProjectName)\BuildLog.htm" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - UseUnicodeResponseFiles="false" - AdditionalIncludeDirectories="..\src\main;"C:\Program Files\Microsoft Platform SDK\Include";"D:\Program Files\Microsoft Platform SDK\Include"" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;$(NOINHERIT)" - RuntimeLibrary="2" - UsePrecompiledHeader="0" - ObjectFile="$(IntDir)\$(ProjectName)\" - ProgramDataBaseFileName="$(IntDir)\$(ProjectName)\vc80.pdb" - XMLDocumentationFileName="$(IntDir)\$(ProjectName)\" - WarningLevel="2" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="$(OutDir)\libdecaf.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="ReleaseDLL|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="2" - CharacterSet="1" - WholeProgramOptimization="1" - BuildLogFile="$(IntDir)\$(ProjectName)\BuildLog.htm" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - UseUnicodeResponseFiles="false" - AdditionalIncludeDirectories="..\src\main;"C:\Program Files\Microsoft Platform SDK\Include";"D:\Program Files\Microsoft Platform SDK\Include"" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_WINDOWS;_USRDLL;DECAF_DLL;DECAF_EXPORTS;$(NOINHERIT)" - RuntimeLibrary="2" - UsePrecompiledHeader="0" - ObjectFile="$(IntDir)\$(ProjectName)\" - ProgramDataBaseFileName="$(IntDir)\$(ProjectName)\vc80.pdb" - XMLDocumentationFileName="$(IntDir)\$(ProjectName)\" - WarningLevel="2" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - DisableSpecificWarnings="4251" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="ws2_32.lib rpcrt4.lib" - OutputFile="$(OutDir)\decaf.dll" - GenerateDebugInformation="true" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="DebugDLL|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="2" - CharacterSet="1" - BuildLogFile="$(IntDir)\$(ProjectName)\BuildLog.htm" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - UseUnicodeResponseFiles="false" - Optimization="0" - AdditionalIncludeDirectories="..\src\main;"C:\Program Files\Microsoft Platform SDK\Include";"D:\Program Files\Microsoft Platform SDK\Include"" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_DEPRECATE;NOMINMAX;_WINDOWS;_USRDLL;DECAF_DLL;DECAF_EXPORTS;$(NOINHERIT)" - KeepComments="false" - MinimalRebuild="false" - ExceptionHandling="1" - BasicRuntimeChecks="0" - RuntimeLibrary="3" - UsePrecompiledHeader="0" - ObjectFile="$(IntDir)\$(ProjectName)\" - ProgramDataBaseFileName="$(IntDir)\$(ProjectName)\vc80.pdb" - XMLDocumentationFileName="$(IntDir)\$(ProjectName)\" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - DisableSpecificWarnings="4290;4101;4251" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalDependencies="ws2_32.lib rpcrt4.lib" - OutputFile="$(OutDir)\decafd.dll" - GenerateDebugInformation="true" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="decaf" - > - <Filter - Name="io" - > - <File - RelativePath="..\src\main\decaf\io\BlockingByteArrayInputStream.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\io\BlockingByteArrayInputStream.h" - > - </File> - <File - RelativePath="..\src\main\decaf\io\BufferedInputStream.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\io\BufferedInputStream.h" - > - </File> - <File - RelativePath="..\src\main\decaf\io\BufferedOutputStream.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\io\BufferedOutputStream.h" - > - </File> - <File - RelativePath="..\src\main\decaf\io\ByteArrayInputStream.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\io\ByteArrayInputStream.h" - > - </File> - <File - RelativePath="..\src\main\decaf\io\ByteArrayOutputStream.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\io\ByteArrayOutputStream.h" - > - </File> - <File - RelativePath="..\src\main\decaf\io\Closeable.h" - > - </File> - <File - RelativePath="..\src\main\decaf\io\DataInputStream.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\io\DataInputStream.h" - > - </File> - <File - RelativePath="..\src\main\decaf\io\DataOutputStream.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\io\DataOutputStream.h" - > - </File> - <File - RelativePath="..\src\main\decaf\io\EOFException.h" - > - </File> - <File - RelativePath="..\src\main\decaf\io\FilterInputStream.h" - > - </File> - <File - RelativePath="..\src\main\decaf\io\FilterOutputStream.h" - > - </File> - <File - RelativePath="..\src\main\decaf\io\InputStream.h" - > - </File> - <File - RelativePath="..\src\main\decaf\io\IOException.h" - > - </File> - <File - RelativePath="..\src\main\decaf\io\OutputStream.h" - > - </File> - <File - RelativePath="..\src\main\decaf\io\Reader.h" - > - </File> - <File - RelativePath="..\src\main\decaf\io\StandardErrorOutputStream.h" - > - </File> - <File - RelativePath="..\src\main\decaf\io\Writer.h" - > - </File> - </Filter> - <Filter - Name="lang" - > - <File - RelativePath="..\src\main\decaf\lang\Boolean.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\Boolean.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\Character.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\Exception.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\Exception.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\Integer.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\Integer.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\Long.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\Long.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\Math.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\Number.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\Runnable.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\Thread.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\Thread.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\Throwable.h" - > - </File> - <Filter - Name="exceptions" - > - <File - RelativePath="..\src\main\decaf\lang\exceptions\ExceptionDefines.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\exceptions\IllegalArgumentException.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\exceptions\IllegalMonitorStateException.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\exceptions\IllegalStateException.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\exceptions\IndexOutOfBoundsException.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\exceptions\InterruptedException.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\exceptions\InvalidStateException.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\exceptions\NoSuchElementException.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\exceptions\NullPointerException.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\exceptions\RuntimeException.h" - > - </File> - <File - RelativePath="..\src\main\decaf\lang\exceptions\UnsupportedOperationException.h" - > - </File> - </Filter> - </Filter> - <Filter - Name="net" - > - <File - RelativePath="..\src\main\decaf\net\BufferedSocket.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\net\BufferedSocket.h" - > - </File> - <File - RelativePath="..\src\main\decaf\net\ServerSocket.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\net\ServerSocket.h" - > - </File> - <File - RelativePath="..\src\main\decaf\net\Socket.h" - > - </File> - <File - RelativePath="..\src\main\decaf\net\SocketError.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\net\SocketError.h" - > - </File> - <File - RelativePath="..\src\main\decaf\net\SocketException.h" - > - </File> - <File - RelativePath="..\src\main\decaf\net\SocketInputStream.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\net\SocketInputStream.h" - > - </File> - <File - RelativePath="..\src\main\decaf\net\SocketOutputStream.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\net\SocketOutputStream.h" - > - </File> - <File - RelativePath="..\src\main\decaf\net\TcpSocket.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\net\TcpSocket.h" - > - </File> - </Filter> - <Filter - Name="util" - > - <File - RelativePath="..\src\main\decaf\util\Config.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\Date.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\util\Date.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\Guid.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\util\Guid.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\Map.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\Properties.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\Queue.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\Set.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\StringTokenizer.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\util\StringTokenizer.h" - > - </File> - <Filter - Name="logging" - > - <File - RelativePath="..\src\main\decaf\util\logging\ConsoleHandler.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\Filter.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\Formatter.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\Handler.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\Logger.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\Logger.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\LoggerCommon.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\LoggerDefines.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\LoggerHierarchy.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\LoggerHierarchy.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\LogManager.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\LogManager.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\LogRecord.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\LogWriter.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\LogWriter.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\MarkBlockLogger.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\PropertiesChangeListener.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\SimpleFormatter.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\SimpleLogger.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\SimpleLogger.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\logging\StreamHandler.h" - > - </File> - </Filter> - <Filter - Name="concurrent" - > - <File - RelativePath="..\src\main\decaf\util\concurrent\Concurrent.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\concurrent\CountDownLatch.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\util\concurrent\CountDownLatch.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\concurrent\Lock.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\concurrent\Mutex.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\util\concurrent\Mutex.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\concurrent\PooledThread.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\util\concurrent\PooledThread.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\concurrent\PooledThreadListener.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\concurrent\Synchronizable.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\concurrent\TaskListener.h" - > - </File> - <File - RelativePath="..\src\main\decaf\util\concurrent\ThreadPool.cpp" - > - </File> - <File - RelativePath="..\src\main\decaf\util\concurrent\ThreadPool.h" - > - </File> - </Filter> - </Filter> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject>