From 75001496cf1a4fe3e438b0f943ee07a1aa549072 Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Mon, 13 Oct 2014 22:55:59 +0100 Subject: [PATCH] Remove unused files from vendor directory --- vendor/JXInput/0.3.4/c/JXInputManager.cpp | 175 -- vendor/JXInput/0.3.4/c/JXInputManager.h | 47 - vendor/JXInput/0.3.4/c/ReadMe.txt | 37 - vendor/JXInput/0.3.4/c/StdAfx.cpp | 9 - vendor/JXInput/0.3.4/c/StdAfx.h | 32 - ..._jxinput_directinput_DirectInputDriver.cpp | 279 -- ...de_jxinput_directinput_DirectInputDriver.h | 183 -- vendor/JXInput/0.3.4/c/dllmain.cpp | 24 - vendor/JXInput/0.3.4/c/jxinput.cpp | 600 ----- vendor/JXInput/0.3.4/c/jxinput.dsp | 175 -- vendor/JXInput/0.3.4/c/jxinput.dsw | 29 - vendor/JXInput/0.3.4/c/jxinput.h | 183 -- vendor/JXInput/0.3.4/c/jxinput.sln | 20 - vendor/JXInput/0.3.4/c/jxinput.vcproj | 367 --- .../0.3.4/java/de/hardcode/jxinput/Axis.java | 72 - .../java/de/hardcode/jxinput/Button.java | 35 - .../java/de/hardcode/jxinput/Directional.java | 45 - .../java/de/hardcode/jxinput/Feature.java | 38 - .../de/hardcode/jxinput/JXInputDevice.java | 71 - .../de/hardcode/jxinput/JXInputManager.java | 233 -- .../hardcode/jxinput/directinput/DIAxis.java | 70 - .../jxinput/directinput/DIButton.java | 55 - .../jxinput/directinput/DIDirectional.java | 78 - .../directinput/DirectInputDevice.java | 170 -- .../directinput/DirectInputDriver.java | 184 -- .../de/hardcode/jxinput/directinput/Log.java | 34 - .../jxinput/event/JXInputAxisEvent.java | 48 - .../event/JXInputAxisEventListener.java | 19 - .../jxinput/event/JXInputButtonEvent.java | 38 - .../event/JXInputButtonEventListener.java | 19 - .../event/JXInputDirectionalEvent.java | 56 - .../JXInputDirectionalEventListener.java | 19 - .../jxinput/event/JXInputEventManager.java | 284 --- .../jxinput/j3d/DeviceConfiguration.java | 95 - .../jxinput/j3d/IsActiveCondition.java | 25 - .../j3d/IsActiveOnButtonCondition.java | 39 - .../jxinput/j3d/IsAlwaysActiveCondition.java | 38 - .../hardcode/jxinput/j3d/J3DInputDevice.java | 171 -- .../java/de/hardcode/jxinput/j3d/package.html | 11 - .../jxinput/j3d/test/HelloUniverse.java | 205 -- .../jxinput/j3d/test/SensorBehavior.java | 70 - .../keyboard/InvalidKeyCodeException.java | 35 - .../keyboard/JXKeyboardInputDevice.java | 175 -- .../hardcode/jxinput/keyboard/KeyButton.java | 94 - .../jxinput/keyboard/KeyboardDriver.java | 141 -- .../de/hardcode/jxinput/keyboard/package.html | 10 - .../hardcode/jxinput/test/AxisListener.java | 39 - .../hardcode/jxinput/test/ButtonListener.java | 38 - .../jxinput/test/DirectionalListener.java | 37 - .../jxinput/test/JXInputDevicePanel.form | 97 - .../jxinput/test/JXInputDevicePanel.java | 296 --- .../jxinput/test/JXInputTestDialog.form | 79 - .../jxinput/test/JXInputTestDialog.java | 286 --- .../jxinput/util/LatestChangedValueAxis.java | 98 - .../de/hardcode/jxinput/util/OrButton.java | 52 - .../jxinput/virtual/JXVirtualInputDevice.java | 140 -- .../hardcode/jxinput/virtual/VirtualAxis.java | 207 -- .../jxinput/virtual/VirtualDriver.java | 95 - .../de/hardcode/jxinput/virtual/package.html | 11 - vendor/JXInput/0.3.4/jxinput.dll | Bin 94208 -> 0 bytes vendor/JXInput/0.3.4/jxinput.jar | Bin 73232 -> 0 bytes vendor/JavaWinampApi/1.1/cpp/Makefile.win | 34 - vendor/JavaWinampApi/1.1/cpp/WINAMPCMD.H | 62 - .../JavaWinampApi/1.1/cpp/WinampController.c | 587 ----- .../JavaWinampApi/1.1/cpp/WinampController.h | 285 --- vendor/JavaWinampApi/1.1/cpp/cpy.bat | 1 - vendor/JavaWinampApi/1.1/cpp/libwpcom.def | 58 - vendor/JavaWinampApi/1.1/cpp/wa_ipc.h | 1620 ------------ vendor/JavaWinampApi/1.1/cpp/wpcom.dev | 69 - vendor/JavaWinampApi/1.1/cpp/wpcom.layout | 17 - .../com/qotsa/exception/InvalidHandle.java | 40 - .../com/qotsa/exception/InvalidParameter.java | 40 - .../1.1/java/com/qotsa/exception/package.html | 20 - .../com/qotsa/jni/controller/JNIWinamp.java | 227 -- .../jni/controller/WinampController.java | 592 ----- .../com/qotsa/jni/controller/package.html | 20 - .../com/jacob/activeX/ActiveXComponent.java | 479 ---- .../jacob/activeX/ActiveXDispatchEvents.java | 106 - .../jacob/activeX/ActiveXInvocationProxy.java | 183 -- .../java/com/jacob/com/ComException.java | 141 -- .../java/com/jacob/com/ComFailException.java | 88 - .../1.15-M4/java/com/jacob/com/ComThread.java | 169 -- .../1.15-M4/java/com/jacob/com/Currency.java | 91 - .../java/com/jacob/com/DateUtilities.java | 105 - .../1.15-M4/java/com/jacob/com/Dispatch.java | 872 ------- .../java/com/jacob/com/DispatchEvents.java | 219 -- .../com/jacob/com/DispatchIdentifier.java | 82 - .../java/com/jacob/com/DispatchProxy.java | 92 - .../java/com/jacob/com/EnumVariant.java | 156 -- .../java/com/jacob/com/InvocationProxy.java | 108 - .../jacob/com/InvocationProxyAllVariants.java | 123 - .../java/com/jacob/com/JacobException.java | 49 - .../java/com/jacob/com/JacobObject.java | 110 - .../java/com/jacob/com/JacobReleaseInfo.java | 96 - .../java/com/jacob/com/LibraryLoader.java | 230 -- .../1.15-M4/java/com/jacob/com/MainSTA.java | 29 - .../jacob/com/NotImplementedException.java | 41 - .../jacob/1.15-M4/java/com/jacob/com/ROT.java | 279 -- .../jacob/1.15-M4/java/com/jacob/com/STA.java | 101 - .../1.15-M4/java/com/jacob/com/SafeArray.java | 1172 --------- .../1.15-M4/java/com/jacob/com/Variant.java | 2235 ----------------- .../java/com/jacob/com/VariantUtilities.java | 502 ---- .../java/com/jacob/com/VariantViaEvent.java | 34 - .../com/jacob/com/WrongThreadException.java | 47 - vendor/nativecall/0.4.1/NativeCall.dll | Bin 7680 -> 0 bytes vendor/nativecall/0.4.1/cpp/Debug/IntCall.asm | 1766 ------------- vendor/nativecall/0.4.1/cpp/Debug/IntCall.obj | Bin 27787 -> 0 bytes .../nativecall/0.4.1/cpp/Debug/NativeCall.asm | 1492 ----------- .../nativecall/0.4.1/cpp/Debug/NativeCall.dll | Bin 233590 -> 0 bytes .../nativecall/0.4.1/cpp/Debug/NativeCall.obj | Bin 29095 -> 0 bytes vendor/nativecall/0.4.1/cpp/Debug/RCa01372 | Bin 4904 -> 0 bytes vendor/nativecall/0.4.1/cpp/Debug/RCa01444 | Bin 4904 -> 0 bytes vendor/nativecall/0.4.1/cpp/Debug/RCa01468 | Bin 4904 -> 0 bytes .../nativecall/0.4.1/cpp/Debug/VoidCall.asm | 1743 ------------- .../nativecall/0.4.1/cpp/Debug/VoidCall.obj | Bin 27719 -> 0 bytes vendor/nativecall/0.4.1/cpp/IntCall.cpp | 236 -- vendor/nativecall/0.4.1/cpp/NativeCall.cpp | 234 -- vendor/nativecall/0.4.1/cpp/NativeCall.dsp | 132 - vendor/nativecall/0.4.1/cpp/NativeCall.dsw | 29 - .../nativecall/0.4.1/cpp/Release/IntCall.asm | 943 ------- .../nativecall/0.4.1/cpp/Release/IntCall.obj | Bin 3896 -> 0 bytes .../0.4.1/cpp/Release/NativeCall.asm | 859 ------- .../0.4.1/cpp/Release/NativeCall.dll | Bin 7680 -> 0 bytes .../0.4.1/cpp/Release/NativeCall.map | 101 - .../0.4.1/cpp/Release/NativeCall.obj | Bin 6571 -> 0 bytes vendor/nativecall/0.4.1/cpp/Release/RCa01380 | Bin 4904 -> 0 bytes .../nativecall/0.4.1/cpp/Release/VoidCall.asm | 919 ------- .../nativecall/0.4.1/cpp/Release/VoidCall.obj | Bin 3885 -> 0 bytes vendor/nativecall/0.4.1/cpp/VoidCall.cpp | 228 -- .../0.4.1/cpp/com_eaio_nativecall_IntCall.h | 29 - .../cpp/com_eaio_nativecall_NativeCall.h | 45 - .../0.4.1/cpp/com_eaio_nativecall_VoidCall.h | 29 - vendor/nativecall/0.4.1/cpp/readme.txt | 25 - vendor/nativecall/0.4.1/cpp/resource.h | 15 - vendor/nativecall/0.4.1/cpp/version.rc | 104 - .../services/com.eaio.nativecall.Verifier | 1 - .../java/com/eaio/nativecall/Holder.java | 133 - .../java/com/eaio/nativecall/IntCall.java | 143 -- .../java/com/eaio/nativecall/NativeCall.java | 355 --- .../java/com/eaio/nativecall/Verifier.java | 101 - .../java/com/eaio/nativecall/Verifiers.java | 83 - .../java/com/eaio/nativecall/VoidCall.java | 99 - .../com/eaio/nativecall/Win32Verifier.java | 122 - .../java/com/eaio/nativecall/package.html | 15 - vendor/nativecall/0.4.1/nativecall-0.4.1.jar | Bin 9414 -> 0 bytes .../0.4.1/nativeloader-200505172341.jar | Bin 4939 -> 0 bytes 146 files changed, 27904 deletions(-) delete mode 100644 vendor/JXInput/0.3.4/c/JXInputManager.cpp delete mode 100644 vendor/JXInput/0.3.4/c/JXInputManager.h delete mode 100644 vendor/JXInput/0.3.4/c/ReadMe.txt delete mode 100644 vendor/JXInput/0.3.4/c/StdAfx.cpp delete mode 100644 vendor/JXInput/0.3.4/c/StdAfx.h delete mode 100644 vendor/JXInput/0.3.4/c/de_hardcode_jxinput_directinput_DirectInputDriver.cpp delete mode 100644 vendor/JXInput/0.3.4/c/de_hardcode_jxinput_directinput_DirectInputDriver.h delete mode 100644 vendor/JXInput/0.3.4/c/dllmain.cpp delete mode 100644 vendor/JXInput/0.3.4/c/jxinput.cpp delete mode 100644 vendor/JXInput/0.3.4/c/jxinput.dsp delete mode 100644 vendor/JXInput/0.3.4/c/jxinput.dsw delete mode 100644 vendor/JXInput/0.3.4/c/jxinput.h delete mode 100644 vendor/JXInput/0.3.4/c/jxinput.sln delete mode 100644 vendor/JXInput/0.3.4/c/jxinput.vcproj delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/Axis.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/Button.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/Directional.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/Feature.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/JXInputDevice.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/JXInputManager.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DIAxis.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DIButton.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DIDirectional.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DirectInputDevice.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DirectInputDriver.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/Log.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputAxisEvent.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputAxisEventListener.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputButtonEvent.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputButtonEventListener.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputDirectionalEvent.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputDirectionalEventListener.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputEventManager.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/DeviceConfiguration.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/IsActiveCondition.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/IsActiveOnButtonCondition.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/IsAlwaysActiveCondition.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/J3DInputDevice.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/package.html delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/test/HelloUniverse.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/test/SensorBehavior.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/InvalidKeyCodeException.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/JXKeyboardInputDevice.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/KeyButton.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/KeyboardDriver.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/package.html delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/AxisListener.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/ButtonListener.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/DirectionalListener.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/JXInputDevicePanel.form delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/JXInputDevicePanel.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/JXInputTestDialog.form delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/JXInputTestDialog.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/util/LatestChangedValueAxis.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/util/OrButton.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/virtual/JXVirtualInputDevice.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/virtual/VirtualAxis.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/virtual/VirtualDriver.java delete mode 100644 vendor/JXInput/0.3.4/java/de/hardcode/jxinput/virtual/package.html delete mode 100644 vendor/JXInput/0.3.4/jxinput.dll delete mode 100644 vendor/JXInput/0.3.4/jxinput.jar delete mode 100644 vendor/JavaWinampApi/1.1/cpp/Makefile.win delete mode 100644 vendor/JavaWinampApi/1.1/cpp/WINAMPCMD.H delete mode 100644 vendor/JavaWinampApi/1.1/cpp/WinampController.c delete mode 100644 vendor/JavaWinampApi/1.1/cpp/WinampController.h delete mode 100644 vendor/JavaWinampApi/1.1/cpp/cpy.bat delete mode 100644 vendor/JavaWinampApi/1.1/cpp/libwpcom.def delete mode 100644 vendor/JavaWinampApi/1.1/cpp/wa_ipc.h delete mode 100644 vendor/JavaWinampApi/1.1/cpp/wpcom.dev delete mode 100644 vendor/JavaWinampApi/1.1/cpp/wpcom.layout delete mode 100644 vendor/JavaWinampApi/1.1/java/com/qotsa/exception/InvalidHandle.java delete mode 100644 vendor/JavaWinampApi/1.1/java/com/qotsa/exception/InvalidParameter.java delete mode 100644 vendor/JavaWinampApi/1.1/java/com/qotsa/exception/package.html delete mode 100644 vendor/JavaWinampApi/1.1/java/com/qotsa/jni/controller/JNIWinamp.java delete mode 100644 vendor/JavaWinampApi/1.1/java/com/qotsa/jni/controller/WinampController.java delete mode 100644 vendor/JavaWinampApi/1.1/java/com/qotsa/jni/controller/package.html delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/activeX/ActiveXComponent.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/activeX/ActiveXDispatchEvents.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/activeX/ActiveXInvocationProxy.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/ComException.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/ComFailException.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/ComThread.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/Currency.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/DateUtilities.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/Dispatch.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/DispatchEvents.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/DispatchIdentifier.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/DispatchProxy.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/EnumVariant.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/InvocationProxy.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/InvocationProxyAllVariants.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/JacobException.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/JacobObject.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/JacobReleaseInfo.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/LibraryLoader.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/MainSTA.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/NotImplementedException.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/ROT.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/STA.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/SafeArray.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/Variant.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/VariantUtilities.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/VariantViaEvent.java delete mode 100644 vendor/jacob/1.15-M4/java/com/jacob/com/WrongThreadException.java delete mode 100644 vendor/nativecall/0.4.1/NativeCall.dll delete mode 100644 vendor/nativecall/0.4.1/cpp/Debug/IntCall.asm delete mode 100644 vendor/nativecall/0.4.1/cpp/Debug/IntCall.obj delete mode 100644 vendor/nativecall/0.4.1/cpp/Debug/NativeCall.asm delete mode 100644 vendor/nativecall/0.4.1/cpp/Debug/NativeCall.dll delete mode 100644 vendor/nativecall/0.4.1/cpp/Debug/NativeCall.obj delete mode 100644 vendor/nativecall/0.4.1/cpp/Debug/RCa01372 delete mode 100644 vendor/nativecall/0.4.1/cpp/Debug/RCa01444 delete mode 100644 vendor/nativecall/0.4.1/cpp/Debug/RCa01468 delete mode 100644 vendor/nativecall/0.4.1/cpp/Debug/VoidCall.asm delete mode 100644 vendor/nativecall/0.4.1/cpp/Debug/VoidCall.obj delete mode 100644 vendor/nativecall/0.4.1/cpp/IntCall.cpp delete mode 100644 vendor/nativecall/0.4.1/cpp/NativeCall.cpp delete mode 100644 vendor/nativecall/0.4.1/cpp/NativeCall.dsp delete mode 100644 vendor/nativecall/0.4.1/cpp/NativeCall.dsw delete mode 100644 vendor/nativecall/0.4.1/cpp/Release/IntCall.asm delete mode 100644 vendor/nativecall/0.4.1/cpp/Release/IntCall.obj delete mode 100644 vendor/nativecall/0.4.1/cpp/Release/NativeCall.asm delete mode 100644 vendor/nativecall/0.4.1/cpp/Release/NativeCall.dll delete mode 100644 vendor/nativecall/0.4.1/cpp/Release/NativeCall.map delete mode 100644 vendor/nativecall/0.4.1/cpp/Release/NativeCall.obj delete mode 100644 vendor/nativecall/0.4.1/cpp/Release/RCa01380 delete mode 100644 vendor/nativecall/0.4.1/cpp/Release/VoidCall.asm delete mode 100644 vendor/nativecall/0.4.1/cpp/Release/VoidCall.obj delete mode 100644 vendor/nativecall/0.4.1/cpp/VoidCall.cpp delete mode 100644 vendor/nativecall/0.4.1/cpp/com_eaio_nativecall_IntCall.h delete mode 100644 vendor/nativecall/0.4.1/cpp/com_eaio_nativecall_NativeCall.h delete mode 100644 vendor/nativecall/0.4.1/cpp/com_eaio_nativecall_VoidCall.h delete mode 100644 vendor/nativecall/0.4.1/cpp/readme.txt delete mode 100644 vendor/nativecall/0.4.1/cpp/resource.h delete mode 100644 vendor/nativecall/0.4.1/cpp/version.rc delete mode 100644 vendor/nativecall/0.4.1/java/META-INF/services/com.eaio.nativecall.Verifier delete mode 100644 vendor/nativecall/0.4.1/java/com/eaio/nativecall/Holder.java delete mode 100644 vendor/nativecall/0.4.1/java/com/eaio/nativecall/IntCall.java delete mode 100644 vendor/nativecall/0.4.1/java/com/eaio/nativecall/NativeCall.java delete mode 100644 vendor/nativecall/0.4.1/java/com/eaio/nativecall/Verifier.java delete mode 100644 vendor/nativecall/0.4.1/java/com/eaio/nativecall/Verifiers.java delete mode 100644 vendor/nativecall/0.4.1/java/com/eaio/nativecall/VoidCall.java delete mode 100644 vendor/nativecall/0.4.1/java/com/eaio/nativecall/Win32Verifier.java delete mode 100644 vendor/nativecall/0.4.1/java/com/eaio/nativecall/package.html delete mode 100644 vendor/nativecall/0.4.1/nativecall-0.4.1.jar delete mode 100644 vendor/nativecall/0.4.1/nativeloader-200505172341.jar diff --git a/vendor/JXInput/0.3.4/c/JXInputManager.cpp b/vendor/JXInput/0.3.4/c/JXInputManager.cpp deleted file mode 100644 index 3718a7f..0000000 --- a/vendor/JXInput/0.3.4/c/JXInputManager.cpp +++ /dev/null @@ -1,175 +0,0 @@ - -#include "stdafx.h" -#include "JXInputManager.h" -#include "JXInput.h" - -// -// Globals -// -extern HINSTANCE g_hInst; - - -JXInputManager::JXInputManager( HWND hWnd ) : -mhWnd( hWnd ), -mDeviceCounter( 0 ) -{ - - for ( int i = 0; i < MAX_JXINPUTS; ++i ) - { - mDevices[ i ] = NULL; - } - - - if ( FAILED( InitDirectInput( hWnd ) ) ) - { - FreeDirectInput(); - } - -} - -JXInputManager::~JXInputManager() -{ - for ( int i = 0; i < getNumberOfJXInputs(); ++i ) - { - delete mDevices[ i ]; - mDevices[ i ] = NULL; - } - - FreeDirectInput(); -} - -int JXInputManager::getNumberOfJXInputs() const -{ - return mDeviceCounter; -} - -JXInput& JXInputManager::getJXInput( int idx ) const -{ - assert( idx < mDeviceCounter ); - return * mDevices[ idx ]; -} - - -int JXInputManager::getMaxNumberOfAxes() const -{ - return JXINPUT_MAX_AXES; -} - -int JXInputManager::getMaxNumberOfButtons() const -{ - return JXINPUT_MAX_BUTTONS; -} - -int JXInputManager::getMaxNumberOfDirectionals() const -{ - return JXINPUT_MAX_DIRECTIONALS; -} - - - -//----------------------------------------------------------------------------- -// Name: InitDirectInput() -// Desc: Initialize the DirectInput variables. -//----------------------------------------------------------------------------- -HRESULT JXInputManager::InitDirectInput( HWND hWnd ) -{ - HRESULT hr; - - // Register with the DirectInput subsystem and get a pointer - // to a IDirectInput interface we can use. - // Create a DInput object - if( FAILED( hr = DirectInput8Create( g_hInst, DIRECTINPUT_VERSION, - IID_IDirectInput8, (VOID**)&mpDI, NULL ) ) ) - return hr; - - // Look for a simple joystick we can use for this sample program. - if( FAILED( hr = mpDI->EnumDevices( DI8DEVCLASS_GAMECTRL, - EnumJoysticksCallback, - (VOID*)this, DIEDFL_ALLDEVICES /*| DIEDFL_INCLUDEPHANTOMS*/ ) ) ) - return hr; - - // Look for a other devices - if( FAILED( hr = mpDI->EnumDevices( DI8DEVCLASS_DEVICE, - EnumJoysticksCallback, - (VOID*)this, DIEDFL_ALLDEVICES /*| DIEDFL_INCLUDEPHANTOMS*/ ) ) ) - return hr; - - return S_OK; -} - - -//----------------------------------------------------------------------------- -// Name: FreeDirectInput() -// Desc: Initialize the DirectInput variables. -//----------------------------------------------------------------------------- -HRESULT JXInputManager::FreeDirectInput() -{ - - if ( NULL != mpDI ) - mpDI->Release(); - mpDI = NULL; - return S_OK; -} - - -//----------------------------------------------------------------------------- -// Name: EnumJoysticksCallback() -// Desc: Called once for each enumerated joystick. If we find one, create a -// device interface on it so we can play with it. -//----------------------------------------------------------------------------- -BOOL CALLBACK JXInputManager::EnumJoysticksCallback( const DIDEVICEINSTANCE* pdidInstance, - VOID* pContext ) -{ - HRESULT hr; - LPDIRECTINPUTDEVICE8 pJoystick; - - JXInputManager* pThis = (JXInputManager*)pContext; - - // - // if the maximum number of devices is already registered, - // issue a warning and stop enumeration. - // - if( MAX_JXINPUTS == pThis->mDeviceCounter ) - { - OutputDebugString( "Max. number of devices exceeded!" ); - return DIENUM_STOP; - } - - - - // Obtain an interface to the enumerated joystick. - hr = pThis->mpDI->CreateDevice( pdidInstance->guidInstance, &pJoystick, NULL ); - - // If it failed, then we can't use this joystick. (Maybe the user unplugged - // it while we were in the middle of enumerating it.) - if( FAILED(hr) ) - return DIENUM_CONTINUE; - - JXInput* pJ = new JXInput( pJoystick, pThis->mhWnd ); - - // - // only register useful devices - // - if( pJ->getNumberOfAxes() + pJ->getNumberOfButtons() + pJ->getNumberOfDirectionals() > 0 ) - { - pThis->addJXInput( pJ ); - } - else - { - delete pJ; - } - - return DIENUM_CONTINUE; -} - - -/** - * Register a JXInput device. - */ -void JXInputManager::addJXInput( JXInput* pJ ) -{ - assert( mDeviceCounter < MAX_JXINPUTS ); - - if( mDeviceCounter < MAX_JXINPUTS ) - mDevices[ mDeviceCounter++ ] = pJ; -} diff --git a/vendor/JXInput/0.3.4/c/JXInputManager.h b/vendor/JXInput/0.3.4/c/JXInputManager.h deleted file mode 100644 index 41b9da4..0000000 --- a/vendor/JXInput/0.3.4/c/JXInputManager.h +++ /dev/null @@ -1,47 +0,0 @@ -// JXInputManager.h: Schnittstelle für die Klasse JXInputManager. -// -////////////////////////////////////////////////////////////////////// - -#if !defined(AFX_JXINPUTMANAGER_H__24862402_14C9_407D_8532_A16A6E3A7D64__INCLUDED_) -#define AFX_JXINPUTMANAGER_H__24862402_14C9_407D_8532_A16A6E3A7D64__INCLUDED_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - - -#define MAX_JXINPUTS 10 - -class JXInput; - -class JXINPUT_API JXInputManager -{ -public: - JXInputManager( HWND hWnd ); - virtual ~JXInputManager(); - - int getNumberOfJXInputs() const; - JXInput& getJXInput( int idx ) const; - - // - // Numbering methods - // - int getMaxNumberOfAxes() const; - int getMaxNumberOfButtons() const; - int getMaxNumberOfDirectionals() const; - -private: - LPDIRECTINPUT8 mpDI; - HWND mhWnd; - JXInput* mDevices[ MAX_JXINPUTS ]; - int mDeviceCounter; - - HRESULT InitDirectInput( HWND hWnd = NULL ); - HRESULT FreeDirectInput(); - - static BOOL CALLBACK EnumJoysticksCallback( const DIDEVICEINSTANCE* pdidInstance, - VOID* pContext ); - void addJXInput( JXInput* pJ ); -}; - -#endif // !defined(AFX_JXINPUTMANAGER_H__24862402_14C9_407D_8532_A16A6E3A7D64__INCLUDED_) diff --git a/vendor/JXInput/0.3.4/c/ReadMe.txt b/vendor/JXInput/0.3.4/c/ReadMe.txt deleted file mode 100644 index 755cd4c..0000000 --- a/vendor/JXInput/0.3.4/c/ReadMe.txt +++ /dev/null @@ -1,37 +0,0 @@ -======================================================================== - DYNAMIC LINK LIBRARY : jxinput -======================================================================== - - -Diese jxinput-DLL hat der Anwendungs-Assistent für Sie erstellt. - -Diese Datei enthält eine Zusammenfassung dessen, was Sie in jeder der Dateien -finden, die Ihre jxinput-Anwendung bilden. - -jxinput.dsp - Diese Datei (Projektdatei) enthält Informationen auf Projektebene und wird zur - Erstellung eines einzelnen Projekts oder Teilprojekts verwendet. Andere Benutzer können - die Projektdatei (.dsp) gemeinsam nutzen, sollten aber die Makefiles lokal exportieren. - -jxinput.cpp - Dies ist die Hauptquellcodedatei für die DLL. - -jxinput.h - Diese Datei enthält Ihre DLL-Exporte. - -///////////////////////////////////////////////////////////////////////////// -Weitere Standarddateien: - -StdAfx.h, StdAfx.cpp - Diese Dateien werden zum Erstellen einer vorkompilierten Header-Datei (PCH) namens - jxinput.pch und einer vorkompilierten Typdatei namens StdAfx.obj verwendet. - - -///////////////////////////////////////////////////////////////////////////// -Weitere Hinweise: - -Der Anwendungs-Assistent verwendet "ZU ERLEDIGEN:", um Bereiche des Quellcodes zu -kennzeichnen, die Sie hinzufügen oder anpassen sollten. - - -///////////////////////////////////////////////////////////////////////////// diff --git a/vendor/JXInput/0.3.4/c/StdAfx.cpp b/vendor/JXInput/0.3.4/c/StdAfx.cpp deleted file mode 100644 index a144a09..0000000 --- a/vendor/JXInput/0.3.4/c/StdAfx.cpp +++ /dev/null @@ -1,9 +0,0 @@ -// stdafx.cpp : Quelltextdatei, die nur die Standard-Includes einbindet -// jxinput.pch ist die vorkompilierte Header-Datei -// stdafx.obj enthält die vorkompilierte Typinformation - -#include "stdafx.h" - -// ZU ERLEDIGEN: Verweis auf alle zusätzlichen Header-Dateien, die Sie in STDAFX.H -// und nicht in dieser Datei benötigen - diff --git a/vendor/JXInput/0.3.4/c/StdAfx.h b/vendor/JXInput/0.3.4/c/StdAfx.h deleted file mode 100644 index e139c4c..0000000 --- a/vendor/JXInput/0.3.4/c/StdAfx.h +++ /dev/null @@ -1,32 +0,0 @@ -// stdafx.h : Include-Datei für Standard-System-Include-Dateien, -// oder projektspezifische Include-Dateien, die häufig benutzt, aber -// in unregelmäßigen Abständen geändert werden. -// - -#if !defined(AFX_STDAFX_H__68E14C76_098F_47ED_932B_4C01E8E9EFFB__INCLUDED_) -#define AFX_STDAFX_H__68E14C76_098F_47ED_932B_4C01E8E9EFFB__INCLUDED_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - - -// Fügen Sie hier Ihre Header-Dateien ein -#define WIN32_LEAN_AND_MEAN // Selten benutzte Teile der Windows-Header nicht einbinden -#define STRICT -#include - -// ZU ERLEDIGEN: Verweisen Sie hier auf zusätzliche Header-Dateien, die Ihr Programm benötigt -#ifdef JXINPUT_EXPORTS -#define JXINPUT_API __declspec(dllexport) -#else -#define JXINPUT_API __declspec(dllimport) -#endif - -#include -#include - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ fügt zusätzliche Deklarationen unmittelbar vor der vorherigen Zeile ein. - -#endif // !defined(AFX_STDAFX_H__68E14C76_098F_47ED_932B_4C01E8E9EFFB__INCLUDED_) diff --git a/vendor/JXInput/0.3.4/c/de_hardcode_jxinput_directinput_DirectInputDriver.cpp b/vendor/JXInput/0.3.4/c/de_hardcode_jxinput_directinput_DirectInputDriver.cpp deleted file mode 100644 index 077afe8..0000000 --- a/vendor/JXInput/0.3.4/c/de_hardcode_jxinput_directinput_DirectInputDriver.cpp +++ /dev/null @@ -1,279 +0,0 @@ -#include "stdafx.h" - -#include "de_hardcode_jxinput_directinput_DirectInputDriver.h" -#include "jxinput.h" -#include "JXInputManager.h" - - -// -// Globals -// -extern HINSTANCE g_hInst; - -static JXInputManager* pJXInputManager = NULL; -static JXInput* apJXInput[ MAX_JXINPUTS ]; -static HWND hWndJava; - -// -// IDs of the static Java arrays. -// -static jfieldID sAxesFieldID; -static jfieldID sButtonsFieldID; -static jfieldID sDirectionsFieldID; - - - -/** - * Remove all resources allocated by the Java binding. - */ -void shutdownJavaResources() -{ - if ( NULL != pJXInputManager ) - delete pJXInputManager; - - if ( NULL != hWndJava ) - DestroyWindow( hWndJava ); - - pJXInputManager = NULL; - - for( int i = 0; i < MAX_JXINPUTS; ++i ) - apJXInput[ i ] = NULL; - - hWndJava = NULL; -} - - - -JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) -{ - return JNI_VERSION_1_2; -} - - -JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) -{ - shutdownJavaResources(); -} - - -JNIEXPORT jboolean JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_nativeinit - (JNIEnv * penv, jclass pClazz ) -{ - - // - // Create a non-visible window as 'owner' of the DI device. - // - hWndJava = CreateWindowEx( - 0/*WS_EX_APPWINDOW*/, // DWORD dwExStyle, // extended window style - "STATIC", // LPCTSTR lpClassName, // pointer to registered class name - NULL, // LPCTSTR lpWindowName, // pointer to window name - 0/*WS_CAPTION*/, // DWORD dwStyle, // window style - 0, // int x, // horizontal position of window - 0, // int y, // vertical position of window - 0, // int nWidth, // window width - 0, // int nHeight, // window height - NULL, // HWND hWndParent, // handle to parent or owner window - NULL, // HMENU hMenu, // handle to menu, or child-window identifier - g_hInst, // HINSTANCE hInstance, // handle to application instance - NULL // LPVOID lpParam // pointer to window-creation data - ); - - - if ( NULL == pJXInputManager ) - { - pJXInputManager = new JXInputManager( hWndJava ); - - for( int i = 0; i < MAX_JXINPUTS; ++i ) - apJXInput[ i ] = NULL; - - for ( int i = 0; i < pJXInputManager->getNumberOfJXInputs(); ++i ) - { - apJXInput[ i ] = & pJXInputManager->getJXInput( i ); - } - } - - return true; -} - - - -JNIEXPORT void JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_nativeexit - (JNIEnv *, jclass ) -{ - shutdownJavaResources(); -} - - -/** - * Bind my field IDs to the Java variables. - */ -JNIEXPORT void JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_bind - (JNIEnv * penv, jclass pClazz) -{ - // - // All fields are static. - // - sAxesFieldID = penv->GetStaticFieldID( pClazz, "sAxisValues", "[[D" ); - sButtonsFieldID = penv->GetStaticFieldID( pClazz, "sButtonStates", "[[Z" ); - sDirectionsFieldID = penv->GetStaticFieldID( pClazz, "sDirectionalValues", "[[I" ); -} - - -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getNumberOfDevices - (JNIEnv *penv, jclass) -{ - return pJXInputManager->getNumberOfJXInputs(); -} - - -JNIEXPORT jstring JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getName - (JNIEnv *penv, jclass, jint dev) -{ - return penv->NewStringUTF( apJXInput[ dev ]->getName() ); -} - -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getNumberOfAxes - (JNIEnv *, jclass, jint dev) -{ - return apJXInput[ dev ]->getNumberOfAxes(); -} - -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getNumberOfButtons - (JNIEnv *, jclass, jint dev) -{ - return apJXInput[ dev ]->getNumberOfButtons(); -} - -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getNumberOfDirectionals - (JNIEnv *, jclass, jint dev) -{ - return apJXInput[ dev ]->getNumberOfDirectionals(); -} - -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getMaxNumberOfAxes - (JNIEnv *, jclass) -{ - return pJXInputManager->getMaxNumberOfAxes(); -} - -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getMaxNumberOfButtons - (JNIEnv *, jclass) -{ - return pJXInputManager->getMaxNumberOfButtons(); -} - -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getMaxNumberOfDirectionals - (JNIEnv *, jclass) -{ - return pJXInputManager->getMaxNumberOfDirectionals(); -} - -JNIEXPORT jboolean JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_isAxisAvailable - (JNIEnv *, jclass, jint dev, jint idx ) -{ - return apJXInput[ dev ]->isAxisAvailable( idx ); -} - -JNIEXPORT jstring JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getAxisName - (JNIEnv *penv, jclass, jint dev, jint idx ) -{ - return penv->NewStringUTF( apJXInput[ dev ]->getAxisName( idx ) ); -} - -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getAxisType - (JNIEnv *, jclass, jint dev, jint idx ) -{ - return apJXInput[ dev ]->getAxisType( idx ); -} - - -JNIEXPORT jboolean JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_isButtonAvailable - (JNIEnv *, jclass, jint dev, jint idx ) -{ - return apJXInput[ dev ]->isButtonAvailable( idx ); -} - -JNIEXPORT jstring JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getButtonName - (JNIEnv *penv, jclass, jint dev, jint idx ) -{ - return penv->NewStringUTF( apJXInput[ dev ]->getButtonName( idx ) ); -} - -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getButtonType - (JNIEnv *, jclass, jint dev, jint idx ) -{ - return apJXInput[ dev ]->getButtonType( idx ); -} - -JNIEXPORT jboolean JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_isDirectionalAvailable - (JNIEnv *, jclass, jint dev, jint idx ) -{ - return apJXInput[ dev ]->isDirectionalAvailable( idx ); -} - -JNIEXPORT jstring JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getDirectionalName - (JNIEnv *penv, jclass, jint dev, jint idx ) -{ - return penv->NewStringUTF( apJXInput[ dev ]->getDirectionalName( idx ) ); -} - - - -/** - * The main update method. - * Here, the actual work is done. - */ -JNIEXPORT void JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_nativeupdate - (JNIEnv * penv, jclass pClazz ) -{ - - static jdouble axes [ MAX_JXINPUTS ][ JXINPUT_MAX_AXES ]; - static jboolean buttons [ MAX_JXINPUTS ][ JXINPUT_MAX_BUTTONS ]; - static jint directions [ MAX_JXINPUTS ][ JXINPUT_MAX_DIRECTIONALS ]; - - static jobjectArray axisarrayarray; - static jobjectArray buttonarrayarray; - static jobjectArray directionarrayarray; - - static jdoubleArray axisarray; - static jbooleanArray buttonarray; - static jintArray directionarray; - - axisarrayarray = (jobjectArray)penv->GetStaticObjectField( pClazz, sAxesFieldID ); - buttonarrayarray = (jobjectArray)penv->GetStaticObjectField( pClazz, sButtonsFieldID ); - directionarrayarray = (jobjectArray)penv->GetStaticObjectField( pClazz, sDirectionsFieldID ); - - // - // For each device.... - // - for ( int dev = 0; dev < pJXInputManager->getNumberOfJXInputs(); ++dev ) - { - // Do the update of the device. - apJXInput[ dev ]->update(); - - // - // Copy all values into my arrays. - // - for ( int i = 0; i < JXINPUT_MAX_AXES; ++i ) - axes[ dev ][ i ] = apJXInput[ dev ]->getAxisValue( i ); - for ( int i = 0; i < JXINPUT_MAX_BUTTONS; ++i ) - buttons[ dev ][ i ] = apJXInput[ dev ]->isButtonDown( i ); - for ( int i = 0; i < JXINPUT_MAX_DIRECTIONALS; ++i ) - directions[ dev ][ i ] = apJXInput[ dev ]->getDirection( i ); - - - // - // Move my arrays to the Java arrays. - // - axisarray = (jdoubleArray)penv->GetObjectArrayElement( axisarrayarray, dev ); - penv->SetDoubleArrayRegion( axisarray, 0, JXINPUT_MAX_AXES, axes[ dev ] ); - - buttonarray = (jbooleanArray)penv->GetObjectArrayElement( buttonarrayarray, dev ); - penv->SetBooleanArrayRegion( buttonarray, 0, JXINPUT_MAX_BUTTONS, buttons[ dev ] ); - - directionarray = (jintArray)penv->GetObjectArrayElement( directionarrayarray, dev ); - penv->SetIntArrayRegion( directionarray, 0, JXINPUT_MAX_DIRECTIONALS, directions[ dev ] ); - } - -} - diff --git a/vendor/JXInput/0.3.4/c/de_hardcode_jxinput_directinput_DirectInputDriver.h b/vendor/JXInput/0.3.4/c/de_hardcode_jxinput_directinput_DirectInputDriver.h deleted file mode 100644 index bb93548..0000000 --- a/vendor/JXInput/0.3.4/c/de_hardcode_jxinput_directinput_DirectInputDriver.h +++ /dev/null @@ -1,183 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include - -/* Header for class de_hardcode_jxinput_directinput_DirectInputDriver */ - -#ifndef _Included_de_hardcode_jxinput_directinput_DirectInputDriver -#define _Included_de_hardcode_jxinput_directinput_DirectInputDriver - -#ifdef __cplusplus -extern "C" { -#endif - -/* Inaccessible static: sIsOperational */ -/* Inaccessible static: sAxisValues */ -/* Inaccessible static: sButtonStates */ -/* Inaccessible static: sDirectionalValues */ -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: nativeinit - * Signature: ()Z - */ -JNIEXPORT jboolean JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_nativeinit - (JNIEnv *, jclass); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: nativeexit - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_nativeexit - (JNIEnv *, jclass); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: bind - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_bind - (JNIEnv *, jclass); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: getNumberOfDevices - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getNumberOfDevices - (JNIEnv *, jclass); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: getName - * Signature: (I)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getName - (JNIEnv *, jclass, jint); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: getNumberOfAxes - * Signature: (I)I - */ -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getNumberOfAxes - - (JNIEnv *, jclass, jint); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: getNumberOfButtons - * Signature: (I)I - */ -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getNumberOfButtons - (JNIEnv *, jclass, jint); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: getNumberOfDirectionals - * Signature: (I)I - */ -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getNumberOfDirectionals - (JNIEnv *, jclass, jint); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: getMaxNumberOfAxes - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getMaxNumberOfAxes - (JNIEnv *, jclass); - - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: getMaxNumberOfButtons - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getMaxNumberOfButtons - (JNIEnv *, jclass); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: getMaxNumberOfDirectionals - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getMaxNumberOfDirectionals - (JNIEnv *, jclass); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: isAxisAvailable - * Signature: (II)Z - */ -JNIEXPORT jboolean JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_isAxisAvailable - (JNIEnv *, jclass, jint, jint); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: getAxisName - * Signature: (II)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getAxisName - (JNIEnv *, jclass, jint, jint); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: getAxisType - * Signature: (II)I - */ -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getAxisType - (JNIEnv *, jclass, jint, jint); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: isButtonAvailable - * Signature: (II)Z - */ -JNIEXPORT jboolean JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_isButtonAvailable - (JNIEnv *, jclass, jint, jint); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: getButtonName - * Signature: (II)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getButtonName - (JNIEnv *, jclass, jint, jint); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: getButtonType - * Signature: (II)I - */ -JNIEXPORT jint JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getButtonType - (JNIEnv *, jclass, jint, jint); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: isDirectionalAvailable - * Signature: (II)Z - */ -JNIEXPORT jboolean JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_isDirectionalAvailable - (JNIEnv *, jclass, jint, jint); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: getDirectionalName - * Signature: (II)Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_getDirectionalName - (JNIEnv *, jclass, jint, jint); - -/* - * Class: de_hardcode_jxinput_directinput_DirectInputDriver - * Method: nativeupdate - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_de_hardcode_jxinput_directinput_DirectInputDriver_nativeupdate - (JNIEnv *, jclass); - -#ifdef __cplusplus -} -#endif -#endif - diff --git a/vendor/JXInput/0.3.4/c/dllmain.cpp b/vendor/JXInput/0.3.4/c/dllmain.cpp deleted file mode 100644 index 567e8d4..0000000 --- a/vendor/JXInput/0.3.4/c/dllmain.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "stdafx.h" - -HINSTANCE g_hInst; - - -BOOL APIENTRY DllMain( HANDLE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved - ) -{ - switch (ul_reason_for_call) - { - case DLL_PROCESS_ATTACH: - g_hInst = (HINSTANCE)hModule; - break; - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - break; - case DLL_PROCESS_DETACH: - g_hInst = NULL; - break; - } - return TRUE; -} diff --git a/vendor/JXInput/0.3.4/c/jxinput.cpp b/vendor/JXInput/0.3.4/c/jxinput.cpp deleted file mode 100644 index 890805b..0000000 --- a/vendor/JXInput/0.3.4/c/jxinput.cpp +++ /dev/null @@ -1,600 +0,0 @@ -// -// jxinput.cpp -// -#include "stdafx.h" -#include "jxinput.h" - - -// -// Globals -// -extern HINSTANCE g_hInst; - - -/** - * Ctor: Connect with DI - */ -JXInput::JXInput( LPDIRECTINPUTDEVICE8 pJoystick, HWND hWnd ) : - mpJoystick( pJoystick ), - mSliderCount( 0 ), - mPOVCount( 0 ), - mButtonCount( 0 ) -{ - initAxisConfig(); - initButtonsConfig(); - initDirectionalsConfig(); - - if ( FAILED( InitDirectInput( hWnd ) ) ) - { - FreeDirectInput(); - } -} - - - -/** - * Destructor: - * Free DirectInput. - */ -JXInput::~JXInput() -{ - FreeDirectInput(); -} - - -void JXInput::update() -{ - UpdateInputState(); -} - - -TCHAR * const JXInput::getName() const -{ - return (TCHAR*)mdiDevInfo.tszInstanceName; -} - - - -int JXInput::getNumberOfAxes() const -{ - return mdiDevCaps.dwAxes; -} - -int JXInput::getNumberOfButtons() const -{ - return mButtonCount; -} - -int JXInput::getNumberOfDirectionals() const -{ - return mPOVCount; -} - - -double JXInput::getAxisValueHelper( LONG val, int idx ) const -{ - const AxisConfig& cfg = mAxisConfig[ idx ]; - - double span = (double)( cfg.mMaxValue - cfg.mMinValue ); - double ret = (double)(val - cfg.mMinValue) / span; - - if ( TYPE_SLIDER != cfg.mType ) - return ret*2.0 - 1.0; - return ret; -} - -double JXInput::getX() const -{ - return getAxisValueHelper( mJS.lX, ID_X ); -} -double JXInput::getY() const -{ - return getAxisValueHelper( mJS.lY, ID_Y ); -} -double JXInput::getZ() const -{ - return getAxisValueHelper( mJS.lZ, ID_Z ); -} -double JXInput::getRotX() const -{ - return getAxisValueHelper( mJS.lRx, ID_ROTX ); -} -double JXInput::getRotY() const -{ - return getAxisValueHelper( mJS.lRy, ID_ROTY ); -} -double JXInput::getRotZ() const -{ - return getAxisValueHelper( mJS.lRz, ID_ROTZ ); -} -double JXInput::getSlider0() const -{ - return getAxisValueHelper( mJS.rglSlider[ 0 ], ID_SLIDER0 ); -} -double JXInput::getSlider1() const -{ - return getAxisValueHelper( mJS.rglSlider[ 1 ], ID_SLIDER1 ); -} - - - -bool JXInput::isAxisAvailable( int idx ) const -{ - assert( idx < JXINPUT_MAX_AXES ); - return mAxisConfig[ idx ].mIsAvailable; -} - -TCHAR * const JXInput::getAxisName( int idx ) const -{ - assert( idx < JXINPUT_MAX_AXES ); - return (char*const)mAxisConfig[ idx ].mName; -} - -int JXInput::getAxisType( int idx ) const -{ - assert( idx < JXINPUT_MAX_AXES ); - return mAxisConfig[ idx ].mType; -} - -double JXInput::getAxisValue( int idx ) const -{ - assert( idx < JXINPUT_MAX_AXES ); - - // Failsafe if called accidentally - if ( ! mAxisConfig[ idx ].mIsAvailable ) - return 0.0; - - return (this->*mAxisConfig[ idx ].mGetValueMethod)(); -} - - - - - -bool JXInput::isButtonAvailable( int idx ) const -{ - assert( idx < JXINPUT_MAX_BUTTONS ); - return mButtonConfig[ idx ].mIsAvailable; -} - -TCHAR * const JXInput::getButtonName( int idx ) const -{ - assert( idx < JXINPUT_MAX_BUTTONS ); - return (char*const)mButtonConfig[ idx ].mName; -} - -int JXInput::getButtonType( int idx ) const -{ - assert( idx < JXINPUT_MAX_BUTTONS ); - return mButtonConfig[ idx ].mType; -} - -bool JXInput::isButtonDown( int idx ) const -{ - assert( idx < JXINPUT_MAX_BUTTONS ); - return 0 != mJS.rgbButtons[ idx ] ; -} - - -bool JXInput::isDirectionalAvailable( int idx ) const -{ - assert( idx < JXINPUT_MAX_DIRECTIONALS ); - return mDirectionalConfig[ idx ].mIsAvailable; -} - -TCHAR * const JXInput::getDirectionalName( int idx ) const -{ - assert( idx < JXINPUT_MAX_DIRECTIONALS ); - return (char*const)mDirectionalConfig[ idx ].mName; -} - -int JXInput::getDirection( int idx ) const -{ - assert( idx < JXINPUT_MAX_DIRECTIONALS ); - return mJS.rgdwPOV[ idx ] ; -} - - -/** - * Initialize axis configuration array. - */ -void JXInput::initAxisConfig() -{ - mAxisConfig[ ID_X ].mIsAvailable = false; - mAxisConfig[ ID_X ].mType = TYPE_TRANSLATION; - mAxisConfig[ ID_X ].mGetValueMethod = &JXInput::getX; - - mAxisConfig[ ID_Y ].mIsAvailable = false; - mAxisConfig[ ID_Y ].mType = TYPE_TRANSLATION; - mAxisConfig[ ID_Y ].mGetValueMethod = &JXInput::getY; - - mAxisConfig[ ID_Z ].mIsAvailable = false; - mAxisConfig[ ID_Z ].mType = TYPE_TRANSLATION; - mAxisConfig[ ID_Z ].mGetValueMethod = &JXInput::getZ; - - mAxisConfig[ ID_ROTX ].mIsAvailable = false; - mAxisConfig[ ID_ROTX ].mType = TYPE_ROTATION; - mAxisConfig[ ID_ROTX ].mGetValueMethod = &JXInput::getRotX; - - mAxisConfig[ ID_ROTY ].mIsAvailable = false; - mAxisConfig[ ID_ROTY ].mType = TYPE_ROTATION; - mAxisConfig[ ID_ROTY ].mGetValueMethod = &JXInput::getRotY; - - mAxisConfig[ ID_ROTZ ].mIsAvailable = false; - mAxisConfig[ ID_ROTZ ].mType = TYPE_ROTATION; - mAxisConfig[ ID_ROTZ ].mGetValueMethod = &JXInput::getRotZ; - - mAxisConfig[ ID_SLIDER0 ].mIsAvailable = false; - mAxisConfig[ ID_SLIDER0 ].mType = TYPE_SLIDER; - mAxisConfig[ ID_SLIDER0 ].mGetValueMethod = &JXInput::getSlider0; - - mAxisConfig[ ID_SLIDER1 ].mIsAvailable = false; - mAxisConfig[ ID_SLIDER1 ].mType = TYPE_SLIDER; - mAxisConfig[ ID_SLIDER1 ].mGetValueMethod = &JXInput::getSlider1; -} - - -/** - * Initialize buttons configuration array. - */ -void JXInput::initButtonsConfig() -{ - for ( int i = 0; i < JXINPUT_MAX_BUTTONS; ++i ) - { - mButtonConfig[ i ].mIsAvailable = false; - mButtonConfig[ i ].mName[ 0 ] = '\0'; - mButtonConfig[ i ].mType = TYPE_PUSHBUTTON; - } - -} - - -/** - * Initialize directionals configuration array. - */ -void JXInput::initDirectionalsConfig() -{ - for ( int i = 0; i < JXINPUT_MAX_DIRECTIONALS; ++i ) - { - mDirectionalConfig[ i ].mIsAvailable = false; - mDirectionalConfig[ i ].mName[ 0 ] = '\0'; - } - -} - - - -//----------------------------------------------------------------------------- -// Name: EnumAxesCallback() -// Desc: Callback function for enumerating the axes on a joystick -//----------------------------------------------------------------------------- -BOOL CALLBACK JXInput::EnumAxesCallback( const DIDEVICEOBJECTINSTANCE* pdidoi, - VOID* pContext ) -{ - JXInput* pThis = (JXInput*)pContext; - - AxisConfig* pAxCfg = NULL; - - // Set the UI to reflect what objects the joystick supports - // Code derived from M$ samples, really sucks, eh? - if (pdidoi->guidType == GUID_XAxis) - { - pAxCfg = & pThis->mAxisConfig[ ID_X ]; - } - if (pdidoi->guidType == GUID_YAxis) - { - pAxCfg = & pThis->mAxisConfig[ ID_Y ]; - } - if (pdidoi->guidType == GUID_ZAxis) - { - pAxCfg = & pThis->mAxisConfig[ ID_Z ]; - } - if (pdidoi->guidType == GUID_RxAxis) - { - pAxCfg = & pThis->mAxisConfig[ ID_ROTX ]; - } - if (pdidoi->guidType == GUID_RyAxis) - { - pAxCfg = & pThis->mAxisConfig[ ID_ROTY ]; - } - if (pdidoi->guidType == GUID_RzAxis) - { - pAxCfg = & pThis->mAxisConfig[ ID_ROTZ ]; - } - if (pdidoi->guidType == GUID_Slider) - { - switch( pThis->mSliderCount++ ) - { - case 0 : - pAxCfg = & pThis->mAxisConfig[ ID_SLIDER0 ]; - break; - - case 1 : - pAxCfg = & pThis->mAxisConfig[ ID_SLIDER1 ]; - break; - } - } - - // fail-safe - if( NULL == pAxCfg ) // e.g. GUID_Unknown - return DIENUM_CONTINUE; - - - // - // Perform config. - // - - DIPROPRANGE diprg; - diprg.diph.dwSize = sizeof(DIPROPRANGE); - diprg.diph.dwHeaderSize = sizeof(DIPROPHEADER); - diprg.diph.dwHow = DIPH_BYID; - diprg.diph.dwObj = pdidoi->dwType; // Specify the enumerated axis - - // Get the range for the axis - if( FAILED( pThis->mpJoystick->GetProperty( DIPROP_RANGE, &diprg.diph ) ) ) - return DIENUM_CONTINUE; - - pAxCfg->mMinValue = diprg.lMin; - pAxCfg->mMaxValue = diprg.lMax; - - strcpy( (char*)pAxCfg->mName, (char*)pdidoi->tszName ); - pAxCfg->mIsAvailable = true; - - return DIENUM_CONTINUE; -} - - - -//----------------------------------------------------------------------------- -// Name: EnumButtonsCallback() -// Desc: Callback function for enumerating the axes on a joystick -//----------------------------------------------------------------------------- -BOOL CALLBACK JXInput::EnumButtonsCallback( const DIDEVICEOBJECTINSTANCE* pdidoi, - VOID* pContext ) -{ - JXInput* pThis = (JXInput*)pContext; - - // - // if the maximum number of buttons is already registered, - // issue a warning and stop enumeration. - // - if( JXINPUT_MAX_BUTTONS == pThis->mButtonCount ) - { - OutputDebugString( "Max. number of buttons exceeded!" ); - return DIENUM_STOP; - } - - - ButtonConfig* pBtCfg = NULL; - - if ( pdidoi->guidType == GUID_Button ) - { - assert( JXINPUT_MAX_BUTTONS > pThis->mButtonCount ); - pBtCfg = & pThis->mButtonConfig[ pThis->mButtonCount++ ]; - } - - - // fail-safe - if( NULL == pBtCfg ) // e.g. unknown stuff - return DIENUM_CONTINUE; - assert( NULL != pBtCfg ); - - // - // Perform config. - // - - strcpy( (char*)pBtCfg->mName, (char*)pdidoi->tszName ); - pBtCfg->mIsAvailable = true; - - return DIENUM_CONTINUE; -} - - -//----------------------------------------------------------------------------- -// Name: EnumPOVsCallback() -// Desc: Callback function for enumerating the axes on a joystick -//----------------------------------------------------------------------------- -BOOL CALLBACK JXInput::EnumPOVsCallback( const DIDEVICEOBJECTINSTANCE* pdidoi, - VOID* pContext ) -{ - JXInput* pThis = (JXInput*)pContext; - - // - // if the maximum number of buttons is already registered, - // issue a warning and stop enumeration. - // - if( JXINPUT_MAX_DIRECTIONALS == pThis->mPOVCount ) - { - OutputDebugString( "Max. number of POVs exceeded!" ); - return DIENUM_STOP; - } - - DirectionalConfig* pDirCfg = NULL; - - - if (pdidoi->guidType == GUID_POV) - { - assert( JXINPUT_MAX_DIRECTIONALS > pThis->mPOVCount ); - pDirCfg = & pThis->mDirectionalConfig[ pThis->mPOVCount++ ]; - } - - // fail-safe - if( NULL == pDirCfg ) // e.g. unknown stuff - return DIENUM_CONTINUE; - assert( NULL != pDirCfg ); - - // - // Perform config. - // - - strcpy( (char*)pDirCfg->mName, (char*)pdidoi->tszName ); - pDirCfg->mIsAvailable = true; - - return DIENUM_CONTINUE; -} - - - -//----------------------------------------------------------------------------- -// Name: EnumEffectsCallback() -// Desc: Callback function for enumerating the effects of a joystick -//----------------------------------------------------------------------------- -BOOL CALLBACK JXInput::EnumEffectsCallback( const DIEFFECTINFO* pdidoi, - VOID* pContext ) -{ - JXInput* pThis = (JXInput*)pContext; - - // - // Work on that!! - // - - return DIENUM_CONTINUE; -} - - - -//----------------------------------------------------------------------------- -// Name: InitDirectInput() -// Desc: Initialize the DirectInput variables. -//----------------------------------------------------------------------------- -HRESULT JXInput::InitDirectInput( HWND hWnd ) -{ - HRESULT hr; - - // Make sure we got a joystick - if( NULL == mpJoystick ) - { - return E_FAIL; - } - - - // - // Ask the device for some useful information. - // - mdiDevInfo.dwSize = sizeof( DIDEVICEINSTANCE ); - hr = mpJoystick->GetDeviceInfo( &mdiDevInfo ); - if( FAILED(hr) ) - return hr; - - // Set the data format to "simple joystick" - a predefined data format - // - // A data format specifies which controls on a device we are interested in, - // and how they should be reported. This tells DInput that we will be - // passing a DIJOYSTATE structure to IDirectInputDevice::GetDeviceState(). - hr = mpJoystick->SetDataFormat( &c_dfDIJoystick2 ); - if( FAILED(hr) ) - return hr; - - // Set the cooperative level to let DInput know how this device should - // interact with the system and with other DInput applications. -// hr = g_pJoystick->SetCooperativeLevel( hDlg, DISCL_EXCLUSIVE|DISCL_FOREGROUND ); - DWORD mode = ( NULL == hWnd ? DISCL_NONEXCLUSIVE|DISCL_BACKGROUND : DISCL_EXCLUSIVE|DISCL_BACKGROUND ); - hr = mpJoystick->SetCooperativeLevel( hWnd, mode ); - if( FAILED(hr) ) - return hr; - - // Determine how many axis the joystick has (so we don't error out setting - // properties for unavailable axis) - mdiDevCaps.dwSize = sizeof(DIDEVCAPS); - hr = mpJoystick->GetCapabilities(&mdiDevCaps); - if ( FAILED(hr) ) - return hr; - - - // Enumerate the axes of the joyctick and set the range of each axis. Note: - // we could just use the defaults, but we're just trying to show an example - // of enumerating device objects (axes, buttons, etc.). - mpJoystick->EnumObjects( EnumAxesCallback, (VOID*)this, DIDFT_AXIS ); - mpJoystick->EnumObjects( EnumButtonsCallback, (VOID*)this, DIDFT_BUTTON ); - mpJoystick->EnumObjects( EnumPOVsCallback, (VOID*)this, DIDFT_POV ); - - mpJoystick->EnumEffects( EnumEffectsCallback, (VOID*)this, DIEFT_ALL ); - - // For FF sticks, switch on autocenter as long as we do not use real FF - SwitchAutoCenter( true ); - - return S_OK; -} - - - - - -//----------------------------------------------------------------------------- -// Name: UpdateInputState() -// Desc: Get the input device's state and display it. -//----------------------------------------------------------------------------- -HRESULT JXInput::UpdateInputState() -{ - HRESULT hr; - - if( mpJoystick ) - { - - // Poll the device to read the current state - hr = mpJoystick->Poll(); - if( FAILED(hr) ) - { - // DInput is telling us that the input stream has been - // interrupted. We aren't tracking any state between polls, so - // we don't have any special reset that needs to be done. We - // just re-acquire and try again. - hr = mpJoystick->Acquire(); - while( hr == DIERR_INPUTLOST ) - hr = mpJoystick->Acquire(); - - // hr may be DIERR_OTHERAPPHASPRIO or other errors. This - // may occur when the app is minimized or in the process of - // switching, so just try again later - return S_OK; - } - - // Get the input's device state - if( FAILED( hr = mpJoystick->GetDeviceState( sizeof(DIJOYSTATE2), &mJS ) ) ) - return hr; // The device should have been acquired during the Poll() - - } - - return S_OK; -} - - - - -//----------------------------------------------------------------------------- -// Name: FreeDirectInput() -// Desc: Initialize the DirectInput variables. -//----------------------------------------------------------------------------- -HRESULT JXInput::FreeDirectInput() -{ - // Unacquire and release any DirectInputDevice objects. - if( NULL != mpJoystick ) - { - // Unacquire the device one last time just in case - // the app tried to exit while the device is still acquired. - mpJoystick->Unacquire(); - - mpJoystick->Release(); - mpJoystick = NULL; - } - - return S_OK; -} - - - -HRESULT JXInput::SwitchAutoCenter( bool onoff ) -{ - HRESULT hr; - - DIPROPDWORD DIPropAutoCenter; - - DIPropAutoCenter.diph.dwSize = sizeof(DIPropAutoCenter); - DIPropAutoCenter.diph.dwHeaderSize = sizeof(DIPROPHEADER); - DIPropAutoCenter.diph.dwObj = 0; - DIPropAutoCenter.diph.dwHow = DIPH_DEVICE; - DIPropAutoCenter.dwData = ( onoff ? DIPROPAUTOCENTER_ON : DIPROPAUTOCENTER_OFF ); - - hr = mpJoystick->SetProperty( DIPROP_AUTOCENTER, &DIPropAutoCenter.diph ); - return hr; -} diff --git a/vendor/JXInput/0.3.4/c/jxinput.dsp b/vendor/JXInput/0.3.4/c/jxinput.dsp deleted file mode 100644 index aac15c1..0000000 --- a/vendor/JXInput/0.3.4/c/jxinput.dsp +++ /dev/null @@ -1,175 +0,0 @@ -# Microsoft Developer Studio Project File - Name="jxinput" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=jxinput - Win32 Debug -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl -!MESSAGE -!MESSAGE NMAKE /f "jxinput.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "jxinput.mak" CFG="jxinput - Win32 Debug" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "jxinput - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library") -!MESSAGE "jxinput - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "jxinput - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JXINPUT_EXPORTS" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "C:\j2sdk1.4.2\include" /I "C:\j2sdk1.4.2\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JXINPUT_EXPORTS" /FR /Yu"stdafx.h" /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x407 /d "NDEBUG" -# ADD RSC /l 0x407 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 dxguid.lib dinput8.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"..\build\jxinput.dll" - -!ELSEIF "$(CFG)" == "jxinput - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JXINPUT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "C:\j2sdk1.4.2\include" /I "C:\j2sdk1.4.2\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JXINPUT_EXPORTS" /FR /Yu"stdafx.h" /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x407 /d "_DEBUG" -# ADD RSC /l 0x407 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 dxguid.lib dinput8.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"..\Classes\jxinput.dll" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "jxinput - Win32 Release" -# Name "jxinput - Win32 Debug" -# Begin Group "Quellcodedateien" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\de_hardcode_jxinput_directinput_DirectInputDriver.cpp -# End Source File -# Begin Source File - -SOURCE=.\dllmain.cpp -# End Source File -# Begin Source File - -SOURCE=.\jxinput.cpp -# End Source File -# Begin Source File - -SOURCE=.\JXInputManager.cpp -# End Source File -# Begin Source File - -SOURCE=.\StdAfx.cpp -# ADD CPP /Yc"stdafx.h" -# End Source File -# End Group -# Begin Group "Header-Dateien" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\de_hardcode_jxinput_directinput_DirectInputDriver.h - -!IF "$(CFG)" == "jxinput - Win32 Release" - -# PROP Ignore_Default_Tool 1 -USERDEP__DE_HA="..\classes\de\hardcode\jxinput\directinput\DirectInputDriver.class" -# Begin Custom Build -InputPath=.\de_hardcode_jxinput_directinput_DirectInputDriver.h - -"de_hardcode_jxinput_directinput_DirectInputDriver.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - cd ..\Classes - C:\j2sdk1.4.2\bin\javah -classpath . -d ..\win32 de.hardcode.jxinput.directinput.DirectInputDriver - cd ..\win32 - -# End Custom Build - -!ELSEIF "$(CFG)" == "jxinput - Win32 Debug" - -# PROP Ignore_Default_Tool 1 -USERDEP__DE_HA="..\classes\de\hardcode\jxinput\directinput\DirectInputDriver.class" -# Begin Custom Build -InputPath=.\de_hardcode_jxinput_directinput_DirectInputDriver.h - -"de_hardcode_jxinput_directinput_DirectInputDriver.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - cd ..\Classes - C:\j2sdk1.4.2\bin\javah -classpath . -d ..\win32 de.hardcode.jxinput.directinput.DirectInputDriver - cd ..\win32 - -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\jxinput.h -# End Source File -# Begin Source File - -SOURCE=.\JXInputManager.h -# End Source File -# Begin Source File - -SOURCE=.\StdAfx.h -# End Source File -# End Group -# Begin Group "Ressourcendateien" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# Begin Source File - -SOURCE=.\ReadMe.txt -# End Source File -# End Target -# End Project diff --git a/vendor/JXInput/0.3.4/c/jxinput.dsw b/vendor/JXInput/0.3.4/c/jxinput.dsw deleted file mode 100644 index deb2877..0000000 --- a/vendor/JXInput/0.3.4/c/jxinput.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN! - -############################################################################### - -Project: "jxinput"=".\jxinput.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/vendor/JXInput/0.3.4/c/jxinput.h b/vendor/JXInput/0.3.4/c/jxinput.h deleted file mode 100644 index 6d47a31..0000000 --- a/vendor/JXInput/0.3.4/c/jxinput.h +++ /dev/null @@ -1,183 +0,0 @@ - -#define JXINPUT_MAX_AXES 8 -#define JXINPUT_MAX_BUTTONS 256 -#define JXINPUT_MAX_DIRECTIONALS 4 - - -/** - * This class will be exported by jxinput.dll. - */ -class JXINPUT_API JXInput -{ - -public: - - typedef enum AXISTYPE - { - TYPE_TRANSLATION, - TYPE_ROTATION, - TYPE_SLIDER - }; - - typedef enum BUTTONTYPE - { - TYPE_PUSHBUTTON, - TYPE_TOGGLEBUTTON - }; - - typedef enum AXISID - { - ID_X, ID_Y, ID_Z, - ID_ROTX, ID_ROTY, ID_ROTZ, - ID_SLIDER0, ID_SLIDER1 - }; - - - // - // Ctor - // - JXInput( LPDIRECTINPUTDEVICE8 pJoystick, HWND hWnd = NULL ); - - // - // Dtor - // - virtual ~JXInput(); - - // - // Operational methods - // - void update(); - - // Ask for the name - TCHAR * const getName() const; - - // - // Numbering methods - // - int getNumberOfAxes() const; - int getNumberOfButtons() const; - int getNumberOfDirectionals() const; - - - // - // Access axes - // - double getX() const; /** -1.0 .... 1.0 */ - double getY() const; /** -1.0 .... 1.0 */ - double getZ() const; /** -1.0 .... 1.0 */ - double getRotX() const; /** -1.0 .... 1.0 */ - double getRotY() const; /** -1.0 .... 1.0 */ - double getRotZ() const; /** -1.0 .... 1.0 */ - double getSlider0() const; /** 0.0 .... 1.0 */ - double getSlider1() const; /** 0.0 .... 1.0 */ - - - // - // Axis methods - // - bool isAxisAvailable( int idx ) const; - TCHAR* const getAxisName( int idx ) const; - int getAxisType( int idx ) const; - double getAxisValue( int idx ) const; - - // - // Button methods - // - bool isButtonAvailable( int idx ) const; - TCHAR* const getButtonName( int idx ) const; - int getButtonType( int idx ) const; - bool isButtonDown( int idx ) const; - - // - // Directional methods - // - bool isDirectionalAvailable( int idx ) const; - TCHAR* const getDirectionalName( int idx ) const; - int getDirection( int idx ) const; - -private://----------------------------------------------------------------------------------------- - LPDIRECTINPUTDEVICE8 mpJoystick; - - DIDEVICEINSTANCE mdiDevInfo; - DIDEVCAPS mdiDevCaps; - DIJOYSTATE2 mJS; // DInput joystick state - - int mSliderCount; - int mPOVCount; - int mButtonCount; - - double getAxisValueHelper( LONG val, int idx ) const; - - HRESULT SwitchAutoCenter( bool onoff = true ); - - HRESULT InitDirectInput( HWND hWnd = NULL ); - HRESULT FreeDirectInput(); - HRESULT UpdateInputState(); - - - static BOOL CALLBACK EnumAxesCallback - ( - const DIDEVICEOBJECTINSTANCE* pdidoi, - VOID* pContext - ); - - static BOOL CALLBACK EnumButtonsCallback - ( - const DIDEVICEOBJECTINSTANCE* pdidoi, - VOID* pContext - ); - - static BOOL CALLBACK EnumPOVsCallback - ( - const DIDEVICEOBJECTINSTANCE* pdidoi, - VOID* pContext - ); - - static BOOL CALLBACK EnumEffectsCallback - ( - const DIEFFECTINFO* pdidoi, - VOID* pContext - ); - - - class JXINPUT_API AxisConfig - { - - public: - bool mIsAvailable; - CHAR mName[MAX_PATH]; - AXISTYPE mType; - LONG mMinValue; - LONG mMaxValue; - double (JXInput::*mGetValueMethod)() const; - - } mAxisConfig [ JXINPUT_MAX_AXES ]; - - void initAxisConfig(); - - - class JXINPUT_API ButtonConfig - { - - public: - bool mIsAvailable; - CHAR mName[MAX_PATH]; - BUTTONTYPE mType; - - } mButtonConfig[ JXINPUT_MAX_BUTTONS ]; - - void initButtonsConfig(); - - - class JXINPUT_API DirectionalConfig - { - - public: - bool mIsAvailable; - CHAR mName[MAX_PATH]; - - } mDirectionalConfig[ JXINPUT_MAX_DIRECTIONALS ]; - - void initDirectionalsConfig(); -}; - diff --git a/vendor/JXInput/0.3.4/c/jxinput.sln b/vendor/JXInput/0.3.4/c/jxinput.sln deleted file mode 100644 index 714fdc7..0000000 --- a/vendor/JXInput/0.3.4/c/jxinput.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual C++ Express 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jxinput", "jxinput.vcproj", "{8AEA84DC-D8F0-4425-BEBF-A84E91115F76}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {8AEA84DC-D8F0-4425-BEBF-A84E91115F76}.Debug|Win32.ActiveCfg = Debug|Win32 - {8AEA84DC-D8F0-4425-BEBF-A84E91115F76}.Debug|Win32.Build.0 = Debug|Win32 - {8AEA84DC-D8F0-4425-BEBF-A84E91115F76}.Release|Win32.ActiveCfg = Release|Win32 - {8AEA84DC-D8F0-4425-BEBF-A84E91115F76}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/vendor/JXInput/0.3.4/c/jxinput.vcproj b/vendor/JXInput/0.3.4/c/jxinput.vcproj deleted file mode 100644 index c87fc0f..0000000 --- a/vendor/JXInput/0.3.4/c/jxinput.vcproj +++ /dev/null @@ -1,367 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/Axis.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/Axis.java deleted file mode 100644 index 9f1d710..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/Axis.java +++ /dev/null @@ -1,72 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 19. Dezember 2001, 21:58 -//********************************************************************************************** -package de.hardcode.jxinput; - -/** - * The Axis interface describes the most common feature of a joystick or other input devices. - * - * @author Herkules - */ -public interface Axis extends Feature -{ - // Enumeration of axes. - final static int ID_X = 0; - final static int ID_Y = 1; - final static int ID_Z = 2; - final static int ID_ROTX = 3; - final static int ID_ROTY = 4; - final static int ID_ROTZ = 5; - final static int ID_SLIDER0 = 6; - final static int ID_SLIDER1 = 7; - final static int NUMBER_OF_ID = 8; - - // Enumeration of axis types - final static int TRANSLATION = 0; - final static int ROTATION = 1; - final static int SLIDER = 2; - - /** - * Retrieve the type of the axis. - * The type is describes the meaning and the range of values of the axis. - *

- * TRANSLATION typed axes denote a translational deviation from a center - * position. This can be e.g. the common, basic joystick axes. - * The range of getValue() is [-1.0,1.0]. - *

- * ROTATION typed axes denote a rotational deviation from a center - * position. Something on the stick is turned or twisted. - * The range of getValue() is [-1.0,1.0]. - *

- * SLIDER typed axes denote a shifting device without a center position. - * A good sample is a throttle control. - * The range of getValue() is [0.0,1.0]. - * - * @return [ TRANSLATION | ROTATION | SLIDER ] - */ - int getType(); - - /** - * Returns the current value of the axis. - * The range of the result depends on the axis type. - * - * @return value [-1.0,1.0] or [0.0,1.0] - */ - double getValue(); - - - /** - * Inform about the resolution of the axis. - * - * @return resolution, e.g. 2^-16 - */ - double getResolution(); - -} - - diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/Button.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/Button.java deleted file mode 100644 index 418e2b6..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/Button.java +++ /dev/null @@ -1,35 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 19. Dezember 2001, 21:58 -//********************************************************************************************** -package de.hardcode.jxinput; - -/** - * - * @author Herkules - */ -public interface Button extends Feature -{ - // Enumeration of button types - final static int PUSHBUTTON = 0; - final static int TOGGLEBUTTON = 1; - - /** - * Retrieve the type of the button. - * Pushbutton will deliver true==getState() as long as they are pressed down. - * Togglebuttons will change their state once they are pressed and keep that state - * until they are pressed again. - * @return [ PUSHBUTTON | TOGGLEBUTTON ] - */ - int getType(); - - /** - * Tells the state of the button at last update. - */ - boolean getState(); -} - diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/Directional.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/Directional.java deleted file mode 100644 index ccd27c1..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/Directional.java +++ /dev/null @@ -1,45 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 27. Dezember 2001, 23:33 -//********************************************************************************************** -package de.hardcode.jxinput; - -/** - * - * @author Herkules - */ -public interface Directional extends Feature -{ - /** - * If the Directional has a center position where it points to no direction, this - * flag is true when this position is reached. - */ - boolean isCentered(); - - /** - * Retrieve the direction pointed to. - * Value is given in 1/100 degree, [0,36000] - */ - int getDirection(); - - /** - * Retrieve the analog value pointing to the angle described by - * getDirection(). - * For coolie hats this will be either 1,0 for any direction or 0.0 - * when isCentered()==true. - */ - double getValue(); - - /** - * Inform about the resolution of the value returned by getValue(). - * - * @return resolution, e.g. 1.0 for coolie hats - */ - double getResolution(); - -} - diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/Feature.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/Feature.java deleted file mode 100644 index 20c396f..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/Feature.java +++ /dev/null @@ -1,38 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 27. Dezember 2001, 00:19 -//********************************************************************************************** -package de.hardcode.jxinput; - -/** - * An input device offers a set of features (otherwise it would be pretty useless). - * Features in this sense can be axes, buttons and a feature callede directional here. - * Coolie hats are typical directionals because they control a direction (to look at e.g.). - *

- * There are no concrete classes directly derived from Feature - it only - * provides a basis for other interfaces. - * - * @see Axis - * @see Button - * @see Directional - * - * @author Herkules - */ -public abstract interface Feature -{ - /** - * Features may have a name provided e.g. by the driver. - */ - String getName(); - - /** - * Denote wether this feature has changed beyond it's resolution since it got last - * updated. - */ - boolean hasChanged(); -} - diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/JXInputDevice.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/JXInputDevice.java deleted file mode 100644 index d8a8bc8..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/JXInputDevice.java +++ /dev/null @@ -1,71 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 19. Dezember 2001, 21:47 -//********************************************************************************************** -package de.hardcode.jxinput; - -/** - * The JXInputDevise is the main entrypoint to the jxinput package. - *

- * A JXInputDevice represents one physical device like a joystick, a gamepad or - * even some emulation (e.g. using keyboard) that implements the interface. - *

- * The basis task of a JXInputDevise is to maintain a consistent state of all its features. - *
- * It is save to distribute the Feature objects into application without worrying - * about someone else performing an update method and thereby destructing the consistent state. - *

- * An additional task is to provide basic device features information like number of axes, buttons - * and directional features. - * - * @see Feature - * @see JXInputManager - * - * @author Herkules - * @version 0.2beta - */ -public interface JXInputDevice -{ - /** - * @directed - */ - /*#Features lnkFeatures;*/ - - /** - *@link aggregationByValue - */ - /*#Feature lnkFeature;*/ - - /** - * Devices may have a name. - * This name might be provided by a system dependant driver. - */ - String getName(); - - /** Actual number of available axes. */ - int getNumberOfAxes(); - - /** Actual number of available buttons. */ - int getNumberOfButtons(); - - /** Actual number of available directional features. */ - int getNumberOfDirectionals(); - - /** Maximum number of axes as an upper bound for index values. */ - int getMaxNumberOfAxes(); - - /** Maximum number of buttons as an upper bound for index values. */ - int getMaxNumberOfButtons(); - - /** Maximum number of directional features as an upper bound for index values. */ - int getMaxNumberOfDirectionals(); - - Axis getAxis( int idx ); - Button getButton( int idx ); - Directional getDirectional( int idx ); -} - diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/JXInputManager.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/JXInputManager.java deleted file mode 100644 index 8c3e050..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/JXInputManager.java +++ /dev/null @@ -1,233 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 29. Dezember 2001, 02:17 -//********************************************************************************************** -package de.hardcode.jxinput; - -// -// Import driver stuff -// -import de.hardcode.jxinput.directinput.DirectInputDevice; -import de.hardcode.jxinput.event.JXInputEventManager; -import de.hardcode.jxinput.keyboard.JXKeyboardInputDevice; -import de.hardcode.jxinput.virtual.JXVirtualInputDevice; - - -import java.util.ArrayList; -import java.util.Iterator; -import java.awt.Component; - - -/** - * Manages the available instances of JXInputDevice. - * It holds the one central update method which synchronizes with the physical device. - * @author Herkules - */ -public class JXInputManager -{ - - /** Remember when the last update took place. */ - private static long mTimeOfLastUpdate; - - /** Maintain a list of devices. */ - private final static ArrayList mDevices = new ArrayList(); - - /** Maintain a list of direct input devices. */ - private final static ArrayList mDIDevices = new ArrayList(); - - /** Maintain a list of virtual devices. */ - private final static ArrayList mVirtualDevices = new ArrayList(); - - /** Maintain a list of keyboard devices. */ - private final static ArrayList mKBDevices = new ArrayList(); - - /** - * Statically retrieve all DirectInputDevices available. - */ - static - { - reset(); - } - - - /** - * @directed - */ - /*#JXInputDevice lnkJXInputDevice;*/ - - /** - * Creates a new instance of JXInputManager. - * This is prohibited - it only has static members. - */ - private JXInputManager() - { - } - - - /** - * Retrieve the number of available input devices. - */ - public static int getNumberOfDevices() - { - return mDevices.size(); - } - - /** - * Delivers the JXInputDevice with the desired index. - *

- * Take care that idx < getNumberOfDevices()! - */ - public static JXInputDevice getJXInputDevice( int idx ) - { - // - // Be well-behaved even if idx is out of range. - // - if ( idx >= mDevices.size() ) - return null; - return (JXInputDevice)mDevices.get( idx ); - } - - - /** - * Master reset for all devices and events. - * After calling reset(), better forget all devices created or retrieved. - * They are no longer valid. - * Event listeners will no longer be called and should be discarded. - */ - synchronized public static void reset() - { - JXInputEventManager.reset(); - - mDevices.clear(); - - mVirtualDevices.clear(); - mDIDevices.clear(); - - DirectInputDevice.reset(); - - for ( int i = 0; i < DirectInputDevice.getNumberOfDevices(); ++i ) - { - DirectInputDevice dev = new DirectInputDevice( i ); - mDevices.add( dev ); - mDIDevices.add( dev ); - } - - // I have to call updateFeatures one time here during initialization - // bc. I experienced difficulties otherwise while running with the - // J3D sensoring stuff! -// updateFeatures(); - DirectInputDevice.update(); - - int n = mKBDevices.size(); - for ( int i = 0; i < n; ++i ) - ((JXKeyboardInputDevice)mKBDevices.get( i )).shutdown(); - mKBDevices.clear(); - } - - - /** - * Update the (shared) state of all features in one step. - * This method asks the actual device for a consistant state. - * After calling this method, all features may have new values. - * updateFeatures() is meant to be called e.g. once per frame in a gaming environment. - */ - public static void updateFeatures() - { - // Get timing - long now = System.currentTimeMillis(); - long deltaT = now - mTimeOfLastUpdate; - - // Update available driver - DirectInputDevice.update(); - - // - // Update the virtual devices. - // - Iterator vdevices = mVirtualDevices.iterator(); - while ( vdevices.hasNext() ) - { - ((JXVirtualInputDevice)vdevices.next()).update( deltaT ); - } - - // Remember time - mTimeOfLastUpdate = now; - - // Fire all events. - JXInputEventManager.trigger(); - } - - - - /** - * Get time when last update occurred. - * @return tickervalue in milliseconds - */ - public static long getLastUpdateTime() - { - return mTimeOfLastUpdate; - } - - - /** - * Create a new pseudo-device. - */ - public static JXKeyboardInputDevice createKeyboardDevice() - { - JXKeyboardInputDevice d = new JXKeyboardInputDevice(); - mDevices.add( d ); - mKBDevices.add( d ); - return d; - } - - - /** - * Create a new pseudo-device listening to a Swing component. - * Make sure that the component also has the keyboard focus!! - */ - public static JXKeyboardInputDevice createKeyboardDevice( Component comp ) - { - JXKeyboardInputDevice d = new JXKeyboardInputDevice( comp ); - mDevices.add( d ); - mKBDevices.add( d ); - return d; - } - - - /** - * Delete a keyboard device again e.g. when the corresponding - * JComponent gets deleted. - */ - public static void deleteKeyboardDevice( JXKeyboardInputDevice dev ) - { - mDevices.remove( dev ); - mKBDevices.remove( dev ); - ((JXKeyboardInputDevice)dev).shutdown(); - } - - - /** - * Create a new pseudo-device. - */ - public static JXVirtualInputDevice createVirtualDevice() - { - JXVirtualInputDevice d = new JXVirtualInputDevice(); - mDevices.add( d ); - mVirtualDevices.add( d ); - return d; - } - - - /** - * Delete a virtual device again. - */ - public static void deleteVirtualDevice( JXVirtualInputDevice dev ) - { - mDevices.remove( dev ); - mVirtualDevices.remove( dev ); - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DIAxis.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DIAxis.java deleted file mode 100644 index a6d0eac..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DIAxis.java +++ /dev/null @@ -1,70 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 27. Dezember 2001, 00:14 -//********************************************************************************************** -package de.hardcode.jxinput.directinput; - -import de.hardcode.jxinput.Axis; - -/** - * - * @author Herkules - */ -class DIAxis implements Axis -{ - private final int mDeviceIdx; - private final int mIdx; - - /** - * Creates a new instance of DIAxis. - */ - DIAxis( int devidx, int idx ) - { - mDeviceIdx = devidx; - mIdx = idx; - } - - public String getName() - { - return DirectInputDriver.getAxisName( mDeviceIdx, mIdx ); - } - - - /** - * Denote wether this feature has changed beyond it's resolution since it got last - * updated. - */ - public boolean hasChanged() - { - return true; - } - - public double getValue() - { - return DirectInputDriver.getAxisValue( mDeviceIdx, mIdx ); - } - - public int getType() - { - return DirectInputDriver.getAxisType( mDeviceIdx, mIdx ); - } - - /** - * Inform about the resolution of the axis. - * - * @return resolution, e.g. 2^-16 - */ - public double getResolution() - { - // extend the driver here!! - // Here I assume typical 16 bit resolution - return ( getType() == Axis.SLIDER ? 1.0/65536.0 : 2.0/65536.0 ) ; - } - -} - - diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DIButton.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DIButton.java deleted file mode 100644 index 5419550..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DIButton.java +++ /dev/null @@ -1,55 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 27. Dezember 2001, 00:14 -//********************************************************************************************** -package de.hardcode.jxinput.directinput; - -import de.hardcode.jxinput.Button; - - -/** - * - * @author Herkules - */ -class DIButton implements Button -{ - private final int mDeviceIdx; - private final int mIdx; - - /** - * Creates a new instance of DIButton. - */ - DIButton( int devidx, int idx ) - { - mDeviceIdx = devidx; - mIdx = idx; - } - - public String getName() - { - return DirectInputDriver.getButtonName( mDeviceIdx, mIdx ); - } - - /** - * Denote wether this feature has changed beyond it's resolution since it got last - * updated. - */ - public boolean hasChanged() - { - return true; - } - - public int getType() - { - return DirectInputDriver.getButtonType( mDeviceIdx, mIdx ); - } - - public boolean getState() - { - return DirectInputDriver.getButtonState( mDeviceIdx, mIdx ); - } -} \ No newline at end of file diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DIDirectional.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DIDirectional.java deleted file mode 100644 index 9da2d3d..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DIDirectional.java +++ /dev/null @@ -1,78 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 27. Dezember 2001, 23:40 -//********************************************************************************************** -package de.hardcode.jxinput.directinput; - -import de.hardcode.jxinput.Directional; - -/** - * - * @author Herkules - */ -class DIDirectional implements Directional -{ - private final int mDeviceIdx; - private final int mIdx; - - /** - * Creates a new instance of DIDirectional. - */ - DIDirectional( int devidx, int idx ) - { - mDeviceIdx = devidx; - mIdx = idx; - } - - /** Features may have a name provided e.g. by the driver. */ - public String getName() - { - return DirectInputDriver.getDirectionalName( mDeviceIdx, mIdx ); - } - - /** - * Denote wether this feature has changed beyond it's resolution since it got last - * updated. - */ - public boolean hasChanged() - { - return true; - } - - - public boolean isCentered() - { - return ( 0xffff == (DirectInputDriver.getDirection( mDeviceIdx, mIdx ) & 0xffff) ); - } - - public int getDirection() - { - return isCentered() ? 0 : DirectInputDriver.getDirection( mDeviceIdx, mIdx ); - } - - public double getValue() - { - if ( isCentered() ) - return 0.0; - return 1.0; - } - - /** - * Inform about the resolution of the value returned by getValue(). - * - * @return resolution, e.g. 1.0 for coolie hats - */ - public double getResolution() - { - // DI POV always return 0.0 or 1.0, so the resolution is 1.0. - return 1.0; - } - - -} - - diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DirectInputDevice.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DirectInputDevice.java deleted file mode 100644 index a20eab3..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DirectInputDevice.java +++ /dev/null @@ -1,170 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 26. Dezember 2001, 00:40 -//********************************************************************************************** -package de.hardcode.jxinput.directinput; - -import de.hardcode.jxinput.JXInputDevice; -import de.hardcode.jxinput.Axis; -import de.hardcode.jxinput.Directional; -import de.hardcode.jxinput.Button; - -/** - * - * @author Herkules - */ -public class DirectInputDevice implements JXInputDevice -{ - int mDeviceIdx; - - private DIAxis[] mAxes; - private DIButton[] mButtons; - private DIDirectional[] mDirectionals; - - /** - * The number of DirectInput devices available with the driver. - */ - public static int getNumberOfDevices() - { - if ( DirectInputDriver.isAvailable() ) - return DirectInputDriver.getNumberOfDevices(); - return 0; - } - - - /** - * Update the state of all devices. - */ - public static void update() - { - if ( DirectInputDriver.isAvailable() ) - DirectInputDriver.nativeupdate(); - } - - - - - /** - * Creates a new instance of DirectInputDevice. - */ - public DirectInputDevice( int devidx ) - { - mDeviceIdx = devidx; - - init(); - } - - /** - * Reset the DirectInput connection. - */ - public static void reset() - { - if ( DirectInputDriver.isAvailable() ) - DirectInputDriver.reset(); - } - - - /** - * Initialisation of fields. - */ - private final void init() - { - // - // Allocate arrays for max. number of features - // - mAxes = new DIAxis [ getMaxNumberOfAxes() ]; - mButtons = new DIButton [ getMaxNumberOfButtons() ]; - mDirectionals = new DIDirectional [ getMaxNumberOfDirectionals() ]; - - // - // Fill arrays due to the state of the driver. - // - for ( int i = 0; i < mAxes.length; ++i ) - { - if ( DirectInputDriver.isAxisAvailable( mDeviceIdx, i ) ) - mAxes[ i ] = new DIAxis( mDeviceIdx, i ); - } - - for ( int i = 0; i < mButtons.length; ++i ) - { - if ( DirectInputDriver.isButtonAvailable( mDeviceIdx, i ) ) - mButtons[ i ] = new DIButton( mDeviceIdx, i ); - } - - for ( int i = 0; i < mDirectionals.length; ++i ) - { - if ( DirectInputDriver.isDirectionalAvailable( mDeviceIdx, i ) ) - mDirectionals[ i ] = new DIDirectional( mDeviceIdx, i ); - } - } - - /** Devices may have a name. */ - public String getName() - { - String name = DirectInputDriver.getName( mDeviceIdx ); - if ( null == name ) - return "Win32 DirectInput Joystick"; - return name; - } - - - /** Actual number of available buttons. */ - public int getNumberOfButtons() - { - return DirectInputDriver.getNumberOfButtons( mDeviceIdx ); - } - - /** Actual number of available axes. */ - public int getNumberOfAxes() - { - return DirectInputDriver.getNumberOfAxes( mDeviceIdx ); - } - - /** Actual number of available directional features. */ - public int getNumberOfDirectionals() - { - return DirectInputDriver.getNumberOfDirectionals( mDeviceIdx ); - } - - /** Maximum number of buttons as an upper bound for index values. */ - public int getMaxNumberOfButtons() - { - return DirectInputDriver.getMaxNumberOfButtons(); - } - - /** Maximum number of axes as an upper bound for index values. */ - public int getMaxNumberOfAxes() - { - return DirectInputDriver.getMaxNumberOfAxes(); - } - - /** Maximum number of available directional features. */ - public int getMaxNumberOfDirectionals() - { - return DirectInputDriver.getMaxNumberOfDirectionals(); - } - - - public Axis getAxis(int idx) - { - return mAxes[ idx ]; - } - - public Button getButton(int idx) - { - return mButtons[ idx ]; - } - - public Directional getDirectional(int idx) - { - return mDirectionals[ idx ]; - } - -} - - - diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DirectInputDriver.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DirectInputDriver.java deleted file mode 100644 index 558f7d8..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/DirectInputDriver.java +++ /dev/null @@ -1,184 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 19. Dezember 2001, 22:44 -//********************************************************************************************** -package de.hardcode.jxinput.directinput; - -import java.lang.reflect.Array; - -/** - * DirectInputDriver: the connection to the Win32 joystick. - * There is only one allowed, so the layout of this class is merely static. - * - * History: - * - * Changes since 0.1beta: - * - support of multiple devices addressed by the dev index - * - * - * @author Herkules - * @version 0.2beta - */ -class DirectInputDriver -{ - private final static String NATIVE_LIB_NAME = "jxinput"; - - /** Remember wether nativeinit() succeeded. */ - static boolean sIsOperational = false; - - // - // Static arrays to hold the values. - // - private static double [][] sAxisValues; - private static boolean [][] sButtonStates; - private static int [][] sDirectionalValues; - - /** - * Perform the static initialization. - */ - static - { - try - { - // Load the native lib. - System.loadLibrary( NATIVE_LIB_NAME ); - - init(); - } - catch( SecurityException e ) - { - Log.logger.warning("Native library jxinput not loaded due to a SecurityException."); - } - catch( UnsatisfiedLinkError e ) - { - Log.logger.info("Native library jxinput not loaded due to an UnsatisfiedLinkError."); - } - } - - - private final static void init() - { - sIsOperational = false; - // - // Initialize it. - // - if ( nativeinit() ) - { - int devs = getNumberOfDevices(); - sAxisValues = new double [ devs ][ DirectInputDriver.getMaxNumberOfAxes() ]; - sButtonStates = new boolean [ devs ][ DirectInputDriver.getMaxNumberOfButtons() ]; - sDirectionalValues = new int [ devs ][ DirectInputDriver.getMaxNumberOfDirectionals() ]; - - // Bind the native lib to my variables. - bind(); - - // Remember I am fine. - sIsOperational = true; - } - - } - - - /** - * Static ctor of DirectInputDriver. - * No object will be created due to the static layout. - */ - private DirectInputDriver() - { - } - - // Administration - private static native boolean nativeinit(); - private static native void nativeexit(); - private static native void bind(); - - static native int getNumberOfDevices(); - - // Configuration - static native String getName( int dev ); - static native int getNumberOfAxes( int dev ); - static native int getNumberOfButtons( int dev ); - static native int getNumberOfDirectionals( int dev ); - static native int getMaxNumberOfAxes(); - static native int getMaxNumberOfButtons(); - static native int getMaxNumberOfDirectionals(); - - static native boolean isAxisAvailable( int dev, int idx ); - static native String getAxisName( int dev, int idx ); - static native int getAxisType( int dev, int idx ); - - static native boolean isButtonAvailable( int dev, int idx ); - static native String getButtonName( int dev, int idx ); - static native int getButtonType( int dev, int idx ); - - static native boolean isDirectionalAvailable( int dev, int idx ); - static native String getDirectionalName( int dev, int idx ); - - // Operation - static native void nativeupdate(); - - - public static boolean isAvailable() - { - return sIsOperational; - } - - - /** - * Shutdown the device and free all Win32 resources. - * It is not a good idea to access any joystick features after - * shutdown(). - */ - static void shutdown() - { - nativeexit(); - sAxisValues = null; - sButtonStates = null; - sDirectionalValues = null; - } - - - /** - * Reset the device and free all Win32 resources. - */ - static void reset() - { - shutdown(); - init(); - } - - static double getAxisValue( int dev, int idx ) - { - return sAxisValues[ dev ][ idx ]; - } - - static boolean getButtonState( int dev, int idx ) - { - return sButtonStates[ dev ][ idx ]; - } - - static int getDirection( int dev, int idx ) - { - return sDirectionalValues[ dev ][ idx ]; - } - - /** - * @param args the command line arguments - */ - public static void main (String args[]) - { - - if ( ! sIsOperational ) - return; - - for( int i = 0; i < 5000; ++i ) - nativeupdate(); - - shutdown(); - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/Log.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/Log.java deleted file mode 100644 index 95e586c..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/directinput/Log.java +++ /dev/null @@ -1,34 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 29. Oktober 2002, 22:57 -//********************************************************************************************** -package de.hardcode.jxinput.directinput; - -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * - * @author Herkules - */ -public class Log -{ - public final static Logger logger = Logger.getLogger( Log.class.getPackage().getName() ); - -// static -// { -// logger.setLevel( Level.ALL ); -// } - - /** - * Creates a new instance of Log. - */ - private Log() - { - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputAxisEvent.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputAxisEvent.java deleted file mode 100644 index c353b5e..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputAxisEvent.java +++ /dev/null @@ -1,48 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 31. Januar 2002, 23:33 -//********************************************************************************************** -package de.hardcode.jxinput.event; - -import de.hardcode.jxinput.JXInputDevice; -import de.hardcode.jxinput.Axis; - -/** - * Represents an event coming from an axis. - * @author Joerg Plewe - */ -public class JXInputAxisEvent -{ - private final Axis mAxis; - double mDelta; - - /** - * Creates a new instance of JXInputEvent. - */ - JXInputAxisEvent( Axis axis ) - { - mAxis = axis; - } - - /** - * The feature that caused the event. - */ - public final Axis getAxis() - { - return mAxis; - } - - - /** - * Return the change in value that caused the event. - */ - public double getDelta() - { - return mDelta; - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputAxisEventListener.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputAxisEventListener.java deleted file mode 100644 index d8adf46..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputAxisEventListener.java +++ /dev/null @@ -1,19 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 31. Januar 2002, 23:54 -//********************************************************************************************** -package de.hardcode.jxinput.event; - -/** - * - * @author Herkules - */ -public interface JXInputAxisEventListener -{ - void changed( JXInputAxisEvent ev ); -} - diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputButtonEvent.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputButtonEvent.java deleted file mode 100644 index d82d0b9..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputButtonEvent.java +++ /dev/null @@ -1,38 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 31. Januar 2002, 23:33 -//********************************************************************************************** -package de.hardcode.jxinput.event; - -import de.hardcode.jxinput.JXInputDevice; -import de.hardcode.jxinput.Button; - -/** - * Represents event coming from a button. - * @author Joerg Plewe - */ -public class JXInputButtonEvent -{ - final Button mButton; - - /** - * Creates a new instance of JXInputEvent. - */ - JXInputButtonEvent( Button button ) - { - mButton = button; - } - - /** - * The feature that caused the event. - */ - public final Button getButton() - { - return mButton; - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputButtonEventListener.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputButtonEventListener.java deleted file mode 100644 index afdc323..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputButtonEventListener.java +++ /dev/null @@ -1,19 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 31. Januar 2002, 23:54 -//********************************************************************************************** -package de.hardcode.jxinput.event; - -/** - * - * @author Herkules - */ -public interface JXInputButtonEventListener -{ - void changed( JXInputButtonEvent ev ); -} - diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputDirectionalEvent.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputDirectionalEvent.java deleted file mode 100644 index 70e6bcd..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputDirectionalEvent.java +++ /dev/null @@ -1,56 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 31. Januar 2002, 23:33 -//********************************************************************************************** -package de.hardcode.jxinput.event; - -import de.hardcode.jxinput.JXInputDevice; -import de.hardcode.jxinput.Directional; - -/** - * Represents an event coming from an axis. - * @author Joerg Plewe - */ -public class JXInputDirectionalEvent -{ - private final Directional mDirectional; - double mValueDelta; - int mDirectionDelta; - - /** - * Creates a new instance of JXInputEvent. - */ - JXInputDirectionalEvent( Directional directional ) - { - mDirectional = directional; - } - - /** - * The feature that caused the event. - */ - public final Directional getDirectional() - { - return mDirectional; - } - - /** - * Return the change in value that caused the event. - */ - public double getValueDelta() - { - return mValueDelta; - } - - /** - * Return the change in direction that caused the event. - */ - public int getDirectionDelta() - { - return mDirectionDelta; - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputDirectionalEventListener.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputDirectionalEventListener.java deleted file mode 100644 index 65c7efa..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputDirectionalEventListener.java +++ /dev/null @@ -1,19 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 31. Januar 2002, 23:54 -//********************************************************************************************** -package de.hardcode.jxinput.event; - -/** - * - * @author Herkules - */ -public interface JXInputDirectionalEventListener -{ - void changed( JXInputDirectionalEvent ev ); -} - diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputEventManager.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputEventManager.java deleted file mode 100644 index aa196d7..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/event/JXInputEventManager.java +++ /dev/null @@ -1,284 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 31. Januar 2002, 23:42 -//********************************************************************************************** -package de.hardcode.jxinput.event; - -import de.hardcode.jxinput.JXInputManager; -import de.hardcode.jxinput.JXInputDevice; - -import java.util.ArrayList; -import de.hardcode.jxinput.Axis; -import java.util.Iterator; -import de.hardcode.jxinput.Button; -import de.hardcode.jxinput.Directional; - -/** - * Handles all events and listeners. - * JXInputEventManager is layed out a static singleton. - * @author Herkules - */ -public class JXInputEventManager -{ - - private final static ArrayList mAxisEventListeners = new ArrayList(); - private final static ArrayList mButtonEventListeners = new ArrayList(); - private final static ArrayList mDirectionalEventListeners = new ArrayList(); - - private static autotrigger mAutoTrigger = null; - - /** - * Inner class combining a listener with its scheduling parameters. - */ - private static class axislistener - { - final JXInputAxisEventListener mListener; - final double mTreshold; - final JXInputAxisEvent mEvent; - double mLastValueFired = 0.0; - - axislistener( JXInputAxisEventListener l, Axis axis, double treshold ) - { - mListener = l; - mTreshold = treshold; - mEvent = new JXInputAxisEvent( axis ); - } - - final void checkTrigger() - { - double curval = mEvent.getAxis().getValue(); - double delta = curval - mLastValueFired; - - if ( Math.abs( delta ) >= mTreshold ) - { - mLastValueFired = curval; - mEvent.mDelta = delta; - mListener.changed( mEvent ); - } - } - } - - /** - * Inner class combining a listener with its scheduling parameters. - */ - private static class buttonlistener - { - final JXInputButtonEventListener mListener; - final JXInputButtonEvent mEvent; - boolean mLastValueFired = false; - - buttonlistener( JXInputButtonEventListener l, Button button ) - { - mListener = l; - mEvent = new JXInputButtonEvent( button ); - } - - final void checkTrigger() - { - boolean curstate = mEvent.getButton().getState(); - if ( curstate != mLastValueFired ) - { - mLastValueFired = curstate; - mListener.changed( mEvent ); - } - } - } - - - private static class directionallistener - { - final JXInputDirectionalEventListener mListener; - final double mValueTreshold; - final JXInputDirectionalEvent mEvent; - double mLastValueFired = 0.0; - boolean mLastCenteredFired = true; - int mLastDirectionFired = 0; - - directionallistener( JXInputDirectionalEventListener l, Directional directional, double valuetreshold ) - { - mListener = l; - mValueTreshold = valuetreshold; - mEvent = new JXInputDirectionalEvent( directional ); - } - - final void checkTrigger() - { - double curval = mEvent.getDirectional().getValue(); - int curdir = mEvent.getDirectional().getDirection(); - boolean curctr = mEvent.getDirectional().isCentered(); - - double delta = curval - mLastValueFired; - int dirdelta = curdir - mLastDirectionFired; - boolean centeredchanged = mLastCenteredFired != curctr; - - if ( Math.abs( delta ) >= mValueTreshold - || Math.abs( dirdelta ) > 0 - || centeredchanged ) - { - mLastValueFired = curval; - mLastDirectionFired = curdir; - mLastCenteredFired = curctr; - - mEvent.mValueDelta = delta; - mEvent.mDirectionDelta = dirdelta; - mListener.changed( mEvent ); - } - } - } - - /** - * Creates a new instance of JXInputEventManager. - */ - private JXInputEventManager() - { - } - - - /** - * Remove all listeners at once. - */ - public static void reset() - { - mAxisEventListeners.clear(); - mButtonEventListeners.clear(); - mDirectionalEventListeners.clear(); - } - - - /** - * Query devices and fire all occuring events. - * trigger() is thought to be called by JXInputManager#updateFeatures(). - */ - public static void trigger() - { - int n = mAxisEventListeners.size(); - for ( int i = 0; i < n; i++ ) - { - axislistener l = (axislistener)mAxisEventListeners.get( i ); - l.checkTrigger(); - } - - n = mButtonEventListeners.size(); - for ( int i = 0; i < n; i++ ) - { - buttonlistener l = (buttonlistener)mButtonEventListeners.get( i ); - l.checkTrigger(); - } - - n = mDirectionalEventListeners.size(); - for ( int i = 0; i < n; i++ ) - { - directionallistener l = (directionallistener)mDirectionalEventListeners.get( i ); - l.checkTrigger(); - } - } - - - private final static class autotrigger extends Thread - { - boolean mFinish = false; - final int mDelay; - - autotrigger( int delay ) - { - mDelay = delay; - } - - public void run() - { - while ( ! mFinish ) - { - try - { - Thread.sleep( mDelay ); - JXInputManager.updateFeatures(); - } - catch ( InterruptedException ex ) - { - } - } - } - } - - - /** - * Set the intervall in ms that is used to check for new values of the features. - * Set it to <= 0 to prohibit automatic triggering. Events will then only be fired - * when somebody invokes JXInputManager#updateFeatures(). - */ - public static void setTriggerIntervall( int ms ) - { - // - // Kill current thread, if any - // - if ( null != mAutoTrigger ) - { - mAutoTrigger.mFinish = true; - try - { - mAutoTrigger.join(); - } - catch ( InterruptedException ex ) - { - } - } - - mAutoTrigger = null; - - if ( ms > 0 ) - { - mAutoTrigger = new autotrigger( ms ); - mAutoTrigger.start(); - } - - } - - - - - public static void addListener( JXInputAxisEventListener l, Axis axis, double treshold ) - { - mAxisEventListeners.add( new JXInputEventManager.axislistener( l, axis, treshold ) ); - } - - public static void addListener( JXInputAxisEventListener l, Axis axis ) - { - mAxisEventListeners.add( new JXInputEventManager.axislistener( l, axis, axis.getResolution() ) ); - } - - public static void removeListener( JXInputAxisEventListener l ) - { - mAxisEventListeners.remove( l ); - } - - - public static void addListener( JXInputButtonEventListener l, Button button ) - { - mButtonEventListeners.add( new JXInputEventManager.buttonlistener( l, button ) ); - } - - public static void removeListener( JXInputButtonEventListener l ) - { - mButtonEventListeners.remove( l ); - } - - public static void addListener( JXInputDirectionalEventListener l, Directional directional, double valuetreshold ) - { - mDirectionalEventListeners.add( new JXInputEventManager.directionallistener( l, directional, valuetreshold ) ); - } - - public static void addListener( JXInputDirectionalEventListener l, Directional directional ) - { - mDirectionalEventListeners.add( new JXInputEventManager.directionallistener( l, directional, directional.getResolution() ) ); - } - - public static void removeListener( JXInputDirectionalEventListener l ) - { - mDirectionalEventListeners.remove( l ); - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/DeviceConfiguration.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/DeviceConfiguration.java deleted file mode 100644 index 8c1288a..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/DeviceConfiguration.java +++ /dev/null @@ -1,95 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 23. Februar 2002, 14:05 -//********************************************************************************************** -package de.hardcode.jxinput.j3d; - -import de.hardcode.jxinput.Axis; - - -/** - * Connects JXInput with J3DInputDevice. - * - * @author Herkules - */ -public class DeviceConfiguration -{ - public final static int AXIS_X = 0; - public final static int AXIS_Y = 1; - public final static int AXIS_Z = 2; - - private final static class axisvalue - { - private final Axis mAxis; - private final IsActiveCondition mIsActive; - private final IsActiveCondition mIsIncremental; - private final double mScale; - private final double mOffset; - private double mValue; - - axisvalue( Axis axis, IsActiveCondition active, IsActiveCondition incremental, double offset, double scale ) - { - mAxis = axis; - mIsActive = active; - mIsIncremental = incremental; - mValue = mOffset = offset; - mScale = scale; - } - - double value() - { - if ( mIsActive.isActive() ) - { - double newval = mAxis.getValue() * mScale; - - if ( mIsIncremental.isActive() ) - mValue += newval; - else - mValue = newval + mOffset; - } - return mValue; - } - } - - DeviceConfiguration.axisvalue [] mAxisTrans = new DeviceConfiguration.axisvalue[ 3 ]; - DeviceConfiguration.axisvalue [] mAxisRot = new DeviceConfiguration.axisvalue[ 3 ]; - - /** - * Creates a new instance of DeviceConfiguration. - */ - public DeviceConfiguration() - { - } - - - double getTranslational( int axisid ) - { - DeviceConfiguration.axisvalue val = mAxisTrans[ axisid ]; - return null == val ? 0.0 : val.value(); - } - - double getRotational( int axisid ) - { - DeviceConfiguration.axisvalue val = mAxisRot[ axisid ]; - return null == val ? 0.0 : val.value(); - } - - public void setTranslational( int axisid, Axis axis, IsActiveCondition active, IsActiveCondition incremental, double offset, double scale ) - { - if ( axisid < 0 || axisid > AXIS_Z ) - throw new IllegalArgumentException(); - mAxisTrans[ axisid ] = new DeviceConfiguration.axisvalue( axis, active, incremental, offset, scale ); - } - - public void setRotational( int axisid, Axis axis, IsActiveCondition active, IsActiveCondition incremental, double offset, double scale ) - { - if ( axisid < 0 || axisid > AXIS_Z ) - throw new IllegalArgumentException(); - mAxisRot[ axisid ] = new DeviceConfiguration.axisvalue( axis, active, incremental, offset, scale ); - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/IsActiveCondition.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/IsActiveCondition.java deleted file mode 100644 index af6ca08..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/IsActiveCondition.java +++ /dev/null @@ -1,25 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 25. Februar 2002, 22:41 -//********************************************************************************************** -package de.hardcode.jxinput.j3d; - -/** - * - * @author Herkules - */ -public interface IsActiveCondition -{ - public final static IsActiveCondition ALWAYS = IsAlwaysActiveCondition.ALWAYS; - public final static IsActiveCondition NEVER = IsAlwaysActiveCondition.NEVER; - - /** - * Tell wether a certain thing is active. - */ - boolean isActive(); -} - diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/IsActiveOnButtonCondition.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/IsActiveOnButtonCondition.java deleted file mode 100644 index 98da7bb..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/IsActiveOnButtonCondition.java +++ /dev/null @@ -1,39 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 25. Februar 2002, 22:43 -//********************************************************************************************** -package de.hardcode.jxinput.j3d; - -import de.hardcode.jxinput.Button; - -/** - * - * @author Herkules - */ -public class IsActiveOnButtonCondition implements IsActiveCondition -{ - private final boolean mActiveState; - private final Button mButton; - - /** - * Creates a new instance of IsAlwayActiveCondition. - */ - public IsActiveOnButtonCondition( Button button, boolean activestate ) - { - mActiveState = activestate; - mButton = button; - } - - /** - * Tell wether a certain thing is active. - */ - public boolean isActive() - { - return mButton.getState() == mActiveState; - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/IsAlwaysActiveCondition.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/IsAlwaysActiveCondition.java deleted file mode 100644 index cd8b1fe..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/IsAlwaysActiveCondition.java +++ /dev/null @@ -1,38 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 25. Februar 2002, 22:43 -//********************************************************************************************** -package de.hardcode.jxinput.j3d; - -/** - * - * @author Herkules - */ -final class IsAlwaysActiveCondition implements IsActiveCondition -{ - private final boolean mIsActive; - - public final static IsActiveCondition ALWAYS = new IsAlwaysActiveCondition( true ); - public final static IsActiveCondition NEVER = new IsAlwaysActiveCondition( false ); - - /** - * Creates a new instance of IsAlwayActiveCondition. - */ - private IsAlwaysActiveCondition(boolean isactive) - { - mIsActive = isactive; - } - - /** - * Tell wether a certain thing is active. - */ - public boolean isActive() - { - return mIsActive; - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/J3DInputDevice.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/J3DInputDevice.java deleted file mode 100644 index f5b08f2..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/J3DInputDevice.java +++ /dev/null @@ -1,171 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 22. Februar 2002, 13:21 -//********************************************************************************************** -package de.hardcode.jxinput.j3d; - -import javax.media.j3d.InputDevice; -import javax.media.j3d.Sensor; -import javax.media.j3d.SensorRead; -import javax.vecmath.Vector3d; -import javax.media.j3d.Transform3D; -import de.hardcode.jxinput.JXInputManager; - - -/** - * Implementation of Java3D's InputDevice - * - * @author Herkules - */ -public class J3DInputDevice - implements InputDevice -{ - private Vector3d mPosition = new Vector3d(); - private Transform3D mNewTransform = new Transform3D(); - - private Transform3D mRotTransX = new Transform3D(); - private Transform3D mRotTransY = new Transform3D(); - private Transform3D mRotTransZ = new Transform3D(); - - private Vector3d mInitPos = new Vector3d( 0.0, 0.0, 0.0 ); - - private Sensor mSensor = new Sensor( this ); - private SensorRead mSensorRead = new SensorRead(); - - private DeviceConfiguration mConfig; - - /** - * Creates a new instance of J3DInputDevice. - */ - public J3DInputDevice( DeviceConfiguration config ) - { - mConfig = config; - setNominalPositionAndOrientation(); - } - - - public void close() - { - // Intentionally empty - } - - - /** - * Retrieve processing mode. - * For this device, it always is NON_BLOCKING. - */ - public int getProcessingMode() - { - return InputDevice.NON_BLOCKING; - } - - - /** - * Don't care for the index, I only support one sensor. - * And I deliver that. - */ - public Sensor getSensor( int param ) - { - return mSensor; - } - - - /** - * Tell the world about the only one sensor I support. - */ - public int getSensorCount() - { - return 1; - } - - - /** - * Well - initialize! - * Nothing to do here. - */ - public boolean initialize() - { - return true; - } - - - /** - * The main update method. - */ - public void pollAndProcessInput() - { - JXInputManager.updateFeatures(); - - mSensorRead.setTime( JXInputManager.getLastUpdateTime() ); - - mRotTransX.rotX( mConfig.getRotational( DeviceConfiguration.AXIS_X ) ); - mRotTransY.rotY( mConfig.getRotational( DeviceConfiguration.AXIS_Y ) ); - mRotTransZ.rotZ( mConfig.getRotational( DeviceConfiguration.AXIS_Z ) ); - - mPosition.set( - mConfig.getTranslational( DeviceConfiguration.AXIS_X ), - mConfig.getTranslational( DeviceConfiguration.AXIS_Y ), - mConfig.getTranslational( DeviceConfiguration.AXIS_Z ) - ); - - mNewTransform.set( mPosition ); - - mNewTransform.mul( mRotTransX ); - mNewTransform.mul( mRotTransY ); - mNewTransform.mul( mRotTransZ ); - - mSensorRead.set( mNewTransform ); - mSensor.setNextSensorRead( mSensorRead ); - } - - - /** - * Not called by current j3d implementation. - */ - public void processStreamInput() - { - // Intentionally empty - } - - - /** - * Reset state. - */ - public void setNominalPositionAndOrientation() - { - mSensorRead.setTime( JXInputManager.getLastUpdateTime() ); - - mRotTransX.rotX( 0.0 ); - mRotTransY.rotY( 0.0 ); - mRotTransZ.rotZ( 0.0 ); - - mPosition.set( mInitPos ); - - mNewTransform.set( mPosition ); - - mNewTransform.mul( mRotTransX ); - mNewTransform.mul( mRotTransY ); - mNewTransform.mul( mRotTransZ ); - - mSensorRead.set( mNewTransform ); - mSensor.setNextSensorRead( mSensorRead ); - - } - - - /** - * Set the processing mode. - * Only NON_BLOCKING is allowed! - */ - public void setProcessingMode(int param) - { - if ( param != InputDevice.NON_BLOCKING ) - throw new IllegalArgumentException("Processing mode must be NON_BLOCKING"); - - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/package.html b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/package.html deleted file mode 100644 index 9b92964..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/package.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - -Connecting JXInput to Java3D by implementing the interface -javax.media.j3d.InputDevice. - - diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/test/HelloUniverse.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/test/HelloUniverse.java deleted file mode 100644 index fde34bc..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/test/HelloUniverse.java +++ /dev/null @@ -1,205 +0,0 @@ - -/* - * @(#)HelloUniverse.java 1.15 02/02/07 14:48:36 - * - * Copyright (c) 1996-2002 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any - * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY - * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES - * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN - * OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR - * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR - * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF - * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, - * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that Software is not designed,licensed or intended - * for use in the design, construction, operation or maintenance of - * any nuclear facility. - */ - -package de.hardcode.jxinput.j3d.test; - - -import java.applet.Applet; -import java.awt.*; -import java.awt.event.*; -import com.sun.j3d.utils.applet.MainFrame; -import com.sun.j3d.utils.geometry.ColorCube; -import com.sun.j3d.utils.universe.*; -import javax.media.j3d.*; -import javax.vecmath.*; -import de.hardcode.jxinput.j3d.DeviceConfiguration; -import de.hardcode.jxinput.Axis; -import de.hardcode.jxinput.JXInputManager; -import de.hardcode.jxinput.j3d.IsActiveCondition; -import de.hardcode.jxinput.j3d.J3DInputDevice; -import de.hardcode.jxinput.j3d.IsActiveOnButtonCondition; - - -public class HelloUniverse extends Applet -{ - - private SimpleUniverse u = null; - TransformGroup objTrans; - - public BranchGroup createSceneGraph() - { - BranchGroup objRoot = new BranchGroup(); - objTrans = new TransformGroup(); - objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); - objRoot.addChild(objTrans); - objTrans.addChild(new ColorCube(0.4)); - -// Transform3D yAxis = new Transform3D(); -// Alpha rotationAlpha = new Alpha(-1, Alpha.INCREASING_ENABLE, -// 0, 0, -// 4000, 0, 0, -// 0, 0, 0); -// RotationInterpolator rotator = new RotationInterpolator(rotationAlpha, objTrans, yAxis, -// 0.0f, (float) Math.PI*2.0f); -// BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0); -// rotator.setSchedulingBounds(bounds); -// objTrans.addChild(rotator); - return objRoot; - } - - - public HelloUniverse() - { - - } - - public void init() - { - // These are the string arguments given to the VirtualInputDevice - // constructor. These are settable parameters. Look in the - // VirtualInputDevice constructor for a complete list. - String[] args = new String[10]; - args[0] = "printvalues"; - args[1] = "true"; - args[2] = "yscreeninitloc"; - args[3] = "50"; - args[4] = null; - - - // now create the HelloUniverse Canvas - setLayout(new BorderLayout()); - GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); - - Canvas3D c = new Canvas3D(config); - add("Center", c); - - // Create a simple scene and attach it to the virtual universe - BranchGroup scene = createSceneGraph(); - u = new SimpleUniverse(c); - - // - // Use the inputdevice - // - InputDevice device = createInputDevice(); - - // Register the VirtualInputDevice with Java 3D - u.getViewer().getPhysicalEnvironment().addInputDevice( device ); - -// TransformGroup viewTrans = u.getViewingPlatform().getViewPlatformTransform(); - - // Put the behavoir to teh object - SensorBehavior s = new SensorBehavior( objTrans, device.getSensor(0) ); - s.setSchedulingBounds( new BoundingSphere( new Point3d(0.0,0.0,0.0), Float.MAX_VALUE ) ); - objTrans.addChild( s ); - - u.getViewingPlatform().setNominalViewingTransform(); - u.addBranchGraph(scene); - } - - public void destroy() - { - u.removeAllLocales(); - } - - - /** - * Setup an input device. - */ - private InputDevice createInputDevice() - { - IsActiveCondition button1down = new IsActiveOnButtonCondition(JXInputManager.getJXInputDevice( 0 ).getButton( 0 ), true ); - IsActiveCondition button1up = new IsActiveOnButtonCondition(JXInputManager.getJXInputDevice( 0 ).getButton( 0 ), false ); - - Axis xaxis = JXInputManager.getJXInputDevice( 0 ).getAxis( Axis.ID_X ); - Axis yaxis = JXInputManager.getJXInputDevice( 0 ).getAxis( Axis.ID_Y ); - - DeviceConfiguration cnf = new DeviceConfiguration(); - - // - // Setup the configuration to use joysticks x/y for rotation is not button is pressed - // and for translation if button1 is pressed. - // - cnf.setRotational( - DeviceConfiguration.AXIS_Y, - xaxis, - button1up, - IsActiveCondition.NEVER, - 0.0, Math.PI - ); - - cnf.setRotational( - DeviceConfiguration.AXIS_X, - yaxis, - button1up, - IsActiveCondition.NEVER, - 0.0, Math.PI - ); - - cnf.setTranslational( - DeviceConfiguration.AXIS_Z, - yaxis, - button1down, - IsActiveCondition.NEVER, - -5.0, 4.0 - ); - cnf.setTranslational( - DeviceConfiguration.AXIS_X, - xaxis, - button1down, - IsActiveCondition.NEVER, - 0.0, 4.0 - ); - - // We have the config, create the device... - J3DInputDevice d = new J3DInputDevice( cnf ); - - // The InputDevice must be initialized before registering it - // with the PhysicalEnvironment object. - d.initialize(); - - return d; - } - - - public static void main(String[] args) - { - new MainFrame(new HelloUniverse(), 350, 350); - } -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/test/SensorBehavior.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/test/SensorBehavior.java deleted file mode 100644 index 6836ebb..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/j3d/test/SensorBehavior.java +++ /dev/null @@ -1,70 +0,0 @@ -package de.hardcode.jxinput.j3d.test; - -/* - * @(#)SensorBehavior.java 1.8 02/02/07 14:48:34 - * - * Copyright (c) 1996-2002 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any - * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY - * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES - * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN - * OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR - * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR - * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF - * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, - * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that Software is not designed,licensed or intended - * for use in the design, construction, operation or maintenance of - * any nuclear facility. - */ - -import javax.media.j3d.*; -import java.util.*; - -public class SensorBehavior extends Behavior -{ - private WakeupOnElapsedFrames conditions = new WakeupOnElapsedFrames(0); - private TransformGroup transformGroup; - private Sensor sensor; - private Transform3D transform = new Transform3D(); - - public SensorBehavior( TransformGroup tg, Sensor sensor ) - { - transformGroup = tg; - this.sensor = sensor; - } - - public void initialize() - { - wakeupOn( conditions ); - } - - public void processStimulus( Enumeration criteria ) - { - sensor.getRead( transform ); - transformGroup.setTransform( transform ); - wakeupOn( conditions ); - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/InvalidKeyCodeException.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/InvalidKeyCodeException.java deleted file mode 100644 index f44ee6b..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/InvalidKeyCodeException.java +++ /dev/null @@ -1,35 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 16. April 2002, 23:31 -//********************************************************************************************** -package de.hardcode.jxinput.keyboard; - -/** - * Exeception to be thrown if keycode is not in then range [0,255]. - * - * @author Herkules - */ -public class InvalidKeyCodeException - extends IllegalArgumentException -{ - - /** - * Creates a new instance of InvalidKeyCodeException. - */ - public InvalidKeyCodeException() - { - } - - - /** - * Creates a new instance of InvalidKeyCodeException. - */ - public InvalidKeyCodeException( String s ) - { - super( s ); - } -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/JXKeyboardInputDevice.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/JXKeyboardInputDevice.java deleted file mode 100644 index 858bdb7..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/JXKeyboardInputDevice.java +++ /dev/null @@ -1,175 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 9. April 2002, 22:40 -//********************************************************************************************** -package de.hardcode.jxinput.keyboard; - - -import de.hardcode.jxinput.*; -import java.awt.Component; - - -/** - * Virtual input device treating a AWT keyboard as a source for Buttons. - * - * @author Herkules - */ -public class JXKeyboardInputDevice - implements JXInputDevice -{ - private static final String DEVICENAME = "Swing Keyboard"; - - /** The driver doing all the real work. */ - private final KeyboardDriver mDriver = new KeyboardDriver(); - - /** The Component I am listening to. */ - private Component mComponent = null; - - /** Hold the biggest keycode for which a button has been created. */ - private int mMaxIdxCreated = 0; - - - /** - * Creates a new instance of JXKeyboardInputDevice. - */ - public JXKeyboardInputDevice() - { - } - - - /** - * Creates a new instance of JXKeyboardInputDevice - * immediately listening to a JComponent. - */ - public JXKeyboardInputDevice( Component comp ) - { - listenTo( comp ); - } - - /** - * Makes this device listen to a certain JComponent. - */ - public final void listenTo( Component comp ) - { - shutdown(); - mComponent = comp; - mComponent.addKeyListener( mDriver ); - } - - /** - * Shut down. No longer listen to my JComponent. - */ - public final void shutdown() - { - if ( null != mComponent ) - mComponent.removeKeyListener( mDriver ); - } - - - /** - * Create a button object for a certain keycode. - */ - public Button createButton( int keycode ) - { - if ( 0 > keycode || 0x100 < keycode ) - throw new InvalidKeyCodeException(); - - KeyButton b; - if ( null == (b = mDriver.getButton( keycode ) ) ) - { - b = new KeyButton( keycode ); - mDriver.registerKeyButton( b ); - if ( keycode > mMaxIdxCreated ) - mMaxIdxCreated = keycode; - } - return b; - } - - - public void removeButton( Button b ) - { - mDriver.unregisterKeyButton( (KeyButton) b ); - } - - - - //********************************************************************************************* - // - // Implement JXInputDevice - // - //********************************************************************************************* - - public Axis getAxis(int idx) - { - // No axes on keyboard. - return null; - } - - - public Button getButton(int idx) - { - // idx is interpreted as the keycode - return mDriver.getButton( idx ); - } - - public Directional getDirectional(int idx) - { - // No directionals on keyboard. - return null; - } - - /** Maximum number of axes as an upper bound for index values. */ - public int getMaxNumberOfAxes() - { - // No axes on keyboard. - return 0; - } - - /** Maximum number of buttons as an upper bound for index values. */ - public int getMaxNumberOfButtons() - { - // Return biggest keycode (inclusive). - return mMaxIdxCreated + 1; - } - - /** Maximum number of directional features as an upper bound for index values. */ - public int getMaxNumberOfDirectionals() - { - // No directionals on keyboard. - return 0; - } - - /** - * Devices may have a name. - * This name might be provided by a system dependant driver. - */ - public String getName() - { - return DEVICENAME; - } - - /** Actual number of available axes. */ - public int getNumberOfAxes() - { - // No axes on keyboard. - return 0; - } - - /** Actual number of available buttons. */ - public int getNumberOfButtons() - { - return mDriver.getNumberOfButtons(); - } - - /** Actual number of available directional features. */ - public int getNumberOfDirectionals() - { - // No directionals on keyboard. - return 0; - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/KeyButton.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/KeyButton.java deleted file mode 100644 index 3fd7130..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/KeyButton.java +++ /dev/null @@ -1,94 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 9. April 2002, 22:51 -//********************************************************************************************** -package de.hardcode.jxinput.keyboard; - -import de.hardcode.jxinput.Button; -import java.awt.event.KeyEvent; - - -/** - * Associates a keycode with a Button and handles the current state of that button. - * - * @author Herkules - */ -class KeyButton - implements Button -{ - private final int mKeyCode; - private boolean mIsPressed; - private boolean mHasChanged; - - /** - * Creates a new instance of KeyButton. - */ - public KeyButton( int keycode ) - { - mKeyCode = keycode; - } - - - /** - * Return the keycode assigned with this button. - */ - public final int getKeyCode() - { - return mKeyCode; - } - - final void setIsPressed( boolean flag ) - { - mIsPressed = flag; - } - - //********************************************************************************************* - // - // Implement Button - // - //********************************************************************************************* - - - /** - * Features may have a name provided e.g. by the driver. - */ - public String getName() - { - return KeyEvent.getKeyText( mKeyCode ); - } - - /** - * Tells the state of the button at last update. - */ - public boolean getState() - { - return mIsPressed; - } - - /** - * Retrieve the type of the button. - * Pushbutton will deliver true==getState() as long as they are pressed down. - * Togglebuttons will change their state once they are pressed and keep that state - * until they are pressed again. - * @return [ PUSHBUTTON | TOGGLEBUTTON ] - */ - public int getType() - { - return Button.PUSHBUTTON; - } - - - /** - * Denote wether this feature has changed beyond it's resolution since it got last - * updated. - */ - public boolean hasChanged() - { - return true; - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/KeyboardDriver.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/KeyboardDriver.java deleted file mode 100644 index 7eb6232..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/KeyboardDriver.java +++ /dev/null @@ -1,141 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 9. April 2002, 22:43 -//********************************************************************************************** -package de.hardcode.jxinput.keyboard; - -import java.awt.event.KeyListener; -import java.awt.event.KeyEvent; -import java.util.HashMap; -import java.security.InvalidParameterException; - - - -/** - * Listen to a JComponent handle handle all associated button objects. - * This is the main worker class for JXKeyboardInputDevice. - * - * @author Herkules - */ -class KeyboardDriver implements KeyListener -{ -// HashMap mKeysToObserveMap = new HashMap(); - - int mNumberOfKeysObserved = 0; - KeyButton [] mKeysObserved = new KeyButton [ 0x100 ]; - - - /** - * Creates a new instance of KeyboardDriver. - */ - public KeyboardDriver() - { - } - - - /** - * How many buttons are registered? - */ - final int getNumberOfButtons() - { - return mNumberOfKeysObserved; -// return mKeysToObserveMap.size(); - } - - - /** - * Place a new button under my observation. - */ - final boolean registerKeyButton( KeyButton b ) - { - final int keycode = b.getKeyCode(); - - if ( 0 > keycode || 0x100 < keycode ) - throw new InvalidKeyCodeException(); - - if ( null == mKeysObserved[ keycode ] ) - { - mKeysObserved[ keycode ] = b; - mNumberOfKeysObserved++; - return true; - } - else - { - return false; - } - -// Integer code = new Integer( b.getKeyCode() ); -// if ( ! mKeysToObserveMap.containsKey( code ) ) -// { -// mKeysToObserveMap.put( code, b ); -// return true; -// } -// else -// { -// return false; -// } - } - - final void unregisterKeyButton( KeyButton b ) - { - final int keycode = b.getKeyCode(); - - if ( 0 > keycode || 0x100 < keycode ) - throw new InvalidKeyCodeException(); - - if ( null != mKeysObserved[ b.getKeyCode() ] ) - { - mKeysObserved[ keycode ] = null; - mNumberOfKeysObserved--; - } - -// Integer code = new Integer( b.getKeyCode() ); -// mKeysToObserveMap.remove( code ); - } - - - /** - * Retrieve the button from its keycode. - */ - final KeyButton getButton( int keycode ) - { - if ( 0 > keycode || 0x100 < keycode ) - throw new InvalidKeyCodeException(); - - return mKeysObserved[ keycode ]; - -// Integer code = new Integer( keycode ); -// return (KeyButton)mKeysToObserveMap.get( code ); - } - - - //********************************************************************************************* - // - // Implement KeyListener - // - //********************************************************************************************* - - public void keyPressed( KeyEvent keyEvent ) - { - KeyButton b = getButton( keyEvent.getKeyCode() ); - if ( null != b ) - b.setIsPressed( true ); - } - - public void keyReleased( KeyEvent keyEvent ) - { - KeyButton b = getButton( keyEvent.getKeyCode() ); - if ( null != b ) - b.setIsPressed( false ); - } - - public void keyTyped( KeyEvent keyEvent ) - { - // Intentionally empty. - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/package.html b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/package.html deleted file mode 100644 index e1021d1..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/keyboard/package.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - de.hardcode.jxinput.keyboard - - -Connects Swing keyboard handling to the JXInput infrastructure. - - diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/AxisListener.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/AxisListener.java deleted file mode 100644 index 7d2b138..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/AxisListener.java +++ /dev/null @@ -1,39 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 20. Februar 2002, 22:19 -//********************************************************************************************** -package de.hardcode.jxinput.test; - -import de.hardcode.jxinput.event.JXInputEventManager; -import de.hardcode.jxinput.event.JXInputAxisEventListener; -import de.hardcode.jxinput.event.JXInputAxisEvent; -import de.hardcode.jxinput.Axis; - -/** - * Example listener to an axis. - * - * @author Herkules - */ -public class AxisListener - implements JXInputAxisEventListener -{ - - /** - * Creates a new instance of AxisListener. - */ - public AxisListener( Axis axis ) - { - JXInputEventManager.addListener( this, axis, 0.1 ); - } - - - public void changed( JXInputAxisEvent ev ) - { - System.out.println( "Axis " + ev.getAxis().getName() + " changed : value=" + ev.getAxis().getValue() + ", event causing delta=" + ev.getDelta() ); - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/ButtonListener.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/ButtonListener.java deleted file mode 100644 index 604002d..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/ButtonListener.java +++ /dev/null @@ -1,38 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 20. Februar 2002, 22:19 -//********************************************************************************************** -package de.hardcode.jxinput.test; - -import de.hardcode.jxinput.event.JXInputEventManager; -import de.hardcode.jxinput.event.JXInputButtonEventListener; -import de.hardcode.jxinput.event.JXInputButtonEvent; -import de.hardcode.jxinput.Button; - -/** - * Sample button listener. - * - * @author Herkules - */ -public class ButtonListener implements JXInputButtonEventListener -{ - - /** - * Creates a new instance of AxisListener. - */ - public ButtonListener( Button button ) - { - JXInputEventManager.addListener( this, button ); - } - - - public void changed( JXInputButtonEvent ev ) - { - System.out.println( "Button " + ev.getButton().getName() + " changed : state=" + ev.getButton().getState() ); - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/DirectionalListener.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/DirectionalListener.java deleted file mode 100644 index 9f79796..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/DirectionalListener.java +++ /dev/null @@ -1,37 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 20. Februar 2002, 22:19 -//********************************************************************************************** -package de.hardcode.jxinput.test; - -import de.hardcode.jxinput.event.JXInputEventManager; -import de.hardcode.jxinput.event.JXInputDirectionalEventListener; -import de.hardcode.jxinput.event.JXInputDirectionalEvent; -import de.hardcode.jxinput.Directional; - -/** - * Sample directional listener. - * - * @author Herkules - */ -public class DirectionalListener implements JXInputDirectionalEventListener -{ - /** - * Creates a new instance of AxisListener. - */ - public DirectionalListener( Directional directional ) - { - JXInputEventManager.addListener( this, directional, 1.0 ); - } - - - public void changed( JXInputDirectionalEvent ev ) - { - System.out.println( "Directional " + ev.getDirectional().getName() + " changed : direction=" + ev.getDirectional().getDirection() + ", value=" + ev.getDirectional().getValue() + ", event causing delta=" + ev.getDirectionDelta() ); - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/JXInputDevicePanel.form b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/JXInputDevicePanel.form deleted file mode 100644 index fe9f69e..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/JXInputDevicePanel.form +++ /dev/null @@ -1,97 +0,0 @@ - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/JXInputDevicePanel.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/JXInputDevicePanel.java deleted file mode 100644 index 81fbef3..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/JXInputDevicePanel.java +++ /dev/null @@ -1,296 +0,0 @@ -/* - * JXInputDevicePanel.java - * - * Created on 23. Januar 2002, 22:19 - */ -package de.hardcode.jxinput.test; - -import de.hardcode.jxinput.JXInputManager; -import de.hardcode.jxinput.JXInputDevice; -import de.hardcode.jxinput.Axis; -import de.hardcode.jxinput.Directional; -import de.hardcode.jxinput.Button; - -import javax.swing.*; -import java.awt.GridLayout; -import java.util.ArrayList; -import java.util.Iterator; -import java.awt.BorderLayout; -import java.awt.Font; -import java.util.Dictionary; -import java.util.Enumeration; - -/** - * - * @author Herkules - */ -public class JXInputDevicePanel extends javax.swing.JPanel -{ - private static final Font AXIS_SLIDER_FONT = new Font( "Verdana", Font.PLAIN, 9 ); - - private final JXInputDevice mDev; - private final ArrayList mAxisSliders = new ArrayList(); - private final ArrayList mButtonCheckboxes = new ArrayList(); - private final ArrayList mDirectionalLabels = new ArrayList(); - - - /** Creates new form JXInputDevicePanel */ - public JXInputDevicePanel( JXInputDevice dev ) - { - mDev = dev; - initComponents(); - initFromDevice(); - } - - /** - * Helper class connecting a JSlider with an Axis. - */ - private class AxisSlider extends JSlider - { - Axis mAxis; - AxisSlider( Axis axis ) - { - super( ( Axis.SLIDER == axis.getType() ? 0 : -100 ), 100 ); - this.setMajorTickSpacing( Axis.SLIDER == axis.getType() ? 25 : 50 ); - this.setMinorTickSpacing( 5 ); - this.setPaintTicks( true ); - this.setPaintLabels( true ); - this.setEnabled( false ); - - Dictionary labeldict = this.getLabelTable(); - Enumeration labels = labeldict.elements(); - while ( labels.hasMoreElements() ) - { - JLabel label = (JLabel)labels.nextElement(); - label.setFont( AXIS_SLIDER_FONT ); - label.setSize( 32, 12 ); - label.setHorizontalAlignment( SwingConstants.LEFT ); - } - - mAxis = axis; - } - - void update() - { - int ax = (int)(mAxis.getValue() * 100.0); - - // - // Only if value really changes - // - if ( ax != this.getValue() ) - { - this.setValue( ax ); - this.setToolTipText( mAxis.getName() + ": " + Double.toString( mAxis.getValue() ) ); - } - } - - } - - - private class ButtonCheckbox extends JCheckBox - { - Button mButton; - ButtonCheckbox( Button button ) - { - super( button.getName() ); - this.setEnabled( false ); - mButton = button; - } - - void update() - { - boolean state = mButton.getState(); - - // - // Only if value really changes - // - if ( state != this.isSelected() ) - { - this.setSelected( state ); - } - } - } - - - private class DirectionalLabel extends JLabel - { - Directional mDirectional; - int mCurrent = 0; - - DirectionalLabel( Directional directional ) - { - super( directional.getName() ); - mDirectional = directional; - } - - void update() - { - int dir = mDirectional.getDirection(); - - // - // Only if value really changes - // - if ( dir != mCurrent ) - { - this.setText( mDirectional.getName() + ": " + ( mDirectional.isCentered() ? "-" : Integer.toString( dir ) ) ); - mCurrent = dir; - } - } - } - - - /** - * Setup the dialogs content from the JXInputDevice. - */ - void initFromDevice() - { - if ( null != mDev ) - { - ((GridLayout)mAxesPanel.getLayout()).setRows( mDev.getNumberOfAxes() ); - - for ( int i = 0; i < mDev.getMaxNumberOfAxes(); ++i ) - { - if ( null != mDev.getAxis( i ) ) - { - AxisSlider slider = new AxisSlider( mDev.getAxis( i ) ); - - JLabel name = new JLabel( mDev.getAxis( i ).getName() ); - name.setVerticalAlignment( SwingConstants.TOP ); - name.setHorizontalAlignment( SwingConstants.CENTER ); - name.setPreferredSize( new java.awt.Dimension( 90, 0 ) ); - - JPanel p = new JPanel(); - p.setLayout( new BorderLayout() ); - - p.add( name, BorderLayout.WEST ); - p.add( slider, BorderLayout.CENTER ); - - mAxesPanel.add( p ); - - // Add to list of all AxisSlider controls - mAxisSliders.add( slider ); - - // Add an event listener: - new AxisListener( mDev.getAxis( i ) ); - } - } - - - ((GridLayout)mButtonsPanel.getLayout()).setRows( mDev.getNumberOfButtons() ); - for ( int i = 0; i < mDev.getMaxNumberOfButtons(); ++i ) - { - if ( null != mDev.getButton( i ) ) - { - ButtonCheckbox chk = new ButtonCheckbox( mDev.getButton( i ) ); - mButtonCheckboxes.add( chk ); - mButtonsPanel.add( chk ); - - // Add an event listener: - new ButtonListener( mDev.getButton( i ) ); - } - } - - ((GridLayout)mDirectionalPanel.getLayout()).setRows( mDev.getNumberOfDirectionals() / 2 ); - for ( int i = 0; i < mDev.getMaxNumberOfDirectionals(); ++i ) - { - if ( null != mDev.getDirectional( i ) ) - { - DirectionalLabel lbl = new DirectionalLabel( mDev.getDirectional( i ) ); - mDirectionalLabels.add( lbl ); - mDirectionalPanel.add( lbl ); - - // Add an event listener: - new DirectionalListener( mDev.getDirectional( i ) ); - } - } - } - } - - - public void update() - { - Iterator it = mAxisSliders.iterator(); - while ( it.hasNext() ) - { - ((AxisSlider)it.next()).update(); - } - - it = mButtonCheckboxes.iterator(); - while ( it.hasNext() ) - { - ((ButtonCheckbox)it.next()).update(); - } - - it = mDirectionalLabels.iterator(); - while ( it.hasNext() ) - { - ((DirectionalLabel)it.next()).update(); - } - } - - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - // //GEN-BEGIN:initComponents - private void initComponents() - { - mAxesPanelContainer = new javax.swing.JPanel(); - mAxesPanel = new javax.swing.JPanel(); - mDirectionalPanel = new javax.swing.JPanel(); - mButtonScrollPane = new javax.swing.JScrollPane(); - mButtonsPanel = new javax.swing.JPanel(); - - setLayout(new java.awt.BorderLayout(2, 2)); - - addComponentListener(new java.awt.event.ComponentAdapter() - { - public void componentShown(java.awt.event.ComponentEvent evt) - { - OnShow(evt); - } - }); - - mAxesPanelContainer.setLayout(new java.awt.BorderLayout()); - - mAxesPanelContainer.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); - mAxesPanel.setLayout(new java.awt.GridLayout(1, 1, 0, 20)); - - mAxesPanelContainer.add(mAxesPanel, java.awt.BorderLayout.NORTH); - - add(mAxesPanelContainer, java.awt.BorderLayout.CENTER); - - mDirectionalPanel.setLayout(new java.awt.GridLayout(1, 1)); - - mDirectionalPanel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); - add(mDirectionalPanel, java.awt.BorderLayout.SOUTH); - - mButtonsPanel.setLayout(new java.awt.GridLayout(1, 1)); - - mButtonsPanel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); - mButtonScrollPane.setViewportView(mButtonsPanel); - - add(mButtonScrollPane, java.awt.BorderLayout.EAST); - - }// //GEN-END:initComponents - - private void OnShow(java.awt.event.ComponentEvent evt)//GEN-FIRST:event_OnShow - {//GEN-HEADEREND:event_OnShow - // Commented: the focus is held by a parent component -// System.out.println("OnShow"); -// this.requestFocus(); - }//GEN-LAST:event_OnShow - - - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JPanel mAxesPanel; - private javax.swing.JPanel mAxesPanelContainer; - private javax.swing.JScrollPane mButtonScrollPane; - private javax.swing.JPanel mButtonsPanel; - private javax.swing.JPanel mDirectionalPanel; - // End of variables declaration//GEN-END:variables - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/JXInputTestDialog.form b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/JXInputTestDialog.form deleted file mode 100644 index 1abc589..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/JXInputTestDialog.form +++ /dev/null @@ -1,79 +0,0 @@ - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/JXInputTestDialog.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/JXInputTestDialog.java deleted file mode 100644 index 3829aa2..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/test/JXInputTestDialog.java +++ /dev/null @@ -1,286 +0,0 @@ -//********************************************************************************************** -// Dipl. Phys. Joerg Plewe, HARDCODE Development -// Created on 27. Dezember 2001, 01:15 -//********************************************************************************************** - -package de.hardcode.jxinput.test; - -import de.hardcode.jxinput.*; -import de.hardcode.jxinput.event.*; -import de.hardcode.jxinput.keyboard.JXKeyboardInputDevice; -import de.hardcode.jxinput.virtual.JXVirtualInputDevice; -import de.hardcode.jxinput.virtual.VirtualAxis; - -import javax.swing.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.KeyEvent; - - -/** - * Test dialog showing some features of JXInput. - * @author Herkules - */ -public class JXInputTestDialog extends javax.swing.JDialog - implements ActionListener -{ - - private JXKeyboardInputDevice mKeyboardDevice = null; - private JXVirtualInputDevice mVirtualDevice = null; - - Button mButtonUp; - Button mButtonDown; - Button mButtonLeft; - Button mButtonRight; - Button mButtonFire; - Button mButtonSpace; - - /** Creates new form JXInputTestDialog */ - public JXInputTestDialog(java.awt.Frame parent, boolean modal) - { - super(parent, modal); - initComponents(); - configureKeyboardInputDevice(); - configureVirtualInputDevice(); - initDevicePanels(); - pack(); - - // Request the focus so that the keyboarddevice can work - mMainPanel.requestFocus(); - - new Timer( 50, this ).start(); - - // Uncomment this line as an alternative to the Timer above. - // Don't use both!! - //JXInputEventManager.setTriggerIntervall( 50 ); - } - - - /** - * Implement ActionListener#actionPerformed(). - * This is called by the Timer. - */ - public void actionPerformed( ActionEvent e ) - { - JXInputManager.updateFeatures(); - SwingUtilities.invokeLater( - new Runnable() - { - public void run() - { - for ( int i = 0; i < mDevicesTabbedPane.getComponentCount(); ++i ) - { - ((JXInputDevicePanel)mDevicesTabbedPane.getComponent( i )).update(); - } - } - } - ); - } - - - /** - * Configure a test JXKeyboardInputdevice. - */ - void configureKeyboardInputDevice() - { - mKeyboardDevice = JXInputManager.createKeyboardDevice(); - - mKeyboardDevice.createButton( KeyEvent.VK_ESCAPE ); - - mKeyboardDevice.createButton( KeyEvent.VK_F1 ); - mKeyboardDevice.createButton( KeyEvent.VK_F2 ); - mKeyboardDevice.createButton( KeyEvent.VK_F3 ); - mKeyboardDevice.createButton( KeyEvent.VK_F4 ); - - mKeyboardDevice.createButton( KeyEvent.VK_LEFT ); - mKeyboardDevice.createButton( KeyEvent.VK_RIGHT ); - mKeyboardDevice.createButton( KeyEvent.VK_UP ); - mKeyboardDevice.createButton( KeyEvent.VK_DOWN ); - - mKeyboardDevice.createButton( KeyEvent.VK_PAGE_UP ); - mKeyboardDevice.createButton( KeyEvent.VK_PAGE_DOWN ); - - mButtonSpace = mKeyboardDevice.createButton( KeyEvent.VK_SPACE ); - mButtonLeft = mKeyboardDevice.createButton( KeyEvent.VK_A ); - mButtonRight = mKeyboardDevice.createButton( KeyEvent.VK_D ); - mButtonDown = mKeyboardDevice.createButton( KeyEvent.VK_S ); - mButtonUp = mKeyboardDevice.createButton( KeyEvent.VK_W ); - - // Configure it to make it listen to the main panel. - // I try to keep the kbd focus on it. - mKeyboardDevice.listenTo( mMainPanel ); - } - - - /** - * Configure a test JXVirtualInputdevice. - */ - void configureVirtualInputDevice() - { - mVirtualDevice = JXInputManager.createVirtualDevice(); - - Button firebutton; - // - // Remember 'fire' button of first device for use - // in the virtual device. - // For we ran configureKeyboardInputDevice() before, - // getJXInputDevice( 0 ) should not return null - // - firebutton = JXInputManager.getJXInputDevice( 0 ).getButton( 0 ); - - VirtualAxis x = mVirtualDevice.createAxis( Axis.ID_X ); - x.setButtons( mButtonRight, mButtonLeft ); - x.setName( "x: A-D" ); - - VirtualAxis y = mVirtualDevice.createAxis( Axis.ID_Y ); - y.setButtons( mButtonUp, mButtonDown ); - y.setSpringSpeed( 0.0 ); - y.setName( "y: S|W" ); - - VirtualAxis slider = mVirtualDevice.createAxis( Axis.ID_SLIDER0 ); - slider.setIncreaseButton( mButtonSpace ); - slider.setTimeFor0To1( 2000 ); - slider.setName( "" ); - slider.setType( Axis.SLIDER ); - - if ( null != firebutton ) - { - slider = mVirtualDevice.createAxis( Axis.ID_SLIDER1 ); - slider.setIncreaseButton( firebutton ); - slider.setTimeFor0To1( 2000 ); - slider.setName( "JoyButton 0" ); - } - - - } - - - /** - * Initialize one panel for each device available. - */ - void initDevicePanels() - { - int cnt = JXInputManager.getNumberOfDevices(); - - mLabelNoDevice.setVisible( cnt == 0 ); - mDevicesTabbedPane.setVisible( cnt != 0 ); - - for ( int i = 0; i < cnt; ++i ) - { - JXInputDevice dev = JXInputManager.getJXInputDevice( i ); - if ( null != dev ) - { - // - // Setup an own panel for each device. - // - JPanel panel = new JXInputDevicePanel( dev ); - mDevicesTabbedPane.addTab( dev.getName(), panel ); - } - } - } - - - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - // //GEN-BEGIN:initComponents - private void initComponents() - { - mMainPanel = new javax.swing.JPanel(); - mLabelNoDevice = new javax.swing.JLabel(); - mDevicesTabbedPane = new javax.swing.JTabbedPane(); - mButtonReset = new javax.swing.JButton(); - - setTitle("JXInput (C) 2001-2006 HARDCODE Dev."); - addWindowListener(new java.awt.event.WindowAdapter() - { - public void windowClosing(java.awt.event.WindowEvent evt) - { - closeDialog(evt); - } - }); - - mMainPanel.setLayout(new java.awt.BorderLayout(10, 0)); - - mLabelNoDevice.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - mLabelNoDevice.setText("No JXInputDevice available!"); - mLabelNoDevice.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); - mMainPanel.add(mLabelNoDevice, java.awt.BorderLayout.NORTH); - - mDevicesTabbedPane.addFocusListener(new java.awt.event.FocusAdapter() - { - public void focusGained(java.awt.event.FocusEvent evt) - { - mDevicesTabbedPaneFocusGained(evt); - } - }); - - mMainPanel.add(mDevicesTabbedPane, java.awt.BorderLayout.CENTER); - - mButtonReset.setText("Reset "); - mButtonReset.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(java.awt.event.ActionEvent evt) - { - mButtonResetActionPerformed(evt); - } - }); - - mMainPanel.add(mButtonReset, java.awt.BorderLayout.SOUTH); - - getContentPane().add(mMainPanel, java.awt.BorderLayout.CENTER); - - pack(); - }// //GEN-END:initComponents - - private void mButtonResetActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_mButtonResetActionPerformed - {//GEN-HEADEREND:event_mButtonResetActionPerformed - - while ( this.mDevicesTabbedPane.getTabCount() > 0 ) - this.mDevicesTabbedPane.removeTabAt( 0 ); - - JXInputManager.reset(); - configureKeyboardInputDevice(); - configureVirtualInputDevice(); - initDevicePanels(); - pack(); - - // Request the focus so that the keyboarddevice can work - mMainPanel.requestFocus(); - - }//GEN-LAST:event_mButtonResetActionPerformed - - private void mDevicesTabbedPaneFocusGained(java.awt.event.FocusEvent evt)//GEN-FIRST:event_mDevicesTabbedPaneFocusGained - {//GEN-HEADEREND:event_mDevicesTabbedPaneFocusGained - // Switch focus back to main panel! - this.mMainPanel.requestFocus(); - }//GEN-LAST:event_mDevicesTabbedPaneFocusGained - - /** Closes the dialog */ - private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog - setVisible(false); - dispose(); - System.exit( 0 ); - }//GEN-LAST:event_closeDialog - - /** - * Allow the dialog to run standalone. - * @param args the command line arguments - */ - public static void main(String args[]) - { - new JXInputTestDialog(new javax.swing.JFrame(), true).setVisible(true); - } - - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton mButtonReset; - private javax.swing.JTabbedPane mDevicesTabbedPane; - private javax.swing.JLabel mLabelNoDevice; - private javax.swing.JPanel mMainPanel; - // End of variables declaration//GEN-END:variables - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/util/LatestChangedValueAxis.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/util/LatestChangedValueAxis.java deleted file mode 100644 index f4f2c35..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/util/LatestChangedValueAxis.java +++ /dev/null @@ -1,98 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 17. April 2002, 23:24 -//********************************************************************************************** -package de.hardcode.jxinput.util; - -import de.hardcode.jxinput.Axis; - -/** - * - * @author Herkules - */ -public class LatestChangedValueAxis implements Axis -{ - private final Axis mAxis1; - private final Axis mAxis2; - private Axis mAxisInUse; - - private double mSaved1; - private double mSaved2; - - /** - * Creates a new instance of MeanValueAxis. - */ - public LatestChangedValueAxis(Axis a1, Axis a2) - { - mAxis1 = a1; - mAxis2 = a2; - mAxisInUse = a1; - - mSaved1 = a1.getValue(); - mSaved2 = a2.getValue(); - } - - /** - * Features may have a name provided e.g. by the driver. - */ - public String getName() - { - return mAxis1.getName(); - } - - /** Inform about the resolution of the axis. - * - * @return resolution, e.g. 2^-16 - */ - public double getResolution() - { - return mAxis1.getResolution(); - } - - /** - * Retrieve the type of the axis. - * - * @return [ TRANSLATION | ROTATION | SLIDER ] - */ - public int getType() - { - return mAxis1.getType(); - } - - /** Returns the current value of the axis. - * The range of the result depends on the axis type. - *s - * @return value [-1.0,1.0] or [0.0,1.0] - */ - public double getValue() - { - double v1 = mAxis1.getValue(); - double v2 = mAxis2.getValue(); - - if ( Math.abs( v2 - mSaved2 ) > 0.2 ) - { - mAxisInUse = mAxis2; - mSaved2 = v2; - } - if ( Math.abs( v1 - mSaved1 ) > 0.2 ) - { - mAxisInUse = mAxis1; - mSaved1 = v1; - } - - return mAxisInUse.getValue(); - } - - /** Denote wether this feature has changed beyond it's resolution since it got last - * updated. - */ - public boolean hasChanged() - { - return true; - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/util/OrButton.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/util/OrButton.java deleted file mode 100644 index 338538c..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/util/OrButton.java +++ /dev/null @@ -1,52 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 23. Dezember 2002, 19:21 -//********************************************************************************************** -package de.hardcode.jxinput.util; - -import de.hardcode.jxinput.Button; - -/** - * - * @author Herkules - */ -public class OrButton implements Button -{ - private final Button mButton1; - private final Button mButton2; - - - /** - * Creates a new instance of OrButton. - */ - public OrButton( Button b1, Button b2 ) - { - mButton1 = b1; - mButton2 = b2; - } - - public String getName() - { - return mButton1.getName(); - } - - public boolean getState() - { - return mButton1.getState() || mButton2.getState(); - } - - public int getType() - { - return mButton1.getType(); - } - - public boolean hasChanged() - { - return mButton1.hasChanged() || mButton2.hasChanged(); - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/virtual/JXVirtualInputDevice.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/virtual/JXVirtualInputDevice.java deleted file mode 100644 index aa125af..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/virtual/JXVirtualInputDevice.java +++ /dev/null @@ -1,140 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 9. April 2002, 22:40 -//********************************************************************************************** -package de.hardcode.jxinput.virtual; - - -import de.hardcode.jxinput.*; - - -/** - * Virtual input device. - * - * @author Herkules - */ -public class JXVirtualInputDevice implements JXInputDevice -{ - private static final String DEVICENAME = "Virtual Device"; - - /** The driver doing all the real work. */ - private final VirtualDriver mDriver = new VirtualDriver(); - - - /** - * Creates a new instance of JXKeyboardInputDevice. - */ - public JXVirtualInputDevice() - { - } - - - /** - * The virtual input device needs to be updated regularly. - */ - public final void update( long deltaT ) - { - // - // Delegate the update call to the driver. - // - mDriver.update( deltaT ); - } - - /** - * Create a virtual axis object with a certain ID, e.g. Axis.ID_X. - */ - public VirtualAxis createAxis( int id ) - { - VirtualAxis a; - a = new VirtualAxis( id ); - mDriver.registerVirtualAxis( id, a ); - return a; - } - - - public void removeAxis( VirtualAxis a ) - { - mDriver.unregisterVirtualAxis( a ); - } - - - - //********************************************************************************************* - // - // Implement JXInputDevice - // - //********************************************************************************************* - - public Axis getAxis(int idx) - { - return mDriver.getAxis( idx ); - } - - - public Button getButton(int idx) - { - // No virtual buttons. - return null; - } - - - public Directional getDirectional(int idx) - { - // No virtual directionals. - return null; - } - - /** Maximum number of axes as an upper bound for index values. */ - public int getMaxNumberOfAxes() - { - return Axis.NUMBER_OF_ID; - } - - /** Maximum number of buttons as an upper bound for index values. */ - public int getMaxNumberOfButtons() - { - // No virtual buttons. - return 0; - } - - /** Maximum number of directional features as an upper bound for index values. */ - public int getMaxNumberOfDirectionals() - { - // No virtual directionals. - return 0; - } - - /** - * Devices may have a name. - * This name might be provided by a system dependant driver. - */ - public String getName() - { - return DEVICENAME; - } - - /** Actual number of available axes. */ - public int getNumberOfAxes() - { - // No axes on keyboard. - return mDriver.getNumberOfAxes(); - } - - /** Actual number of available buttons. */ - public int getNumberOfButtons() - { - return 0; - } - - /** Actual number of available directional features. */ - public int getNumberOfDirectionals() - { - // No directionals on keyboard. - return 0; - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/virtual/VirtualAxis.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/virtual/VirtualAxis.java deleted file mode 100644 index b272c6e..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/virtual/VirtualAxis.java +++ /dev/null @@ -1,207 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 11. April 2002, 23:40 -//********************************************************************************************** -package de.hardcode.jxinput.virtual; - -import de.hardcode.jxinput.Axis; -import de.hardcode.jxinput.Button; -import java.security.InvalidParameterException; - -/** - * - * @author Jörg Plewe - */ -public class VirtualAxis - implements Axis -{ - - private int mType = Axis.TRANSLATION; - private final int mID; - private String mName = "VirtualAxis"; - private double mCurrentValue = 0; - - private Button mButtonIncrease = null; - private Button mButtonDecrease = null; - private double mSpeed = 1.0 / 500.0; - private double mSpringSpeed = 1.0 / 500.0; - - /** - * Creates a new instance of VirtualAxis. - */ - public VirtualAxis( int id ) - { - mID = id; - } - - - /** - * Set the type of this axis to be either Axis.ROTATION, - * Axis.TRANSLATION or Axis.SLIDER. - */ - public void setType( int type ) - { - if ( Axis.ROTATION != type - && Axis.TRANSLATION != type - && Axis.SLIDER != type - ) - throw new InvalidParameterException( "Invalid type for axis!" ); - - mType = type; - } - - /** - * Update features under my control. - */ - final void update( long deltaT ) - { - double change = mSpeed * deltaT; - double springchange = mSpringSpeed * deltaT; - boolean doincrease = ( null != mButtonIncrease && mButtonIncrease.getState() ); - boolean dodecrease = ( null != mButtonDecrease && mButtonDecrease.getState() ); - boolean iscontrolled = doincrease || dodecrease; - - double controlledchange = 0.0; - if ( doincrease ) - controlledchange += change; - if ( dodecrease ) - controlledchange -= change; - - mCurrentValue += controlledchange; - - if ( mCurrentValue > 0.0 && ! doincrease ) - { - springchange = Math.min( mCurrentValue, springchange ); - mCurrentValue -= springchange; - } - if ( mCurrentValue < 0.0 && ! dodecrease ) - { - springchange = Math.min( -mCurrentValue, springchange ); - mCurrentValue += springchange; - } - - // - // Hold value within range - // - if ( mCurrentValue > 1.0 ) - mCurrentValue = 1.0; - double lowerlimit = Axis.SLIDER == mType ? 0.0 : -1.0; - if ( mCurrentValue < lowerlimit ) - mCurrentValue = lowerlimit; - } - - - /** - * Set the button to increase the axis for a single button axis. - */ - public final void setIncreaseButton( Button b ) - { - if ( null == b ) - throw new InvalidParameterException( "Button may not be null!" ); - - mButtonIncrease = b; - } - - - /** - * Set the buttons to increase and descrease the axis. - */ - public final void setButtons( Button increase, Button decrease ) - { - if ( null == increase || null == decrease ) - throw new InvalidParameterException( "Buttons may not be null!" ); - - mButtonIncrease = increase; - mButtonDecrease = decrease; - } - - - public final void setSpeed( double speed ) - { - mSpeed = speed; - } - - public final void setSpringSpeed( double springspeed ) - { - mSpringSpeed = springspeed; - } - - - public final void setTimeFor0To1( int ms ) - { - if ( 0 >= ms ) - mSpeed = 0.0; - else - mSpeed = 1.0/ ms; - } - public final void setTimeFor1To0( int ms ) - { - if ( 0 >= ms ) - mSpringSpeed = 0.0; - else - mSpringSpeed = 1.0/ ms; - } - - - public final void setName( String name ) - { - mName = name; - } - - //********************************************************************************************* - // - // Implement Axis - // - //********************************************************************************************* - - /** - * Features may have a name provided e.g. by the driver. - */ - public String getName() - { - return mName; - } - - /** - * Inform about the resolution of the axis. - * - * @return resolution, e.g. 2^-16 - */ - public double getResolution() - { - return 1.0/65536.0; - } - - - /** - * Retrieve the type of the axis. - * @return [ TRANSLATION | ROTATION | SLIDER ] - */ - public int getType() - { - return mType; - } - - /** Returns the current value of the axis. - * The range of the result depends on the axis type. - * - * @return value [-1.0,1.0] or [0.0,1.0] - */ - public double getValue() - { - return mCurrentValue; - } - - /** Denote wether this feature has changed beyond it's resolution since it got last - * updated. - */ - public boolean hasChanged() - { - return true; - } - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/virtual/VirtualDriver.java b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/virtual/VirtualDriver.java deleted file mode 100644 index 5952eff..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/virtual/VirtualDriver.java +++ /dev/null @@ -1,95 +0,0 @@ -//********************************************************************************************** -// (C) Copyright 2002 by Dipl. Phys. Joerg Plewe, HARDCODE Development -// All rights reserved. Copying, modification, -// distribution or publication without the prior written -// consent of the author is prohibited. -// -// Created on 9. April 2002, 22:43 -//********************************************************************************************** -package de.hardcode.jxinput.virtual; - -import java.util.ArrayList; -import de.hardcode.jxinput.Axis; - - - -/** - * This is the main worker class for JXVirtualInputDevice. - * - * @author Herkules - */ -class VirtualDriver -{ - - private final VirtualAxis[] mVAxes = new VirtualAxis[ Axis.NUMBER_OF_ID ]; - - /** - * Creates a new instance of KeyboardDriver. - */ - VirtualDriver() - { - } - - - /** - * Update features under my control. - */ - final void update( long deltaT ) - { - // - // Delegate the update call to the axes in use. - // - for ( int i = 0; i < mVAxes.length; i++ ) - { - if ( null != mVAxes[ i ] ) - mVAxes[ i ].update( deltaT ); - } - } - - - /** - * How many axes are registered? - */ - final int getNumberOfAxes() - { - int ctr = 0; - for ( int i = 0; i < mVAxes.length; i++ ) - { - if ( null != mVAxes[ i ] ) - ctr++; - } - return ctr; - } - - Axis getAxis(int idx) - { - return mVAxes[ idx ]; - } - - - /** - * Place a new axis under my observation. - */ - final void registerVirtualAxis( int id, VirtualAxis a ) - { - mVAxes[ id ] = a; - } - - - /** - * Remove an axis from my control. - */ - final void unregisterVirtualAxis( VirtualAxis a ) - { - for ( int i = 0; i < mVAxes.length; ++i ) - { - if ( mVAxes[ i ] == a ) - { - mVAxes[ i ] = null; - break; - } - } - } - - -} diff --git a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/virtual/package.html b/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/virtual/package.html deleted file mode 100644 index d8e1d6a..0000000 --- a/vendor/JXInput/0.3.4/java/de/hardcode/jxinput/virtual/package.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - de.hardcode.jxinput.virtual - - -Allows to define virtual axes that are not derived from any device -but from other JXInput feature objects. - - diff --git a/vendor/JXInput/0.3.4/jxinput.dll b/vendor/JXInput/0.3.4/jxinput.dll deleted file mode 100644 index 720b9bba7fad06f7369a20c898c67bcf5e717069..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94208 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¬>YJ!si#5@ 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 diff --git a/vendor/JXInput/0.3.4/jxinput.jar b/vendor/JXInput/0.3.4/jxinput.jar deleted file mode 100644 index dbb035a872f930561d1c196853fddfa674291e08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73232 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 H!6N?;_hS`? diff --git a/vendor/JavaWinampApi/1.1/cpp/Makefile.win b/vendor/JavaWinampApi/1.1/cpp/Makefile.win deleted file mode 100644 index 206b141..0000000 --- a/vendor/JavaWinampApi/1.1/cpp/Makefile.win +++ /dev/null @@ -1,34 +0,0 @@ -# Project: wpcom -# Makefile created by Dev-C++ 4.9.9.2 - -CPP = g++.exe -CC = gcc.exe -WINDRES = windres.exe -RES = -OBJ = WinampController.o $(RES) -LINKOBJ = WinampController.o $(RES) -LIBS = -L"E:/java/Dev-Cpp/lib" --no-export-all-symbols --add-stdcall-alias -INCS = -I"E:/java/Dev-Cpp/include" -I"E:/Program Files/Java/jdk1.6.0_11/include" -I"E:/Program Files/Java/jdk1.6.0_11/include/win32" -CXXINCS = -I"E:/java/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"E:/java/Dev-Cpp/include/c++/3.4.2/backward" -I"E:/java/Dev-Cpp/include/c++/3.4.2/mingw32" -I"E:/java/Dev-Cpp/include/c++/3.4.2" -I"E:/java/Dev-Cpp/include" -I"E:/Program Files/Java/jdk1.6.0_11/include" -I"E:/Program Files/Java/jdk1.6.0_11/include/win32" -BIN = ../../wpcom.dll -CXXFLAGS = $(CXXINCS) -DBUILDING_DLL=1 -CFLAGS = $(INCS) -DBUILDING_DLL=1 -RM = rm -f - -.PHONY: all all-before all-after clean clean-custom - -all: all-before ../../wpcom.dll all-after - - -clean: clean-custom - ${RM} $(OBJ) $(BIN) - -DLLWRAP=dllwrap.exe -DEFFILE=../../libwpcom.def -STATICLIB=../../libwpcom.a - -$(BIN): $(LINKOBJ) - $(DLLWRAP) --output-def $(DEFFILE) --implib $(STATICLIB) $(LINKOBJ) $(LIBS) -o $(BIN) - -WinampController.o: WinampController.c - $(CC) -c WinampController.c -o WinampController.o $(CFLAGS) diff --git a/vendor/JavaWinampApi/1.1/cpp/WINAMPCMD.H b/vendor/JavaWinampApi/1.1/cpp/WINAMPCMD.H deleted file mode 100644 index 068b55c..0000000 --- a/vendor/JavaWinampApi/1.1/cpp/WINAMPCMD.H +++ /dev/null @@ -1,62 +0,0 @@ -#define WINAMP_FILE_QUIT 40001 -#define WINAMP_OPTIONS_PREFS 40012 -#define WINAMP_OPTIONS_AOT 40019 -#define WINAMP_FILE_REPEAT 40022 -#define WINAMP_FILE_SHUFFLE 40023 -#define WINAMP_HIGH_PRIORITY 40025 -#define WINAMP_FILE_PLAY 40029 -#define WINAMP_OPTIONS_EQ 40036 -#define WINAMP_OPTIONS_ELAPSED 40037 -#define WINAMP_OPTIONS_REMAINING 40038 -#define WINAMP_OPTIONS_PLEDIT 40040 -#define WINAMP_HELP_ABOUT 40041 -#define WINAMP_MAINMENU 40043 -#define WINAMP_BUTTON1 40044 -#define WINAMP_BUTTON2 40045 -#define WINAMP_BUTTON3 40046 -#define WINAMP_BUTTON4 40047 -#define WINAMP_BUTTON5 40048 -#define WINAMP_VOLUMEUP 40058 -#define WINAMP_VOLUMEDOWN 40059 -#define WINAMP_FFWD5S 40060 -#define WINAMP_REW5S 40061 -#define WINAMP_NEXT_WINDOW 40063 -#define WINAMP_OPTIONS_WINDOWSHADE 40064 -#define WINAMP_BUTTON1_SHIFT 40144 -#define WINAMP_BUTTON2_SHIFT 40145 -#define WINAMP_BUTTON3_SHIFT 40146 -#define WINAMP_BUTTON4_SHIFT 40147 -#define WINAMP_BUTTON5_SHIFT 40148 -#define WINAMP_BUTTON1_CTRL 40154 -#define WINAMP_BUTTON2_CTRL 40155 -#define WINAMP_BUTTON3_CTRL 40156 -#define WINAMP_BUTTON4_CTRL 40157 -#define WINAMP_BUTTON5_CTRL 40158 -#define WINAMP_OPTIONS_DSIZE 40165 -#define IDC_SORT_FILENAME 40166 -#define IDC_SORT_FILETITLE 40167 -#define IDC_SORT_ENTIREFILENAME 40168 -#define IDC_SELECTALL 40169 -#define IDC_SELECTNONE 40170 -#define IDC_SELECTINV 40171 -#define IDM_EQ_LOADPRE 40172 -#define IDM_EQ_LOADMP3 40173 -#define IDM_EQ_LOADDEFAULT 40174 -#define IDM_EQ_SAVEPRE 40175 -#define IDM_EQ_SAVEMP3 40176 -#define IDM_EQ_SAVEDEFAULT 40177 -#define IDM_EQ_DELPRE 40178 -#define IDM_EQ_DELMP3 40180 -#define IDC_PLAYLIST_PLAY 40184 -#define WINAMP_FILE_LOC 40185 -#define WINAMP_OPTIONS_EASYMOVE 40186 -#define WINAMP_FILE_DIR 40187 -#define WINAMP_EDIT_ID3 40188 -#define WINAMP_TOGGLE_AUTOSCROLL 40189 -#define WINAMP_VISSETUP 40190 -#define WINAMP_PLGSETUP 40191 -#define WINAMP_VISPLUGIN 40192 -#define WINAMP_JUMP 40193 -#define WINAMP_JUMPFILE 40194 -#define WINAMP_JUMP10FWD 40195 -#define WINAMP_JUMP10BACK 40197 diff --git a/vendor/JavaWinampApi/1.1/cpp/WinampController.c b/vendor/JavaWinampApi/1.1/cpp/WinampController.c deleted file mode 100644 index 1b6f46e..0000000 --- a/vendor/JavaWinampApi/1.1/cpp/WinampController.c +++ /dev/null @@ -1,587 +0,0 @@ -/* meu .h */ -#include "WinampController.h" - -/* mingw */ -#include -#include -#include - -/* winamp sdk */ -#include "wa_ipc.h" -#include "WINAMPCMD.H" - -const int WA_CLOSE = 40001 ; -const int WA_PLAY = WINAMP_BUTTON2; -const int WA_STOP = WINAMP_BUTTON4; -const int WA_PAUSE = WINAMP_BUTTON3; -const int WA_PREVTRACK = WINAMP_BUTTON1; -const int WA_NEXTTRACK = WINAMP_BUTTON5; -const int WA_FWD5SECS = WINAMP_FFWD5S; -const int WA_REW5SECS = WINAMP_REW5S; - -const int WA_PLAYLISTLEN = IPC_GETLISTLENGTH; -const int WA_SETVOLUME = IPC_SETVOLUME; -const int WA_SETPLAYLISTPOS = IPC_SETPLAYLISTPOS; -const int WA_WRITEPLAYLIST = IPC_WRITEPLAYLIST; -const int WA_ENQUEUEFILE = IPC_ENQUEUEFILE; - -const int WA_VOLUMEUP = WINAMP_VOLUMEUP; -const int WA_VOLUMEDOWN = WINAMP_VOLUMEDOWN; - -const int WA_CLEARPLAYLIST = IPC_DELETE; -const int WA_NOTHING = 0; -const int WA_TRACK_LENGTH = 1; - -const int WA_RESTART = IPC_RESTARTWINAMP; -const int WA_REFRESHPLCACHE = IPC_REFRESHPLCACHE; -const int WA_GETSHUFFLESTATUS = IPC_GET_SHUFFLE; -const int WA_GETREPEATSTATUS = IPC_GET_REPEAT; -const int WA_SETSHUFFLESTATUS = IPC_SET_SHUFFLE; -const int WA_SETREPEATSTATUS = IPC_SET_REPEAT; - -const int WA_GETSTATUS = IPC_ISPLAYING; - -const int WA_GETLISTPOS = IPC_GETLISTPOS; -const int WA_GETTITLE = IPC_GETPLAYLISTTITLE; - -const int WA_VERSION = IPC_GETVERSION; -const int WA_FILENAMEINLIST = IPC_GETPLAYLISTFILE; -const int WA_GETFILEINFO = IPC_GET_EXTENDED_FILE_INFO; - -HWND hwnd_winamp = NULL; -INT position = 0; -STARTUPINFO si; -PROCESS_INFORMATION pi; -char messageReturn[255]; -wchar_t* wMessageReturn; - -LPDWORD temp; - -void initWinampHandle() { - hwnd_winamp = NULL; - if (hwnd_winamp == NULL) { - hwnd_winamp = FindWindow("Winamp v1.x", NULL); - } - if (hwnd_winamp == NULL) { - hwnd_winamp = FindWindow("Winamp v2.x", NULL); - } - if (hwnd_winamp == NULL) { - hwnd_winamp = FindWindow("Winamp v3.x", NULL); - } -} - -jboolean runWinamp(unsigned char* pathWinamp) { - - /* STARTUPINFO si; - PROCESS_INFORMATION pi;*/ - - ZeroMemory( &si, sizeof(si) ); - si.cb = sizeof(si); - ZeroMemory( &pi, sizeof(pi) ); - - - // Start the child process. - if(!CreateProcess(pathWinamp, - NULL, - 0, - 0, - FALSE, - CREATE_NEW_CONSOLE, - 0, - 0, - &si, - &pi)) - { - return FALSE; - } - - DWORD dwResult = WaitForInputIdle(pi.hProcess,INFINITE); - if (dwResult != 0) return FALSE; - - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - - return TRUE; - - -} - -int getListPos() { - - initWinampHandle(); - if (hwnd_winamp != NULL) { - - return SendMessage(hwnd_winamp,WM_USER,WA_NOTHING,WA_GETLISTPOS); - - } - return -1; - -} - -void getPluginMessage(int param, int sendMessage) -{ - - LPCVOID message = (LPCVOID)SendMessageW(hwnd_winamp, WM_USER, param, sendMessage); - ZeroMemory( &pi, sizeof(pi)); - GetWindowThreadProcessId(hwnd_winamp, &pi.dwThreadId); - pi.hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pi.dwThreadId); - ReadProcessMemory(pi.hProcess, message, messageReturn,2056,temp); - free(temp); - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - -} - -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_run - (JNIEnv *env, jobject obj) { - - initWinampHandle(); - - if ( hwnd_winamp == NULL ) { - - unsigned char path[MAX_PATH]=""; - DWORD size = MAX_PATH; - - HKEY key; - DWORD tipo; - - if (!RegOpenKey(HKEY_LOCAL_MACHINE,"Software\\Clients\\Media\\Winamp\\shell\\open\\command",&key)==ERROR_SUCCESS) - { - - printf("0"); - return FALSE; - - } - - if (!(RegQueryValueEx(key,"",NULL,&tipo,path,&size))==ERROR_SUCCESS) - { - - RegCloseKey(key); - return FALSE; - - } - - if (!runWinamp(path)) - { - - RegCloseKey(key); - return FALSE; - - } - return TRUE; - - } - - int version = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETVERSION); - return TRUE; - -} - -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_exit - (JNIEnv *env, jobject obj) { - - initWinampHandle(); - if (hwnd_winamp != NULL) { - SendMessageA(hwnd_winamp, WM_COMMAND, WA_CLOSE, WA_NOTHING); - return TRUE; - } - - return FALSE; - - -} - -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_play - (JNIEnv *env, jobject obj) { - initWinampHandle(); - if (hwnd_winamp != NULL) { - - SendMessageA(hwnd_winamp, WM_COMMAND, WA_PLAY, WA_NOTHING); - return TRUE; - - } - - return FALSE; -} - - -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_stop - (JNIEnv *env, jobject obj) -{ - initWinampHandle(); - if (hwnd_winamp != NULL) { - SendMessageA(hwnd_winamp, WM_COMMAND, WA_STOP, WA_NOTHING); - return TRUE; - } - - return FALSE; -} - - -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_resume - (JNIEnv *env, jobject obj) { - initWinampHandle(); - if (hwnd_winamp != NULL) { - SendMessageA(hwnd_winamp, WM_COMMAND, WA_PAUSE, WA_NOTHING); - return TRUE; - } - - return FALSE; -} - - -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_pause - (JNIEnv *env, jobject obj) { - initWinampHandle(); - if (hwnd_winamp != NULL) { - SendMessageA(hwnd_winamp, WM_COMMAND, WA_PAUSE, WA_NOTHING); - return TRUE; - } - - return FALSE; -} - -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_previousTrack - (JNIEnv *env, jobject obj) { - initWinampHandle(); - if (hwnd_winamp != NULL) { - SendMessageA(hwnd_winamp, WM_COMMAND, WA_PREVTRACK, WA_NOTHING); - return TRUE; - } - - return FALSE; - -} - -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_nextTrack - (JNIEnv *env, jobject obj) { - initWinampHandle(); - if (hwnd_winamp != NULL) { - SendMessageA(hwnd_winamp, WM_COMMAND, WA_NEXTTRACK, WA_NOTHING); - return TRUE; - } - - return FALSE; -} - -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_fwd5Secs - (JNIEnv *env, jobject obj) { - initWinampHandle(); - if (hwnd_winamp != NULL) { - SendMessageA(hwnd_winamp, WM_COMMAND, WA_FWD5SECS, WA_NOTHING); - return TRUE; - } - - return FALSE; -} - -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_rew5Secs - (JNIEnv *env, jobject obj) { - initWinampHandle(); - if (hwnd_winamp != NULL) { - SendMessageA(hwnd_winamp, WM_COMMAND, WA_REW5SECS, WA_NOTHING); - return TRUE; - } - - return FALSE; -} - -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_increaseVolume - (JNIEnv *env, jobject obj) { - initWinampHandle(); - if (hwnd_winamp != NULL) { - SendMessageA(hwnd_winamp, WM_COMMAND, WA_VOLUMEUP, WA_NOTHING); - return TRUE; - } - - return FALSE; - -} - -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_decreaseVolume - (JNIEnv *env, jobject obj) { - initWinampHandle(); - if (hwnd_winamp != NULL) { - SendMessageA(hwnd_winamp, WM_COMMAND, WA_VOLUMEDOWN, WA_NOTHING); - return TRUE; - } - - return FALSE; - -} - -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_increaseVolumePercent - (JNIEnv *env, jobject obj, jint percent) { - initWinampHandle(); - int i = 0; - if (hwnd_winamp != NULL) { - for(i=0;i0?1:0; -} - -JNIEXPORT jint JNICALL Java_com_qotsa_jni_controller_JNIWinamp_isRepeatStatusOn - (JNIEnv *env, jobject obj) { - jint status = 0; - initWinampHandle(); - if (hwnd_winamp != NULL) { - status = (jint)SendMessageA(hwnd_winamp, WM_USER, WA_NOTHING, WA_GETREPEATSTATUS); - } else - return -1; - - return status>0?1:0; -} - -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_setRepeatStatusOn - (JNIEnv *env, jobject obj, jboolean status) { - initWinampHandle(); - if (hwnd_winamp != NULL) { - SendMessageA(hwnd_winamp, WM_USER, status, WA_SETREPEATSTATUS); - return TRUE; - } - - return FALSE; -} - -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_setShuffleStatusOn - (JNIEnv *env, jobject obj, jboolean status) { - initWinampHandle(); - if (hwnd_winamp != NULL) { - SendMessageA(hwnd_winamp, WM_USER, status, WA_SETSHUFFLESTATUS); - return TRUE; - } - - return FALSE; -} - -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_appendToPlayList - (JNIEnv *env, jobject obj, jstring mp3filename) { - initWinampHandle(); - jboolean iscopy; - if (hwnd_winamp != NULL) { - wMessageReturn = (wchar_t*)(*env)->GetStringChars(env, mp3filename, &iscopy); - int length = wcslen(wMessageReturn); - COPYDATASTRUCT cds; - cds.dwData = IPC_PLAYFILEW; - cds.lpData = (void*)wMessageReturn; - cds.cbData = length * 2 + 2 ; // it sums white space - - SendMessageW(hwnd_winamp, WM_COPYDATA, WA_NOTHING, (LPARAM)&cds); - return TRUE; - } - - return FALSE; - -} - -JNIEXPORT jint JNICALL Java_com_qotsa_jni_controller_JNIWinamp_getStatus - (JNIEnv *env, jobject obj) { - jint status = -1; - initWinampHandle(); - if (hwnd_winamp != NULL) { - status = SendMessageA(hwnd_winamp, WM_USER, WA_NOTHING, WA_GETSTATUS); - } - - return status; - - -} - -JNIEXPORT jint JNICALL Java_com_qotsa_jni_controller_JNIWinamp_getListPos - (JNIEnv *env, jobject obj) { - - return getListPos(); - -} - -JNIEXPORT jstring JNICALL Java_com_qotsa_jni_controller_JNIWinamp_getTitle - (JNIEnv *env, jobject obj) { - - initWinampHandle(); - if (hwnd_winamp != NULL) { - - char title[500] = ""; - GetWindowText(hwnd_winamp,title,500); - return (*env)->NewStringUTF(env,title); - - - } - - return NULL; - -} - -JNIEXPORT jint JNICALL Java_com_qotsa_jni_controller_JNIWinamp_getTime - (JNIEnv *env, jobject obj, jint mode) { - - initWinampHandle(); - if (hwnd_winamp != NULL) { - - return SendMessage(hwnd_winamp,WM_USER,mode,IPC_GETOUTPUTTIME); - - } - - return -2; - -} - -JNIEXPORT jstring JNICALL Java_com_qotsa_jni_controller_JNIWinamp_getFileNameInList - (JNIEnv *env, jobject obj, jint index) -{ - - initWinampHandle(); - - if (hwnd_winamp != NULL) { - - getPluginMessage(index, WA_FILENAMEINLIST); - char* filePath = messageReturn; - jstring strReturn = (*env)->NewStringUTF(env,filePath); - return strReturn; - - } - - return NULL; - -} - -JNIEXPORT jstring JNICALL Java_com_qotsa_jni_controller_JNIWinamp_getFileNamePlaying - (JNIEnv *env, jobject obj) -{ - - initWinampHandle(); - - if (hwnd_winamp != NULL) { - - getPluginMessage(WA_NOTHING, IPC_GET_PLAYING_FILENAME); - wchar_t* fileName = (wchar_t*)messageReturn; - int length = wcslen(fileName); - jstring strReturn = (*env)->NewString(env,fileName,length); - return strReturn; - - } - - return NULL; - -} diff --git a/vendor/JavaWinampApi/1.1/cpp/WinampController.h b/vendor/JavaWinampApi/1.1/cpp/WinampController.h deleted file mode 100644 index 7f2ace1..0000000 --- a/vendor/JavaWinampApi/1.1/cpp/WinampController.h +++ /dev/null @@ -1,285 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class WinampController */ - - -#ifndef _Included_WinampController -#define _Included_WinampController -#ifdef __cplusplus -extern "C" { -#endif - -void initWinampHandle(); - -jboolean runWinamp(unsigned char* pathWinamp); - -int getListPos(); - -void getPluginMessage(int param, int sendMessage); - -/* - * Class: WinampController - * Method: run - * Signature: ()V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_run - (JNIEnv *, jclass); -/* - * Class: WinampController - * Method: exit - * Signature: ()V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_exit - (JNIEnv *, jclass); -/* - * Class: WinampController - * Method: play - * Signature: ()V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_play - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: stop - * Signature: ()V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_stop - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: resume - * Signature: ()V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_resume - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: pause - * Signature: ()V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_pause - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: previousTrack - * Signature: ()V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_previousTrack - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: nextTrack - * Signature: ()V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_nextTrack - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: fwd5Secs - * Signature: ()V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_fwd5Secs - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: fwd5Secs - * Signature: ()V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_rew5Secs - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: increaseVolume - * Signature: ()V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_increaseVolume - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: decreaseVolume - * Signature: ()V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_decreaseVolume - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: increaseVolumePercent - * Signature: (I)V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_increaseVolumePercent - (JNIEnv *, jclass, jint); - -/* - * Class: WinampController - * Method: decreaseVolumePercent - * Signature: (I)V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_decreaseVolumePercent - (JNIEnv *, jclass, jint); - -/* - * Class: WinampController - * Method: setVolume - * Signature: (I)V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_setVolume - (JNIEnv *, jclass, jint); - -/* - * Class: WinampController - * Method: setVolume - * Signature: (I)V - */ -JNIEXPORT jint JNICALL Java_com_qotsa_jni_controller_JNIWinamp_getVolume - (JNIEnv *, jclass, jint); - -/* - * Class: WinampController - * Method: restart - * Signature: ()V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_restart - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: setPlaylistPosition - * Signature: (I)V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_setPlaylistPosition - (JNIEnv *, jclass, jint); - -/* - * Class: WinampController - * Method: clearPlayList - * Signature: ()V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_clearPlayList - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: refreshPlayListCache - * Signature: ()V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_refreshPlayListCache - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: getPlayListLength - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_com_qotsa_jni_controller_JNIWinamp_getPlayListLength - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: writePlayListToFile - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_com_qotsa_jni_controller_JNIWinamp_writePlayListToFile - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: isShuffleStatusOn - * Signature: ()Z - */ -JNIEXPORT jint JNICALL Java_com_qotsa_jni_controller_JNIWinamp_isShuffleStatusOn - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: isRepeatStatusOn - * Signature: ()Z - */ -JNIEXPORT jint JNICALL Java_com_qotsa_jni_controller_JNIWinamp_isRepeatStatusOn - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: setRepeatStatusOn - * Signature: (Z)V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_setRepeatStatusOn - (JNIEnv *, jclass, jboolean); - -/* - * Class: WinampController - * Method: setShuffleStatusOn - * Signature: (Z)V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_setShuffleStatusOn - (JNIEnv *, jclass, jboolean); - -/* - * Class: WinampController - * Method: appendToPlayList - * Signature: (Ljava/lang/String;)V - */ -JNIEXPORT jboolean JNICALL Java_com_qotsa_jni_controller_JNIWinamp_appendToPlayList - (JNIEnv *, jclass, jstring); - -/* - * Class: WinampController - * Method: getStatus - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_com_qotsa_jni_controller_JNIWinamp_getStatus - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: getListPos - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_com_qotsa_jni_controller_JNIWinamp_getListPos - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: getTitle - * Signature: ()I - */ -JNIEXPORT jstring JNICALL Java_com_qotsa_jni_controller_JNIWinamp_getTitle - (JNIEnv *, jclass); - -/* - * Class: WinampController - * Method: getTime - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_com_qotsa_jni_controller_JNIWinamp_getTime - (JNIEnv *, jclass, jint); - -/* - * Class: WinampController - * Method: getFileNameInList - * Signature: ()I - */ -JNIEXPORT jstring JNICALL Java_com_qotsa_jni_controller_JNIWinamp_getFileNameInList - (JNIEnv *, jclass, jint); - -/* - * Class: WinampController - * Method: getFileNamePlaying - * Signature: ()I - */ -JNIEXPORT jstring JNICALL Java_com_qotsa_jni_controller_JNIWinamp_getFileNamePlaying - (JNIEnv *, jobject); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/vendor/JavaWinampApi/1.1/cpp/cpy.bat b/vendor/JavaWinampApi/1.1/cpp/cpy.bat deleted file mode 100644 index 2abdf4a..0000000 --- a/vendor/JavaWinampApi/1.1/cpp/cpy.bat +++ /dev/null @@ -1 +0,0 @@ -copy /y wpcom.dll c:\winnt\system32\ \ No newline at end of file diff --git a/vendor/JavaWinampApi/1.1/cpp/libwpcom.def b/vendor/JavaWinampApi/1.1/cpp/libwpcom.def deleted file mode 100644 index e17c91c..0000000 --- a/vendor/JavaWinampApi/1.1/cpp/libwpcom.def +++ /dev/null @@ -1,58 +0,0 @@ -; dlltool --base-file C:\DOCUME~1\FRANCI~1\CONFIG~1\Temp/cca03628.base --output-exp wpcom.exp --dllname wpcom.dll --output-def libwpcom.def --no-export-all-symbols --add-stdcall-alias --exclude-symbol=DllMainCRTStartup@12 --def C:\DOCUME~1\FRANCI~1\CONFIG~1\Temp/cca03628.def --output-lib libwpcom.a -EXPORTS - Java_controller_JNIWinampController_appendToPlayList = Java_controller_JNIWinampController_appendToPlayList@12 @ 1 - Java_controller_JNIWinampController_appendToPlayList@12 @ 2 - Java_controller_JNIWinampController_clearPlayList = Java_controller_JNIWinampController_clearPlayList@8 @ 3 - Java_controller_JNIWinampController_clearPlayList@8 @ 4 - Java_controller_JNIWinampController_clearPlayListCache = Java_controller_JNIWinampController_clearPlayListCache@8 @ 5 - Java_controller_JNIWinampController_clearPlayListCache@8 @ 6 - Java_controller_JNIWinampController_decreaseVolume = Java_controller_JNIWinampController_decreaseVolume@8 @ 7 - Java_controller_JNIWinampController_decreaseVolume@8 @ 8 - Java_controller_JNIWinampController_decreaseVolumePercent = Java_controller_JNIWinampController_decreaseVolumePercent@12 @ 9 - Java_controller_JNIWinampController_decreaseVolumePercent@12 @ 10 - Java_controller_JNIWinampController_exit = Java_controller_JNIWinampController_exit@8 @ 11 - Java_controller_JNIWinampController_exit@8 @ 12 - Java_controller_JNIWinampController_getListPos = Java_controller_JNIWinampController_getListPos@8 @ 13 - Java_controller_JNIWinampController_getListPos@8 @ 14 - Java_controller_JNIWinampController_getPlayListLength = Java_controller_JNIWinampController_getPlayListLength@8 @ 15 - Java_controller_JNIWinampController_getPlayListLength@8 @ 16 - Java_controller_JNIWinampController_getSeconds = Java_controller_JNIWinampController_getSeconds@8 @ 17 - Java_controller_JNIWinampController_getSeconds@8 @ 18 - Java_controller_JNIWinampController_getStatus = Java_controller_JNIWinampController_getStatus@8 @ 19 - Java_controller_JNIWinampController_getStatus@8 @ 20 - Java_controller_JNIWinampController_getTitle = Java_controller_JNIWinampController_getTitle@8 @ 21 - Java_controller_JNIWinampController_getTitle@8 @ 22 - Java_controller_JNIWinampController_increaseVolume = Java_controller_JNIWinampController_increaseVolume@8 @ 23 - Java_controller_JNIWinampController_increaseVolume@8 @ 24 - Java_controller_JNIWinampController_increaseVolumePercent = Java_controller_JNIWinampController_increaseVolumePercent@12 @ 25 - Java_controller_JNIWinampController_increaseVolumePercent@12 @ 26 - Java_controller_JNIWinampController_isRepeatStatusOn = Java_controller_JNIWinampController_isRepeatStatusOn@8 @ 27 - Java_controller_JNIWinampController_isRepeatStatusOn@8 @ 28 - Java_controller_JNIWinampController_isShuffleStatusOn = Java_controller_JNIWinampController_isShuffleStatusOn@8 @ 29 - Java_controller_JNIWinampController_isShuffleStatusOn@8 @ 30 - Java_controller_JNIWinampController_nextTrack = Java_controller_JNIWinampController_nextTrack@8 @ 31 - Java_controller_JNIWinampController_nextTrack@8 @ 32 - Java_controller_JNIWinampController_pause = Java_controller_JNIWinampController_pause@8 @ 33 - Java_controller_JNIWinampController_pause@8 @ 34 - Java_controller_JNIWinampController_play = Java_controller_JNIWinampController_play@8 @ 35 - Java_controller_JNIWinampController_play@8 @ 36 - Java_controller_JNIWinampController_previousTrack = Java_controller_JNIWinampController_previousTrack@8 @ 37 - Java_controller_JNIWinampController_previousTrack@8 @ 38 - Java_controller_JNIWinampController_restart = Java_controller_JNIWinampController_restart@8 @ 39 - Java_controller_JNIWinampController_restart@8 @ 40 - Java_controller_JNIWinampController_resume = Java_controller_JNIWinampController_resume@8 @ 41 - Java_controller_JNIWinampController_resume@8 @ 42 - Java_controller_JNIWinampController_run = Java_controller_JNIWinampController_run@8 @ 43 - Java_controller_JNIWinampController_run@8 @ 44 - Java_controller_JNIWinampController_setPlaylistPosition = Java_controller_JNIWinampController_setPlaylistPosition@12 @ 45 - Java_controller_JNIWinampController_setPlaylistPosition@12 @ 46 - Java_controller_JNIWinampController_setRepeatStatusOn = Java_controller_JNIWinampController_setRepeatStatusOn@12 @ 47 - Java_controller_JNIWinampController_setRepeatStatusOn@12 @ 48 - Java_controller_JNIWinampController_setShuffleStatusOn = Java_controller_JNIWinampController_setShuffleStatusOn@12 @ 49 - Java_controller_JNIWinampController_setShuffleStatusOn@12 @ 50 - Java_controller_JNIWinampController_setVolume = Java_controller_JNIWinampController_setVolume@12 @ 51 - Java_controller_JNIWinampController_setVolume@12 @ 52 - Java_controller_JNIWinampController_stop = Java_controller_JNIWinampController_stop@8 @ 53 - Java_controller_JNIWinampController_stop@8 @ 54 - Java_controller_JNIWinampController_writePlayListToFile = Java_controller_JNIWinampController_writePlayListToFile@8 @ 55 - Java_controller_JNIWinampController_writePlayListToFile@8 @ 56 diff --git a/vendor/JavaWinampApi/1.1/cpp/wa_ipc.h b/vendor/JavaWinampApi/1.1/cpp/wa_ipc.h deleted file mode 100644 index 8bc8402..0000000 --- a/vendor/JavaWinampApi/1.1/cpp/wa_ipc.h +++ /dev/null @@ -1,1620 +0,0 @@ -/* -** Copyright (C) 2006 Nullsoft, Inc. -** -** This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held -** liable for any damages arising from the use of this software. -** -** Permission is granted to anyone to use this software for any purpose, including commercial applications, and to -** alter it and redistribute it freely, subject to the following restrictions: -** -** 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. -** If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -** -** 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -** -** 3. This notice may not be removed or altered from any source distribution. -** -*/ - -#ifndef _WA_IPC_H_ -#define _WA_IPC_H_ - -#include -#include -#if (_MSC_VER <= 1200) -typedef int intptr_t; -#endif -/* -** This is the modern replacement for the classic 'frontend.h'. Most of these -** updates are designed for in-process use, i.e. from a plugin. -** -*/ - -/* message used to sent many messages to winamp's main window. -** most all of the IPC_* messages involve sending the message in the form of: -** result = SendMessage(hwnd_winamp,WM_WA_IPC,(parameter),IPC_*); -** -** When you use SendMessage(hwnd_winamp,WM_WA_IPC,(parameter),IPC_*) and specify a IPC_* -** which is not currently implemented/supported by the Winamp version being used then it -** will return 1 for 'result'. This is a good way of helping to check if an api being -** used which returns a function pointer, etc is even going to be valid. -*/ -#define WM_WA_IPC WM_USER -/* but some of them use WM_COPYDATA. be afraid. -*/ - -#define WINAMP_VERSION_MAJOR(winampVersion) ((winampVersion & 0x0000FF00) >> 12) -#define WINAMP_VERSION_MINOR(winampVersion) (winampVersion & 0x000000FF) // returns, i.e. 0x12 for 5.12 and 0x10 for 5.1... - -#define IPC_GETVERSION 0 -/* int version = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETVERSION); -** -** The version returned will be 0x20yx for Winamp 2.yx. -** Versions previous to Winamp 2.0 typically (but not always) use 0x1zyx for 1.zx. -** Just a bit weird but that's the way it goes. -** -** For Winamp 5.x it uses the format 0x50yx for Winamp 5.yx -** e.g. 5.01 -> 0x5001 -** 5.09 -> 0x5009 -** 5.1 -> 0x5010 -** -** Notes: For 5.02 this api will return the same value as for a 5.01 build. -** For 5.07 this api will return the same value as for a 5.06 build. -*/ -#define IPC_GETVERSIONSTRING 1 - -#define IPC_GETREGISTEREDVERSION 770 - - -typedef struct { - const char *filename; - const char *title; - int length; -} enqueueFileWithMetaStruct; // send this to a IPC_PLAYFILE in a non WM_COPYDATA, -// and you get the nice desired result. if title is NULL, it is treated as a "thing", -// otherwise it's assumed to be a file (for speed) - -typedef struct { - const wchar_t *filename; - const wchar_t *title; - int length; -} enqueueFileWithMetaStructW; - -#define IPC_PLAYFILE 100 // dont be fooled, this is really the same as enqueufile -#define IPC_ENQUEUEFILE 100 -#define IPC_PLAYFILEW 1100 -/* This is sent as a WM_COPYDATA with IPC_PLAYFILE as the dwData member and the string -** of the file / playlist to be enqueued into the playlist editor as the lpData member. -** This will just enqueue the file or files since you can use this to enqueue a playlist. -** It will not clear the current playlist or change the playback state. -** -** COPYDATASTRUCT cds = {0}; -** cds.dwData = IPC_ENQUEUEFILE; -** cds.lpData = (void*)"c:\\test\\folder\\test.mp3"; -** cds.cbData = lstrlen((char*)cds.lpData)+1; // include space for null char -** SendMessage(hwnd_winamp,WM_COPYDATA,0,(LPARAM)&cds); -** -** -** With 2.9+ and all of the 5.x versions you can send this as a normal WM_WA_IPC -** (non WM_COPYDATA) with an enqueueFileWithMetaStruct as the param. -** If the title member is null then it is treated as a "thing" otherwise it will be -** assumed to be a file (for speed). -** -** enqueueFileWithMetaStruct eFWMS = {0}; -** eFWMS.filename = "c:\\test\\folder\\test.mp3"; -** eFWMS.title = "Whipping Good"; -** eFWMS.length = 300; // this is the number of seconds for the track -** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)&eFWMS,IPC_ENQUEUEFILE); -*/ - - -#define IPC_DELETE 101 -#define IPC_DELETE_INT 1101 -/* SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_DELETE); -** Use this api to clear Winamp's internal playlist. -** You should not need to use IPC_DELETE_INT since it is used internally by Winamp when -** it is dealing with some lame Windows Explorer issues (hard to believe that!). -*/ - - -#define IPC_STARTPLAY 102 -#define IPC_STARTPLAY_INT 1102 -/* SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_STARTPLAY); -** Sending this will start playback and is almost the same as hitting the play button. -** The IPC_STARTPLAY_INT version is used internally and you should not need to use it -** since it won't be any fun. -*/ - -#define IPC_CHDIR 103 -/* This is sent as a WM_COPYDATA type message with IPC_CHDIR as the dwData value and the -** directory you want to change to as the lpData member. -** -** COPYDATASTRUCT cds = {0}; -** cds.dwData = IPC_CHDIR; -** cds.lpData = (void*)"c:\\download"; -** cds.cbData = lstrlen((char*)cds.lpData)+1; // include space for null char -** SendMessage(hwnd_winamp,WM_COPYDATA,0,(LPARAM)&cds); -** -** The above example will make Winamp change to the directory 'C:\download'. -*/ - - -#define IPC_ISPLAYING 104 -/* int res = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_ISPLAYING); -** This is sent to retrieve the current playback state of Winamp. -** If it returns 1, Winamp is playing. -** If it returns 3, Winamp is paused. -** If it returns 0, Winamp is not playing. -*/ - - -#define IPC_GETOUTPUTTIME 105 -/* int res = SendMessage(hwnd_winamp,WM_WA_IPC,mode,IPC_GETOUTPUTTIME); -** This api can return two different sets of information about current playback status. -** -** If mode = 0 then it will return the position (in ms) of the currently playing track. -** Will return -1 if Winamp is not playing. -** -** If mode = 1 then it will return the current track length (in seconds). -** Will return -1 if there are no tracks (or possibly if Winamp cannot get the length). -*/ - - - -#define IPC_JUMPTOTIME 106 -/* (requires Winamp 1.60+) -** SendMessage(hwnd_winamp,WM_WA_IPC,ms,IPC_JUMPTOTIME); -** This api sets the current position (in milliseconds) for the currently playing song. -** The resulting playback position may only be an approximate time since some playback -** formats do not provide exact seeking e.g. mp3 -** This returns -1 if Winamp is not playing, 1 on end of file, or 0 if it was successful. -*/ - -#define IPC_GETMODULENAME 109 -#define IPC_EX_ISRIGHTEXE 666 -/* usually shouldnt bother using these, but here goes: -** send a WM_COPYDATA with IPC_GETMODULENAME, and an internal -** flag gets set, which if you send a normal WM_WA_IPC message with -** IPC_EX_ISRIGHTEXE, it returns whether or not that filename -** matches. lame, I know. -*/ - -#define IPC_WRITEPLAYLIST 120 -/* (requires Winamp 1.666+) -** int cur = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_WRITEPLAYLIST); -** -** IPC_WRITEPLAYLIST will write the current playlist to '\\Winamp.m3u' and -** will also return the current playlist position (see IPC_GETLISTPOS). -** -** This is kinda obsoleted by some of the newer 2.x api items but it still is good for -** use with a front-end program (instead of a plug-in) and you want to see what is in the -** current playlist. -** -** This api will only save out extended file information in the #EXTINF entry if Winamp -** has already read the data such as if the file was played of scrolled into view. If -** Winamp has not read the data then you will only find the file with its filepath entry -** (as is the base requirements for a m3u playlist). -*/ - - -#define IPC_SETPLAYLISTPOS 121 -/* (requires Winamp 2.0+) -** SendMessage(hwnd_winamp,WM_WA_IPC,position,IPC_SETPLAYLISTPOS) -** IPC_SETPLAYLISTPOS sets the playlist position to the specified 'position'. -** It will not change playback status or anything else. It will just set the current -** position in the playlist and will update the playlist view if necessary. -** -** If you use SendMessage(hwnd_winamp,WM_COMMAND,MAKEWPARAM(WINAMP_BUTTON2,0),0); -** after using IPC_SETPLAYLISTPOS then Winamp will start playing the file at 'position'. -*/ - - -#define IPC_SETVOLUME 122 -/* (requires Winamp 2.0+) -** SendMessage(hwnd_winamp,WM_WA_IPC,volume,IPC_SETVOLUME); -** IPC_SETVOLUME sets the volume of Winamp (between the range of 0 to 255). -** -** If you pass 'volume' as -666 then the message will return the current volume. -** int curvol = SendMessage(hwnd_winamp,WM_WA_IPC,-666,IPC_SETVOLUME); -*/ - - -#define IPC_SETPANNING 123 -/* (requires Winamp 2.0+) -** SendMessage(hwnd_winamp,WM_WA_IPC,panning,IPC_SETPANNING); -** IPC_SETPANNING sets the panning of Winamp from 0 (left) to 255 (right). -** -** At least in 5.x+ this works from -127 (left) to 127 (right). -** -** If you pass 'panning' as -666 to this api then it will return the current panning. -** int curpan = SendMessage(hwnd_winamp,WM_WA_IPC,-666,IPC_SETPANNING); -*/ - - -#define IPC_GETLISTLENGTH 124 -/* (requires Winamp 2.0+) -** int length = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETLISTLENGTH); -** IPC_GETLISTLENGTH returns the length of the current playlist as the number of tracks. -*/ - - -#define IPC_GETLISTPOS 125 -/* (requires Winamp 2.05+) -** int pos=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETLISTPOS); -** IPC_GETLISTPOS returns the current playlist position (which is shown in the playlist -** editor as a differently coloured text entry e.g is yellow for the classic skin). -** -** This api is a lot like IPC_WRITEPLAYLIST but a lot faster since it does not have to -** write out the whole of the current playlist first. -*/ - - -#define IPC_GETINFO 126 -/* (requires Winamp 2.05+) -** int inf=SendMessage(hwnd_winamp,WM_WA_IPC,mode,IPC_GETINFO); -** IPC_GETINFO returns info about the current playing song. The value -** it returns depends on the value of 'mode'. -** Mode Meaning -** ------------------ -** 0 Samplerate, in kilohertz (i.e. 44) -** 1 Bitrate (i.e. 128) -** 2 Channels (i.e. 2) -** 3 (5+) Video LOWORD=w HIWORD=h -** 4 (5+) > 65536, string (video description) -** 5 (5.25+) Samplerate, in hertz (i.e. 44100) -*/ - - -#define IPC_GETEQDATA 127 -/* (requires Winamp 2.05+) -** int data=SendMessage(hwnd_winamp,WM_WA_IPC,pos,IPC_GETEQDATA); -** IPC_GETEQDATA queries the status of the EQ. -** The value returned depends on what 'pos' is set to: -** Value Meaning -** ------------------ -** 0-9 The 10 bands of EQ data. 0-63 (+20db - -20db) -** 10 The preamp value. 0-63 (+20db - -20db) -** 11 Enabled. zero if disabled, nonzero if enabled. -** 12 Autoload. zero if disabled, nonzero if enabled. -*/ - - -#define IPC_SETEQDATA 128 -/* (requires Winamp 2.05+) -** SendMessage(hwnd_winamp,WM_WA_IPC,pos,IPC_GETEQDATA); -** SendMessage(hwnd_winamp,WM_WA_IPC,value,IPC_SETEQDATA); -** IPC_SETEQDATA sets the value of the last position retrieved -** by IPC_GETEQDATA. This is pretty lame, and we should provide -** an extended version that lets you do a MAKELPARAM(pos,value). -** someday... - - new (2.92+): - if the high byte is set to 0xDB, then the third byte specifies - which band, and the bottom word specifies the value. -*/ - -#define IPC_ADDBOOKMARK 129 -#define IPC_ADDBOOKMARKW 131 -/* (requires Winamp 2.4+) -** This is sent as a WM_COPYDATA using IPC_ADDBOOKMARK as the dwData value and the -** directory you want to change to as the lpData member. This will add the specified -** file / url to the Winamp bookmark list. -** -** COPYDATASTRUCT cds = {0}; -** cds.dwData = IPC_ADDBOOKMARK; -** cds.lpData = (void*)"http://www.blah.com/listen.pls"; -** cds.cbData = lstrlen((char*)cds.lpData)+1; // include space for null char -** SendMessage(hwnd_winamp,WM_COPYDATA,0,(LPARAM)&cds); -** -** -** In Winamp 5.0+ we use this as a normal WM_WA_IPC and the string is null separated as -** the filename and then the title of the entry. -** -** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)(char*)"filename\0title\0",IPC_ADDBOOKMARK); -** -** This will notify the library / bookmark editor that a bookmark was added. -** Note that using this message in this context does not actually add the bookmark. -** Do not use, it is essentially just a notification type message :) -*/ - - -#define IPC_INSTALLPLUGIN 130 -/* This is not implemented (and is very unlikely to be done due to safety concerns). -** If it was then you could do a WM_COPYDATA with a path to a .wpz and it would then -** install the plugin for you. -** -** COPYDATASTRUCT cds = {0}; -** cds.dwData = IPC_INSTALLPLUGIN; -** cds.lpData = (void*)"c:\\path\\to\\file.wpz"; -** cds.cbData = lstrlen((char*)cds.lpData)+1; // include space for null char -** SendMessage(hwnd_winamp,WM_COPYDATA,0,(LPARAM)&cds); -*/ - - -#define IPC_RESTARTWINAMP 135 -/* (requires Winamp 2.2+) -** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_RESTARTWINAMP); -** IPC_RESTARTWINAMP will restart Winamp (isn't that obvious ? :) ) -** If this fails to make Winamp start after closing then there is a good chance one (or -** more) of the currently installed plugins caused Winamp to crash on exit (either as a -** silent crash or a full crash log report before it could call itself start again. -*/ - - -#define IPC_ISFULLSTOP 400 -/* (requires winamp 2.7+ I think) -** int ret=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_ISFULLSTOP); -** This is useful for when you're an output plugin and you want to see if the stop/close -** happening is a full stop or if you are just between tracks. This returns non zero if -** it is a full stop or zero if it is just a new track. -*/ - - -#define IPC_INETAVAILABLE 242 -/* (requires Winamp 2.05+) -** int val=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_INETAVAILABLE); -** IPC_INETAVAILABLE will return 1 if an Internet connection is available for Winamp and -** relates to the internet connection type setting on the main general preferences page -** in the Winamp preferences. -*/ - - -#define IPC_UPDTITLE 243 -/* (requires Winamp 2.2+) -** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_UPDTITLE); -** IPC_UPDTITLE will ask Winamp to update the information about the current title and -** causes GetFileInfo(..) in the input plugin associated with the current playlist entry -** to be called. This can be called such as when an input plugin is buffering a file so -** that it can cause the buffer percentage to appear in the playlist. -*/ - - -#define IPC_REFRESHPLCACHE 247 -/* (requires Winamp 2.2+) -** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_REFRESHPLCACHE); -** IPC_REFRESHPLCACHE will flush the playlist cache buffer and you send this if you want -** Winamp to go refetch the titles for all of the entries in the current playlist. - -5.3+: pass a wchar_t * string in wParam, and it'll do a strnicmp() before clearing the cache -*/ - - -#define IPC_GET_SHUFFLE 250 -/* (requires Winamp 2.4+) -** int val=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GET_SHUFFLE); -** IPC_GET_SHUFFLE returns the status of the shuffle option. -** If set then it will return 1 and if not set then it will return 0. -*/ - - -#define IPC_GET_REPEAT 251 -/* (requires Winamp 2.4+) -** int val=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GET_REPEAT); -** IPC_GET_REPEAT returns the status of the repeat option. -** If set then it will return 1 and if not set then it will return 0. -*/ - - -#define IPC_SET_SHUFFLE 252 -/* (requires Winamp 2.4+) -** SendMessage(hwnd_winamp,WM_WA_IPC,value,IPC_SET_SHUFFLE); -** IPC_SET_SHUFFLE sets the status of the shuffle option. -** If 'value' is 1 then shuffle is turned on. -** If 'value' is 0 then shuffle is turned off. -*/ - - -#define IPC_SET_REPEAT 253 -/* (requires Winamp 2.4+) -** SendMessage(hwnd_winamp,WM_WA_IPC,value,IPC_SET_REPEAT); -** IPC_SET_REPEAT sets the status of the repeat option. -** If 'value' is 1 then shuffle is turned on. -** If 'value' is 0 then shuffle is turned off. -*/ - - -#define IPC_ENABLEDISABLE_ALL_WINDOWS 259 // 0xdeadbeef to disable -/* (requires Winamp 2.9+) -** SendMessage(hwnd_winamp,WM_WA_IPC,(enable?0:0xdeadbeef),IPC_ENABLEDISABLE_ALL_WINDOWS); -** Sending this message with 0xdeadbeef as the param will disable all winamp windows and -** any other values will enable all of the Winamp windows again. When disabled you won't -** get any response on clicking or trying to do anything to the Winamp windows. If the -** taskbar icon is shown then you may still have control ;) -*/ - - -#define IPC_GETWND 260 -/* (requires Winamp 2.9+) -** HWND h=SendMessage(hwnd_winamp,WM_WA_IPC,IPC_GETWND_xxx,IPC_GETWND); -** returns the HWND of the window specified. -*/ - #define IPC_GETWND_EQ 0 // use one of these for the param - #define IPC_GETWND_PE 1 - #define IPC_GETWND_MB 2 - #define IPC_GETWND_VIDEO 3 -#define IPC_ISWNDVISIBLE 261 // same param as IPC_GETWND - - - - -/************************************************************************ -***************** in-process only (WE LOVE PLUGINS) -************************************************************************/ - -#define IPC_SETSKINW 199 -#define IPC_SETSKIN 200 -/* (requires Winamp 2.04+, only usable from plug-ins (not external apps)) -** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)"skinname",IPC_SETSKIN); -** IPC_SETSKIN sets the current skin to "skinname". Note that skinname -** can be the name of a skin, a skin .zip file, with or without path. -** If path isn't specified, the default search path is the winamp skins -** directory. -*/ - - -#define IPC_GETSKIN 201 -/* (requires Winamp 2.04+, only usable from plug-ins (not external apps)) -** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)skinname_buffer,IPC_GETSKIN); -** IPC_GETSKIN puts the directory where skin bitmaps can be found -** into skinname_buffer. -** skinname_buffer must be MAX_PATH characters in length. -** When using a .zip'd skin file, it'll return a temporary directory -** where the ZIP was decompressed. -*/ - - -#define IPC_EXECPLUG 202 -/* (requires Winamp 2.04+, only usable from plug-ins (not external apps)) -** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)"vis_file.dll",IPC_EXECPLUG); -** IPC_EXECPLUG executes a visualization plug-in pointed to by WPARAM. -** the format of this string can be: -** "vis_whatever.dll" -** "vis_whatever.dll,0" // (first mod, file in winamp plug-in dir) -** "C:\\dir\\vis_whatever.dll,1" -*/ - - -#define IPC_GETPLAYLISTFILE 211 -#define IPC_GETPLAYLISTFILEW 214 -/* (requires Winamp 2.04+, only usable from plug-ins (not external apps)) -** char *name=SendMessage(hwnd_winamp,WM_WA_IPC,index,IPC_GETPLAYLISTFILE); -** IPC_GETPLAYLISTFILE gets the filename of the playlist entry [index]. -** returns a pointer to it. returns NULL on error. -*/ - - -#define IPC_GETPLAYLISTTITLE 212 -#define IPC_GETPLAYLISTTITLEW 213 -/* (requires Winamp 2.04+, only usable from plug-ins (not external apps)) -** char *name=SendMessage(hwnd_winamp,WM_WA_IPC,index,IPC_GETPLAYLISTTITLE); -** -** IPC_GETPLAYLISTTITLE gets the title of the playlist entry [index]. -** returns a pointer to it. returns NULL on error. -*/ - - -#define IPC_GETHTTPGETTER 240 -/* retrieves a function pointer to a HTTP retrieval function. -** if this is unsupported, returns 1 or 0. -** the function should be: -** int (*httpRetrieveFile)(HWND hwnd, char *url, char *file, char *dlgtitle); -** if you call this function, with a parent window, a URL, an output file, and a dialog title, -** it will return 0 on successful download, 1 on error. -*/ - - -#define IPC_MBOPEN 241 -/* (requires Winamp 2.05+) -** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_MBOPEN); -** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)url,IPC_MBOPEN); -** IPC_MBOPEN will open a new URL in the minibrowser. if url is NULL, it will open the Minibrowser window. -*/ - - - -#define IPC_CHANGECURRENTFILE 245 -/* (requires Winamp 2.05+) -** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)file,IPC_CHANGECURRENTFILE); -** IPC_CHANGECURRENTFILE will set the current playlist item. -*/ - -#define IPC_CHANGECURRENTFILEW 1245 -/* (requires Winamp 2.05+) -** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)file,IPC_CHANGECURRENTFILEW); -** IPC_CHANGECURRENTFILEW will set the current playlist item. -*/ - - -#define IPC_GETMBURL 246 -/* (requires Winamp 2.2+) -** char buffer[4096]; // Urls can be VERY long -** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)buffer,IPC_GETMBURL); -** IPC_GETMBURL will retrieve the current Minibrowser URL into buffer. -** buffer must be at least 4096 bytes long. -*/ - - -#define IPC_MBBLOCK 248 -/* (requires Winamp 2.4+) -** SendMessage(hwnd_winamp,WM_WA_IPC,value,IPC_MBBLOCK); -** -** IPC_MBBLOCK will block the Minibrowser from updates if value is set to 1 -*/ - -#define IPC_MBOPENREAL 249 -/* (requires Winamp 2.4+) -** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)url,IPC_MBOPENREAL); -** -** IPC_MBOPENREAL works the same as IPC_MBOPEN except that it will works even if -** IPC_MBBLOCK has been set to 1 -*/ - -#define IPC_ADJUST_OPTIONSMENUPOS 280 -/* (requires Winamp 2.9+) -** int newpos=SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)adjust_offset,IPC_ADJUST_OPTIONSMENUPOS); -** moves where winamp expects the Options menu in the main menu. Useful if you wish to insert a -** menu item above the options/skins/vis menus. -*/ - -#define IPC_GET_HMENU 281 -/* (requires Winamp 2.9+) -** HMENU hMenu=SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)0,IPC_GET_HMENU); -** values for data: -** 0 : main popup menu -** 1 : main menubar file menu -** 2 : main menubar options menu -** 3 : main menubar windows menu -** 4 : main menubar help menu -** other values will return NULL. -*/ - -#define IPC_GET_EXTENDED_FILE_INFO 290 //pass a pointer to the following struct in wParam -#define IPC_GET_EXTENDED_FILE_INFO_HOOKABLE 296 -/* (requires Winamp 2.9+) -** to use, create an extendedFileInfoStruct, point the values filename and metadata to the -** filename and metadata field you wish to query, and ret to a buffer, with retlen to the -** length of that buffer, and then SendMessage(hwnd_winamp,WM_WA_IPC,&struct,IPC_GET_EXTENDED_FILE_INFO); -** the results should be in the buffer pointed to by ret. -** returns 1 if the decoder supports a getExtendedFileInfo method -*/ -typedef struct { - const char *filename; - const char *metadata; - char *ret; - size_t retlen; -} extendedFileInfoStruct; - - -#define IPC_GET_BASIC_FILE_INFO 291 //pass a pointer to the following struct in wParam -typedef struct { - const char *filename; - - int quickCheck; // set to 0 to always get, 1 for quick, 2 for default (if 2, quickCheck will be set to 0 if quick wasnot used) - - // filled in by winamp - int length; - char *title; - int titlelen; -} basicFileInfoStruct; - -#define IPC_GET_BASIC_FILE_INFOW 1291 //pass a pointer to the following struct in wParam -typedef struct { - const wchar_t *filename; - - int quickCheck; // set to 0 to always get, 1 for quick, 2 for default (if 2, quickCheck will be set to 0 if quick wasnot used) - - // filled in by winamp - int length; - wchar_t *title; - int titlelen; -} basicFileInfoStructW; - - -#define IPC_GET_EXTLIST 292 //returns doublenull delimited. GlobalFree() it when done. if data is 0, returns raw extlist, if 1, returns something suitable for getopenfilename -#define IPC_GET_EXTLISTW 1292 // wide char version of above - -#define IPC_INFOBOX 293 -typedef struct { - HWND parent; - char *filename; -} infoBoxParam; - -#define IPC_INFOBOXW 1293 -typedef struct { - HWND parent; - const wchar_t *filename; -} infoBoxParamW; - -#define IPC_SET_EXTENDED_FILE_INFO 294 //pass a pointer to the a extendedFileInfoStruct in wParam -/* (requires Winamp 2.9+) -** to use, create an extendedFileInfoStruct, point the values filename and metadata to the -** filename and metadata field you wish to write in ret. (retlen is not used). and then -** SendMessage(hwnd_winamp,WM_WA_IPC,&struct,IPC_SET_EXTENDED_FILE_INFO); -** returns 1 if the metadata is supported -** Call IPC_WRITE_EXTENDED_FILE_INFO once you're done setting all the metadata you want to update -*/ - -#define IPC_WRITE_EXTENDED_FILE_INFO 295 -/* (requires Winamp 2.9+) -** writes all the metadata set thru IPC_SET_EXTENDED_FILE_INFO to the file -** returns 1 if the file has been successfully updated, 0 if error -*/ - -#define IPC_FORMAT_TITLE 297 -typedef struct -{ - char *spec; // NULL=default winamp spec - void *p; - - char *out; - int out_len; - - char * (*TAGFUNC)(const char * tag, void * p); //return 0 if not found - void (*TAGFREEFUNC)(char * tag,void * p); -} waFormatTitle; - -#define IPC_FORMAT_TITLE_EXTENDED 298 // similiar to IPC_FORMAT_TITLE, but falls back to Winamp's %tags% if your passed tag function doesn't handle it -typedef struct -{ - const wchar_t *filename; - int useExtendedInfo; // set to 1 if you want the Title Formatter to query the input plugins for any tags that your tag function fails on - const wchar_t *spec; // NULL=default winamp spec - void *p; - - wchar_t *out; - int out_len; - - wchar_t * (*TAGFUNC)(const wchar_t * tag, void * p); //return 0 if not found, -1 for empty tag - void (*TAGFREEFUNC)(wchar_t *tag, void *p); -} waFormatTitleExtended; - -#define IPC_COPY_EXTENDED_FILE_INFO 299 -typedef struct -{ - const char *source; - const char *dest; -} copyFileInfoStruct; - -#define IPC_COPY_EXTENDED_FILE_INFOW 1299 -typedef struct -{ - const wchar_t *source; - const wchar_t *dest; -} copyFileInfoStructW; - - -#define IPC_GETUNCOMPRESSINTERFACE 331 -/* returns a function pointer to uncompress(). -** int (*uncompress)(unsigned char *dest, unsigned long *destLen, const unsigned char *source, unsigned long sourceLen); -** right out of zlib, useful for decompressing zlibbed data. -** if you pass the parm of 0x10100000, it will return a wa_inflate_struct * to an inflate API. -*/ - -typedef struct { - int (*inflateReset)(void *strm); - int (*inflateInit_)(void *strm,const char *version, int stream_size); - int (*inflate)(void *strm, int flush); - int (*inflateEnd)(void *strm); - unsigned long (*crc32)(unsigned long crc, const unsigned char *buf, unsigned int len); -} wa_inflate_struct; - - -#define IPC_ADD_PREFS_DLG 332 -#define IPC_REMOVE_PREFS_DLG 333 -/* (requires Winamp 2.9+) -** to use, allocate a prefsDlgRec structure (either on the heap or some global -** data, but NOT on the stack), initialze the members: -** hInst to the DLL instance where the resource is located -** dlgID to the ID of the dialog, -** proc to the window procedure for the dialog -** name to the name of the prefs page in the prefs. -** where to 0 (eventually we may add more options) -** then, SendMessage(hwnd_winamp,WM_WA_IPC,&prefsRec,IPC_ADD_PREFS_DLG); -** -** you can also IPC_REMOVE_PREFS_DLG with the address of the same prefsRec, -** but you shouldn't really ever have to. -** -*/ -#define IPC_OPENPREFSTOPAGE 380 // pass an id of a builtin page, or a &prefsDlgRec of prefs page to open - -typedef struct _prefsDlgRec { - HINSTANCE hInst; - int dlgID; - void *proc; - - char *name; - intptr_t where; // 0 for options, 1 for plugins, 2 for skins, 3 for bookmarks, 4 for prefs - - intptr_t _id; - struct _prefsDlgRec *next; -} prefsDlgRec; - - -#define IPC_GETINIFILE 334 // returns a pointer to winamp.ini -#define IPC_GETINIDIRECTORY 335 // returns a pointer to the directory to put config files in (if you dont want to use winamp.ini) -#define IPC_GETPLUGINDIRECTORY 336 -#define IPC_GETM3UDIRECTORY 337 // returns a char pointer to the directory where winamp.m3u is stored in. -#define IPC_GETM3UDIRECTORYW 338 // returns a wchar_t pointer to the directory where winamp.m3u is stored in. - -#define IPC_SPAWNBUTTONPOPUP 361 // param = -// 0 = eject -// 1 = previous -// 2 = next -// 3 = pause -// 4 = play -// 5 = stop - -#define IPC_OPENURLBOX 360 // pass a HWND to a parent, returns a HGLOBAL that needs to be freed with GlobalFree(), if successful -#define IPC_OPENFILEBOX 362 // pass a HWND to a parent -#define IPC_OPENDIRBOX 363 // pass a HWND to a parent - -// pass an HWND to a parent. call this if you take over the whole UI so that the dialogs are not appearing on the -// bottom right of the screen since the main winamp window is at 3000x3000, call again with NULL to reset -#define IPC_SETDIALOGBOXPARENT 364 - - - -#define IPC_DRO_MIN 401 // reserved for DrO -#define IPC_SET_JTF_COMPARATOR 409 -/* pass me an int (__cdecl *)(const char *, const char *) in wParam */ -#define IPC_SET_JTF_COMPARATOR_W 410 -/* pass me an int (__cdecl *)(const wchar_t *, const wchar_t *) in wParam ... maybe someday :) */ -#define IPC_SET_JTF_DRAWTEXT 416 - -#define IPC_DRO_MAX 499 - - -// pass 0 for a copy of the skin HBITMAP -// pass 1 for name of font to use for playlist editor likeness -// pass 2 for font charset -// pass 3 for font size -#define IPC_GET_GENSKINBITMAP 503 - - -#define IPC_GET_EMBEDIF 505 // pass an embedWindowState -// returns an HWND embedWindow(embedWindowState *); if the data is NULL, otherwise returns the HWND directly -typedef struct -{ - HWND me; //hwnd of the window - - int flags; - - RECT r; - - void *user_ptr; // for application use - - intptr_t extra_data[64]; // for internal winamp use -} embedWindowState; - -#define EMBED_FLAGS_NORESIZE 0x1 // set this bit in embedWindowState.flags to keep window from being resizable -#define EMBED_FLAGS_NOTRANSPARENCY 0x2 // set this bit in embedWindowState.flags to make gen_ff turn transparency off for this wnd -#define EMBED_FLAGS_NOWINDOWMENU 0x4 // set this bit to prevent gen_ff from automatically adding your window to the right-click menu -#define EMBED_FLAGS_GUID 0x8 // call SET_EMBED_GUID(yourEmbedWindowStateStruct, GUID) to define a GUID for this window - -#define SET_EMBED_GUID(windowState, windowGUID) { windowState->flags |= EMBED_FLAGS_GUID; *((GUID *)&windowState->extra_data[4])=windowGUID; } -#define GET_EMBED_GUID(windowState) (*((GUID *)&windowState->extra_data[4])) - -#define IPC_EMBED_ENUM 532 -typedef struct embedEnumStruct -{ - int (*enumProc)(embedWindowState *ws, struct embedEnumStruct *param); // return 1 to abort - int user_data; // or more :) -} embedEnumStruct; - // pass - -#define IPC_EMBED_ISVALID 533 - -#define IPC_CONVERTFILE 506 -/* (requires Winamp 2.92+) -** Converts a given file to a different format (PCM, MP3, etc...) -** To use, pass a pointer to a waFileConvertStruct struct -** This struct can be either on the heap or some global -** data, but NOT on the stack. At least, until the conversion is done. -** -** eg: SendMessage(hwnd_winamp,WM_WA_IPC,&myConvertStruct,IPC_CONVERTFILE); -** -** Return value: -** 0: Can't start the conversion. Look at myConvertStruct->error for details. -** 1: Conversion started. Status messages will be sent to the specified callbackhwnd. -** Be sure to call IPC_CONVERTFILE_END when your callback window receives the -** IPC_CB_CONVERT_DONE message. -*/ -typedef struct -{ - char *sourcefile; // "c:\\source.mp3" - char *destfile; // "c:\\dest.pcm" - int destformat[8]; // like 'PCM ',srate,nch,bps. - //hack alert! you can set destformat[6]=mmioFOURCC('I','N','I',' '); and destformat[7]=(int)my_ini_file; (where my_ini_file is a char*) - HWND callbackhwnd; // window that will receive the IPC_CB_CONVERT notification messages - - //filled in by winamp.exe - char *error; //if IPC_CONVERTFILE returns 0, the reason will be here - - int bytes_done; //you can look at both of these values for speed statistics - int bytes_total; - int bytes_out; - - int killswitch; // don't set it manually, use IPC_CONVERTFILE_END - intptr_t extra_data[64]; // for internal winamp use -} convertFileStruct; - -#define IPC_CONVERTFILE_END 507 -/* (requires Winamp 2.92+) -** Stop/ends a convert process started from IPC_CONVERTFILE -** You need to call this when you receive the IPC_CB_CONVERTDONE message or when you -** want to abort a conversion process -** -** eg: SendMessage(hwnd_winamp,WM_WA_IPC,&myConvertStruct,IPC_CONVERTFILE_END); -** -** No return value -*/ - -typedef struct { - HWND hwndParent; - int format; - - //filled in by winamp.exe - HWND hwndConfig; - int extra_data[8]; - //hack alert! you can set extra_data[6]=mmioFOURCC('I','N','I',' '); and extra_data[7]=(int)my_ini_file; (where my_ini_file is a char*) -} convertConfigStruct; -#define IPC_CONVERT_CONFIG 508 -#define IPC_CONVERT_CONFIG_END 509 - -typedef struct -{ - void (*enumProc)(intptr_t user_data, const char *desc, int fourcc); - intptr_t user_data; -} converterEnumFmtStruct; -#define IPC_CONVERT_CONFIG_ENUMFMTS 510 -/* (requires Winamp 2.92+) -*/ - -typedef struct -{ - char cdletter; - char *playlist_file; - HWND callback_hwnd; - - //filled in by winamp.exe - char *error; -} burnCDStruct; -#define IPC_BURN_CD 511 -/* (requires Winamp 5.0+) -*/ - -typedef struct -{ - convertFileStruct *cfs; - int priority; -} convertSetPriority; -#define IPC_CONVERT_SET_PRIORITY 512 - -typedef struct -{ - unsigned int format; //fourcc value - char *item; // config item, eg "bitrate" - char *data; // buffer to recieve, or buffer that contains the data - int len; // length of the data buffer (only used when getting a config item) - char *configfile; // config file to read from -} convertConfigItem; - -#define IPC_CONVERT_CONFIG_SET_ITEM 513 // returns TRUE if successful -#define IPC_CONVERT_CONFIG_GET_ITEM 514 // returns TRUE if successful - -typedef struct -{ - const char *filename; - char *title; // 2048 bytes - int length; - int force_useformatting; // can set this to 1 if you want to force a url to use title formatting shit -} waHookTitleStruct; -// return TRUE if you hook this -#define IPC_HOOK_TITLES 850 - -typedef struct -{ - const wchar_t *filename; - wchar_t *title; // 2048 bytes - int length; - int force_useformatting; // can set this to 1 if you want to force a url to use title formatting shit -} waHookTitleStructW; -// return TRUE if you hook this -#define IPC_HOOK_TITLESW 851 - -#define IPC_GETSADATAFUNC 800 -// 0: returns a char *export_sa_get() that returns 150 bytes of data -// 1: returns a export_sa_setreq(int want); - -#define IPC_GETVUDATAFUNC 801 -// 0: returns a int export_vu_get(int channel) that returns 0-255 (or -1 for bad channel) - -#define IPC_ISMAINWNDVISIBLE 900 - - -#define IPC_SETPLEDITCOLORS 920 -typedef struct -{ - int numElems; - int *elems; - HBITMAP bm; // set if you want to override -} waSetPlColorsStruct; - - -// the following IPC use waSpawnMenuParms as parameter -#define IPC_SPAWNEQPRESETMENU 933 -#define IPC_SPAWNFILEMENU 934 //menubar -#define IPC_SPAWNOPTIONSMENU 935 //menubar -#define IPC_SPAWNWINDOWSMENU 936 //menubar -#define IPC_SPAWNHELPMENU 937 //menubar -#define IPC_SPAWNPLAYMENU 938 //menubar -#define IPC_SPAWNPEFILEMENU 939 //menubar -#define IPC_SPAWNPEPLAYLISTMENU 940 //menubar -#define IPC_SPAWNPESORTMENU 941 //menubar -#define IPC_SPAWNPEHELPMENU 942 //menubar -#define IPC_SPAWNMLFILEMENU 943 //menubar -#define IPC_SPAWNMLVIEWMENU 944 //menubar -#define IPC_SPAWNMLHELPMENU 945 //menubar -#define IPC_SPAWNPELISTOFPLAYLISTS 946 - -typedef struct -{ - HWND wnd; - int xpos; // in screen coordinates - int ypos; -} waSpawnMenuParms; - -// waSpawnMenuParms2 is used by the menubar submenus -typedef struct -{ - HWND wnd; - int xpos; // in screen coordinates - int ypos; - int width; - int height; -} waSpawnMenuParms2; - - -// system tray sends this (you might want to simulate it) -#define WM_WA_SYSTRAY WM_USER+1 - -// input plugins send this when they are done playing back -#define WM_WA_MPEG_EOF WM_USER+2 - - - -//// video stuff - -#define IPC_IS_PLAYING_VIDEO 501 // returns >1 if playing, 0 if not, 1 if old version (so who knows):) -#define IPC_GET_IVIDEOOUTPUT 500 // see below for IVideoOutput interface -#define VIDEO_MAKETYPE(A,B,C,D) ((A) | ((B)<<8) | ((C)<<16) | ((D)<<24)) -#define VIDUSER_SET_INFOSTRING 0x1000 -#define VIDUSER_GET_VIDEOHWND 0x1001 -#define VIDUSER_SET_VFLIP 0x1002 -#define VIDUSER_SET_TRACKSELINTERFACE 0x1003 // give your ITrackSelector interface as param2 -#define VIDUSER_OPENVIDEORENDERER 0x1004 -#define VIDUSER_CLOSEVIDEORENDERER 0x1005 -#define VIDUSER_GETPOPUPMENU 0x1006 - -typedef struct -{ - int w; - int h; - int vflip; - double aspectratio; - unsigned int fmt; -} VideoOpenStruct; - -#ifndef NO_IVIDEO_DECLARE -#ifdef __cplusplus - -class VideoOutput; -class SubsItem; - -#ifndef _NSV_DEC_IF_H_ -typedef struct { - unsigned char* baseAddr; - long rowBytes; -} YV12_PLANE; - -typedef struct { - YV12_PLANE y; - YV12_PLANE u; - YV12_PLANE v; -} YV12_PLANES; -#endif - -class IVideoOutput -{ - public: - virtual ~IVideoOutput() { } - virtual int open(int w, int h, int vflip, double aspectratio, unsigned int fmt)=0; - virtual void setcallback(LRESULT (*msgcallback)(void *token, HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam), void *token) { (void)token; (void)msgcallback; /* to eliminate warning C4100 */ } - virtual void close()=0; - virtual void draw(void *frame)=0; - virtual void drawSubtitle(SubsItem *item) { } - virtual void showStatusMsg(const char *text) { } - virtual int get_latency() { return 0; } - virtual void notifyBufferState(int bufferstate) { } /* 0-255*/ - - virtual INT_PTR extended(INT_PTR param1, INT_PTR param2, INT_PTR param3) { return 0; } // Dispatchable, eat this! -}; - -class ITrackSelector -{ - public: - virtual int getNumAudioTracks()=0; - virtual void enumAudioTrackName(int n, const char *buf, int size)=0; - virtual int getCurAudioTrack()=0; - virtual int getNumVideoTracks()=0; - virtual void enumVideoTrackName(int n, const char *buf, int size)=0; - virtual int getCurVideoTrack()=0; - - virtual void setAudioTrack(int n)=0; - virtual void setVideoTrack(int n)=0; -}; - -#endif //cplusplus -#endif//NO_IVIDEO_DECLARE - -// these messages are callbacks that you can grab by subclassing the winamp window - -// wParam = -#define IPC_CB_WND_EQ 0 // use one of these for the param -#define IPC_CB_WND_PE 1 -#define IPC_CB_WND_MB 2 -#define IPC_CB_WND_VIDEO 3 -#define IPC_CB_WND_MAIN 4 - -#define IPC_CB_ONSHOWWND 600 -#define IPC_CB_ONHIDEWND 601 - -#define IPC_CB_GETTOOLTIP 602 - -#define IPC_CB_MISC 603 - #define IPC_CB_MISC_TITLE 0 - #define IPC_CB_MISC_VOLUME 1 // volume/pan - #define IPC_CB_MISC_STATUS 2 - #define IPC_CB_MISC_EQ 3 - #define IPC_CB_MISC_INFO 4 - #define IPC_CB_MISC_VIDEOINFO 5 - -#define IPC_CB_CONVERT_STATUS 604 // param value goes from 0 to 100 (percent) -#define IPC_CB_CONVERT_DONE 605 - -#define IPC_ADJUST_FFWINDOWSMENUPOS 606 -/* (requires Winamp 2.9+) -** int newpos=SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)adjust_offset,IPC_ADJUST_FFWINDOWSMENUPOS); -** moves where winamp expects the freeform windows in the menubar windows main menu. Useful if you wish to insert a -** menu item above extra freeform windows. -*/ - -#define IPC_ISDOUBLESIZE 608 - -#define IPC_ADJUST_FFOPTIONSMENUPOS 609 -/* (requires Winamp 2.9+) -** int newpos=SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)adjust_offset,IPC_ADJUST_FFOPTIONSMENUPOS); -** moves where winamp expects the freeform preferences item in the menubar windows main menu. Useful if you wish to insert a -** menu item above preferences item. -*/ - -#define IPC_GETTIMEDISPLAYMODE 610 // returns 0 if displaying elapsed time or 1 if displaying remaining time - -#define IPC_SETVISWND 611 // param is hwnd, setting this allows you to receive ID_VIS_NEXT/PREVOUS/RANDOM/FS wm_commands -#define ID_VIS_NEXT 40382 -#define ID_VIS_PREV 40383 -#define ID_VIS_RANDOM 40384 -#define ID_VIS_FS 40389 -#define ID_VIS_CFG 40390 -#define ID_VIS_MENU 40391 - -#define IPC_GETVISWND 612 // returns the vis cmd handler hwnd -#define IPC_ISVISRUNNING 613 -#define IPC_CB_VISRANDOM 628 // param is status of random - -#define IPC_SETIDEALVIDEOSIZE 614 // sent by winamp to winamp, trap it if you need it. width=HIWORD(param), height=LOWORD(param) - -#define IPC_GETSTOPONVIDEOCLOSE 615 -#define IPC_SETSTOPONVIDEOCLOSE 616 - -typedef struct { - HWND hwnd; - int uMsg; - WPARAM wParam; - LPARAM lParam; -} transAccelStruct; - -#define IPC_TRANSLATEACCELERATOR 617 - -typedef struct { - int cmd; - int x; - int y; - int align; -} windowCommand; // send this as param to an IPC_PLCMD, IPC_MBCMD, IPC_VIDCMD - -#define IPC_CB_ONTOGGLEAOT 618 - -#define IPC_GETPREFSWND 619 - -#define IPC_SET_PE_WIDTHHEIGHT 620 // data is a pointer to a POINT structure that holds width & height - -#define IPC_GETLANGUAGEPACKINSTANCE 621 - -#define IPC_CB_PEINFOTEXT 622 // data is a string, ie: "04:21/45:02" - -#define IPC_CB_OUTPUTCHANGED 623 // output plugin was changed in config - -#define IPC_GETOUTPUTPLUGIN 625 - -#define IPC_SETDRAWBORDERS 626 -#define IPC_DISABLESKINCURSORS 627 -#define IPC_CB_RESETFONT 629 - -#define IPC_IS_FULLSCREEN 630 // returns 1 if video or vis is in fullscreen mode -#define IPC_SET_VIS_FS_FLAG 631 // a vis should send this message with 1/as param to notify winamp that it has gone to or has come back from fullscreen mode - -#define IPC_SHOW_NOTIFICATION 632 - -#define IPC_GETSKININFO 633 - -#define IPC_GET_MANUALPLADVANCE 634 -/* (requires Winamp 5.03+) -** val=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GET_MANUALPLADVANCE); -** -** IPC_GET_MANUALPLADVANCE returns the status of the Manual Playlist Advance (1 if set) -*/ - -#define IPC_SET_MANUALPLADVANCE 635 -/* (requires Winamp 5.03+) -** SendMessage(hwnd_winamp,WM_WA_IPC,value,IPC_SET_MANUALPLADVANCE); -** -** IPC_SET_MANUALPLADVANCE sets the status of the Manual Playlist Advance option (1 to turn it on) -*/ - -#define IPC_GET_NEXT_PLITEM 636 -/* (requires Winamp 5.04+) -** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_EOF_GET_NEXT_PLITEM); -** -** Sent to Winamp's main window when an item has just finished playback or the next button has been pressed and -** requesting the new playlist item number to go to. -** Mainly used by gen_jumpex. Subclass this message in your application to return the new item number. -** -1 for normal winamp operation (default) or the new item number in the playlist to play. -*/ - -#define IPC_GET_PREVIOUS_PLITEM 637 -/* (requires Winamp 5.04+) -** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_EOF_GET_PREVIOUS_PLITEM); -** -** Sent to Winamp's main window when the previous button has been pressed and Winamp is requesting the new playlist item number to go to. -** Mainly used by gen_jumpex. Subclass this message in your application to return the new item number. -** -1 for normal winamp operation (default) or the new item number in the playlist to play. -*/ - -#define IPC_IS_WNDSHADE 638 -/* (requires Winamp 5.04+) -** SendMessage(hwnd_winamp,WM_WA_IPC,wnd,IPC_IS_WNDSHADE); -** -** 'wnd' is window id as defined for IPC_GETWND, or -1 for main window -** Returns 1 if wnd is set to winshade mode, or 0 if it is not -*/ - -#define IPC_SETRATING 639 -/* (requires Winamp 5.04+ with ML) -** SendMessage(hwnd_winamp,WM_WA_IPC,rating,IPC_SETRATING); -** 'rating' is an int value from 0 (no rating) to 5 -*/ - -#define IPC_GETRATING 640 -/* (requires Winamp 5.04+ with ML) -** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETRATING); -** returns the current item's rating -*/ - -#define IPC_GETNUMAUDIOTRACKS 641 -/* (requires Winamp 5.04+) -** int n = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETNUMAUDIOTRACKS); -** returns the number of audio tracks for the currently playing item -*/ - -#define IPC_GETNUMVIDEOTRACKS 642 -/* (requires Winamp 5.04+) -** int n = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETNUMVIDEOTRACKS); -** returns the number of video tracks for the currently playing item -*/ - -#define IPC_GETAUDIOTRACK 643 -/* (requires Winamp 5.04+) -** int cur = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETAUDIOTRACK); -** returns the id of the current audio track for the currently playing item -*/ - -#define IPC_GETVIDEOTRACK 644 -/* (requires Winamp 5.04+) -** int cur = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETVIDEOTRACK); -** returns the id of the current video track for the currently playing item -*/ - -#define IPC_SETAUDIOTRACK 645 -/* (requires Winamp 5.04+) -** SendMessage(hwnd_winamp,WM_WA_IPC,track,IPC_SETAUDIOTRACK); -** switch the currently playing item to a new audio track -*/ - -#define IPC_SETVIDEOTRACK 646 -/* (requires Winamp 5.04+) -** SendMessage(hwnd_winamp,WM_WA_IPC,track,IPC_SETVIDEOTRACK); -** switch the currently playing item to a new video track -*/ - -#define IPC_PUSH_DISABLE_EXIT 647 -/* (requires Winamp 5.04+) -** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_PUSH_DISABLE_EXIT ); -** lets you disable or re-enable the UI exit functions (close button, -** context menu, alt-f4). -** call IPC_POP_DISABLE_EXIT when you are done doing whatever required -** preventing exit -*/ - -#define IPC_POP_DISABLE_EXIT 648 -/* (requires Winamp 5.04+) -** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_POP_DISABLE_EXIT ); -** see IPC_PUSH_DISABLE_EXIT -*/ - -#define IPC_IS_EXIT_ENABLED 649 -/* (requires Winamp 5.04+) -** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_IS_EXIT_ENABLED); -** returns 0 if exit is disabled, 1 otherwise -*/ - -#define IPC_IS_AOT 650 -/* (requires Winamp 5.04+) -** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_IS_AOT); -** returns status of always on top flag. note: this may not match the actual -** TOPMOST window flag while another fullscreen application is focused -*/ - -#define IPC_USES_RECYCLEBIN 651 -/* -** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_USES_RECYCLEBIN); -** returns 1 if deleted files should be sent to the recycle bin. -** returns 0 if deleted files should be deleted permanently. -** -** You should check for this option if your plugin deletes files -** so that your setting matches the winamp setting -*/ - -#define IPC_FLUSHAUDITS 652 -/* -** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_FLUSHAUDITS); -** -** Will flush any pending audits in the global audits que -** -*/ - -#define IPC_GETPLAYITEM_START 653 -#define IPC_GETPLAYITEM_END 654 - - -#define IPC_GETVIDEORESIZE 655 -#define IPC_SETVIDEORESIZE 656 - -// >>>>>>>>>>> Next is 657 - -#define IPC_PLCMD 1000 - -#define PLCMD_ADD 0 -#define PLCMD_REM 1 -#define PLCMD_SEL 2 -#define PLCMD_MISC 3 -#define PLCMD_LIST 4 - -//#define IPC_MBCMD 1001 - -#define MBCMD_BACK 0 -#define MBCMD_FORWARD 1 -#define MBCMD_STOP 2 -#define MBCMD_RELOAD 3 -#define MBCMD_MISC 4 - -#define IPC_VIDCMD 1002 - -#define VIDCMD_FULLSCREEN 0 -#define VIDCMD_1X 1 -#define VIDCMD_2X 2 -#define VIDCMD_LIB 3 -#define VIDPOPUP_MISC 4 - -//#define IPC_MBURL 1003 //sets the URL -//#define IPC_MBGETCURURL 1004 //copies the current URL into wParam (have a 4096 buffer ready) -//#define IPC_MBGETDESC 1005 //copies the current URL description into wParam (have a 4096 buffer ready) -//#define IPC_MBCHECKLOCFILE 1006 //checks that the link file is up to date (otherwise updates it). wParam=parent HWND -//#define IPC_MBREFRESH 1007 //refreshes the "now playing" view in the library -//#define IPC_MBGETDEFURL 1008 //copies the default URL into wParam (have a 4096 buffer ready) - -#define IPC_STATS_LIBRARY_ITEMCNT 1300 // updates library count status - -// IPC 2000-3000 reserved for freeform messages, see gen_ff/ff_ipc.h -#define IPC_FF_FIRST 2000 -#define IPC_FF_LAST 3000 - - -/* -** General IPC messages in Winamp -** -** All notification messages appear in the lParam of the main window message proceedure. -*/ - - -#define IPC_GETDROPTARGET 3001 -/* (requires Winamp 5.0+) -** IDropTarget* IDrop = (IDropTarget*)SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETDROPTARGET); -** -** You call this to retrieve a copy of the IDropTarget interface which Winamp created for -** handling external drag and drop operations on to it's Windows. This is only really -** useful if you're providing an alternate interface and want your Windows to provide the -** same drag and drop support as Winamp normally provides the user. Check out MSDN or -** your prefered search facility for more information about the IDropTarget interface and -** what's needed to handle it in your own instance. -*/ - -#define IPC_PLAYLIST_MODIFIED 3002 -/* (requires Winamp 5.0+) -** This is a notification message sent to the main Winamp window whenever the playlist is -** modified in any way e.g. the addition/removal of a playlist entry. -** -** It is not a good idea to do large amounts of processing in this notification since it -** will slow down Winamp as playlist entries are modified (especially when you're adding -** in a large playlist). -** -** if(uMsg == WM_WA_IPC && lParam == IPC_PLAYLIST_MODIFIED){ -** // do what you need to do here -** } -*/ - -#define IPC_PLAYING_FILE 3003 -/* (requires Winamp 5.0+) -** This is a notification message sent to the main Winamp window when playback begins for -** a file. This passes the full filepath in the wParam of the message received. -** -** if(uMsg == WM_WA_IPC && lParam == IPC_PLAYING_FILE){ -** // do what you need to do here, e.g. -** process_file((char*)wParam); -** } -*/ - -#define IPC_PLAYING_FILEW 13003 -/* (requires Winamp 5.0+) -** This is a notification message sent to the main Winamp window when playback begins for -** a file. This passes the full filepath in the wParam of the message received. -** -** if(uMsg == WM_WA_IPC && lParam == IPC_PLAYING_FILEW){ -** // do what you need to do here, e.g. -** process_file((wchar_t*)wParam); -** } -*/ - -#define IPC_FILE_TAG_MAY_HAVE_UPDATED 3004 // sent to main wnd with the file as parm (char *) whenever a file tag might be updated -#define IPC_FILE_TAG_MAY_HAVE_UPDATEDW 3005 // sent to main wnd with the file as parm (wchar_t *) whenever a file tag might be updated -/* (requires Winamp 5.0+) -** This is a notification message sent to the main Winamp window when a file's tag -** (e.g. id3) may have been updated. This appears to be sent when the InfoBox(..) function -** of the associated input plugin returns a 1 (which is the file information dialog/editor -** call normally). -** -** if(uMsg == WM_WA_IPC && lParam == IPC_FILE_TAG_MAY_HAVE_UPDATED){ -** // do what you need to do here, e.g. -** update_info_on_file_update((char*)wParam); -** } -*/ - -#define IPC_ALLOW_PLAYTRACKING 3007 -/* (requires Winamp 5.0+) -** SendMessage(hwnd_winamp,WM_WA_IPC,allow,IPC_ALLOW_PLAYTRACKING); -** Send allow as nonzero to allow play tracking and zero to disable the mode. -*/ - -#define IPC_HOOK_OKTOQUIT 3010 -/* (requires Winamp 5.0+) -** This is a notification message sent to the main Winamp window asking if it's okay to -** close or not. Return zero to prevent Winamp from closing or return anything non-zero -** to allow Winamp to close. -** -** The best implementation of this option is to let the message pass through to the -** original window proceedure since another plugin may want to have a say in the matter -** with regards to Winamp closing. -** -** if(uMsg == WM_WA_IPC && lParam == IPC_HOOK_OKTOQUIT){ -** // do what you need to do here, e.g. -** if(no_shut_down()){ -** return 1; -** } -** } -*/ - -#define IPC_WRITECONFIG 3011 -/* (requires Winamp 5.0+) -** SendMessage(hwnd_winamp,WM_WA_IPC,write_type,IPC_WRITECONFIG); -** -** Send write_type as 2 to write all config settings and the current playlist. -** -** Send write_type as 1 to write the playlist and common settings. -** This won't save the following ini settings:: -** -** defext, titlefmt, proxy, visplugin_name, dspplugin_name, check_ft_startup, -** visplugin_num, pe_fontsize, visplugin_priority, visplugin_autoexec, dspplugin_num, -** sticon, splash, taskbar, dropaotfs, ascb_new, ttips, riol, minst, whichicon, -** whichicon2, addtolist, snap, snaplen, parent, hilite, disvis, rofiob, shownumsinpl, -** keeponscreen, eqdsize, usecursors, fixtitles, priority, shuffle_morph_rate, -** useexttitles, bifont, inet_mode, ospb, embedwnd_freesize, no_visseh -** (the above was valid for 5.1) -** -** Send write_type as 0 to write the common and less common settings and no playlist. -*/ - -#define IPC_UPDATE_URL 3012 // pass the URL (char *) in lparam, will be free()'d on done. - -// pass a string to be the name to register, and returns a value > 65536, which is a unique value you can use -// for custom WM_WA_IPC messages. - -#define IPC_GET_RANDFUNC 3015 // returns a function to get a random number -/* (requires Winamp 5.1+) -** int (*randfunc)(void) = (int(*)(void))SendMessage(plugin.hwndParent,WM_WA_IPC,0,IPC_GET_RANDFUNC); -** if(randfunc && randfunc != 1){ -** randfunc(); -** } -** -** This will return a positive 32-bit number (essentially 31-bit). -** The check for a returned value of 1 is because that's the default return value from -** SendMessage(..) when it is not handled so is good to check for it in this situation. -*/ - -#define IPC_METADATA_CHANGED 3017 -/* (requires Winamp 5.1+) -** int changed=SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)(char*)field,IPC_METADATA_CHANGED); -** a plugin can SendMessage this to winamp if internal metadata has changes. -** wParam should be a char * of what field changed -** -** Currently used for internal actions (and very few at that) the intent of this api is -** to allow a plugin to call it when metadata has changed in the current playlist entry -** e.g.a new id3v2 tag was found in a stream -** -** The wparam value can either be NULL or a pointer to an ansi string for the metadata -** which has changed. This can be thought of as an advanced version of IPC_UPDTITLE and -** could be used to allow for update of the current title when a specific tag changed. -** -** Not recommended to be used since there is not the complete handling implemented in -** Winamp for it at the moment. -*/ - -#define IPC_SKIN_CHANGED 3018 -/* (requires Winamp 5.1+) -** This is a notification message sent to the main Winamp window by itself whenever -** the skin in use is changed. There is no information sent by the wParam for this. -** -** if(message == WM_WA_IPC && lparam == IPC_SKIN_CHANGED){ -** // do what you need to do to handle skin changes, e.g. call WADlg_init(hwnd_winamp); -** } -*/ - -#define IPC_REGISTER_LOWORD_COMMAND 3019 -/* (requires Winamp 5.1+) -** WORD id = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_REGISTER_LOWORD_COMMAND); -** This will assign you a unique id for making your own commands such as for extra menu -** entries. The starting value returned by this message will potentially change as and -** when the main resource file of Winamp is updated with extra data so assumptions cannot -** be made on what will be returned and plugin loading order will affect things as well. - -** 5.33+ -** If you want to reserve more than one id, you can pass the number of ids required in wParam -*/ - -#define IPC_GET_DISPATCH_OBJECT 3020 // gets winamp main IDispatch * (for embedded webpages) -#define IPC_GET_UNIQUE_DISPATCH_ID 3021 // gives you a unique dispatch ID that won't conflict with anything in winamp's IDispatch * - -#define IPC_ADD_DISPATCH_OBJECT 3022 // add your own dispatch object into winamp's. This lets embedded webpages access your functions -// pass a pointer to DispatchInfo (see below). Winamp makes a copy of all this data so you can safely delete it later -typedef struct -{ - wchar_t *name; // filled in by plugin, make sure it's a unicode string!! (i.e. L"myObject" instead of "myObject). - struct IDispatch *dispatch; // filled in by plugin - DWORD id; // filled in by winamp on return -} DispatchInfo; - -#define IPC_GET_PROXY_STRING 3023 -/* (requires Winamp 5.11+) -** char* proxy_string=(char*)SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GET_PROXY_STRING); -** This will return the same string as is shown on the General Preferences page. -*/ - -#define IPC_USE_REGISTRY 3024 -/* (requires Winamp 5.11+) -** int reg_enabled=SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_USE_REGISTRY); -** This will return 0 if you should leave your grubby hands off the registry (i.e. for -** lockdown mode). This is useful if Winamp is run from a USB drive and you can't alter -** system settings, etc. -*/ - -#define IPC_GET_API_SERVICE 3025 -/* (requires Winamp 5.12+) -** api_service* api_service = (api_service)SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GET_API_SERVICE); -** This api will return Winamp's api_service pointer (which is what Winamp3 used, heh). -** If this api is not supported in the Winamp version that is being used at the time then -** the returned value from this api will be 1 which is a good version check. -** -** As of 5.12 there is support for .w5s plugins which reside in %WinampDir%\System and -** are intended for common code that can be shared amongst other plugins e.g. jnetlib.w5s -** which contains jnetlib in one instance instead of being duplicated multiple times in -** all of the plugins which need internet access. -** -** Details on the .w5s specifications will come at some stage (possibly). -*/ - - - -typedef struct { - const wchar_t *filename; - const wchar_t *metadata; - wchar_t *ret; - size_t retlen; -} extendedFileInfoStructW; - -#define IPC_GET_EXTENDED_FILE_INFOW 3026 -/* (requires Winamp 5.13+) -** Pass a pointer to the above struct in wParam -*/ -#define IPC_GET_EXTENDED_FILE_INFOW_HOOKABLE 3027 -#define IPC_SET_EXTENDED_FILE_INFOW 3028 -/* (requires Winamp 5.13+) -** Pass a pointer to the above struct in wParam -*/ - -#define IPC_PLAYLIST_GET_NEXT_SELECTED 3029 -/* (requires 5.2+) -** int pl_item = SendMessage(hwnd_winamp,WM_WA_IPC,start,IPC_PLAYLIST_GET_NEXT_SELECTED); -** -** This works just like the ListView_GetNextItem(..) macro for ListView controls. -** 'start' is the index of the playlist item that you want to begin the search after or -** set this as -1 for the search to begin with the first item of the current playlist. -** -** This will return the index of the selected playlist according to the 'start' value or -** it returns -1 if there is no selection or no more selected items according to 'start'. -** -** Quick example: -** -** int sel = -1; -** // keep incrementing the start of the search so we get all of the selected entries -** while((sel = SendMessage(hwnd_winamp,WM_WA_IPC,sel,IPC_PLAYLIST_GET_NEXT_SELECTED))!=-1){ -** // show the playlist file entry of the selected item(s) if there were any -** MessageBox(hwnd_winamp,(char*)SendMessage(hwnd_winamp,WM_WA_IPC,sel,IPC_GETPLAYLISTFILE),0,0); -** } -*/ - -#define IPC_PLAYLIST_GET_SELECTED_COUNT 3030 -/* (requires 5.2+) -** int selcnt = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_PLAYLIST_GET_SELECTED_COUNT); -** This will return the number of selected playlist entries. -*/ - -#define IPC_GET_PLAYING_FILENAME 3031 // returns wchar_t * of the currently playing filename - -#define IPC_OPEN_URL 3032 // send either ANSI or Unicode string (it'll figure it out, but it MUST start with "h"!, so don't send ftp:// or anything funny) - -#define IPC_REGISTER_WINAMP_IPCMESSAGE 65536 -/* (requires Winamp 5.0+) -** DWORD id = SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)name,IPC_REGISTER_WINAMP_IPCMESSAGE); -** The value 'id' returned is > 65536 and is incremented on subsequent calls for unique -** 'name' values passed to it. By using the same 'name' in different plugins will allow a -** common runtime api to be provided for the currently running instance of Winamp -** e.g. -** PostMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)my_param,registered_ipc); -** Have a look at wa_hotkeys.h for an example on how this api is used in practice for a -** custom WM_WA_IPC message. -** -** if(uMsg == WM_WA_IPC && lParam == id_from_register_winamp_ipcmessage){ -** // do things -** } -*/ - -#endif//_WA_IPC_H_ diff --git a/vendor/JavaWinampApi/1.1/cpp/wpcom.dev b/vendor/JavaWinampApi/1.1/cpp/wpcom.dev deleted file mode 100644 index 2c226a4..0000000 --- a/vendor/JavaWinampApi/1.1/cpp/wpcom.dev +++ /dev/null @@ -1,69 +0,0 @@ -[Project] -FileName=wpcom.dev -Name=wpcom -UnitCount=2 -Type=3 -Ver=1 -ObjFiles= -Includes="E:\Program Files\Java\jdk1.6.0_11\include";"E:\Program Files\Java\jdk1.6.0_11\include\win32" -Libs= -PrivateResource= -ResourceIncludes= -MakeIncludes= -Compiler=-DBUILDING_DLL=1_@@_ -CppCompiler=-DBUILDING_DLL=1_@@_ -Linker=--no-export-all-symbols --add-stdcall-alias_@@_ -IsCpp=0 -Icon= -ExeOutput=..\..\..\JavaWinampAPI -ObjectOutput= -OverrideOutput=1 -OverrideOutputName=wpcom.dll -HostApplication= -Folders= -CommandLine= -UseCustomMakefile=0 -CustomMakefile= -IncludeVersionInfo=0 -SupportXPThemes=0 -CompilerSet=0 -CompilerSettings=0000000000000000000000 - -[Unit1] -FileName=WinampController.c -CompileCpp=0 -Folder=wacon -Compile=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd=$(CC) -c WinampController.c -o WinampController.o $(CFLAGS) - -[VersionInfo] -Major=0 -Minor=1 -Release=1 -Build=1 -LanguageID=1033 -CharsetID=1252 -CompanyName= -FileVersion= -FileDescription=Developed using the Dev-C++ IDE -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion= -AutoIncBuildNr=0 - -[Unit2] -FileName=WinampController.h -CompileCpp=0 -Folder=wacon -Compile=1 -Link=1 -Priority=1000 -OverrideBuildCmd=0 -BuildCmd= - diff --git a/vendor/JavaWinampApi/1.1/cpp/wpcom.layout b/vendor/JavaWinampApi/1.1/cpp/wpcom.layout deleted file mode 100644 index fc89c00..0000000 --- a/vendor/JavaWinampApi/1.1/cpp/wpcom.layout +++ /dev/null @@ -1,17 +0,0 @@ -[Editor_0] -CursorCol=32 -CursorRow=359 -TopLine=338 -LeftChar=1 -Open=1 -Top=1 -[Editors] -Focused=0 -Order=1,0 -[Editor_1] -Open=1 -Top=0 -CursorCol=73 -CursorRow=143 -TopLine=127 -LeftChar=1 diff --git a/vendor/JavaWinampApi/1.1/java/com/qotsa/exception/InvalidHandle.java b/vendor/JavaWinampApi/1.1/java/com/qotsa/exception/InvalidHandle.java deleted file mode 100644 index 4785982..0000000 --- a/vendor/JavaWinampApi/1.1/java/com/qotsa/exception/InvalidHandle.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * InvalidHandle.java - * - * Created on 9 de Outubro de 2007, 14:18 - * - * To change this template, choose Tools | Template Manager - * and open the template in the editor. - */ - -package com.qotsa.exception; - -/** - * Exception to throw when Winamp Handle Fails. - * - * @author Francisco - */ -public class InvalidHandle extends Exception{ - - private static final String defaultMessage = "Invalid Handle. Please Verify if Winamp is running."; - - /** - * Creates a new instance of InvalidHandle - * @param message Message to print in the stack. - */ - public InvalidHandle(String message) { - - super(message); - - } - - /** - * Creates a new instance of InvalidHandle with the default message - */ - public InvalidHandle() { - - super(defaultMessage); - - } - -} diff --git a/vendor/JavaWinampApi/1.1/java/com/qotsa/exception/InvalidParameter.java b/vendor/JavaWinampApi/1.1/java/com/qotsa/exception/InvalidParameter.java deleted file mode 100644 index 3499308..0000000 --- a/vendor/JavaWinampApi/1.1/java/com/qotsa/exception/InvalidParameter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * InvalidParameter.java - * - * Created on 11 de Outubro de 2007, 10:53 - * - * To change this template, choose Tools | Template Manager - * and open the template in the editor. - */ - -package com.qotsa.exception; - -/** - * Exception to throw when any parameter is invalid. - * - * @author Francisco - */ -public class InvalidParameter extends Exception { - - private static final String defaultMessage = "Invalid Parameter"; - - /** - * Creates a new instance of NegativeValueException - * @param message Message to print in the stack. - */ - public InvalidParameter(String message) { - - super(message); - - } - - /** - * Creates a new instance of NegativeValueException with the default message - */ - public InvalidParameter() { - - super(defaultMessage); - - } - -} diff --git a/vendor/JavaWinampApi/1.1/java/com/qotsa/exception/package.html b/vendor/JavaWinampApi/1.1/java/com/qotsa/exception/package.html deleted file mode 100644 index b2aafb7..0000000 --- a/vendor/JavaWinampApi/1.1/java/com/qotsa/exception/package.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - -Package containing the Exception Class used in the WinampController Class. - - -

Package Specification

- - - - - diff --git a/vendor/JavaWinampApi/1.1/java/com/qotsa/jni/controller/JNIWinamp.java b/vendor/JavaWinampApi/1.1/java/com/qotsa/jni/controller/JNIWinamp.java deleted file mode 100644 index 8da725e..0000000 --- a/vendor/JavaWinampApi/1.1/java/com/qotsa/jni/controller/JNIWinamp.java +++ /dev/null @@ -1,227 +0,0 @@ -/* - * JNIWinamp.java - * - * Created on 23 de Abril de 2007, 20:41 - * - * To change this template, choose Tools | Template Manager - * and open the template in the editor. - */ - -package com.qotsa.jni.controller; - -import java.io.IOException; - -/** - * - * @author Francisco Guimarães - */ -final class JNIWinamp { - - static { - System.loadLibrary("wpcom"); - } - - /** - * Verify if Winamp is started - * and if not started, starts it - * @return True - if successful run Winamp - * False - if not successful run Winamp - */ - - protected static native boolean run() throws UnsatisfiedLinkError; - - /* - * Exit Winamp - * @return True - if successful exit - * False - if not successful exit - */ - protected static native boolean exit() throws UnsatisfiedLinkError; - - /** - * Play Winamp. - * - */ - protected static native boolean play() throws UnsatisfiedLinkError; - - /** - * Stop Winamp. - * - */ - protected static native boolean stop() throws UnsatisfiedLinkError; - - /** - * Resume Winamp. - * - */ - protected static native boolean resume() throws UnsatisfiedLinkError; - - /** - * Pause Winamp. - * - */ - protected static native boolean pause() throws UnsatisfiedLinkError; - - /** - * Go to Previous Track. - * - */ - protected static native boolean previousTrack() throws UnsatisfiedLinkError; - - /** - * Go to Next Track. - * - */ - protected static native boolean nextTrack() throws UnsatisfiedLinkError; - - /** - * Fowards 5 seconds on the current song. - * - */ - protected static native boolean fwd5Secs() throws UnsatisfiedLinkError; - - /** - * Rewinds 5 seconds on the current song. - * - */ - protected static native boolean rew5Secs() throws UnsatisfiedLinkError; - - /** - * Increase Volume. - * - */ - protected static native boolean increaseVolume() throws UnsatisfiedLinkError; - - /** - * Decrease Volume. - * - */ - protected static native boolean decreaseVolume() throws UnsatisfiedLinkError; - - /** - * Increase Volume. - * @param percent Percent to Increase. - */ - protected static native boolean increaseVolumePercent(int percent) throws UnsatisfiedLinkError; - - /** - * Decrease Volume. - * @param percent Percent to Decrease. - */ - protected static native boolean decreaseVolumePercent(int percent) throws UnsatisfiedLinkError; - - /** - * Adjust Volume - * @param pos Position to Set Volume between 0 and 99. - */ - protected static native boolean setVolume(int pos) throws UnsatisfiedLinkError; - - /** - * Get Volume. - * @return volume. - */ - protected static native int getVolume() throws UnsatisfiedLinkError; - - /** - * Go to a Specified Position in the List. - * @param pos Position. - */ - protected static native boolean setPlaylistPosition(int pos) throws UnsatisfiedLinkError; - - /** - * Clear List. - * - */ - protected static native boolean clearPlayList() throws UnsatisfiedLinkError; - - /** - * Refresh List´s Cache. - * - */ - protected static native boolean refreshPlayListCache() throws UnsatisfiedLinkError; - - /** - * Return the PlayListLength. - * @return List Length. - */ - protected static native int getPlayListLength() throws UnsatisfiedLinkError; - - /** - * Write a Playlist in \\Winamp.m3u. - * @return List Position. - */ - protected static native int writePlayListToFile() throws UnsatisfiedLinkError; - - /** - * Verify if Shuffle is On. - * @return True - On throws UnsatisfiedLinkError; False - Off. - */ - protected static native int isShuffleStatusOn() throws UnsatisfiedLinkError; - - /** - * Verify if Repeat is On. - * @return True - On throws UnsatisfiedLinkError; False - Off. - */ - protected static native int isRepeatStatusOn() throws UnsatisfiedLinkError; - - /** - * Turn on Repeat. - * @param True - Turn on Repeat throws UnsatisfiedLinkError; False - Turn off Repeat. - */ - protected static native boolean setRepeatStatusOn(boolean mode) throws UnsatisfiedLinkError; - - /** - * Turn on Shuffle. - * @param True - Turn on Shuffle throws UnsatisfiedLinkError; False - Turn off Shuffle. - */ - protected static native boolean setShuffleStatusOn(boolean mode) throws UnsatisfiedLinkError; - - /** - * Append a File in the List - * @param filename FileName to Append. - */ - protected static native boolean appendToPlayList(String filename) throws UnsatisfiedLinkError; - - /** - * Get Winamp Status. - * @return STOPPED - Stop - * PLAYING - play - * PAUSED - Paused - */ - protected static native int getStatus() throws UnsatisfiedLinkError; - - /** - * Get Current List Pos. - * @return Current List Position. - */ - protected static native int getListPos() throws UnsatisfiedLinkError; - - /** - * Get Current Track Title - * @return Current Track Title - */ - protected static native String getTitle() throws UnsatisfiedLinkError; - - /** - * Get Track FileName in List´s index. - * @param index Track Index in the Current PlayList - * @return Current Track FileName - */ - protected static native String getFileNameInList(int index) throws UnsatisfiedLinkError; - - /** - * Get Song Time - * @param mode CURRENTTIME - Currently Time in Milliseconds - * TIMELENGHT - Song Time Length in seconds - * @return Song Time in Seconds - */ - protected static native int getTime(int mode) throws UnsatisfiedLinkError; - - /** - * Get File Name Playing In Winamp. - * - * @return Current File Name. - */ - protected static native String getFileNamePlaying() throws UnsatisfiedLinkError; - -} - diff --git a/vendor/JavaWinampApi/1.1/java/com/qotsa/jni/controller/WinampController.java b/vendor/JavaWinampApi/1.1/java/com/qotsa/jni/controller/WinampController.java deleted file mode 100644 index 159fd9c..0000000 --- a/vendor/JavaWinampApi/1.1/java/com/qotsa/jni/controller/WinampController.java +++ /dev/null @@ -1,592 +0,0 @@ -/* - * WinampController.java - * - * Created on 9 de Outubro de 2007, 14:06 - * - * To change this template, choose Tools | Template Manager - * and open the template in the editor. - */ - -/** - * Package containing the Controller Class to communicate with Winamp. - * - * @author Francisco Guimarães - */ -package com.qotsa.jni.controller; - -import com.qotsa.exception.InvalidHandle; -import com.qotsa.exception.InvalidParameter; -import java.io.File; - -/** - * This class is a wrapper to call JNI functions - * to send Message to Winamp Window. - * - * @author Francisco Guimarães - * - * - */ -public class WinampController { - - /** - * Constant used as return in getTime() - * Value = -1 - */ - public static final int ISNOTPLAYING = -1; - - /** - * Constant used as parameter in getTime() method - * Value = 0 - */ - public static final int CURRENTTIME = 0; - - /** - * Constant used as parameter in getTime() method - * Value = 1 - */ - public static final int TIMELENGTH = 1; - - /** - * Constant used as return in getStatus() method - * Value = 0 - */ - public static final int STOPPED = 0; - - /** - * Constant used as return in getStatus() method - * Value = 1 - */ - public static final int PLAYING = 1; - - /** - * Constant used as return in getStatus() method - * Value = 3 - */ - public static final int PAUSED = 3; - - - /** - * Verify if Winamp is started - * and if not started, starts it. - * - * @throws java.lang.Exception When the key HKEY_LOCAL_MACHINE\Software\Clients\Media\Winamp\shell\open\command - * is not found in the register. This key is used to find Winamp Directory installation to execute it. - */ - - public static void run() throws Exception{ - - if (!JNIWinamp.run()) - throw new Exception("Unable to run Winamp. Verify if it is properly installed"); - - } - - /** - * Exit Winamp. - * - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static void exit() throws InvalidHandle { - - if (!JNIWinamp.exit()) - throw new InvalidHandle(); - - - } - - /** - * Play current file in Winamp. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static void play() throws InvalidHandle { - - if (!JNIWinamp.play()) - throw new InvalidHandle(); - - } - - /** - * Stop current file in Winamp. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static void stop() throws InvalidHandle { - - if (!JNIWinamp.stop()) - throw new InvalidHandle(); - - } - - /** - * Resume current file in Winamp. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static void resume() throws InvalidHandle { - - if (!JNIWinamp.resume()) - throw new InvalidHandle(); - - } - - /** - * Pause Winamp. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static void pause() throws InvalidHandle { - - if (!JNIWinamp.pause()) - throw new InvalidHandle(); - - } - - /** - * - * Go to Previous Track in the play list. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static void previousTrack() throws InvalidHandle { - - if (!JNIWinamp.previousTrack()) - throw new InvalidHandle(); - - } - - /** - * Go to Next Track in the play list. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static void nextTrack() throws InvalidHandle { - - if (!JNIWinamp.nextTrack()) - throw new InvalidHandle(); - - } - - /** - * Fowards 5 seconds on the current song. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static void fwd5Secs() throws InvalidHandle { - - if (!JNIWinamp.fwd5Secs()) - throw new InvalidHandle(); - - } - - /** - * Rewinds 5 seconds on the current song. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static void rew5Secs() throws InvalidHandle { - - if (!JNIWinamp.rew5Secs()) - throw new InvalidHandle(); - - } - - /** - * Increase Volume a little bit. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static void increaseVolume() throws InvalidHandle { - - if (!JNIWinamp.increaseVolume()) - throw new InvalidHandle(); - - } - - /** - * Decrease Volume a little bit. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static void decreaseVolume() throws InvalidHandle { - - if (!JNIWinamp.decreaseVolume()) - throw new InvalidHandle(); - - } - - /** - * Increase Volume. - * - * @param percent Percent to Increase Volume. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - * @throws com.qotsa.exception.InvalidParameter If percent not between 0 and 100 - */ - public static void increaseVolumePercent (int percent) throws InvalidHandle, InvalidParameter { - - if ( (percent < 0) || (percent > 100) ) - throw new InvalidParameter("percent´s value must be between 0 and 100"); - - if (!JNIWinamp.increaseVolumePercent(percent)) - throw new InvalidHandle(); - - } - - /** - * Decrease Volume. - * - * @param percent Percent to Decrease Volume. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - * @throws com.qotsa.exception.InvalidParameter If percent not between 0 and 100 - */ - public static void decreaseVolumePercent(int percent) throws InvalidHandle, InvalidParameter { - - if ( (percent < 0) || (percent > 100) ) - throw new InvalidParameter("percent´s value must be between 0 and 100"); - if (!JNIWinamp.decreaseVolumePercent(percent)) - throw new InvalidHandle(); - - } - - /** - * Adjust Volume. - * Note that the pos must be between 0(0%) and 255 (100%). - * - * @param pos Position to Set Volume. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - * @throws com.qotsa.exception.InvalidParameter If pos not between 0 and 255 - */ - public static void setVolume(int pos) throws InvalidHandle, InvalidParameter { - - if ( (pos < 0) || (pos > 255) ) - throw new InvalidParameter("pos value must be between 0 and 255"); - if (!JNIWinamp.setVolume(pos)) - throw new InvalidHandle(); - - } - - /** - * Get Volume. - * @return The volume which is a number between 0 (0%) and 255(100%) - * @throws com.qotsa.exception.InvalidHandle - */ - public static int getVolume() throws InvalidHandle { - int volume = JNIWinamp.getVolume(); - if (volume == -1) - throw new InvalidHandle(); - return volume; - } - - /** - * Get Volume Percent. - * @return Volume percent. - * @throws com.qotsa.exception.InvalidHandle - */ - public static int getVolumePercent() throws InvalidHandle { - - int volume = getVolume(); - int percent = (volume * 100) / 255; - return percent; - } - - /** - * Restarts Winamp. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - * @throws java.lang.Exception When failed to restart Winamp. - */ - public static void restart() throws InvalidHandle, Exception { - - exit(); - run(); - - } - - /** - * Go to a Specified Position in the List. This method doesn´t play. - * Just set list position. If you wanna play call play() after set position. - * Parameter pos is Zero-based index. - * @param pos Position. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - * @throws com.qotsa.exception.InvalidParameter If pos is negative or greater than List Length. - */ - public static void setPlaylistPosition(int pos) throws InvalidHandle, InvalidParameter { - - int listLength = getPlayListLength(); - if ( (pos < 0) || ( (pos + 1) > listLength) ) - throw new InvalidParameter("Position is invalid in the list."); - if (!JNIWinamp.setPlaylistPosition(pos)) - throw new InvalidHandle(); - - } - - /** - * Clear Winamp's internal playlist. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static void clearPlayList() throws InvalidHandle { - - if (!JNIWinamp.clearPlayList()) - throw new InvalidHandle(); - - } - - /** - * Flush the playlist cache buffer. - * Call this if you want it to go refetch titles for tracks in the list. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static void refreshPlayListCache() throws InvalidHandle{ - - if (!JNIWinamp.refreshPlayListCache()) - throw new InvalidHandle(); - - } - - /** - * Return the PlayListLength. - * - * @return List Length. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static int getPlayListLength() throws InvalidHandle { - - int length = JNIWinamp.getPlayListLength(); - if (length == -1) - throw new InvalidHandle(); - return length; - - } - - /** - * Write a Playlist in winampDirInstallation\\Winamp.m3u. - * This is default Winamp IPC Default. If you wanna change this, - * just rename the file you´ve created. - * - * @return Current List Position. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static int writePlayListToFile() throws InvalidHandle { - - int playListPos = JNIWinamp.writePlayListToFile(); - if (playListPos == -1) - throw new InvalidHandle(); - return playListPos; - - } - - /** - * Verify if Shuffle is On. - * - * @return True - On ; False - Off. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static boolean isShuffleStatusOn() throws InvalidHandle { - - int status = JNIWinamp.isShuffleStatusOn(); - if (status == -1) - throw new InvalidHandle(); - return (status == 1 ? true : false); - - } - - /** - * Verify if Repeat is On. - * - * @return True - On ; False - Off. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static boolean isRepeatStatusOn() throws InvalidHandle { - - int status = JNIWinamp.isRepeatStatusOn(); - if (status == -1) - throw new InvalidHandle(); - return (status == 1 ? true : false); - - } - - /** - * Turn on Repeat. - * - * @param mode True - Turn on Repeat ; False - Turn off Repeat. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static void setRepeatStatusOn(boolean mode) throws InvalidHandle { - - if (!JNIWinamp.setRepeatStatusOn(mode)) - throw new InvalidHandle(); - - } - - /** - * Turn on Shuffle. - * - * @param mode True - Turn on Shuffle ; False - Turn off Shuffle. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static void setShuffleStatusOn(boolean mode) throws InvalidHandle { - - if (!JNIWinamp.setShuffleStatusOn(mode)) - throw new InvalidHandle(); - - } - - /** - * Append a File into the List. - * - * @param filename FileName to Append in the list. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - * @throws com.qotsa.exception.InvalidParameter If the filename is an invalid path. - */ - public static void appendToPlayList(String filename) throws InvalidHandle, InvalidParameter { - - File file = new File(filename); - if (!file.exists()) - throw new InvalidParameter("File doesn´t exists."); - if (!JNIWinamp.appendToPlayList(filename)) - throw new InvalidHandle(); - - } - - /** - * Get Winamp Status. - * - * @return STOPPED - Stop - * PLAYING - play - * PAUSED - Paused - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static int getStatus() throws InvalidHandle { - - int status = JNIWinamp.getStatus(); - if (status == -1) - throw new InvalidHandle(); - return status; - - } - - /** - * Get Current List Pos. - * - * @return Current List Position. - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static int getListPos() throws InvalidHandle { - - int pos = JNIWinamp.getListPos(); - if (pos == -1) - throw new InvalidHandle(); - return pos; - - } - - /** - * Get Current Track Title. - * - * @return Current Track Title - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - */ - public static String getTitle() throws InvalidHandle { - - String title = JNIWinamp.getTitle(); - if (title == null) - throw new InvalidHandle(); - return title; - - } - - /** - * Get Current Track FileName. - * Parameter pos is Zero-based index. - * - * @return Current Track FileName - * @param pos Track Position in the Current PlayList - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - * @throws com.qotsa.exception.InvalidParameter If pos is negative or greater than List Length - */ - public static String getFileNameInList(int pos) throws InvalidHandle, InvalidParameter { - - int listLength = getPlayListLength(); - if ( (pos < 0) || (pos > listLength) ) - throw new InvalidParameter("Position is invalid in the list."); - String filename = JNIWinamp.getFileNameInList(pos); - if (filename == null) - throw new InvalidHandle(); - return filename; - - } - - /** - * Get Song Time. - * - * @return Time Song (depends on Param mode) or - * ISNOTPLAYING if there is no info about time because it not starts to play. - * @param mode CURRENTTIME - Currently Time in Milliseconds - * TIMELENGHT - Song Time Length in seconds - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - * @throws com.qotsa.exception.InvalidParameter if parameter is not CURRENTTIME or TIMELENGTH. - */ - public static int getTime(int mode) throws InvalidHandle, InvalidParameter { - - if (mode != CURRENTTIME && mode != TIMELENGTH) - throw new InvalidParameter(); - int time = JNIWinamp.getTime(mode); - if (time == -2) - throw new InvalidHandle(); - return time; - - } - - /** - * Fowards n Tracks in Play List. - * - * @param n Number of Tracks to Foward - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - * @throws com.qotsa.exception.InvalidParameter if n is negative or Zero. - */ - public static void fwdTracks(int n) throws InvalidParameter, InvalidHandle { - - if (n <= 0) - throw new InvalidParameter("Value must be Positive"); - int pos = getListPos(); - int lengthList = getPlayListLength(); - int newPos = pos + n; - if (newPos > lengthList ) { - setPlaylistPosition(lengthList); - play(); - } - else { - setPlaylistPosition(newPos); - play(); - } - - } - - /** - * Rewinds n Tracks in Play List. - * - * @param n Number of Tracks to Rewind - * @throws com.qotsa.exception.InvalidHandle When the Winamp Windows is not handle(in most case, it means that winamp is not running) - * @throws com.qotsa.exception.InvalidParameter if n is negative or Zero. - */ - public static void rewTracks(int n) throws InvalidParameter, InvalidHandle { - - if (n <= 0) - throw new InvalidParameter("Value must be Positive"); - int pos = getListPos(); - int lengthList = getPlayListLength(); - int newPos = pos - n; - if (newPos < 0 ) { - setPlaylistPosition(0); - play(); - } - else { - setPlaylistPosition(newPos); - play(); - } - - } - - /** - * Get File Name Playing In Winamp. - * - * @return Current File Name. - */ - public static String getFileNamePlaying() throws InvalidHandle { - - String fileName = JNIWinamp.getFileNamePlaying(); - if (fileName == null) - throw new InvalidHandle(); - return fileName; - - } - -} diff --git a/vendor/JavaWinampApi/1.1/java/com/qotsa/jni/controller/package.html b/vendor/JavaWinampApi/1.1/java/com/qotsa/jni/controller/package.html deleted file mode 100644 index c78cf04..0000000 --- a/vendor/JavaWinampApi/1.1/java/com/qotsa/jni/controller/package.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - -Package containing the Controller Class to communicate with Winamp. - - -

Package Specification

- - - - - diff --git a/vendor/jacob/1.15-M4/java/com/jacob/activeX/ActiveXComponent.java b/vendor/jacob/1.15-M4/java/com/jacob/activeX/ActiveXComponent.java deleted file mode 100644 index 4d0096b..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/activeX/ActiveXComponent.java +++ /dev/null @@ -1,479 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.activeX; - -import com.jacob.com.Dispatch; -import com.jacob.com.JacobObject; -import com.jacob.com.Variant; - -/** - * This class provides a higher level, more object like, wrapper for top of the - * Dispatch object. The Dispatch class's method essentially directly map to - * Microsoft C API including the first parameter that is almost always the - * target of the message. ActiveXComponent assumes the target of every message - * is the MS COM object behind the ActiveXComponent. This removes the need to - * pass the Dispatch object into every method. - *

- * It is really up to the developer as to whether they want to use the Dispatch - * interface or the ActiveXComponent interface. - *

- * This class simulates com.ms.activeX.ActiveXComponent only in the sense that - * it is used for creating Dispatch objects - */ -public class ActiveXComponent extends Dispatch { - - /** - * Normally used to create a new connection to a microsoft application. The - * passed in parameter is the name of the program as registered in the - * registry. It can also be the object name. - *

- * This constructor causes a new Windows object of the requested type to be - * created. The windows CoCreate() function gets called to create the - * underlying windows object. - * - *

-	 * new ActiveXComponent("ScriptControl");
-	 * 
- * - * @param programId - */ - public ActiveXComponent(String programId) { - super(programId); - } - - /** - * Creates an active X component that is built on top of the COM pointers - * held in the passed in dispatch. This widens the Dispatch object to pick - * up the ActiveXComponent API - * - * @param dispatchToBeWrapped - */ - public ActiveXComponent(Dispatch dispatchToBeWrapped) { - super(dispatchToBeWrapped); - } - - /** - * only used by the factories - * - */ - private ActiveXComponent() { - super(); - } - - /** - * Probably was a cover for something else in the past. Should be - * deprecated. - * - * @return Now it actually returns this exact same object. - */ - public Dispatch getObject() { - return this; - } - - /** - * Most code should use the standard ActiveXComponent(String) contructor and - * not this factory method. This method exists for applications that need - * special behavior. Experimental in release 1.9.2. - *

- * Factory that returns a Dispatch object wrapped around the result of a - * CoCreate() call. This differs from the standard constructor in that it - * throws no exceptions and returns null on failure. - *

- * This will fail for any prog id with a ":" in it. - * - * @param pRequestedProgramId - * @return Dispatch pointer to the COM object or null if couldn't create - */ - public static ActiveXComponent createNewInstance(String pRequestedProgramId) { - ActiveXComponent mCreatedDispatch = null; - try { - mCreatedDispatch = new ActiveXComponent(); - mCreatedDispatch.coCreateInstance(pRequestedProgramId); - } catch (Exception e) { - mCreatedDispatch = null; - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("Unable to co-create instance of " - + pRequestedProgramId); - } - } - return mCreatedDispatch; - } - - /** - * Most code should use the standard ActiveXComponent(String) constructor - * and not this factory method. This method exists for applications that - * need special behavior. Experimental in release 1.9.2. - *

- * Factory that returns a Dispatch wrapped around the result of a - * getActiveObject() call. This differs from the standard constructor in - * that it throws no exceptions and returns null on failure. - *

- * This will fail for any prog id with a ":" in it - * - * @param pRequestedProgramId - * @return Dispatch pointer to a COM object or null if wasn't already - * running - */ - public static ActiveXComponent connectToActiveInstance( - String pRequestedProgramId) { - ActiveXComponent mCreatedDispatch = null; - try { - mCreatedDispatch = new ActiveXComponent(); - mCreatedDispatch.getActiveInstance(pRequestedProgramId); - } catch (Exception e) { - mCreatedDispatch = null; - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("Unable to attach to running instance of " - + pRequestedProgramId); - } - } - return mCreatedDispatch; - } - - /** - * @see com.jacob.com.Dispatch#finalize() - */ - @Override - protected void finalize() { - super.finalize(); - } - - /* - * ============================================================ - * - * start of instance based calls to the COM layer - * =========================================================== - */ - - /** - * retrieves a property and returns it as a Variant - * - * @param propertyName - * @return variant value of property - */ - public Variant getProperty(String propertyName) { - return Dispatch.get(this, propertyName); - } - - /** - * retrieves a property and returns it as an ActiveX component - * - * @param propertyName - * @return Dispatch representing the object under the property name - */ - public ActiveXComponent getPropertyAsComponent(String propertyName) { - return new ActiveXComponent(Dispatch.get(this, propertyName) - .toDispatch()); - - } - - /** - * retrieves a property and returns it as a Boolean - * - * @param propertyName - * property we are looking up - * @return boolean value of property - */ - public boolean getPropertyAsBoolean(String propertyName) { - return Dispatch.get(this, propertyName).getBoolean(); - } - - /** - * retrieves a property and returns it as a byte - * - * @param propertyName - * property we are looking up - * @return byte value of property - */ - public byte getPropertyAsByte(String propertyName) { - return Dispatch.get(this, propertyName).getByte(); - } - - /** - * retrieves a property and returns it as a String - * - * @param propertyName - * @return String value of property - */ - public String getPropertyAsString(String propertyName) { - return Dispatch.get(this, propertyName).getString(); - - } - - /** - * retrieves a property and returns it as a int - * - * @param propertyName - * @return the property value as an int - */ - public int getPropertyAsInt(String propertyName) { - return Dispatch.get(this, propertyName).getInt(); - } - - /** - * sets a property on this object - * - * @param propertyName - * property name - * @param arg - * variant value to be set - */ - public void setProperty(String propertyName, Variant arg) { - Dispatch.put(this, propertyName, arg); - } - - /** - * sets a property on this object - * - * @param propertyName - * property name - * @param arg - * variant value to be set - */ - public void setProperty(String propertyName, Dispatch arg) { - Dispatch.put(this, propertyName, arg); - } - - /** - * sets a property to be the value of the string - * - * @param propertyName - * @param propertyValue - */ - public void setProperty(String propertyName, String propertyValue) { - this.setProperty(propertyName, new Variant(propertyValue)); - } - - /** - * sets a property as a boolean value - * - * @param propertyName - * @param propValue - * the boolean value we want the prop set to - */ - public void setProperty(String propertyName, boolean propValue) { - this.setProperty(propertyName, new Variant(propValue)); - } - - /** - * sets a property as a boolean value - * - * @param propertyName - * @param propValue - * the boolean value we want the prop set to - */ - public void setProperty(String propertyName, byte propValue) { - this.setProperty(propertyName, new Variant(propValue)); - } - - /** - * sets the property as an int value - * - * @param propertyName - * @param propValue - * the int value we want the prop to be set to. - */ - public void setProperty(String propertyName, int propValue) { - this.setProperty(propertyName, new Variant(propValue)); - } - - /*------------------------------------------------------- - * Listener logging helpers - *------------------------------------------------------- - */ - - /** - * This boolean determines if callback events should be logged - */ - public static boolean shouldLogEvents = false; - - /** - * used by the doc and application listeners to get intelligent logging - * - * @param description - * event description - * @param args - * args passed in (variants) - * - */ - public void logCallbackEvent(String description, Variant[] args) { - String argString = ""; - if (args != null && ActiveXComponent.shouldLogEvents) { - if (args.length > 0) { - argString += " args: "; - } - for (int i = 0; i < args.length; i++) { - short argType = args[i].getvt(); - argString += ",[" + i + "]"; - // break out the byref bits if they are on this - if ((argType & Variant.VariantByref) == Variant.VariantByref) { - // show the type and the fact that its byref - argString += "(" - + (args[i].getvt() & ~Variant.VariantByref) + "/" - + Variant.VariantByref + ")"; - } else { - // show the type - argString += "(" + argType + ")"; - } - argString += "="; - if (argType == Variant.VariantDispatch) { - Dispatch foo = (args[i].getDispatch()); - argString += foo; - } else if ((argType & Variant.VariantBoolean) == Variant.VariantBoolean) { - // do the boolean thing - if ((argType & Variant.VariantByref) == Variant.VariantByref) { - // boolean by ref - argString += args[i].getBooleanRef(); - } else { - // boolean by value - argString += args[i].getBoolean(); - } - } else if ((argType & Variant.VariantString) == Variant.VariantString) { - // do the string thing - if ((argType & Variant.VariantByref) == Variant.VariantByref) { - // string by ref - argString += args[i].getStringRef(); - } else { - // string by value - argString += args[i].getString(); - } - } else { - argString += args[i].toString(); - } - } - System.out.println(description + argString); - } - } - - /* - * ============================================================== - * - * covers for dispatch call methods - * ============================================================= - */ - - /** - * makes a dispatch call for the passed in action and no parameter - * - * @param callAction - * @return ActiveXComponent representing the results of the call - */ - public ActiveXComponent invokeGetComponent(String callAction) { - return new ActiveXComponent(invoke(callAction).toDispatch()); - } - - /** - * makes a dispatch call for the passed in action and single parameter - * - * @param callAction - * @param parameters - * @return ActiveXComponent representing the results of the call - */ - public ActiveXComponent invokeGetComponent(String callAction, - Variant... parameters) { - return new ActiveXComponent(invoke(callAction, parameters).toDispatch()); - } - - /** - * invokes a single parameter call on this dispatch that returns no value - * - * @param actionCommand - * @param parameter - * @return a Variant but that may be null for some calls - */ - public Variant invoke(String actionCommand, String parameter) { - return Dispatch.call(this, actionCommand, parameter); - } - - /** - * makes a dispatch call to the passed in action with a single boolean - * parameter - * - * @param actionCommand - * @param parameter - * @return Variant result - */ - public Variant invoke(String actionCommand, boolean parameter) { - return Dispatch.call(this, actionCommand, new Variant(parameter)); - } - - /** - * makes a dispatch call to the passed in action with a single int parameter - * - * @param actionCommand - * @param parameter - * @return Variant result of the invoke (Dispatch.call) - */ - public Variant invoke(String actionCommand, int parameter) { - return Dispatch.call(this, actionCommand, new Variant(parameter)); - } - - /** - * makes a dispatch call to the passed in action with a string and integer - * parameter (this was put in for some application) - * - * @param actionCommand - * @param parameter1 - * @param parameter2 - * @return Variant result - */ - public Variant invoke(String actionCommand, String parameter1, - int parameter2) { - return Dispatch.call(this, actionCommand, parameter1, new Variant( - parameter2)); - } - - /** - * makes a dispatch call to the passed in action with two integer parameters - * (this was put in for some application) - * - * @param actionCommand - * @param parameter1 - * @param parameter2 - * @return a Variant but that may be null for some calls - */ - public Variant invoke(String actionCommand, int parameter1, int parameter2) { - return Dispatch.call(this, actionCommand, new Variant(parameter1), - new Variant(parameter2)); - } - - /** - * makes a dispatch call for the passed in action and no parameter - * - * @param callAction - * @return a Variant but that may be null for some calls - */ - public Variant invoke(String callAction) { - return Dispatch.call(this, callAction); - } - - /** - * This is really a cover for call(String,Variant[]) that should be - * eliminated call with a variable number of args mainly used for quit. - * - * @param name - * @param args - * @return Variant returned by the invoke (Dispatch.callN) - */ - public Variant invoke(String name, Variant... args) { - return Dispatch.callN(this, name, args); - } - -} \ No newline at end of file diff --git a/vendor/jacob/1.15-M4/java/com/jacob/activeX/ActiveXDispatchEvents.java b/vendor/jacob/1.15-M4/java/com/jacob/activeX/ActiveXDispatchEvents.java deleted file mode 100644 index 16bb649..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/activeX/ActiveXDispatchEvents.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.activeX; - -import com.jacob.com.Dispatch; -import com.jacob.com.DispatchEvents; -import com.jacob.com.InvocationProxy; - -/** - * RELEASE 1.12 EXPERIMENTAL. - *

- * Use this exactly like the DispatchEvents class. This class plugs in an - * ActiveXInvocationProxy instead of an InvocationProxy. It is the - * ActiveXInvocationProxy that implements the reflection calls and invoke the - * found java event callbacks. See ActiveXInvocationProxy for details. - * - * - */ -public class ActiveXDispatchEvents extends DispatchEvents { - - /** - * This is the most commonly used constructor. - *

- * Creates the event callback linkage between the the MS program represented - * by the Dispatch object and the Java object that will receive the - * callback. - * - * @param sourceOfEvent - * Dispatch object who's MS app will generate callbacks - * @param eventSink - * Java object that wants to receive the events - */ - public ActiveXDispatchEvents(Dispatch sourceOfEvent, Object eventSink) { - super(sourceOfEvent, eventSink, null); - } - - /** - * None of the samples use this constructor. - *

- * Creates the event callback linkage between the the MS program represented - * by the Dispatch object and the Java object that will receive the - * callback. - * - * @param sourceOfEvent - * Dispatch object who's MS app will generate callbacks - * @param eventSink - * Java object that wants to receive the events - * @param progId - * ??? - */ - public ActiveXDispatchEvents(Dispatch sourceOfEvent, Object eventSink, - String progId) { - super(sourceOfEvent, eventSink, progId, null); - } - - /** - * Creates the event callback linkage between the the MS program represented - * by the Dispatch object and the Java object that will receive the - * callback. - * - *

-	 * >ActiveXDispatchEvents de = 
-	 * 			new ActiveXDispatchEvents(someDispatch,someEventHAndler,
-	 * 				"Excel.Application",
-	 * 				"C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE");
-	 * 
-	 * @param sourceOfEvent Dispatch object who's MS app will generate callbacks
-	 * @param eventSink Java object that wants to receive the events
-	 * @param progId , mandatory if the typelib is specified
-	 * @param typeLib The location of the typelib to use
-	 * 
-	 */
-	public ActiveXDispatchEvents(Dispatch sourceOfEvent, Object eventSink,
-			String progId, String typeLib) {
-		super(sourceOfEvent, eventSink, progId, typeLib);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see com.jacob.com.DispatchEvents#getInvocationProxy(java.lang.Object)
-	 */
-	protected InvocationProxy getInvocationProxy(Object pTargetObject) {
-		InvocationProxy newProxy = new ActiveXInvocationProxy();
-		newProxy.setTarget(pTargetObject);
-		return newProxy;
-	}
-
-}
diff --git a/vendor/jacob/1.15-M4/java/com/jacob/activeX/ActiveXInvocationProxy.java b/vendor/jacob/1.15-M4/java/com/jacob/activeX/ActiveXInvocationProxy.java
deleted file mode 100644
index 94c4f31..0000000
--- a/vendor/jacob/1.15-M4/java/com/jacob/activeX/ActiveXInvocationProxy.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright (c) 1999-2004 Sourceforge JACOB Project.
- * All rights reserved. Originator: Dan Adler (http://danadler.com).
- * Get more information about JACOB at http://sourceforge.net/projects/jacob-project
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- */
-package com.jacob.activeX;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import com.jacob.com.InvocationProxy;
-import com.jacob.com.NotImplementedException;
-import com.jacob.com.Variant;
-
-/**
- * RELEASE 1.12 EXPERIMENTAL.
- * 

- * This class that lets event handlers receive events with all java objects as - * parameters. The standard Jacob event methods all accept an array of Variant - * objects. When using this class, you can set up your event methods as regular - * java methods with the correct number of parameters of the correct java type. - * This does NOT work for any event that wishes to accept a call back and modify - * the calling parameters to tell windows what to do. An example is when an - * event lets the receiver cancel the action by setting a boolean flag to false. - * The java objects cannot be modified and their values will not be passed back - * into the originating Variants even if they could be modified. - *

- * This class acts as a proxy between the windows event callback mechanism and - * the Java classes that are looking for events. It assumes that all of the Java - * classes that are looking for events implement methods with the same names as - * the windows events and that the implemented methods native java objects of - * the type and order that match the windows documentation. The methods can - * return void or a Variant that will be returned to the calling layer. All - * Event methods that will be recognized by InvocationProxyAllEvents have the - * signature - * - * void eventMethodName(Object,Object...) or - * Object eventMethodName(Object,Object...) - */ -public class ActiveXInvocationProxy extends InvocationProxy { - - /* - * (non-Javadoc) - * - * @see com.jacob.com.InvocationProxy#invoke(java.lang.String, - * com.jacob.com.Variant[]) - */ - @SuppressWarnings("unchecked") - public Variant invoke(String methodName, Variant targetParameters[]) { - Variant mVariantToBeReturned = null; - if (mTargetObject == null) { - // structured programming guidlines say this return should not be up - // here - return null; - } - Class targetClass = mTargetObject.getClass(); - if (methodName == null) { - throw new IllegalArgumentException( - "InvocationProxy: missing method name"); - } - if (targetParameters == null) { - throw new IllegalArgumentException( - "InvocationProxy: missing Variant parameters"); - } - try { - Method targetMethod; - Object parametersAsJavaObjects[] = getParametersAsJavaObjects(targetParameters); - Class parametersAsJavaClasses[] = getParametersAsJavaClasses(parametersAsJavaObjects); - targetMethod = targetClass.getMethod(methodName, - parametersAsJavaClasses); - if (targetMethod != null) { - // protected classes can't be invoked against even if they - // let you grab the method. you could do - // targetMethod.setAccessible(true); - // but that should be stopped by the security manager - Object mReturnedByInvocation = null; - mReturnedByInvocation = targetMethod.invoke(mTargetObject, - parametersAsJavaObjects); - if (mReturnedByInvocation == null) { - mVariantToBeReturned = null; - } else if (!(mReturnedByInvocation instanceof Variant)) { - mVariantToBeReturned = new Variant(mReturnedByInvocation); - } else { - mVariantToBeReturned = (Variant) mReturnedByInvocation; - } - } - } catch (SecurityException e) { - // what causes this exception? - e.printStackTrace(); - } catch (NoSuchMethodException e) { - // this happens whenever the listener doesn't implement all the - // methods - } catch (IllegalArgumentException e) { - // we can throw these inside the catch block so need to re-throw it - Exception oneWeShouldToss = new IllegalArgumentException( - "Unable to map parameters for method " + methodName + ": " - + e.toString()); - oneWeShouldToss.printStackTrace(); - } catch (IllegalAccessException e) { - // can't access the method on the target instance for some reason - e.printStackTrace(); - } catch (InvocationTargetException e) { - // invocation of target method failed - e.printStackTrace(); - } - return mVariantToBeReturned; - - } - - /** - * creates a method signature compatible array of classes from an array of - * parameters - * - * @param parametersAsJavaObjects - * @return - */ - @SuppressWarnings("unchecked") - private Class[] getParametersAsJavaClasses(Object[] parametersAsJavaObjects) { - if (parametersAsJavaObjects == null) { - throw new IllegalArgumentException( - "This only works with an array of parameters"); - } - int numParameters = parametersAsJavaObjects.length; - Class parametersAsJavaClasses[] = new Class[numParameters]; - for (int parameterIndex = 0; parameterIndex < numParameters; parameterIndex++) { - Object oneParameterObject = parametersAsJavaObjects[parameterIndex]; - if (oneParameterObject == null) { - parametersAsJavaClasses[parameterIndex] = null; - } else { - Class oneParameterClass = oneParameterObject.getClass(); - parametersAsJavaClasses[parameterIndex] = oneParameterClass; - } - } - return parametersAsJavaClasses; - } - - /** - * converts an array of Variants to their associated Java types - * - * @param targetParameters - * @return - */ - private Object[] getParametersAsJavaObjects(Variant[] targetParameters) { - if (targetParameters == null) { - throw new IllegalArgumentException( - "This only works with an array of parameters"); - } - int numParameters = targetParameters.length; - Object parametersAsJavaObjects[] = new Object[numParameters]; - for (int parameterIndex = 0; parameterIndex < numParameters; parameterIndex++) { - Variant oneParameterObject = targetParameters[parameterIndex]; - if (oneParameterObject == null) { - parametersAsJavaObjects[parameterIndex] = null; - } else { - try { - parametersAsJavaObjects[parameterIndex] = oneParameterObject - .toJavaObject(); - } catch (NotImplementedException nie) { - throw new IllegalArgumentException( - "Can't convert parameter " + parameterIndex - + " type " + oneParameterObject.getvt() - + " to java object: " + nie.getMessage()); - } - } - } - return parametersAsJavaObjects; - } - -} diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/ComException.java b/vendor/jacob/1.15-M4/java/com/jacob/com/ComException.java deleted file mode 100644 index 8632577..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/ComException.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -/** - * Standard exception thrown by com jni code when there is a problem - */ -public abstract class ComException extends JacobException { - - /** - * COM code initializes this filed with an appropriate return code that was - * returned by the underlying com code - */ - protected int hr; - /** - * No documentation is available at this time. Someone should document this - * field - */ - protected int m_helpContext; - /** - * No documentation is available at this time. Someone should document this - * field - */ - protected String m_helpFile; - /** - * No documentation is available at this time. Someone should document this - * field - */ - protected String m_source; - - /** - * constructor - * - */ - public ComException() { - super(); - } - - /** - * constructor with error code? - * - * @param newHr ?? - */ - public ComException(int newHr) { - super(); - this.hr = newHr; - } - - /** - * @param newHr - * @param description - */ - public ComException(int newHr, String description) { - super(description); - this.hr = newHr; - } - - /** - * @param newHr - * @param source - * @param helpFile - * @param helpContext - */ - public ComException(int newHr, String source, String helpFile, - int helpContext) { - super(); - this.hr = newHr; - m_source = source; - m_helpFile = helpFile; - m_helpContext = helpContext; - } - - /** - * @param newHr - * @param description - * @param source - * @param helpFile - * @param helpContext - */ - public ComException(int newHr, String description, String source, - String helpFile, int helpContext) { - super(description); - this.hr = newHr; - m_source = source; - m_helpFile = helpFile; - m_helpContext = helpContext; - } - - /** - * @param description - */ - public ComException(String description) { - super(description); - } - - /** - * @return int representation of the help context - */ - // Methods - public int getHelpContext() { - return m_helpContext; - } - - /** - * @return String ??? help file - */ - public String getHelpFile() { - return m_helpFile; - } - - /** - * @return int hr result ?? - */ - public int getHResult() { - return hr; - } - - /** - * @return String source ?? - */ - public String getSource() { - return m_source; - } -} \ No newline at end of file diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/ComFailException.java b/vendor/jacob/1.15-M4/java/com/jacob/com/ComFailException.java deleted file mode 100644 index 20ce1a8..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/ComFailException.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -/** - * COM Fail Exception class raised when there is a problem - */ -public class ComFailException extends ComException { - /** - * eclipse generated to get rid of a wanring - */ - private static final long serialVersionUID = -266047261992987700L; - - /** - * Constructor - * - * @param hrNew - */ - public ComFailException(int hrNew) { - super(hrNew); - } - - /** - * Constructor - * - * @param hrNew - * @param message - */ - public ComFailException(int hrNew, String message) { - super(hrNew, message); - } - - /** - * @param hrNew - * @param source - * @param helpFile - * @param helpContext - */ - public ComFailException(int hrNew, String source, String helpFile, - int helpContext) { - super(hrNew, source, helpFile, helpContext); - } - - /** - * Constructor - * - * @param hrNew - * @param description - * @param source - * @param helpFile - * @param helpContext - */ - public ComFailException(int hrNew, String description, String source, - String helpFile, int helpContext) { - super(hrNew, description, source, helpFile, helpContext); - } - - /** - * No argument Constructor - */ - public ComFailException() { - super(); - } - - /** - * @param message - */ - public ComFailException(String message) { - super(message); - } -} \ No newline at end of file diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/ComThread.java b/vendor/jacob/1.15-M4/java/com/jacob/com/ComThread.java deleted file mode 100644 index aeee598..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/ComThread.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -/** - * Represents a COM level thread This is an abstract class because all the - * methods are static and no instances are ever created. - */ -public abstract class ComThread { - private static final int MTA = 0x0; - - private static final int STA = 0x2; - - /** - * Comment for haveSTA - */ - public static boolean haveSTA = false; - - /** - * Comment for mainSTA - */ - public static MainSTA mainSTA = null; - - /** - * Initialize the current java thread to be part of the Multi-threaded COM - * Apartment - */ - public static synchronized void InitMTA() { - InitMTA(false); - } - - /** - * Initialize the current java thread to be an STA - */ - public static synchronized void InitSTA() { - InitSTA(false); - } - - /** - * Initialize the current java thread to be part of the Multi-threaded COM - * Apartment, if createMainSTA is true, create a separate MainSTA thread - * that will house all Apartment Threaded components - * - * @param createMainSTA - */ - public static synchronized void InitMTA(boolean createMainSTA) { - Init(createMainSTA, MTA); - } - - /** - * Initialize the current java thread to be an STA COM Apartment, if - * createMainSTA is true, create a separate MainSTA thread that will house - * all Apartment Threaded components - * - * @param createMainSTA - */ - public static synchronized void InitSTA(boolean createMainSTA) { - Init(createMainSTA, STA); - } - - /** - * - */ - public static synchronized void startMainSTA() { - mainSTA = new MainSTA(); - haveSTA = true; - } - - /** - * - */ - public static synchronized void quitMainSTA() { - if (mainSTA != null) - mainSTA.quit(); - } - - /** - * Initialize the current java thread to be part of the MTA/STA COM - * Apartment - * - * @param createMainSTA - * @param mode - */ - public static synchronized void Init(boolean createMainSTA, int mode) { - if (createMainSTA && !haveSTA) { - // if the current thread is going to be in the MTA and there - // is no STA thread yet, then create a main STA thread - // to avoid COM creating its own - startMainSTA(); - } - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("ComThread: before Init: " + mode); - } - doCoInitialize(mode); - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("ComThread: after Init: " + mode); - } - ROT.addThread(); - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("ComThread: after ROT.addThread: " + mode); - } - } - - /** - * Call CoUninitialize to release this java thread from COM - */ - public static synchronized void Release() { - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("ComThread: before clearObjects"); - } - ROT.clearObjects(); - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("ComThread: before UnInit"); - } - doCoUninitialize(); - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("ComThread: after UnInit"); - } - } - - /** - * @deprecated the java model leave the responsibility of clearing up - * objects to the Garbage Collector. Our programming model - * should not require that the user specifically remove object - * from the thread. - * - * This will remove an object from the ROT - * @param o - */ - @Deprecated - public static synchronized void RemoveObject(JacobObject o) { - ROT.removeObject(o); - } - - /** - * @param threadModel - */ - public static native void doCoInitialize(int threadModel); - - /** - * - */ - public static native void doCoUninitialize(); - - /** - * load the Jacob DLL. We do this in case COMThread is called before any - * other reference to one of the JacboObject subclasses is made. - */ - static { - LibraryLoader.loadJacobLibrary(); - } -} \ No newline at end of file diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/Currency.java b/vendor/jacob/1.15-M4/java/com/jacob/com/Currency.java deleted file mode 100644 index 749506c..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/Currency.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.jacob.com; - -/** - * Most COM bridges use java.lang.Long as their Java data type for COM Currency - * data. This is because COM currency is a 64 bit number where the last 4 digits - * represent the milli-cents. We wanted to support 64 bit Long values for x64 - * platforms so that meant we wanted to map Java.LONG to COM.LONG even though it - * only works for 64 bit platforms. The end result was we needed a new - * representation for Money so we have this. - *

- * In the future, this should convert to and from BigDecimal or Double - */ -public class Currency { - Long embeddedValue = null; - - /** - * constructor that takes a long already in COM representation - * - * @param newValue - */ - public Currency(long newValue) { - embeddedValue = new Long(newValue); - } - - /** - * constructor that takes a String already in COM representation - * - * @param newValue - */ - public Currency(String newValue) { - embeddedValue = new Long(newValue); - } - - /** - * - * @return the currency as a primitive long - */ - public long longValue() { - return embeddedValue.longValue(); - } - - /** - * getter to the inner storage so that cmpareTo can work - * - * @return the embedded long value - */ - protected Long getLongValue() { - return embeddedValue; - } - - /** - * compares the values of two currencies - * - * @param anotherCurrency - * @return the usual compareTo results - */ - public int compareTo(Currency anotherCurrency) { - return embeddedValue.compareTo(anotherCurrency.getLongValue()); - } - - /** - * standard comparison - * - * @param o - * must be Currency or Long - * @return the usual compareTo results - */ - public int compareTo(Object o) { - if (o instanceof Currency) { - return compareTo((Currency) o); - } else if (o instanceof Long) { - return embeddedValue.compareTo((Long) o); - } else - throw new IllegalArgumentException( - "Can only compare to Long and Currency not " - + o.getClass().getName()); - } - - /** - * {@inheritDoc} - */ - public boolean equals(Object o) { - if (o == null) { - return false; - } else if (compareTo(o) == 0) { - return true; - } else { - return false; - } - } -} diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/DateUtilities.java b/vendor/jacob/1.15-M4/java/com/jacob/com/DateUtilities.java deleted file mode 100644 index 195ba33..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/DateUtilities.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -import java.util.Calendar; -import java.util.Date; - -/** - * java / windows date conversion utilities - * - * @author joe - * - */ -public class DateUtilities { - - /** - * converts a windows time to a Java Date Object - * - * @param comTime - * @return Date object representing the windows time as specified in comTime - */ - static public Date convertWindowsTimeToDate(double comTime) { - return new Date(convertWindowsTimeToMilliseconds(comTime)); - } - - /** - * Convert a COM time from functions Date(), Time(), Now() to a Java time - * (milliseconds). Visual Basic time values are based to 30.12.1899, Java - * time values are based to 1.1.1970 (= 0 milliseconds). The difference is - * added to the Visual Basic value to get the corresponding Java value. The - * Visual Basic double value reads: .<1 - * day percentage fraction>, e.g. "38100.6453" means: 38100 days since - * 30.12.1899 plus (24 hours * 0.6453). Example usage: - * Date javaDate = new Date(toMilliseconds (vbDate));. - * - * @param comTime - * COM time. - * @return Java time. - */ - static public long convertWindowsTimeToMilliseconds(double comTime) { - long result = 0; - - // code from jacobgen: - comTime = comTime - 25569D; - Calendar cal = Calendar.getInstance(); - result = Math.round(86400000L * comTime) - - cal.get(Calendar.ZONE_OFFSET); - cal.setTime(new Date(result)); - result -= cal.get(Calendar.DST_OFFSET); - - return result; - }// convertWindowsTimeToMilliseconds() - - /** - * converts a java date to a windows time object (is this timezone safe?) - * - * @param javaDate - * the java date to be converted to windows time - * @return the double representing the date in a form windows understands - */ - static public double convertDateToWindowsTime(Date javaDate) { - if (javaDate == null) { - throw new IllegalArgumentException( - "cannot convert null to windows time"); - } - return convertMillisecondsToWindowsTime(javaDate.getTime()); - } - - /** - * Convert a Java time to a COM time. - * - * @param milliseconds - * Java time. - * @return COM time. - */ - static public double convertMillisecondsToWindowsTime(long milliseconds) { - double result = 0.0; - - // code from jacobgen: - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(milliseconds); - milliseconds += (cal.get(Calendar.ZONE_OFFSET) + cal - .get(Calendar.DST_OFFSET)); // add GMT offset - result = (milliseconds / 86400000D) + 25569D; - - return result; - }// convertMillisecondsToWindowsTime() -} diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/Dispatch.java b/vendor/jacob/1.15-M4/java/com/jacob/com/Dispatch.java deleted file mode 100644 index 4902c46..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/Dispatch.java +++ /dev/null @@ -1,872 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. All rights reserved. Originator: Dan Adler - * (http://danadler.com). Get more information about JACOB at - * http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or modify it under the terms of the - * GNU Lesser General Public License as published by the Free Software Foundation; either version - * 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without - * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along with this library; - * if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA - */ -package com.jacob.com; - -/** - * Object represents MS level dispatch object. Each instance of this points at - * some data structure on the MS windows side. - * - * - *

- * You're going to live here a lot - */ -public class Dispatch extends JacobObject { - - /** - * Used to set the locale in a call. The user locale is another option - */ - public static final int LOCALE_SYSTEM_DEFAULT = 2048; - /** used by callN() and callSubN() */ - public static final int Method = 1; - /** used by callN() and callSubN() */ - public static final int Get = 2; - /** used by put() */ - public static final int Put = 4; - /** not used, probably intended for putRef() */ - public static final int PutRef = 8; - /** - * One of legal values for GetDispId. Not used in this layer and probably - * not needed. - */ - public static final int fdexNameCaseSensitive = 1; - - /** - * This is public because Dispatch.cpp knows its name and accesses it - * directly to get the dispatch id. You really can't rename it or make it - * private - */ - public int m_pDispatch; - - /** program Id passed in by ActiveX components in their constructor */ - private String programId = null; - - private static int NOT_ATTACHED = 0; - - /** - * Dummy empty array used one doesn't have to be created on every invocation - */ - private final static Object[] NO_OBJECT_ARGS = new Object[0]; - /** - * Dummy empty array used one doesn't have to be created on every invocation - */ - private final static Variant[] NO_VARIANT_ARGS = new Variant[0]; - /** - * Dummy empty array used one doesn't have to be created on every invocation - */ - private final static int[] NO_INT_ARGS = new int[0]; - - /** - * zero argument constructor that sets the dispatch pointer to 0 This is the - * only way to create a Dispatch without a value in the pointer field. - */ - public Dispatch() { - m_pDispatch = NOT_ATTACHED; - } - - /** - * This constructor calls createInstance with progid. This is the - * constructor used by the ActiveXComponent or by programs that don't like - * the activeX interface but wish to create new connections to windows - * programs. - *

- * This constructor always creates a new windows/program object because it - * is based on the CoCreate() windows function. - *

- * - * @param requestedProgramId - * @throws IllegalArgumentException - * if null is passed in as the program id - *

- */ - public Dispatch(String requestedProgramId) { - programId = requestedProgramId; - if (programId != null && !"".equals(programId)) { - createInstanceNative(requestedProgramId); - } else { - throw new IllegalArgumentException( - "Dispatch(String) does not accept null or an empty string as a parameter"); - } - } - - /** - * native call createInstance only used by the constructor with the same - * parm type. This probably should be private. It is the wrapper for the - * Windows CoCreate() call - *

- * This ends up calling CoCreate down in the JNI layer - *

- * The behavior is different if a ":" character exists in the progId. In - * that case CoGetObject and CreateInstance (someone needs to describe this - * better) - * - * @param progid - */ - private native void createInstanceNative(String progid); - - /** - * native call getActiveInstance only used by the constructor with the same - * parm type. This probably should be private. It is the wrapper for the - * Windows GetActiveObject() call - *

- * This ends up calling GetActiveObject down in the JNI layer - *

- * This does not have the special behavior for program ids with ":" in them - * that createInstance has. - * - * @param progid - */ - private native void getActiveInstanceNative(String progid); - - /** - * Wrapper around the native method - * - * @param pProgramIdentifier - * name of the program you wish to connect to - */ - protected void getActiveInstance(String pProgramIdentifier) { - if (pProgramIdentifier == null || "".equals(pProgramIdentifier)) { - throw new IllegalArgumentException("program id is required"); - } - this.programId = pProgramIdentifier; - getActiveInstanceNative(pProgramIdentifier); - } - - /** - * native call coCreateInstance only used by the constructor with the same - * parm type. This probably should be private. It is the wrapper for the - * Windows CoCreate() call - *

- * This ends up calling CoCreate down in the JNI layer - *

- * This does not have the special behavior for program ids with ":" in them - * that createInstance has. - * - * @param progid - */ - private native void coCreateInstanceNative(String progid); - - /** - * Wrapper around the native method - * - * @param pProgramIdentifier - */ - protected void coCreateInstance(String pProgramIdentifier) { - if (pProgramIdentifier == null || "".equals(pProgramIdentifier)) { - throw new IllegalArgumentException("program id is required"); - } - this.programId = pProgramIdentifier; - coCreateInstanceNative(pProgramIdentifier); - } - - /** - * Return a different interface by IID string. - *

- * Once you have a Dispatch object, you can navigate to the other interfaces - * of a COM object by calling QueryInterafce. The argument is an IID string - * in the format: "{9BF24410-B2E0-11D4-A695-00104BFF3241}". You typically - * get this string from the idl file (it's called uuid in there). Any - * interface you try to use must be derived from IDispatch. T The atl - * example uses this. - *

- * The Dispatch instance resulting from this query is instanciated in the - * JNI code. - * - * @param iid - * @return Dispatch a disptach that matches ?? - */ - public native Dispatch QueryInterface(String iid); - - /** - * Constructor that only gets called from JNI QueryInterface calls JNI code - * that looks up the object for the key passed in. The JNI CODE then creates - * a new dispatch object using this constructor - * - * @param pDisp - */ - protected Dispatch(int pDisp) { - m_pDispatch = pDisp; - } - - /** - * Constructor to be used by subclass that want to swap themselves in for - * the default Dispatch class. Usually you will have a class like - * WordDocument that is a subclass of Dispatch and it will have a - * constructor public WordDocument(Dispatch). That constructor should just - * call this constructor as super(Dispatch) - * - * @param dispatchToBeDisplaced - */ - public Dispatch(Dispatch dispatchToBeDisplaced) { - // TAKE OVER THE IDispatch POINTER - this.m_pDispatch = dispatchToBeDisplaced.m_pDispatch; - // NULL OUT THE INPUT POINTER - dispatchToBeDisplaced.m_pDispatch = NOT_ATTACHED; - } - - /** - * returns the program id if an activeX component created this otherwise it - * returns null. This was added to aid in debugging - * - * @return the program id an activeX component was created against - */ - public String getProgramId() { - return programId; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#finalize() - */ - @Override - protected void finalize() { - safeRelease(); - } - - /* - * (non-Javadoc) - * - * @see com.jacob.com.JacobObject#safeRelease() - */ - @Override - public void safeRelease() { - super.safeRelease(); - if (isAttached()) { - release(); - m_pDispatch = NOT_ATTACHED; - } else { - // looks like a double release - if (isDebugEnabled()) { - debug(this.getClass().getName() + ":" + this.hashCode() - + " double release"); - } - } - } - - /** - * - * @return true if there is an underlying windows dispatch object - */ - protected boolean isAttached() { - if (m_pDispatch == NOT_ATTACHED) { - return false; - } else { - return true; - } - } - - /** - * @param theOneInQuestion - * dispatch being tested - * @throws IllegalStateException - * if this dispatch isn't hooked up - * @throws IllegalArgumentException - * if null the dispatch under test is null - */ - private static void throwIfUnattachedDispatch(Dispatch theOneInQuestion) { - if (theOneInQuestion == null) { - throw new IllegalArgumentException( - "Can't pass in null Dispatch object"); - } else if (theOneInQuestion.isAttached()) { - return; - } else { - throw new IllegalStateException( - "Dispatch not hooked to windows memory"); - } - } - - /** - * now private so only this object can access was: call this to explicitly - * release the com object before gc - * - */ - private native void release(); - - /** - * not implemented yet - * - * @param dispatchTarget - * @param name - * @param val - * @throws com.jacob.com.NotImplementedException - */ - public static void put_Casesensitive(Dispatch dispatchTarget, String name, - Object val) { - throw new NotImplementedException("not implemented yet"); - } - - /* - * ============================================================ start of the - * invokev section - * =========================================================== - */ - // eliminate _Guid arg - /** - * @param dispatchTarget - * @param name - * @param dispID - * @param lcid - * @param wFlags - * @param vArg - * @param uArgErr - */ - public static void invokeSubv(Dispatch dispatchTarget, String name, - int dispID, int lcid, int wFlags, Variant[] vArg, int[] uArgErr) { - throwIfUnattachedDispatch(dispatchTarget); - invokev(dispatchTarget, name, dispID, lcid, wFlags, vArg, uArgErr); - } - - /** - * @param dispatchTarget - * @param name - * @param wFlags - * @param vArg - * @param uArgErr - */ - public static void invokeSubv(Dispatch dispatchTarget, String name, - int wFlags, Variant[] vArg, int[] uArgErr) { - throwIfUnattachedDispatch(dispatchTarget); - invokev(dispatchTarget, name, 0, Dispatch.LOCALE_SYSTEM_DEFAULT, - wFlags, vArg, uArgErr); - } - - /** - * @param dispatchTarget - * @param dispID - * @param wFlags - * @param vArg - * @param uArgErr - */ - public static void invokeSubv(Dispatch dispatchTarget, int dispID, - int wFlags, Variant[] vArg, int[] uArgErr) { - throwIfUnattachedDispatch(dispatchTarget); - invokev(dispatchTarget, null, dispID, Dispatch.LOCALE_SYSTEM_DEFAULT, - wFlags, vArg, uArgErr); - } - - /** - * not implemented yet - * - * @param dispatchTarget - * @param name - * @param values - * @return never returns anything because - * @throws com.jacob.com.NotImplementedException - */ - public static Variant callN_CaseSensitive(Dispatch dispatchTarget, - String name, Object[] values) { - throw new NotImplementedException("not implemented yet"); - } - - /** - * @param dispatchTarget - * @param name - * @param args - * an array of argument objects - */ - public static void callSubN(Dispatch dispatchTarget, String name, - Object... args) { - throwIfUnattachedDispatch(dispatchTarget); - invokeSubv(dispatchTarget, name, Dispatch.Method | Dispatch.Get, - VariantUtilities.objectsToVariants(args), new int[args.length]); - } - - /** - * @param dispatchTarget - * @param dispID - * @param args - * an array of argument objects - */ - public static void callSubN(Dispatch dispatchTarget, int dispID, - Object... args) { - throwIfUnattachedDispatch(dispatchTarget); - invokeSubv(dispatchTarget, dispID, Dispatch.Method | Dispatch.Get, - VariantUtilities.objectsToVariants(args), new int[args.length]); - } - - /* - * ============================================================ start of the - * getIdsOfNames section - * =========================================================== - */ - /** - * @param dispatchTarget - * @param name - * @return int id for the passed in name - */ - public static int getIDOfName(Dispatch dispatchTarget, String name) { - int ids[] = getIDsOfNames(dispatchTarget, - Dispatch.LOCALE_SYSTEM_DEFAULT, new String[] { name }); - return ids[0]; - } - - /** - * @param dispatchTarget - * @param lcid - * @param names - * @return int[] in id array for passed in names - */ - // eliminated _Guid argument - public static native int[] getIDsOfNames(Dispatch dispatchTarget, int lcid, - String[] names); - - /** - * @param dispatchTarget - * @param names - * @return int[] int id array for passed in names - */ - // eliminated _Guid argument - public static int[] getIDsOfNames(Dispatch dispatchTarget, String[] names) { - return getIDsOfNames(dispatchTarget, Dispatch.LOCALE_SYSTEM_DEFAULT, - names); - } - - /* - * ============================================================ start of the - * invokev section - * =========================================================== - */ - /** - * @param dispatchTarget - * @param name - * @param args - * @return Variant returned by call - */ - public static Variant callN(Dispatch dispatchTarget, String name, - Object... args) { - throwIfUnattachedDispatch(dispatchTarget); - return invokev(dispatchTarget, name, Dispatch.Method | Dispatch.Get, - VariantUtilities.objectsToVariants(args), new int[args.length]); - } - - /** - * @param dispatchTarget - * @param dispID - * @param args - * @return Variant returned by call - */ - public static Variant callN(Dispatch dispatchTarget, int dispID, - Object... args) { - throwIfUnattachedDispatch(dispatchTarget); - return invokev(dispatchTarget, dispID, Dispatch.Method | Dispatch.Get, - VariantUtilities.objectsToVariants(args), new int[args.length]); - } - - /** - * @param dispatchTarget - * @param name - * @param dispID - * @param lcid - * @param wFlags - * @param oArg - * @param uArgErr - * @return Variant returned by invoke - */ - public static Variant invoke(Dispatch dispatchTarget, String name, - int dispID, int lcid, int wFlags, Object[] oArg, int[] uArgErr) { - throwIfUnattachedDispatch(dispatchTarget); - return invokev(dispatchTarget, name, dispID, lcid, wFlags, - VariantUtilities.objectsToVariants(oArg), uArgErr); - } - - /** - * @param dispatchTarget - * @param name - * @param wFlags - * @param oArg - * @param uArgErr - * @return Variant returned by invoke - */ - public static Variant invoke(Dispatch dispatchTarget, String name, - int wFlags, Object[] oArg, int[] uArgErr) { - throwIfUnattachedDispatch(dispatchTarget); - return invokev(dispatchTarget, name, wFlags, VariantUtilities - .objectsToVariants(oArg), uArgErr); - } - - /** - * @param dispatchTarget - * @param dispID - * @param wFlags - * @param oArg - * @param uArgErr - * @return Variant returned by invoke - */ - public static Variant invoke(Dispatch dispatchTarget, int dispID, - int wFlags, Object[] oArg, int[] uArgErr) { - throwIfUnattachedDispatch(dispatchTarget); - return invokev(dispatchTarget, dispID, wFlags, VariantUtilities - .objectsToVariants(oArg), uArgErr); - } - - /* - * ============================================================ start of the - * callN section =========================================================== - */ - - /** - * @param dispatchTarget - * @param name - * @return Variant returned by underlying callN - */ - public static Variant call(Dispatch dispatchTarget, String name) { - throwIfUnattachedDispatch(dispatchTarget); - return callN(dispatchTarget, name, NO_VARIANT_ARGS); - } - - /** - * @param dispatchTarget - * @param name - * @param attributes - * @return Variant returned by underlying callN - */ - public static Variant call(Dispatch dispatchTarget, String name, - Object... attributes) { - throwIfUnattachedDispatch(dispatchTarget); - return callN(dispatchTarget, name, attributes); - } - - /** - * @param dispatchTarget - * @param dispid - * @return Variant returned by underlying callN - */ - public static Variant call(Dispatch dispatchTarget, int dispid) { - throwIfUnattachedDispatch(dispatchTarget); - return callN(dispatchTarget, dispid, NO_VARIANT_ARGS); - } - - /** - * @param dispatchTarget - * @param dispid - * @param attributes - * var arg list of attributes that will be passed to the - * underlying function - * @return Variant returned by underlying callN - */ - public static Variant call(Dispatch dispatchTarget, int dispid, - Object... attributes) { - throwIfUnattachedDispatch(dispatchTarget); - return callN(dispatchTarget, dispid, attributes); - } - - /* - * ============================================================ start of the - * invoke section - * =========================================================== - */ - /** - * @param dispatchTarget - * @param name - * @param val - */ - public static void put(Dispatch dispatchTarget, String name, Object val) { - throwIfUnattachedDispatch(dispatchTarget); - invoke(dispatchTarget, name, Dispatch.Put, new Object[] { val }, - new int[1]); - } - - /** - * @param dispatchTarget - * @param dispid - * @param val - */ - public static void put(Dispatch dispatchTarget, int dispid, Object val) { - throwIfUnattachedDispatch(dispatchTarget); - invoke(dispatchTarget, dispid, Dispatch.Put, new Object[] { val }, - new int[1]); - } - - /* - * ============================================================ start of the - * invokev section - * =========================================================== - */ - // removed _Guid argument - /** - * @param dispatchTarget - * @param name - * @param dispID - * @param lcid - * @param wFlags - * @param vArg - * @param uArgErr - * @return Variant returned by underlying invokev - */ - public static native Variant invokev(Dispatch dispatchTarget, String name, - int dispID, int lcid, int wFlags, Variant[] vArg, int[] uArgErr); - - /** - * @param dispatchTarget - * @param name - * @param wFlags - * @param vArg - * @param uArgErr - * @return Variant returned by underlying invokev - */ - public static Variant invokev(Dispatch dispatchTarget, String name, - int wFlags, Variant[] vArg, int[] uArgErr) { - throwIfUnattachedDispatch(dispatchTarget); - return invokev(dispatchTarget, name, 0, Dispatch.LOCALE_SYSTEM_DEFAULT, - wFlags, vArg, uArgErr); - } - - /** - * @param dispatchTarget - * @param name - * @param wFlags - * @param vArg - * @param uArgErr - * @param wFlagsEx - * @return Variant returned by underlying invokev - */ - public static Variant invokev(Dispatch dispatchTarget, String name, - int wFlags, Variant[] vArg, int[] uArgErr, int wFlagsEx) { - throwIfUnattachedDispatch(dispatchTarget); - // do not implement IDispatchEx for now - return invokev(dispatchTarget, name, 0, Dispatch.LOCALE_SYSTEM_DEFAULT, - wFlags, vArg, uArgErr); - } - - /** - * @param dispatchTarget - * @param dispID - * @param wFlags - * @param vArg - * @param uArgErr - * @return Variant returned by underlying invokev - */ - public static Variant invokev(Dispatch dispatchTarget, int dispID, - int wFlags, Variant[] vArg, int[] uArgErr) { - throwIfUnattachedDispatch(dispatchTarget); - return invokev(dispatchTarget, null, dispID, - Dispatch.LOCALE_SYSTEM_DEFAULT, wFlags, vArg, uArgErr); - } - - /* - * ============================================================ start of the - * invokeSubv section - * =========================================================== - */ - - // removed _Guid argument - /** - * @param dispatchTarget - * @param name - * @param dispid - * @param lcid - * @param wFlags - * @param oArg - * @param uArgErr - */ - public static void invokeSub(Dispatch dispatchTarget, String name, - int dispid, int lcid, int wFlags, Object[] oArg, int[] uArgErr) { - throwIfUnattachedDispatch(dispatchTarget); - invokeSubv(dispatchTarget, name, dispid, lcid, wFlags, VariantUtilities - .objectsToVariants(oArg), uArgErr); - } - - /* - * ============================================================ start of the - * invokeSub section - * =========================================================== - */ - /** - * @param dispatchTarget - * @param name - * @param wFlags - * @param oArg - * @param uArgErr - */ - public static void invokeSub(Dispatch dispatchTarget, String name, - int wFlags, Object[] oArg, int[] uArgErr) { - throwIfUnattachedDispatch(dispatchTarget); - invokeSub(dispatchTarget, name, 0, Dispatch.LOCALE_SYSTEM_DEFAULT, - wFlags, oArg, uArgErr); - } - - /** - * @param dispatchTarget - * @param dispid - * @param wFlags - * @param oArg - * @param uArgErr - */ - public static void invokeSub(Dispatch dispatchTarget, int dispid, - int wFlags, Object[] oArg, int[] uArgErr) { - throwIfUnattachedDispatch(dispatchTarget); - invokeSub(dispatchTarget, null, dispid, Dispatch.LOCALE_SYSTEM_DEFAULT, - wFlags, oArg, uArgErr); - } - - /* - * ============================================================ start of the - * callSubN section - * =========================================================== - */ - /** - * makes call to native callSubN - * - * @param dispatchTarget - * @param name - */ - public static void callSub(Dispatch dispatchTarget, String name) { - throwIfUnattachedDispatch(dispatchTarget); - callSubN(dispatchTarget, name, NO_OBJECT_ARGS); - } - - /** - * makes call to native callSubN - * - * @param dispatchTarget - * @param name - * @param attributes - * var args list of attributes to be passed to underlying - * functions - */ - public static void callSub(Dispatch dispatchTarget, String name, - Object... attributes) { - throwIfUnattachedDispatch(dispatchTarget); - callSubN(dispatchTarget, name, attributes); - } - - /** - * makes call to native callSubN - * - * @param dispatchTarget - * @param dispid - */ - public static void callSub(Dispatch dispatchTarget, int dispid) { - throwIfUnattachedDispatch(dispatchTarget); - callSubN(dispatchTarget, dispid, NO_OBJECT_ARGS); - } - - /** - * makes call to native callSubN - * - * @param dispatchTarget - * @param dispid - * @param attributes - * var args list of attributes to be passed to underlying - * function - */ - public static void callSub(Dispatch dispatchTarget, int dispid, - Object... attributes) { - throwIfUnattachedDispatch(dispatchTarget); - callSubN(dispatchTarget, dispid, attributes); - } - - /* - * ============================================================ start of the - * invokev section - * =========================================================== - */ - /** - * Cover for call to underlying invokev() - * - * @param dispatchTarget - * @param name - * @return Variant returned by the request for retrieval of parameter - */ - public static Variant get(Dispatch dispatchTarget, String name) { - throwIfUnattachedDispatch(dispatchTarget); - return invokev(dispatchTarget, name, Dispatch.Get, NO_VARIANT_ARGS, - NO_INT_ARGS); - } - - /** - * Cover for call to underlying invokev() - * - * @param dispatchTarget - * @param dispid - * @return Variant returned by the request for retrieval of parameter - */ - public static Variant get(Dispatch dispatchTarget, int dispid) { - throwIfUnattachedDispatch(dispatchTarget); - return invokev(dispatchTarget, dispid, Dispatch.Get, NO_VARIANT_ARGS, - NO_INT_ARGS); - } - - /* - * ============================================================ start of the - * invoke section - * =========================================================== - */ - /** - * cover for underlying call to invoke - * - * @param dispatchTarget - * @param name - * @param val - */ - public static void putRef(Dispatch dispatchTarget, String name, Object val) { - throwIfUnattachedDispatch(dispatchTarget); - invoke(dispatchTarget, name, Dispatch.PutRef, new Object[] { val }, - new int[1]); - } - - /** - * cover for underlying call to invoke - * - * @param dispatchTarget - * @param dispid - * @param val - */ - public static void putRef(Dispatch dispatchTarget, int dispid, Object val) { - throwIfUnattachedDispatch(dispatchTarget); - invoke(dispatchTarget, dispid, Dispatch.PutRef, new Object[] { val }, - new int[1]); - } - - /** - * not implemented yet - * - * @param dispatchTarget - * @param name - * @return Variant never returned - * @throws com.jacob.com.NotImplementedException - */ - public static Variant get_CaseSensitive(Dispatch dispatchTarget, String name) { - throw new NotImplementedException("not implemented yet"); - } - - /** - * Cover for native method - * - * @param disp - * @param dispid - * @param lcid - * @return 0 if the dispatch is still active and 1 if it has exited - */ - public static native int hasExited(Dispatch disp, int dispid, int lcid); - - /** - * The method is used to poll until it returns 1, indicating that the COM - * server in gone. - *

- * Sourceforge feature request 2927058 - * - * @param dispatchTarget - * @return 0 if the dispatch is still active and 1 if it has exited - */ - public static int hasExited(Dispatch dispatchTarget) { - throwIfUnattachedDispatch(dispatchTarget); - return hasExited(dispatchTarget, 0, LOCALE_SYSTEM_DEFAULT); - } - -} diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/DispatchEvents.java b/vendor/jacob/1.15-M4/java/com/jacob/com/DispatchEvents.java deleted file mode 100644 index a9ca0a1..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/DispatchEvents.java +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -/** - * This class creates the scaffolding for event callbacks. Every instance of tis - * acts as a wrapper around some java object that wants callbacks from the - * microsoft side. It represents the connection between Java and COM for - * callbacks. - *

- * The callback mechanism will take any event that it receives and try and find - * a java method with the same name that accepts the Variant... as a parameter. - * It will then wrap the call back data in the Variant array and call the java - * method of the object that this DispatchEvents object was initialized with. - *

- * Instances of this class are created with "sink object" that will receive the - * event messages. The sink object is wrapped in an Invocation handler that - * actually receives the messages and then forwards them on to the "sink - * object". The constructors recognize when an instance of InvocationProxy is - * passed in and do not create a new InvocationProxy as a wrapper. They instead - * use the passed in InvocationProxy. - * - */ -public class DispatchEvents extends JacobObject { - - /** - * pointer to an MS data struct. The COM layer knows the name of this - * variable and puts the windows memory pointer here. - */ - int m_pConnPtProxy = 0; - - /** - * the wrapper for the event sink. This object is the one that will be sent - * a message when an event occurs in the MS layer. Normally, the - * InvocationProxy will forward the messages to a wrapped object that it - * contains. - */ - InvocationProxy mInvocationProxy = null; - - /** - * This is the most commonly used constructor. - *

- * Creates the event callback linkage between the the MS program represented - * by the Dispatch object and the Java object that will receive the - * callback. - *

- * Can be used on any object that implements IProvideClassInfo. - * - * @param sourceOfEvent - * Dispatch object who's MS app will generate callbacks - * @param eventSink - * Java object that wants to receive the events - */ - public DispatchEvents(Dispatch sourceOfEvent, Object eventSink) { - this(sourceOfEvent, eventSink, null); - } - - /** - * None of the samples use this constructor. - *

- * Creates the event callback linkage between the the MS program represented - * by the Dispatch object and the Java object that will receive the - * callback. - *

- * Used when the program doesn't implement IProvideClassInfo. It provides a - * way to find the TypeLib in the registry based on the programId. The - * TypeLib is looked up in the registry on the path - * HKEY_LOCAL_MACHINE/SOFTWARE/Classes/CLSID/(CLID drived from - * progid)/ProgID/Typelib - * - * @param sourceOfEvent - * Dispatch object who's MS app will generate callbacks - * @param eventSink - * Java object that wants to receive the events - * @param progId - * program id in the registry that has a TypeLib subkey. The - * progrId is mapped to a CLSID that is they used to look up the - * key to the Typelib - */ - public DispatchEvents(Dispatch sourceOfEvent, Object eventSink, - String progId) { - this(sourceOfEvent, eventSink, progId, null); - } - - /** - * Creates the event callback linkage between the the MS program represented - * by the Dispatch object and the Java object that will receive the - * callback. - *

- * This method was added because Excel doesn't implement IProvideClassInfo - * and the registry entry for Excel.Application doesn't include a typelib - * key. - * - *

-	 * DispatchEvents de = new DispatchEvents(someDispatch, someEventHAndler,
-	 * 		"Excel.Application",
-	 * 		"C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE");
-	 * 
- * - * @param sourceOfEvent - * Dispatch object who's MS app will generate callbacks - * @param eventSink - * Java object that wants to receive the events - * @param progId , - * mandatory if the typelib is specified - * @param typeLib - * The location of the typelib to use - */ - public DispatchEvents(Dispatch sourceOfEvent, Object eventSink, - String progId, String typeLib) { - if (JacobObject.isDebugEnabled()) { - System.out.println("DispatchEvents: Registering " + eventSink - + "for events "); - } - if (eventSink instanceof InvocationProxy) { - mInvocationProxy = (InvocationProxy) eventSink; - } else { - mInvocationProxy = getInvocationProxy(eventSink); - } - if (mInvocationProxy != null) { - init3(sourceOfEvent, mInvocationProxy, progId, typeLib); - } else { - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("Cannot register null event sink for events"); - } - throw new IllegalArgumentException( - "Cannot register null event sink for events"); - } - } - - /** - * Returns an instance of the proxy configured with pTargetObject as its - * target - * - * @param pTargetObject - * @return InvocationProxy an instance of the proxy this DispatchEvents will - * send to the COM layer - */ - protected InvocationProxy getInvocationProxy(Object pTargetObject) { - InvocationProxy newProxy = new InvocationProxyAllVariants(); - newProxy.setTarget(pTargetObject); - return newProxy; - } - - /** - * hooks up a connection point proxy by progId event methods on the sink - * object will be called by name with a signature of (Variant[] args) - * - * You must specify the location of the typeLib. - * - * @param src - * dispatch that is the source of the messages - * @param sink - * the object that will receive the messages - * @param progId - * optional program id. most folks don't need this either - * @param typeLib - * optional parameter for those programs that don't register - * their type libs (like Excel) - */ - private native void init3(Dispatch src, Object sink, String progId, - String typeLib); - - /** - * now private so only this object can asccess was: call this to explicitly - * release the com object before gc - * - */ - private native void release(); - - /* - * (non-Javadoc) - * - * @see java.lang.Object#finalize() - */ - protected void finalize() { - safeRelease(); - } - - /* - * (non-Javadoc) - * - * @see com.jacob.com.JacobObject#safeRelease() - */ - public void safeRelease() { - if (mInvocationProxy != null) { - mInvocationProxy.setTarget(null); - } - mInvocationProxy = null; - super.safeRelease(); - if (m_pConnPtProxy != 0) { - release(); - m_pConnPtProxy = 0; - } else { - // looks like a double release - if (isDebugEnabled()) { - debug("DispatchEvents:" + this.hashCode() + " double release"); - } - } - } - -} diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/DispatchIdentifier.java b/vendor/jacob/1.15-M4/java/com/jacob/com/DispatchIdentifier.java deleted file mode 100644 index cebd9f8..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/DispatchIdentifier.java +++ /dev/null @@ -1,82 +0,0 @@ -/** - * - */ -package com.jacob.com; - -/** - * A bunch of DispatchIds that were pulled out of the Dispatch class for version - * 1.14. - */ -public class DispatchIdentifier { - - private DispatchIdentifier() { - // This is utility class so there is no constructor. - } - - public static final int DISPID_UNKNOWN = -1; - public static final int DISPID_VALUE = 0; - public static final int DISPID_PROPERTYPUT = -3; - public static final int DISPID_NEWENUM = -4; - public static final int DISPID_EVALUATE = -5; - public static final int DISPID_CONSTRUCTOR = -6; - public static final int DISPID_DESTRUCTOR = -7; - public static final int DISPID_COLLECT = -8; - public static final int DISPID_AUTOSIZE = -500; - public static final int DISPID_BACKCOLOR = -501; - public static final int DISPID_BACKSTYLE = -502; - public static final int DISPID_BORDERCOLOR = -503; - public static final int DISPID_BORDERSTYLE = -504; - public static final int DISPID_BORDERWIDTH = -505; - public static final int DISPID_DRAWMODE = -507; - public static final int DISPID_DRAWSTYLE = -508; - public static final int DISPID_DRAWWIDTH = -509; - public static final int DISPID_FILLCOLOR = -510; - public static final int DISPID_FILLSTYLE = -511; - public static final int DISPID_FONT = -512; - public static final int DISPID_FORECOLOR = -513; - public static final int DISPID_ENABLED = -514; - public static final int DISPID_HWND = -515; - public static final int DISPID_TABSTOP = -516; - public static final int DISPID_TEXT = -517; - public static final int DISPID_CAPTION = -518; - public static final int DISPID_BORDERVISIBLE = -519; - public static final int DISPID_APPEARANCE = -520; - public static final int DISPID_MOUSEPOINTER = -521; - public static final int DISPID_MOUSEICON = -522; - public static final int DISPID_PICTURE = -523; - public static final int DISPID_VALID = -524; - public static final int DISPID_READYSTATE = -525; - public static final int DISPID_REFRESH = -550; - public static final int DISPID_DOCLICK = -551; - public static final int DISPID_ABOUTBOX = -552; - public static final int DISPID_CLICK = -600; - public static final int DISPID_DBLCLICK = -601; - public static final int DISPID_KEYDOWN = -602; - public static final int DISPID_KEYPRESS = -603; - public static final int DISPID_KEYUP = -604; - public static final int DISPID_MOUSEDOWN = -605; - public static final int DISPID_MOUSEMOVE = -606; - public static final int DISPID_MOUSEUP = -607; - public static final int DISPID_ERROREVENT = -608; - public static final int DISPID_READYSTATECHANGE = -609; - public static final int DISPID_AMBIENT_BACKCOLOR = -701; - public static final int DISPID_AMBIENT_DISPLAYNAME = -702; - public static final int DISPID_AMBIENT_FONT = -703; - public static final int DISPID_AMBIENT_FORECOLOR = -704; - public static final int DISPID_AMBIENT_LOCALEID = -705; - public static final int DISPID_AMBIENT_MESSAGEREFLECT = -706; - public static final int DISPID_AMBIENT_SCALEUNITS = -707; - public static final int DISPID_AMBIENT_TEXTALIGN = -708; - public static final int DISPID_AMBIENT_USERMODE = -709; - public static final int DISPID_AMBIENT_UIDEAD = -710; - public static final int DISPID_AMBIENT_SHOWGRABHANDLES = -711; - public static final int DISPID_AMBIENT_SHOWHATCHING = -712; - public static final int DISPID_AMBIENT_DISPLAYASDEFAULT = -713; - public static final int DISPID_AMBIENT_SUPPORTSMNEMONICS = -714; - public static final int DISPID_AMBIENT_AUTOCLIP = -715; - public static final int DISPID_AMBIENT_APPEARANCE = -716; - public static final int DISPID_AMBIENT_CODEPAGE = -725; - public static final int DISPID_AMBIENT_PALETTE = -726; - public static final int DISPID_AMBIENT_CHARSET = -727; - public static final int DISPID_AMBIENT_TRANSFERPRIORITY = -728; -} diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/DispatchProxy.java b/vendor/jacob/1.15-M4/java/com/jacob/com/DispatchProxy.java deleted file mode 100644 index c8f08cf..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/DispatchProxy.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -/** - * If you need to pass a COM Dispatch object between STA threads, you have to - * marshall the interface. This class is used as follows: the STA that creates - * the Dispatch object must construct an instance of this class. Another thread - * can then call toDispatch() on that instance and get a Dispatch pointer which - * has been marshalled. WARNING: You can only call toDispatch() once! If you - * need to call it multiple times (or from multiple threads) you need to - * construct a separate DispatchProxy instance for each such case! - */ -public class DispatchProxy extends JacobObject { - /** - * Comment for m_pStream - */ - public int m_pStream; - - /** - * Marshals the passed in dispatch into the stream - * - * @param localDispatch - */ - public DispatchProxy(Dispatch localDispatch) { - MarshalIntoStream(localDispatch); - } - - /** - * - * @return Dispatch the dispatch retrieved from the stream - */ - public Dispatch toDispatch() { - return MarshalFromStream(); - } - - private native void MarshalIntoStream(Dispatch d); - - private native Dispatch MarshalFromStream(); - - /** - * now private so only this object can access was: call this to explicitly - * release the com object before gc - * - */ - private native void release(); - - /* - * (non-Javadoc) - * - * @see java.lang.Object#finalize() - */ - public void finalize() { - safeRelease(); - } - - /* - * (non-Javadoc) - * - * @see com.jacob.com.JacobObject#safeRelease() - */ - public void safeRelease() { - super.safeRelease(); - if (m_pStream != 0) { - release(); - m_pStream = 0; - } else { - // looks like a double release - if (isDebugEnabled()) { - debug(this.getClass().getName() + ":" + this.hashCode() - + " double release"); - } - } - } -} \ No newline at end of file diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/EnumVariant.java b/vendor/jacob/1.15-M4/java/com/jacob/com/EnumVariant.java deleted file mode 100644 index 8ff298f..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/EnumVariant.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -/** - * An implementation of IEnumVariant based on code submitted by Thomas Hallgren - * (mailto:Thomas.Hallgren@eoncompany.com) - */ -public class EnumVariant extends JacobObject implements - java.util.Enumeration { - private int m_pIEnumVARIANT; - - private final Variant[] m_recBuf = new Variant[1]; - - // this only gets called from JNI - // - protected EnumVariant(int pIEnumVARIANT) { - m_pIEnumVARIANT = pIEnumVARIANT; - } - - /** - * @param disp - */ - public EnumVariant(Dispatch disp) { - int[] hres = new int[1]; - Variant evv = Dispatch.invokev(disp, DispatchIdentifier.DISPID_NEWENUM, - Dispatch.Get, new Variant[0], hres); - if (evv.getvt() != Variant.VariantObject) - // - // The DISPID_NEWENUM did not result in a valid object - // - throw new ComFailException("Can't obtain EnumVARIANT"); - - EnumVariant tmp = evv.toEnumVariant(); - m_pIEnumVARIANT = tmp.m_pIEnumVARIANT; - tmp.m_pIEnumVARIANT = 0; - } - - /** - * Implements java.util.Enumeration - * - * @return boolean true if there are more elements in this enumeration - */ - public boolean hasMoreElements() { - { - if (m_recBuf[0] == null) { - if (this.Next(m_recBuf) <= 0) - return false; - } - return true; - } - } - - /** - * Implements java.util.Enumeration - * - * @return next element in the enumeration - */ - public Variant nextElement() { - Variant last = m_recBuf[0]; - if (last == null) { - if (this.Next(m_recBuf) <= 0) - throw new java.util.NoSuchElementException(); - last = m_recBuf[0]; - } - m_recBuf[0] = null; - return last; - } - - /** - * Get next element in collection or null if at end - * - * @return Variant that is next in the collection - * @deprecated use nextElement() instead - */ - @Deprecated - public Variant Next() { - if (hasMoreElements()) - return nextElement(); - return null; - } - - /** - * This should be private and wrapped to protect JNI layer. - * - * @param receiverArray - * @return Returns the next variant object pointer as an int from windows - * layer - */ - public native int Next(Variant[] receiverArray); - - /** - * This should be private and wrapped to protect JNI layer. - * - * @param count - * number to skip - */ - public native void Skip(int count); - - /** - * This should be private and wrapped to protect JNI layer - */ - public native void Reset(); - - /** - * now private so only this object can access was: call this to explicitly - * release the com object before gc - * - */ - private native void release(); - - /* - * (non-Javadoc) - * - * @see java.lang.Object#finalize() - */ - protected void finalize() { - safeRelease(); - } - - /* - * (non-Javadoc) - * - * @see com.jacob.com.JacobObject#safeRelease() - */ - public void safeRelease() { - super.safeRelease(); - if (m_pIEnumVARIANT != 0) { - this.release(); - m_pIEnumVARIANT = 0; - } else { - // looks like a double release - if (isDebugEnabled()) { - debug(this.getClass().getName() + ":" + this.hashCode() - + " double release"); - } - } - } -} \ No newline at end of file diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/InvocationProxy.java b/vendor/jacob/1.15-M4/java/com/jacob/com/InvocationProxy.java deleted file mode 100644 index 7687d84..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/InvocationProxy.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -/** - * @version $Id$ - * @author joe - * - * DispatchEvents wraps this class around any event handlers before making the - * JNI call that sets up the link with EventProxy. This means that - * EventProxy.cpp just calls invoke(String,Variant[]) against the instance of - * this class. Then this class does reflection against the event listener to - * call the actual event methods. The event methods can return void or return a - * Variant. Any value returned will be passed back to the calling windows module - * by the Jacob JNI layer. - *

- * - * The void returning signature is the standard legacy signature. The Variant - * returning signature was added in 1.10 to support event handlers returning - * values. - * - */ -public abstract class InvocationProxy { - - /** - * the object we will try and forward to. - */ - protected Object mTargetObject = null; - - /** - * dummy constructor for subclasses that don't actually wrap anything and - * just want to override the invoke() method - */ - protected InvocationProxy() { - super(); - } - - /** - * The method actually invoked by EventProxy.cpp. The method name is - * calculated by the underlying JNI code from the MS windows Callback - * function name. The method is assumed to take an array of Variant objects. - * The method may return a Variant or be a void. Those are the only two - * options that will not blow up. - *

- * Subclasses that override this should make sure mTargetObject is not null - * before processing. - * - * @param methodName - * name of method in mTargetObject we will invoke - * @param targetParameters - * Variant[] that is the single parameter to the method - * @return an object that will be returned to the com event caller - */ - public abstract Variant invoke(String methodName, - Variant targetParameters[]); - - /** - * used by EventProxy.cpp to create variant objects in the right thread - * - * @return Variant object that will be used by the COM layer - */ - public Variant getVariant() { - return new VariantViaEvent(); - } - - /** - * Sets the target for this InvocationProxy. - * - * @param pTargetObject - * @throws IllegalArgumentException - * if target is not publicly accessible - */ - public void setTarget(Object pTargetObject) { - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("InvocationProxy: setting target " - + pTargetObject); - } - if (pTargetObject != null) { - // JNI code apparently bypasses this check and could operate against - // protected classes. This seems like a security issue... - // maybe it was because JNI code isn't in a package? - if (!java.lang.reflect.Modifier.isPublic(pTargetObject.getClass() - .getModifiers())) { - throw new IllegalArgumentException( - "InvocationProxy only public classes can receive event notifications"); - } - } - mTargetObject = pTargetObject; - } - -} diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/InvocationProxyAllVariants.java b/vendor/jacob/1.15-M4/java/com/jacob/com/InvocationProxyAllVariants.java deleted file mode 100644 index 3a5d846..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/InvocationProxyAllVariants.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -/** - * This class acts as a proxy between the windows event callback mechanism and - * the Java classes that are looking for events. It assumes that all of the Java - * classes that are looking for events implement methods with the same names as - * the windows events and that the implemented methods accept an array of - * variant objects. The methods can return void or a Variant that will be - * returned to the calling layer. All Event methods that will be recognized by - * InvocationProxyAllEvents have the signature - * - * void eventMethodName(Variant[]) or - * Variant eventMethodName(Variant[]) - */ -public class InvocationProxyAllVariants extends InvocationProxy { - - /* - * (non-Javadoc) - * - * @see com.jacob.com.InvocationProxy#invoke(java.lang.String, - * com.jacob.com.Variant[]) - */ - @SuppressWarnings("unchecked") - public Variant invoke(String methodName, Variant targetParameters[]) { - Variant mVariantToBeReturned = null; - if (mTargetObject == null) { - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("InvocationProxy: received notification (" - + methodName + ") with no target set"); - } - // structured programming guidlines say this return should not be up - // here - return null; - } - Class targetClass = mTargetObject.getClass(); - if (methodName == null) { - throw new IllegalArgumentException( - "InvocationProxy: missing method name"); - } - if (targetParameters == null) { - throw new IllegalArgumentException( - "InvocationProxy: missing Variant parameters"); - } - try { - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("InvocationProxy: trying to invoke " - + methodName + " on " + mTargetObject); - } - Method targetMethod; - targetMethod = targetClass.getMethod(methodName, - new Class[] { Variant[].class }); - if (targetMethod != null) { - // protected classes can't be invoked against even if they - // let you grab the method. you could do - // targetMethod.setAccessible(true); - // but that should be stopped by the security manager - Object mReturnedByInvocation = null; - mReturnedByInvocation = targetMethod.invoke(mTargetObject, - new Object[] { targetParameters }); - if (mReturnedByInvocation == null) { - mVariantToBeReturned = null; - } else if (!(mReturnedByInvocation instanceof Variant)) { - // could try and convert to Variant here. - throw new IllegalArgumentException( - "InvocationProxy: invokation of target method returned " - + "non-null non-variant object: " - + mReturnedByInvocation); - } else { - mVariantToBeReturned = (Variant) mReturnedByInvocation; - } - } - } catch (SecurityException e) { - // what causes this exception? - e.printStackTrace(); - } catch (NoSuchMethodException e) { - // this happens whenever the listener doesn't implement all the - // methods - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("InvocationProxy: listener (" + mTargetObject - + ") doesn't implement " + methodName); - } - } catch (IllegalArgumentException e) { - e.printStackTrace(); - // we can throw these inside the catch block so need to re-throw it - throw e; - } catch (IllegalAccessException e) { - // can't access the method on the target instance for some reason - if (JacobObject.isDebugEnabled()) { - JacobObject - .debug("InvocationProxy: probably tried to access public method on non public class" - + methodName); - } - e.printStackTrace(); - } catch (InvocationTargetException e) { - // invocation of target method failed - e.printStackTrace(); - } - return mVariantToBeReturned; - - } -} diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/JacobException.java b/vendor/jacob/1.15-M4/java/com/jacob/com/JacobException.java deleted file mode 100644 index 6e2e926..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/JacobException.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -/** - * The parent class of all Jacob exceptions. They all used to be based off of - * RuntimeException or ComException but it was decided to base them all off of - * one owned by this project. - */ -public class JacobException extends RuntimeException { - - /** - * - */ - private static final long serialVersionUID = -1637125318746002715L; - - /** - * Default constructor. Calls super with a "No Message Provided" string - */ - public JacobException() { - super("No Message Provided"); - } - - /** - * standard constructor - * - * @param message - */ - public JacobException(String message) { - super(message); - } -} diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/JacobObject.java b/vendor/jacob/1.15-M4/java/com/jacob/com/JacobObject.java deleted file mode 100644 index acd346c..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/JacobObject.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -/** - * The superclass of all Jacob objects. It is used to create a standard API - * framework and to facilitate memory management for Java and COM memory - * elements. - *

- * All instances of this class and subclasses are automatically managed by the - * ROT. This means the ROT cannot be a subclass of JacobObject. - *

- * All COM object created by JACOB extend this class so that we can - * automatically release them when the thread is detached from COM - if we leave - * it to the finalizer it will call the release from another thread, which may - * result in a segmentation violation. - */ -public class JacobObject { - - /** - * Standard constructor that adds this JacobObject to the memory management - * pool. - */ - public JacobObject() { - ROT.addObject(this); - } - - /** - * Finalizers call this method. This method should release any COM data - * structures in a way that it can be called multiple times. This can happen - * if someone manually calls this and then a finalizer calls it. - */ - public void safeRelease() { - // currently does nothing - subclasses may do something - if (isDebugEnabled()) { - // this used to do a toString() but that is bad for SafeArray - debug("SafeRelease: " + this.getClass().getName()); - } - } - - /** - * When things go wrong, it is useful to be able to debug the ROT. - */ - private static final boolean DEBUG = - // true; - "true".equalsIgnoreCase(System.getProperty("com.jacob.debug")); - - protected static boolean isDebugEnabled() { - return DEBUG; - } - - /** - * Loads JacobVersion.Properties and returns the value of version in it - * - * @deprecated use JacobReleaseInfo.getBuildDate() instead. - * @return String value of version in JacobVersion.Properties or "" if none - */ - @Deprecated - public static String getBuildDate() { - return JacobReleaseInfo.getBuildDate(); - } - - /** - * Loads JacobVersion.Properties and returns the value of version in it - * - * @deprecated use JacobReleaseInfo.getBuildVersion() instead. - * @return String value of version in JacobVersion.Properties or "" if none - */ - @Deprecated - public static String getBuildVersion() { - return JacobReleaseInfo.getBuildVersion(); - } - - /** - * Very basic debugging function. - * - * @param istrMessage - */ - protected static void debug(String istrMessage) { - if (isDebugEnabled()) { - System.out.println(Thread.currentThread().getName() + ": " - + istrMessage); - } - } - - /** - * force the jacob DLL to be loaded whenever this class is referenced - */ - static { - LibraryLoader.loadJacobLibrary(); - } - -} \ No newline at end of file diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/JacobReleaseInfo.java b/vendor/jacob/1.15-M4/java/com/jacob/com/JacobReleaseInfo.java deleted file mode 100644 index a41b239..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/JacobReleaseInfo.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.jacob.com; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; - -/** - * An interface to the version properties file. This code was removed from - * JacobObject because it doesn't belong there. - * - */ -public class JacobReleaseInfo { - - /** - * holds the build version as retrieved from the version properties file - * that exists in the JAR. This can be retrieved by calling the static - * method getBuildVersion() - * - * @see #getBuildVersion() - */ - private static String buildVersion = ""; - /** - * holds the build date as retrieved from the version properties file that - * exists in the JAR This can be retrieved by calling the static method - * getBuildDate() - * - * @see #getBuildDate() - */ - private static String buildDate = ""; - /** the name of the jacob version properties file */ - private static final String PROPERTY_FILE_NAME = "META-INF/JacobVersion.properties"; - - /** - * Loads version information from PROPERTY_FILE_NAME that was built as part - * of this release. - * - * @throws IllegalStateException - * when it can't find the version properties file - */ - private static void loadVersionProperties() { - Properties versionProps = new Properties(); - // can't use system class loader cause won't work in JavaWebStart - InputStream stream = JacobReleaseInfo.class.getClassLoader() - .getResourceAsStream(PROPERTY_FILE_NAME); - // This should never happen. This is an attempt to make something work - // for WebSphere. They may be using some kind of Servlet loader that - // needs an absolute path based search - if (stream == null) { - stream = JacobReleaseInfo.class.getClassLoader() - .getResourceAsStream("/" + PROPERTY_FILE_NAME); - } - // A report came in that WebSphere had trouble finding the file - // so lets trap it. Plus, it's a good idea anyway. - if (stream == null) { - throw new IllegalStateException( - "Can't find " - + PROPERTY_FILE_NAME - + " using JacobReleaseInfo.class.getClassLoader().getResourceAsStream()"); - } else { - try { - versionProps.load(stream); - stream.close(); - buildVersion = (String) versionProps.get("version"); - buildDate = (String) versionProps.get("build.date"); - } catch (IOException ioe) { - ioe.printStackTrace(); - System.err.println("Warning! Couldn't load props " + ioe); - } - } - } - - /** - * loads PROPERT_FILE_NAME and returns the value of version in it - * - * @return String value of version in PROPERT_FILE_NAME or "" if none - */ - public static String getBuildDate() { - if (buildDate.equals("")) { - loadVersionProperties(); - } - return buildDate; - } - - /** - * loads PROPERT_FILE_NAME and returns the value of version in it - * - * @return String value of version in PROPERT_FILE_NAME or "" if none - */ - public static String getBuildVersion() { - if (buildVersion.equals("")) { - loadVersionProperties(); - } - return buildVersion; - } - -} diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/LibraryLoader.java b/vendor/jacob/1.15-M4/java/com/jacob/com/LibraryLoader.java deleted file mode 100644 index 4fd2740..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/LibraryLoader.java +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright (c) 1999-2007 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -import java.util.Enumeration; -import java.util.HashSet; -import java.util.Locale; -import java.util.MissingResourceException; -import java.util.ResourceBundle; -import java.util.Set; - -/** - * Utility class to centralize the way in which the jacob JNI library is loaded. - *

- * - * This supports defining the path or library name using system properties or a - * custom resource file. If desired, jacob can auto-detect the correct version - * of the DLL for 32 or 64 bit windows, as long as you have named them - * differently. - * - *

    - *
  1. If system property {@link #JACOB_DLL_PATH} is defined, the file located - * there will be loaded as the jacob dll using System.load().
  2. - * - *
  3. If system property {@link #JACOB_DLL_NAME} is defined, the file located - * there will be loaded as the jacob dll.
  4. - *
  5. If system property {@link #JACOB_DLL_NAME_X86} and - * {@link #JACOB_DLL_NAME_X64} are defined, the file located there will be - * loaded as the jacob dll, depending on the version of Windows.
  6. - * - *
  7. If {@link #JACOB_DLL_NAME} is defined in the - * {@code com.jacob.com.JacobLibraryLoader} resource file, the specified dll - * will be loaded from the {@code java.library.path}.
  8. - *
  9. If {@link #JACOB_DLL_NAME_X86} and {@link #JACOB_DLL_NAME_X64} are - * defined in the {@code com.jacob.com.JacobLibraryLoader} resource file, the - * specified dll will be loaded from the {@code java.library.path}, depending - * on the version of Windows.
  10. - * - *
  11. If none of the above are true, the default is to load the library named - * "jacob-<version>-<arch>" (or - * "jacob-<version>-<arch&rt;.dll") from the {@code java.library.path}. - *
  12. - *
- * - * The standard behavior for most applications is that {@code LoadLibrary()} - * will be called to load the dll. {@code LoadLibary()} searches directories - * specified in the variable {@code java.library.path}. This is why most test - * cases specify -Djava.library.path in their command line arguments. - *

- * JACOB_DLL_PATH submitted sourceforge ticket 1493647 Added 1.11
- * JACOB_DLL_NAME, JACOB_DLL_NAME_32, JACOB_DLL_NAME_64 submitted sourceforge - * ticket 1845039 Added 1.14M7 - * - * @author Scott Dickerson (sjd78) - * @author Jason Smith - */ -public final class LibraryLoader { - /** - * Name of system property (currently jacob.dll.path) that may - * contain an absolute path to the JNI library. - */ - public static final String JACOB_DLL_PATH = "jacob.dll.path"; - - /** - * Name of system property (currently jacob.dll.name) that may - * contain an alternate name for the JNI library (default is 'jacob'). - */ - public static final String JACOB_DLL_NAME = "jacob.dll.name"; - - /** - * Name of system property (currently jacob.dll.name) that may - * contain an alternate name for the JNI library (default is 'jacob'), 32 - * bit windows. - */ - public static final String JACOB_DLL_NAME_X86 = "jacob.dll.name.x86"; - - /** - * Name of system property (currently jacob.dll.name) that may - * contain an alternate name for the JNI library (default is 'jacob'), 64 - * bit windows. - */ - public static final String JACOB_DLL_NAME_X64 = "jacob.dll.name.x64"; - - /** - * Appended to "jacob" when building DLL name This string must EXACTLY match - * the string in the build.xml file - */ - public static final String DLL_NAME_MODIFIER_32_BIT = "x86"; - /** - * Appended to "jacob" when building DLL name This string must EXACTLY match - * the string in the build.xml file - */ - public static final String DLL_NAME_MODIFIER_64_BIT = "x64"; - - /** - * Load the jacob dll either from an absolute path or by a library name, - * both of which may be defined in various ways. - * - * @throws UnsatisfiedLinkError - * if the library does not exist. - */ - public static void loadJacobLibrary() { - // In some cases, a library that uses Jacob won't be able to set system - // properties - // prior to Jacob being loaded. The resource bundle provides an - // alternate way to - // override DLL name or path that will be loaded with Jacob regardless - // of other - // initialization order. - ResourceBundle resources = null; - Set keys = new HashSet(); - try { - resources = ResourceBundle.getBundle(LibraryLoader.class.getName(), - Locale.getDefault(), LibraryLoader.class.getClassLoader()); - for (Enumeration i = resources.getKeys(); i - .hasMoreElements();) { - String key = i.nextElement(); - keys.add(key); - } - } catch (MissingResourceException e) { - // Do nothing. Expected. - } - - // First, check for a defined PATH. System property overrides resource - // bundle. - String path = System.getProperty(JACOB_DLL_PATH); - if (path == null && resources != null && keys.contains(JACOB_DLL_PATH)) { - path = (String) resources.getObject(JACOB_DLL_PATH); - } - - if (path != null) { - JacobObject.debug("Loading library " + path - + " using System.loadLibrary "); - System.load(path); - } else { - // Path was not defined, so use the OS mechanism for loading - // libraries. - // Check for a defined NAME. System property overrides resource - // bundle. - String name = null; - - if (System.getProperty(JACOB_DLL_NAME) != null) { - name = System.getProperty(JACOB_DLL_NAME); - } else if (System.getProperty(JACOB_DLL_NAME_X86) != null - && shouldLoad32Bit()) { - name = System.getProperty(JACOB_DLL_NAME_X86); - } else if (System.getProperty(JACOB_DLL_NAME_X64) != null - && !shouldLoad32Bit()) { - name = System.getProperty(JACOB_DLL_NAME_X64); - } else if (resources != null && keys.contains(JACOB_DLL_NAME)) { - name = resources.getString(JACOB_DLL_NAME); - } else if (resources != null && keys.contains(JACOB_DLL_NAME_X86) - && shouldLoad32Bit()) { - name = resources.getString(JACOB_DLL_NAME_X86); - } else if (resources != null && keys.contains(JACOB_DLL_NAME_X64) - && !shouldLoad32Bit()) { - name = resources.getString(JACOB_DLL_NAME_X64); - } else { - // No alternate NAME or PATH was defined, so use the default. - // We will almost always end up here. - name = getPreferredDLLName(); - } - - JacobObject.debug("Loading library " + name - + " using System.loadLibrary "); - // System.out.println("Loading " + name); - System.loadLibrary(name); - } - } - - /** - * Developer note: This method MUST be synchronized with the DLL names - * created as part of the build process in build.xml - *

- * The DLL name is "jacob\.release" - * - * @return the preferred name of the DLL adjusted for this platform and - * version without the ".dll" extension - */ - public static String getPreferredDLLName() { - if (shouldLoad32Bit()) { - return "jacob" + "-" + JacobReleaseInfo.getBuildVersion() + "-" - + DLL_NAME_MODIFIER_32_BIT; - } else { - return "jacob" + "-" + JacobReleaseInfo.getBuildVersion() + "-" - + DLL_NAME_MODIFIER_64_BIT; - } - } - - /** - * Detects whether this is a 32-bit JVM. - * - * @return {@code true} if this is a 32-bit JVM. - */ - protected static boolean shouldLoad32Bit() { - // This guesses whether we are running 32 or 64 bit Java. - // This works for Sun and IBM JVMs version 5.0 or later. - // May need to be adjusted for non-Sun JVMs. - - String bits = System.getProperty("sun.arch.data.model", "?"); - if (bits.equals("32")) - return true; - else if (bits.equals("64")) - return false; - - // this works for jRocket - String arch = System.getProperty("java.vm.name", "?"); - if (arch.toLowerCase().indexOf("64-bit") >= 0) - return false; - - return true; - } -} // LibraryLoader diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/MainSTA.java b/vendor/jacob/1.15-M4/java/com/jacob/com/MainSTA.java deleted file mode 100644 index a87e3c4..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/MainSTA.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -/** - * We provide our own main sta thread to avoid COM tagging a random thread as - * the main STA - this is the thread in which all Apartment threaded components - * will be created if the client chooses an MTA threading model for the java - * side of the app. - */ -public class MainSTA extends STA { -} \ No newline at end of file diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/NotImplementedException.java b/vendor/jacob/1.15-M4/java/com/jacob/com/NotImplementedException.java deleted file mode 100644 index c5773b5..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/NotImplementedException.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -/** - * Thrown by java APIs that are not implemented either because they were never - * implemented or because they are being deprecated This is a subclass of - * ComException so callers can still just catch ComException. - */ -public class NotImplementedException extends JacobException { - - /** - * - */ - private static final long serialVersionUID = -9169900832852356445L; - - /** - * @param description - */ - public NotImplementedException(String description) { - super(description); - } - -} diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/ROT.java b/vendor/jacob/1.15-M4/java/com/jacob/com/ROT.java deleted file mode 100644 index 7b50fd3..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/ROT.java +++ /dev/null @@ -1,279 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.WeakHashMap; - -/** - * The Running Object Table (ROT) maps each thread to a collection of all the - * JacobObjects that were created in that thread. It always operates on the - * current thread so all the methods are static and they implicitly get the - * current thread. - *

- * The clearObjects method is used to release all the COM objects created by - * Jacob in the current thread prior to uninitializing COM for that thread. - *

- * Prior to 1.9, manual garbage collection was the only option in Jacob, but - * from 1.9 onward, setting the com.jacob.autogc system property allows the - * objects referenced by the ROT to be automatically GCed. Automatic GC may be - * preferable in systems with heavy event callbacks. - *

- * Is [ 1116101 ] jacob-msg 0284 relevant??? - */ -public abstract class ROT { - /** - * Manual garbage collection was the only option pre 1.9 Can staticly cache - * the results because only one value and we don't let it change during a - * run - */ - protected static final boolean USE_AUTOMATIC_GARBAGE_COLLECTION = "true" - .equalsIgnoreCase(System.getProperty("com.jacob.autogc")); - - /** - * If the code is ran from an applet that is called from javascript the Java - * Plugin does not give full permissions to the code and thus System - * properties cannot be accessed. They can be accessed at class - * initialization time. - * - * The default behavior is to include all classes in the ROT, setting a - * boolean here to indicate this prevents a call to System.getProperty as - * part of the general call flow. - */ - protected static final Boolean INCLUDE_ALL_CLASSES_IN_ROT = Boolean - .valueOf(System.getProperty("com.jacob.includeAllClassesInROT", - "true")); - - /** - * Suffix added to class name to make up property name that determines if - * this object should be stored in the ROT. This 1.13 "feature" makes it - * possible to cause VariantViaEvent objects to not be added to the ROT in - * event callbacks. - *

- * We don't have a static for the actual property because there is a - * different property for each class that may make use of this feature. - */ - protected static String PUT_IN_ROT_SUFFIX = ".PutInROT"; - - /** - * A hash table where each element is another HashMap that represents a - * thread. Each thread HashMap contains the com objects created in that - * thread - */ - private static HashMap> rot = new HashMap>(); - - /** - * adds a new thread storage area to rot - * - * @return Map corresponding to the thread that this call was made in - */ - protected synchronized static Map addThread() { - // should use the id here instead of the name because the name can be - // changed - String t_name = Thread.currentThread().getName(); - if (rot.containsKey(t_name)) { - // nothing to do - } else { - Map tab = null; - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("ROT: Automatic GC flag == " - + USE_AUTOMATIC_GARBAGE_COLLECTION); - } - if (!USE_AUTOMATIC_GARBAGE_COLLECTION) { - tab = new HashMap(); - } else { - tab = new WeakHashMap(); - } - rot.put(t_name, tab); - } - return getThreadObjects(false); - } - - /** - * Returns the pool for this thread if it exists. can create a new one if - * you wish by passing in TRUE - * - * @param createIfDoesNotExist - * @return Map the collection that holds the objects created in the current - * thread - */ - protected synchronized static Map getThreadObjects( - boolean createIfDoesNotExist) { - String t_name = Thread.currentThread().getName(); - if (!rot.containsKey(t_name) && createIfDoesNotExist) { - addThread(); - } - return rot.get(t_name); - } - - /** - * Iterates across all of the entries in the Hashmap in the rot that - * corresponds to this thread. This calls safeRelease() on each entry and - * then clears the map when done and removes it from the rot. All traces of - * this thread's objects will disappear. This is called by COMThread in the - * tear down and provides a synchronous way of releasing memory - */ - protected static void clearObjects() { - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("ROT: " + rot.keySet().size() - + " thread tables exist"); - } - - Map tab = getThreadObjects(false); - if (tab != null) { - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("ROT: " + tab.keySet().size() - + " objects to clear in this thread's ROT "); - } - // walk the values - Iterator it = tab.keySet().iterator(); - while (it.hasNext()) { - JacobObject o = it.next(); - if (o != null - // can't use this cause creates a Variant if calling SafeAray - // and we get an exception modifying the collection while - // iterating - // && o.toString() != null - ) { - if (JacobObject.isDebugEnabled()) { - if (o instanceof SafeArray) { - // SafeArray create more objects when calling - // toString() - // which causes a concurrent modification exception - // in HashMap - JacobObject.debug("ROT: removing " - + o.getClass().getName()); - } else { - // Variant toString() is probably always bad in here - JacobObject.debug("ROT: removing " + o.hashCode() - + "->" + o.getClass().getName()); - } - } - o.safeRelease(); - } - } - // empty the collection - tab.clear(); - // remove the collection from rot - ROT.removeThread(); - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("ROT: thread table cleared and removed"); - } - } else { - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("ROT: nothing to clear!"); - } - } - } - - /** - * Removes the map from the rot that is associated with the current thread. - */ - private synchronized static void removeThread() { - // should this see if it exists first? - rot.remove(Thread.currentThread().getName()); - } - - /** - * @deprecated the java model leave the responsibility of clearing up - * objects to the Garbage Collector. Our programming model - * should not require that the user specifically remove object - * from the thread.
- * This will remove an object from the ROT
- * This does not need to be synchronized because only the rot - * modification related methods need to synchronized. Each - * individual map is only modified in a single thread. - * @param o - */ - @Deprecated - protected static void removeObject(JacobObject o) { - Map tab = ROT.getThreadObjects(false); - if (tab != null) { - tab.remove(o); - } - o.safeRelease(); - } - - /** - * Adds an object to the HashMap for the current thread.
- *

- * This method does not need to be threaded because the only concurrent - * modification risk is on the hash map that contains all of the thread - * related hash maps. The individual thread related maps are only used on a - * per thread basis so there isn't a locking issue. - *

- * In addition, this method cannot be threaded because it calls - * ComThread.InitMTA. The ComThread object has some methods that call ROT so - * we could end up deadlocked. This method should be safe without the - * synchronization because the ROT works on per thread basis and the methods - * that add threads and remove thread related entries are all synchronized - * - * - * @param o - */ - protected static void addObject(JacobObject o) { - String shouldIncludeClassInROT = "true"; - // only call System.getProperty if we are not including all classes in - // the ROT. This lets us run with standard Jacob behavior in Applets - // without the security exception raised by System.getProperty in the - // flow - if (!ROT.INCLUDE_ALL_CLASSES_IN_ROT) { - shouldIncludeClassInROT = System.getProperty(o.getClass().getName() - + PUT_IN_ROT_SUFFIX, "true"); - } - if (shouldIncludeClassInROT.equalsIgnoreCase("false")) { - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("JacobObject: New instance of " - + o.getClass().getName() + " not added to ROT"); - } - } else { - // first see if we have a table for this thread - Map tab = getThreadObjects(false); - if (tab == null) { - // this thread has not been initialized as a COM thread - // so make it part of MTA for backwards compatibility - ComThread.InitMTA(false); - // don't really need the "true" because the InitMTA will have - // called back to the ROT to create a table for this thread - tab = getThreadObjects(true); - } - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("ROT: adding " + o + "->" - + o.getClass().getName() - + " table size prior to addition:" + tab.size()); - } - // add the object to the table that is specific to this thread - if (tab != null) { - tab.put(o, null); - } - } - } - - /** - * ROT can't be a subclass of JacobObject because of the way ROT pools are - * managed so we force a DLL load here by referencing JacobObject - */ - static { - LibraryLoader.loadJacobLibrary(); - } - -} diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/STA.java b/vendor/jacob/1.15-M4/java/com/jacob/com/STA.java deleted file mode 100644 index 837e2d3..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/STA.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -/** - * A class that implements a Single Threaded Apartment. Users will subclass this - * and override OnInit() and OnQuit() where they will create and destroy a COM - * component that wants to run in an STA other than the main STA. - */ -public class STA extends Thread { - /** - * referenced by STA.cpp - */ - public int threadID; - - /** - * constructor for STA - */ - public STA() { - start(); // start the thread - } - - /* - * (non-Javadoc) - * - * @see java.lang.Thread#run() - */ - public void run() { - // init COM - ComThread.InitSTA(); - if (OnInit()) { - // this call blocks in the win32 message loop - // until quitMessagePump is called - doMessagePump(); - } - OnQuit(); - // uninit COM - ComThread.Release(); - } - - /** - * Override this method to create and initialize any COM component that you - * want to run in this thread. If anything fails, return false to terminate - * the thread. - * - * @return always returns true - */ - public boolean OnInit() { - return true; - } - - /** - * Override this method to destroy any resource before the thread exits and - * COM in uninitialized - */ - public void OnQuit() { - // there is nothing to see here - } - - /** - * calls quitMessagePump - */ - public void quit() { - quitMessagePump(); - } - - /** - * run a message pump for the main STA - */ - public native void doMessagePump(); - - /** - * quit message pump for the main STA - */ - public native void quitMessagePump(); - - /** - * STA isn't a subclass of JacobObject so a reference to it doesn't load the - * DLL without this - */ - static { - LibraryLoader.loadJacobLibrary(); - } -} \ No newline at end of file diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/SafeArray.java b/vendor/jacob/1.15-M4/java/com/jacob/com/SafeArray.java deleted file mode 100644 index f250d81..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/SafeArray.java +++ /dev/null @@ -1,1172 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -/** - * This creates an array wrapper around Variant objects(?). This supports 1, 2 - * and n-dimensional arrays. It exists in this form because n-dimensional arrays - * were a later addition. - */ -public class SafeArray extends JacobObject { - /** The super secret int that is actually the pointer to windows memory */ - int m_pV = 0; - - /** - * Constructor. Why does this exist? Yeah, someone will post on sourceforge - * about this comment. - * - */ - public SafeArray() { - } - - /** - * Constructor. - * - * @param vt - * type of array - */ - public SafeArray(int vt) { - init(vt, new int[] { 0 }, new int[] { -1 }); - } - - /** - * Constructor for a single dimensional array whose lower bounds is 0 and - * whose upper bound is specified as a parameter - * - * @param vt - * type of the array - * @param celems - * length of the array - */ - public SafeArray(int vt, int celems) { - init(vt, new int[] { 0 }, new int[] { celems }); - } - - /** - * Creates a two dimensional SafeArray whose base indexes are 0. - * - * @param vt - * Type of the array - * @param celems1 - * length of the array in first dimension - * @param celems2 - * length of the array in second dimension - */ - public SafeArray(int vt, int celems1, int celems2) { - init(vt, new int[] { 0, 0 }, new int[] { celems1, celems2 }); - } - - /** - * Constructor with support for N-dimensional array support - *

- * You create an N-D SafeArray by: SafeArray sa = new - * SafeArray(Variant.VariantVariant, new int[] {0,0,0,0}, new int[] - * {4,4,4,4}); Where the 1st array is lower bounds and 2nd has the lengths - * of each dimension * - * - * @param vt - * @param lbounds - * @param celems - */ - public SafeArray(int vt, int lbounds[], int celems[]) { - init(vt, lbounds, celems); - } - - /** - * convert a string to a VT_UI1 array - * - * @param s - * source string - */ - public SafeArray(String s) { - char[] ca = s.toCharArray(); - init(Variant.VariantByte, new int[] { 0 }, new int[] { ca.length }); - fromCharArray(ca); - } - - /** - * convert a VT_UI1 array to string - * - * @return variant byte as a string - */ - public String asString() { - if (getvt() != Variant.VariantByte) { - return null; - } - char ja[] = toCharArray(); - return new String(ja); - } - - public native Object clone(); - - /** - * now private so only this object can access. Was: call this to explicitly - * release the com object before gc - * - */ - private native void destroy(); - - /** - * {@inheritDoc} - */ - protected void finalize() { - safeRelease(); - } - - /** - * populate the safe array from the passed in array of data - * - * @param ja - */ - public native void fromBooleanArray(boolean ja[]); - - /** - * populate the safe array from the passed in array of data - * - * @param ja - */ - public native void fromByteArray(byte ja[]); - - /** - * populate the safe array from the passed in array of data - * - * @param ja - */ - public native void fromCharArray(char ja[]); - - /** - * populate the safe array from the passed in array of data - * - * @param ja - */ - public native void fromDoubleArray(double ja[]); - - /** - * populate the safe array from the passed in array of data - * - * @param ja - */ - public native void fromFloatArray(float ja[]); - - /** - * populate the safe array from the passed in array of data - * - * @param ja - */ - public native void fromIntArray(int ja[]); - - /** - * populate the safe array from the passed in array of data - * - * @param ja - */ - public native void fromLongArray(long ja[]); - - /** - * populate the safe array from the passed in array of data - * - * @param ja - */ - public native void fromShortArray(short ja[]); - - /** - * populate the safe array from the passed in array of data - * - * @param ja - */ - public native void fromStringArray(String ja[]); - - /** - * populate the safe array from the passed in array of data - * - * @param ja - */ - public native void fromVariantArray(Variant ja[]); - - /** - * boolean access - * - * @param sa_idx - * @return boolean representation - */ - public native boolean getBoolean(int sa_idx); - - /** - * get boolean value from N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @return the value at the specified location - */ - public native boolean getBoolean(int indices[]); - - /** - * boolean access - * - * @param sa_idx1 - * @param sa_idx2 - * @return boolean representation - */ - public native boolean getBoolean(int sa_idx1, int sa_idx2); - - /** - * boolean access - * - * @param sa_idx - * @param nelems - * @param ja - * @param ja_start - */ - public native void getBooleans(int sa_idx, int nelems, boolean ja[], - int ja_start); - - /** - * byte access - * - * @param sa_idx - * @return byte representaton - */ - public native byte getByte(int sa_idx); - - /** - * get byte value from N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @return the value at the specified location - */ - public native byte getByte(int indices[]); - - /** - * byte access - * - * @param sa_idx1 - * @param sa_idx2 - * @return byte representation - */ - public native byte getByte(int sa_idx1, int sa_idx2); - - /** - * Fills byte array from contents of this array - * - * @param sa_idx - * @param nelems - * @param ja - * @param ja_start - */ - public native void getBytes(int sa_idx, int nelems, byte ja[], int ja_start); - - /** - * char access - * - * @param sa_idx - * @return single character rpeesentation - */ - public native char getChar(int sa_idx); - - /** - * get char value from N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @return the value at the specified location - */ - public native char getChar(int indices[]); - - /** - * char access - * - * @param sa_idx1 - * @param sa_idx2 - * @return single character representation - */ - public native char getChar(int sa_idx1, int sa_idx2); - - /** - * char access - * - * @param sa_idx - * @param nelems - * @param ja - * @param ja_start - */ - public native void getChars(int sa_idx, int nelems, char ja[], int ja_start); - - /** - * double access - * - * @param sa_idx - * @return double stored in array - */ - public native double getDouble(int sa_idx); - - /** - * get double value from N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @return the value at the specified location - */ - public native double getDouble(int indices[]); - - /** - * double access - * - * @param sa_idx1 - * @param sa_idx2 - * @return double stored in array - */ - public native double getDouble(int sa_idx1, int sa_idx2); - - /** - * double access - * - * @param sa_idx - * @param nelems - * @param ja - * @param ja_start - */ - public native void getDoubles(int sa_idx, int nelems, double ja[], - int ja_start); - - /** - * @return the size of each element? - */ - public native int getElemSize(); - - /** - * @return The ??features of the array? - */ - public native int getFeatures(); - - /** - * float access - * - * @param sa_idx - * @return float held in array at location - */ - public native float getFloat(int sa_idx); - - /** - * get float value from N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @return the value at the specified location - */ - public native float getFloat(int indices[]); - - /** - * float access - * - * @param sa_idx1 - * @param sa_idx2 - * @return float held in array at location - */ - public native float getFloat(int sa_idx1, int sa_idx2); - - /** - * float access - * - * @param sa_idx - * @param nelems - * @param ja - * @param ja_start - */ - public native void getFloats(int sa_idx, int nelems, float ja[], - int ja_start); - - /** - * get int from an single dimensional array - * - * @param sa_idx - * array index - * @return int stored in array - */ - public native int getInt(int sa_idx); - - /** - * get int value from N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @return the value at the specified location - */ - public native int getInt(int indices[]); - - /** - * get int from 2 dimensional array - * - * @param sa_idx1 - * array index first dimension - * @param sa_idx2 - * array index of second dimension - * @return int stored in array - */ - public native int getInt(int sa_idx1, int sa_idx2); - - /** - * retrieves a group of ints from a single dimensional array - * - * @param sa_idx - * the index in the array to start the get - * @param nelems - * number of elements to retrieve - * @param ja - * the structure to be filled with the ints - * @param ja_start - * the start point in the java int array to start filling - */ - public native void getInts(int sa_idx, int nelems, int ja[], int ja_start); - - /** - * get int from an single dimensional array - * - * @param sa_idx - * array index - * @return long stored in array - */ - public native long getLong(int sa_idx); - - /** - * get long value from N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @return the value at the specified location - */ - public native long getLong(int indices[]); - - /** - * get long from 2 dimensional array - * - * @param sa_idx1 - * array index first dimension - * @param sa_idx2 - * array index of second dimension - * @return long stored in array - */ - public native long getLong(int sa_idx1, int sa_idx2); - - /** - * retrieves a group of longs from a single dimensional array - * - * @param sa_idx - * the index in the array to start the get - * @param nelems - * number of elements to retrieve - * @param ja - * the structure to be filled with the longs - * @param ja_start - * the start point in the java longs array to start filling - */ - public native void getLongs(int sa_idx, int nelems, long ja[], int ja_start); - - /** - * @return The lower bounds of the array? - */ - public native int getLBound(); - - /** - * @param dim - * the dimension we are checking in a multidimensional array - * @return The lower bounds of the array? - */ - public native int getLBound(int dim); - - /** - * @return The number of dimensions in this array - */ - public native int getNumDim(); - - /** - * not implemented. - * - * @return 0 - */ - public int getNumLocks() { - return 0; - } - - /** - * short access - * - * @param sa_idx - * @return short stored in array - */ - public native short getShort(int sa_idx); - - /** - * get short value from N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @return the value at the specified location - */ - public native short getShort(int indices[]); - - /** - * short access - * - * @param sa_idx1 - * @param sa_idx2 - * @return short stored in array - */ - public native short getShort(int sa_idx1, int sa_idx2); - - /** - * short access - * - * @param sa_idx - * @param nelems - * @param ja - * @param ja_start - */ - public native void getShorts(int sa_idx, int nelems, short ja[], - int ja_start); - - /** - * string access - * - * @param sa_idx - * @return String stored in array - * - */ - public native String getString(int sa_idx); - - /** - * get String value from N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @return the value at the specified location - */ - public native String getString(int indices[]); - - /** - * string access - * - * @param sa_idx1 - * @param sa_idx2 - * @return String stored in array - */ - public native String getString(int sa_idx1, int sa_idx2); - - /** - * string access - * - * @param sa_idx - * @param nelems - * @param ja - * @param ja_start - */ - public native void getStrings(int sa_idx, int nelems, String ja[], - int ja_start); - - /** - * @return The upper bounds of the array? - */ - public native int getUBound(); - - /** - * @param dim - * the dimension we are checking in a multidimensional array - * @return The upper bounds of the array? - */ - public native int getUBound(int dim); - - /** - * variant access - * - * @param sa_idx - * @return Variant held in location in the array? - */ - public native Variant getVariant(int sa_idx); - - /** - * get Variant value from N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @return the value at the specified location - */ - public native Variant getVariant(int indices[]); - - /** - * variant access - * - * @param sa_idx1 - * @param sa_idx2 - * @return Variant held in a location in the array? - */ - public native Variant getVariant(int sa_idx1, int sa_idx2); - - /** - * variant access - * - * @param sa_idx - * @param nelems - * @param ja - * @param ja_start - */ - public native void getVariants(int sa_idx, int nelems, Variant ja[], - int ja_start); - - /** - * @return the Variant type - */ - public native int getvt(); - - protected native void init(int vt, int lbounds[], int celems[]); - - /** - * Does anyone want to document this? - * - * @param sa - */ - public native void reinit(SafeArray sa); - - /** - * Does anyone want to document this? - * - * @param vt - * the variant type? - */ - public native void reinterpretType(int vt); - - /** - * {@inheritDoc} - */ - public void safeRelease() { - super.safeRelease(); - if (m_pV != 0) { - destroy(); - m_pV = 0; - } else { - // looks like a double release - if (isDebugEnabled()) { - debug(this.getClass().getName() + ":" + this.hashCode() - + " double release"); - } - } - } - - /** - * boolean access - * - * @param sa_idx - * @param c - */ - public native void setBoolean(int sa_idx, boolean c); - - /** - * set boolean value in N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @param c - */ - public native void setBoolean(int indices[], boolean c); - - /** - * boolean access - * - * @param sa_idx1 - * @param sa_idx2 - * @param c - */ - public native void setBoolean(int sa_idx1, int sa_idx2, boolean c); - - /** - * boolean access - * - * @param sa_idx - * @param nelems - * @param ja - * @param ja_start - */ - public native void setBooleans(int sa_idx, int nelems, boolean ja[], - int ja_start); - - /** - * byte access - * - * @param sa_idx - * @param c - */ - public native void setByte(int sa_idx, byte c); - - /** - * set byte value in N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @param c - */ - public native void setByte(int indices[], byte c); - - /** - * byte access - * - * @param sa_idx1 - * @param sa_idx2 - * @param c - */ - public native void setByte(int sa_idx1, int sa_idx2, byte c); - - /** - * fills array with passed in bytes - * - * @param sa_idx - * @param nelems - * @param ja - * @param ja_start - */ - public native void setBytes(int sa_idx, int nelems, byte ja[], int ja_start); - - /** - * char access - * - * @param sa_idx - * @param c - */ - public native void setChar(int sa_idx, char c); - - /** - * set char value in N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @param c - */ - public native void setChar(int indices[], char c); - - /** - * char access - * - * @param sa_idx1 - * @param sa_idx2 - * @param c - */ - public native void setChar(int sa_idx1, int sa_idx2, char c); - - /** - * char access - * - * @param sa_idx - * @param nelems - * @param ja - * @param ja_start - */ - public native void setChars(int sa_idx, int nelems, char ja[], int ja_start); - - /** - * double access - * - * @param sa_idx - * @param c - */ - public native void setDouble(int sa_idx, double c); - - /** - * set double value in N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @param c - */ - public native void setDouble(int indices[], double c); - - /** - * double access - * - * @param sa_idx1 - * @param sa_idx2 - * @param c - */ - public native void setDouble(int sa_idx1, int sa_idx2, double c); - - /** - * double access - * - * @param sa_idx - * @param nelems - * @param ja - * @param ja_start - */ - public native void setDoubles(int sa_idx, int nelems, double ja[], - int ja_start); - - /** - * float access - * - * @param sa_idx - * @param c - */ - public native void setFloat(int sa_idx, float c); - - /** - * set float value in N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @param c - */ - public native void setFloat(int indices[], float c); - - /** - * float access - * - * @param sa_idx1 - * @param sa_idx2 - * @param c - */ - public native void setFloat(int sa_idx1, int sa_idx2, float c); - - /** - * float access - * - * @param sa_idx - * @param nelems - * @param ja - * @param ja_start - */ - public native void setFloats(int sa_idx, int nelems, float ja[], - int ja_start); - - /** - * sets the int value of an element in a single dimensional array - * - * @param sa_idx - * index into the array - * @param c - * the value to be set - */ - public native void setInt(int sa_idx, int c); - - /** - * set int value in N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @param c - */ - public native void setInt(int indices[], int c); - - /** - * sets the int value of a 2 dimensional array - * - * @param sa_idx1 - * index on the first dimension - * @param sa_idx2 - * index on the second dimension - * @param c - * the value to be set - */ - public native void setInt(int sa_idx1, int sa_idx2, int c); - - /** - * sets a group of ints into a single dimensional array - * - * @param sa_idx - * the index of the start of the array to put into - * @param nelems - * number of elements to be copied - * @param ja - * the new int values to be put into the array - * @param ja_start - * the start index in the array that we are copying into - * SafeArray - */ - public native void setInts(int sa_idx, int nelems, int ja[], int ja_start); - - /** - * sets the long value of an element in a single dimensional array - * - * @param sa_idx - * index into the array - * @param c - * the value to be set - */ - public native void setLong(int sa_idx, long c); - - /** - * set long value in N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @param c - */ - public native void setLong(int indices[], long c); - - /** - * sets the long value of a 2 dimensional array - * - * @param sa_idx1 - * index on the first dimension - * @param sa_idx2 - * index on the second dimension - * @param c - * the value to be set - */ - public native void setLong(int sa_idx1, int sa_idx2, long c); - - /** - * sets a group of longs into a single dimensional array - * - * @param sa_idx - * the index of the start of the array to put into - * @param nelems - * number of elements to be copied - * @param ja - * the new long values to be put into the array - * @param ja_start - * the start index in the array that we are copying into - * SafeArray - */ - public native void setLongs(int sa_idx, int nelems, long ja[], int ja_start); - - /** - * short access - * - * @param sa_idx1 - * @param sa_idx2 - * @param c - */ - public native void setShort(int sa_idx1, int sa_idx2, short c); - - /** - * short access - * - * @param sa_idx - * @param c - */ - public native void setShort(int sa_idx, short c); - - /** - * set short value in N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @param c - */ - public native void setShort(int indices[], short c); - - /** - * short access - * - * @param sa_idx - * @param nelems - * @param ja - * @param ja_start - */ - public native void setShorts(int sa_idx, int nelems, short ja[], - int ja_start); - - /** - * puts a string into an element in a two dimensional array. - * - * @param sa_idx1 - * @param sa_idx2 - * @param c - */ - public native void setString(int sa_idx1, int sa_idx2, String c); - - /* - * ================================================================ The - * beginning of N-dimensional array support - * ================================================================ - */ - - /** - * puts a string into an element in a single dimensional safe array - * - * @param sa_idx - * @param c - */ - public native void setString(int sa_idx, String c); - - /** - * set Stringvalue in N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @param c - */ - public native void setString(int indices[], String c); - - /** - * string access - * - * @param sa_idx - * @param nelems - * @param ja - * @param ja_start - */ - public native void setStrings(int sa_idx, int nelems, String ja[], - int ja_start); - - /** - * variant access - * - * @param sa_idx1 - * @param sa_idx2 - * @param c - */ - public native void setVariant(int sa_idx1, int sa_idx2, Variant c); - - /** - * variant access - * - * @param sa_idx - * @param c - */ - public native void setVariant(int sa_idx, Variant c); - - /** - * set Variant value in N-dimensional array - * - * @param indices - - * length must equal Dimension of SafeArray - * @param v - */ - public native void setVariant(int indices[], Variant v); - - /** - * variant access - * - * @param sa_idx - * @param nelems - * @param ja - * @param ja_start - */ - public native void setVariants(int sa_idx, int nelems, Variant ja[], - int ja_start); - - /** - * Retrieves the data from the array cast to a Java data type - * - * @return boolean[] array of booleans contained in this collection - */ - public native boolean[] toBooleanArray(); - - /** - * Retrieves the data from the array cast to a Java data type - * - * @return byte[] byte array contained in this collection - */ - public native byte[] toByteArray(); - - /** - * Retrieves the data from the array cast to a Java data type - * - * @return char[] character array contained in this collection - */ - public native char[] toCharArray(); - - /** - * Retrieves the data from the array cast to a Java data type - * - * @return double[] double array contained in this collection - */ - public native double[] toDoubleArray(); - - /** - * Retrieves the data from the array cast to a Java data type - * - * @return float[] array of float contained in this collection - */ - public native float[] toFloatArray(); - - /** - * Retrieves the data from the array cast to a Java data type - * - * @return int[] int array contained in this collection - */ - public native int[] toIntArray(); - - /** - * Retrieves the data from the array cast to a Java data type - * - * @return long[] long array contained in this collection - */ - public native long[] toLongArray(); - - /** - * Retrieves the data from the array cast to a Java data type - * - * @return short[] short array contained in this collection - */ - public native short[] toShortArray(); - - /** - * Standard toString() Warning, this creates new Variant objects! - * - * @return String contents of variant - */ - public String toString() { - String s = ""; - int ndim = getNumDim(); - if (ndim == 1) { - int ldim = getLBound(); - int udim = getUBound(); - for (int i = ldim; i <= udim; i++) { - Variant v = getVariant(i); - - if (((v.getvt() & Variant.VariantTypeMask) | Variant.VariantArray) == v - .getvt()) { - return s + "[" + v.toSafeArray().toString() + "]"; - } else { - s += " " + v.toString(); - } - } - } else if (ndim == 2) { - int ldim1 = getLBound(1); - int udim1 = getUBound(1); - - int ldim2 = getLBound(2); - int udim2 = getUBound(2); - - for (int i = ldim1; i <= udim1; i++) { - for (int j = ldim2; j <= udim2; j++) { - Variant v = getVariant(i, j); - s += " " + v.toString(); - } - s += "\n"; - } - } - return s; - } - - /** - * Retrieves the data from the array cast to a Java data type - * - * @return String[] String array contained in this collection - */ - public native String[] toStringArray(); - - /** - * Retrieves the data from the array cast to a Java data type - * - * @return Variant[] array of variants contained in this collection - */ - public native Variant[] toVariantArray(); - -} \ No newline at end of file diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/Variant.java b/vendor/jacob/1.15-M4/java/com/jacob/com/Variant.java deleted file mode 100644 index 91ae210..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/Variant.java +++ /dev/null @@ -1,2235 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -import java.math.BigDecimal; -import java.math.BigInteger; -import java.util.Date; - -/** - * The multi-format data type used for all call backs and most communications - * between Java and COM. It provides a single class that can handle all data - * types. - *

- * Just loading this class creates 3 variants that get added to the ROT - *

- * PROPVARIANT introduces new types so eventually Variant will need to be - * upgraded to support PropVariant types. - * http://blogs.msdn.com/benkaras/archive/2006/09/13/749962.aspx - *

- * This object no longer implements Serializable because serialization is broken - * (and has been since 2000/xp). The underlying marshalling/unmarshalling code - * is broken in the JNI layer. - */ -public class Variant extends JacobObject { - - /** - * Use this constant for optional parameters - */ - public final static com.jacob.com.Variant DEFAULT; - - /** - * Same than {@link #DEFAULT} - */ - public final static com.jacob.com.Variant VT_MISSING; - - /** - * Use for true/false variant parameters - */ - public final static com.jacob.com.Variant VT_TRUE = new com.jacob.com.Variant( - true); - - /** - * Use for true/false variant parameters - */ - public final static com.jacob.com.Variant VT_FALSE = new com.jacob.com.Variant( - false); - - /** variant's type is empty : equivalent to VB Nothing and VT_EMPTY */ - public static final short VariantEmpty = 0; - - /** variant's type is null : equivalent to VB Null and VT_NULL */ - public static final short VariantNull = 1; - - /** variant's type is short VT_I2 */ - public static final short VariantShort = 2; - - /** variant's type is int VT_I4, a Long in VC */ - public static final short VariantInt = 3; - - /** variant's type is float VT_R4 */ - public static final short VariantFloat = 4; - - /** variant's type is double VT_R8 */ - public static final short VariantDouble = 5; - - /** variant's type is currency VT_CY */ - public static final short VariantCurrency = 6; - - /** variant's type is date VT_DATE */ - public static final short VariantDate = 7; - - /** variant's type is string also known as VT_BSTR */ - public static final short VariantString = 8; - - /** variant's type is dispatch VT_DISPATCH */ - public static final short VariantDispatch = 9; - - /** variant's type is error VT_ERROR */ - public static final short VariantError = 10; - - /** variant's type is boolean VT_BOOL */ - public static final short VariantBoolean = 11; - - /** variant's type is variant it encapsulate another variant VT_VARIANT */ - public static final short VariantVariant = 12; - - /** variant's type is object VT_UNKNOWN */ - public static final short VariantObject = 13; - - /** variant's type is object VT_DECIMAL */ - public static final short VariantDecimal = 14; - - // VT_I1 = 16 - - /** variant's type is byte VT_UI1 */ - public static final short VariantByte = 17; - - // VT_UI2 = 18 - // VT_UI4 = 19 - - /** - * variant's type is 64 bit long integer VT_I8 - not yet implemented in - * Jacob because we have to decide what to do with Currency and because its - * only supported on XP and later. No win2k, NT or 2003 server. - */ - public static final short VariantLongInt = 20; - - // VT_UI8 = 21 - // VT_INT = 22 - // VT_UNIT = 23 - // VT_VOID = 24 - // VT_HRESULT = 25 - - /** - * This value is for reference only and is not to be used by any callers - */ - public static final short VariantPointer = 26; - - // VT_SAFEARRAY = 27 - // VT_CARRARY = 28 - // VT_USERDEFINED = 29 - - /** what is this? VT_TYPEMASK && VT_BSTR_BLOB 0xfff */ - public static final short VariantTypeMask = 4095; - - /** variant's type is array VT_ARRAY 0x2000 */ - public static final short VariantArray = 8192; - - /** variant's type is a reference (to IDispatch?) VT_BYREF 0x4000 */ - public static final short VariantByref = 16384; - - /* - * Do the run time definition of DEFAULT and MISSING. Have to use static - * block because of the way the initialization is done via two calls instead - * of just a constructor for this type. - */ - static { - com.jacob.com.Variant vtMissing = new com.jacob.com.Variant(); - vtMissing.putVariantNoParam(); - DEFAULT = vtMissing; - VT_MISSING = vtMissing; - } - - /** - * Pointer to MS struct. - */ - int m_pVariant = 0; - - /** - * public constructor, initializes and sets type to VariantEmpty - */ - public Variant() { - this(null, false); - } - - /** - * Constructor that accepts a primitive rather than an object - * - * @param in - */ - public Variant(boolean in) { - this(new Boolean(in)); - } - - /** - * Constructor that accepts a primitive rather than an object - * - * @param in - */ - public Variant(byte in) { - this(new Byte(in)); - } - - /** - * Constructor that accepts a primitive rather than an object - * - * @param in - */ - public Variant(double in) { - this(new Double(in)); - } - - /** - * Constructor that accepts a primitive rather than an object - * - * @param in - */ - public Variant(float in) { - this(new Float(in)); - } - - /** - * Constructor that accepts a primitive rather than an object - * - * @param in - */ - public Variant(int in) { - this(new Integer(in)); - }; - - /** - * Constructor that accepts a primitive rather than an object - * - * @param in - */ - public Variant(long in) { - this(new Long(in)); - } - - /** - * Convenience constructor that calls the main one with a byRef value of - * false - * - * @param in - * object to be made into variant - */ - public Variant(Object in) { - this(in, false); - } - - /** - * Constructor that accepts the data object and information about whether - * this is by reference or not. It calls the JavaVariantConverter to - * actually push the data into the newly created Variant. - * - * @param pValueObject - * The value object that will pushed down into windows memory. A - * null object sets this to "empty" - * @param fByRef - */ - public Variant(Object pValueObject, boolean fByRef) { - init(); - VariantUtilities.populateVariant(this, pValueObject, fByRef); - } - - /** - * Constructor that accepts a primitive rather than an object - * - * @param in - */ - public Variant(short in) { - this(new Short(in)); - } - - /** - * Cover for native method so we can cover it. - *

- * This cannot convert an object to a byRef. It can convert from byref to - * not byref - * - * @param in - * type to convert this variant too - * @return Variant returns this same object so folks can change when - * replacing calls toXXX() with changeType().getXXX() - */ - public Variant changeType(short in) { - changeVariantType(in); - return this; - } - - /** - * Converts variant to the passed in type by converting the underlying - * windows variant structure. private so folks use public java method - * - * @param in - * the desired resulting type - */ - private native void changeVariantType(short in); - - /** - * this returns null - * - * @return ?? comment says null? - */ - @Override - public native Object clone(); - - /** - * @deprecated No longer used - * @return null ! - */ - @Deprecated - public native Variant cloneIndirect(); - - /* - * (non-Javadoc) - * - * @see java.lang.Object#finalize() - */ - @Override - protected void finalize() { - safeRelease(); - } - - /** - * - * @return returns the value as a boolean, throws an exception if its not. - * @throws IllegalStateException - * if variant is not of the requested type - */ - public boolean getBoolean() { - if (this.getvt() == VariantBoolean) { - return getVariantBoolean(); - } else { - throw new IllegalStateException( - "getBoolean() only legal on Variants of type VariantBoolean, not " - + this.getvt()); - } - } - - /** - * public cover for native method - * - * @return the boolean from a booleanRef - * @throws IllegalStateException - * if variant is not of the requested type - */ - public boolean getBooleanRef() { - if ((this.getvt() & VariantTypeMask) == VariantBoolean - && (this.getvt() & VariantByref) == VariantByref) { - return getVariantBooleanRef(); - } else { - throw new IllegalStateException( - "getBooleanRef() only legal on byRef Variants of type VariantBoolean, not " - + this.getvt()); - } - } - - /** - * - * @return returns the value as a boolean, throws an exception if its not. - * @throws IllegalStateException - * if variant is not of the requested type - */ - public byte getByte() { - if (this.getvt() == VariantByte) { - return getVariantByte(); - } else { - throw new IllegalStateException( - "getByte() only legal on Variants of type VariantByte, not " - + this.getvt()); - } - } - - /** - * public cover for native method - * - * @return the byte from a booleanRef - * @throws IllegalStateException - * if variant is not of the requested type - */ - public byte getByteRef() { - if ((this.getvt() & VariantTypeMask) == VariantByte - && (this.getvt() & VariantByref) == VariantByref) { - return getVariantByteRef(); - } else { - throw new IllegalStateException( - "getByteRef() only legal on byRef Variants of type VariantByte, not " - + this.getvt()); - } - } - - /** - * MS Currency objects are 64 bit fixed point numbers with 15 digits to the - * left and 4 to the right of the decimal place. - * - * @return returns the currency value as a long, throws exception if not a - * currency type.. - * @throws IllegalStateException - * if variant is not of the requested type - */ - public Currency getCurrency() { - if (this.getvt() == VariantCurrency) { - return new Currency(getVariantCurrency()); - } else { - throw new IllegalStateException( - "getCurrency() only legal on Variants of type VariantCurrency, not " - + this.getvt()); - } - } - - /** - * MS Currency objects are 64 bit fixed point numbers with 15 digits to the - * left and 4 to the right of the decimal place. - * - * @return returns the currency value as a long, throws exception if not a - * currency type - * @throws IllegalStateException - * if variant is not of the requested type - */ - public Currency getCurrencyRef() { - if ((this.getvt() & VariantTypeMask) == VariantCurrency - && (this.getvt() & VariantByref) == VariantByref) { - return new Currency(getVariantCurrencyRef()); - } else { - throw new IllegalStateException( - "getCurrencyRef() only legal on byRef Variants of type VariantCurrency, not " - + this.getvt()); - } - } - - /** - * @return double return the date (as a double) value held in this variant - * (fails on other types?) - * @throws IllegalStateException - * if variant is not of the requested type - */ - public double getDate() { - if (this.getvt() == VariantDate) { - return getVariantDate(); - } else { - throw new IllegalStateException( - "getDate() only legal on Variants of type VariantDate, not " - + this.getvt()); - } - } - - /** - * - * @return returns the date value as a double, throws exception if not a - * date type - * @throws IllegalStateException - * if variant is not of the requested type - */ - public double getDateRef() { - if ((this.getvt() & VariantTypeMask) == VariantDate - && (this.getvt() & VariantByref) == VariantByref) { - return getVariantDateRef(); - } else { - throw new IllegalStateException( - "getDateRef() only legal on byRef Variants of type VariantDate, not " - + this.getvt()); - } - } - - /** - * return the BigDecimal value held in this variant (fails on other types) - * - * @return BigDecimal - * @throws IllegalStateException - * if variant is not of the requested type - */ - public BigDecimal getDecimal() { - if (this.getvt() == VariantDecimal) { - return (BigDecimal) (getVariantDec()); - } else { - throw new IllegalStateException( - "getDecimal() only legal on Variants of type VariantDecimal, not " - + this.getvt()); - } - } - - /** - * return the BigDecimal value held in this variant (fails on other types) - * - * @return BigDecimal - * @throws IllegalStateException - * if variant is not of the requested type - */ - public BigDecimal getDecimalRef() { - if ((this.getvt() & VariantTypeMask) == VariantDecimal - && (this.getvt() & VariantByref) == VariantByref) { - return (BigDecimal) (getVariantDecRef()); - } else { - throw new IllegalStateException( - "getDecimalRef() only legal on byRef Variants of type VariantDecimal, not " - + this.getvt()); - } - } - - /** - * cover for {@link #toDispatch()} This method now matches other getXXX() - * methods. It throws an IllegalStateException if the object is not of type - * VariantDispatch - * - * @return this object as a dispatch - * @throws IllegalStateException - * if wrong variant type - */ - public Dispatch getDispatch() { - if (this.getvt() == VariantDispatch) { - return toDispatch(); - } else { - throw new IllegalStateException( - "getDispatch() only legal on Variants of type VariantDispatch, not " - + this.getvt()); - } - } - - /** - * Dispatch and dispatchRef are treated the same This is just a cover for - * toDispatch() with a flag check - * - * @return the results of toDispatch() - * @throws IllegalStateException - * if variant is not of the requested type - */ - public Dispatch getDispatchRef() { - if ((this.getvt() & VariantTypeMask) == VariantDispatch - && (this.getvt() & VariantByref) == VariantByref) { - return toDispatch(); - } else { - throw new IllegalStateException( - "getDispatchRef() only legal on byRef Variants of type VariantDispatch, not " - + this.getvt()); - } - } - - /** - * @return double return the double value held in this variant (fails on - * other types?) - * @throws IllegalStateException - * if variant is not of the requested type - */ - public double getDouble() { - if (this.getvt() == VariantDouble) { - return getVariantDouble(); - } else { - throw new IllegalStateException( - "getDouble() only legal on Variants of type VariantDouble, not " - + this.getvt()); - } - } - - /** - * - * @return returns the double value, throws exception if not a Double type - * @throws IllegalStateException - * if variant is not of the requested type - */ - public double getDoubleRef() { - if ((this.getvt() & VariantTypeMask) == VariantDouble - && (this.getvt() & VariantByref) == VariantByref) { - return getVariantDoubleRef(); - } else { - throw new IllegalStateException( - "getDoubleRef() only legal on byRef Variants of type VariantDouble, not " - + this.getvt()); - } - } - - /** - * Pointless method that was put here so that putEmpty() has a get method. - * This would have returned null if the value was VT_EMPTY or if it wasn't - * so it would have always returned the same value. - * - * @deprecated method never did anything - */ - @Deprecated - public void getEmpty() { - } - - /** - * @return double return the error value held in this variant (fails on - * other types?) - * @throws IllegalStateException - * if variant is not of the requested type - */ - public int getError() { - if (this.getvt() == VariantError) { - return getVariantError(); - } else { - throw new IllegalStateException( - "getError() only legal on Variants of type VariantError, not " - + this.getvt()); - } - } - - /** - * - * @return returns the error value as an int, throws exception if not a - * Error type - * @throws IllegalStateException - * if variant is not of the requested type - */ - public int getErrorRef() { - if ((this.getvt() & VariantTypeMask) == VariantError - && (this.getvt() & VariantByref) == VariantByref) { - return getVariantErrorRef(); - } else { - throw new IllegalStateException( - "getErrorRef() only legal on byRef Variants of type VariantError, not " - + this.getvt()); - } - } - - /** - * @return returns the value as a float if the type is of type float - * @throws IllegalStateException - * if variant is not of the requested type - */ - public float getFloat() { - if (this.getvt() == VariantFloat) { - return getVariantFloat(); - } else { - throw new IllegalStateException( - "getFloat() only legal on Variants of type VariantFloat, not " - + this.getvt()); - } - } - - /** - * - * @return returns the float value, throws exception if not a Float type - * @throws IllegalStateException - * if variant is not of the requested type - */ - public float getFloatRef() { - if ((this.getvt() & VariantTypeMask) == VariantFloat - && (this.getvt() & VariantByref) == VariantByref) { - return getVariantFloatRef(); - } else { - throw new IllegalStateException( - "getFloatRef() only legal on byRef Variants of type VariantFloat, not " - + this.getvt()); - } - } - - /** - * return the int value held in this variant if it is an int or a short. - * Throws for other types. - * - * @return int contents of the windows memory - * @throws IllegalStateException - * if variant is not of the requested type - */ - public int getInt() { - if (this.getvt() == VariantInt) { - return getVariantInt(); - } else if (this.getvt() == VariantShort) { - return getVariantShort(); - } else { - throw new IllegalStateException( - "getInt() only legal on Variants of type VariantInt, not " - + this.getvt()); - } - } - - /** - * get the content of this variant as an int - * - * @return int - * @throws IllegalStateException - * if variant is not of the requested type - */ - public int getIntRef() { - if ((this.getvt() & VariantTypeMask) == VariantInt - && (this.getvt() & VariantByref) == VariantByref) { - return getVariantIntRef(); - } else { - throw new IllegalStateException( - "getIntRef() only legal on byRef Variants of type VariantInt, not " - + this.getvt()); - } - } - - /** - * returns the windows time contained in this Variant to a Java Date. should - * return null if this is not a date Variant SF 959382 - * - * @return java.util.Date returns the date if this is a VariantDate != 0, - * null if it is a VariantDate == 0 and throws an - * IllegalStateException if this isn't a date. - * @throws IllegalStateException - * if variant is not of the requested type - */ - public Date getJavaDate() { - Date returnDate = null; - if (getvt() == VariantDate) { - double windowsDate = getDate(); - if (windowsDate != 0) { - returnDate = DateUtilities.convertWindowsTimeToDate(getDate()); - } - } else { - throw new IllegalStateException( - "getJavaDate() only legal on Variants of type VariantDate, not " - + this.getvt()); - } - return returnDate; - } - - /** - * returns the windows time contained in this Variant to a Java Date should - * return null if this is not a date reference Variant SF 959382 - * - * @return java.util.Date - */ - public Date getJavaDateRef() { - double windowsDate = getDateRef(); - if (windowsDate == 0) { - return null; - } else { - return DateUtilities.convertWindowsTimeToDate(windowsDate); - } - } - - /** - * 64 bit Longs only available on x64. 64 bit long support added 1.14 - * - * @return returns the value as a long, throws exception if not a Long - * type.. - * @throws IllegalStateException - * if variant is not of the requested type - */ - public long getLong() { - if (this.getvt() == VariantLongInt) { - return getVariantLong(); - } else { - throw new IllegalStateException( - "getLong() only legal on Variants of type VariantLongInt, not " - + this.getvt()); - } - } - - /** - * 64 bit Longs only available on x64. 64 bit long support added 1.14 - * - * @return returns the value as a long, throws exception if not a long type - * @throws IllegalStateException - * if variant is not of the requested type - */ - public long getLongRef() { - if ((this.getvt() & VariantTypeMask) == VariantLongInt - && (this.getvt() & VariantByref) == VariantByref) { - return getVariantLongRef(); - } else { - throw new IllegalStateException( - "getLongRef() only legal on byRef Variants of type VariantLongInt, not " - + this.getvt()); - } - } - - /** - * This method would have returned null if the type was VT_NULL. But because - * we return null if the data is not of the right type, this method should - * have always returned null - * - * @deprecated method never did anything - */ - @Deprecated - public void getNull() { - } - - /** - * return the int value held in this variant (fails on other types?) - * - * @return int - * @throws IllegalStateException - * if variant is not of the requested type - */ - public short getShort() { - if (this.getvt() == VariantShort) { - return getVariantShort(); - } else { - throw new IllegalStateException( - "getShort() only legal on Variants of type VariantShort, not " - + this.getvt()); - } - } - - /** - * get the content of this variant as an int - * - * @return int - * @throws IllegalStateException - * if variant is not of the requested type - */ - public short getShortRef() { - if ((this.getvt() & VariantTypeMask) == VariantShort - && (this.getvt() & VariantByref) == VariantByref) { - return getVariantShortRef(); - } else { - throw new IllegalStateException( - "getShortRef() only legal on byRef Variants of type VariantShort, not " - + this.getvt()); - } - } - - /** - * - * @return string contents of the variant. - * @throws IllegalStateException - * if this variant is not of type String - */ - public String getString() { - if (getvt() == Variant.VariantString) { - return getVariantString(); - } else { - throw new IllegalStateException( - "getString() only legal on Variants of type VariantString, not " - + this.getvt()); - } - } - - /** - * gets the content of the variant as a string ref - * - * @return String retrieved from the COM area. - * @throws IllegalStateException - * if variant is not of the requested type - */ - public String getStringRef() { - if ((this.getvt() & VariantTypeMask) == VariantString - && (this.getvt() & VariantByref) == VariantByref) { - return getVariantStringRef(); - } else { - throw new IllegalStateException( - "getStringRef() only legal on byRef Variants of type VariantString, not " - + this.getvt()); - } - } - - /** - * Used to get the value from a windows type of VT_VARIANT or a jacob - * Variant type of VariantVariant. Added 1.12 pre 6 - VT_VARIANT support is - * at an alpha level - * - * @return Object a java Object that represents the content of the enclosed - * Variant - */ - public Object getVariant() { - if ((this.getvt() & VariantTypeMask) == VariantVariant - && (this.getvt() & VariantByref) == VariantByref) { - if (JacobObject.isDebugEnabled()) { - JacobObject.debug("About to call getVariantVariant()"); - } - Variant enclosedVariant = new Variant(); - int enclosedVariantMemory = getVariantVariant(); - enclosedVariant.m_pVariant = enclosedVariantMemory; - Object enclosedVariantAsJava = enclosedVariant.toJavaObject(); - // zero out the reference to the underlying windows memory so that - // it is still only owned in one place by one java object - // (this object of type VariantVariant) - // enclosedVariant.putEmpty(); // don't know if this would have had - // side effects - if (JacobObject.isDebugEnabled()) { - JacobObject - .debug("Zeroing out enclosed Variant's ref to windows memory"); - } - enclosedVariant.m_pVariant = 0; - return enclosedVariantAsJava; - } else { - throw new IllegalStateException( - "getVariant() only legal on Variants of type VariantVariant, not " - + this.getvt()); - } - } - - /** - * @deprecated superseded by SafeArray - * @return never returns anything - * @throws com.jacob.com.NotImplementedException - */ - @Deprecated - public Variant[] getVariantArray() { - throw new NotImplementedException("Not implemented"); - } - - /** - * @return the Variant Array that represents the data in the Variant - * @deprecated superseded by SafeArray - * @throws com.jacob.com.NotImplementedException - */ - @Deprecated - public Variant[] getVariantArrayRef() { - throw new NotImplementedException("Not implemented"); - } - - /** - * - * @return the value in this Variant as a boolean, null if not a boolean - */ - private native boolean getVariantBoolean(); - - private native boolean getVariantBooleanRef(); - - /** - * @return the value in this Variant as a byte, null if not a byte - */ - private native byte getVariantByte(); - - /** - * @return the value in this Variant as a byte, null if not a byte - */ - private native byte getVariantByteRef(); - - /** - * @return the value in this Variant as a long, null if not a long - */ - private native long getVariantCurrency(); - - /** - * @return the value in this Variant as a long, null if not a long - */ - private native long getVariantCurrencyRef(); - - /** - * @return double return the date (as a double) value held in this variant - * (fails on other types?) - */ - private native double getVariantDate(); - - /** - * get the content of this variant as a double representing a date - * - * @return double - */ - private native double getVariantDateRef(); - - /** - * @return the value in this Variant as a decimal, null if not a decimal - */ - private native Object getVariantDec(); - - /** - * @return the value in this Variant (byref) as a decimal, null if not a - * decimal - */ - private native Object getVariantDecRef(); - - /** - * @return double get the content of this variant as a double - */ - private native double getVariantDouble(); - - /** - * @return double get the content of this variant as a double - */ - private native double getVariantDoubleRef(); - - private native int getVariantError(); - - private native int getVariantErrorRef(); - - /** - * @return returns the value as a float if the type is of type float - */ - private native float getVariantFloat(); - - /** - * @return returns the value as a float if the type is of type float - */ - private native float getVariantFloatRef(); - - /** - * @return the int value held in this variant (fails on other types?) - */ - private native int getVariantInt(); - - /** - * @return the int value held in this variant (fails on other types?) - */ - private native int getVariantIntRef(); - - /** - * @return the value in this Variant as a long, null if not a long - */ - private native long getVariantLong(); - - /** - * @return the value in this Variant as a long, null if not a long - */ - private native long getVariantLongRef(); - - /** - * get the content of this variant as a short - * - * @return short - */ - private native short getVariantShort(); - - /** - * @return short the content of this variant as a short - */ - private native short getVariantShortRef(); - - /** - * Native method that actually extracts a string value from the variant - * - * @return - */ - private native String getVariantString(); - - /** - * @return String the content of this variant as a string - */ - private native String getVariantStringRef(); - - /** - * Returns the variant type via a native method call - * - * @return short one of the VT_xx types - */ - private native short getVariantType(); - - /** - * Returns the variant type via a native method call. Added 1.12 pre 6 - - * VT_VARIANT support is at an alpha level - * - * @return Variant one of the VT_Variant types - */ - private native int getVariantVariant(); - - /** - * Reports the type of the underlying Variant object - * - * @return returns the variant type as a short, one of the Variantxxx values - * defined as statics in this class. returns VariantNull if not - * initialized - * @throws IllegalStateException - * if there is no underlying windows data structure - */ - public short getvt() { - if (m_pVariant != 0) { - return getVariantType(); - } else { - throw new IllegalStateException("uninitialized Variant"); - } - } - - /** - * initializes the COM Variant and puts its reference in this instance - */ - protected native void init(); - - /** - * - * @return returns true if the variant is considered null - * @throws IllegalStateException - * if there is no underlying windows memory - */ - public boolean isNull() { - getvt(); - return isVariantConsideredNull(); - } - - /** - * is the variant null or empty or error or null dispatch - * - * @return true if it is null or false if not - */ - private native boolean isVariantConsideredNull(); - - /** - * sets the type to VT_ERROR and the error message to DISP_E_PARAMNOTFOIUND - * - * @deprecated replaced by putNoParam() - */ - @Deprecated - public void noParam() { - putNoParam(); - } - - /** - * returns true if the passed in Variant is a constant that should not be - * freed - * - * @param pVariant - * @return boolean that is true if Variant is a type of constant, VT_FALSE, - * VT_TRUE, VT_MISSING, DEFAULT - */ - protected boolean objectIsAConstant(Variant pVariant) { - if (pVariant == VT_FALSE || pVariant == VT_TRUE - || pVariant == VT_MISSING || pVariant == DEFAULT) { - return true; - } else { - return false; - } - - } - - /** - * puts a boolean into the variant and sets it's type - * - * @param in - * the new value - */ - public void putBoolean(boolean in) { - // verify we aren't released yet - getvt(); - putVariantBoolean(in); - } - - /** - * pushes a boolean into the variant by ref and sets the type of the variant - * to boolean - * - * @param in - */ - public void putBooleanRef(boolean in) { - // verify we aren't released yet - getvt(); - putVariantBooleanRef(in); - } - - /** - * pushes a byte into the varaint and sets the type - * - * @param in - */ - public void putByte(byte in) { - // verify we aren't released yet - getvt(); - putVariantByte(in); - }; - - /** - * @deprecated superseded by SafeArray - * @param in - * doesn't matter because this method does nothing - * @throws com.jacob.com.NotImplementedException - */ - @Deprecated - public void putByteArray(Object in) { - throw new NotImplementedException("Not implemented"); - } - - /** - * pushes a byte into the variant by ref and sets the type - * - * @param in - */ - public void putByteRef(byte in) { - // verify we aren't released yet - getvt(); - putVariantByteRef(in); - } - - /** - * @param in - * the object that would be wrapped by the Variant if this method - * was implemented - * @deprecated superseded by SafeArray - * @throws com.jacob.com.NotImplementedException - */ - @Deprecated - public void putCharArray(Object in) { - throw new NotImplementedException("Not implemented"); - } - - /** - * Puts a value in as a currency and sets the variant type. MS Currency - * objects are 64 bit fixed point numbers with 15 digits to the left and 4 - * to the right of the decimal place. - * - * @param in - * the long that will be put into the 64 bit currency object. - */ - public void putCurrency(Currency in) { - // verify we aren't released yet - getvt(); - putVariantCurrency(in.longValue()); - } - - /** - * Pushes a long into the variant as currency and sets the type. MS Currency - * objects are 64 bit fixed point numbers with 15 digits to the left and 4 - * to the right of the decimal place. - * - * @param in - * the long that will be put into the 64 bit currency object - */ - public void putCurrencyRef(Currency in) { - // verify we aren't released yet - getvt(); - putVariantCurrencyRef(in.longValue()); - } - - /** - * converts a java date to a windows time and calls putDate(double) SF - * 959382 - * - * @param inDate - * a Java date to be converted - * @throws IllegalArgumentException - * if inDate = null - */ - public void putDate(Date inDate) { - if (inDate == null) { - throw new IllegalArgumentException( - "Cannot put null in as windows date"); - // do nothing - } else { - putDate(DateUtilities.convertDateToWindowsTime(inDate)); - } - } - - /** - * puts a windows date double into the variant and sets the type - * - * @param in - */ - public void putDate(double in) { - // verify we aren't released yet - getvt(); - putVariantDate(in); - } - - /** - * converts a java date to a windows time and calls putDateRef(double) SF - * 959382 - * - * @param inDate - * a Java date to be converted - * @throws IllegalArgumentException - * if inDate = null - */ - public void putDateRef(Date inDate) { - if (inDate == null) { - throw new IllegalArgumentException( - "Cannot put null in as windows date"); - // do nothing - } else { - putDateRef(DateUtilities.convertDateToWindowsTime(inDate)); - } - } - - /** - * set the content of this variant to a date (VT_DATE|VT_BYREF) - * - * @param in - */ - public void putDateRef(double in) { - // verify we aren't released - getvt(); - putVariantDateRef(in); - } - - /** - * This actual does all the validating and massaging of the BigDecimalValues - * when converting them to MS Decimal types - * - * @param in - * number to be made into VT_DECIMAL - * @param byRef - * store by reference or not - * @param roundingBehavior - * one of the BigDecimal ROUND_xxx methods. Any method other than - * ROUND_UNECESSARY means that the value will be rounded to fit - */ - private void putDecimal(BigDecimal in, boolean byRef) { - // verify we aren't released - getvt(); - // first validate the min and max - VariantUtilities.validateDecimalMinMax(in); - BigInteger allWordBigInt; - allWordBigInt = in.unscaledValue(); - // Assume any required rounding has been done. - VariantUtilities.validateDecimalScaleAndBits(in); - // finally we can do what we actually came here to do - int sign = in.signum(); - // VT_DECIMAL always has positive value with just the sign - // flipped - if (in.signum() < 0) { - in = in.negate(); - } - // ugh, reusing allWordBigInt but now should always be positive - // and any round is applied - allWordBigInt = in.unscaledValue(); - byte scale = (byte) in.scale(); - int lowWord = allWordBigInt.intValue(); - BigInteger middleWordBigInt = allWordBigInt.shiftRight(32); - int middleWord = middleWordBigInt.intValue(); - BigInteger highWordBigInt = allWordBigInt.shiftRight(64); - int highWord = highWordBigInt.intValue(); - if (byRef) { - putVariantDecRef(sign, scale, lowWord, middleWord, highWord); - } else { - putVariantDec(sign, scale, lowWord, middleWord, highWord); - } - } - - /** - * EXPERIMENTAL 1.14 feature to support rounded decimals. - *

- * Set the value of this variant and set the type. This may throw exceptions - * more often than the caller expects because most callers don't manage the - * scale of their BigDecimal objects. - *

- * This default set method throws exceptions if precision or size is out of - * bounds - *

- * There are 12 bytes available for the integer number. - *

- * There is 1 byte for the scale. - * - * @param in - * the BigDecimal that will be converted to VT_DECIMAL - * @throws IllegalArgumentException - * if the scale is > 28, the maximum for VT_DECIMAL or if there - * are more than 12 bytes worth the digits - */ - public void putDecimal(BigDecimal in) { - putDecimal(in, false); - } - - /** - * Set the value of this variant and set the type. This may throw exceptions - * more often than the caller expects because most callers don't manage the - * scale of their BigDecimal objects. - *

- * This default set method throws exceptions if precision or size is out of - * bounds - *

- * There are 12 bytes available for the integer number. - *

- * There is 1 byte for the scale. - * - * @param in - * the BigDecimal that will be converted to VT_DECIMAL - * @throws IllegalArgumentException - * if the scale is > 28, the maximum for VT_DECIMAL or if there - * are more than 12 bytes worth the digits - */ - public void putDecimalRef(BigDecimal in) { - putDecimal(in, true); - } - - /** - * This acts a cover for putVariant Dispatch. - * - * @param in - * the Dispatch we're putting down in the COM variant space. - */ - public void putDispatch(Dispatch in) { - putVariantDispatch(in); - } - - /** - * Dispatch and dispatchRef are treated the same This is a cover for - * putVariantDispatch(). putDispatch and putDispatchRef are treated the same - * because no one has written the COM code for putDispatchRef. - * - * @param in - * the Dispatch we're putting down in the COM variant space. - */ - public void putDispatchRef(Dispatch in) { - putVariantDispatch(in); - } - - /** - * wraps this Variant around the passed in double. - * - * @param in - */ - public void putDouble(double in) { - // verify we aren't released yet - getvt(); - putVariantDouble(in); - } - - /** - * set the content of this variant to a double (VT_R8|VT_BYREF) - * - * @param in - */ - public void putDoubleRef(double in) { - // verify we aren't released - getvt(); - putVariantDoubleRef(in); - } - - /** - * sets the type to VariantEmpty - * - */ - public void putEmpty() { - // verify we aren't released yet - getvt(); - putVariantEmpty(); - } - - /** - * puts an error code (I think) into the variant and sets the type - * - * @param in - */ - public void putError(int in) { - // verify we aren't released yet - getvt(); - putVariantError(in); - } - - /** - * pushes an error code into the variant by ref and sets the type - * - * @param in - */ - public void putErrorRef(int in) { - // verify we aren't released yet - getvt(); - putVariantErrorRef(in); - } - - /** - * fills the Variant with a float and sets the type to float - * - * @param in - */ - public void putFloat(float in) { - // verify we haven't been released yet - getvt(); - putVariantFloat(in); - } - - /** - * pushes a float into the variant and sets the type - * - * @param in - */ - public void putFloatRef(float in) { - // verify we aren't released yet - getvt(); - putVariantFloatRef(in); - } - - /** - * set the value of this variant and set the type - * - * @param in - */ - public void putInt(int in) { - // verify we aren't released yet - getvt(); - putVariantInt(in); - } - - /** - * set the content of this variant to an int (VT_I4|VT_BYREF) - * - * @param in - */ - public void putIntRef(int in) { - // verify we aren't released - getvt(); - putVariantIntRef(in); - } - - /** - * Puts a 64 bit Java Long into a 64 bit Variant Long. Only works on x64 - * systems otherwise throws an error. 64 bit long support added 1.14 - * - * @param in - * the long that will be put into the 64 bit Long object. - */ - public void putLong(long in) { - // verify we aren't released yet - getvt(); - putVariantLong(in); - } - - /** - * Puts a 64 bit Java Long into a 64 bit Variant Long. Only works on x64 - * systems otherwise throws an error. 64 bit long support added 1.14 - * - * @param in - * the long that will be put into the 64 bit Long object. - */ - public void putLongRef(long in) { - // verify we aren't released yet - getvt(); - putVariantLongRef(in); - } - - /** - * sets the type to VT_ERROR and the error message to DISP_E_PARAMNOTFOIUND - */ - public void putNoParam() { - // verify we aren't released yet - getvt(); - putVariantNoParam(); - } - - /** - * Sets the type to VariantDispatch and sets the value to null Equivalent to - * VB's nothing - */ - public void putNothing() { - // verify we aren't released yet - getvt(); - putVariantNothing(); - } - - /** - * Set this Variant's type to VT_NULL (the VB equivalent of NULL) - */ - public void putNull() { - // verify we aren't released yet - getvt(); - putVariantNull(); - } - - /** - * Puts an object into the Variant -- converts to Dispatch. Acts as a cover - * for putVariantDispatch(); This primarily exists to support jacobgen. This - * should be deprecated. - * - * @param in - * the object we are putting into the Variant, assumes a - * @see Variant#putDispatch(Dispatch) - * @deprecated should use putDispatch() - */ - @Deprecated - public void putObject(Object in) { - // this should verify in instanceof Dispatch - putVariantDispatch(in); - } - - /** - * Just a cover for putObject(). We shouldn't accept any old random object. - * This has been left in to support jacobgen. This should be deprecated. - * - * @param in - * @deprecated - */ - @Deprecated - public void putObjectRef(Object in) { - putObject(in); - } - - /** - * have no idea... - * - * @param in - */ - public void putSafeArray(SafeArray in) { - // verify we haven't been released yet - getvt(); - putVariantSafeArray(in); - } - - /** - * have no idea... - * - * @param in - */ - public void putSafeArrayRef(SafeArray in) { - // verify we haven't been released yet - getvt(); - putVariantSafeArrayRef(in); - } - - /** - * set the content of this variant to a short (VT_I2) - * - * @param in - */ - public void putShort(short in) { - // verify we aren't released - getvt(); - putVariantShort(in); - } - - /** - * set the content of this variant to a short (VT_I2|VT_BYREF) - * - * @param in - */ - public void putShortRef(short in) { - // verify we aren't released - getvt(); - putVariantShortRef(in); - } - - /** - * put a string into the variant and set its type - * - * @param in - */ - public void putString(String in) { - // verify we aren't released yet - getvt(); - putVariantString(in); - } - - /** - * set the content of this variant to a string (VT_BSTR|VT_BYREF) - * - * @param in - */ - public void putStringRef(String in) { - // verify we aren't released - getvt(); - putVariantStringRef(in); - } - - /** - * Puts a variant into this variant making it type VT_VARIANT. Added 1.12 - * pre 6 - * - * @param objectToBeWrapped - * A object that is to be referenced by this variant. If - * objectToBeWrapped is already of type Variant, then it is used. - * If objectToBeWrapped is not Variant then - * new Variant(objectToBeWrapped) is called and the - * result is passed into the com layer - * @throws IllegalArgumentException - * if inVariant = null or if inVariant is a Varint - */ - public void putVariant(Object objectToBeWrapped) { - if (objectToBeWrapped == null) { - throw new IllegalArgumentException( - "Cannot put null in as a variant"); - } else if (objectToBeWrapped instanceof Variant) { - throw new IllegalArgumentException( - "Cannot putVariant() only accepts non jacob objects."); - } else { - Variant inVariant = new Variant(objectToBeWrapped); - putVariantVariant(inVariant); - // This could be done in Variant.cpp - if (JacobObject.isDebugEnabled()) { - JacobObject - .debug("Zeroing out enclosed Variant's ref to windows memory"); - } - inVariant.m_pVariant = 0; - } - } - - /** - * @deprecated superseded by SafeArray - * @param in - * doesn't matter because this method does nothing - * @throws com.jacob.com.NotImplementedException - */ - @Deprecated - public void putVariantArray(Variant[] in) { - throw new NotImplementedException("Not implemented"); - } - - /** - * @param in - * the thing that would be come an array if this method was - * implemented - * @deprecated superseded by SafeArray - * @throws com.jacob.com.NotImplementedException - */ - @Deprecated - public void putVariantArrayRef(Variant[] in) { - throw new NotImplementedException("Not implemented"); - } - - /** - * puts a boolean into the variant and sets it's type - * - * @param in - * the new value - */ - private native void putVariantBoolean(boolean in); - - /** - * puts a boolean into the variant and sets it's type - * - * @param in - * the new value - */ - private native void putVariantBooleanRef(boolean in); - - /** - * puts a byte into the variant and sets it's type - * - * @param in - * the new value - */ - private native void putVariantByte(byte in); - - /** - * puts a byte into the variant and sets it's type - * - * @param in - * the new value - */ - private native void putVariantByteRef(byte in); - - /** - * puts a Currency into the variant and sets it's type - * - * @param in - * the new value - */ - private native void putVariantCurrency(long in); - - /** - * puts a Currency into the variant and sets it's type - * - * @param in - * the new value - */ - private native void putVariantCurrencyRef(long in); - - /** - * set the value of this variant - * - * @param in - */ - private native void putVariantDate(double in); - - /** - * set the content of this variant to a date (VT_DATE|VT_BYREF) - * - * @param in - */ - private native void putVariantDateRef(double in); - - /** - * private JNI method called by putDecimal - * - * @param signum - * sign - * @param scale - * BigDecimal's scale - * @param lo - * low 32 bits - * @param mid - * middle 32 bits - * @param hi - * high 32 bits - */ - private native void putVariantDec(int signum, byte scale, int lo, int mid, - int hi); - - /** - * private JNI method called by putDecimalRef - * - * @param signum - * sign - * @param scale - * BigDecimal's scale - * @param lo - * low 32 bits - * @param mid - * middle 32 bits - * @param hi - * high 32 bits - */ - private native void putVariantDecRef(int signum, byte scale, int lo, - int mid, int hi); - - /** - * the JNI implementation for putDispatch() so that we can screen the - * incoming dispatches in putDispatch() before this is invoked - * - * @param in - * should be a dispatch object - */ - private native void putVariantDispatch(Object in); - - private native void putVariantDouble(double in); - - /** - * set the content of this variant to a double (VT_R8|VT_BYREF) - * - * @param in - */ - private native void putVariantDoubleRef(double in); - - /** - * Sets the type to VariantEmpty. No values needed - */ - private native void putVariantEmpty(); - - private native void putVariantError(int in); - - private native void putVariantErrorRef(int in); - - /** - * fills the Variant with a float and sets the type to float - * - * @param in - */ - private native void putVariantFloat(float in); - - private native void putVariantFloatRef(float in); - - /** - * set the value of this variant and set the type - * - * @param in - */ - private native void putVariantInt(int in); - - /** - * set the content of this variant to an int (VT_I4|VT_BYREF) - * - * @param in - */ - private native void putVariantIntRef(int in); - - private native void putVariantLong(long in); - - private native void putVariantLongRef(long in); - - /** - * sets the type to VT_ERROR and the error message to DISP_E_PARAMNOTFOIUND - */ - private native void putVariantNoParam(); - - /** - * Sets the type to VariantDispatch and sets the value to null Equivalent to - * VB's nothing - */ - private native void putVariantNothing(); - - /** - * Set this Variant's type to VT_NULL (the VB equivalent of NULL) - */ - private native void putVariantNull(); - - private native void putVariantSafeArray(SafeArray in); - - private native void putVariantSafeArrayRef(SafeArray in); - - /** - * set the content of this variant to a short (VT_I2) - * - * @param in - */ - private native void putVariantShort(short in); - - /** - * set the content of this variant to a short (VT_I2|VT_BYREF) - * - * @param in - */ - private native void putVariantShortRef(short in); - - private native void putVariantString(String in); - - /** - * set the content of this variant to a string (VT_BSTR|VT_BYREF) - * - * @param in - */ - private native void putVariantStringRef(String in); - - /** - * All VariantVariant type variants are BYREF. - * - * Set the content of this variant to a string (VT_VARIANT|VT_BYREF). - * - * Added 1.12 pre 6 - VT_VARIANT support is at an alpha level - * - * @param in - * variant to be wrapped - * - */ - private native void putVariantVariant(Variant in); - - /** - * now private so only this object can access was: call this to explicitly - * release the com object before gc - * - */ - private native void release(); - - /** - * This will release the "C" memory for the Variant unless this Variant is - * one of the constants in which case we don't want to release the memory. - *

- * - * @see com.jacob.com.JacobObject#safeRelease() - */ - @Override - public void safeRelease() { - // The well known constants should not be released. - // Unfortunately this doesn't fix any other classes that are - // keeping constants around in their static ivars. - // those will still be busted. - // - // The only inconsistency here is that we leak - // when this class is unloaded because we won't - // free the memory even if the constants are being - // finalized. this is not a big deal at all. - // another way around this would be to create the constants - // in their own thread so that they would never be released - if (!objectIsAConstant(this)) { - super.safeRelease(); - if (m_pVariant != 0) { - release(); - m_pVariant = 0; - } else { - // looks like a double release - // this should almost always happen due to gc - // after someone has called ComThread.Release - if (isDebugEnabled()) { - debug("Variant: " + this.hashCode() + " double release"); - // Throwable x = new Throwable(); - // x.printStackTrace(); - } - } - } else { - if (isDebugEnabled()) { - debug("Variant: " + this.hashCode() - + " don't want to release a constant"); - } - } - } - - /** - * this is supposed to cause the underlying variant object struct to be - * rebuilt from a previously serialized byte array. - * - * @param ba - */ - protected native void SerializationReadFromBytes(byte[] ba); - - /** - * this is supposed to create a byte array that represents the underlying - * variant object structure - */ - protected native byte[] SerializationWriteToBytes(); - - /** - * @deprecated should be replaced by changeType() followed by getBoolean() - * @return the value of this variant as boolean (after possible conversion) - */ - @Deprecated - public boolean toBoolean() { - changeType(Variant.VariantBoolean); - return getBoolean(); - } - - /** - * attempts to return the content of this variant as a double (after - * possible conversion) - * - * @deprecated should be replaced by changeType() followed by getByte() - * @return byte - */ - @Deprecated - public byte toByte() { - changeType(Variant.VariantByte); - return getByte(); - } - - /** - * @deprecated superseded by SafeArray - * @return nothing because this method is not implemented - * @throws com.jacob.com.NotImplementedException - */ - @Deprecated - public Object toByteArray() { - throw new NotImplementedException("Not implemented"); - } - - /** - * @deprecated superseded by SafeArray - * @return never returns anything - * @throws com.jacob.com.NotImplementedException - */ - @Deprecated - public Object toCharArray() { - throw new NotImplementedException("Not implemented"); - } - - /** - * @deprecated should be replaced by changeType() followed by getCurrency - * @return the content of this variant as a long representing a monetary - * amount - */ - @Deprecated - public Currency toCurrency() { - changeType(Variant.VariantCurrency); - return getCurrency(); - } - - /** - * @deprecated should use changeType() followed by getDate() - * @return the value of this variant as a date (after possible conversion) - */ - @Deprecated - public double toDate() { - changeType(VariantDate); - return getDate(); - } - - /** - * @return the content of this variant as a Dispatch object (after possible - * conversion) - */ - public Dispatch toDispatch() { - // now make the native call - return toVariantDispatch(); - } - - /** - * @deprecated should call changeType() then getDouble() - * @return the content of this variant as a double (after possible - * conversion) - */ - @Deprecated - public double toDouble() { - changeType(Variant.VariantDouble); - return getDouble(); - } - - /** @return the value of this variant as an enumeration (java style) */ - public native EnumVariant toEnumVariant(); - - /** - * converts to an error type and returns the error - * - * @deprecated should use changeType() followed by getError() - * @return the error as an int (after conversion) - */ - @Deprecated - public int toError() { - changeType(Variant.VariantError); - return getError(); - } - - /** - * attempts to return the contents of this variant as a float (after - * possible conversion) - * - * @deprecated should use changeType() and getFloat() instead - * @return float - */ - @Deprecated - public float toFloat() { - changeType(Variant.VariantFloat); - return getFloat(); - } - - /** - * @deprecated should use changeType() followed by getInt() - * @return the value of this variant as an int (after possible conversion) - */ - @Deprecated - public int toInt() { - changeType(VariantInt); - return getInt(); - } - - /** - * Returns the windows time contained in this Variant as a Java Date - * converts to a date like many of the other toXXX() methods SF 959382. - *

- * This method added 12/2005 for possible use by jacobgen instead of its - * conversion code - *

- * This does not convert the data - * - * @deprecated callers should use getDate() - * @return java.util.Date version of this variant if it is a date, otherwise - * null - * - */ - @Deprecated - public Date toJavaDate() { - changeType(Variant.VariantDate); - return getJavaDate(); - } - - /** - * Convert a JACOB Variant value to a Java object (type conversions). - * provided in Sourceforge feature request 959381. See - * JavaVariantConverter..convertVariantTJavaObject(Variant) for more - * information. - * - * @return Corresponding Java object of the type matching the Variant type. - * @throws IllegalStateException - * if no underlying windows data structure - * @throws NotImplementedException - * if unsupported conversion is requested - * @throws JacobException - * if the calculated result was a JacobObject usually as a - * result of error - */ - public Object toJavaObject() throws JacobException { - return VariantUtilities.variantToObject(this); - } - - /** - * Acts a a cover for toDispatch. This primarily exists to support jacobgen. - * - * @deprecated this is a cover for toDispatch(); - * @return Object returned by toDispatch() - * @see Variant#toDispatch() instead - */ - @Deprecated - public Object toObject() { - return toDispatch(); - } - - /** - * By default toSafeArray makes a deep copy due to the fact that this - * Variant owns the embedded SafeArray and will destroy it when it gc's - * calls toSafeArray(true). - * - * @return the object converted to a SafeArray - */ - public SafeArray toSafeArray() { - // verify we haven't been released yet - getvt(); - return toSafeArray(true); - } - - /** - * This lets folk turn into a safe array without a deep copy. Should this - * API be public? - * - * @param deepCopy - * @return SafeArray constructed - */ - public SafeArray toSafeArray(boolean deepCopy) { - // verify we haven't been released yet - getvt(); - return toVariantSafeArray(deepCopy); - } - - /** - * I don't know what this is. Is it some legacy (pre 1.8) thing? - * - * @deprecated - * @return this object as a dispatch object by calling toDispatch() - */ - @Deprecated - public Object toScriptObject() { - return toDispatch(); - } - - /** - * attempts to return the contents of this Variant as a short (after - * possible conversion) - * - * @deprecated callers should use changeType() followed by getShort() - * @return short - */ - @Deprecated - public short toShort() { - this.changeType(Variant.VariantShort); - return getShort(); - } - - /** - * This method now correctly implements java toString() semantics Attempts - * to return the content of this variant as a string - *

    - *
  • "not initialized" if not initialized - *
  • "null" if VariantEmpty, - *
  • "null" if VariantError - *
  • "null" if VariantNull - *
  • the value if we know how to describe one of that type - *
  • three question marks if can't convert - * - * @return String value conversion, - * @throws IllegalStateException - * if there is no underlying windows data structure - */ - @Override - public String toString() { - try { - // see if we are in a legal state - getvt(); - } catch (IllegalStateException ise) { - return ""; - } - if (getvt() == VariantEmpty || getvt() == VariantError - || getvt() == VariantNull) { - return "null"; - } - if (getvt() == VariantString) { - return getString(); - } - try { - Object foo = toJavaObject(); - // rely on java objects to do the right thing - return foo.toString(); - } catch (NotImplementedException nie) { - // some types do not generate a good description yet - return "Description not available for type: " + getvt(); - } - } - - /** - * Exists to support jacobgen. This would be deprecated if it weren't for - * jacobgen - * - * @deprecated superseded by "this" - * @return this same object - */ - @Deprecated - public Variant toVariant() { - return this; - } - - /** - * @deprecated superseded by SafeArray - * @return nothing because this method is not implemented - * @throws com.jacob.com.NotImplementedException - */ - @Deprecated - public Variant[] toVariantArray() { - throw new NotImplementedException("Not implemented"); - } - - /** - * native method used by toDispatch() - * - * @return - */ - private native Dispatch toVariantDispatch(); - - private native SafeArray toVariantSafeArray(boolean deepCopy); - - /* - * ===================================================================== - * - * - * ===================================================================== - */ - - /** - * Clear the content of this variant - */ - public native void VariantClear(); - -} \ No newline at end of file diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/VariantUtilities.java b/vendor/jacob/1.15-M4/java/com/jacob/com/VariantUtilities.java deleted file mode 100644 index 1ac652a..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/VariantUtilities.java +++ /dev/null @@ -1,502 +0,0 @@ -/** - * - */ -package com.jacob.com; - -import java.lang.reflect.Array; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.math.MathContext; -import java.util.Date; - -/** - * A utility class used to convert between Java objects and Variants - */ -public final class VariantUtilities { - private VariantUtilities() { - // utility class with only static methods don't need constructors - } - - /** - * Populates a variant object from a java object. This method attempts to - * figure out the appropriate Variant type - * - * @param targetVariant - * @param pValueObject - * @param fByRef - */ - protected static void populateVariant(Variant targetVariant, - Object pValueObject, boolean fByRef) { - if (pValueObject == null) { - targetVariant.putEmpty(); - } else if (pValueObject instanceof Integer) { - if (fByRef) { - targetVariant.putIntRef(((Integer) pValueObject).intValue()); - } else { - targetVariant.putInt(((Integer) pValueObject).intValue()); - } - } else if (pValueObject instanceof Short) { - if (fByRef) { - targetVariant.putShortRef(((Short) pValueObject).shortValue()); - } else { - targetVariant.putShort(((Short) pValueObject).shortValue()); - } - } else if (pValueObject instanceof String) { - if (fByRef) { - targetVariant.putStringRef((String) pValueObject); - } else { - targetVariant.putString((String) pValueObject); - } - } else if (pValueObject instanceof Boolean) { - if (fByRef) { - targetVariant.putBooleanRef(((Boolean) pValueObject) - .booleanValue()); - } else { - targetVariant.putBoolean(((Boolean) pValueObject) - .booleanValue()); - } - } else if (pValueObject instanceof Double) { - if (fByRef) { - targetVariant.putDoubleRef(((Double) pValueObject) - .doubleValue()); - } else { - targetVariant.putDouble(((Double) pValueObject).doubleValue()); - } - } else if (pValueObject instanceof Float) { - if (fByRef) { - targetVariant.putFloatRef(((Float) pValueObject).floatValue()); - } else { - targetVariant.putFloat(((Float) pValueObject).floatValue()); - } - } else if (pValueObject instanceof BigDecimal) { - if (fByRef) { - targetVariant.putDecimalRef(((BigDecimal) pValueObject)); - } else { - targetVariant.putDecimal(((BigDecimal) pValueObject)); - } - } else if (pValueObject instanceof Byte) { - if (fByRef) { - targetVariant.putByteRef(((Byte) pValueObject).byteValue()); - } else { - targetVariant.putByte(((Byte) pValueObject).byteValue()); - } - } else if (pValueObject instanceof Date) { - if (fByRef) { - targetVariant.putDateRef((Date) pValueObject); - } else { - targetVariant.putDate((Date) pValueObject); - } - } else if (pValueObject instanceof Long) { - if (fByRef) { - targetVariant.putLongRef(((Long) pValueObject).longValue()); - } else { - targetVariant.putLong(((Long) pValueObject).longValue()); - } - } else if (pValueObject instanceof Currency) { - if (fByRef) { - targetVariant.putCurrencyRef(((Currency) pValueObject)); - } else { - targetVariant.putCurrency(((Currency) pValueObject)); - } - } else if (pValueObject instanceof SafeArray) { - if (fByRef) { - targetVariant.putSafeArrayRef((SafeArray) pValueObject); - } else { - targetVariant.putSafeArray((SafeArray) pValueObject); - } - } else if (pValueObject instanceof Dispatch) { - if (fByRef) { - targetVariant.putDispatchRef((Dispatch) pValueObject); - } else { - targetVariant.putDispatch((Dispatch) pValueObject); - } - } else if (pValueObject instanceof Variant) { - // newly added 1.12-pre6 to support VT_VARIANT - targetVariant.putVariant(pValueObject); - } else { - // sourceforge patch 2171967 - // used to rely on coercion but sometimes crashed VM - throw new NotImplementedException( - "populateVariant() not implemented for " - + pValueObject.getClass()); - } - } - - /** - * Map arguments based on msdn documentation. This method relies on the - * variant constructor except for arrays. - * - * @param objectToBeMadeIntoVariant - * @return Variant that represents the object - */ - protected static Variant objectToVariant(Object objectToBeMadeIntoVariant) { - if (objectToBeMadeIntoVariant == null) { - return new Variant(); - } else if (objectToBeMadeIntoVariant instanceof Variant) { - // if a variant was passed in then be a slacker and just return it - return (Variant) objectToBeMadeIntoVariant; - } else if (objectToBeMadeIntoVariant.getClass().isArray()) { - // automatically convert arrays using reflection - // handle it differently based on the type of array - // added primitive support sourceforge 2762275 - SafeArray sa = null; - int len1 = Array.getLength(objectToBeMadeIntoVariant); - Class componentType = objectToBeMadeIntoVariant.getClass() - .getComponentType(); - - if (componentType.isArray()) { // array of arrays - int max = 0; - for (int i = 0; i < len1; i++) { - Object e1 = Array.get(objectToBeMadeIntoVariant, i); - int len2 = Array.getLength(e1); - if (max < len2) { - max = len2; - } - } - sa = new SafeArray(Variant.VariantVariant, len1, max); - for (int i = 0; i < len1; i++) { - Object e1 = Array.get(objectToBeMadeIntoVariant, i); - for (int j = 0; j < Array.getLength(e1); j++) { - sa.setVariant(i, j, objectToVariant(Array.get(e1, j))); - } - } - } else if (byte.class.equals(componentType)) { - byte[] arr = (byte[]) objectToBeMadeIntoVariant; - sa = new SafeArray(Variant.VariantByte, len1); - for (int i = 0; i < len1; i++) { - sa.setByte(i, arr[i]); - } - } else if (int.class.equals(componentType)) { - int[] arr = (int[]) objectToBeMadeIntoVariant; - sa = new SafeArray(Variant.VariantInt, len1); - for (int i = 0; i < len1; i++) { - sa.setInt(i, arr[i]); - } - } else if (double.class.equals(componentType)) { - double[] arr = (double[]) objectToBeMadeIntoVariant; - sa = new SafeArray(Variant.VariantDouble, len1); - for (int i = 0; i < len1; i++) { - sa.setDouble(i, arr[i]); - } - } else if (long.class.equals(componentType)) { - long[] arr = (long[]) objectToBeMadeIntoVariant; - sa = new SafeArray(Variant.VariantLongInt, len1); - for (int i = 0; i < len1; i++) { - sa.setLong(i, arr[i]); - } - } else { - // array of object - sa = new SafeArray(Variant.VariantVariant, len1); - for (int i = 0; i < len1; i++) { - sa.setVariant(i, objectToVariant(Array.get( - objectToBeMadeIntoVariant, i))); - } - } - Variant returnVariant = new Variant(); - populateVariant(returnVariant, sa, false); - return returnVariant; - } else { - // rely on populateVariant to throw an exception if its an - // invalid type - Variant returnVariant = new Variant(); - populateVariant(returnVariant, objectToBeMadeIntoVariant, false); - return returnVariant; - } - } - - /** - * converts an array of objects into an array of Variants by repeatedly - * calling obj2Variant(Object) - * - * @param arrayOfObjectsToBeConverted - * @return Variant[] - */ - protected static Variant[] objectsToVariants( - Object[] arrayOfObjectsToBeConverted) { - if (arrayOfObjectsToBeConverted instanceof Variant[]) { - // just return the passed in array if it is a Variant array - return (Variant[]) arrayOfObjectsToBeConverted; - } else { - Variant vArg[] = new Variant[arrayOfObjectsToBeConverted.length]; - for (int i = 0; i < arrayOfObjectsToBeConverted.length; i++) { - vArg[i] = objectToVariant(arrayOfObjectsToBeConverted[i]); - } - return vArg; - } - } - - /** - * Convert a JACOB Variant value to a Java object (type conversions). - * provided in Sourceforge feature request 959381. A fix was done to handle - * byRef bug report 1607878. - *

    - * Unlike other toXXX() methods, it does not do a type conversion except for - * special data types (it shouldn't do any!) - *

    - * Converts Variant.VariantArray types to SafeArrays - * - * @return Corresponding Java object of the type matching the Variant type. - * @throws IllegalStateException - * if no underlying windows data structure - * @throws NotImplementedException - * if unsupported conversion is requested - * @throws JacobException - * if the calculated result was a JacobObject usually as a - * result of error - */ - protected static Object variantToObject(Variant sourceData) { - Object result = null; - - short type = sourceData.getvt(); // variant type - - if ((type & Variant.VariantArray) == Variant.VariantArray) { // array - // returned? - SafeArray array = null; - type = (short) (type - Variant.VariantArray); - // From SF Bug 1840487 - // This did call toSafeArray(false) but that meant - // this was the only variantToObject() that didn't have its own - // copy of the data so you would end up with weird run time - // errors after some GC. So now we just get stupid about it and - // always make a copy just like toSafeArray() does. - array = sourceData.toSafeArray(); - result = array; - } else { // non-array object returned - switch (type) { - case Variant.VariantEmpty: // 0 - case Variant.VariantNull: // 1 - break; - case Variant.VariantShort: // 2 - result = new Short(sourceData.getShort()); - break; - case Variant.VariantShort | Variant.VariantByref: // 2 - result = new Short(sourceData.getShortRef()); - break; - case Variant.VariantInt: // 3 - result = new Integer(sourceData.getInt()); - break; - case Variant.VariantInt | Variant.VariantByref: // 3 - result = new Integer(sourceData.getIntRef()); - break; - case Variant.VariantFloat: // 4 - result = new Float(sourceData.getFloat()); - break; - case Variant.VariantFloat | Variant.VariantByref: // 4 - result = new Float(sourceData.getFloatRef()); - break; - case Variant.VariantDouble: // 5 - result = new Double(sourceData.getDouble()); - break; - case Variant.VariantDouble | Variant.VariantByref: // 5 - result = new Double(sourceData.getDoubleRef()); - break; - case Variant.VariantCurrency: // 6 - result = sourceData.getCurrency(); - break; - case Variant.VariantCurrency | Variant.VariantByref: // 6 - result = sourceData.getCurrencyRef(); - break; - case Variant.VariantDate: // 7 - result = sourceData.getJavaDate(); - break; - case Variant.VariantDate | Variant.VariantByref: // 7 - result = sourceData.getJavaDateRef(); - break; - case Variant.VariantString: // 8 - result = sourceData.getString(); - break; - case Variant.VariantString | Variant.VariantByref: // 8 - result = sourceData.getStringRef(); - break; - case Variant.VariantDispatch: // 9 - result = sourceData.getDispatch(); - break; - case Variant.VariantDispatch | Variant.VariantByref: // 9 - result = sourceData.getDispatchRef(); // Can dispatches even - // be byRef? - break; - case Variant.VariantError: // 10 - result = new NotImplementedException( - "toJavaObject() Not implemented for VariantError"); - break; - case Variant.VariantBoolean: // 11 - result = new Boolean(sourceData.getBoolean()); - break; - case Variant.VariantBoolean | Variant.VariantByref: // 11 - result = new Boolean(sourceData.getBooleanRef()); - break; - case Variant.VariantVariant: // 12 they are always by ref - result = new NotImplementedException( - "toJavaObject() Not implemented for VariantVariant without ByRef"); - break; - case Variant.VariantVariant | Variant.VariantByref: // 12 - result = sourceData.getVariant(); - break; - case Variant.VariantObject: // 13 - result = new NotImplementedException( - "toJavaObject() Not implemented for VariantObject"); - break; - case Variant.VariantDecimal: // 14 - result = sourceData.getDecimal(); - break; - case Variant.VariantDecimal | Variant.VariantByref: // 14 - result = sourceData.getDecimalRef(); - break; - case Variant.VariantByte: // 17 - result = new Byte(sourceData.getByte()); - break; - case Variant.VariantByte | Variant.VariantByref: // 17 - result = new Byte(sourceData.getByteRef()); - break; - case Variant.VariantLongInt: // 20 - result = new Long(sourceData.getLong()); - break; - case Variant.VariantLongInt | Variant.VariantByref: // 20 - result = new Long(sourceData.getLongRef()); - break; - case Variant.VariantTypeMask: // 4095 - result = new NotImplementedException( - "toJavaObject() Not implemented for VariantBstrBlob/VariantTypeMask"); - break; - case Variant.VariantArray: // 8192 - result = new NotImplementedException( - "toJavaObject() Not implemented for VariantArray"); - break; - case Variant.VariantByref: // 16384 - result = new NotImplementedException( - "toJavaObject() Not implemented for VariantByref"); - break; - default: - result = new NotImplementedException("Unknown return type: " - + type); - // there was a "return result" here that caused defect 1602118 - // so it was removed - break; - }// switch (type) - - if (result instanceof JacobException) { - throw (JacobException) result; - } - } - - return result; - }// toJava() - - /** - * Verifies that we have a scale 0 <= x <= 28 and now more than 96 bits of - * data. The roundToMSDecimal method will attempt to adjust a BigDecimal to - * pass this set of tests - * - * @param in - * @throws IllegalArgumentException - * if out of bounds - */ - protected static void validateDecimalScaleAndBits(BigDecimal in) { - BigInteger allWordBigInt = in.unscaledValue(); - if (in.scale() > 28) { - // should this cast to a string and call putStringRef()? - throw new IllegalArgumentException( - "VT_DECIMAL only supports a maximum scale of 28 and the passed" - + " in value has a scale of " + in.scale()); - } else if (in.scale() < 0) { - // should this cast to a string and call putStringRef()? - throw new IllegalArgumentException( - "VT_DECIMAL only supports a minimum scale of 0 and the passed" - + " in value has a scale of " + in.scale()); - } else if (allWordBigInt.bitLength() > 12 * 8) { - throw new IllegalArgumentException( - "VT_DECIMAL supports a maximum of " - + 12 - * 8 - + " bits not counting scale and the number passed in has " - + allWordBigInt.bitLength()); - - } else { - // no bounds problem to be handled - } - - } - - /** - * Largest possible number with scale set to 0 - */ - private static final BigDecimal LARGEST_DECIMAL = new BigDecimal( - new BigInteger("ffffffffffffffffffffffff", 16)); - /** - * Smallest possible number with scale set to 0. MS doesn't support negative - * scales like BigDecimal. - */ - private static final BigDecimal SMALLEST_DECIMAL = new BigDecimal( - new BigInteger("ffffffffffffffffffffffff", 16).negate()); - - /** - * Does any validation that couldn't have been fixed by rounding or scale - * modification. - * - * @param in - * The BigDecimal to be validated - * @throws IllegalArgumentException - * if the number is too large or too small or null - */ - protected static void validateDecimalMinMax(BigDecimal in) { - if (in == null) { - throw new IllegalArgumentException( - "null is not a supported Decimal value."); - } else if (LARGEST_DECIMAL.compareTo(in) < 0) { - throw new IllegalArgumentException( - "Value too large for VT_DECIMAL data type:" + in.toString() - + " integer: " + in.toBigInteger().toString(16) - + " scale: " + in.scale()); - } else if (SMALLEST_DECIMAL.compareTo(in) > 0) { - throw new IllegalArgumentException( - "Value too small for VT_DECIMAL data type:" + in.toString() - + " integer: " + in.toBigInteger().toString(16) - + " scale: " + in.scale()); - } - - } - - /** - * Rounds the scale and bit length so that it will pass - * validateDecimalScaleBits(). Developers should call this method if they - * really want MS Decimal and don't want to lose precision. - *

    - * Changing the scale on a number that can fit in an MS Decimal can change - * the number's representation enough that it will round to a number too - * large to be represented by an MS VT_DECIMAL - * - * @param sourceDecimal - * @return BigDecimal a new big decimal that was rounded to fit in an MS - * VT_DECIMAL - */ - public static BigDecimal roundToMSDecimal(BigDecimal sourceDecimal) { - BigInteger sourceDecimalIntComponent = sourceDecimal.unscaledValue(); - BigDecimal destinationDecimal = new BigDecimal( - sourceDecimalIntComponent, sourceDecimal.scale()); - int roundingModel = BigDecimal.ROUND_HALF_UP; - validateDecimalMinMax(destinationDecimal); - // First limit the number of digits and then the precision. - // Try and round to 29 digits because we can sometimes do that - BigInteger allWordBigInt; - allWordBigInt = destinationDecimal.unscaledValue(); - if (allWordBigInt.bitLength() > 96) { - destinationDecimal = destinationDecimal.round(new MathContext(29)); - // see if 29 digits uses more than 96 bits - if (allWordBigInt.bitLength() > 96) { - // Dang. It was over 97 bits so shorten it one more digit to - // stay <= 96 bits - destinationDecimal = destinationDecimal.round(new MathContext( - 28)); - } - } - // the bit manipulations above may change the scale so do it afterwards - // round the scale to the max MS can support - if (destinationDecimal.scale() > 28) { - destinationDecimal = destinationDecimal.setScale(28, roundingModel); - } - if (destinationDecimal.scale() < 0) { - destinationDecimal = destinationDecimal.setScale(0, roundingModel); - } - return destinationDecimal; - } -} diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/VariantViaEvent.java b/vendor/jacob/1.15-M4/java/com/jacob/com/VariantViaEvent.java deleted file mode 100644 index 649d2bc..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/VariantViaEvent.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -/** - * a public class to variant that is used to track which variant objects are - * created by event callbacks This is solely used for that purpose. - */ -public class VariantViaEvent extends Variant { - - /** - * Standard constructor used by JNI event handling layer - */ - public VariantViaEvent() { - super(); - } -} diff --git a/vendor/jacob/1.15-M4/java/com/jacob/com/WrongThreadException.java b/vendor/jacob/1.15-M4/java/com/jacob/com/WrongThreadException.java deleted file mode 100644 index 938e40c..0000000 --- a/vendor/jacob/1.15-M4/java/com/jacob/com/WrongThreadException.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1999-2004 Sourceforge JACOB Project. - * All rights reserved. Originator: Dan Adler (http://danadler.com). - * Get more information about JACOB at http://sourceforge.net/projects/jacob-project - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -package com.jacob.com; - -/** - * thrown in util.cpp - */ -public class WrongThreadException extends JacobException { - /** - * identifier generated by Eclipse - */ - private static final long serialVersionUID = 6308780364980228692L; - - /** - * standard 0 arg constructor with no message - * - */ - public WrongThreadException() { - super("No Message Provided."); - } - - /** - * standard constructor with a string message - * - * @param s - */ - public WrongThreadException(String s) { - super(s); - } -} \ No newline at end of file diff --git a/vendor/nativecall/0.4.1/NativeCall.dll b/vendor/nativecall/0.4.1/NativeCall.dll deleted file mode 100644 index 6e2cad120371488b6f94c2cc7d2a953a4a8db09f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7680 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, fieldFunctionHandle); - - mov eax, DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A ; fieldFunctionHandle - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ; JNIEnv_::GetIntField - mov DWORD PTR _functionHandle$[ebp], eax - -; 82 : jint outVal; -; 83 : -; 84 : #ifdef _WINDOWS -; 85 : #ifdef _X86_ -; 86 : -; 87 : __asm { -; 88 : -; 89 : call functionHandle - - call DWORD PTR _functionHandle$[ebp] - -; 90 : mov outVal, eax - - mov DWORD PTR _outVal$[ebp], eax - -; 91 : -; 92 : } -; 93 : -; 94 : #endif -; 95 : #endif -; 96 : -; 97 : env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - - mov esi, esp - call DWORD PTR __imp__GetLastError@0 - cmp esi, esp - call __chkesp - push eax - mov edx, DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode - push edx - mov eax, DWORD PTR _obj$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField - -; 98 : -; 99 : return outVal; - - mov eax, DWORD PTR _outVal$[ebp] - -; 100 : -; 101 : } - - pop edi - pop esi - pop ebx - add esp, 72 ; 00000048H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -_Java_com_eaio_nativecall_IntCall_executeCall@8 ENDP -_TEXT ENDS -PUBLIC ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ; JNIEnv_::GetObjectField -PUBLIC ?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z ; JNIEnv_::SetObjectField -PUBLIC _Java_com_eaio_nativecall_IntCall_executeCall0@12 -PUBLIC ?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z ; JNIEnv_::GetArrayLength -PUBLIC ?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z ; JNIEnv_::GetObjectArrayElement -PUBLIC ??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ ; `string' -PUBLIC ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ; JNIEnv_::GetPrimitiveArrayCritical -PUBLIC ?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z ; JNIEnv_::ReleasePrimitiveArrayCritical -PUBLIC ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ; JNIEnv_::FindClass -PUBLIC ?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z ; JNIEnv_::ThrowNew -PUBLIC ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ; JNIEnv_::NewObject -PUBLIC ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf -PUBLIC ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallBooleanMethod -PUBLIC ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallIntMethod -EXTRN ??2@YAPAXI@Z:NEAR ; operator new -EXTRN ??3@YAXPAX@Z:NEAR ; operator delete -EXTRN ?fieldHolderO@@3PAU_jfieldID@@A:DWORD ; fieldHolderO -EXTRN ?classBoolean@@3PAV_jclass@@A:DWORD ; classBoolean -EXTRN ?classInteger@@3PAV_jclass@@A:DWORD ; classInteger -EXTRN ?classByteArray@@3PAV_jclass@@A:DWORD ; classByteArray -EXTRN ?classCharArray@@3PAV_jclass@@A:DWORD ; classCharArray -EXTRN ?classHolder@@3PAV_jclass@@A:DWORD ; classHolder -EXTRN ?methodBooleanValue@@3PAU_jmethodID@@A:DWORD ; methodBooleanValue -EXTRN ?methodIntValue@@3PAU_jmethodID@@A:DWORD ; methodIntValue -EXTRN ?newIntegerInt@@3PAU_jmethodID@@A:DWORD ; newIntegerInt -EXTRN ?newBooleanBoolean@@3PAU_jmethodID@@A:DWORD ; newBooleanBoolean -EXTRN _memset:NEAR -; COMDAT ??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ -; File c:\documents and settings\administrator\my documents\software\nativecall\src\cpp\intcall.cpp -CONST SEGMENT -??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ DB 'java/lang/OutOfMemor' - DB 'yError', 00H ; `string' -CONST ENDS -; COMDAT _Java_com_eaio_nativecall_IntCall_executeCall0@12 -_TEXT SEGMENT -_env$ = 8 -_obj$ = 12 -_params$ = 16 -_len$ = -4 -_arrays$ = -8 -_param$ = -12 -_i$ = -16 -_intArg$56817 = -20 -_byteArrayArg$56820 = -24 -_charArrayArg$56826 = -28 -_booleanArg$56832 = -32 -_tempArg$56833 = -36 -_o$56836 = -40 -_intPtr$56838 = -44 -_byteArrayArg$56844 = -48 -_charArrayArg$56850 = -52 -_booleanArg$56856 = -56 -_tempPtr$56857 = -60 -_functionHandle$ = -64 -_outVal$ = -68 -_j$ = -72 -_o$56875 = -76 -_out$56877 = -80 -_out$56887 = -84 -$T56916 = -88 -$T56917 = -92 -$T56918 = -96 -$T56919 = -100 -$T56920 = -104 -$T56921 = -108 -_Java_com_eaio_nativecall_IntCall_executeCall0@12 PROC NEAR ; COMDAT - -; 109 : (JNIEnv *env, jobject obj, jobjectArray params) { - - push ebp - mov ebp, esp - sub esp, 172 ; 000000acH - push ebx - push esi - push edi - lea edi, DWORD PTR [ebp-172] - mov ecx, 43 ; 0000002bH - mov eax, -858993460 ; ccccccccH - rep stosd - -; 110 : -; 111 : const int len = env->GetArrayLength(params); - - mov eax, DWORD PTR _params$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z ; JNIEnv_::GetArrayLength - mov DWORD PTR _len$[ebp], eax - -; 112 : -; 113 : int* arrays = NULL; - - mov DWORD PTR _arrays$[ebp], 0 - -; 114 : if (!(arrays = new int[len])) { - - mov ecx, DWORD PTR _len$[ebp] - shl ecx, 2 - push ecx - call ??2@YAPAXI@Z ; operator new - add esp, 4 - mov DWORD PTR $T56916[ebp], eax - mov edx, DWORD PTR $T56916[ebp] - mov DWORD PTR _arrays$[ebp], edx - cmp DWORD PTR _arrays$[ebp], 0 - jne SHORT $L56806 - -; 115 : env->ThrowNew(env->FindClass("java/lang/OutOfMemoryError"), NULL); - - push 0 - push OFFSET FLAT:??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ ; `string' - mov ecx, DWORD PTR _env$[ebp] - call ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ; JNIEnv_::FindClass - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z ; JNIEnv_::ThrowNew - -; 116 : return 0; - - xor eax, eax - jmp $L56801 -$L56806: - -; 118 : memset(arrays, 0, (sizeof(int) * len)); - - mov eax, DWORD PTR _len$[ebp] - shl eax, 2 - push eax - push 0 - mov ecx, DWORD PTR _arrays$[ebp] - push ecx - call _memset - add esp, 12 ; 0000000cH - -; 119 : -; 120 : jobject param; -; 121 : -; 122 : for (int i = len - 1; i >= 0; i--) { - - mov edx, DWORD PTR _len$[ebp] - sub edx, 1 - mov DWORD PTR _i$[ebp], edx - jmp SHORT $L56811 -$L56812: - mov eax, DWORD PTR _i$[ebp] - sub eax, 1 - mov DWORD PTR _i$[ebp], eax -$L56811: - cmp DWORD PTR _i$[ebp], 0 - jl $L56813 - -; 123 : -; 124 : param = env->GetObjectArrayElement(params, i); - - mov ecx, DWORD PTR _i$[ebp] - push ecx - mov edx, DWORD PTR _params$[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z ; JNIEnv_::GetObjectArrayElement - mov DWORD PTR _param$[ebp], eax - -; 125 : -; 126 : if (param == NULL) { - - cmp DWORD PTR _param$[ebp], 0 - jne SHORT $L56814 - -; 127 : _push(0); - - push 0 - -; 129 : else if (env->IsInstanceOf(param, classInteger)) { - - jmp $L56855 -$L56814: - mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - push eax - mov ecx, DWORD PTR _param$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56816 - -; 130 : int intArg = env->CallIntMethod(param, methodIntValue); - - mov edx, DWORD PTR ?methodIntValue@@3PAU_jmethodID@@A ; methodIntValue - push edx - mov eax, DWORD PTR _param$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - push ecx - call ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallIntMethod - add esp, 12 ; 0000000cH - mov DWORD PTR _intArg$56817[ebp], eax - -; 131 : _push(intArg) - - push DWORD PTR _intArg$56817[ebp] - -; 133 : else if (env->IsInstanceOf(param, classByteArray)) { - - jmp $L56855 -$L56816: - mov edx, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray - push edx - mov eax, DWORD PTR _param$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56819 - -; 134 : char* byteArrayArg = (char*) env->GetPrimitiveArrayCritical((jarray) param, 0); - - push 0 - mov ecx, DWORD PTR _param$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ; JNIEnv_::GetPrimitiveArrayCritical - mov DWORD PTR _byteArrayArg$56820[ebp], eax - -; 135 : arrays[i] = (int) &byteArrayArg; - - mov edx, DWORD PTR _i$[ebp] - mov eax, DWORD PTR _arrays$[ebp] - lea ecx, DWORD PTR _byteArrayArg$56820[ebp] - mov DWORD PTR [eax+edx*4], ecx - -; 136 : _push(byteArrayArg) - - push DWORD PTR _byteArrayArg$56820[ebp] - -; 138 : else if (env->IsInstanceOf(param, classCharArray)) { - - jmp $L56855 -$L56819: - mov edx, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray - push edx - mov eax, DWORD PTR _param$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56825 - -; 139 : unsigned short* charArrayArg = (unsigned short*) env->GetPrimitiveArrayCritical( -; 140 : (jarray) param, 0); - - push 0 - mov ecx, DWORD PTR _param$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ; JNIEnv_::GetPrimitiveArrayCritical - mov DWORD PTR _charArrayArg$56826[ebp], eax - -; 141 : arrays[i] = (int) &charArrayArg; - - mov edx, DWORD PTR _i$[ebp] - mov eax, DWORD PTR _arrays$[ebp] - lea ecx, DWORD PTR _charArrayArg$56826[ebp] - mov DWORD PTR [eax+edx*4], ecx - -; 142 : _push(charArrayArg) - - push DWORD PTR _charArrayArg$56826[ebp] - -; 144 : else if (env->IsInstanceOf(param, classBoolean)) { - - jmp $L56855 -$L56825: - mov edx, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - push edx - mov eax, DWORD PTR _param$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56831 - -; 145 : jboolean booleanArg = env->CallBooleanMethod(param, methodBooleanValue); - - mov ecx, DWORD PTR ?methodBooleanValue@@3PAU_jmethodID@@A ; methodBooleanValue - push ecx - mov edx, DWORD PTR _param$[ebp] - push edx - mov eax, DWORD PTR _env$[ebp] - push eax - call ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallBooleanMethod - add esp, 12 ; 0000000cH - mov BYTE PTR _booleanArg$56832[ebp], al - -; 146 : int tempArg = (booleanArg == JNI_FALSE ? 0 : 1); - - mov ecx, DWORD PTR _booleanArg$56832[ebp] - and ecx, 255 ; 000000ffH - neg ecx - sbb ecx, ecx - neg ecx - mov DWORD PTR _tempArg$56833[ebp], ecx - -; 147 : _push(tempArg) - - push DWORD PTR _tempArg$56833[ebp] - -; 149 : else if (env->IsInstanceOf(param, classHolder)) { - - jmp $L56855 -$L56831: - mov edx, DWORD PTR ?classHolder@@3PAV_jclass@@A ; classHolder - push edx - mov eax, DWORD PTR _param$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je $L56855 - -; 150 : -; 151 : /* Holder */ -; 152 : -; 153 : jobject o = env->GetObjectField(param, fieldHolderO); - - mov ecx, DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO - push ecx - mov edx, DWORD PTR _param$[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ; JNIEnv_::GetObjectField - mov DWORD PTR _o$56836[ebp], eax - -; 154 : -; 155 : if (env->IsInstanceOf(o, classInteger)) { - - mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - push eax - mov ecx, DWORD PTR _o$56836[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56837 - -; 156 : int *intPtr = new int; - - push 4 - call ??2@YAPAXI@Z ; operator new - add esp, 4 - mov DWORD PTR $T56917[ebp], eax - mov edx, DWORD PTR $T56917[ebp] - mov DWORD PTR _intPtr$56838[ebp], edx - -; 157 : *intPtr = env->CallIntMethod(o, methodIntValue); - - mov eax, DWORD PTR ?methodIntValue@@3PAU_jmethodID@@A ; methodIntValue - push eax - mov ecx, DWORD PTR _o$56836[ebp] - push ecx - mov edx, DWORD PTR _env$[ebp] - push edx - call ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallIntMethod - add esp, 12 ; 0000000cH - mov ecx, DWORD PTR _intPtr$56838[ebp] - mov DWORD PTR [ecx], eax - -; 158 : arrays[i] = (int) intPtr; - - mov edx, DWORD PTR _i$[ebp] - mov eax, DWORD PTR _arrays$[ebp] - mov ecx, DWORD PTR _intPtr$56838[ebp] - mov DWORD PTR [eax+edx*4], ecx - -; 159 : _push(intPtr); - - push DWORD PTR _intPtr$56838[ebp] - -; 161 : else if (env->IsInstanceOf(o, classByteArray)) { - - jmp $L56855 -$L56837: - mov edx, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray - push edx - mov eax, DWORD PTR _o$56836[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56843 - -; 162 : char* byteArrayArg = (char*) env->GetPrimitiveArrayCritical((jarray) o, 0); - - push 0 - mov ecx, DWORD PTR _o$56836[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ; JNIEnv_::GetPrimitiveArrayCritical - mov DWORD PTR _byteArrayArg$56844[ebp], eax - -; 163 : arrays[i] = (int) &byteArrayArg; - - mov edx, DWORD PTR _i$[ebp] - mov eax, DWORD PTR _arrays$[ebp] - lea ecx, DWORD PTR _byteArrayArg$56844[ebp] - mov DWORD PTR [eax+edx*4], ecx - -; 164 : _push(byteArrayArg) - - push DWORD PTR _byteArrayArg$56844[ebp] - -; 166 : else if (env->IsInstanceOf(o, classCharArray)) { - - jmp $L56855 -$L56843: - mov edx, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray - push edx - mov eax, DWORD PTR _o$56836[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56849 - -; 167 : unsigned short* charArrayArg = (unsigned short*) env->GetPrimitiveArrayCritical( -; 168 : (jarray) o, 0); - - push 0 - mov ecx, DWORD PTR _o$56836[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ; JNIEnv_::GetPrimitiveArrayCritical - mov DWORD PTR _charArrayArg$56850[ebp], eax - -; 169 : arrays[i] = (int) &charArrayArg; - - mov edx, DWORD PTR _i$[ebp] - mov eax, DWORD PTR _arrays$[ebp] - lea ecx, DWORD PTR _charArrayArg$56850[ebp] - mov DWORD PTR [eax+edx*4], ecx - -; 170 : _push(charArrayArg) - - push DWORD PTR _charArrayArg$56850[ebp] - -; 172 : else if (env->IsInstanceOf(o, classBoolean)) { - - jmp SHORT $L56855 -$L56849: - mov edx, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - push edx - mov eax, DWORD PTR _o$56836[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56855 - -; 173 : jboolean booleanArg = env->CallBooleanMethod(o, methodBooleanValue); - - mov ecx, DWORD PTR ?methodBooleanValue@@3PAU_jmethodID@@A ; methodBooleanValue - push ecx - mov edx, DWORD PTR _o$56836[ebp] - push edx - mov eax, DWORD PTR _env$[ebp] - push eax - call ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallBooleanMethod - add esp, 12 ; 0000000cH - mov BYTE PTR _booleanArg$56856[ebp], al - -; 174 : int *tempPtr = new int; - - push 4 - call ??2@YAPAXI@Z ; operator new - add esp, 4 - mov DWORD PTR $T56918[ebp], eax - mov ecx, DWORD PTR $T56918[ebp] - mov DWORD PTR _tempPtr$56857[ebp], ecx - -; 175 : *tempPtr = (booleanArg == JNI_FALSE ? 0 : 1); - - mov edx, DWORD PTR _booleanArg$56856[ebp] - and edx, 255 ; 000000ffH - neg edx - sbb edx, edx - neg edx - mov eax, DWORD PTR _tempPtr$56857[ebp] - mov DWORD PTR [eax], edx - -; 176 : arrays[i] = (int) tempPtr; - - mov ecx, DWORD PTR _i$[ebp] - mov edx, DWORD PTR _arrays$[ebp] - mov eax, DWORD PTR _tempPtr$56857[ebp] - mov DWORD PTR [edx+ecx*4], eax - -; 177 : _push(tempPtr); - - push DWORD PTR _tempPtr$56857[ebp] -$L56855: - -; 183 : -; 184 : } - - jmp $L56812 -$L56813: - -; 185 : -; 186 : jint functionHandle = env->GetIntField(obj, fieldFunctionHandle); - - mov ecx, DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A ; fieldFunctionHandle - push ecx - mov edx, DWORD PTR _obj$[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ; JNIEnv_::GetIntField - mov DWORD PTR _functionHandle$[ebp], eax - -; 187 : jint outVal; -; 188 : -; 189 : #ifdef _WINDOWS -; 190 : #ifdef _X86_ -; 191 : -; 192 : __asm { -; 193 : -; 194 : call functionHandle - - call DWORD PTR _functionHandle$[ebp] - -; 195 : mov outVal, eax - - mov DWORD PTR _outVal$[ebp], eax - -; 196 : -; 197 : } -; 198 : -; 199 : #endif -; 200 : #endif -; 201 : -; 202 : for (int j = 0; j < len; ++j) { - - mov DWORD PTR _j$[ebp], 0 - jmp SHORT $L56864 -$L56865: - mov eax, DWORD PTR _j$[ebp] - add eax, 1 - mov DWORD PTR _j$[ebp], eax -$L56864: - mov ecx, DWORD PTR _j$[ebp] - cmp ecx, DWORD PTR _len$[ebp] - jge $L56866 - -; 203 : param = env->GetObjectArrayElement(params, j); - - mov edx, DWORD PTR _j$[ebp] - push edx - mov eax, DWORD PTR _params$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z ; JNIEnv_::GetObjectArrayElement - mov DWORD PTR _param$[ebp], eax - -; 204 : if (param == NULL) {} - - cmp DWORD PTR _param$[ebp], 0 - jne SHORT $L56867 - -; 205 : else if (env->IsInstanceOf(param, classByteArray) || env->IsInstanceOf(param, classCharArray)) { - - jmp $L56886 -$L56867: - mov ecx, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray - push ecx - mov edx, DWORD PTR _param$[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - jne SHORT $L56870 - mov eax, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray - push eax - mov ecx, DWORD PTR _param$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56869 -$L56870: - -; 206 : env->ReleasePrimitiveArrayCritical((jarray) param, (void*) arrays[j], 0); - - push 0 - mov edx, DWORD PTR _j$[ebp] - mov eax, DWORD PTR _arrays$[ebp] - mov ecx, DWORD PTR [eax+edx*4] - push ecx - mov edx, DWORD PTR _param$[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z ; JNIEnv_::ReleasePrimitiveArrayCritical - -; 208 : else if (env->IsInstanceOf(param, classHolder)) { - - jmp $L56886 -$L56869: - mov eax, DWORD PTR ?classHolder@@3PAV_jclass@@A ; classHolder - push eax - mov ecx, DWORD PTR _param$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je $L56886 - -; 209 : -; 210 : jobject o = env->GetObjectField(param, fieldHolderO); - - mov edx, DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO - push edx - mov eax, DWORD PTR _param$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ; JNIEnv_::GetObjectField - mov DWORD PTR _o$56875[ebp], eax - -; 211 : -; 212 : if (env->IsInstanceOf(o, classInteger)) { - - mov ecx, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - push ecx - mov edx, DWORD PTR _o$56875[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56876 - -; 213 : int* out = (int*) arrays[j]; - - mov eax, DWORD PTR _j$[ebp] - mov ecx, DWORD PTR _arrays$[ebp] - mov edx, DWORD PTR [ecx+eax*4] - mov DWORD PTR _out$56877[ebp], edx - -; 214 : env->SetObjectField(param, fieldHolderO, env->NewObject(classInteger, newIntegerInt, *out)); - - mov eax, DWORD PTR _out$56877[ebp] - mov ecx, DWORD PTR [eax] - push ecx - mov edx, DWORD PTR ?newIntegerInt@@3PAU_jmethodID@@A ; newIntegerInt - push edx - mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - push eax - mov ecx, DWORD PTR _env$[ebp] - push ecx - call ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ; JNIEnv_::NewObject - add esp, 16 ; 00000010H - push eax - mov edx, DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO - push edx - mov eax, DWORD PTR _param$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z ; JNIEnv_::SetObjectField - -; 215 : delete out; - - mov ecx, DWORD PTR _out$56877[ebp] - mov DWORD PTR $T56919[ebp], ecx - mov edx, DWORD PTR $T56919[ebp] - push edx - call ??3@YAXPAX@Z ; operator delete - add esp, 4 - -; 217 : else if (env->IsInstanceOf(o, classByteArray) || env->IsInstanceOf(o, classCharArray)) { - - jmp $L56886 -$L56876: - mov eax, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray - push eax - mov ecx, DWORD PTR _o$56875[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - jne SHORT $L56882 - mov edx, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray - push edx - mov eax, DWORD PTR _o$56875[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56881 -$L56882: - -; 218 : env->ReleasePrimitiveArrayCritical((jarray) o, (void*) arrays[j], 0); - - push 0 - mov ecx, DWORD PTR _j$[ebp] - mov edx, DWORD PTR _arrays$[ebp] - mov eax, DWORD PTR [edx+ecx*4] - push eax - mov ecx, DWORD PTR _o$56875[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z ; JNIEnv_::ReleasePrimitiveArrayCritical - -; 220 : else if (env->IsInstanceOf(o, classBoolean)) { - - jmp SHORT $L56886 -$L56881: - mov edx, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - push edx - mov eax, DWORD PTR _o$56875[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56886 - -; 221 : int* out = (int*) arrays[j]; - - mov ecx, DWORD PTR _j$[ebp] - mov edx, DWORD PTR _arrays$[ebp] - mov eax, DWORD PTR [edx+ecx*4] - mov DWORD PTR _out$56887[ebp], eax - -; 222 : env->SetObjectField(param, fieldHolderO, env->NewObject(classBoolean, newBooleanBoolean, (*out == 0 ? JNI_FALSE : JNI_TRUE))); - - mov ecx, DWORD PTR _out$56887[ebp] - xor edx, edx - cmp DWORD PTR [ecx], 0 - setne dl - push edx - mov eax, DWORD PTR ?newBooleanBoolean@@3PAU_jmethodID@@A ; newBooleanBoolean - push eax - mov ecx, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - push ecx - mov edx, DWORD PTR _env$[ebp] - push edx - call ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ; JNIEnv_::NewObject - add esp, 16 ; 00000010H - push eax - mov eax, DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO - push eax - mov ecx, DWORD PTR _param$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z ; JNIEnv_::SetObjectField - -; 223 : delete out; - - mov edx, DWORD PTR _out$56887[ebp] - mov DWORD PTR $T56920[ebp], edx - mov eax, DWORD PTR $T56920[ebp] - push eax - call ??3@YAXPAX@Z ; operator delete - add esp, 4 -$L56886: - -; 227 : -; 228 : } - - jmp $L56865 -$L56866: - -; 229 : -; 230 : delete [] arrays; - - mov ecx, DWORD PTR _arrays$[ebp] - mov DWORD PTR $T56921[ebp], ecx - mov edx, DWORD PTR $T56921[ebp] - push edx - call ??3@YAXPAX@Z ; operator delete - add esp, 4 - -; 231 : -; 232 : env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - - mov esi, esp - call DWORD PTR __imp__GetLastError@0 - cmp esi, esp - call __chkesp - push eax - mov eax, DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField - -; 233 : -; 234 : return outVal; - - mov eax, DWORD PTR _outVal$[ebp] -$L56801: - -; 235 : -; 236 : } - - pop edi - pop esi - pop ebx - add esp, 172 ; 000000acH - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 12 ; 0000000cH -_Java_com_eaio_nativecall_IntCall_executeCall0@12 ENDP -_TEXT ENDS -; COMDAT ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z -_TEXT SEGMENT -_this$ = -4 -_name$ = 8 -?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z PROC NEAR ; JNIEnv_::FindClass, COMDAT - -; 759 : jclass FindClass(const char *name) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 760 : return functions->FindClass(this, name); - - mov esi, esp - mov eax, DWORD PTR _name$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - mov eax, DWORD PTR [edx] - call DWORD PTR [eax+24] - cmp esi, esp - call __chkesp - -; 761 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 4 -?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ENDP ; JNIEnv_::FindClass -_TEXT ENDS -; COMDAT ?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z -_TEXT SEGMENT -_this$ = -4 -_clazz$ = 8 -_msg$ = 12 -?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z PROC NEAR ; JNIEnv_::ThrowNew, COMDAT - -; 787 : jint ThrowNew(jclass clazz, const char *msg) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 788 : return functions->ThrowNew(this, clazz, msg); - - mov esi, esp - mov eax, DWORD PTR _msg$[ebp] - push eax - mov ecx, DWORD PTR _clazz$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - mov ecx, DWORD PTR [eax] - call DWORD PTR [ecx+56] - cmp esi, esp - call __chkesp - -; 789 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z ENDP ; JNIEnv_::ThrowNew -_TEXT ENDS -; COMDAT ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ -_TEXT SEGMENT -_this$ = 8 -_args$ = -4 -_result$ = -8 -_clazz$ = 12 -_methodID$ = 16 -?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ PROC NEAR ; JNIEnv_::NewObject, COMDAT - -; 834 : jobject NewObject(jclass clazz, jmethodID methodID, ...) { - - push ebp - mov ebp, esp - sub esp, 72 ; 00000048H - push ebx - push esi - push edi - lea edi, DWORD PTR [ebp-72] - mov ecx, 18 ; 00000012H - mov eax, -858993460 ; ccccccccH - rep stosd - -; 835 : va_list args; -; 836 : jobject result; -; 837 : va_start(args, methodID); - - lea eax, DWORD PTR _methodID$[ebp+4] - mov DWORD PTR _args$[ebp], eax - -; 838 : result = functions->NewObjectV(this,clazz,methodID,args); - - mov esi, esp - mov ecx, DWORD PTR _args$[ebp] - push ecx - mov edx, DWORD PTR _methodID$[ebp] - push edx - mov eax, DWORD PTR _clazz$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - mov eax, DWORD PTR [edx] - call DWORD PTR [eax+116] - cmp esi, esp - call __chkesp - mov DWORD PTR _result$[ebp], eax - -; 839 : va_end(args); - - mov DWORD PTR _args$[ebp], 0 - -; 840 : return result; - - mov eax, DWORD PTR _result$[ebp] - -; 841 : } - - pop edi - pop esi - pop ebx - add esp, 72 ; 00000048H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 0 -?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ENDP ; JNIEnv_::NewObject -_TEXT ENDS -; COMDAT ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z -_TEXT SEGMENT -_this$ = -4 -_obj$ = 8 -_clazz$ = 12 -?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z PROC NEAR ; JNIEnv_::IsInstanceOf, COMDAT - -; 854 : jboolean IsInstanceOf(jobject obj, jclass clazz) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 855 : return functions->IsInstanceOf(this,obj,clazz); - - mov esi, esp - mov eax, DWORD PTR _clazz$[ebp] - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - mov ecx, DWORD PTR [eax] - call DWORD PTR [ecx+128] - cmp esi, esp - call __chkesp - -; 856 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ENDP ; JNIEnv_::IsInstanceOf -_TEXT ENDS -; COMDAT ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ -_TEXT SEGMENT -_this$ = 8 -_args$ = -4 -_result$ = -8 -_obj$ = 12 -_methodID$ = 16 -?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ PROC NEAR ; JNIEnv_::CallBooleanMethod, COMDAT - -; 881 : jmethodID methodID, ...) { - - push ebp - mov ebp, esp - sub esp, 72 ; 00000048H - push ebx - push esi - push edi - lea edi, DWORD PTR [ebp-72] - mov ecx, 18 ; 00000012H - mov eax, -858993460 ; ccccccccH - rep stosd - -; 882 : va_list args; -; 883 : jboolean result; -; 884 : va_start(args,methodID); - - lea eax, DWORD PTR _methodID$[ebp+4] - mov DWORD PTR _args$[ebp], eax - -; 885 : result = functions->CallBooleanMethodV(this,obj,methodID,args); - - mov esi, esp - mov ecx, DWORD PTR _args$[ebp] - push ecx - mov edx, DWORD PTR _methodID$[ebp] - push edx - mov eax, DWORD PTR _obj$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - mov eax, DWORD PTR [edx] - call DWORD PTR [eax+152] - cmp esi, esp - call __chkesp - mov BYTE PTR _result$[ebp], al - -; 886 : va_end(args); - - mov DWORD PTR _args$[ebp], 0 - -; 887 : return result; - - mov al, BYTE PTR _result$[ebp] - -; 888 : } - - pop edi - pop esi - pop ebx - add esp, 72 ; 00000048H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 0 -?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ENDP ; JNIEnv_::CallBooleanMethod -_TEXT ENDS -; COMDAT ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ -_TEXT SEGMENT -_this$ = 8 -_args$ = -4 -_result$ = -8 -_obj$ = 12 -_methodID$ = 16 -?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ PROC NEAR ; JNIEnv_::CallIntMethod, COMDAT - -; 949 : jint CallIntMethod(jobject obj, jmethodID methodID, ...) { - - push ebp - mov ebp, esp - sub esp, 72 ; 00000048H - push ebx - push esi - push edi - lea edi, DWORD PTR [ebp-72] - mov ecx, 18 ; 00000012H - mov eax, -858993460 ; ccccccccH - rep stosd - -; 950 : va_list args; -; 951 : jint result; -; 952 : va_start(args,methodID); - - lea eax, DWORD PTR _methodID$[ebp+4] - mov DWORD PTR _args$[ebp], eax - -; 953 : result = functions->CallIntMethodV(this,obj,methodID,args); - - mov esi, esp - mov ecx, DWORD PTR _args$[ebp] - push ecx - mov edx, DWORD PTR _methodID$[ebp] - push edx - mov eax, DWORD PTR _obj$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - mov eax, DWORD PTR [edx] - call DWORD PTR [eax+200] - cmp esi, esp - call __chkesp - mov DWORD PTR _result$[ebp], eax - -; 954 : va_end(args); - - mov DWORD PTR _args$[ebp], 0 - -; 955 : return result; - - mov eax, DWORD PTR _result$[ebp] - -; 956 : } - - pop edi - pop esi - pop ebx - add esp, 72 ; 00000048H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 0 -?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ENDP ; JNIEnv_::CallIntMethod -_TEXT ENDS -; COMDAT ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z -_TEXT SEGMENT -_obj$ = 8 -_fieldID$ = 12 -_this$ = -4 -?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z PROC NEAR ; JNIEnv_::GetObjectField, COMDAT - -; 1248 : jobject GetObjectField(jobject obj, jfieldID fieldID) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1249 : return functions->GetObjectField(this,obj,fieldID); - - mov esi, esp - mov eax, DWORD PTR _fieldID$[ebp] - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - mov ecx, DWORD PTR [eax] - call DWORD PTR [ecx+380] - cmp esi, esp - call __chkesp - -; 1250 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ENDP ; JNIEnv_::GetObjectField -_TEXT ENDS -; COMDAT ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z -_TEXT SEGMENT -_obj$ = 8 -_fieldID$ = 12 -_this$ = -4 -?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z PROC NEAR ; JNIEnv_::GetIntField, COMDAT - -; 1263 : jint GetIntField(jobject obj, jfieldID fieldID) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1264 : return functions->GetIntField(this,obj,fieldID); - - mov esi, esp - mov eax, DWORD PTR _fieldID$[ebp] - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - mov ecx, DWORD PTR [eax] - call DWORD PTR [ecx+400] - cmp esi, esp - call __chkesp - -; 1265 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ENDP ; JNIEnv_::GetIntField -_TEXT ENDS -; COMDAT ?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z -_TEXT SEGMENT -_obj$ = 8 -_fieldID$ = 12 -_val$ = 16 -_this$ = -4 -?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z PROC NEAR ; JNIEnv_::SetObjectField, COMDAT - -; 1276 : void SetObjectField(jobject obj, jfieldID fieldID, jobject val) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1277 : functions->SetObjectField(this,obj,fieldID,val); - - mov esi, esp - mov eax, DWORD PTR _val$[ebp] - push eax - mov ecx, DWORD PTR _fieldID$[ebp] - push ecx - mov edx, DWORD PTR _obj$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - mov edx, DWORD PTR [ecx] - call DWORD PTR [edx+416] - cmp esi, esp - call __chkesp - -; 1278 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 12 ; 0000000cH -?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z ENDP ; JNIEnv_::SetObjectField -_TEXT ENDS -; COMDAT ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z -_TEXT SEGMENT -_obj$ = 8 -_fieldID$ = 12 -_val$ = 16 -_this$ = -4 -?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z PROC NEAR ; JNIEnv_::SetIntField, COMDAT - -; 1296 : jint val) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1297 : functions->SetIntField(this,obj,fieldID,val); - - mov esi, esp - mov eax, DWORD PTR _val$[ebp] - push eax - mov ecx, DWORD PTR _fieldID$[ebp] - push ecx - mov edx, DWORD PTR _obj$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - mov edx, DWORD PTR [ecx] - call DWORD PTR [edx+436] - cmp esi, esp - call __chkesp - -; 1298 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 12 ; 0000000cH -?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ENDP ; JNIEnv_::SetIntField -_TEXT ENDS -; COMDAT ?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z -_TEXT SEGMENT -_this$ = -4 -_array$ = 8 -?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z PROC NEAR ; JNIEnv_::GetArrayLength, COMDAT - -; 1589 : jsize GetArrayLength(jarray array) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1590 : return functions->GetArrayLength(this,array); - - mov esi, esp - mov eax, DWORD PTR _array$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - mov eax, DWORD PTR [edx] - call DWORD PTR [eax+684] - cmp esi, esp - call __chkesp - -; 1591 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 4 -?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z ENDP ; JNIEnv_::GetArrayLength -_TEXT ENDS -; COMDAT ?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z -_TEXT SEGMENT -_this$ = -4 -_array$ = 8 -_index$ = 12 -?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z PROC NEAR ; JNIEnv_::GetObjectArrayElement, COMDAT - -; 1597 : jobject GetObjectArrayElement(jobjectArray array, jsize index) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1598 : return functions->GetObjectArrayElement(this,array,index); - - mov esi, esp - mov eax, DWORD PTR _index$[ebp] - push eax - mov ecx, DWORD PTR _array$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - mov ecx, DWORD PTR [eax] - call DWORD PTR [ecx+692] - cmp esi, esp - call __chkesp - -; 1599 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z ENDP ; JNIEnv_::GetObjectArrayElement -_TEXT ENDS -; COMDAT ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z -_TEXT SEGMENT -_this$ = -4 -_array$ = 8 -_isCopy$ = 12 -?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z PROC NEAR ; JNIEnv_::GetPrimitiveArrayCritical, COMDAT - -; 1788 : void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1789 : return functions->GetPrimitiveArrayCritical(this,array,isCopy); - - mov esi, esp - mov eax, DWORD PTR _isCopy$[ebp] - push eax - mov ecx, DWORD PTR _array$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - mov ecx, DWORD PTR [eax] - call DWORD PTR [ecx+888] - cmp esi, esp - call __chkesp - -; 1790 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ENDP ; JNIEnv_::GetPrimitiveArrayCritical -_TEXT ENDS -; COMDAT ?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z -_TEXT SEGMENT -_this$ = -4 -_array$ = 8 -_carray$ = 12 -_mode$ = 16 -?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z PROC NEAR ; JNIEnv_::ReleasePrimitiveArrayCritical, COMDAT - -; 1791 : void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1792 : functions->ReleasePrimitiveArrayCritical(this,array,carray,mode); - - mov esi, esp - mov eax, DWORD PTR _mode$[ebp] - push eax - mov ecx, DWORD PTR _carray$[ebp] - push ecx - mov edx, DWORD PTR _array$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - mov edx, DWORD PTR [ecx] - call DWORD PTR [edx+892] - cmp esi, esp - call __chkesp - -; 1793 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 12 ; 0000000cH -?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z ENDP ; JNIEnv_::ReleasePrimitiveArrayCritical -_TEXT ENDS -END diff --git a/vendor/nativecall/0.4.1/cpp/Debug/IntCall.obj b/vendor/nativecall/0.4.1/cpp/Debug/IntCall.obj deleted file mode 100644 index f33470ab04097ceee39134613ba1da012943d022..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27787 zcmc(I3wT_`m1e11YRRpqW%>P}F@_0CEQ}2pOo(;WeOqeWkL!L&G7((2rM4|0sfE!z1LeA)ADd2Z?7OJIuyp2yuv$FbN3>!(>Um%)}6~!2?;Cjb||5dhq^# z)xEcGx6}&u!nfC7m+DrXbLyN^=bSoKxBEI;wNB&$U7?d{A*!l`yxIpRas!1Ma_UZq zU!d|xjeTeR^|y%j!Q8H?J?m0-&-*VB;$uD`YBs8tW%$!AS~}Ycx%~wj2!BWL`8U91 zHwp0-d}{G8&|>T?r*{N!KS%$)7b|2B{&cs@ruR5_dk`>twg~Z&D}^vbMA4fV%oef= zm*q-)uH0I@XRV`ULr3|z(_SI^0QY>Sf?a_>bB!B8`|pB6w1D%0DEzWsoC4xd->sl?yofNO!We@cbpswD4D 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 J!|vnI{}=y08ma&Q diff --git a/vendor/nativecall/0.4.1/cpp/Debug/NativeCall.asm b/vendor/nativecall/0.4.1/cpp/Debug/NativeCall.asm deleted file mode 100644 index 8e38052..0000000 --- a/vendor/nativecall/0.4.1/cpp/Debug/NativeCall.asm +++ /dev/null @@ -1,1492 +0,0 @@ - TITLE C:\Documents and Settings\Administrator\My Documents\Software\NativeCall\src\cpp\NativeCall.cpp - .386P -include listing.inc -if @Version gt 510 -.model FLAT -else -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -_BSS SEGMENT DWORD USE32 PUBLIC 'BSS' -_BSS ENDS -$$SYMBOLS SEGMENT BYTE USE32 'DEBSYM' -$$SYMBOLS ENDS -$$TYPES SEGMENT BYTE USE32 'DEBTYP' -$$TYPES ENDS -_TLS SEGMENT DWORD USE32 PUBLIC 'TLS' -_TLS ENDS -; COMDAT ??_C@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_08JJOG@function?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_06CODG@module?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_01FLOP@I?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_0P@LKIL@functionHandle?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_0N@EFAA@moduleHandle?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_0O@OMHL@lastErrorCode?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_0BL@DALH@com?1eaio?1nativecall?1Holder?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_0BD@GEDI@Ljava?1lang?1Object?$DL?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_01PGHN@o?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_0BC@IGNJ@java?1lang?1Boolean?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_0BC@FBKL@java?1lang?1Integer?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_0BB@LLFN@java?1lang?1String?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_02LOEJ@?$FLB?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_02BENO@?$FLC?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_03KJOK@?$CI?$CJZ?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_0N@KEBP@booleanValue?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_03PPCD@?$CI?$CJI?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_08JCMA@intValue?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_04ECLF@?$CII?$CJV?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_06KILP@?$DMinit?$DO?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ??_C@_04JFOE@?$CIZ?$CJV?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?NewStringUTF@JNIEnv_@@QAEPAV_jstring@@PBD@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetStringUTFChars@JNIEnv_@@QAEPBDPAV_jstring@@PAE@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?ReleaseStringUTFChars@JNIEnv_@@QAEXPAV_jstring@@PBD@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ??8@YAHABU_GUID@@0@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT _Java_com_eaio_nativecall_NativeCall_initIDs@8 -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT _Java_com_eaio_nativecall_NativeCall_initHandles@8 -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT _Java_com_eaio_nativecall_NativeCall_getLastError@8 -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT _Java_com_eaio_nativecall_NativeCall_destroy@8 -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -FLAT GROUP _DATA, CONST, _BSS - ASSUME CS: FLAT, DS: FLAT, SS: FLAT -endif -PUBLIC ?fieldFunction@@3PAU_jfieldID@@A ; fieldFunction -PUBLIC ?fieldModule@@3PAU_jfieldID@@A ; fieldModule -PUBLIC ?fieldFunctionHandle@@3PAU_jfieldID@@A ; fieldFunctionHandle -PUBLIC ?fieldModuleHandle@@3PAU_jfieldID@@A ; fieldModuleHandle -PUBLIC ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode -PUBLIC ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO -PUBLIC ?classBoolean@@3PAV_jclass@@A ; classBoolean -PUBLIC ?classInteger@@3PAV_jclass@@A ; classInteger -PUBLIC ?classString@@3PAV_jclass@@A ; classString -PUBLIC ?classByteArray@@3PAV_jclass@@A ; classByteArray -PUBLIC ?classCharArray@@3PAV_jclass@@A ; classCharArray -PUBLIC ?classHolder@@3PAV_jclass@@A ; classHolder -PUBLIC ?methodBooleanValue@@3PAU_jmethodID@@A ; methodBooleanValue -PUBLIC ?methodIntValue@@3PAU_jmethodID@@A ; methodIntValue -PUBLIC ?newIntegerInt@@3PAU_jmethodID@@A ; newIntegerInt -PUBLIC ?newBooleanBoolean@@3PAU_jmethodID@@A ; newBooleanBoolean -_BSS SEGMENT -?fieldFunction@@3PAU_jfieldID@@A DD 01H DUP (?) ; fieldFunction -?fieldModule@@3PAU_jfieldID@@A DD 01H DUP (?) ; fieldModule -?fieldFunctionHandle@@3PAU_jfieldID@@A DD 01H DUP (?) ; fieldFunctionHandle -?fieldModuleHandle@@3PAU_jfieldID@@A DD 01H DUP (?) ; fieldModuleHandle -?fieldLastErrorCode@@3PAU_jfieldID@@A DD 01H DUP (?) ; fieldLastErrorCode -?fieldHolderO@@3PAU_jfieldID@@A DD 01H DUP (?) ; fieldHolderO -?classBoolean@@3PAV_jclass@@A DD 01H DUP (?) ; classBoolean -?classInteger@@3PAV_jclass@@A DD 01H DUP (?) ; classInteger -?classString@@3PAV_jclass@@A DD 01H DUP (?) ; classString -?classByteArray@@3PAV_jclass@@A DD 01H DUP (?) ; classByteArray -?classCharArray@@3PAV_jclass@@A DD 01H DUP (?) ; classCharArray -?classHolder@@3PAV_jclass@@A DD 01H DUP (?) ; classHolder -?methodBooleanValue@@3PAU_jmethodID@@A DD 01H DUP (?) ; methodBooleanValue -?methodIntValue@@3PAU_jmethodID@@A DD 01H DUP (?) ; methodIntValue -?newIntegerInt@@3PAU_jmethodID@@A DD 01H DUP (?) ; newIntegerInt -?newBooleanBoolean@@3PAU_jmethodID@@A DD 01H DUP (?) ; newBooleanBoolean -_BSS ENDS -PUBLIC ?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetFieldID -PUBLIC _Java_com_eaio_nativecall_NativeCall_initIDs@8 -PUBLIC ??_C@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@ ; `string' -PUBLIC ??_C@_08JJOG@function?$AA@ ; `string' -PUBLIC ??_C@_06CODG@module?$AA@ ; `string' -PUBLIC ??_C@_01FLOP@I?$AA@ ; `string' -PUBLIC ??_C@_0P@LKIL@functionHandle?$AA@ ; `string' -PUBLIC ??_C@_0N@EFAA@moduleHandle?$AA@ ; `string' -PUBLIC ??_C@_0O@OMHL@lastErrorCode?$AA@ ; `string' -PUBLIC ??_C@_0BL@DALH@com?1eaio?1nativecall?1Holder?$AA@ ; `string' -PUBLIC ??_C@_0BD@GEDI@Ljava?1lang?1Object?$DL?$AA@ ; `string' -PUBLIC ??_C@_01PGHN@o?$AA@ ; `string' -PUBLIC ??_C@_0BC@IGNJ@java?1lang?1Boolean?$AA@ ; `string' -PUBLIC ??_C@_0BC@FBKL@java?1lang?1Integer?$AA@ ; `string' -PUBLIC ??_C@_0BB@LLFN@java?1lang?1String?$AA@ ; `string' -PUBLIC ??_C@_02LOEJ@?$FLB?$AA@ ; `string' -PUBLIC ??_C@_02BENO@?$FLC?$AA@ ; `string' -PUBLIC ??_C@_03KJOK@?$CI?$CJZ?$AA@ ; `string' -PUBLIC ??_C@_0N@KEBP@booleanValue?$AA@ ; `string' -PUBLIC ??_C@_03PPCD@?$CI?$CJI?$AA@ ; `string' -PUBLIC ??_C@_08JCMA@intValue?$AA@ ; `string' -PUBLIC ??_C@_04ECLF@?$CII?$CJV?$AA@ ; `string' -PUBLIC ??_C@_06KILP@?$DMinit?$DO?$AA@ ; `string' -PUBLIC ??_C@_04JFOE@?$CIZ?$CJV?$AA@ ; `string' -PUBLIC ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ; JNIEnv_::FindClass -PUBLIC ?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z ; JNIEnv_::NewGlobalRef -PUBLIC ?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetMethodID -EXTRN __chkesp:NEAR -; COMDAT ??_C@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@ -; File c:\documents and settings\administrator\my documents\software\nativecall\src\cpp\nativecall.cpp -CONST SEGMENT -??_C@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@ DB 'Ljava/lang/String;', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_08JJOG@function?$AA@ -CONST SEGMENT -??_C@_08JJOG@function?$AA@ DB 'function', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_06CODG@module?$AA@ -CONST SEGMENT -??_C@_06CODG@module?$AA@ DB 'module', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_01FLOP@I?$AA@ -CONST SEGMENT -??_C@_01FLOP@I?$AA@ DB 'I', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_0P@LKIL@functionHandle?$AA@ -CONST SEGMENT -??_C@_0P@LKIL@functionHandle?$AA@ DB 'functionHandle', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_0N@EFAA@moduleHandle?$AA@ -CONST SEGMENT -??_C@_0N@EFAA@moduleHandle?$AA@ DB 'moduleHandle', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_0O@OMHL@lastErrorCode?$AA@ -CONST SEGMENT -??_C@_0O@OMHL@lastErrorCode?$AA@ DB 'lastErrorCode', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_0BL@DALH@com?1eaio?1nativecall?1Holder?$AA@ -CONST SEGMENT -??_C@_0BL@DALH@com?1eaio?1nativecall?1Holder?$AA@ DB 'com/eaio/nativecall' - DB '/Holder', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_0BD@GEDI@Ljava?1lang?1Object?$DL?$AA@ -CONST SEGMENT -??_C@_0BD@GEDI@Ljava?1lang?1Object?$DL?$AA@ DB 'Ljava/lang/Object;', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_01PGHN@o?$AA@ -CONST SEGMENT -??_C@_01PGHN@o?$AA@ DB 'o', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_0BC@IGNJ@java?1lang?1Boolean?$AA@ -CONST SEGMENT -??_C@_0BC@IGNJ@java?1lang?1Boolean?$AA@ DB 'java/lang/Boolean', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_0BC@FBKL@java?1lang?1Integer?$AA@ -CONST SEGMENT -??_C@_0BC@FBKL@java?1lang?1Integer?$AA@ DB 'java/lang/Integer', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_0BB@LLFN@java?1lang?1String?$AA@ -CONST SEGMENT -??_C@_0BB@LLFN@java?1lang?1String?$AA@ DB 'java/lang/String', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_02LOEJ@?$FLB?$AA@ -CONST SEGMENT -??_C@_02LOEJ@?$FLB?$AA@ DB '[B', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_02BENO@?$FLC?$AA@ -CONST SEGMENT -??_C@_02BENO@?$FLC?$AA@ DB '[C', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_03KJOK@?$CI?$CJZ?$AA@ -CONST SEGMENT -??_C@_03KJOK@?$CI?$CJZ?$AA@ DB '()Z', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_0N@KEBP@booleanValue?$AA@ -CONST SEGMENT -??_C@_0N@KEBP@booleanValue?$AA@ DB 'booleanValue', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_03PPCD@?$CI?$CJI?$AA@ -CONST SEGMENT -??_C@_03PPCD@?$CI?$CJI?$AA@ DB '()I', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_08JCMA@intValue?$AA@ -CONST SEGMENT -??_C@_08JCMA@intValue?$AA@ DB 'intValue', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_04ECLF@?$CII?$CJV?$AA@ -CONST SEGMENT -??_C@_04ECLF@?$CII?$CJV?$AA@ DB '(I)V', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_06KILP@?$DMinit?$DO?$AA@ -CONST SEGMENT -??_C@_06KILP@?$DMinit?$DO?$AA@ DB '', 00H ; `string' -CONST ENDS -; COMDAT ??_C@_04JFOE@?$CIZ?$CJV?$AA@ -CONST SEGMENT -??_C@_04JFOE@?$CIZ?$CJV?$AA@ DB '(Z)V', 00H ; `string' -CONST ENDS -; COMDAT _Java_com_eaio_nativecall_NativeCall_initIDs@8 -_TEXT SEGMENT -_env$ = 8 -_cls$ = 12 -_Java_com_eaio_nativecall_NativeCall_initIDs@8 PROC NEAR ; COMDAT - -; 71 : (JNIEnv *env, jclass cls) { - - push ebp - mov ebp, esp - sub esp, 64 ; 00000040H - push ebx - push esi - push edi - lea edi, DWORD PTR [ebp-64] - mov ecx, 16 ; 00000010H - mov eax, -858993460 ; ccccccccH - rep stosd - -; 72 : -; 73 : // NativeCall fields -; 74 : -; 75 : fieldFunction = env->GetFieldID(cls, "function", "Ljava/lang/String;"); - - push OFFSET FLAT:??_C@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@ ; `string' - push OFFSET FLAT:??_C@_08JJOG@function?$AA@ ; `string' - mov eax, DWORD PTR _cls$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetFieldID - mov DWORD PTR ?fieldFunction@@3PAU_jfieldID@@A, eax ; fieldFunction - -; 76 : fieldModule = env->GetFieldID(cls, "module", "Ljava/lang/String;"); - - push OFFSET FLAT:??_C@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@ ; `string' - push OFFSET FLAT:??_C@_06CODG@module?$AA@ ; `string' - mov ecx, DWORD PTR _cls$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetFieldID - mov DWORD PTR ?fieldModule@@3PAU_jfieldID@@A, eax ; fieldModule - -; 77 : -; 78 : fieldFunctionHandle = env->GetFieldID(cls, "functionHandle", "I"); - - push OFFSET FLAT:??_C@_01FLOP@I?$AA@ ; `string' - push OFFSET FLAT:??_C@_0P@LKIL@functionHandle?$AA@ ; `string' - mov edx, DWORD PTR _cls$[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetFieldID - mov DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A, eax ; fieldFunctionHandle - -; 79 : fieldModuleHandle = env-> GetFieldID(cls, "moduleHandle", "I"); - - push OFFSET FLAT:??_C@_01FLOP@I?$AA@ ; `string' - push OFFSET FLAT:??_C@_0N@EFAA@moduleHandle?$AA@ ; `string' - mov eax, DWORD PTR _cls$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetFieldID - mov DWORD PTR ?fieldModuleHandle@@3PAU_jfieldID@@A, eax ; fieldModuleHandle - -; 80 : -; 81 : fieldLastErrorCode = env->GetFieldID(cls, "lastErrorCode", "I"); - - push OFFSET FLAT:??_C@_01FLOP@I?$AA@ ; `string' - push OFFSET FLAT:??_C@_0O@OMHL@lastErrorCode?$AA@ ; `string' - mov ecx, DWORD PTR _cls$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetFieldID - mov DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A, eax ; fieldLastErrorCode - -; 82 : -; 83 : // Holder fields -; 84 : -; 85 : classHolder = (jclass) env->NewGlobalRef(env->FindClass("com/eaio/nativecall/Holder")); - - push OFFSET FLAT:??_C@_0BL@DALH@com?1eaio?1nativecall?1Holder?$AA@ ; `string' - mov ecx, DWORD PTR _env$[ebp] - call ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ; JNIEnv_::FindClass - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z ; JNIEnv_::NewGlobalRef - mov DWORD PTR ?classHolder@@3PAV_jclass@@A, eax ; classHolder - -; 86 : fieldHolderO = env->GetFieldID(classHolder, "o", "Ljava/lang/Object;"); - - push OFFSET FLAT:??_C@_0BD@GEDI@Ljava?1lang?1Object?$DL?$AA@ ; `string' - push OFFSET FLAT:??_C@_01PGHN@o?$AA@ ; `string' - mov edx, DWORD PTR ?classHolder@@3PAV_jclass@@A ; classHolder - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetFieldID - mov DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A, eax ; fieldHolderO - -; 87 : -; 88 : // Other classes -; 89 : -; 90 : classBoolean = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Boolean")); - - push OFFSET FLAT:??_C@_0BC@IGNJ@java?1lang?1Boolean?$AA@ ; `string' - mov ecx, DWORD PTR _env$[ebp] - call ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ; JNIEnv_::FindClass - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z ; JNIEnv_::NewGlobalRef - mov DWORD PTR ?classBoolean@@3PAV_jclass@@A, eax ; classBoolean - -; 91 : /*classByte = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Byte")); -; 92 : classCharacter = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Character")); -; 93 : classShort = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Short"));*/ -; 94 : classInteger = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Integer")); - - push OFFSET FLAT:??_C@_0BC@FBKL@java?1lang?1Integer?$AA@ ; `string' - mov ecx, DWORD PTR _env$[ebp] - call ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ; JNIEnv_::FindClass - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z ; JNIEnv_::NewGlobalRef - mov DWORD PTR ?classInteger@@3PAV_jclass@@A, eax ; classInteger - -; 95 : /*classLong = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Long")); -; 96 : classFloat = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Float")); -; 97 : classDouble = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Double"));*/ -; 98 : classString = (jclass) env->NewGlobalRef(env->FindClass("java/lang/String")); - - push OFFSET FLAT:??_C@_0BB@LLFN@java?1lang?1String?$AA@ ; `string' - mov ecx, DWORD PTR _env$[ebp] - call ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ; JNIEnv_::FindClass - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z ; JNIEnv_::NewGlobalRef - mov DWORD PTR ?classString@@3PAV_jclass@@A, eax ; classString - -; 99 : classByteArray = (jclass) env->NewGlobalRef(env->FindClass("[B")); - - push OFFSET FLAT:??_C@_02LOEJ@?$FLB?$AA@ ; `string' - mov ecx, DWORD PTR _env$[ebp] - call ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ; JNIEnv_::FindClass - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z ; JNIEnv_::NewGlobalRef - mov DWORD PTR ?classByteArray@@3PAV_jclass@@A, eax ; classByteArray - -; 100 : classCharArray = (jclass) env->NewGlobalRef(env->FindClass("[C")); - - push OFFSET FLAT:??_C@_02BENO@?$FLC?$AA@ ; `string' - mov ecx, DWORD PTR _env$[ebp] - call ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ; JNIEnv_::FindClass - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z ; JNIEnv_::NewGlobalRef - mov DWORD PTR ?classCharArray@@3PAV_jclass@@A, eax ; classCharArray - -; 101 : /*classIntArray = (jclass) env->NewGlobalRef(env->FindClass("[I"));*/ -; 102 : -; 103 : // Wrapper class methods -; 104 : -; 105 : methodBooleanValue = env->GetMethodID(classBoolean, -; 106 : "booleanValue", "()Z"); - - push OFFSET FLAT:??_C@_03KJOK@?$CI?$CJZ?$AA@ ; `string' - push OFFSET FLAT:??_C@_0N@KEBP@booleanValue?$AA@ ; `string' - mov eax, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetMethodID - mov DWORD PTR ?methodBooleanValue@@3PAU_jmethodID@@A, eax ; methodBooleanValue - -; 107 : /*methodByteValue = env->GetMethodID(classByte, -; 108 : "byteValue", "()B"); -; 109 : methodCharValue = env->GetMethodID(classCharacter, -; 110 : "charValue", "()C"); -; 111 : methodShortValue = env->GetMethodID(classShort, -; 112 : "shortValue", "()S");*/ -; 113 : methodIntValue = env->GetMethodID(classInteger, -; 114 : "intValue", "()I"); - - push OFFSET FLAT:??_C@_03PPCD@?$CI?$CJI?$AA@ ; `string' - push OFFSET FLAT:??_C@_08JCMA@intValue?$AA@ ; `string' - mov ecx, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetMethodID - mov DWORD PTR ?methodIntValue@@3PAU_jmethodID@@A, eax ; methodIntValue - -; 115 : /*methodLongValue = env->GetMethodID(classLong, -; 116 : "longValue", "()J"); -; 117 : methodFloatValue = env->GetMethodID(classFloat, -; 118 : "floatValue", "()F"); -; 119 : methodDoubleValue = env->GetMethodID(classDouble, -; 120 : "doubleValue", "()D");*/ -; 121 : -; 122 : // Constructors -; 123 : -; 124 : newIntegerInt = env->GetMethodID(classInteger, "", "(I)V"); - - push OFFSET FLAT:??_C@_04ECLF@?$CII?$CJV?$AA@ ; `string' - push OFFSET FLAT:??_C@_06KILP@?$DMinit?$DO?$AA@ ; `string' - mov edx, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetMethodID - mov DWORD PTR ?newIntegerInt@@3PAU_jmethodID@@A, eax ; newIntegerInt - -; 125 : newBooleanBoolean = env->GetMethodID(classBoolean, "", "(Z)V"); - - push OFFSET FLAT:??_C@_04JFOE@?$CIZ?$CJV?$AA@ ; `string' - push OFFSET FLAT:??_C@_06KILP@?$DMinit?$DO?$AA@ ; `string' - mov eax, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z ; JNIEnv_::GetMethodID - mov DWORD PTR ?newBooleanBoolean@@3PAU_jmethodID@@A, eax ; newBooleanBoolean - -; 126 : -; 127 : } - - pop edi - pop esi - pop ebx - add esp, 64 ; 00000040H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -_Java_com_eaio_nativecall_NativeCall_initIDs@8 ENDP -_TEXT ENDS -; COMDAT ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z -_TEXT SEGMENT -_this$ = -4 -_name$ = 8 -?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z PROC NEAR ; JNIEnv_::FindClass, COMDAT - -; 759 : jclass FindClass(const char *name) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 760 : return functions->FindClass(this, name); - - mov esi, esp - mov eax, DWORD PTR _name$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - mov eax, DWORD PTR [edx] - call DWORD PTR [eax+24] - cmp esi, esp - call __chkesp - -; 761 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 4 -?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ENDP ; JNIEnv_::FindClass -_TEXT ENDS -PUBLIC ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ; JNIEnv_::GetObjectField -PUBLIC ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField -PUBLIC _Java_com_eaio_nativecall_NativeCall_initHandles@8 -PUBLIC ?GetStringUTFChars@JNIEnv_@@QAEPBDPAV_jstring@@PAE@Z ; JNIEnv_::GetStringUTFChars -PUBLIC ?ReleaseStringUTFChars@JNIEnv_@@QAEXPAV_jstring@@PBD@Z ; JNIEnv_::ReleaseStringUTFChars -EXTRN __imp__LoadLibraryA@4:NEAR -EXTRN __imp__GetLastError@0:NEAR -EXTRN __imp__FreeLibrary@4:NEAR -EXTRN __imp__GetProcAddress@8:NEAR -; COMDAT _Java_com_eaio_nativecall_NativeCall_initHandles@8 -_TEXT SEGMENT -_env$ = 8 -_obj$ = 12 -_out$ = -4 -_moduleNameS$ = -8 -_functionNameS$ = -12 -_moduleName$ = -16 -_functionName$ = -20 -_mod$ = -24 -_addr$56841 = -28 -_Java_com_eaio_nativecall_NativeCall_initHandles@8 PROC NEAR ; COMDAT - -; 135 : (JNIEnv *env, jobject obj) { - - push ebp - mov ebp, esp - sub esp, 92 ; 0000005cH - push ebx - push esi - push edi - lea edi, DWORD PTR [ebp-92] - mov ecx, 23 ; 00000017H - mov eax, -858993460 ; ccccccccH - rep stosd - -; 136 : -; 137 : bool out = JNI_TRUE; - - mov BYTE PTR _out$[ebp], 1 - -; 138 : -; 139 : jstring moduleNameS = (jstring) env->GetObjectField(obj, fieldModule); - - mov eax, DWORD PTR ?fieldModule@@3PAU_jfieldID@@A ; fieldModule - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ; JNIEnv_::GetObjectField - mov DWORD PTR _moduleNameS$[ebp], eax - -; 140 : jstring functionNameS = (jstring) env->GetObjectField(obj, fieldFunction); - - mov edx, DWORD PTR ?fieldFunction@@3PAU_jfieldID@@A ; fieldFunction - push edx - mov eax, DWORD PTR _obj$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ; JNIEnv_::GetObjectField - mov DWORD PTR _functionNameS$[ebp], eax - -; 141 : -; 142 : const char* moduleName = env->GetStringUTFChars(moduleNameS, 0); - - push 0 - mov ecx, DWORD PTR _moduleNameS$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetStringUTFChars@JNIEnv_@@QAEPBDPAV_jstring@@PAE@Z ; JNIEnv_::GetStringUTFChars - mov DWORD PTR _moduleName$[ebp], eax - -; 143 : const char* functionName = env->GetStringUTFChars(functionNameS, 0); - - push 0 - mov edx, DWORD PTR _functionNameS$[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?GetStringUTFChars@JNIEnv_@@QAEPBDPAV_jstring@@PAE@Z ; JNIEnv_::GetStringUTFChars - mov DWORD PTR _functionName$[ebp], eax - -; 144 : -; 145 : #ifdef _WINDOWS -; 146 : -; 147 : HMODULE mod = LoadLibrary(moduleName); - - mov esi, esp - mov eax, DWORD PTR _moduleName$[ebp] - push eax - call DWORD PTR __imp__LoadLibraryA@4 - cmp esi, esp - call __chkesp - mov DWORD PTR _mod$[ebp], eax - -; 148 : -; 149 : if (mod == NULL) { - - cmp DWORD PTR _mod$[ebp], 0 - jne SHORT $L56839 - -; 150 : /* no such module or DllMain returned FALSE */ -; 151 : env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - - mov esi, esp - call DWORD PTR __imp__GetLastError@0 - cmp esi, esp - call __chkesp - push eax - mov ecx, DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode - push ecx - mov edx, DWORD PTR _obj$[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField - -; 152 : out = JNI_FALSE; - - mov BYTE PTR _out$[ebp], 0 - -; 154 : else { - - jmp $L56843 -$L56839: - -; 155 : FARPROC addr = GetProcAddress(mod, functionName); - - mov esi, esp - mov eax, DWORD PTR _functionName$[ebp] - push eax - mov ecx, DWORD PTR _mod$[ebp] - push ecx - call DWORD PTR __imp__GetProcAddress@8 - cmp esi, esp - call __chkesp - mov DWORD PTR _addr$56841[ebp], eax - -; 156 : if (addr == NULL) { - - cmp DWORD PTR _addr$56841[ebp], 0 - jne SHORT $L56842 - -; 157 : /* function not found */ -; 158 : FreeLibrary(mod); - - mov esi, esp - mov edx, DWORD PTR _mod$[ebp] - push edx - call DWORD PTR __imp__FreeLibrary@4 - cmp esi, esp - call __chkesp - -; 159 : env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - - mov esi, esp - call DWORD PTR __imp__GetLastError@0 - cmp esi, esp - call __chkesp - push eax - mov eax, DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField - -; 160 : out = JNI_FALSE; - - mov BYTE PTR _out$[ebp], 0 - -; 162 : else { - - jmp SHORT $L56843 -$L56842: - -; 163 : /* all ok */ -; 164 : env->SetIntField(obj, fieldModuleHandle, (jint) mod); - - mov edx, DWORD PTR _mod$[ebp] - push edx - mov eax, DWORD PTR ?fieldModuleHandle@@3PAU_jfieldID@@A ; fieldModuleHandle - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField - -; 165 : env->SetIntField(obj, fieldFunctionHandle, (jint) addr); - - mov edx, DWORD PTR _addr$56841[ebp] - push edx - mov eax, DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A ; fieldFunctionHandle - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField -$L56843: - -; 168 : -; 169 : #endif -; 170 : -; 171 : env->ReleaseStringUTFChars(moduleNameS, moduleName); - - mov edx, DWORD PTR _moduleName$[ebp] - push edx - mov eax, DWORD PTR _moduleNameS$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?ReleaseStringUTFChars@JNIEnv_@@QAEXPAV_jstring@@PBD@Z ; JNIEnv_::ReleaseStringUTFChars - -; 172 : env->ReleaseStringUTFChars(functionNameS, functionName); - - mov ecx, DWORD PTR _functionName$[ebp] - push ecx - mov edx, DWORD PTR _functionNameS$[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?ReleaseStringUTFChars@JNIEnv_@@QAEXPAV_jstring@@PBD@Z ; JNIEnv_::ReleaseStringUTFChars - -; 173 : -; 174 : return out; - - mov al, BYTE PTR _out$[ebp] - -; 175 : -; 176 : } - - pop edi - pop esi - pop ebx - add esp, 92 ; 0000005cH - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -_Java_com_eaio_nativecall_NativeCall_initHandles@8 ENDP -_TEXT ENDS -PUBLIC ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ; JNIEnv_::GetIntField -PUBLIC _Java_com_eaio_nativecall_NativeCall_getLastError@8 -PUBLIC ?NewStringUTF@JNIEnv_@@QAEPAV_jstring@@PBD@Z ; JNIEnv_::NewStringUTF -EXTRN __imp__FormatMessageA@28:NEAR -EXTRN __imp__LocalFree@4:NEAR -; COMDAT _Java_com_eaio_nativecall_NativeCall_getLastError@8 -_TEXT SEGMENT -_env$ = 8 -_obj$ = 12 -_lastError$ = -4 -_out$ = -8 -_msgBufPtr$ = -12 -_Java_com_eaio_nativecall_NativeCall_getLastError@8 PROC NEAR ; COMDAT - -; 184 : (JNIEnv *env, jobject obj) { - - push ebp - mov ebp, esp - sub esp, 76 ; 0000004cH - push ebx - push esi - push edi - lea edi, DWORD PTR [ebp-76] - mov ecx, 19 ; 00000013H - mov eax, -858993460 ; ccccccccH - rep stosd - -; 185 : -; 186 : jint lastError = env->GetIntField(obj, fieldLastErrorCode); - - mov eax, DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ; JNIEnv_::GetIntField - mov DWORD PTR _lastError$[ebp], eax - -; 187 : -; 188 : if (lastError == 0) return NULL; - - cmp DWORD PTR _lastError$[ebp], 0 - jne SHORT $L56851 - xor eax, eax - jmp SHORT $L56849 -$L56851: - -; 189 : -; 190 : jstring out = NULL; - - mov DWORD PTR _out$[ebp], 0 - -; 191 : -; 192 : #ifdef _WINDOWS -; 193 : -; 194 : LPVOID msgBufPtr = NULL; - - mov DWORD PTR _msgBufPtr$[ebp], 0 - -; 195 : FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | -; 196 : FORMAT_MESSAGE_FROM_SYSTEM, NULL, lastError, 0, -; 197 : (LPSTR) &msgBufPtr, 0, NULL); - - mov esi, esp - push 0 - push 0 - lea edx, DWORD PTR _msgBufPtr$[ebp] - push edx - push 0 - mov eax, DWORD PTR _lastError$[ebp] - push eax - push 0 - push 4352 ; 00001100H - call DWORD PTR __imp__FormatMessageA@28 - cmp esi, esp - call __chkesp - -; 198 : -; 199 : out = env->NewStringUTF((char*) msgBufPtr); - - mov ecx, DWORD PTR _msgBufPtr$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?NewStringUTF@JNIEnv_@@QAEPAV_jstring@@PBD@Z ; JNIEnv_::NewStringUTF - mov DWORD PTR _out$[ebp], eax - -; 200 : -; 201 : LocalFree(msgBufPtr); - - mov esi, esp - mov edx, DWORD PTR _msgBufPtr$[ebp] - push edx - call DWORD PTR __imp__LocalFree@4 - cmp esi, esp - call __chkesp - -; 202 : -; 203 : #endif -; 204 : -; 205 : return out; - - mov eax, DWORD PTR _out$[ebp] -$L56849: - -; 206 : -; 207 : } - - pop edi - pop esi - pop ebx - add esp, 76 ; 0000004cH - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -_Java_com_eaio_nativecall_NativeCall_getLastError@8 ENDP -_TEXT ENDS -PUBLIC _Java_com_eaio_nativecall_NativeCall_destroy@8 -; COMDAT _Java_com_eaio_nativecall_NativeCall_destroy@8 -_TEXT SEGMENT -_env$ = 8 -_obj$ = 12 -_module$ = -4 -_Java_com_eaio_nativecall_NativeCall_destroy@8 PROC NEAR ; COMDAT - -; 215 : (JNIEnv *env, jobject obj) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - -; 216 : -; 217 : jint module = env->GetIntField(obj, fieldModuleHandle); - - mov eax, DWORD PTR ?fieldModuleHandle@@3PAU_jfieldID@@A ; fieldModuleHandle - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ; JNIEnv_::GetIntField - mov DWORD PTR _module$[ebp], eax - -; 218 : -; 219 : if (module == 0) return; - - cmp DWORD PTR _module$[ebp], 0 - jne SHORT $L56861 - jmp SHORT $L56859 -$L56861: - -; 220 : -; 221 : #ifdef _WINDOWS -; 222 : -; 223 : if (FreeLibrary((HMODULE) module) == 0) { - - mov esi, esp - mov edx, DWORD PTR _module$[ebp] - push edx - call DWORD PTR __imp__FreeLibrary@4 - cmp esi, esp - call __chkesp - test eax, eax - jne SHORT $L56863 - -; 224 : env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - - mov esi, esp - call DWORD PTR __imp__GetLastError@0 - cmp esi, esp - call __chkesp - push eax - mov eax, DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField -$L56863: - -; 226 : -; 227 : #endif -; 228 : -; 229 : env->SetIntField(obj, fieldModuleHandle, 0); - - push 0 - mov edx, DWORD PTR ?fieldModuleHandle@@3PAU_jfieldID@@A ; fieldModuleHandle - push edx - mov eax, DWORD PTR _obj$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField - -; 230 : env->SetIntField(obj, fieldFunctionHandle, 0); - - push 0 - mov ecx, DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A ; fieldFunctionHandle - push ecx - mov edx, DWORD PTR _obj$[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField -$L56859: - -; 231 : -; 232 : return; -; 233 : -; 234 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -_Java_com_eaio_nativecall_NativeCall_destroy@8 ENDP -_TEXT ENDS -; COMDAT ?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z -_TEXT SEGMENT -_this$ = -4 -_lobj$ = 8 -?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z PROC NEAR ; JNIEnv_::NewGlobalRef, COMDAT - -; 810 : jobject NewGlobalRef(jobject lobj) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 811 : return functions->NewGlobalRef(this,lobj); - - mov esi, esp - mov eax, DWORD PTR _lobj$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - mov eax, DWORD PTR [edx] - call DWORD PTR [eax+84] - cmp esi, esp - call __chkesp - -; 812 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 4 -?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z ENDP ; JNIEnv_::NewGlobalRef -_TEXT ENDS -; COMDAT ?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z -_TEXT SEGMENT -_this$ = -4 -_clazz$ = 8 -_name$ = 12 -_sig$ = 16 -?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z PROC NEAR ; JNIEnv_::GetMethodID, COMDAT - -; 859 : const char *sig) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 860 : return functions->GetMethodID(this,clazz,name,sig); - - mov esi, esp - mov eax, DWORD PTR _sig$[ebp] - push eax - mov ecx, DWORD PTR _name$[ebp] - push ecx - mov edx, DWORD PTR _clazz$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - mov edx, DWORD PTR [ecx] - call DWORD PTR [edx+132] - cmp esi, esp - call __chkesp - -; 861 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 12 ; 0000000cH -?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z ENDP ; JNIEnv_::GetMethodID -_TEXT ENDS -; COMDAT ?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z -_TEXT SEGMENT -_clazz$ = 8 -_name$ = 12 -_sig$ = 16 -_this$ = -4 -?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z PROC NEAR ; JNIEnv_::GetFieldID, COMDAT - -; 1244 : const char *sig) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1245 : return functions->GetFieldID(this,clazz,name,sig); - - mov esi, esp - mov eax, DWORD PTR _sig$[ebp] - push eax - mov ecx, DWORD PTR _name$[ebp] - push ecx - mov edx, DWORD PTR _clazz$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - mov edx, DWORD PTR [ecx] - call DWORD PTR [edx+376] - cmp esi, esp - call __chkesp - -; 1246 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 12 ; 0000000cH -?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z ENDP ; JNIEnv_::GetFieldID -_TEXT ENDS -; COMDAT ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z -_TEXT SEGMENT -_obj$ = 8 -_fieldID$ = 12 -_this$ = -4 -?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z PROC NEAR ; JNIEnv_::GetObjectField, COMDAT - -; 1248 : jobject GetObjectField(jobject obj, jfieldID fieldID) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1249 : return functions->GetObjectField(this,obj,fieldID); - - mov esi, esp - mov eax, DWORD PTR _fieldID$[ebp] - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - mov ecx, DWORD PTR [eax] - call DWORD PTR [ecx+380] - cmp esi, esp - call __chkesp - -; 1250 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ENDP ; JNIEnv_::GetObjectField -_TEXT ENDS -; COMDAT ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z -_TEXT SEGMENT -_obj$ = 8 -_fieldID$ = 12 -_this$ = -4 -?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z PROC NEAR ; JNIEnv_::GetIntField, COMDAT - -; 1263 : jint GetIntField(jobject obj, jfieldID fieldID) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1264 : return functions->GetIntField(this,obj,fieldID); - - mov esi, esp - mov eax, DWORD PTR _fieldID$[ebp] - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - mov ecx, DWORD PTR [eax] - call DWORD PTR [ecx+400] - cmp esi, esp - call __chkesp - -; 1265 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ENDP ; JNIEnv_::GetIntField -_TEXT ENDS -; COMDAT ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z -_TEXT SEGMENT -_obj$ = 8 -_fieldID$ = 12 -_val$ = 16 -_this$ = -4 -?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z PROC NEAR ; JNIEnv_::SetIntField, COMDAT - -; 1296 : jint val) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1297 : functions->SetIntField(this,obj,fieldID,val); - - mov esi, esp - mov eax, DWORD PTR _val$[ebp] - push eax - mov ecx, DWORD PTR _fieldID$[ebp] - push ecx - mov edx, DWORD PTR _obj$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - mov edx, DWORD PTR [ecx] - call DWORD PTR [edx+436] - cmp esi, esp - call __chkesp - -; 1298 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 12 ; 0000000cH -?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ENDP ; JNIEnv_::SetIntField -_TEXT ENDS -; COMDAT ?NewStringUTF@JNIEnv_@@QAEPAV_jstring@@PBD@Z -_TEXT SEGMENT -_this$ = -4 -_utf$ = 8 -?NewStringUTF@JNIEnv_@@QAEPAV_jstring@@PBD@Z PROC NEAR ; JNIEnv_::NewStringUTF, COMDAT - -; 1576 : jstring NewStringUTF(const char *utf) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1577 : return functions->NewStringUTF(this,utf); - - mov esi, esp - mov eax, DWORD PTR _utf$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - mov eax, DWORD PTR [edx] - call DWORD PTR [eax+668] - cmp esi, esp - call __chkesp - -; 1578 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 4 -?NewStringUTF@JNIEnv_@@QAEPAV_jstring@@PBD@Z ENDP ; JNIEnv_::NewStringUTF -_TEXT ENDS -; COMDAT ?GetStringUTFChars@JNIEnv_@@QAEPBDPAV_jstring@@PAE@Z -_TEXT SEGMENT -_this$ = -4 -_str$ = 8 -_isCopy$ = 12 -?GetStringUTFChars@JNIEnv_@@QAEPBDPAV_jstring@@PAE@Z PROC NEAR ; JNIEnv_::GetStringUTFChars, COMDAT - -; 1582 : const char* GetStringUTFChars(jstring str, jboolean *isCopy) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1583 : return functions->GetStringUTFChars(this,str,isCopy); - - mov esi, esp - mov eax, DWORD PTR _isCopy$[ebp] - push eax - mov ecx, DWORD PTR _str$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - mov ecx, DWORD PTR [eax] - call DWORD PTR [ecx+676] - cmp esi, esp - call __chkesp - -; 1584 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -?GetStringUTFChars@JNIEnv_@@QAEPBDPAV_jstring@@PAE@Z ENDP ; JNIEnv_::GetStringUTFChars -_TEXT ENDS -; COMDAT ?ReleaseStringUTFChars@JNIEnv_@@QAEXPAV_jstring@@PBD@Z -_TEXT SEGMENT -_this$ = -4 -_str$ = 8 -_chars$ = 12 -?ReleaseStringUTFChars@JNIEnv_@@QAEXPAV_jstring@@PBD@Z PROC NEAR ; JNIEnv_::ReleaseStringUTFChars, COMDAT - -; 1585 : void ReleaseStringUTFChars(jstring str, const char* chars) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1586 : functions->ReleaseStringUTFChars(this,str,chars); - - mov esi, esp - mov eax, DWORD PTR _chars$[ebp] - push eax - mov ecx, DWORD PTR _str$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - mov ecx, DWORD PTR [eax] - call DWORD PTR [ecx+680] - cmp esi, esp - call __chkesp - -; 1587 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -?ReleaseStringUTFChars@JNIEnv_@@QAEXPAV_jstring@@PBD@Z ENDP ; JNIEnv_::ReleaseStringUTFChars -_TEXT ENDS -END diff --git a/vendor/nativecall/0.4.1/cpp/Debug/NativeCall.dll b/vendor/nativecall/0.4.1/cpp/Debug/NativeCall.dll deleted file mode 100644 index fa9a51bc69e3b468616b44c5e899db787f4feb58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233590 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 diff --git a/vendor/nativecall/0.4.1/cpp/Debug/NativeCall.obj b/vendor/nativecall/0.4.1/cpp/Debug/NativeCall.obj deleted file mode 100644 index 670355fb04820c2dab5fb44da26ca75b150c523d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29095 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%0Aq)z;n08J|7k6Xy@j?~;c_e|jdV{U=2}CBMOcJA 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 T6B#C3nDgxeAE6S`-`4*HPrdtB diff --git a/vendor/nativecall/0.4.1/cpp/Debug/RCa01372 b/vendor/nativecall/0.4.1/cpp/Debug/RCa01372 deleted file mode 100644 index eb8e4b17d0d11871dd188167c7a6fac99cce7dcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4904 zcmds)U2hsk6o$`rrT&KvzDXq41%D)I?`*#078}c8(nyhzgTY3{V8PNRQh$7(cV;KM z3yYIFxggaFc6MgY*E{c=IkRIE8{5=|7FoqgR<&R49Z$_>Hn64LGcvW<7K~rhy5ZfS zFXoZlEhCzL%*eg#8PgNnoY^rt=5F-NJ|efSQ<5EKjhOp45_2@G@7zg`?JvHov?o03 zUod0fS_6CFQJ?0_85yHzYI|-*$$qpSY$q3+dVc0PW9EQaGi1DFc{X%^s!ywVb`wk{nXmlw@a(jTcdq$EqhB(hyOD>p{GSVcq0t9?+M<8cVtcCT}6E4 z*6p77W3UnqU84Sj|5Ku_5~uK})4$Je9p9i`?;VF_enqZ9_(LLByc!iW2QAx&qCE1k zEy2z+=BZrC?;g*>?Tk1?t+(IHOZcI^c*pm1x4YAx2|HNWyeMGEB0(>k6JIBNW4IC7 zvjkP2GjGs-Yz-Lb_g{y-cEwJt!ofavTRgJ!4^OmFvWt#O_%4Y$@-H$L!y5MOjpO)1 z!oL8e!kstSLd4TiReAC`kZWJcMebv7#d-mNt6> z`^bz_N$1d%JB029x{;LJxmKcejSsU-{>V!Q4{OZK*5>}M5VRECHX`h)()V|e$lWB~ zyHj$GA8EcSwwK=x!Hzf@IhJZo)Glw-)WYLiJeW8H9ebFPtorqUxt@Ik-^n^ ziN@bR;|{qgPXsGgS0^O=6mQ)q- z+WHk~+~j3m(^C*mPrP6bhX3N(WYR_!7l|6Nyku{a2{CSa;{Ux!n`NYzmNUP$f)XCd@KIPE}x9I$7`+uuJ hzwXYg>gscM=Cp#Xz_9P*F1%^?Ovy|!F@FgQ{sr%EaLfPz diff --git a/vendor/nativecall/0.4.1/cpp/Debug/RCa01444 b/vendor/nativecall/0.4.1/cpp/Debug/RCa01444 deleted file mode 100644 index eb8e4b17d0d11871dd188167c7a6fac99cce7dcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4904 zcmds)U2hsk6o$`rrT&KvzDXq41%D)I?`*#078}c8(nyhzgTY3{V8PNRQh$7(cV;KM z3yYIFxggaFc6MgY*E{c=IkRIE8{5=|7FoqgR<&R49Z$_>Hn64LGcvW<7K~rhy5ZfS zFXoZlEhCzL%*eg#8PgNnoY^rt=5F-NJ|efSQ<5EKjhOp45_2@G@7zg`?JvHov?o03 zUod0fS_6CFQJ?0_85yHzYI|-*$$qpSY$q3+dVc0PW9EQaGi1DFc{X%^s!ywVb`wk{nXmlw@a(jTcdq$EqhB(hyOD>p{GSVcq0t9?+M<8cVtcCT}6E4 z*6p77W3UnqU84Sj|5Ku_5~uK})4$Je9p9i`?;VF_enqZ9_(LLByc!iW2QAx&qCE1k zEy2z+=BZrC?;g*>?Tk1?t+(IHOZcI^c*pm1x4YAx2|HNWyeMGEB0(>k6JIBNW4IC7 zvjkP2GjGs-Yz-Lb_g{y-cEwJt!ofavTRgJ!4^OmFvWt#O_%4Y$@-H$L!y5MOjpO)1 z!oL8e!kstSLd4TiReAC`kZWJcMebv7#d-mNt6> z`^bz_N$1d%JB029x{;LJxmKcejSsU-{>V!Q4{OZK*5>}M5VRECHX`h)()V|e$lWB~ zyHj$GA8EcSwwK=x!Hzf@IhJZo)Glw-)WYLiJeW8H9ebFPtorqUxt@Ik-^n^ ziN@bR;|{qgPXsGgS0^O=6mQ)q- z+WHk~+~j3m(^C*mPrP6bhX3N(WYR_!7l|6Nyku{a2{CSa;{Ux!n`NYzmNUP$f)XCd@KIPE}x9I$7`+uuJ hzwXYg>gscM=Cp#Xz_9P*F1%^?Ovy|!F@FgQ{sr%EaLfPz diff --git a/vendor/nativecall/0.4.1/cpp/Debug/RCa01468 b/vendor/nativecall/0.4.1/cpp/Debug/RCa01468 deleted file mode 100644 index eb8e4b17d0d11871dd188167c7a6fac99cce7dcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4904 zcmds)U2hsk6o$`rrT&KvzDXq41%D)I?`*#078}c8(nyhzgTY3{V8PNRQh$7(cV;KM z3yYIFxggaFc6MgY*E{c=IkRIE8{5=|7FoqgR<&R49Z$_>Hn64LGcvW<7K~rhy5ZfS zFXoZlEhCzL%*eg#8PgNnoY^rt=5F-NJ|efSQ<5EKjhOp45_2@G@7zg`?JvHov?o03 zUod0fS_6CFQJ?0_85yHzYI|-*$$qpSY$q3+dVc0PW9EQaGi1DFc{X%^s!ywVb`wk{nXmlw@a(jTcdq$EqhB(hyOD>p{GSVcq0t9?+M<8cVtcCT}6E4 z*6p77W3UnqU84Sj|5Ku_5~uK})4$Je9p9i`?;VF_enqZ9_(LLByc!iW2QAx&qCE1k zEy2z+=BZrC?;g*>?Tk1?t+(IHOZcI^c*pm1x4YAx2|HNWyeMGEB0(>k6JIBNW4IC7 zvjkP2GjGs-Yz-Lb_g{y-cEwJt!ofavTRgJ!4^OmFvWt#O_%4Y$@-H$L!y5MOjpO)1 z!oL8e!kstSLd4TiReAC`kZWJcMebv7#d-mNt6> z`^bz_N$1d%JB029x{;LJxmKcejSsU-{>V!Q4{OZK*5>}M5VRECHX`h)()V|e$lWB~ zyHj$GA8EcSwwK=x!Hzf@IhJZo)Glw-)WYLiJeW8H9ebFPtorqUxt@Ik-^n^ ziN@bR;|{qgPXsGgS0^O=6mQ)q- z+WHk~+~j3m(^C*mPrP6bhX3N(WYR_!7l|6Nyku{a2{CSa;{Ux!n`NYzmNUP$f)XCd@KIPE}x9I$7`+uuJ hzwXYg>gscM=Cp#Xz_9P*F1%^?Ovy|!F@FgQ{sr%EaLfPz diff --git a/vendor/nativecall/0.4.1/cpp/Debug/VoidCall.asm b/vendor/nativecall/0.4.1/cpp/Debug/VoidCall.asm deleted file mode 100644 index c64965e..0000000 --- a/vendor/nativecall/0.4.1/cpp/Debug/VoidCall.asm +++ /dev/null @@ -1,1743 +0,0 @@ - TITLE C:\Documents and Settings\Administrator\My Documents\Software\NativeCall\src\cpp\VoidCall.cpp - .386P -include listing.inc -if @Version gt 510 -.model FLAT -else -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -_BSS SEGMENT DWORD USE32 PUBLIC 'BSS' -_BSS ENDS -$$SYMBOLS SEGMENT BYTE USE32 'DEBSYM' -$$SYMBOLS ENDS -$$TYPES SEGMENT BYTE USE32 'DEBTYP' -$$TYPES ENDS -_TLS SEGMENT DWORD USE32 PUBLIC 'TLS' -_TLS ENDS -; COMDAT ??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -; COMDAT ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ??8@YAHABU_GUID@@0@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT _Java_com_eaio_nativecall_VoidCall_executeCall@8 -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT _Java_com_eaio_nativecall_VoidCall_executeCall0@12 -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -FLAT GROUP _DATA, CONST, _BSS - ASSUME CS: FLAT, DS: FLAT, SS: FLAT -endif -PUBLIC ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ; JNIEnv_::GetIntField -PUBLIC ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField -PUBLIC _Java_com_eaio_nativecall_VoidCall_executeCall@8 -EXTRN __imp__GetLastError@0:NEAR -EXTRN ?fieldFunctionHandle@@3PAU_jfieldID@@A:DWORD ; fieldFunctionHandle -EXTRN ?fieldLastErrorCode@@3PAU_jfieldID@@A:DWORD ; fieldLastErrorCode -EXTRN __chkesp:NEAR -; COMDAT _Java_com_eaio_nativecall_VoidCall_executeCall@8 -_TEXT SEGMENT -_env$ = 8 -_obj$ = 12 -_functionHandle$ = -4 -_Java_com_eaio_nativecall_VoidCall_executeCall@8 PROC NEAR ; COMDAT - -; 79 : (JNIEnv *env, jobject obj) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - -; 80 : -; 81 : jint functionHandle = env->GetIntField(obj, fieldFunctionHandle); - - mov eax, DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A ; fieldFunctionHandle - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ; JNIEnv_::GetIntField - mov DWORD PTR _functionHandle$[ebp], eax - -; 82 : -; 83 : #ifdef _WINDOWS -; 84 : #ifdef _X86_ -; 85 : -; 86 : __asm { -; 87 : -; 88 : call functionHandle - - call DWORD PTR _functionHandle$[ebp] - -; 89 : -; 90 : } -; 91 : -; 92 : #endif -; 93 : #endif -; 94 : -; 95 : env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - - mov esi, esp - call DWORD PTR __imp__GetLastError@0 - cmp esi, esp - call __chkesp - push eax - mov edx, DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode - push edx - mov eax, DWORD PTR _obj$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField - -; 96 : -; 97 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -_Java_com_eaio_nativecall_VoidCall_executeCall@8 ENDP -_TEXT ENDS -PUBLIC ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ; JNIEnv_::GetObjectField -PUBLIC ?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z ; JNIEnv_::SetObjectField -PUBLIC _Java_com_eaio_nativecall_VoidCall_executeCall0@12 -PUBLIC ?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z ; JNIEnv_::GetArrayLength -PUBLIC ?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z ; JNIEnv_::GetObjectArrayElement -PUBLIC ??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ ; `string' -PUBLIC ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ; JNIEnv_::GetPrimitiveArrayCritical -PUBLIC ?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z ; JNIEnv_::ReleasePrimitiveArrayCritical -PUBLIC ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ; JNIEnv_::FindClass -PUBLIC ?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z ; JNIEnv_::ThrowNew -PUBLIC ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ; JNIEnv_::NewObject -PUBLIC ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf -PUBLIC ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallBooleanMethod -PUBLIC ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallIntMethod -EXTRN ??2@YAPAXI@Z:NEAR ; operator new -EXTRN ??3@YAXPAX@Z:NEAR ; operator delete -EXTRN ?fieldHolderO@@3PAU_jfieldID@@A:DWORD ; fieldHolderO -EXTRN ?classBoolean@@3PAV_jclass@@A:DWORD ; classBoolean -EXTRN ?classInteger@@3PAV_jclass@@A:DWORD ; classInteger -EXTRN ?classByteArray@@3PAV_jclass@@A:DWORD ; classByteArray -EXTRN ?classCharArray@@3PAV_jclass@@A:DWORD ; classCharArray -EXTRN ?classHolder@@3PAV_jclass@@A:DWORD ; classHolder -EXTRN ?methodBooleanValue@@3PAU_jmethodID@@A:DWORD ; methodBooleanValue -EXTRN ?methodIntValue@@3PAU_jmethodID@@A:DWORD ; methodIntValue -EXTRN ?newIntegerInt@@3PAU_jmethodID@@A:DWORD ; newIntegerInt -EXTRN ?newBooleanBoolean@@3PAU_jmethodID@@A:DWORD ; newBooleanBoolean -EXTRN _memset:NEAR -; COMDAT ??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ -; File c:\documents and settings\administrator\my documents\software\nativecall\src\cpp\voidcall.cpp -CONST SEGMENT -??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ DB 'java/lang/OutOfMemor' - DB 'yError', 00H ; `string' -CONST ENDS -; COMDAT _Java_com_eaio_nativecall_VoidCall_executeCall0@12 -_TEXT SEGMENT -_env$ = 8 -_obj$ = 12 -_params$ = 16 -_len$ = -4 -_arrays$ = -8 -_param$ = -12 -_i$ = -16 -_intArg$56816 = -20 -_byteArrayArg$56819 = -24 -_charArrayArg$56825 = -28 -_booleanArg$56831 = -32 -_tempArg$56832 = -36 -_o$56835 = -40 -_intPtr$56837 = -44 -_byteArrayArg$56843 = -48 -_charArrayArg$56849 = -52 -_booleanArg$56855 = -56 -_tempPtr$56856 = -60 -_functionHandle$ = -64 -_j$ = -68 -_o$56873 = -72 -_out$56875 = -76 -_out$56885 = -80 -$T56914 = -84 -$T56915 = -88 -$T56916 = -92 -$T56917 = -96 -$T56918 = -100 -$T56919 = -104 -_Java_com_eaio_nativecall_VoidCall_executeCall0@12 PROC NEAR ; COMDAT - -; 105 : (JNIEnv *env, jobject obj, jobjectArray params) { - - push ebp - mov ebp, esp - sub esp, 168 ; 000000a8H - push ebx - push esi - push edi - lea edi, DWORD PTR [ebp-168] - mov ecx, 42 ; 0000002aH - mov eax, -858993460 ; ccccccccH - rep stosd - -; 106 : -; 107 : const int len = env->GetArrayLength(params); - - mov eax, DWORD PTR _params$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z ; JNIEnv_::GetArrayLength - mov DWORD PTR _len$[ebp], eax - -; 108 : -; 109 : int* arrays = NULL; - - mov DWORD PTR _arrays$[ebp], 0 - -; 110 : if (!(arrays = new int[len])) { - - mov ecx, DWORD PTR _len$[ebp] - shl ecx, 2 - push ecx - call ??2@YAPAXI@Z ; operator new - add esp, 4 - mov DWORD PTR $T56914[ebp], eax - mov edx, DWORD PTR $T56914[ebp] - mov DWORD PTR _arrays$[ebp], edx - cmp DWORD PTR _arrays$[ebp], 0 - jne SHORT $L56805 - -; 111 : env->ThrowNew(env->FindClass("java/lang/OutOfMemoryError"), NULL); - - push 0 - push OFFSET FLAT:??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ ; `string' - mov ecx, DWORD PTR _env$[ebp] - call ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ; JNIEnv_::FindClass - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z ; JNIEnv_::ThrowNew - -; 112 : return; - - jmp $L56800 -$L56805: - -; 114 : memset(arrays, 0, (sizeof(int) * len)); - - mov eax, DWORD PTR _len$[ebp] - shl eax, 2 - push eax - push 0 - mov ecx, DWORD PTR _arrays$[ebp] - push ecx - call _memset - add esp, 12 ; 0000000cH - -; 115 : -; 116 : jobject param; -; 117 : -; 118 : for (int i = len - 1; i >= 0; i--) { - - mov edx, DWORD PTR _len$[ebp] - sub edx, 1 - mov DWORD PTR _i$[ebp], edx - jmp SHORT $L56810 -$L56811: - mov eax, DWORD PTR _i$[ebp] - sub eax, 1 - mov DWORD PTR _i$[ebp], eax -$L56810: - cmp DWORD PTR _i$[ebp], 0 - jl $L56812 - -; 119 : -; 120 : param = env->GetObjectArrayElement(params, i); - - mov ecx, DWORD PTR _i$[ebp] - push ecx - mov edx, DWORD PTR _params$[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z ; JNIEnv_::GetObjectArrayElement - mov DWORD PTR _param$[ebp], eax - -; 121 : -; 122 : if (param == NULL) { - - cmp DWORD PTR _param$[ebp], 0 - jne SHORT $L56813 - -; 123 : _push(0); - - push 0 - -; 125 : else if (env->IsInstanceOf(param, classInteger)) { - - jmp $L56854 -$L56813: - mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - push eax - mov ecx, DWORD PTR _param$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56815 - -; 126 : int intArg = env->CallIntMethod(param, methodIntValue); - - mov edx, DWORD PTR ?methodIntValue@@3PAU_jmethodID@@A ; methodIntValue - push edx - mov eax, DWORD PTR _param$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - push ecx - call ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallIntMethod - add esp, 12 ; 0000000cH - mov DWORD PTR _intArg$56816[ebp], eax - -; 127 : _push(intArg) - - push DWORD PTR _intArg$56816[ebp] - -; 129 : else if (env->IsInstanceOf(param, classByteArray)) { - - jmp $L56854 -$L56815: - mov edx, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray - push edx - mov eax, DWORD PTR _param$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56818 - -; 130 : char* byteArrayArg = (char*) env->GetPrimitiveArrayCritical((jarray) param, 0); - - push 0 - mov ecx, DWORD PTR _param$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ; JNIEnv_::GetPrimitiveArrayCritical - mov DWORD PTR _byteArrayArg$56819[ebp], eax - -; 131 : arrays[i] = (int) &byteArrayArg; - - mov edx, DWORD PTR _i$[ebp] - mov eax, DWORD PTR _arrays$[ebp] - lea ecx, DWORD PTR _byteArrayArg$56819[ebp] - mov DWORD PTR [eax+edx*4], ecx - -; 132 : _push(byteArrayArg) - - push DWORD PTR _byteArrayArg$56819[ebp] - -; 134 : else if (env->IsInstanceOf(param, classCharArray)) { - - jmp $L56854 -$L56818: - mov edx, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray - push edx - mov eax, DWORD PTR _param$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56824 - -; 135 : unsigned short* charArrayArg = (unsigned short*) env->GetPrimitiveArrayCritical( -; 136 : (jarray) param, 0); - - push 0 - mov ecx, DWORD PTR _param$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ; JNIEnv_::GetPrimitiveArrayCritical - mov DWORD PTR _charArrayArg$56825[ebp], eax - -; 137 : arrays[i] = (int) &charArrayArg; - - mov edx, DWORD PTR _i$[ebp] - mov eax, DWORD PTR _arrays$[ebp] - lea ecx, DWORD PTR _charArrayArg$56825[ebp] - mov DWORD PTR [eax+edx*4], ecx - -; 138 : _push(charArrayArg) - - push DWORD PTR _charArrayArg$56825[ebp] - -; 140 : else if (env->IsInstanceOf(param, classBoolean)) { - - jmp $L56854 -$L56824: - mov edx, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - push edx - mov eax, DWORD PTR _param$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56830 - -; 141 : jboolean booleanArg = env->CallBooleanMethod(param, methodBooleanValue); - - mov ecx, DWORD PTR ?methodBooleanValue@@3PAU_jmethodID@@A ; methodBooleanValue - push ecx - mov edx, DWORD PTR _param$[ebp] - push edx - mov eax, DWORD PTR _env$[ebp] - push eax - call ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallBooleanMethod - add esp, 12 ; 0000000cH - mov BYTE PTR _booleanArg$56831[ebp], al - -; 142 : int tempArg = (booleanArg == JNI_FALSE ? 0 : 1); - - mov ecx, DWORD PTR _booleanArg$56831[ebp] - and ecx, 255 ; 000000ffH - neg ecx - sbb ecx, ecx - neg ecx - mov DWORD PTR _tempArg$56832[ebp], ecx - -; 143 : _push(tempArg) - - push DWORD PTR _tempArg$56832[ebp] - -; 145 : else if (env->IsInstanceOf(param, classHolder)) { - - jmp $L56854 -$L56830: - mov edx, DWORD PTR ?classHolder@@3PAV_jclass@@A ; classHolder - push edx - mov eax, DWORD PTR _param$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je $L56854 - -; 146 : -; 147 : /* Holder */ -; 148 : -; 149 : jobject o = env->GetObjectField(param, fieldHolderO); - - mov ecx, DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO - push ecx - mov edx, DWORD PTR _param$[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ; JNIEnv_::GetObjectField - mov DWORD PTR _o$56835[ebp], eax - -; 150 : -; 151 : if (env->IsInstanceOf(o, classInteger)) { - - mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - push eax - mov ecx, DWORD PTR _o$56835[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56836 - -; 152 : int *intPtr = new int; - - push 4 - call ??2@YAPAXI@Z ; operator new - add esp, 4 - mov DWORD PTR $T56915[ebp], eax - mov edx, DWORD PTR $T56915[ebp] - mov DWORD PTR _intPtr$56837[ebp], edx - -; 153 : *intPtr = env->CallIntMethod(o, methodIntValue); - - mov eax, DWORD PTR ?methodIntValue@@3PAU_jmethodID@@A ; methodIntValue - push eax - mov ecx, DWORD PTR _o$56835[ebp] - push ecx - mov edx, DWORD PTR _env$[ebp] - push edx - call ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallIntMethod - add esp, 12 ; 0000000cH - mov ecx, DWORD PTR _intPtr$56837[ebp] - mov DWORD PTR [ecx], eax - -; 154 : arrays[i] = (int) intPtr; - - mov edx, DWORD PTR _i$[ebp] - mov eax, DWORD PTR _arrays$[ebp] - mov ecx, DWORD PTR _intPtr$56837[ebp] - mov DWORD PTR [eax+edx*4], ecx - -; 155 : _push(intPtr); - - push DWORD PTR _intPtr$56837[ebp] - -; 157 : else if (env->IsInstanceOf(o, classByteArray)) { - - jmp $L56854 -$L56836: - mov edx, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray - push edx - mov eax, DWORD PTR _o$56835[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56842 - -; 158 : char* byteArrayArg = (char*) env->GetPrimitiveArrayCritical((jarray) o, 0); - - push 0 - mov ecx, DWORD PTR _o$56835[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ; JNIEnv_::GetPrimitiveArrayCritical - mov DWORD PTR _byteArrayArg$56843[ebp], eax - -; 159 : arrays[i] = (int) &byteArrayArg; - - mov edx, DWORD PTR _i$[ebp] - mov eax, DWORD PTR _arrays$[ebp] - lea ecx, DWORD PTR _byteArrayArg$56843[ebp] - mov DWORD PTR [eax+edx*4], ecx - -; 160 : _push(byteArrayArg) - - push DWORD PTR _byteArrayArg$56843[ebp] - -; 162 : else if (env->IsInstanceOf(o, classCharArray)) { - - jmp $L56854 -$L56842: - mov edx, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray - push edx - mov eax, DWORD PTR _o$56835[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56848 - -; 163 : unsigned short* charArrayArg = (unsigned short*) env->GetPrimitiveArrayCritical( -; 164 : (jarray) o, 0); - - push 0 - mov ecx, DWORD PTR _o$56835[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ; JNIEnv_::GetPrimitiveArrayCritical - mov DWORD PTR _charArrayArg$56849[ebp], eax - -; 165 : arrays[i] = (int) &charArrayArg; - - mov edx, DWORD PTR _i$[ebp] - mov eax, DWORD PTR _arrays$[ebp] - lea ecx, DWORD PTR _charArrayArg$56849[ebp] - mov DWORD PTR [eax+edx*4], ecx - -; 166 : _push(charArrayArg) - - push DWORD PTR _charArrayArg$56849[ebp] - -; 168 : else if (env->IsInstanceOf(o, classBoolean)) { - - jmp SHORT $L56854 -$L56848: - mov edx, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - push edx - mov eax, DWORD PTR _o$56835[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56854 - -; 169 : jboolean booleanArg = env->CallBooleanMethod(o, methodBooleanValue); - - mov ecx, DWORD PTR ?methodBooleanValue@@3PAU_jmethodID@@A ; methodBooleanValue - push ecx - mov edx, DWORD PTR _o$56835[ebp] - push edx - mov eax, DWORD PTR _env$[ebp] - push eax - call ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallBooleanMethod - add esp, 12 ; 0000000cH - mov BYTE PTR _booleanArg$56855[ebp], al - -; 170 : int *tempPtr = new int; - - push 4 - call ??2@YAPAXI@Z ; operator new - add esp, 4 - mov DWORD PTR $T56916[ebp], eax - mov ecx, DWORD PTR $T56916[ebp] - mov DWORD PTR _tempPtr$56856[ebp], ecx - -; 171 : *tempPtr = (booleanArg == JNI_FALSE ? 0 : 1); - - mov edx, DWORD PTR _booleanArg$56855[ebp] - and edx, 255 ; 000000ffH - neg edx - sbb edx, edx - neg edx - mov eax, DWORD PTR _tempPtr$56856[ebp] - mov DWORD PTR [eax], edx - -; 172 : arrays[i] = (int) tempPtr; - - mov ecx, DWORD PTR _i$[ebp] - mov edx, DWORD PTR _arrays$[ebp] - mov eax, DWORD PTR _tempPtr$56856[ebp] - mov DWORD PTR [edx+ecx*4], eax - -; 173 : _push(tempPtr); - - push DWORD PTR _tempPtr$56856[ebp] -$L56854: - -; 179 : -; 180 : } - - jmp $L56811 -$L56812: - -; 181 : -; 182 : jint functionHandle = env->GetIntField(obj, fieldFunctionHandle); - - mov ecx, DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A ; fieldFunctionHandle - push ecx - mov edx, DWORD PTR _obj$[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ; JNIEnv_::GetIntField - mov DWORD PTR _functionHandle$[ebp], eax - -; 183 : -; 184 : #ifdef _WINDOWS -; 185 : #ifdef _X86_ -; 186 : -; 187 : __asm { -; 188 : -; 189 : call functionHandle - - call DWORD PTR _functionHandle$[ebp] - -; 190 : -; 191 : } -; 192 : -; 193 : #endif -; 194 : #endif -; 195 : -; 196 : for (int j = 0; j < len; ++j) { - - mov DWORD PTR _j$[ebp], 0 - jmp SHORT $L56862 -$L56863: - mov eax, DWORD PTR _j$[ebp] - add eax, 1 - mov DWORD PTR _j$[ebp], eax -$L56862: - mov ecx, DWORD PTR _j$[ebp] - cmp ecx, DWORD PTR _len$[ebp] - jge $L56864 - -; 197 : param = env->GetObjectArrayElement(params, j); - - mov edx, DWORD PTR _j$[ebp] - push edx - mov eax, DWORD PTR _params$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z ; JNIEnv_::GetObjectArrayElement - mov DWORD PTR _param$[ebp], eax - -; 198 : if (param == NULL) {} - - cmp DWORD PTR _param$[ebp], 0 - jne SHORT $L56865 - -; 199 : else if (env->IsInstanceOf(param, classByteArray) || env->IsInstanceOf(param, classCharArray)) { - - jmp $L56884 -$L56865: - mov ecx, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray - push ecx - mov edx, DWORD PTR _param$[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - jne SHORT $L56868 - mov eax, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray - push eax - mov ecx, DWORD PTR _param$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56867 -$L56868: - -; 200 : env->ReleasePrimitiveArrayCritical((jarray) param, (void*) arrays[j], 0); - - push 0 - mov edx, DWORD PTR _j$[ebp] - mov eax, DWORD PTR _arrays$[ebp] - mov ecx, DWORD PTR [eax+edx*4] - push ecx - mov edx, DWORD PTR _param$[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z ; JNIEnv_::ReleasePrimitiveArrayCritical - -; 202 : else if (env->IsInstanceOf(param, classHolder)) { - - jmp $L56884 -$L56867: - mov eax, DWORD PTR ?classHolder@@3PAV_jclass@@A ; classHolder - push eax - mov ecx, DWORD PTR _param$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je $L56884 - -; 203 : -; 204 : jobject o = env->GetObjectField(param, fieldHolderO); - - mov edx, DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO - push edx - mov eax, DWORD PTR _param$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ; JNIEnv_::GetObjectField - mov DWORD PTR _o$56873[ebp], eax - -; 205 : -; 206 : if (env->IsInstanceOf(o, classInteger)) { - - mov ecx, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - push ecx - mov edx, DWORD PTR _o$56873[ebp] - push edx - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56874 - -; 207 : int* out = (int*) arrays[j]; - - mov eax, DWORD PTR _j$[ebp] - mov ecx, DWORD PTR _arrays$[ebp] - mov edx, DWORD PTR [ecx+eax*4] - mov DWORD PTR _out$56875[ebp], edx - -; 208 : env->SetObjectField(param, fieldHolderO, env->NewObject(classInteger, newIntegerInt, *out)); - - mov eax, DWORD PTR _out$56875[ebp] - mov ecx, DWORD PTR [eax] - push ecx - mov edx, DWORD PTR ?newIntegerInt@@3PAU_jmethodID@@A ; newIntegerInt - push edx - mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - push eax - mov ecx, DWORD PTR _env$[ebp] - push ecx - call ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ; JNIEnv_::NewObject - add esp, 16 ; 00000010H - push eax - mov edx, DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO - push edx - mov eax, DWORD PTR _param$[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z ; JNIEnv_::SetObjectField - -; 209 : delete out; - - mov ecx, DWORD PTR _out$56875[ebp] - mov DWORD PTR $T56917[ebp], ecx - mov edx, DWORD PTR $T56917[ebp] - push edx - call ??3@YAXPAX@Z ; operator delete - add esp, 4 - -; 211 : else if (env->IsInstanceOf(o, classByteArray) || env->IsInstanceOf(o, classCharArray)) { - - jmp $L56884 -$L56874: - mov eax, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray - push eax - mov ecx, DWORD PTR _o$56873[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - jne SHORT $L56880 - mov edx, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray - push edx - mov eax, DWORD PTR _o$56873[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56879 -$L56880: - -; 212 : env->ReleasePrimitiveArrayCritical((jarray) o, (void*) arrays[j], 0); - - push 0 - mov ecx, DWORD PTR _j$[ebp] - mov edx, DWORD PTR _arrays$[ebp] - mov eax, DWORD PTR [edx+ecx*4] - push eax - mov ecx, DWORD PTR _o$56873[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z ; JNIEnv_::ReleasePrimitiveArrayCritical - -; 214 : else if (env->IsInstanceOf(o, classBoolean)) { - - jmp SHORT $L56884 -$L56879: - mov edx, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - push edx - mov eax, DWORD PTR _o$56873[ebp] - push eax - mov ecx, DWORD PTR _env$[ebp] - call ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ; JNIEnv_::IsInstanceOf - and eax, 255 ; 000000ffH - test eax, eax - je SHORT $L56884 - -; 215 : int* out = (int*) arrays[j]; - - mov ecx, DWORD PTR _j$[ebp] - mov edx, DWORD PTR _arrays$[ebp] - mov eax, DWORD PTR [edx+ecx*4] - mov DWORD PTR _out$56885[ebp], eax - -; 216 : env->SetObjectField(param, fieldHolderO, env->NewObject(classBoolean, newBooleanBoolean, (*out == 0 ? JNI_FALSE : JNI_TRUE))); - - mov ecx, DWORD PTR _out$56885[ebp] - xor edx, edx - cmp DWORD PTR [ecx], 0 - setne dl - push edx - mov eax, DWORD PTR ?newBooleanBoolean@@3PAU_jmethodID@@A ; newBooleanBoolean - push eax - mov ecx, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - push ecx - mov edx, DWORD PTR _env$[ebp] - push edx - call ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ; JNIEnv_::NewObject - add esp, 16 ; 00000010H - push eax - mov eax, DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO - push eax - mov ecx, DWORD PTR _param$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z ; JNIEnv_::SetObjectField - -; 217 : delete out; - - mov edx, DWORD PTR _out$56885[ebp] - mov DWORD PTR $T56918[ebp], edx - mov eax, DWORD PTR $T56918[ebp] - push eax - call ??3@YAXPAX@Z ; operator delete - add esp, 4 -$L56884: - -; 221 : -; 222 : } - - jmp $L56863 -$L56864: - -; 223 : -; 224 : delete [] arrays; - - mov ecx, DWORD PTR _arrays$[ebp] - mov DWORD PTR $T56919[ebp], ecx - mov edx, DWORD PTR $T56919[ebp] - push edx - call ??3@YAXPAX@Z ; operator delete - add esp, 4 - -; 225 : -; 226 : env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - - mov esi, esp - call DWORD PTR __imp__GetLastError@0 - cmp esi, esp - call __chkesp - push eax - mov eax, DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov ecx, DWORD PTR _env$[ebp] - call ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ; JNIEnv_::SetIntField -$L56800: - -; 227 : -; 228 : } - - pop edi - pop esi - pop ebx - add esp, 168 ; 000000a8H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 12 ; 0000000cH -_Java_com_eaio_nativecall_VoidCall_executeCall0@12 ENDP -_TEXT ENDS -; COMDAT ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z -_TEXT SEGMENT -_this$ = -4 -_name$ = 8 -?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z PROC NEAR ; JNIEnv_::FindClass, COMDAT - -; 759 : jclass FindClass(const char *name) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 760 : return functions->FindClass(this, name); - - mov esi, esp - mov eax, DWORD PTR _name$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - mov eax, DWORD PTR [edx] - call DWORD PTR [eax+24] - cmp esi, esp - call __chkesp - -; 761 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 4 -?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z ENDP ; JNIEnv_::FindClass -_TEXT ENDS -; COMDAT ?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z -_TEXT SEGMENT -_this$ = -4 -_clazz$ = 8 -_msg$ = 12 -?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z PROC NEAR ; JNIEnv_::ThrowNew, COMDAT - -; 787 : jint ThrowNew(jclass clazz, const char *msg) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 788 : return functions->ThrowNew(this, clazz, msg); - - mov esi, esp - mov eax, DWORD PTR _msg$[ebp] - push eax - mov ecx, DWORD PTR _clazz$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - mov ecx, DWORD PTR [eax] - call DWORD PTR [ecx+56] - cmp esi, esp - call __chkesp - -; 789 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z ENDP ; JNIEnv_::ThrowNew -_TEXT ENDS -; COMDAT ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ -_TEXT SEGMENT -_this$ = 8 -_args$ = -4 -_result$ = -8 -_clazz$ = 12 -_methodID$ = 16 -?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ PROC NEAR ; JNIEnv_::NewObject, COMDAT - -; 834 : jobject NewObject(jclass clazz, jmethodID methodID, ...) { - - push ebp - mov ebp, esp - sub esp, 72 ; 00000048H - push ebx - push esi - push edi - lea edi, DWORD PTR [ebp-72] - mov ecx, 18 ; 00000012H - mov eax, -858993460 ; ccccccccH - rep stosd - -; 835 : va_list args; -; 836 : jobject result; -; 837 : va_start(args, methodID); - - lea eax, DWORD PTR _methodID$[ebp+4] - mov DWORD PTR _args$[ebp], eax - -; 838 : result = functions->NewObjectV(this,clazz,methodID,args); - - mov esi, esp - mov ecx, DWORD PTR _args$[ebp] - push ecx - mov edx, DWORD PTR _methodID$[ebp] - push edx - mov eax, DWORD PTR _clazz$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - mov eax, DWORD PTR [edx] - call DWORD PTR [eax+116] - cmp esi, esp - call __chkesp - mov DWORD PTR _result$[ebp], eax - -; 839 : va_end(args); - - mov DWORD PTR _args$[ebp], 0 - -; 840 : return result; - - mov eax, DWORD PTR _result$[ebp] - -; 841 : } - - pop edi - pop esi - pop ebx - add esp, 72 ; 00000048H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 0 -?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ENDP ; JNIEnv_::NewObject -_TEXT ENDS -; COMDAT ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z -_TEXT SEGMENT -_this$ = -4 -_obj$ = 8 -_clazz$ = 12 -?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z PROC NEAR ; JNIEnv_::IsInstanceOf, COMDAT - -; 854 : jboolean IsInstanceOf(jobject obj, jclass clazz) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 855 : return functions->IsInstanceOf(this,obj,clazz); - - mov esi, esp - mov eax, DWORD PTR _clazz$[ebp] - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - mov ecx, DWORD PTR [eax] - call DWORD PTR [ecx+128] - cmp esi, esp - call __chkesp - -; 856 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z ENDP ; JNIEnv_::IsInstanceOf -_TEXT ENDS -; COMDAT ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ -_TEXT SEGMENT -_this$ = 8 -_args$ = -4 -_result$ = -8 -_obj$ = 12 -_methodID$ = 16 -?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ PROC NEAR ; JNIEnv_::CallBooleanMethod, COMDAT - -; 881 : jmethodID methodID, ...) { - - push ebp - mov ebp, esp - sub esp, 72 ; 00000048H - push ebx - push esi - push edi - lea edi, DWORD PTR [ebp-72] - mov ecx, 18 ; 00000012H - mov eax, -858993460 ; ccccccccH - rep stosd - -; 882 : va_list args; -; 883 : jboolean result; -; 884 : va_start(args,methodID); - - lea eax, DWORD PTR _methodID$[ebp+4] - mov DWORD PTR _args$[ebp], eax - -; 885 : result = functions->CallBooleanMethodV(this,obj,methodID,args); - - mov esi, esp - mov ecx, DWORD PTR _args$[ebp] - push ecx - mov edx, DWORD PTR _methodID$[ebp] - push edx - mov eax, DWORD PTR _obj$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - mov eax, DWORD PTR [edx] - call DWORD PTR [eax+152] - cmp esi, esp - call __chkesp - mov BYTE PTR _result$[ebp], al - -; 886 : va_end(args); - - mov DWORD PTR _args$[ebp], 0 - -; 887 : return result; - - mov al, BYTE PTR _result$[ebp] - -; 888 : } - - pop edi - pop esi - pop ebx - add esp, 72 ; 00000048H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 0 -?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ENDP ; JNIEnv_::CallBooleanMethod -_TEXT ENDS -; COMDAT ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ -_TEXT SEGMENT -_this$ = 8 -_args$ = -4 -_result$ = -8 -_obj$ = 12 -_methodID$ = 16 -?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ PROC NEAR ; JNIEnv_::CallIntMethod, COMDAT - -; 949 : jint CallIntMethod(jobject obj, jmethodID methodID, ...) { - - push ebp - mov ebp, esp - sub esp, 72 ; 00000048H - push ebx - push esi - push edi - lea edi, DWORD PTR [ebp-72] - mov ecx, 18 ; 00000012H - mov eax, -858993460 ; ccccccccH - rep stosd - -; 950 : va_list args; -; 951 : jint result; -; 952 : va_start(args,methodID); - - lea eax, DWORD PTR _methodID$[ebp+4] - mov DWORD PTR _args$[ebp], eax - -; 953 : result = functions->CallIntMethodV(this,obj,methodID,args); - - mov esi, esp - mov ecx, DWORD PTR _args$[ebp] - push ecx - mov edx, DWORD PTR _methodID$[ebp] - push edx - mov eax, DWORD PTR _obj$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - mov eax, DWORD PTR [edx] - call DWORD PTR [eax+200] - cmp esi, esp - call __chkesp - mov DWORD PTR _result$[ebp], eax - -; 954 : va_end(args); - - mov DWORD PTR _args$[ebp], 0 - -; 955 : return result; - - mov eax, DWORD PTR _result$[ebp] - -; 956 : } - - pop edi - pop esi - pop ebx - add esp, 72 ; 00000048H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 0 -?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ENDP ; JNIEnv_::CallIntMethod -_TEXT ENDS -; COMDAT ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z -_TEXT SEGMENT -_obj$ = 8 -_fieldID$ = 12 -_this$ = -4 -?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z PROC NEAR ; JNIEnv_::GetObjectField, COMDAT - -; 1248 : jobject GetObjectField(jobject obj, jfieldID fieldID) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1249 : return functions->GetObjectField(this,obj,fieldID); - - mov esi, esp - mov eax, DWORD PTR _fieldID$[ebp] - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - mov ecx, DWORD PTR [eax] - call DWORD PTR [ecx+380] - cmp esi, esp - call __chkesp - -; 1250 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z ENDP ; JNIEnv_::GetObjectField -_TEXT ENDS -; COMDAT ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z -_TEXT SEGMENT -_obj$ = 8 -_fieldID$ = 12 -_this$ = -4 -?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z PROC NEAR ; JNIEnv_::GetIntField, COMDAT - -; 1263 : jint GetIntField(jobject obj, jfieldID fieldID) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1264 : return functions->GetIntField(this,obj,fieldID); - - mov esi, esp - mov eax, DWORD PTR _fieldID$[ebp] - push eax - mov ecx, DWORD PTR _obj$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - mov ecx, DWORD PTR [eax] - call DWORD PTR [ecx+400] - cmp esi, esp - call __chkesp - -; 1265 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z ENDP ; JNIEnv_::GetIntField -_TEXT ENDS -; COMDAT ?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z -_TEXT SEGMENT -_obj$ = 8 -_fieldID$ = 12 -_val$ = 16 -_this$ = -4 -?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z PROC NEAR ; JNIEnv_::SetObjectField, COMDAT - -; 1276 : void SetObjectField(jobject obj, jfieldID fieldID, jobject val) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1277 : functions->SetObjectField(this,obj,fieldID,val); - - mov esi, esp - mov eax, DWORD PTR _val$[ebp] - push eax - mov ecx, DWORD PTR _fieldID$[ebp] - push ecx - mov edx, DWORD PTR _obj$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - mov edx, DWORD PTR [ecx] - call DWORD PTR [edx+416] - cmp esi, esp - call __chkesp - -; 1278 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 12 ; 0000000cH -?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z ENDP ; JNIEnv_::SetObjectField -_TEXT ENDS -; COMDAT ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z -_TEXT SEGMENT -_obj$ = 8 -_fieldID$ = 12 -_val$ = 16 -_this$ = -4 -?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z PROC NEAR ; JNIEnv_::SetIntField, COMDAT - -; 1296 : jint val) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1297 : functions->SetIntField(this,obj,fieldID,val); - - mov esi, esp - mov eax, DWORD PTR _val$[ebp] - push eax - mov ecx, DWORD PTR _fieldID$[ebp] - push ecx - mov edx, DWORD PTR _obj$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - mov edx, DWORD PTR [ecx] - call DWORD PTR [edx+436] - cmp esi, esp - call __chkesp - -; 1298 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 12 ; 0000000cH -?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z ENDP ; JNIEnv_::SetIntField -_TEXT ENDS -; COMDAT ?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z -_TEXT SEGMENT -_this$ = -4 -_array$ = 8 -?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z PROC NEAR ; JNIEnv_::GetArrayLength, COMDAT - -; 1589 : jsize GetArrayLength(jarray array) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1590 : return functions->GetArrayLength(this,array); - - mov esi, esp - mov eax, DWORD PTR _array$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - mov eax, DWORD PTR [edx] - call DWORD PTR [eax+684] - cmp esi, esp - call __chkesp - -; 1591 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 4 -?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z ENDP ; JNIEnv_::GetArrayLength -_TEXT ENDS -; COMDAT ?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z -_TEXT SEGMENT -_this$ = -4 -_array$ = 8 -_index$ = 12 -?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z PROC NEAR ; JNIEnv_::GetObjectArrayElement, COMDAT - -; 1597 : jobject GetObjectArrayElement(jobjectArray array, jsize index) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1598 : return functions->GetObjectArrayElement(this,array,index); - - mov esi, esp - mov eax, DWORD PTR _index$[ebp] - push eax - mov ecx, DWORD PTR _array$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - mov ecx, DWORD PTR [eax] - call DWORD PTR [ecx+692] - cmp esi, esp - call __chkesp - -; 1599 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z ENDP ; JNIEnv_::GetObjectArrayElement -_TEXT ENDS -; COMDAT ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z -_TEXT SEGMENT -_this$ = -4 -_array$ = 8 -_isCopy$ = 12 -?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z PROC NEAR ; JNIEnv_::GetPrimitiveArrayCritical, COMDAT - -; 1788 : void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1789 : return functions->GetPrimitiveArrayCritical(this,array,isCopy); - - mov esi, esp - mov eax, DWORD PTR _isCopy$[ebp] - push eax - mov ecx, DWORD PTR _array$[ebp] - push ecx - mov edx, DWORD PTR _this$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - mov ecx, DWORD PTR [eax] - call DWORD PTR [ecx+888] - cmp esi, esp - call __chkesp - -; 1790 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 8 -?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z ENDP ; JNIEnv_::GetPrimitiveArrayCritical -_TEXT ENDS -; COMDAT ?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z -_TEXT SEGMENT -_this$ = -4 -_array$ = 8 -_carray$ = 12 -_mode$ = 16 -?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z PROC NEAR ; JNIEnv_::ReleasePrimitiveArrayCritical, COMDAT - -; 1791 : void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) { - - push ebp - mov ebp, esp - sub esp, 68 ; 00000044H - push ebx - push esi - push edi - push ecx - lea edi, DWORD PTR [ebp-68] - mov ecx, 17 ; 00000011H - mov eax, -858993460 ; ccccccccH - rep stosd - pop ecx - mov DWORD PTR _this$[ebp], ecx - -; 1792 : functions->ReleasePrimitiveArrayCritical(this,array,carray,mode); - - mov esi, esp - mov eax, DWORD PTR _mode$[ebp] - push eax - mov ecx, DWORD PTR _carray$[ebp] - push ecx - mov edx, DWORD PTR _array$[ebp] - push edx - mov eax, DWORD PTR _this$[ebp] - push eax - mov ecx, DWORD PTR _this$[ebp] - mov edx, DWORD PTR [ecx] - call DWORD PTR [edx+892] - cmp esi, esp - call __chkesp - -; 1793 : } - - pop edi - pop esi - pop ebx - add esp, 68 ; 00000044H - cmp ebp, esp - call __chkesp - mov esp, ebp - pop ebp - ret 12 ; 0000000cH -?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z ENDP ; JNIEnv_::ReleasePrimitiveArrayCritical -_TEXT ENDS -END diff --git a/vendor/nativecall/0.4.1/cpp/Debug/VoidCall.obj b/vendor/nativecall/0.4.1/cpp/Debug/VoidCall.obj deleted file mode 100644 index 9ba9ad6ab225cebca6ee6e1ca05658f4b29b33b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27719 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 Yl4ji+J{d5`!MqO_%J8RQ@8r<`7lL*D^#A|> diff --git a/vendor/nativecall/0.4.1/cpp/IntCall.cpp b/vendor/nativecall/0.4.1/cpp/IntCall.cpp deleted file mode 100644 index c221ab2..0000000 --- a/vendor/nativecall/0.4.1/cpp/IntCall.cpp +++ /dev/null @@ -1,236 +0,0 @@ -/* - * IntCall.cpp - * - * Created on 11.09.2004. - * - * $Id: IntCall.cpp,v 1.3 2006/04/19 20:54:55 grnull Exp $ - * - * eaio: NativeCall - calling operating system methods from Java - * Copyright (c) 2004-2006 Johann Burkard () - * - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ - -#include -#include "com_eaio_nativecall_IntCall.h" - -#ifdef _WINDOWS -#include -#include -#endif - -#ifdef _WINDOWS -#ifdef _X86_ - -#define _push(x) __asm { push x }; - -#endif -#endif - -// NativeCall fields - -extern jfieldID fieldFunction, fieldModule, fieldFunctionHandle, - fieldModuleHandle, fieldLastErrorCode; - -// Holder fields - -extern jfieldID fieldHolderO; - -// Classes - -extern jclass classBoolean,/* classByte, classCharacter, classShort,*/ - classInteger, /* classLong, classFloat, classDouble,*/ classString, - classByteArray, classCharArray, /*classIntArray,*/ classHolder; - -// Wrapper class methods - -extern jmethodID methodBooleanValue,/* methodByteValue, methodCharValue, -methodShortValue,*/ methodIntValue/*, methodLongValue, methodFloatValue, -methodDoubleValue*/; - -// Constructors - -extern jmethodID newIntegerInt, newBooleanBoolean; - -/* - * Class: com_eaio_nativecall_IntCall - * Method: executeCall - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_com_eaio_nativecall_IntCall_executeCall -(JNIEnv *env, jobject obj) { - - jint functionHandle = env->GetIntField(obj, fieldFunctionHandle); - jint outVal; - -#ifdef _WINDOWS -#ifdef _X86_ - - __asm { - - call functionHandle - mov outVal, eax - - } - -#endif -#endif - - env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - - return outVal; - -} - -/* - * Class: com_eaio_nativecall_IntCall - * Method: executeCall0 - * Signature: ([Ljava/lang/Object;)I - */ -JNIEXPORT jint JNICALL Java_com_eaio_nativecall_IntCall_executeCall0 -(JNIEnv *env, jobject obj, jobjectArray params) { - - const int len = env->GetArrayLength(params); - - int* arrays = NULL; - if (!(arrays = new int[len])) { - env->ThrowNew(env->FindClass("java/lang/OutOfMemoryError"), NULL); - return 0; - } - memset(arrays, 0, (sizeof(int) * len)); - - jobject param; - - for (int i = len - 1; i >= 0; i--) { - - param = env->GetObjectArrayElement(params, i); - - if (param == NULL) { - _push(0); - } - else if (env->IsInstanceOf(param, classInteger)) { - int intArg = env->CallIntMethod(param, methodIntValue); - _push(intArg) - } - else if (env->IsInstanceOf(param, classByteArray)) { - char* byteArrayArg = (char*) env->GetPrimitiveArrayCritical((jarray) param, 0); - arrays[i] = (int) &byteArrayArg; - _push(byteArrayArg) - } - else if (env->IsInstanceOf(param, classCharArray)) { - unsigned short* charArrayArg = (unsigned short*) env->GetPrimitiveArrayCritical( - (jarray) param, 0); - arrays[i] = (int) &charArrayArg; - _push(charArrayArg) - } - else if (env->IsInstanceOf(param, classBoolean)) { - jboolean booleanArg = env->CallBooleanMethod(param, methodBooleanValue); - int tempArg = (booleanArg == JNI_FALSE ? 0 : 1); - _push(tempArg) - } - else if (env->IsInstanceOf(param, classHolder)) { - - /* Holder */ - - jobject o = env->GetObjectField(param, fieldHolderO); - - if (env->IsInstanceOf(o, classInteger)) { - int *intPtr = new int; - *intPtr = env->CallIntMethod(o, methodIntValue); - arrays[i] = (int) intPtr; - _push(intPtr); - } - else if (env->IsInstanceOf(o, classByteArray)) { - char* byteArrayArg = (char*) env->GetPrimitiveArrayCritical((jarray) o, 0); - arrays[i] = (int) &byteArrayArg; - _push(byteArrayArg) - } - else if (env->IsInstanceOf(o, classCharArray)) { - unsigned short* charArrayArg = (unsigned short*) env->GetPrimitiveArrayCritical( - (jarray) o, 0); - arrays[i] = (int) &charArrayArg; - _push(charArrayArg) - } - else if (env->IsInstanceOf(o, classBoolean)) { - jboolean booleanArg = env->CallBooleanMethod(o, methodBooleanValue); - int *tempPtr = new int; - *tempPtr = (booleanArg == JNI_FALSE ? 0 : 1); - arrays[i] = (int) tempPtr; - _push(tempPtr); - } - - /* end Holder */ - - } - - } - - jint functionHandle = env->GetIntField(obj, fieldFunctionHandle); - jint outVal; - -#ifdef _WINDOWS -#ifdef _X86_ - - __asm { - - call functionHandle - mov outVal, eax - - } - -#endif -#endif - - for (int j = 0; j < len; ++j) { - param = env->GetObjectArrayElement(params, j); - if (param == NULL) {} - else if (env->IsInstanceOf(param, classByteArray) || env->IsInstanceOf(param, classCharArray)) { - env->ReleasePrimitiveArrayCritical((jarray) param, (void*) arrays[j], 0); - } - else if (env->IsInstanceOf(param, classHolder)) { - - jobject o = env->GetObjectField(param, fieldHolderO); - - if (env->IsInstanceOf(o, classInteger)) { - int* out = (int*) arrays[j]; - env->SetObjectField(param, fieldHolderO, env->NewObject(classInteger, newIntegerInt, *out)); - delete out; - } - else if (env->IsInstanceOf(o, classByteArray) || env->IsInstanceOf(o, classCharArray)) { - env->ReleasePrimitiveArrayCritical((jarray) o, (void*) arrays[j], 0); - } - else if (env->IsInstanceOf(o, classBoolean)) { - int* out = (int*) arrays[j]; - env->SetObjectField(param, fieldHolderO, env->NewObject(classBoolean, newBooleanBoolean, (*out == 0 ? JNI_FALSE : JNI_TRUE))); - delete out; - } - - } - - } - - delete [] arrays; - - env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - - return outVal; - -} diff --git a/vendor/nativecall/0.4.1/cpp/NativeCall.cpp b/vendor/nativecall/0.4.1/cpp/NativeCall.cpp deleted file mode 100644 index d5267d3..0000000 --- a/vendor/nativecall/0.4.1/cpp/NativeCall.cpp +++ /dev/null @@ -1,234 +0,0 @@ -/* - * NativeCall.cpp - * - * Created on 11.09.2004. - * - * $Id: NativeCall.cpp,v 1.4 2006/04/19 20:54:55 grnull Exp $ - * - * eaio: NativeCall - calling operating system methods from Java - * Copyright (c) 2004-2006 Johann Burkard () - * - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ - -#include -#include "com_eaio_nativecall_NativeCall.h" - -#ifdef _WINDOWS -#include -#include -#endif - -// NativeCall fields - -jfieldID fieldFunction, fieldModule, fieldFunctionHandle, - fieldModuleHandle, fieldLastErrorCode; - -// Holder fields - -jfieldID fieldHolderO; - -// Classes - -jclass classBoolean,/* classByte, classCharacter, classShort,*/ - classInteger, /* classLong, classFloat, classDouble,*/ classString, - classByteArray, classCharArray, /*classIntArray,*/ classHolder; - -// Wrapper class methods - -jmethodID methodBooleanValue,/* methodByteValue, methodCharValue, -methodShortValue,*/ methodIntValue/*, methodLongValue, methodFloatValue, -methodDoubleValue*/; - -// Constructors - -jmethodID newIntegerInt, newBooleanBoolean; - -/* - * Class: com_eaio_nativecall_NativeCall - * Method: initIDs - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_com_eaio_nativecall_NativeCall_initIDs -(JNIEnv *env, jclass cls) { - - // NativeCall fields - - fieldFunction = env->GetFieldID(cls, "function", "Ljava/lang/String;"); - fieldModule = env->GetFieldID(cls, "module", "Ljava/lang/String;"); - - fieldFunctionHandle = env->GetFieldID(cls, "functionHandle", "I"); - fieldModuleHandle = env-> GetFieldID(cls, "moduleHandle", "I"); - - fieldLastErrorCode = env->GetFieldID(cls, "lastErrorCode", "I"); - - // Holder fields - - classHolder = (jclass) env->NewGlobalRef(env->FindClass("com/eaio/nativecall/Holder")); - fieldHolderO = env->GetFieldID(classHolder, "o", "Ljava/lang/Object;"); - - // Other classes - - classBoolean = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Boolean")); - /*classByte = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Byte")); - classCharacter = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Character")); - classShort = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Short"));*/ - classInteger = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Integer")); - /*classLong = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Long")); - classFloat = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Float")); - classDouble = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Double"));*/ - classString = (jclass) env->NewGlobalRef(env->FindClass("java/lang/String")); - classByteArray = (jclass) env->NewGlobalRef(env->FindClass("[B")); - classCharArray = (jclass) env->NewGlobalRef(env->FindClass("[C")); - /*classIntArray = (jclass) env->NewGlobalRef(env->FindClass("[I"));*/ - - // Wrapper class methods - - methodBooleanValue = env->GetMethodID(classBoolean, - "booleanValue", "()Z"); - /*methodByteValue = env->GetMethodID(classByte, - "byteValue", "()B"); - methodCharValue = env->GetMethodID(classCharacter, - "charValue", "()C"); - methodShortValue = env->GetMethodID(classShort, - "shortValue", "()S");*/ - methodIntValue = env->GetMethodID(classInteger, - "intValue", "()I"); - /*methodLongValue = env->GetMethodID(classLong, - "longValue", "()J"); - methodFloatValue = env->GetMethodID(classFloat, - "floatValue", "()F"); - methodDoubleValue = env->GetMethodID(classDouble, - "doubleValue", "()D");*/ - - // Constructors - - newIntegerInt = env->GetMethodID(classInteger, "", "(I)V"); - newBooleanBoolean = env->GetMethodID(classBoolean, "", "(Z)V"); - -} - -/* - * Class: com_eaio_nativecall_NativeCall - * Method: initHandles - * Signature: ()Z - */ -JNIEXPORT jboolean JNICALL Java_com_eaio_nativecall_NativeCall_initHandles -(JNIEnv *env, jobject obj) { - - bool out = JNI_TRUE; - - jstring moduleNameS = (jstring) env->GetObjectField(obj, fieldModule); - jstring functionNameS = (jstring) env->GetObjectField(obj, fieldFunction); - - const char* moduleName = env->GetStringUTFChars(moduleNameS, 0); - const char* functionName = env->GetStringUTFChars(functionNameS, 0); - -#ifdef _WINDOWS - - HMODULE mod = LoadLibrary(moduleName); - - if (mod == NULL) { - /* no such module or DllMain returned FALSE */ - env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - out = JNI_FALSE; - } - else { - FARPROC addr = GetProcAddress(mod, functionName); - if (addr == NULL) { - /* function not found */ - FreeLibrary(mod); - env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - out = JNI_FALSE; - } - else { - /* all ok */ - env->SetIntField(obj, fieldModuleHandle, (jint) mod); - env->SetIntField(obj, fieldFunctionHandle, (jint) addr); - } - } - -#endif - - env->ReleaseStringUTFChars(moduleNameS, moduleName); - env->ReleaseStringUTFChars(functionNameS, functionName); - - return out; - -} - -/* - * Class: com_eaio_nativecall_NativeCall - * Method: getLastError - * Signature: ()Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_com_eaio_nativecall_NativeCall_getLastError -(JNIEnv *env, jobject obj) { - - jint lastError = env->GetIntField(obj, fieldLastErrorCode); - - if (lastError == 0) return NULL; - - jstring out = NULL; - -#ifdef _WINDOWS - - LPVOID msgBufPtr = NULL; - FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM, NULL, lastError, 0, - (LPSTR) &msgBufPtr, 0, NULL); - - out = env->NewStringUTF((char*) msgBufPtr); - - LocalFree(msgBufPtr); - -#endif - - return out; - -} - -/* - * Class: com_eaio_nativecall_NativeCall - * Method: destroy - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_com_eaio_nativecall_NativeCall_destroy -(JNIEnv *env, jobject obj) { - - jint module = env->GetIntField(obj, fieldModuleHandle); - - if (module == 0) return; - -#ifdef _WINDOWS - - if (FreeLibrary((HMODULE) module) == 0) { - env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - } - -#endif - - env->SetIntField(obj, fieldModuleHandle, 0); - env->SetIntField(obj, fieldFunctionHandle, 0); - - return; - -} \ No newline at end of file diff --git a/vendor/nativecall/0.4.1/cpp/NativeCall.dsp b/vendor/nativecall/0.4.1/cpp/NativeCall.dsp deleted file mode 100644 index 7959712..0000000 --- a/vendor/nativecall/0.4.1/cpp/NativeCall.dsp +++ /dev/null @@ -1,132 +0,0 @@ -# Microsoft Developer Studio Project File - Name="NativeCall" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=NativeCall - Win32 Debug -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl -!MESSAGE -!MESSAGE NMAKE /f "NativeCall.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "NativeCall.mak" CFG="NativeCall - Win32 Debug" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "NativeCall - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library") -!MESSAGE "NativeCall - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "NativeCall - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NATIVECALL_EXPORTS" /YX /FD /c -# ADD CPP /nologo /G5 /MD /W3 /Oa /Og /Os /Oy /Ob2 /Gf /I "C:\Program Files\IBMJava13\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NATIVECALL_EXPORTS" /D "WIN32_LEAN_AND_MEAN" /FAs /FR /YX /FD /c -# SUBTRACT CPP /Ox /Ot /Gy -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x407 /d "NDEBUG" -# ADD RSC /l 0x407 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib libctiny.lib "C:\Program Files\Microsoft Visual Studio\VC98\Lib\libcmt.lib" "C:\Program Files\Microsoft Visual Studio\VC98\Lib\msvcrt.lib" /nologo /subsystem:console /dll /map /machine:I386 /nodefaultlib /MERGE:".rdata=.text" /OPT:REF /OPT:NOWIN98 -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "NativeCall - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NATIVECALL_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "C:\Program Files\IBMJava13\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NATIVECALL_EXPORTS" /FAs /FR /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x407 /d "_DEBUG" -# ADD RSC /l 0x407 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "NativeCall - Win32 Release" -# Name "NativeCall - Win32 Debug" -# Begin Group "Quellcodedateien" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\IntCall.cpp -# End Source File -# Begin Source File - -SOURCE=.\NativeCall.cpp -# End Source File -# Begin Source File - -SOURCE=.\version.rc -# End Source File -# Begin Source File - -SOURCE=.\VoidCall.cpp -# End Source File -# End Group -# Begin Group "Header-Dateien" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\com_eaio_nativecall_IntCall.h -# End Source File -# Begin Source File - -SOURCE=.\com_eaio_nativecall_NativeCall.h -# End Source File -# Begin Source File - -SOURCE=.\com_eaio_nativecall_VoidCall.h -# End Source File -# End Group -# Begin Group "Ressourcendateien" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/vendor/nativecall/0.4.1/cpp/NativeCall.dsw b/vendor/nativecall/0.4.1/cpp/NativeCall.dsw deleted file mode 100644 index e591c50..0000000 --- a/vendor/nativecall/0.4.1/cpp/NativeCall.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN! - -############################################################################### - -Project: "NativeCall"=".\NativeCall.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/vendor/nativecall/0.4.1/cpp/Release/IntCall.asm b/vendor/nativecall/0.4.1/cpp/Release/IntCall.asm deleted file mode 100644 index f2aa3af..0000000 --- a/vendor/nativecall/0.4.1/cpp/Release/IntCall.asm +++ /dev/null @@ -1,943 +0,0 @@ - TITLE C:\Documents and Settings\Administrator\My Documents\Software\NativeCall\src\cpp\IntCall.cpp - .386P -include listing.inc -if @Version gt 510 -.model FLAT -else -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -_BSS SEGMENT DWORD USE32 PUBLIC 'BSS' -_BSS ENDS -_TLS SEGMENT DWORD USE32 PUBLIC 'TLS' -_TLS ENDS -; COMDAT ??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -FLAT GROUP _DATA, CONST, _BSS - ASSUME CS: FLAT, DS: FLAT, SS: FLAT -endif -PUBLIC _Java_com_eaio_nativecall_IntCall_executeCall@8 -EXTRN ?fieldFunctionHandle@@3PAU_jfieldID@@A:DWORD ; fieldFunctionHandle -EXTRN ?fieldLastErrorCode@@3PAU_jfieldID@@A:DWORD ; fieldLastErrorCode -EXTRN __imp__GetLastError@0:NEAR -_TEXT SEGMENT -_env$ = 8 -_obj$ = 12 -_functionHandle$ = 8 -_outVal$ = -4 -_Java_com_eaio_nativecall_IntCall_executeCall@8 PROC NEAR - -; 79 : (JNIEnv *env, jobject obj) { - - push ebp - mov ebp, esp - push ecx - -; 80 : -; 81 : jint functionHandle = env->GetIntField(obj, fieldFunctionHandle); - - mov eax, DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A ; fieldFunctionHandle - push esi - mov esi, DWORD PTR _env$[ebp] - push eax - push DWORD PTR _obj$[ebp] - mov ecx, DWORD PTR [esi] - push esi - call DWORD PTR [ecx+400] - mov DWORD PTR _functionHandle$[ebp], eax - -; 82 : jint outVal; -; 83 : -; 84 : #ifdef _WINDOWS -; 85 : #ifdef _X86_ -; 86 : -; 87 : __asm { -; 88 : -; 89 : call functionHandle - - call DWORD PTR _functionHandle$[ebp] - -; 90 : mov outVal, eax - - mov DWORD PTR _outVal$[ebp], eax - -; 91 : -; 92 : } -; 93 : -; 94 : #endif -; 95 : #endif -; 96 : -; 97 : env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - - call DWORD PTR __imp__GetLastError@0 - mov ecx, DWORD PTR [esi] - push eax - push DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode - push DWORD PTR _obj$[ebp] - push esi - call DWORD PTR [ecx+436] - -; 98 : -; 99 : return outVal; - - mov eax, DWORD PTR _outVal$[ebp] - -; 100 : -; 101 : } - - pop esi - leave - ret 8 -_Java_com_eaio_nativecall_IntCall_executeCall@8 ENDP -_TEXT ENDS -PUBLIC ??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ ; `string' -PUBLIC _Java_com_eaio_nativecall_IntCall_executeCall0@12 -PUBLIC ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ; JNIEnv_::NewObject -PUBLIC ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallBooleanMethod -PUBLIC ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallIntMethod -EXTRN ?fieldHolderO@@3PAU_jfieldID@@A:DWORD ; fieldHolderO -EXTRN ?classBoolean@@3PAV_jclass@@A:DWORD ; classBoolean -EXTRN ?classInteger@@3PAV_jclass@@A:DWORD ; classInteger -EXTRN ?classByteArray@@3PAV_jclass@@A:DWORD ; classByteArray -EXTRN ?classCharArray@@3PAV_jclass@@A:DWORD ; classCharArray -EXTRN ?classHolder@@3PAV_jclass@@A:DWORD ; classHolder -EXTRN ?methodBooleanValue@@3PAU_jmethodID@@A:DWORD ; methodBooleanValue -EXTRN ?methodIntValue@@3PAU_jmethodID@@A:DWORD ; methodIntValue -EXTRN ?newIntegerInt@@3PAU_jmethodID@@A:DWORD ; newIntegerInt -EXTRN ?newBooleanBoolean@@3PAU_jmethodID@@A:DWORD ; newBooleanBoolean -EXTRN ??2@YAPAXI@Z:NEAR ; operator new -EXTRN ??3@YAXPAX@Z:NEAR ; operator delete -EXTRN _memset:NEAR -; COMDAT ??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ -; File C:\Program Files\IBMJava13\include\jni.h -_DATA SEGMENT -??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ DB 'java/lang/OutOfMemor' - DB 'yError', 00H ; `string' -_DATA ENDS -_TEXT SEGMENT -_env$ = 8 -_obj$ = 12 -_params$ = 16 -_len$ = -28 -_arrays$ = -20 -_param$ = -24 -_i$ = 8 -_intArg$27770 = -24 -_byteArrayArg$27773 = -4 -_charArrayArg$27779 = -8 -_tempArg$27786 = -24 -_intPtr$27791 = -24 -_byteArrayArg$27797 = -12 -_charArrayArg$27803 = -16 -_tempPtr$27810 = -24 -_functionHandle$ = 8 -_outVal$ = -32 -_j$ = 8 -_Java_com_eaio_nativecall_IntCall_executeCall0@12 PROC NEAR - -; 109 : (JNIEnv *env, jobject obj, jobjectArray params) { - - push ebp - mov ebp, esp - sub esp, 32 ; 00000020H - push ebx - push esi - -; 110 : -; 111 : const int len = env->GetArrayLength(params); - - mov esi, DWORD PTR _env$[ebp] - push edi - push DWORD PTR _params$[ebp] - mov eax, DWORD PTR [esi] - push esi - call DWORD PTR [eax+684] - mov ebx, eax - -; 112 : -; 113 : int* arrays = NULL; -; 114 : if (!(arrays = new int[len])) { - - mov edi, ebx - mov DWORD PTR _len$[ebp], ebx - shl edi, 2 - push edi - call ??2@YAPAXI@Z ; operator new - test eax, eax - pop ecx - mov DWORD PTR _arrays$[ebp], eax - jne SHORT $L27759 - -; 115 : env->ThrowNew(env->FindClass("java/lang/OutOfMemoryError"), NULL); - - mov eax, DWORD PTR [esi] - push OFFSET FLAT:??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ ; `string' - push esi - call DWORD PTR [eax+24] - mov ecx, DWORD PTR [esi] - push 0 - push eax - push esi - call DWORD PTR [ecx+56] - -; 116 : return 0; - - xor eax, eax - jmp $L27754 -$L27759: - -; 117 : } -; 118 : memset(arrays, 0, (sizeof(int) * len)); - - push edi - push 0 - push eax - call _memset - -; 119 : -; 120 : jobject param; -; 121 : -; 122 : for (int i = len - 1; i >= 0; i--) { - - lea eax, DWORD PTR [ebx-1] - add esp, 12 ; 0000000cH - test eax, eax - mov DWORD PTR _i$[ebp], eax - jl $L27766 - mov ecx, DWORD PTR _arrays$[ebp] - lea edi, DWORD PTR [ecx+eax*4] - jmp SHORT $L27764 -$L28030: - -; 117 : } -; 118 : memset(arrays, 0, (sizeof(int) * len)); - - mov eax, DWORD PTR _i$[ebp] -$L27764: - -; 123 : -; 124 : param = env->GetObjectArrayElement(params, i); - - mov ecx, DWORD PTR [esi] - push eax - push DWORD PTR _params$[ebp] - push esi - call DWORD PTR [ecx+692] - mov ebx, eax - -; 125 : -; 126 : if (param == NULL) { - - test ebx, ebx - jne SHORT $L27767 - -; 127 : _push(0); - - push 0 - -; 128 : } -; 129 : else if (env->IsInstanceOf(param, classInteger)) { - - jmp $L27765 -$L27767: - mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27769 - -; 130 : int intArg = env->CallIntMethod(param, methodIntValue); - - push DWORD PTR ?methodIntValue@@3PAU_jmethodID@@A ; methodIntValue - push ebx - push esi - call ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallIntMethod - add esp, 12 ; 0000000cH - mov DWORD PTR _intArg$27770[ebp], eax - -; 131 : _push(intArg) - - push DWORD PTR _intArg$27770[ebp] - -; 132 : } -; 133 : else if (env->IsInstanceOf(param, classByteArray)) { - - jmp $L27765 -$L27769: - mov eax, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27772 - -; 134 : char* byteArrayArg = (char*) env->GetPrimitiveArrayCritical((jarray) param, 0); - - mov eax, DWORD PTR [esi] - push 0 - push ebx - push esi - call DWORD PTR [eax+888] - mov DWORD PTR _byteArrayArg$27773[ebp], eax - -; 135 : arrays[i] = (int) &byteArrayArg; - - lea eax, DWORD PTR _byteArrayArg$27773[ebp] - mov DWORD PTR [edi], eax - -; 136 : _push(byteArrayArg) - - push DWORD PTR _byteArrayArg$27773[ebp] - -; 137 : } -; 138 : else if (env->IsInstanceOf(param, classCharArray)) { - - jmp $L27765 -$L27772: - mov eax, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27778 - -; 139 : unsigned short* charArrayArg = (unsigned short*) env->GetPrimitiveArrayCritical( -; 140 : (jarray) param, 0); - - mov eax, DWORD PTR [esi] - push 0 - push ebx - push esi - call DWORD PTR [eax+888] - mov DWORD PTR _charArrayArg$27779[ebp], eax - -; 141 : arrays[i] = (int) &charArrayArg; - - lea eax, DWORD PTR _charArrayArg$27779[ebp] - mov DWORD PTR [edi], eax - -; 142 : _push(charArrayArg) - - push DWORD PTR _charArrayArg$27779[ebp] - -; 143 : } -; 144 : else if (env->IsInstanceOf(param, classBoolean)) { - - jmp $L27765 -$L27778: - mov eax, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27784 - -; 145 : jboolean booleanArg = env->CallBooleanMethod(param, methodBooleanValue); - - push DWORD PTR ?methodBooleanValue@@3PAU_jmethodID@@A ; methodBooleanValue - push ebx - push esi - call ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallBooleanMethod - add esp, 12 ; 0000000cH - -; 146 : int tempArg = (booleanArg == JNI_FALSE ? 0 : 1); - - neg al - sbb eax, eax - neg eax - mov DWORD PTR _tempArg$27786[ebp], eax - -; 147 : _push(tempArg) - - push DWORD PTR _tempArg$27786[ebp] - -; 148 : } -; 149 : else if (env->IsInstanceOf(param, classHolder)) { - - jmp $L27765 -$L27784: - mov eax, DWORD PTR ?classHolder@@3PAV_jclass@@A ; classHolder - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je $L27765 - -; 150 : -; 151 : /* Holder */ -; 152 : -; 153 : jobject o = env->GetObjectField(param, fieldHolderO); - - mov eax, DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+380] - -; 154 : -; 155 : if (env->IsInstanceOf(o, classInteger)) { - - mov ecx, DWORD PTR [esi] - mov ebx, eax - mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27790 - -; 156 : int *intPtr = new int; - - push 4 - call ??2@YAPAXI@Z ; operator new - pop ecx - mov DWORD PTR _intPtr$27791[ebp], eax - -; 157 : *intPtr = env->CallIntMethod(o, methodIntValue); - - push DWORD PTR ?methodIntValue@@3PAU_jmethodID@@A ; methodIntValue - push ebx - push esi - call ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallIntMethod - mov ecx, DWORD PTR _intPtr$27791[ebp] - add esp, 12 ; 0000000cH - -; 158 : arrays[i] = (int) intPtr; - - mov DWORD PTR [edi], ecx - mov DWORD PTR [ecx], eax - -; 159 : _push(intPtr); - - push DWORD PTR _intPtr$27791[ebp] - -; 160 : } -; 161 : else if (env->IsInstanceOf(o, classByteArray)) { - - jmp $L27765 -$L27790: - mov eax, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27796 - -; 162 : char* byteArrayArg = (char*) env->GetPrimitiveArrayCritical((jarray) o, 0); - - mov eax, DWORD PTR [esi] - push 0 - push ebx - push esi - call DWORD PTR [eax+888] - mov DWORD PTR _byteArrayArg$27797[ebp], eax - -; 163 : arrays[i] = (int) &byteArrayArg; - - lea eax, DWORD PTR _byteArrayArg$27797[ebp] - mov DWORD PTR [edi], eax - -; 164 : _push(byteArrayArg) - - push DWORD PTR _byteArrayArg$27797[ebp] - -; 165 : } -; 166 : else if (env->IsInstanceOf(o, classCharArray)) { - - jmp SHORT $L27765 -$L27796: - mov eax, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27802 - -; 167 : unsigned short* charArrayArg = (unsigned short*) env->GetPrimitiveArrayCritical( -; 168 : (jarray) o, 0); - - mov eax, DWORD PTR [esi] - push 0 - push ebx - push esi - call DWORD PTR [eax+888] - mov DWORD PTR _charArrayArg$27803[ebp], eax - -; 169 : arrays[i] = (int) &charArrayArg; - - lea eax, DWORD PTR _charArrayArg$27803[ebp] - mov DWORD PTR [edi], eax - -; 170 : _push(charArrayArg) - - push DWORD PTR _charArrayArg$27803[ebp] - -; 171 : } -; 172 : else if (env->IsInstanceOf(o, classBoolean)) { - - jmp SHORT $L27765 -$L27802: - mov eax, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27765 - -; 173 : jboolean booleanArg = env->CallBooleanMethod(o, methodBooleanValue); - - push DWORD PTR ?methodBooleanValue@@3PAU_jmethodID@@A ; methodBooleanValue - push ebx - push esi - call ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallBooleanMethod - -; 174 : int *tempPtr = new int; - - push 4 - mov bl, al - call ??2@YAPAXI@Z ; operator new - add esp, 16 ; 00000010H - -; 175 : *tempPtr = (booleanArg == JNI_FALSE ? 0 : 1); - - xor ecx, ecx - test bl, bl - setne cl - mov DWORD PTR _tempPtr$27810[ebp], eax - mov DWORD PTR [eax], ecx - -; 176 : arrays[i] = (int) tempPtr; - - mov DWORD PTR [edi], eax - -; 177 : _push(tempPtr); - - push DWORD PTR _tempPtr$27810[ebp] - -; 176 : arrays[i] = (int) tempPtr; - -$L27765: - dec DWORD PTR _i$[ebp] - sub edi, 4 - cmp DWORD PTR _i$[ebp], 0 - jge $L28030 - -; 119 : -; 120 : jobject param; -; 121 : -; 122 : for (int i = len - 1; i >= 0; i--) { - - mov ebx, DWORD PTR _len$[ebp] -$L27766: - -; 178 : } -; 179 : -; 180 : /* end Holder */ -; 181 : -; 182 : } -; 183 : -; 184 : } -; 185 : -; 186 : jint functionHandle = env->GetIntField(obj, fieldFunctionHandle); - - mov eax, DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A ; fieldFunctionHandle - mov ecx, DWORD PTR [esi] - push eax - push DWORD PTR _obj$[ebp] - push esi - call DWORD PTR [ecx+400] - mov DWORD PTR _functionHandle$[ebp], eax - -; 187 : jint outVal; -; 188 : -; 189 : #ifdef _WINDOWS -; 190 : #ifdef _X86_ -; 191 : -; 192 : __asm { -; 193 : -; 194 : call functionHandle - - call DWORD PTR _functionHandle$[ebp] - -; 195 : mov outVal, eax - - mov DWORD PTR _outVal$[ebp], eax - -; 196 : -; 197 : } -; 198 : -; 199 : #endif -; 200 : #endif -; 201 : -; 202 : for (int j = 0; j < len; ++j) { - - and DWORD PTR _j$[ebp], 0 - test ebx, ebx - jle $L27819 - -; 178 : } -; 179 : -; 180 : /* end Holder */ -; 181 : -; 182 : } -; 183 : -; 184 : } -; 185 : -; 186 : jint functionHandle = env->GetIntField(obj, fieldFunctionHandle); - - mov ebx, DWORD PTR _arrays$[ebp] -$L27817: - -; 203 : param = env->GetObjectArrayElement(params, j); - - push DWORD PTR _j$[ebp] - mov eax, DWORD PTR [esi] - push DWORD PTR _params$[ebp] - push esi - call DWORD PTR [eax+692] - mov edi, eax - -; 204 : if (param == NULL) {} - - test edi, edi - mov DWORD PTR _param$[ebp], edi - je $L27818 - -; 205 : else if (env->IsInstanceOf(param, classByteArray) || env->IsInstanceOf(param, classCharArray)) { - - mov eax, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray - mov ecx, DWORD PTR [esi] - push eax - push edi - push esi - call DWORD PTR [ecx+128] - test al, al - jne $L27835 - mov eax, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray - mov ecx, DWORD PTR [esi] - push eax - push edi - push esi - call DWORD PTR [ecx+128] - test al, al - jne $L27835 - -; 207 : } -; 208 : else if (env->IsInstanceOf(param, classHolder)) { - - mov eax, DWORD PTR ?classHolder@@3PAV_jclass@@A ; classHolder - mov ecx, DWORD PTR [esi] - push eax - push edi - push esi - call DWORD PTR [ecx+128] - test al, al - je $L27818 - -; 209 : -; 210 : jobject o = env->GetObjectField(param, fieldHolderO); - - mov eax, DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO - mov ecx, DWORD PTR [esi] - push eax - push edi - push esi - call DWORD PTR [ecx+380] - -; 211 : -; 212 : if (env->IsInstanceOf(o, classInteger)) { - - mov ecx, DWORD PTR [esi] - mov edi, eax - mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - push eax - push edi - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27829 - -; 213 : int* out = (int*) arrays[j]; - - mov edi, DWORD PTR [ebx] - -; 214 : env->SetObjectField(param, fieldHolderO, env->NewObject(classInteger, newIntegerInt, *out)); - - push DWORD PTR [edi] - push DWORD PTR ?newIntegerInt@@3PAU_jmethodID@@A ; newIntegerInt - push DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger -$L28033: - push esi - call ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ; JNIEnv_::NewObject - add esp, 16 ; 00000010H - mov ecx, DWORD PTR [esi] - push eax - push DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO - push DWORD PTR _param$[ebp] - push esi - call DWORD PTR [ecx+416] - -; 215 : delete out; - - push edi - call ??3@YAXPAX@Z ; operator delete - pop ecx - -; 216 : } -; 217 : else if (env->IsInstanceOf(o, classByteArray) || env->IsInstanceOf(o, classCharArray)) { - - jmp SHORT $L27818 -$L27829: - mov eax, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray - mov ecx, DWORD PTR [esi] - push eax - push edi - push esi - call DWORD PTR [ecx+128] - test al, al - jne SHORT $L27835 - mov eax, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray - mov ecx, DWORD PTR [esi] - push eax - push edi - push esi - call DWORD PTR [ecx+128] - test al, al - jne SHORT $L27835 - -; 218 : env->ReleasePrimitiveArrayCritical((jarray) o, (void*) arrays[j], 0); -; 219 : } -; 220 : else if (env->IsInstanceOf(o, classBoolean)) { - - mov eax, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - mov ecx, DWORD PTR [esi] - push eax - push edi - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27818 - -; 221 : int* out = (int*) arrays[j]; - - mov edi, DWORD PTR [ebx] - -; 222 : env->SetObjectField(param, fieldHolderO, env->NewObject(classBoolean, newBooleanBoolean, (*out == 0 ? JNI_FALSE : JNI_TRUE))); - - xor eax, eax - cmp DWORD PTR [edi], eax - setne al - push eax - push DWORD PTR ?newBooleanBoolean@@3PAU_jmethodID@@A ; newBooleanBoolean - push DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - -; 223 : delete out; - - jmp SHORT $L28033 -$L27835: - -; 206 : env->ReleasePrimitiveArrayCritical((jarray) param, (void*) arrays[j], 0); - - mov eax, DWORD PTR [esi] - push 0 - push DWORD PTR [ebx] - push edi - push esi - call DWORD PTR [eax+892] -$L27818: - inc DWORD PTR _j$[ebp] - mov eax, DWORD PTR _j$[ebp] - add ebx, 4 - cmp eax, DWORD PTR _len$[ebp] - jl $L27817 -$L27819: - -; 224 : } -; 225 : -; 226 : } -; 227 : -; 228 : } -; 229 : -; 230 : delete [] arrays; - - push DWORD PTR _arrays$[ebp] - call ??3@YAXPAX@Z ; operator delete - pop ecx - -; 231 : -; 232 : env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - - call DWORD PTR __imp__GetLastError@0 - mov ecx, DWORD PTR [esi] - push eax - push DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode - push DWORD PTR _obj$[ebp] - push esi - call DWORD PTR [ecx+436] - -; 233 : -; 234 : return outVal; - - mov eax, DWORD PTR _outVal$[ebp] -$L27754: - -; 235 : -; 236 : } - - pop edi - pop esi - pop ebx - leave - ret 12 ; 0000000cH -_Java_com_eaio_nativecall_IntCall_executeCall0@12 ENDP -_TEXT ENDS -; COMDAT ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ -_TEXT SEGMENT -_this$ = 8 -_clazz$ = 12 -_methodID$ = 16 -?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ PROC NEAR ; JNIEnv_::NewObject, COMDAT - -; 835 : va_list args; -; 836 : jobject result; -; 837 : va_start(args, methodID); -; 838 : result = functions->NewObjectV(this,clazz,methodID,args); - - mov eax, DWORD PTR _this$[esp-4] - lea edx, DWORD PTR _methodID$[esp] - push edx - push DWORD PTR _methodID$[esp] - mov ecx, DWORD PTR [eax] - push DWORD PTR _clazz$[esp+4] - push eax - call DWORD PTR [ecx+116] - -; 839 : va_end(args); -; 840 : return result; -; 841 : } - - ret 0 -?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ENDP ; JNIEnv_::NewObject -_TEXT ENDS -; COMDAT ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ -_TEXT SEGMENT -_this$ = 8 -_obj$ = 12 -_methodID$ = 16 -?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ PROC NEAR ; JNIEnv_::CallBooleanMethod, COMDAT - -; 882 : va_list args; -; 883 : jboolean result; -; 884 : va_start(args,methodID); -; 885 : result = functions->CallBooleanMethodV(this,obj,methodID,args); - - mov eax, DWORD PTR _this$[esp-4] - lea edx, DWORD PTR _methodID$[esp] - push edx - push DWORD PTR _methodID$[esp] - mov ecx, DWORD PTR [eax] - push DWORD PTR _obj$[esp+4] - push eax - call DWORD PTR [ecx+152] - -; 886 : va_end(args); -; 887 : return result; -; 888 : } - - ret 0 -?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ENDP ; JNIEnv_::CallBooleanMethod -_TEXT ENDS -; COMDAT ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ -_TEXT SEGMENT -_this$ = 8 -_obj$ = 12 -_methodID$ = 16 -?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ PROC NEAR ; JNIEnv_::CallIntMethod, COMDAT - -; 950 : va_list args; -; 951 : jint result; -; 952 : va_start(args,methodID); -; 953 : result = functions->CallIntMethodV(this,obj,methodID,args); - - mov eax, DWORD PTR _this$[esp-4] - lea edx, DWORD PTR _methodID$[esp] - push edx - push DWORD PTR _methodID$[esp] - mov ecx, DWORD PTR [eax] - push DWORD PTR _obj$[esp+4] - push eax - call DWORD PTR [ecx+200] - -; 954 : va_end(args); -; 955 : return result; -; 956 : } - - ret 0 -?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ENDP ; JNIEnv_::CallIntMethod -_TEXT ENDS -END diff --git a/vendor/nativecall/0.4.1/cpp/Release/IntCall.obj b/vendor/nativecall/0.4.1/cpp/Release/IntCall.obj deleted file mode 100644 index 4459fd43b50790667c4b0be371e510ac055df260..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3896 zcmbVPYiv_h96w!4S9GjZCxSyQVG=^13WC7FUvwccKKNjwiHQlZJQC%D@q>w3g2u%xvC9_W1JM~4uK#n+z1{5t8J^^x z`|JPw|G)p^oO91QD3mfRhI8m->Fhh8&_WAnL>p z6GBVN5OSNTa6P>2$o8@$$cwyAuNtr!{OKEGtIZVhEdzy>1$uTH<`X)l?wUQCy$!&2 z&}&q6ai|S8+wMX>?6+-!d@;~_Z2^35E|Bjc=zUqhw>~Iz@lr&LggSS4+I;o<57_mh zmL_+z%fq(W*9!x^@r1a8+sF6uTp%9h1U?k!V!RmY69RlB!ZpUkdi)j!gn%Rp7&F`c zpIt4pag)7Wo@pJ!<@L#u#j8jaa-~l>HwuMKu@l49qSC-Jyk=~cF106L)Y6==xp z+_4*1EeJSgmLr)%DRxGxmd!o*r%&-N zlPkl>>r+~{)n%qG7!m4#pF}rZuMAzU7|B2s*0XcinP(>b;_K5!nYG|hBpVKbI2pMq zm50&Pbx<0^yfEAbgQo!wXT)k6b(@dS0%wZNDpGdpd};L+vN?>vd~^V!f#lQdT&i4= z=B9)N>CdLwS*$-hwWYNF%EEB|8n4d$J+20YN*Y;*aqMI8Xu07%Dp$(mM5fPnZP-Ne zghFTYJjtFc&fS_a;N&k9@STR=P^;zn$=^w{cW^RyrjP5LmsY-=W^ZHV+ta&BD6h>6 zCTx0ZT%8VE-HqX!*7H{&-joH~XBCfS=$2{dlm%JS)_aN~ADz?)>C)3L&WRzxf<|sy z-`;9~iX5F$B#Ue&i(`~5j@c0TSVw--6+$onuC#pka)Df(h*`qz zoo5iY$UBu6XwtOT)}Kwck+KlUM-Um^9*3qoi$j!{60&v0GI6!Mvo5o}+TMDb^>!B!^|l5+ zA=FztAnGj)h>WVV$3;NY$Jc;pq(1|CjPU)ElbPXcrnXA}(K%WQh|W{7-SQPcmm1p8dLf}jcvao*4ShV?!8K@cn$c8WBdj$q^*L!ytKu+ z3ou5EaL%}CM!1sqGx{FJN*dt_D@Ts5P(-_>+*1(hHrMa)yW;^VD#XO3osR|WZGtF< zV%@;A<1k=b2@fVpIqBASA5} z78uq;Xfx?)MHAiaZw?f6hxH<$E?3%;)P{2Xv^$R_Onm49N;>s@?aeb z_ve@ikM2r~XTWH{n+vyHA2RDS8-zI3%7loO?m~(`hDHOvl4?nq$OlqC@A!T^AK|P2 zd;bmIlDqaB-q3! zMe_Zqj|T;Ysq?zpxiA@NbTf<#aa<_c%W-=JF{jDYsBPER=<{pgi zv&b0}`gh0U5rL1XFD<61Aoj$AG$^ODjydEy=ye@r4igjD{6e>ofLBR%l21cC5)=|G znu0DzXCT5SlXRR6`?xR>;Q~0RV>KEdACYpI=7mHI^fBj=kkR@cKH*9v_`zZ))Ot`9 z?lZ2siir;hKrKYE11DF{aJ9RenC6#SJPbZYoEz~u;@ntxkT`2xE(STBo1nx{;YM8I zW}&~OGYtPVnSITTY^;xCm{u2zLXL4NXUGq=YGe`3SLZM=;BU2B9S@nwJSMh)3f5q; NIpkKtbl(F^{{=L(i9!GX diff --git a/vendor/nativecall/0.4.1/cpp/Release/NativeCall.asm b/vendor/nativecall/0.4.1/cpp/Release/NativeCall.asm deleted file mode 100644 index 980f7ca..0000000 --- a/vendor/nativecall/0.4.1/cpp/Release/NativeCall.asm +++ /dev/null @@ -1,859 +0,0 @@ - TITLE C:\Documents and Settings\Administrator\My Documents\Software\NativeCall\src\cpp\NativeCall.cpp - .386P -include listing.inc -if @Version gt 510 -.model FLAT -else -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -_BSS SEGMENT DWORD USE32 PUBLIC 'BSS' -_BSS ENDS -_TLS SEGMENT DWORD USE32 PUBLIC 'TLS' -_TLS ENDS -; COMDAT ??_C@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_08JJOG@function?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_06CODG@module?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_01FLOP@I?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_0P@LKIL@functionHandle?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_0N@EFAA@moduleHandle?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_0O@OMHL@lastErrorCode?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_0BL@DALH@com?1eaio?1nativecall?1Holder?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_0BD@GEDI@Ljava?1lang?1Object?$DL?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_01PGHN@o?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_0BC@IGNJ@java?1lang?1Boolean?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_0BC@FBKL@java?1lang?1Integer?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_0BB@LLFN@java?1lang?1String?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_02LOEJ@?$FLB?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_02BENO@?$FLC?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_03KJOK@?$CI?$CJZ?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_0N@KEBP@booleanValue?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_03PPCD@?$CI?$CJI?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_08JCMA@intValue?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_04ECLF@?$CII?$CJV?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_06KILP@?$DMinit?$DO?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ??_C@_04JFOE@?$CIZ?$CJV?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?NewGlobalRef@JNIEnv_@@QAEPAV_jobject@@PAV2@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetMethodID@JNIEnv_@@QAEPAU_jmethodID@@PAV_jclass@@PBD1@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetFieldID@JNIEnv_@@QAEPAU_jfieldID@@PAV_jclass@@PBD1@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?NewStringUTF@JNIEnv_@@QAEPAV_jstring@@PBD@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetStringUTFChars@JNIEnv_@@QAEPBDPAV_jstring@@PAE@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?ReleaseStringUTFChars@JNIEnv_@@QAEXPAV_jstring@@PBD@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -FLAT GROUP _DATA, CONST, _BSS - ASSUME CS: FLAT, DS: FLAT, SS: FLAT -endif -PUBLIC ?fieldFunction@@3PAU_jfieldID@@A ; fieldFunction -PUBLIC ?fieldModule@@3PAU_jfieldID@@A ; fieldModule -PUBLIC ?fieldFunctionHandle@@3PAU_jfieldID@@A ; fieldFunctionHandle -PUBLIC ?fieldModuleHandle@@3PAU_jfieldID@@A ; fieldModuleHandle -PUBLIC ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode -PUBLIC ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO -PUBLIC ?classBoolean@@3PAV_jclass@@A ; classBoolean -PUBLIC ?classInteger@@3PAV_jclass@@A ; classInteger -PUBLIC ?classString@@3PAV_jclass@@A ; classString -PUBLIC ?classByteArray@@3PAV_jclass@@A ; classByteArray -PUBLIC ?classCharArray@@3PAV_jclass@@A ; classCharArray -PUBLIC ?classHolder@@3PAV_jclass@@A ; classHolder -PUBLIC ?methodBooleanValue@@3PAU_jmethodID@@A ; methodBooleanValue -PUBLIC ?methodIntValue@@3PAU_jmethodID@@A ; methodIntValue -PUBLIC ?newIntegerInt@@3PAU_jmethodID@@A ; newIntegerInt -PUBLIC ?newBooleanBoolean@@3PAU_jmethodID@@A ; newBooleanBoolean -_BSS SEGMENT -?fieldFunction@@3PAU_jfieldID@@A DD 01H DUP (?) ; fieldFunction -?fieldModule@@3PAU_jfieldID@@A DD 01H DUP (?) ; fieldModule -?fieldFunctionHandle@@3PAU_jfieldID@@A DD 01H DUP (?) ; fieldFunctionHandle -?fieldModuleHandle@@3PAU_jfieldID@@A DD 01H DUP (?) ; fieldModuleHandle -?fieldLastErrorCode@@3PAU_jfieldID@@A DD 01H DUP (?) ; fieldLastErrorCode -?fieldHolderO@@3PAU_jfieldID@@A DD 01H DUP (?) ; fieldHolderO -?classBoolean@@3PAV_jclass@@A DD 01H DUP (?) ; classBoolean -?classInteger@@3PAV_jclass@@A DD 01H DUP (?) ; classInteger -?classString@@3PAV_jclass@@A DD 01H DUP (?) ; classString -?classByteArray@@3PAV_jclass@@A DD 01H DUP (?) ; classByteArray -?classCharArray@@3PAV_jclass@@A DD 01H DUP (?) ; classCharArray -?classHolder@@3PAV_jclass@@A DD 01H DUP (?) ; classHolder -?methodBooleanValue@@3PAU_jmethodID@@A DD 01H DUP (?) ; methodBooleanValue -?methodIntValue@@3PAU_jmethodID@@A DD 01H DUP (?) ; methodIntValue -?newIntegerInt@@3PAU_jmethodID@@A DD 01H DUP (?) ; newIntegerInt -?newBooleanBoolean@@3PAU_jmethodID@@A DD 01H DUP (?) ; newBooleanBoolean -_BSS ENDS -PUBLIC ??_C@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@ ; `string' -PUBLIC ??_C@_08JJOG@function?$AA@ ; `string' -PUBLIC ??_C@_06CODG@module?$AA@ ; `string' -PUBLIC ??_C@_01FLOP@I?$AA@ ; `string' -PUBLIC ??_C@_0P@LKIL@functionHandle?$AA@ ; `string' -PUBLIC ??_C@_0N@EFAA@moduleHandle?$AA@ ; `string' -PUBLIC ??_C@_0O@OMHL@lastErrorCode?$AA@ ; `string' -PUBLIC ??_C@_0BL@DALH@com?1eaio?1nativecall?1Holder?$AA@ ; `string' -PUBLIC ??_C@_0BD@GEDI@Ljava?1lang?1Object?$DL?$AA@ ; `string' -PUBLIC ??_C@_01PGHN@o?$AA@ ; `string' -PUBLIC ??_C@_0BC@IGNJ@java?1lang?1Boolean?$AA@ ; `string' -PUBLIC ??_C@_0BC@FBKL@java?1lang?1Integer?$AA@ ; `string' -PUBLIC ??_C@_0BB@LLFN@java?1lang?1String?$AA@ ; `string' -PUBLIC ??_C@_02LOEJ@?$FLB?$AA@ ; `string' -PUBLIC ??_C@_02BENO@?$FLC?$AA@ ; `string' -PUBLIC ??_C@_03KJOK@?$CI?$CJZ?$AA@ ; `string' -PUBLIC ??_C@_0N@KEBP@booleanValue?$AA@ ; `string' -PUBLIC ??_C@_03PPCD@?$CI?$CJI?$AA@ ; `string' -PUBLIC ??_C@_08JCMA@intValue?$AA@ ; `string' -PUBLIC ??_C@_04ECLF@?$CII?$CJV?$AA@ ; `string' -PUBLIC ??_C@_06KILP@?$DMinit?$DO?$AA@ ; `string' -PUBLIC ??_C@_04JFOE@?$CIZ?$CJV?$AA@ ; `string' -PUBLIC _Java_com_eaio_nativecall_NativeCall_initIDs@8 -; COMDAT ??_C@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@ -; File C:\Program Files\IBMJava13\include\jni.h -_DATA SEGMENT -??_C@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@ DB 'Ljava/lang/String;', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_08JJOG@function?$AA@ -_DATA SEGMENT -??_C@_08JJOG@function?$AA@ DB 'function', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_06CODG@module?$AA@ -_DATA SEGMENT -??_C@_06CODG@module?$AA@ DB 'module', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_01FLOP@I?$AA@ -_DATA SEGMENT -??_C@_01FLOP@I?$AA@ DB 'I', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_0P@LKIL@functionHandle?$AA@ -_DATA SEGMENT -??_C@_0P@LKIL@functionHandle?$AA@ DB 'functionHandle', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_0N@EFAA@moduleHandle?$AA@ -_DATA SEGMENT -??_C@_0N@EFAA@moduleHandle?$AA@ DB 'moduleHandle', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_0O@OMHL@lastErrorCode?$AA@ -_DATA SEGMENT -??_C@_0O@OMHL@lastErrorCode?$AA@ DB 'lastErrorCode', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_0BL@DALH@com?1eaio?1nativecall?1Holder?$AA@ -_DATA SEGMENT -??_C@_0BL@DALH@com?1eaio?1nativecall?1Holder?$AA@ DB 'com/eaio/nativecall' - DB '/Holder', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_0BD@GEDI@Ljava?1lang?1Object?$DL?$AA@ -_DATA SEGMENT -??_C@_0BD@GEDI@Ljava?1lang?1Object?$DL?$AA@ DB 'Ljava/lang/Object;', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_01PGHN@o?$AA@ -_DATA SEGMENT -??_C@_01PGHN@o?$AA@ DB 'o', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_0BC@IGNJ@java?1lang?1Boolean?$AA@ -_DATA SEGMENT -??_C@_0BC@IGNJ@java?1lang?1Boolean?$AA@ DB 'java/lang/Boolean', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_0BC@FBKL@java?1lang?1Integer?$AA@ -_DATA SEGMENT -??_C@_0BC@FBKL@java?1lang?1Integer?$AA@ DB 'java/lang/Integer', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_0BB@LLFN@java?1lang?1String?$AA@ -_DATA SEGMENT -??_C@_0BB@LLFN@java?1lang?1String?$AA@ DB 'java/lang/String', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_02LOEJ@?$FLB?$AA@ -_DATA SEGMENT -??_C@_02LOEJ@?$FLB?$AA@ DB '[B', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_02BENO@?$FLC?$AA@ -_DATA SEGMENT -??_C@_02BENO@?$FLC?$AA@ DB '[C', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_03KJOK@?$CI?$CJZ?$AA@ -_DATA SEGMENT -??_C@_03KJOK@?$CI?$CJZ?$AA@ DB '()Z', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_0N@KEBP@booleanValue?$AA@ -_DATA SEGMENT -??_C@_0N@KEBP@booleanValue?$AA@ DB 'booleanValue', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_03PPCD@?$CI?$CJI?$AA@ -_DATA SEGMENT -??_C@_03PPCD@?$CI?$CJI?$AA@ DB '()I', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_08JCMA@intValue?$AA@ -_DATA SEGMENT -??_C@_08JCMA@intValue?$AA@ DB 'intValue', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_04ECLF@?$CII?$CJV?$AA@ -_DATA SEGMENT -??_C@_04ECLF@?$CII?$CJV?$AA@ DB '(I)V', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_06KILP@?$DMinit?$DO?$AA@ -_DATA SEGMENT -??_C@_06KILP@?$DMinit?$DO?$AA@ DB '', 00H ; `string' -_DATA ENDS -; COMDAT ??_C@_04JFOE@?$CIZ?$CJV?$AA@ -_DATA SEGMENT -??_C@_04JFOE@?$CIZ?$CJV?$AA@ DB '(Z)V', 00H ; `string' -_DATA ENDS -_TEXT SEGMENT -_env$ = 8 -_cls$ = 12 -_Java_com_eaio_nativecall_NativeCall_initIDs@8 PROC NEAR - -; 71 : (JNIEnv *env, jclass cls) { - - push ebx - -; 72 : -; 73 : // NativeCall fields -; 74 : -; 75 : fieldFunction = env->GetFieldID(cls, "function", "Ljava/lang/String;"); - - mov ebx, DWORD PTR _cls$[esp] - push esi - mov esi, DWORD PTR _env$[esp+4] - push edi - mov edi, OFFSET FLAT:??_C@_0BD@DFD@Ljava?1lang?1String?$DL?$AA@ ; `string' - mov eax, DWORD PTR [esi] - push edi - push OFFSET FLAT:??_C@_08JJOG@function?$AA@ ; `string' - push ebx - push esi - call DWORD PTR [eax+376] - -; 76 : fieldModule = env->GetFieldID(cls, "module", "Ljava/lang/String;"); - - push edi - mov DWORD PTR ?fieldFunction@@3PAU_jfieldID@@A, eax ; fieldFunction - mov eax, DWORD PTR [esi] - push OFFSET FLAT:??_C@_06CODG@module?$AA@ ; `string' - push ebx - push esi - call DWORD PTR [eax+376] - -; 77 : -; 78 : fieldFunctionHandle = env->GetFieldID(cls, "functionHandle", "I"); - - mov edi, OFFSET FLAT:??_C@_01FLOP@I?$AA@ ; `string' - mov DWORD PTR ?fieldModule@@3PAU_jfieldID@@A, eax ; fieldModule - mov eax, DWORD PTR [esi] - push edi - push OFFSET FLAT:??_C@_0P@LKIL@functionHandle?$AA@ ; `string' - push ebx - push esi - call DWORD PTR [eax+376] - -; 79 : fieldModuleHandle = env-> GetFieldID(cls, "moduleHandle", "I"); - - push edi - mov DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A, eax ; fieldFunctionHandle - mov eax, DWORD PTR [esi] - push OFFSET FLAT:??_C@_0N@EFAA@moduleHandle?$AA@ ; `string' - push ebx - push esi - call DWORD PTR [eax+376] - -; 80 : -; 81 : fieldLastErrorCode = env->GetFieldID(cls, "lastErrorCode", "I"); - - push edi - mov DWORD PTR ?fieldModuleHandle@@3PAU_jfieldID@@A, eax ; fieldModuleHandle - mov eax, DWORD PTR [esi] - push OFFSET FLAT:??_C@_0O@OMHL@lastErrorCode?$AA@ ; `string' - push ebx - push esi - call DWORD PTR [eax+376] - mov DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A, eax ; fieldLastErrorCode - -; 82 : -; 83 : // Holder fields -; 84 : -; 85 : classHolder = (jclass) env->NewGlobalRef(env->FindClass("com/eaio/nativecall/Holder")); - - mov eax, DWORD PTR [esi] - push OFFSET FLAT:??_C@_0BL@DALH@com?1eaio?1nativecall?1Holder?$AA@ ; `string' - push esi - call DWORD PTR [eax+24] - mov ecx, DWORD PTR [esi] - push eax - push esi - call DWORD PTR [ecx+84] - -; 86 : fieldHolderO = env->GetFieldID(classHolder, "o", "Ljava/lang/Object;"); - - mov ecx, DWORD PTR [esi] - push OFFSET FLAT:??_C@_0BD@GEDI@Ljava?1lang?1Object?$DL?$AA@ ; `string' - push OFFSET FLAT:??_C@_01PGHN@o?$AA@ ; `string' - push eax - push esi - mov DWORD PTR ?classHolder@@3PAV_jclass@@A, eax ; classHolder - call DWORD PTR [ecx+376] - mov DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A, eax ; fieldHolderO - -; 87 : -; 88 : // Other classes -; 89 : -; 90 : classBoolean = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Boolean")); - - mov eax, DWORD PTR [esi] - push OFFSET FLAT:??_C@_0BC@IGNJ@java?1lang?1Boolean?$AA@ ; `string' - push esi - call DWORD PTR [eax+24] - mov ecx, DWORD PTR [esi] - push eax - push esi - call DWORD PTR [ecx+84] - mov DWORD PTR ?classBoolean@@3PAV_jclass@@A, eax ; classBoolean - -; 91 : /*classByte = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Byte")); -; 92 : classCharacter = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Character")); -; 93 : classShort = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Short"));*/ -; 94 : classInteger = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Integer")); - - mov eax, DWORD PTR [esi] - push OFFSET FLAT:??_C@_0BC@FBKL@java?1lang?1Integer?$AA@ ; `string' - push esi - call DWORD PTR [eax+24] - mov ecx, DWORD PTR [esi] - push eax - push esi - call DWORD PTR [ecx+84] - mov DWORD PTR ?classInteger@@3PAV_jclass@@A, eax ; classInteger - -; 95 : /*classLong = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Long")); -; 96 : classFloat = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Float")); -; 97 : classDouble = (jclass) env->NewGlobalRef(env->FindClass("java/lang/Double"));*/ -; 98 : classString = (jclass) env->NewGlobalRef(env->FindClass("java/lang/String")); - - mov eax, DWORD PTR [esi] - push OFFSET FLAT:??_C@_0BB@LLFN@java?1lang?1String?$AA@ ; `string' - push esi - call DWORD PTR [eax+24] - mov ecx, DWORD PTR [esi] - push eax - push esi - call DWORD PTR [ecx+84] - mov DWORD PTR ?classString@@3PAV_jclass@@A, eax ; classString - -; 99 : classByteArray = (jclass) env->NewGlobalRef(env->FindClass("[B")); - - mov eax, DWORD PTR [esi] - push OFFSET FLAT:??_C@_02LOEJ@?$FLB?$AA@ ; `string' - push esi - call DWORD PTR [eax+24] - mov ecx, DWORD PTR [esi] - push eax - push esi - call DWORD PTR [ecx+84] - mov DWORD PTR ?classByteArray@@3PAV_jclass@@A, eax ; classByteArray - -; 100 : classCharArray = (jclass) env->NewGlobalRef(env->FindClass("[C")); - - mov eax, DWORD PTR [esi] - push OFFSET FLAT:??_C@_02BENO@?$FLC?$AA@ ; `string' - push esi - call DWORD PTR [eax+24] - mov ecx, DWORD PTR [esi] - push eax - push esi - call DWORD PTR [ecx+84] - -; 101 : /*classIntArray = (jclass) env->NewGlobalRef(env->FindClass("[I"));*/ -; 102 : -; 103 : // Wrapper class methods -; 104 : -; 105 : methodBooleanValue = env->GetMethodID(classBoolean, -; 106 : "booleanValue", "()Z"); - - mov ecx, DWORD PTR [esi] - mov DWORD PTR ?classCharArray@@3PAV_jclass@@A, eax ; classCharArray - mov eax, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - push OFFSET FLAT:??_C@_03KJOK@?$CI?$CJZ?$AA@ ; `string' - push OFFSET FLAT:??_C@_0N@KEBP@booleanValue?$AA@ ; `string' - push eax - push esi - call DWORD PTR [ecx+132] - -; 107 : /*methodByteValue = env->GetMethodID(classByte, -; 108 : "byteValue", "()B"); -; 109 : methodCharValue = env->GetMethodID(classCharacter, -; 110 : "charValue", "()C"); -; 111 : methodShortValue = env->GetMethodID(classShort, -; 112 : "shortValue", "()S");*/ -; 113 : methodIntValue = env->GetMethodID(classInteger, -; 114 : "intValue", "()I"); - - mov ecx, DWORD PTR [esi] - mov DWORD PTR ?methodBooleanValue@@3PAU_jmethodID@@A, eax ; methodBooleanValue - mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - push OFFSET FLAT:??_C@_03PPCD@?$CI?$CJI?$AA@ ; `string' - push OFFSET FLAT:??_C@_08JCMA@intValue?$AA@ ; `string' - push eax - push esi - call DWORD PTR [ecx+132] - -; 115 : /*methodLongValue = env->GetMethodID(classLong, -; 116 : "longValue", "()J"); -; 117 : methodFloatValue = env->GetMethodID(classFloat, -; 118 : "floatValue", "()F"); -; 119 : methodDoubleValue = env->GetMethodID(classDouble, -; 120 : "doubleValue", "()D");*/ -; 121 : -; 122 : // Constructors -; 123 : -; 124 : newIntegerInt = env->GetMethodID(classInteger, "", "(I)V"); - - mov ecx, DWORD PTR [esi] - mov DWORD PTR ?methodIntValue@@3PAU_jmethodID@@A, eax ; methodIntValue - mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - mov edi, OFFSET FLAT:??_C@_06KILP@?$DMinit?$DO?$AA@ ; `string' - push OFFSET FLAT:??_C@_04ECLF@?$CII?$CJV?$AA@ ; `string' - push edi - push eax - push esi - call DWORD PTR [ecx+132] - -; 125 : newBooleanBoolean = env->GetMethodID(classBoolean, "", "(Z)V"); - - mov ecx, DWORD PTR [esi] - mov DWORD PTR ?newIntegerInt@@3PAU_jmethodID@@A, eax ; newIntegerInt - mov eax, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - push OFFSET FLAT:??_C@_04JFOE@?$CIZ?$CJV?$AA@ ; `string' - push edi - push eax - push esi - call DWORD PTR [ecx+132] - pop edi - pop esi - mov DWORD PTR ?newBooleanBoolean@@3PAU_jmethodID@@A, eax ; newBooleanBoolean - pop ebx - -; 126 : -; 127 : } - - ret 8 -_Java_com_eaio_nativecall_NativeCall_initIDs@8 ENDP -_TEXT ENDS -PUBLIC _Java_com_eaio_nativecall_NativeCall_initHandles@8 -EXTRN __imp__LoadLibraryA@4:NEAR -EXTRN __imp__GetLastError@0:NEAR -EXTRN __imp__FreeLibrary@4:NEAR -EXTRN __imp__GetProcAddress@8:NEAR -_TEXT SEGMENT -_env$ = 8 -_obj$ = 12 -_out$ = -1 -_moduleNameS$ = 12 -_functionNameS$ = -12 -_moduleName$ = 8 -_functionName$ = -8 -_addr$27794 = -16 -_Java_com_eaio_nativecall_NativeCall_initHandles@8 PROC NEAR - -; 135 : (JNIEnv *env, jobject obj) { - - push ebp - mov ebp, esp - sub esp, 16 ; 00000010H - -; 136 : -; 137 : bool out = JNI_TRUE; -; 138 : -; 139 : jstring moduleNameS = (jstring) env->GetObjectField(obj, fieldModule); - - mov eax, DWORD PTR ?fieldModule@@3PAU_jfieldID@@A ; fieldModule - push ebx - push esi - mov esi, DWORD PTR _env$[ebp] - push edi - mov edi, DWORD PTR _obj$[ebp] - mov ecx, DWORD PTR [esi] - push eax - push edi - push esi - mov BYTE PTR _out$[ebp], 1 - call DWORD PTR [ecx+380] - -; 140 : jstring functionNameS = (jstring) env->GetObjectField(obj, fieldFunction); - - mov ecx, DWORD PTR [esi] - mov DWORD PTR _moduleNameS$[ebp], eax - mov eax, DWORD PTR ?fieldFunction@@3PAU_jfieldID@@A ; fieldFunction - push eax - push edi - push esi - call DWORD PTR [ecx+380] - -; 141 : -; 142 : const char* moduleName = env->GetStringUTFChars(moduleNameS, 0); - - push 0 - mov DWORD PTR _functionNameS$[ebp], eax - push DWORD PTR _moduleNameS$[ebp] - mov eax, DWORD PTR [esi] - push esi - call DWORD PTR [eax+676] - -; 143 : const char* functionName = env->GetStringUTFChars(functionNameS, 0); - - push 0 - mov DWORD PTR _moduleName$[ebp], eax - push DWORD PTR _functionNameS$[ebp] - mov eax, DWORD PTR [esi] - push esi - call DWORD PTR [eax+676] - -; 144 : -; 145 : #ifdef _WINDOWS -; 146 : -; 147 : HMODULE mod = LoadLibrary(moduleName); - - push DWORD PTR _moduleName$[ebp] - mov DWORD PTR _functionName$[ebp], eax - call DWORD PTR __imp__LoadLibraryA@4 - mov ebx, eax - -; 148 : -; 149 : if (mod == NULL) { - - test ebx, ebx - jne SHORT $L27792 -$L27990: - -; 150 : /* no such module or DllMain returned FALSE */ -; 151 : env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - - call DWORD PTR __imp__GetLastError@0 - mov ecx, DWORD PTR [esi] - push eax - push DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode - push edi - push esi - call DWORD PTR [ecx+436] - -; 152 : out = JNI_FALSE; - - and BYTE PTR _out$[ebp], 0 - -; 153 : } -; 154 : else { - - jmp SHORT $L27982 -$L27792: - -; 155 : FARPROC addr = GetProcAddress(mod, functionName); - - push DWORD PTR _functionName$[ebp] - push ebx - call DWORD PTR __imp__GetProcAddress@8 - -; 156 : if (addr == NULL) { - - test eax, eax - mov DWORD PTR _addr$27794[ebp], eax - jne SHORT $L27795 - -; 157 : /* function not found */ -; 158 : FreeLibrary(mod); - - push ebx - call DWORD PTR __imp__FreeLibrary@4 - -; 159 : env->SetIntField(obj, fieldLastErrorCode, GetLastError()); -; 160 : out = JNI_FALSE; -; 161 : } -; 162 : else { - - jmp SHORT $L27990 -$L27795: - -; 163 : /* all ok */ -; 164 : env->SetIntField(obj, fieldModuleHandle, (jint) mod); - - mov eax, DWORD PTR [esi] - push ebx - push DWORD PTR ?fieldModuleHandle@@3PAU_jfieldID@@A ; fieldModuleHandle - push edi - push esi - call DWORD PTR [eax+436] - -; 165 : env->SetIntField(obj, fieldFunctionHandle, (jint) addr); - - push DWORD PTR _addr$27794[ebp] - mov eax, DWORD PTR [esi] - push DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A ; fieldFunctionHandle - push edi - push esi - call DWORD PTR [eax+436] -$L27982: - -; 166 : } -; 167 : } -; 168 : -; 169 : #endif -; 170 : -; 171 : env->ReleaseStringUTFChars(moduleNameS, moduleName); - - push DWORD PTR _moduleName$[ebp] - mov eax, DWORD PTR [esi] - push DWORD PTR _moduleNameS$[ebp] - push esi - call DWORD PTR [eax+680] - -; 172 : env->ReleaseStringUTFChars(functionNameS, functionName); - - push DWORD PTR _functionName$[ebp] - mov eax, DWORD PTR [esi] - push DWORD PTR _functionNameS$[ebp] - push esi - call DWORD PTR [eax+680] - -; 173 : -; 174 : return out; - - mov al, BYTE PTR _out$[ebp] - pop edi - pop esi - pop ebx - -; 175 : -; 176 : } - - leave - ret 8 -_Java_com_eaio_nativecall_NativeCall_initHandles@8 ENDP -_TEXT ENDS -PUBLIC _Java_com_eaio_nativecall_NativeCall_getLastError@8 -EXTRN __imp__FormatMessageA@28:NEAR -EXTRN __imp__LocalFree@4:NEAR -_TEXT SEGMENT -_env$ = 8 -_obj$ = 12 -_msgBufPtr$ = 8 -_Java_com_eaio_nativecall_NativeCall_getLastError@8 PROC NEAR - -; 184 : (JNIEnv *env, jobject obj) { - - push ebp - mov ebp, esp - -; 185 : -; 186 : jint lastError = env->GetIntField(obj, fieldLastErrorCode); - - mov eax, DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode - push esi - mov esi, DWORD PTR _env$[ebp] - push eax - push DWORD PTR _obj$[ebp] - mov ecx, DWORD PTR [esi] - push esi - call DWORD PTR [ecx+400] - -; 187 : -; 188 : if (lastError == 0) return NULL; - - xor ecx, ecx - cmp eax, ecx - jne SHORT $L27804 - xor eax, eax - jmp SHORT $L27802 -$L27804: - -; 189 : -; 190 : jstring out = NULL; -; 191 : -; 192 : #ifdef _WINDOWS -; 193 : -; 194 : LPVOID msgBufPtr = NULL; -; 195 : FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | -; 196 : FORMAT_MESSAGE_FROM_SYSTEM, NULL, lastError, 0, -; 197 : (LPSTR) &msgBufPtr, 0, NULL); - - push ecx - lea edx, DWORD PTR _msgBufPtr$[ebp] - push ecx - push edx - push ecx - push eax - push ecx - push 4352 ; 00001100H - mov DWORD PTR _msgBufPtr$[ebp], ecx - call DWORD PTR __imp__FormatMessageA@28 - -; 198 : -; 199 : out = env->NewStringUTF((char*) msgBufPtr); - - push DWORD PTR _msgBufPtr$[ebp] - mov eax, DWORD PTR [esi] - push esi - call DWORD PTR [eax+668] - -; 200 : -; 201 : LocalFree(msgBufPtr); - - push DWORD PTR _msgBufPtr$[ebp] - mov esi, eax - call DWORD PTR __imp__LocalFree@4 - -; 202 : -; 203 : #endif -; 204 : -; 205 : return out; - - mov eax, esi -$L27802: - pop esi - -; 206 : -; 207 : } - - pop ebp - ret 8 -_Java_com_eaio_nativecall_NativeCall_getLastError@8 ENDP -_TEXT ENDS -PUBLIC _Java_com_eaio_nativecall_NativeCall_destroy@8 -_TEXT SEGMENT -_env$ = 8 -_obj$ = 12 -_Java_com_eaio_nativecall_NativeCall_destroy@8 PROC NEAR - -; 216 : -; 217 : jint module = env->GetIntField(obj, fieldModuleHandle); - - mov eax, DWORD PTR ?fieldModuleHandle@@3PAU_jfieldID@@A ; fieldModuleHandle - push esi - mov esi, DWORD PTR _env$[esp] - push edi - mov edi, DWORD PTR _obj$[esp+4] - push eax - mov ecx, DWORD PTR [esi] - push edi - push esi - call DWORD PTR [ecx+400] - -; 218 : -; 219 : if (module == 0) return; - - test eax, eax - je SHORT $L28016 - -; 220 : -; 221 : #ifdef _WINDOWS -; 222 : -; 223 : if (FreeLibrary((HMODULE) module) == 0) { - - push eax - call DWORD PTR __imp__FreeLibrary@4 - test eax, eax - jne SHORT $L28007 - -; 224 : env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - - call DWORD PTR __imp__GetLastError@0 - mov ecx, DWORD PTR [esi] - push eax - push DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode - push edi - push esi - call DWORD PTR [ecx+436] -$L28007: - -; 225 : } -; 226 : -; 227 : #endif -; 228 : -; 229 : env->SetIntField(obj, fieldModuleHandle, 0); - - mov eax, DWORD PTR [esi] - push 0 - push DWORD PTR ?fieldModuleHandle@@3PAU_jfieldID@@A ; fieldModuleHandle - push edi - push esi - call DWORD PTR [eax+436] - -; 230 : env->SetIntField(obj, fieldFunctionHandle, 0); - - mov eax, DWORD PTR [esi] - push 0 - push DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A ; fieldFunctionHandle - push edi - push esi - call DWORD PTR [eax+436] -$L28016: - pop edi - pop esi - -; 231 : -; 232 : return; -; 233 : -; 234 : } - - ret 8 -_Java_com_eaio_nativecall_NativeCall_destroy@8 ENDP -_TEXT ENDS -END diff --git a/vendor/nativecall/0.4.1/cpp/Release/NativeCall.dll b/vendor/nativecall/0.4.1/cpp/Release/NativeCall.dll deleted file mode 100644 index 6e2cad120371488b6f94c2cc7d2a953a4a8db09f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7680 zcmeHL4QyN06+UiV$51yhsDVNYbEOOw3aJzOIX^Zfv~k-&(l|}(w3H@wVmEf`*qQT; z60McGCD9sQlck#~bwAR`G6^)gQEf%)5UdGdg+gI41nO3yb&LsT$=XO%kd}_O?_Arl z^V6Rs!DVWBexRqy!vAT=*+J?lSxOfdv*CS zP5GVSp`dQYM zG~=f(ZR5cZd7JMc_Q*pGsV z`IteB@uB2)hzGyxHlh`bE&)8wz_V0y5t%fp={3J$Eg|;`47sweT?TFw>%^UHoiYON zXeOc^xn7U#!TWyJ!Hf=_=_d5FRzftC8)=I)0w!z#K*(BxF|C!r%G`)A7zUx2<+;#V z9{V<}l@P5-n|}HFU-ZB@;_(RjuhCyeKa2htx&iUJ1pO}b^tM?UuNo-LBcof1>RoEo zpk%t$1O3?D9;aU2tnYDNR~Q1or-RP{a6M=jEOZHF|l} z$Mog@jDE7$Imz^sqY~3UJd1w0Dz(Sec?rrxoexhh9s1~WLMdV<|4gQ=t{7|?kW=v8 zpi?rH)56|#Ywv2-#xk!bf}>+ohIg==Dq?JVR*!~_Kg9B88-L4m<1h3&FR(Ee#&*qN z`3&NTUgrc8PmHae!|c1J%zgu^H)|g~9c#Ld?KfIZcAd#OI1GJz^voYqEA*Y`wViwP zl+~N{iK;5w-xC2UcAY~nJvh&H`t;O&CacfJ9@##wM)itL1V_IJj>&GdXHP7vYXLhp zVQ}qKaAbA=ksXoP)pYoa3{PxC8ocYdw2feRVk0Kw8(vx z7VoKQ0cHPggtUs|$BEl;&uAYjTX6 zR5{0}==teVtK^Y6;RiU%u7G-pQPs-BIR>{P=NM{_uYj(KuGYT{qd0!-mO+<*`WL4G zj~g)=+#wLPeoDjC4ssqta+yGKNy+fWfoIczgPg}e_`*~c;v7_?WcrT);y;Xs%RR{3 zuO4WJB7@@S>HLSL(+`T{t@C%y0P}W3dg}~uNgN!U0TxlI^ZTcRmCQj7OR>>@FL3@E zJfP-*F1QX@&LSe}{4U0pPRH&}Vvjo*YsI5BjhVwTF8c0tOnu!TN6xlnPB#v)pW}&L z*@M#Hs&$`ms+wfn_c#p$yhQ-VLCr{+7r2OU3HS-p4g>VaAX5Mw&>rWcnr$$`N2igx zZ<`TzEQ*WEUY|;1tC2~o)oeY8xfD!9uft4>+1N=%SFK9Cw;b8bfYgJdFL4Z{Kq4C; zY4kq`c{oAp(js$5lmx&eiuLa%1y z+J!TW6(H}2LcCs?P_vC}*@?RCaN+>##{sUdRd(a3D4A>>=dbP|d7Ue6O7~Fo<}3I> z9NlR~#v$o8*4M>%>uN=OhWJzk7g~z)z3l4c`x&H;MEOSEpIyF3zXJkMym#Re`X4CX zPk*fPh2XPNycfpR`S%y^Dg@HB;{EI;l)%qQ@m>sNMDhM9V)$Py-k+n&z2G7T-`th^ zDAMu&uyRYh{1wl4qHLp1YjFw4UWU|!tg{5e$PAc?VVnu}7&OtFVjCgWuQj7|;7_A5 z_ElbGs~Z<9;qIBI6lIBs)7QdfOsJha@*oeZBL9cIJ&kM0R^V{m$a<RXN89~7dA()mQP9>Z7dtO$Blmpt`_4bjm-Q>(*q5=sEP6?KY51&u{xA-SJAZg|o~--eNwDfb^8jeTUN2T1Y1VAPedpAvcKmlrwomw-|7*|DuJwP{t(x^d zx!ltxJ0p>Bgy<-(i}-xyfrf}D(m|^k>xzUM@ArBmzP2`^=QZVFk2it8pXe0kjh-Mg z(NnZ89BJ{$6`=Gq`G9@UxoM-b+>)Q`4F-w6r`h21wB8@&KkOw*$)IH@(T@aH2%2F} z@>|L={8z*|7oSjYKP5lr`_P|2m*EF9dhg9d68Z*wQ#ibs$bxSMA7cI@XfC4P`4yrq z==;%+qn|@xZh|mKo`)}0T3SFl%Ak!NIq-;YttS{1y4OG8dBjuS7;dTec>>}3kif$3 zV0~FgW~zE$yRR`S3l4KhUOs&)j*`Nw(5F6Y>Uq zZJ&mvtn}*S?r^~SDg87T3sm~DeV#qgjB~Uq=m|Bgs*K8&J1cxG;Ydd!_pEs6PB+`O zqAWf-I2KnE1wyjh6O8%}!7-3~E2B!F>+sI)IqmsRILAXAT57yc%=z=OR(v{6OvR9i z^)!$tQ-lH(q9#ZSP>_6(9HN~fUjB-Lq`{rUie4bb20Zay6LmyGYeCaOt>giH2ek2E zCc+p`4`gw~5j{+|f;K6;6u35O6l=C(ZKetdI_Bs3BcND|_aJ^I;8IW%AOUIsuLr#Y zTsB&mCfg0p2&AWEn(1!Hu!?7%c(V5F(ObY*4*Djs5?j&=iR_6c@o40 zA1m_z(r_m;X>cbqZ#LJNA2+M!#d*1Tb$NYxgLxx)XY$VHEy`b+za_sr|NHrG=P$EZ zE#(%krQPyv%R$TImgAN;E$>@&R)h6k>pJT(>yY&|>s!`$t?ygUTmNp=N;gWkNOws0 zNcTyl(u0y)+Ag(7veYFh(hsB`OTUnQCA}iOF1;oFK^m3LNgqg)Qijc7yTNvo?GD>Y zo7q-ktF(R1_Jr-I?K#_9wm;j>*)#=31-lBqSAV!+so{gc8|To-fJJQ o57|%HKeChKHb;&l&r#?ocT_nZb3EzzrQ=!08OOVhFM1gK1A(G7%HpH`x3Q7Aa5MMSF9PtmB3Tvcgr(k6O`kT8==_n~;2|V%mG#7b zuj?kgQ}wzNRh$ppew6gD_L}-p(@~a^2nk+I$U|NR-UB~=(tWtMq?ww72Nd%A>l^@> zN;ml1fOp;n?;6mrx!_$3y!T!3FeLwQ!Mg!?|8&7ae;>KvLHNiP7%ykqC@#pm+6C`M z;CWr}J`TKXE_q*c!P^4-didD@lAJM0^N~M^gW)#hGwQMG1 zb!E?$%SNVFmTyi5x(ZD*&^7)BMy)B2&*5*r z&^mDx7RvD#87hF3$qQW2H}v83TWIBOY5H=7*4X~0kJd!9T!E5WC$S-$@c*B1(?`9( zfDv%Es&(=SK-`zoa8U>2(8rC%?ULdlTIs}_UUHy$@$rk@wEBFZ+3=1xzuE<18ZW#R zZ+TiLk3m$LzLj_vWdO{ed9o5;Z#BA_G7RDOVA3PtZ8g^0K&#Pq}l<68c7;apSBw*@Cq&}v+2%9lf4fEr!U zn3th3;0zzv`Qz8)t>U4HbF8zpAK1|xHs1%0H~~Hf&JCSyTs5$Ip?~bD1KzQHW4W<8 z0&DzA+RIu6-JxB3p1SuoFY(^Ib?5=`%bl752;Z?lcdqHf-l5~;t7al+b*ynSS6v>1 zraVu?9(5wcLr_r{1nw~W$>fueKR~TJAitSfJ&+%y)^5nhsWk*SE@m=`LcX6`W02oU ztuI54PcoT-95*YOEI^*2)`O6DQ|mFvN2&Eq$VaGk3i3F$z708Uh%)&BA^N`;}t-nByhZ&iC06A_)GWj>;cT-D-5aL!L(*qUuN+zEL>=tST zz+#?zz#5=fFIfH5x)&_mj${%6i`6y^)=rA4V10pF6JTLnWpcR9)4|$Kv3alp)OrxC zZPa=MELQImVBJo!r@_L>E|V9*ViEr(SZrke1J*1p^}+9;?goo_-f^&} zKz1Y{y9YO!`$)NJ7PLx3Cp&tQWXdoqx>mJ-gJdE~CL&}WwyeI2R-Nt3o3(Ov)&V4| zrar6J97u%uAO=xwU3O|7PR&CE_Psvb_xkL8uW!Vtl)yv9+J2%&Nhb?NsZr6{W=3Wj z)oHVARQY3)m$q?dO{|6ZG7$1S3;sMR}DuHf)s`ltm1 zDM$BC#*FF4f?hT2e%M+4dEGQ20`8#CsTR?{c#9euK1 zo1UCrTy#La@W`s-xdOpi>@AmefBt&Xg4!kGylY@rBoE#;FunSC{SIb1?-|%B$)m7> z%W^zF}pg{OW2`35}QDIl-F(+&aoEj;0?WY>i+x?e!HLQg&| zAOnEl>u#&=2LxX~8(9JbC%2890t8=b8~GU^UIFIZ#*_UnA8do7ltP3x9c3p?F8CbhGnf#X<$Pra|9G5)w^#<$NwV$7{ zRogg>98rZc##X&^@ulzDsvuXfS>@~(_DJ&J28d};{yywPRtu9{g&eUiA0Uzk7h+74 z!G|BQRf}AO98ravp{@E>bL$Un)hVt*j;O+SL$W3}nOoA|vsJ5H#oixhzpzJ=2e&dz zPt zRk#Y+Gs;-gU$<3xu3{^NvtPJPOCF38rtNq2!m4W3Rp%oiv(M^xc@XTOz!ZKo@?>P@alcyrAK9uk zu0jshW#3})03dn%6o*VmURY*uw`40D77ba88C~lT$#o!e9mvBS$kTwVKpO}(&MHgS=5oN+etK<*!j-lbyUQT zb{);UvM(wm6e>oQV*g+&k&P>%Ks0#}vQ!}y2#1w+VLYlPXkoImaQA3Z%|T%-jVEaM z%?jE*sc1T^l=(ariUxAIXpFi=ui)BIWkwl|M{>%P;{-004~(X=qirp;*`eJPiD$A< zmQbT2u4dyYibn)I5>Zq&kx}q`9tz^YJ``lZ6=_i=5gAnl8XwNfdCB2SO5pKHC-8!~ z;gO7D2v{Vh498{WAf+DMA(<7=P zTrC7bMu{gNkj~qNP@Yp%7;QzofC!9WLe1tBaV&R7v$0|BR3Pt3rLx0qZ$c3SB9@4W zaj?e3ii7K!-u?(kipBE6VzHR0>AG5;s%f=lWzYhLbu(8pro$!pmqs1F7&`Fw>ZbHt wsA^~>?jnpn+S1LUw8f48_LoQUKSsab(*OVf diff --git a/vendor/nativecall/0.4.1/cpp/Release/RCa01380 b/vendor/nativecall/0.4.1/cpp/Release/RCa01380 deleted file mode 100644 index eb8e4b17d0d11871dd188167c7a6fac99cce7dcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4904 zcmds)U2hsk6o$`rrT&KvzDXq41%D)I?`*#078}c8(nyhzgTY3{V8PNRQh$7(cV;KM z3yYIFxggaFc6MgY*E{c=IkRIE8{5=|7FoqgR<&R49Z$_>Hn64LGcvW<7K~rhy5ZfS zFXoZlEhCzL%*eg#8PgNnoY^rt=5F-NJ|efSQ<5EKjhOp45_2@G@7zg`?JvHov?o03 zUod0fS_6CFQJ?0_85yHzYI|-*$$qpSY$q3+dVc0PW9EQaGi1DFc{X%^s!ywVb`wk{nXmlw@a(jTcdq$EqhB(hyOD>p{GSVcq0t9?+M<8cVtcCT}6E4 z*6p77W3UnqU84Sj|5Ku_5~uK})4$Je9p9i`?;VF_enqZ9_(LLByc!iW2QAx&qCE1k zEy2z+=BZrC?;g*>?Tk1?t+(IHOZcI^c*pm1x4YAx2|HNWyeMGEB0(>k6JIBNW4IC7 zvjkP2GjGs-Yz-Lb_g{y-cEwJt!ofavTRgJ!4^OmFvWt#O_%4Y$@-H$L!y5MOjpO)1 z!oL8e!kstSLd4TiReAC`kZWJcMebv7#d-mNt6> z`^bz_N$1d%JB029x{;LJxmKcejSsU-{>V!Q4{OZK*5>}M5VRECHX`h)()V|e$lWB~ zyHj$GA8EcSwwK=x!Hzf@IhJZo)Glw-)WYLiJeW8H9ebFPtorqUxt@Ik-^n^ ziN@bR;|{qgPXsGgS0^O=6mQ)q- z+WHk~+~j3m(^C*mPrP6bhX3N(WYR_!7l|6Nyku{a2{CSa;{Ux!n`NYzmNUP$f)XCd@KIPE}x9I$7`+uuJ hzwXYg>gscM=Cp#Xz_9P*F1%^?Ovy|!F@FgQ{sr%EaLfPz diff --git a/vendor/nativecall/0.4.1/cpp/Release/VoidCall.asm b/vendor/nativecall/0.4.1/cpp/Release/VoidCall.asm deleted file mode 100644 index 9e91a33..0000000 --- a/vendor/nativecall/0.4.1/cpp/Release/VoidCall.asm +++ /dev/null @@ -1,919 +0,0 @@ - TITLE C:\Documents and Settings\Administrator\My Documents\Software\NativeCall\src\cpp\VoidCall.cpp - .386P -include listing.inc -if @Version gt 510 -.model FLAT -else -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -CONST SEGMENT DWORD USE32 PUBLIC 'CONST' -CONST ENDS -_BSS SEGMENT DWORD USE32 PUBLIC 'BSS' -_BSS ENDS -_TLS SEGMENT DWORD USE32 PUBLIC 'TLS' -_TLS ENDS -; COMDAT ??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ -_DATA SEGMENT DWORD USE32 PUBLIC 'DATA' -_DATA ENDS -; COMDAT ?FindClass@JNIEnv_@@QAEPAV_jclass@@PBD@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?ThrowNew@JNIEnv_@@QAEJPAV_jclass@@PBD@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?IsInstanceOf@JNIEnv_@@QAEEPAV_jobject@@PAV_jclass@@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetObjectField@JNIEnv_@@QAEPAV_jobject@@PAV2@PAU_jfieldID@@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetIntField@JNIEnv_@@QAEJPAV_jobject@@PAU_jfieldID@@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?SetObjectField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@0@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?SetIntField@JNIEnv_@@QAEXPAV_jobject@@PAU_jfieldID@@J@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetArrayLength@JNIEnv_@@QAEJPAV_jarray@@@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetObjectArrayElement@JNIEnv_@@QAEPAV_jobject@@PAV_jobjectArray@@J@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?GetPrimitiveArrayCritical@JNIEnv_@@QAEPAXPAV_jarray@@PAE@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -; COMDAT ?ReleasePrimitiveArrayCritical@JNIEnv_@@QAEXPAV_jarray@@PAXJ@Z -_TEXT SEGMENT PARA USE32 PUBLIC 'CODE' -_TEXT ENDS -FLAT GROUP _DATA, CONST, _BSS - ASSUME CS: FLAT, DS: FLAT, SS: FLAT -endif -PUBLIC _Java_com_eaio_nativecall_VoidCall_executeCall@8 -EXTRN ?fieldFunctionHandle@@3PAU_jfieldID@@A:DWORD ; fieldFunctionHandle -EXTRN ?fieldLastErrorCode@@3PAU_jfieldID@@A:DWORD ; fieldLastErrorCode -EXTRN __imp__GetLastError@0:NEAR -_TEXT SEGMENT -_env$ = 8 -_obj$ = 12 -_functionHandle$ = 8 -_Java_com_eaio_nativecall_VoidCall_executeCall@8 PROC NEAR - -; 79 : (JNIEnv *env, jobject obj) { - - push ebp - mov ebp, esp - -; 80 : -; 81 : jint functionHandle = env->GetIntField(obj, fieldFunctionHandle); - - mov eax, DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A ; fieldFunctionHandle - push esi - mov esi, DWORD PTR _env$[ebp] - push eax - push DWORD PTR _obj$[ebp] - mov ecx, DWORD PTR [esi] - push esi - call DWORD PTR [ecx+400] - mov DWORD PTR _functionHandle$[ebp], eax - -; 82 : -; 83 : #ifdef _WINDOWS -; 84 : #ifdef _X86_ -; 85 : -; 86 : __asm { -; 87 : -; 88 : call functionHandle - - call DWORD PTR _functionHandle$[ebp] - -; 89 : -; 90 : } -; 91 : -; 92 : #endif -; 93 : #endif -; 94 : -; 95 : env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - - call DWORD PTR __imp__GetLastError@0 - mov ecx, DWORD PTR [esi] - push eax - push DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode - push DWORD PTR _obj$[ebp] - push esi - call DWORD PTR [ecx+436] - -; 96 : -; 97 : } - - pop esi - pop ebp - ret 8 -_Java_com_eaio_nativecall_VoidCall_executeCall@8 ENDP -_TEXT ENDS -PUBLIC ??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ ; `string' -PUBLIC _Java_com_eaio_nativecall_VoidCall_executeCall0@12 -PUBLIC ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ; JNIEnv_::NewObject -PUBLIC ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallBooleanMethod -PUBLIC ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallIntMethod -EXTRN ?fieldHolderO@@3PAU_jfieldID@@A:DWORD ; fieldHolderO -EXTRN ?classBoolean@@3PAV_jclass@@A:DWORD ; classBoolean -EXTRN ?classInteger@@3PAV_jclass@@A:DWORD ; classInteger -EXTRN ?classByteArray@@3PAV_jclass@@A:DWORD ; classByteArray -EXTRN ?classCharArray@@3PAV_jclass@@A:DWORD ; classCharArray -EXTRN ?classHolder@@3PAV_jclass@@A:DWORD ; classHolder -EXTRN ?methodBooleanValue@@3PAU_jmethodID@@A:DWORD ; methodBooleanValue -EXTRN ?methodIntValue@@3PAU_jmethodID@@A:DWORD ; methodIntValue -EXTRN ?newIntegerInt@@3PAU_jmethodID@@A:DWORD ; newIntegerInt -EXTRN ?newBooleanBoolean@@3PAU_jmethodID@@A:DWORD ; newBooleanBoolean -EXTRN ??2@YAPAXI@Z:NEAR ; operator new -EXTRN ??3@YAXPAX@Z:NEAR ; operator delete -EXTRN _memset:NEAR -; COMDAT ??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ -; File C:\Program Files\IBMJava13\include\jni.h -_DATA SEGMENT -??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ DB 'java/lang/OutOfMemor' - DB 'yError', 00H ; `string' -_DATA ENDS -_TEXT SEGMENT -_env$ = 8 -_obj$ = 12 -_params$ = 16 -_len$ = -28 -_arrays$ = -20 -_param$ = -24 -_i$ = 8 -_intArg$27769 = -24 -_byteArrayArg$27772 = -4 -_charArrayArg$27778 = -8 -_tempArg$27785 = -24 -_intPtr$27790 = -24 -_byteArrayArg$27796 = -12 -_charArrayArg$27802 = -16 -_tempPtr$27809 = -24 -_functionHandle$ = 8 -_j$ = 8 -_Java_com_eaio_nativecall_VoidCall_executeCall0@12 PROC NEAR - -; 105 : (JNIEnv *env, jobject obj, jobjectArray params) { - - push ebp - mov ebp, esp - sub esp, 28 ; 0000001cH - push ebx - push esi - -; 106 : -; 107 : const int len = env->GetArrayLength(params); - - mov esi, DWORD PTR _env$[ebp] - push edi - push DWORD PTR _params$[ebp] - mov eax, DWORD PTR [esi] - push esi - call DWORD PTR [eax+684] - mov ebx, eax - -; 108 : -; 109 : int* arrays = NULL; -; 110 : if (!(arrays = new int[len])) { - - mov edi, ebx - mov DWORD PTR _len$[ebp], ebx - shl edi, 2 - push edi - call ??2@YAPAXI@Z ; operator new - test eax, eax - pop ecx - mov DWORD PTR _arrays$[ebp], eax - jne SHORT $L27758 - -; 111 : env->ThrowNew(env->FindClass("java/lang/OutOfMemoryError"), NULL); - - mov eax, DWORD PTR [esi] - push OFFSET FLAT:??_C@_0BL@NKOM@java?1lang?1OutOfMemoryError?$AA@ ; `string' - push esi - call DWORD PTR [eax+24] - mov ecx, DWORD PTR [esi] - push 0 - push eax - push esi - call DWORD PTR [ecx+56] - -; 112 : return; - - jmp $L28021 -$L27758: - -; 113 : } -; 114 : memset(arrays, 0, (sizeof(int) * len)); - - push edi - push 0 - push eax - call _memset - -; 115 : -; 116 : jobject param; -; 117 : -; 118 : for (int i = len - 1; i >= 0; i--) { - - lea eax, DWORD PTR [ebx-1] - add esp, 12 ; 0000000cH - test eax, eax - mov DWORD PTR _i$[ebp], eax - jl $L27765 - mov ecx, DWORD PTR _arrays$[ebp] - lea edi, DWORD PTR [ecx+eax*4] - jmp SHORT $L27763 -$L28028: - -; 113 : } -; 114 : memset(arrays, 0, (sizeof(int) * len)); - - mov eax, DWORD PTR _i$[ebp] -$L27763: - -; 119 : -; 120 : param = env->GetObjectArrayElement(params, i); - - mov ecx, DWORD PTR [esi] - push eax - push DWORD PTR _params$[ebp] - push esi - call DWORD PTR [ecx+692] - mov ebx, eax - -; 121 : -; 122 : if (param == NULL) { - - test ebx, ebx - jne SHORT $L27766 - -; 123 : _push(0); - - push 0 - -; 124 : } -; 125 : else if (env->IsInstanceOf(param, classInteger)) { - - jmp $L27764 -$L27766: - mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27768 - -; 126 : int intArg = env->CallIntMethod(param, methodIntValue); - - push DWORD PTR ?methodIntValue@@3PAU_jmethodID@@A ; methodIntValue - push ebx - push esi - call ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallIntMethod - add esp, 12 ; 0000000cH - mov DWORD PTR _intArg$27769[ebp], eax - -; 127 : _push(intArg) - - push DWORD PTR _intArg$27769[ebp] - -; 128 : } -; 129 : else if (env->IsInstanceOf(param, classByteArray)) { - - jmp $L27764 -$L27768: - mov eax, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27771 - -; 130 : char* byteArrayArg = (char*) env->GetPrimitiveArrayCritical((jarray) param, 0); - - mov eax, DWORD PTR [esi] - push 0 - push ebx - push esi - call DWORD PTR [eax+888] - mov DWORD PTR _byteArrayArg$27772[ebp], eax - -; 131 : arrays[i] = (int) &byteArrayArg; - - lea eax, DWORD PTR _byteArrayArg$27772[ebp] - mov DWORD PTR [edi], eax - -; 132 : _push(byteArrayArg) - - push DWORD PTR _byteArrayArg$27772[ebp] - -; 133 : } -; 134 : else if (env->IsInstanceOf(param, classCharArray)) { - - jmp $L27764 -$L27771: - mov eax, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27777 - -; 135 : unsigned short* charArrayArg = (unsigned short*) env->GetPrimitiveArrayCritical( -; 136 : (jarray) param, 0); - - mov eax, DWORD PTR [esi] - push 0 - push ebx - push esi - call DWORD PTR [eax+888] - mov DWORD PTR _charArrayArg$27778[ebp], eax - -; 137 : arrays[i] = (int) &charArrayArg; - - lea eax, DWORD PTR _charArrayArg$27778[ebp] - mov DWORD PTR [edi], eax - -; 138 : _push(charArrayArg) - - push DWORD PTR _charArrayArg$27778[ebp] - -; 139 : } -; 140 : else if (env->IsInstanceOf(param, classBoolean)) { - - jmp $L27764 -$L27777: - mov eax, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27783 - -; 141 : jboolean booleanArg = env->CallBooleanMethod(param, methodBooleanValue); - - push DWORD PTR ?methodBooleanValue@@3PAU_jmethodID@@A ; methodBooleanValue - push ebx - push esi - call ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallBooleanMethod - add esp, 12 ; 0000000cH - -; 142 : int tempArg = (booleanArg == JNI_FALSE ? 0 : 1); - - neg al - sbb eax, eax - neg eax - mov DWORD PTR _tempArg$27785[ebp], eax - -; 143 : _push(tempArg) - - push DWORD PTR _tempArg$27785[ebp] - -; 144 : } -; 145 : else if (env->IsInstanceOf(param, classHolder)) { - - jmp $L27764 -$L27783: - mov eax, DWORD PTR ?classHolder@@3PAV_jclass@@A ; classHolder - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je $L27764 - -; 146 : -; 147 : /* Holder */ -; 148 : -; 149 : jobject o = env->GetObjectField(param, fieldHolderO); - - mov eax, DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+380] - -; 150 : -; 151 : if (env->IsInstanceOf(o, classInteger)) { - - mov ecx, DWORD PTR [esi] - mov ebx, eax - mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27789 - -; 152 : int *intPtr = new int; - - push 4 - call ??2@YAPAXI@Z ; operator new - pop ecx - mov DWORD PTR _intPtr$27790[ebp], eax - -; 153 : *intPtr = env->CallIntMethod(o, methodIntValue); - - push DWORD PTR ?methodIntValue@@3PAU_jmethodID@@A ; methodIntValue - push ebx - push esi - call ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallIntMethod - mov ecx, DWORD PTR _intPtr$27790[ebp] - add esp, 12 ; 0000000cH - -; 154 : arrays[i] = (int) intPtr; - - mov DWORD PTR [edi], ecx - mov DWORD PTR [ecx], eax - -; 155 : _push(intPtr); - - push DWORD PTR _intPtr$27790[ebp] - -; 156 : } -; 157 : else if (env->IsInstanceOf(o, classByteArray)) { - - jmp $L27764 -$L27789: - mov eax, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27795 - -; 158 : char* byteArrayArg = (char*) env->GetPrimitiveArrayCritical((jarray) o, 0); - - mov eax, DWORD PTR [esi] - push 0 - push ebx - push esi - call DWORD PTR [eax+888] - mov DWORD PTR _byteArrayArg$27796[ebp], eax - -; 159 : arrays[i] = (int) &byteArrayArg; - - lea eax, DWORD PTR _byteArrayArg$27796[ebp] - mov DWORD PTR [edi], eax - -; 160 : _push(byteArrayArg) - - push DWORD PTR _byteArrayArg$27796[ebp] - -; 161 : } -; 162 : else if (env->IsInstanceOf(o, classCharArray)) { - - jmp SHORT $L27764 -$L27795: - mov eax, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27801 - -; 163 : unsigned short* charArrayArg = (unsigned short*) env->GetPrimitiveArrayCritical( -; 164 : (jarray) o, 0); - - mov eax, DWORD PTR [esi] - push 0 - push ebx - push esi - call DWORD PTR [eax+888] - mov DWORD PTR _charArrayArg$27802[ebp], eax - -; 165 : arrays[i] = (int) &charArrayArg; - - lea eax, DWORD PTR _charArrayArg$27802[ebp] - mov DWORD PTR [edi], eax - -; 166 : _push(charArrayArg) - - push DWORD PTR _charArrayArg$27802[ebp] - -; 167 : } -; 168 : else if (env->IsInstanceOf(o, classBoolean)) { - - jmp SHORT $L27764 -$L27801: - mov eax, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - mov ecx, DWORD PTR [esi] - push eax - push ebx - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27764 - -; 169 : jboolean booleanArg = env->CallBooleanMethod(o, methodBooleanValue); - - push DWORD PTR ?methodBooleanValue@@3PAU_jmethodID@@A ; methodBooleanValue - push ebx - push esi - call ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ; JNIEnv_::CallBooleanMethod - -; 170 : int *tempPtr = new int; - - push 4 - mov bl, al - call ??2@YAPAXI@Z ; operator new - add esp, 16 ; 00000010H - -; 171 : *tempPtr = (booleanArg == JNI_FALSE ? 0 : 1); - - xor ecx, ecx - test bl, bl - setne cl - mov DWORD PTR _tempPtr$27809[ebp], eax - mov DWORD PTR [eax], ecx - -; 172 : arrays[i] = (int) tempPtr; - - mov DWORD PTR [edi], eax - -; 173 : _push(tempPtr); - - push DWORD PTR _tempPtr$27809[ebp] - -; 172 : arrays[i] = (int) tempPtr; - -$L27764: - dec DWORD PTR _i$[ebp] - sub edi, 4 - cmp DWORD PTR _i$[ebp], 0 - jge $L28028 - -; 115 : -; 116 : jobject param; -; 117 : -; 118 : for (int i = len - 1; i >= 0; i--) { - - mov ebx, DWORD PTR _len$[ebp] -$L27765: - -; 174 : } -; 175 : -; 176 : /* end Holder */ -; 177 : -; 178 : } -; 179 : -; 180 : } -; 181 : -; 182 : jint functionHandle = env->GetIntField(obj, fieldFunctionHandle); - - mov eax, DWORD PTR ?fieldFunctionHandle@@3PAU_jfieldID@@A ; fieldFunctionHandle - mov ecx, DWORD PTR [esi] - push eax - push DWORD PTR _obj$[ebp] - push esi - call DWORD PTR [ecx+400] - mov DWORD PTR _functionHandle$[ebp], eax - -; 183 : -; 184 : #ifdef _WINDOWS -; 185 : #ifdef _X86_ -; 186 : -; 187 : __asm { -; 188 : -; 189 : call functionHandle - - call DWORD PTR _functionHandle$[ebp] - -; 190 : -; 191 : } -; 192 : -; 193 : #endif -; 194 : #endif -; 195 : -; 196 : for (int j = 0; j < len; ++j) { - - and DWORD PTR _j$[ebp], 0 - test ebx, ebx - jle $L27817 - -; 174 : } -; 175 : -; 176 : /* end Holder */ -; 177 : -; 178 : } -; 179 : -; 180 : } -; 181 : -; 182 : jint functionHandle = env->GetIntField(obj, fieldFunctionHandle); - - mov ebx, DWORD PTR _arrays$[ebp] -$L27815: - -; 197 : param = env->GetObjectArrayElement(params, j); - - push DWORD PTR _j$[ebp] - mov eax, DWORD PTR [esi] - push DWORD PTR _params$[ebp] - push esi - call DWORD PTR [eax+692] - mov edi, eax - -; 198 : if (param == NULL) {} - - test edi, edi - mov DWORD PTR _param$[ebp], edi - je $L27816 - -; 199 : else if (env->IsInstanceOf(param, classByteArray) || env->IsInstanceOf(param, classCharArray)) { - - mov eax, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray - mov ecx, DWORD PTR [esi] - push eax - push edi - push esi - call DWORD PTR [ecx+128] - test al, al - jne $L27833 - mov eax, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray - mov ecx, DWORD PTR [esi] - push eax - push edi - push esi - call DWORD PTR [ecx+128] - test al, al - jne $L27833 - -; 201 : } -; 202 : else if (env->IsInstanceOf(param, classHolder)) { - - mov eax, DWORD PTR ?classHolder@@3PAV_jclass@@A ; classHolder - mov ecx, DWORD PTR [esi] - push eax - push edi - push esi - call DWORD PTR [ecx+128] - test al, al - je $L27816 - -; 203 : -; 204 : jobject o = env->GetObjectField(param, fieldHolderO); - - mov eax, DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO - mov ecx, DWORD PTR [esi] - push eax - push edi - push esi - call DWORD PTR [ecx+380] - -; 205 : -; 206 : if (env->IsInstanceOf(o, classInteger)) { - - mov ecx, DWORD PTR [esi] - mov edi, eax - mov eax, DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger - push eax - push edi - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27827 - -; 207 : int* out = (int*) arrays[j]; - - mov edi, DWORD PTR [ebx] - -; 208 : env->SetObjectField(param, fieldHolderO, env->NewObject(classInteger, newIntegerInt, *out)); - - push DWORD PTR [edi] - push DWORD PTR ?newIntegerInt@@3PAU_jmethodID@@A ; newIntegerInt - push DWORD PTR ?classInteger@@3PAV_jclass@@A ; classInteger -$L28031: - push esi - call ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ; JNIEnv_::NewObject - add esp, 16 ; 00000010H - mov ecx, DWORD PTR [esi] - push eax - push DWORD PTR ?fieldHolderO@@3PAU_jfieldID@@A ; fieldHolderO - push DWORD PTR _param$[ebp] - push esi - call DWORD PTR [ecx+416] - -; 209 : delete out; - - push edi - call ??3@YAXPAX@Z ; operator delete - pop ecx - -; 210 : } -; 211 : else if (env->IsInstanceOf(o, classByteArray) || env->IsInstanceOf(o, classCharArray)) { - - jmp SHORT $L27816 -$L27827: - mov eax, DWORD PTR ?classByteArray@@3PAV_jclass@@A ; classByteArray - mov ecx, DWORD PTR [esi] - push eax - push edi - push esi - call DWORD PTR [ecx+128] - test al, al - jne SHORT $L27833 - mov eax, DWORD PTR ?classCharArray@@3PAV_jclass@@A ; classCharArray - mov ecx, DWORD PTR [esi] - push eax - push edi - push esi - call DWORD PTR [ecx+128] - test al, al - jne SHORT $L27833 - -; 212 : env->ReleasePrimitiveArrayCritical((jarray) o, (void*) arrays[j], 0); -; 213 : } -; 214 : else if (env->IsInstanceOf(o, classBoolean)) { - - mov eax, DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - mov ecx, DWORD PTR [esi] - push eax - push edi - push esi - call DWORD PTR [ecx+128] - test al, al - je SHORT $L27816 - -; 215 : int* out = (int*) arrays[j]; - - mov edi, DWORD PTR [ebx] - -; 216 : env->SetObjectField(param, fieldHolderO, env->NewObject(classBoolean, newBooleanBoolean, (*out == 0 ? JNI_FALSE : JNI_TRUE))); - - xor eax, eax - cmp DWORD PTR [edi], eax - setne al - push eax - push DWORD PTR ?newBooleanBoolean@@3PAU_jmethodID@@A ; newBooleanBoolean - push DWORD PTR ?classBoolean@@3PAV_jclass@@A ; classBoolean - -; 217 : delete out; - - jmp SHORT $L28031 -$L27833: - -; 200 : env->ReleasePrimitiveArrayCritical((jarray) param, (void*) arrays[j], 0); - - mov eax, DWORD PTR [esi] - push 0 - push DWORD PTR [ebx] - push edi - push esi - call DWORD PTR [eax+892] -$L27816: - inc DWORD PTR _j$[ebp] - mov eax, DWORD PTR _j$[ebp] - add ebx, 4 - cmp eax, DWORD PTR _len$[ebp] - jl $L27815 -$L27817: - -; 218 : } -; 219 : -; 220 : } -; 221 : -; 222 : } -; 223 : -; 224 : delete [] arrays; - - push DWORD PTR _arrays$[ebp] - call ??3@YAXPAX@Z ; operator delete - pop ecx - -; 225 : -; 226 : env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - - call DWORD PTR __imp__GetLastError@0 - mov ecx, DWORD PTR [esi] - push eax - push DWORD PTR ?fieldLastErrorCode@@3PAU_jfieldID@@A ; fieldLastErrorCode - push DWORD PTR _obj$[ebp] - push esi - call DWORD PTR [ecx+436] -$L28021: - -; 227 : -; 228 : } - - pop edi - pop esi - pop ebx - leave - ret 12 ; 0000000cH -_Java_com_eaio_nativecall_VoidCall_executeCall0@12 ENDP -_TEXT ENDS -; COMDAT ?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ -_TEXT SEGMENT -_this$ = 8 -_clazz$ = 12 -_methodID$ = 16 -?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ PROC NEAR ; JNIEnv_::NewObject, COMDAT - -; 835 : va_list args; -; 836 : jobject result; -; 837 : va_start(args, methodID); -; 838 : result = functions->NewObjectV(this,clazz,methodID,args); - - mov eax, DWORD PTR _this$[esp-4] - lea edx, DWORD PTR _methodID$[esp] - push edx - push DWORD PTR _methodID$[esp] - mov ecx, DWORD PTR [eax] - push DWORD PTR _clazz$[esp+4] - push eax - call DWORD PTR [ecx+116] - -; 839 : va_end(args); -; 840 : return result; -; 841 : } - - ret 0 -?NewObject@JNIEnv_@@QAAPAV_jobject@@PAV_jclass@@PAU_jmethodID@@ZZ ENDP ; JNIEnv_::NewObject -_TEXT ENDS -; COMDAT ?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ -_TEXT SEGMENT -_this$ = 8 -_obj$ = 12 -_methodID$ = 16 -?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ PROC NEAR ; JNIEnv_::CallBooleanMethod, COMDAT - -; 882 : va_list args; -; 883 : jboolean result; -; 884 : va_start(args,methodID); -; 885 : result = functions->CallBooleanMethodV(this,obj,methodID,args); - - mov eax, DWORD PTR _this$[esp-4] - lea edx, DWORD PTR _methodID$[esp] - push edx - push DWORD PTR _methodID$[esp] - mov ecx, DWORD PTR [eax] - push DWORD PTR _obj$[esp+4] - push eax - call DWORD PTR [ecx+152] - -; 886 : va_end(args); -; 887 : return result; -; 888 : } - - ret 0 -?CallBooleanMethod@JNIEnv_@@QAAEPAV_jobject@@PAU_jmethodID@@ZZ ENDP ; JNIEnv_::CallBooleanMethod -_TEXT ENDS -; COMDAT ?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ -_TEXT SEGMENT -_this$ = 8 -_obj$ = 12 -_methodID$ = 16 -?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ PROC NEAR ; JNIEnv_::CallIntMethod, COMDAT - -; 950 : va_list args; -; 951 : jint result; -; 952 : va_start(args,methodID); -; 953 : result = functions->CallIntMethodV(this,obj,methodID,args); - - mov eax, DWORD PTR _this$[esp-4] - lea edx, DWORD PTR _methodID$[esp] - push edx - push DWORD PTR _methodID$[esp] - mov ecx, DWORD PTR [eax] - push DWORD PTR _obj$[esp+4] - push eax - call DWORD PTR [ecx+200] - -; 954 : va_end(args); -; 955 : return result; -; 956 : } - - ret 0 -?CallIntMethod@JNIEnv_@@QAAJPAV_jobject@@PAU_jmethodID@@ZZ ENDP ; JNIEnv_::CallIntMethod -_TEXT ENDS -END diff --git a/vendor/nativecall/0.4.1/cpp/Release/VoidCall.obj b/vendor/nativecall/0.4.1/cpp/Release/VoidCall.obj deleted file mode 100644 index 3edebca899b9e4043a8eeb99c1ddc7ad93c8db9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3885 zcmbVPe{2&~9Dm(Pci>#B4h6wb!X#vYF_`=ikY3pi7_M8PtYgq|-rC#N()PCYZfpXH zW?M`-YK95Q9~wjx6c{#*oZcYd06Wf)}irt3X z0bniY?a*~`sCylbUAcVN@9uf>382?A555!gIphP?1H9 z*{%Q6u$tYl(b=p{UBvbEs|w@Qlv1_Kubmx+%BDC*Yi6{?cu+0#YMU?s1sMJuhL5&g zWe^w-OfC0e+ZIi6s5ZYg{3$F9byWQ~)pqO3FGVdGY&JB~n&PIErK+t9zxp-r616OX zynb!})`>TY5o&=KqM5GM2CkP5jevLinHlh-dZyAlUY#sfIR;0eIIw@>VrWb$iJ*z= zpmY(l!mtkpUjaBcA}^x>`}~9!I8$6kQ!*3h3ac+yZ4m_K!+j71n@ z98anzgLAj1EI9e|Ief3cJJbs1#hm<|G z)1&%yIBISTj@i#$fp}94w$ErDX5csLz$pgV)AoCsrncQO2WXp_R~=5mX8N zqXY@iJKH)L{P&qmcXfct!2dJE&F91;=Hvu_`-j9H&w=qD}+aG|aw-xa5pxzn)QEvhu z>a7b9_0|K3^1TCy*5GGAlw}$aWpO}(X;fFT41{994!Jw=O_Ya$@-`e?_A%c$W0v{ zF(xJYxkN%rAhoW-nm$ZSKBXN1AgKdKY^RHRnV6dwm5qp#)uKl88^cS zSMq*F-@;fyBRpXxsH!6zH7+LiG=w^Bwc7%9Qc#JBaXIM};vuI`l;v=|GZ}D)V&Ql= zDJKM3N(4Op&a7U*Cw0ijg@hPrB!?(IF9XR$Fc9qS4j6}N6}*5?b7SG~?XC)kHm`mJ zY2dvWneR%lmQb+;-jQM~O$q1oe$Pq_o_kq|!Q;dU>5ckg^CWF~lEFL)-j+tA zJXiB1<9U(=RFxPOAwDL?lA>|j#4($1m3UzlTa0D)EBEn-Mh>v0bRMij;lV63;W6D} z@eCAO@aDp8=LL4HVS^C<7~p0_#L9FBT>#Qz3%-RKNmvnw%A*_Ox5%wfK?`K!`d=5d{w$zxua$IKAsXP`_Ed(T9!j<6UFH3&(Wd_ZcY zkjSz%UUxGeAtUv5EbB%*AC7hN{2o!xYO>Y3?QSI=l*3YdFKpmwLF0$I`{FAsa>d2t zyCf+p3UU2m1QiqIE-6H#a=B{QR`(&V`w)AWnAFE*u~SUIqo6uTXs;9viHRmd!IY#c z7!{I9I!=cDe1wQ_1zgmz9*tj!D%n)$ghUL?G0!0(qqSW^!ktJ6{rOI)b-yg$XIys` zmmd&-UWj}LF20uKt9Lc9jW0HNSbUJUHsF)QwITN?aaFk8EONOvLW!Zm^|-{1;_;^T z2>iih_chjY@m`)~_q$;fa+Ii?B`) - * - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - */ - -#include -#include "com_eaio_nativecall_VoidCall.h" - -#ifdef _WINDOWS -#include -#include -#endif - -#ifdef _WINDOWS -#ifdef _X86_ - -#define _push(x) __asm { push x }; - -#endif -#endif - -// NativeCall fields - -extern jfieldID fieldFunction, fieldModule, fieldFunctionHandle, - fieldModuleHandle, fieldLastErrorCode; - -// Holder fields - -extern jfieldID fieldHolderO; - -// Classes - -extern jclass classBoolean,/* classByte, classCharacter, classShort,*/ - classInteger, /* classLong, classFloat, classDouble,*/ classString, - classByteArray, classCharArray, /*classIntArray,*/ classHolder; - -// Wrapper class methods - -extern jmethodID methodBooleanValue,/* methodByteValue, methodCharValue, -methodShortValue,*/ methodIntValue/*, methodLongValue, methodFloatValue, -methodDoubleValue*/; - -// Constructors - -extern jmethodID newIntegerInt, newBooleanBoolean; - -/* - * Class: com_eaio_nativecall_VoidCall - * Method: executeCall - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_com_eaio_nativecall_VoidCall_executeCall -(JNIEnv *env, jobject obj) { - - jint functionHandle = env->GetIntField(obj, fieldFunctionHandle); - -#ifdef _WINDOWS -#ifdef _X86_ - - __asm { - - call functionHandle - - } - -#endif -#endif - - env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - -} - -/* - * Class: com_eaio_nativecall_VoidCall - * Method: executeCall0 - * Signature: ([Ljava/lang/Object;)V - */ -JNIEXPORT void JNICALL Java_com_eaio_nativecall_VoidCall_executeCall0 -(JNIEnv *env, jobject obj, jobjectArray params) { - - const int len = env->GetArrayLength(params); - - int* arrays = NULL; - if (!(arrays = new int[len])) { - env->ThrowNew(env->FindClass("java/lang/OutOfMemoryError"), NULL); - return; - } - memset(arrays, 0, (sizeof(int) * len)); - - jobject param; - - for (int i = len - 1; i >= 0; i--) { - - param = env->GetObjectArrayElement(params, i); - - if (param == NULL) { - _push(0); - } - else if (env->IsInstanceOf(param, classInteger)) { - int intArg = env->CallIntMethod(param, methodIntValue); - _push(intArg) - } - else if (env->IsInstanceOf(param, classByteArray)) { - char* byteArrayArg = (char*) env->GetPrimitiveArrayCritical((jarray) param, 0); - arrays[i] = (int) &byteArrayArg; - _push(byteArrayArg) - } - else if (env->IsInstanceOf(param, classCharArray)) { - unsigned short* charArrayArg = (unsigned short*) env->GetPrimitiveArrayCritical( - (jarray) param, 0); - arrays[i] = (int) &charArrayArg; - _push(charArrayArg) - } - else if (env->IsInstanceOf(param, classBoolean)) { - jboolean booleanArg = env->CallBooleanMethod(param, methodBooleanValue); - int tempArg = (booleanArg == JNI_FALSE ? 0 : 1); - _push(tempArg) - } - else if (env->IsInstanceOf(param, classHolder)) { - - /* Holder */ - - jobject o = env->GetObjectField(param, fieldHolderO); - - if (env->IsInstanceOf(o, classInteger)) { - int *intPtr = new int; - *intPtr = env->CallIntMethod(o, methodIntValue); - arrays[i] = (int) intPtr; - _push(intPtr); - } - else if (env->IsInstanceOf(o, classByteArray)) { - char* byteArrayArg = (char*) env->GetPrimitiveArrayCritical((jarray) o, 0); - arrays[i] = (int) &byteArrayArg; - _push(byteArrayArg) - } - else if (env->IsInstanceOf(o, classCharArray)) { - unsigned short* charArrayArg = (unsigned short*) env->GetPrimitiveArrayCritical( - (jarray) o, 0); - arrays[i] = (int) &charArrayArg; - _push(charArrayArg) - } - else if (env->IsInstanceOf(o, classBoolean)) { - jboolean booleanArg = env->CallBooleanMethod(o, methodBooleanValue); - int *tempPtr = new int; - *tempPtr = (booleanArg == JNI_FALSE ? 0 : 1); - arrays[i] = (int) tempPtr; - _push(tempPtr); - } - - /* end Holder */ - - } - - } - - jint functionHandle = env->GetIntField(obj, fieldFunctionHandle); - -#ifdef _WINDOWS -#ifdef _X86_ - - __asm { - - call functionHandle - - } - -#endif -#endif - - for (int j = 0; j < len; ++j) { - param = env->GetObjectArrayElement(params, j); - if (param == NULL) {} - else if (env->IsInstanceOf(param, classByteArray) || env->IsInstanceOf(param, classCharArray)) { - env->ReleasePrimitiveArrayCritical((jarray) param, (void*) arrays[j], 0); - } - else if (env->IsInstanceOf(param, classHolder)) { - - jobject o = env->GetObjectField(param, fieldHolderO); - - if (env->IsInstanceOf(o, classInteger)) { - int* out = (int*) arrays[j]; - env->SetObjectField(param, fieldHolderO, env->NewObject(classInteger, newIntegerInt, *out)); - delete out; - } - else if (env->IsInstanceOf(o, classByteArray) || env->IsInstanceOf(o, classCharArray)) { - env->ReleasePrimitiveArrayCritical((jarray) o, (void*) arrays[j], 0); - } - else if (env->IsInstanceOf(o, classBoolean)) { - int* out = (int*) arrays[j]; - env->SetObjectField(param, fieldHolderO, env->NewObject(classBoolean, newBooleanBoolean, (*out == 0 ? JNI_FALSE : JNI_TRUE))); - delete out; - } - - } - - } - - delete [] arrays; - - env->SetIntField(obj, fieldLastErrorCode, GetLastError()); - -} \ No newline at end of file diff --git a/vendor/nativecall/0.4.1/cpp/com_eaio_nativecall_IntCall.h b/vendor/nativecall/0.4.1/cpp/com_eaio_nativecall_IntCall.h deleted file mode 100644 index 4bdd687..0000000 --- a/vendor/nativecall/0.4.1/cpp/com_eaio_nativecall_IntCall.h +++ /dev/null @@ -1,29 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class com_eaio_nativecall_IntCall */ - -#ifndef _Included_com_eaio_nativecall_IntCall -#define _Included_com_eaio_nativecall_IntCall -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: com_eaio_nativecall_IntCall - * Method: executeCall - * Signature: ()I - */ -JNIEXPORT jint JNICALL Java_com_eaio_nativecall_IntCall_executeCall - (JNIEnv *, jobject); - -/* - * Class: com_eaio_nativecall_IntCall - * Method: executeCall0 - * Signature: ([Ljava/lang/Object;)I - */ -JNIEXPORT jint JNICALL Java_com_eaio_nativecall_IntCall_executeCall0 - (JNIEnv *, jobject, jobjectArray); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/vendor/nativecall/0.4.1/cpp/com_eaio_nativecall_NativeCall.h b/vendor/nativecall/0.4.1/cpp/com_eaio_nativecall_NativeCall.h deleted file mode 100644 index 3092265..0000000 --- a/vendor/nativecall/0.4.1/cpp/com_eaio_nativecall_NativeCall.h +++ /dev/null @@ -1,45 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class com_eaio_nativecall_NativeCall */ - -#ifndef _Included_com_eaio_nativecall_NativeCall -#define _Included_com_eaio_nativecall_NativeCall -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: com_eaio_nativecall_NativeCall - * Method: initIDs - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_com_eaio_nativecall_NativeCall_initIDs - (JNIEnv *, jclass); - -/* - * Class: com_eaio_nativecall_NativeCall - * Method: initHandles - * Signature: ()Z - */ -JNIEXPORT jboolean JNICALL Java_com_eaio_nativecall_NativeCall_initHandles - (JNIEnv *, jobject); - -/* - * Class: com_eaio_nativecall_NativeCall - * Method: getLastError - * Signature: ()Ljava/lang/String; - */ -JNIEXPORT jstring JNICALL Java_com_eaio_nativecall_NativeCall_getLastError - (JNIEnv *, jobject); - -/* - * Class: com_eaio_nativecall_NativeCall - * Method: destroy - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_com_eaio_nativecall_NativeCall_destroy - (JNIEnv *, jobject); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/vendor/nativecall/0.4.1/cpp/com_eaio_nativecall_VoidCall.h b/vendor/nativecall/0.4.1/cpp/com_eaio_nativecall_VoidCall.h deleted file mode 100644 index 473da22..0000000 --- a/vendor/nativecall/0.4.1/cpp/com_eaio_nativecall_VoidCall.h +++ /dev/null @@ -1,29 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class com_eaio_nativecall_VoidCall */ - -#ifndef _Included_com_eaio_nativecall_VoidCall -#define _Included_com_eaio_nativecall_VoidCall -#ifdef __cplusplus -extern "C" { -#endif -/* - * Class: com_eaio_nativecall_VoidCall - * Method: executeCall - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_com_eaio_nativecall_VoidCall_executeCall - (JNIEnv *, jobject); - -/* - * Class: com_eaio_nativecall_VoidCall - * Method: executeCall0 - * Signature: ([Ljava/lang/Object;)V - */ -JNIEXPORT void JNICALL Java_com_eaio_nativecall_VoidCall_executeCall0 - (JNIEnv *, jobject, jobjectArray); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/vendor/nativecall/0.4.1/cpp/readme.txt b/vendor/nativecall/0.4.1/cpp/readme.txt deleted file mode 100644 index b493c79..0000000 --- a/vendor/nativecall/0.4.1/cpp/readme.txt +++ /dev/null @@ -1,25 +0,0 @@ -# $Id: readme.txt,v 1.1 2006/01/05 19:55:58 grnull Exp $ - -Hi, - -this is the readme file for people who want to build the native libraries for -NativeCall themselves. - -Compiling the native libraries requires some header files (after all, it's -just C++). - -Search for - - jni.h - -which is required. You will most likey also need jni_md.h and -jniproto_md.h. Copy these files to this directory. - -The library has been compiled and is set up for libctiny.lib to make the -binaries even smaller. You can download libctiny.lib from - - - -After you downloaded it, extract libctiny.lib to this folder. You also might -have to change the paths for the compiler and the linker. - diff --git a/vendor/nativecall/0.4.1/cpp/resource.h b/vendor/nativecall/0.4.1/cpp/resource.h deleted file mode 100644 index bbf1b2f..0000000 --- a/vendor/nativecall/0.4.1/cpp/resource.h +++ /dev/null @@ -1,15 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Developer Studio generated include file. -// Used by version.rc -// - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 103 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1000 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/vendor/nativecall/0.4.1/cpp/version.rc b/vendor/nativecall/0.4.1/cpp/version.rc deleted file mode 100644 index a85bfed..0000000 --- a/vendor/nativecall/0.4.1/cpp/version.rc +++ /dev/null @@ -1,104 +0,0 @@ -//Microsoft Developer Studio generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Deutsch (Deutschland) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU) -#ifdef _WIN32 -LANGUAGE LANG_GERMAN, SUBLANG_GERMAN -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE DISCARDABLE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE DISCARDABLE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE DISCARDABLE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -#ifndef _MAC -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,4,1,0 - PRODUCTVERSION 0,4,1,0 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x40004L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040704b0" - BEGIN - VALUE "CompanyName", "eaio\0" - VALUE "FileDescription", "NativeCall native library\0" - VALUE "FileVersion", "0, 4, 1, 0\0" - VALUE "LegalCopyright", "2003-2006 Johann Burkard\0" - VALUE "OriginalFilename", "NativeCall.dll\0" - VALUE "ProductName", "NativeCall\0" - VALUE "ProductVersion", "0, 4, 1, 0\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x407, 1200 - END -END - -#endif // !_MAC - -#endif // Deutsch (Deutschland) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/vendor/nativecall/0.4.1/java/META-INF/services/com.eaio.nativecall.Verifier b/vendor/nativecall/0.4.1/java/META-INF/services/com.eaio.nativecall.Verifier deleted file mode 100644 index e5bdea6..0000000 --- a/vendor/nativecall/0.4.1/java/META-INF/services/com.eaio.nativecall.Verifier +++ /dev/null @@ -1 +0,0 @@ -com.eaio.nativecall.Win32Verifier \ No newline at end of file diff --git a/vendor/nativecall/0.4.1/java/com/eaio/nativecall/Holder.java b/vendor/nativecall/0.4.1/java/com/eaio/nativecall/Holder.java deleted file mode 100644 index 6ed5358..0000000 --- a/vendor/nativecall/0.4.1/java/com/eaio/nativecall/Holder.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Holder.java - * - * Created on 14.09.2004. - * - * eaio: NativeCall - calling operating system methods from Java - * Copyright (c) 2004-2006 Johann Burkard () - * - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ -package com.eaio.nativecall; - -/** - * Holder is a class that encapsulates another Object. Use this class for output - * parameters. - * - * @author Johann Burkard - * @version $Id: Holder.java,v 1.3 2006/04/19 20:54:58 grnull Exp $ - */ -public class Holder { - - /** - * The encapsulated object. - *

    - * Accessed by native code. DO NOT RENAME THIS FIELD. - */ - private Object o; - - /** - * Constructor for Holder. - * - * @param o the Object to encapsulate, may be null, but cannot - * be of type Holder - * @throws ClassCastException if o is of type Holder - */ - public Holder(Object o) { - if (o instanceof Holder) { - throw new ClassCastException(); - } - else if (o == null) { - o = new Integer(0); - } - this.o = o; - } - - /** - * Returns the referenced Object. - * - * @return an Object - */ - public final Object get() { - return o; - } - - /** - * Returns the hashCode of the encapsulated Object or - * {@link java.lang.Object#hashCode()} if the Object is null. - * - * @return the hashCode - * @see java.lang.Object#hashCode() - */ - public int hashCode() { - return getClass().getName().hashCode() ^ (o == null ? 0 : o.hashCode()); - } - - /** - * Returns if this Object is equal to another Object. - * - * @param obj the other Object, may be null - * @return if both Objects are equal - * @see java.lang.Object#equals(java.lang.Object) - */ - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof Holder)) { - return false; - } - Holder h = (Holder) obj; - return o == null ? h.o == null : o.equals(h.o); - } - - /** - * Returns a String representation of this Object. - * - * @return a String, never null - * @see java.lang.Object#toString() - * @see #toStringBuffer(StringBuffer) - */ - public final String toString() { - return toStringBuffer(null).toString(); - } - - /** - * Appends a String representation of this Object to the given - * {@link StringBuffer} or creates a new one if none is given. - * - * @param in the StringBuffer to append to, may be null - * @return a StringBuffer, never null - */ - public StringBuffer toStringBuffer(StringBuffer in) { - if (in == null) { - in = new StringBuffer(32); - } - else { - in.ensureCapacity(in.length() + 32); - } - in.append("{ Holder: o = "); - in.append(o); - in.append(" }"); - return in; - } - -} diff --git a/vendor/nativecall/0.4.1/java/com/eaio/nativecall/IntCall.java b/vendor/nativecall/0.4.1/java/com/eaio/nativecall/IntCall.java deleted file mode 100644 index 3dc60ff..0000000 --- a/vendor/nativecall/0.4.1/java/com/eaio/nativecall/IntCall.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * IntCall.java - * - * Created on 07.09.2004. - * - * eaio: NativeCall - calling operating system methods from Java - * Copyright (c) 2004-2006 Johann Burkard () - * - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ -package com.eaio.nativecall; - -/** - * An IntCall instance encapsulates an operating system method that returns - * an integer. - * - * @author Johann Burkard - * @version $Id: IntCall.java,v 1.1 2006/01/05 20:02:44 grnull Exp $ - */ -public class IntCall extends NativeCall { - - /** - * Constructor for IntCall. - * - * @see NativeCall#NativeCall(String) - */ - public IntCall(String function) throws SecurityException, - IllegalArgumentException, NullPointerException { - super(function); - } - - /** - * Constructor for IntCall. - * - * @see NativeCall#NativeCall(String, String) - */ - public IntCall(String module, String function) throws SecurityException, - IllegalArgumentException, NullPointerException { - super(module, function); - } - - /** - * Returns false if calling {@link #executeCall()} returned - * 0, true otherwise. - *

    - * Updates the error code field. See {@link #getLastError()}. - * - * @return true or false - */ - public boolean executeBooleanCall() { - return executeCall() == 0 ? false : true; - } - - /** - * Returns false if calling {@link #executeCall(Object)} - * returned 0, true otherwise. - *

    - * Updates the error code field. See {@link #getLastError()}. - * - * @param param the parameter, may be null - * @return true or false - * @see #executeBooleanCall(Object[]) - */ - public boolean executeBooleanCall(Object param) { - return executeCall(param) == 0 ? false : true; - } - - /** - * Returns false if calling - * {@link #executeCall(Object[])} returned 0, true otherwise. - *

    - * Updates the error code field. See {@link #getLastError()}. - *

    - * During this operation, the contents of the array might be changed. - * - * @param params the parameter array, may be null - * @return true or false - */ - public boolean executeBooleanCall(Object[] params) { - return executeCall(params) == 0 ? false : true; - } - - /** - * Calls the function, returning its output. - *

    - * Updates the error code field. See {@link #getLastError()}. - * - * @return an int - */ - public native int executeCall(); - - /** - * Calls the function using the given parameter. - *

    - * Updates the error code field. See {@link #getLastError()}. - * - * @param param the parameter, may be null - * @return an int - * @see #executeCall(Object[]) - */ - public int executeCall(Object param) { - return executeCall(new Object[] { param }); - } - - /** - * Calls the function using the given parameters. - *

    - * Updates the error code field. See {@link #getLastError()}. - *

    - * During this operation, the contents of the array might be changed. - * - * @param params the parameter array, may be null - * @return an int - */ - public int executeCall(Object[] params) { - if (params == null || params.length == 0) { - return executeCall(); - } - check(params); - return executeCall0(params); - } - - private native int executeCall0(Object[] params); - -} diff --git a/vendor/nativecall/0.4.1/java/com/eaio/nativecall/NativeCall.java b/vendor/nativecall/0.4.1/java/com/eaio/nativecall/NativeCall.java deleted file mode 100644 index 482ca84..0000000 --- a/vendor/nativecall/0.4.1/java/com/eaio/nativecall/NativeCall.java +++ /dev/null @@ -1,355 +0,0 @@ -/* - * NativeCall.java - * - * Created on 07.09.2004. - * - * eaio: NativeCall - calling operating system methods from Java - * Copyright (c) 2004-2006 Johann Burkard () - * - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ -package com.eaio.nativecall; - -import java.io.IOException; - -import sun.misc.ServiceConfigurationError; - -import com.eaio.util.lang.NativeLoader; - -/** - * NativeCall loads the native library and prepares the matching - * {@link com.eaio.nativecall.Verifier}. - *

    - * Before being able to use NativeCall, the {@link #init()} method must have - * been called: - *

    - * try {
    - *     NativeCall.init();
    - * }
    - * catch (IOException ex) { ... }
    - * catch (SecurityException ex) { ... }
    - * catch (UnsatisfiedLinkError er) { ... }
    - * catch (sun.misc.ServiceConfigurationError) { ... }
    - * catch (UnsupportedOperationException) { ... }
    - * 
    - * After usage, each NativeCall object must be destroyed to release - * resources. This is done by calling the {@link #destroy()} method. Failure - * to call this method might result in memory leaks. - * - * @see #destroy() - * @see #init() - * @author Johann Burkard - * @version $Id: NativeCall.java,v 1.3 2006/04/19 20:54:58 grnull Exp $ - */ -public abstract class NativeCall { - - /** - * The error code of the last call. - *

    - * Accessed by native code. DO NOT RENAME THIS FIELD. - */ - private int lastErrorCode; - - /** - * The internal handle to the function and the module. - *

    - * These are set in native code, so ignore any warnings. - *

    - * Accessed by native code. DO NOT RENAME THIS FIELD. - */ - private int functionHandle, moduleHandle; - - /** - * The name of the function to call. - *

    - * Accessed by native code. DO NOT RENAME THIS FIELD. - */ - private String function; - - /** - * The name of the module to call. - *

    - * Accessed by native code. DO NOT RENAME THIS FIELD. - */ - private String module; - - /** - * Initialize JNI field and method IDs - */ - private static native void initIDs(); - - /** - * Whether the class has been initialized properly. - */ - private static boolean initialized = false; - - /** - * Before NativeCall may be used, this method must be called. - * It loads the native library, prepares JNI field and method IDs and loads - * the matching {@link Verifier}. - *

    - * Multiple calls are ignored. - * - * @throws IOException if an IOException occured during unpacking of - * the native library - * @throws SecurityException if accessing system properties was forbidden - * by the {@link SecurityManager} - * @throws UnsatisfiedLinkError if the NativeCall.dll could - * not be found - * @throws sun.misc.ServiceConfigurationError - * @throws UnsupportedOperationException if no matching - * {@link Verifier} could be found - */ - public static synchronized void init() - throws - IOException, - SecurityException, - UnsatisfiedLinkError, - ServiceConfigurationError, - UnsupportedOperationException { - if (!initialized) { - Verifiers.init(); - if (Verifiers.getInstance() == null) { - throw new UnsupportedOperationException(); - } - new NativeLoader("NativeCall").load(); - initIDs(); - initialized = true; - } - } - - /** - * Constructor for NativeCall. - * - * @param function the name of the function to use, may not be - * null - * @throws IllegalArgumentException if the function could not be found - * @throws NullPointerException if function is null - * @see Verifier#getDefaultModule() - * @see NativeCall#NativeCall(String, String) - */ - public NativeCall(String function) - throws IllegalArgumentException, NullPointerException { - this(Verifiers.getInstance().getDefaultModule(), function); - } - - /** - * Constructor for NativeCall. - * - * @param module the name of the module the function is stored in, may be - * null - * @param function the name of the function to use, may not be - * null - * @throws IllegalArgumentException if the function could not be found - * @throws NullPointerException if function is null - */ - public NativeCall(String module, String function) - throws IllegalArgumentException, NullPointerException { - Verifier v = Verifiers.getInstance(); - this.function = v.verifyFunctionName(function); - this.module = v.verifyModuleName(module); - if (!initHandles()) { - if (lastErrorCode != 0) { - throw new IllegalArgumentException(getLastError()); - } - throw new IllegalArgumentException(); - } - } - - /** - * Attempts to acquire handles to the functions. Returns if these could be - * acquired. - * - * @return if the handles could be acquired - */ - private native boolean initHandles(); - - /** - * Returns the error code that was returned during the last method call or - * 0 if the last method call did not produce an error. - * - * @see #getLastError() - * @return the last error code or 0 - */ - public final int getLastErrorCode() { - return lastErrorCode; - } - - /** - * Returns a formatted String containing the last error code or - * null if the last call did not produce an error. - * - * @see #getLastErrorCode() - * @return a String or null if the last error code is 0 - */ - public final native String getLastError(); - - /** - * Releases acquired module handles. This method must be called if the - * instance is not used anymore. After this method is called, methods of this - * NativeCall Object cannot be called anymore. - *

    - * Failure to call this method might result in memory leaks. - *

    - * Updates the error code field. See {@link #getLastError()}. - */ - public native synchronized void destroy(); - - /** - * Checks the supplied Object array for illegal/unsupported types. - *

    - * During the verification, the contents of the array might be - * changed. - * - * @param params the Object array, may be null - * @throws ClassCastException if the type of one argument is not supported - */ - protected void check(Object[] params) throws ClassCastException { - if (params == null) { - return; - } - for (int i = 0; i < params.length; ++i) { - checkParam(params[i]); - if (params[i] instanceof String) { - params[i] = - Verifiers.getInstance().handleString( - (String) params[i], - module, - function); - } - } - } - - /** - * Checks one Object for illegal/unsupported types. - * - * @param o the Object, may be null - * @throws ClassCastException if the type of one argument is not supported - */ - protected void checkParam(Object o) throws ClassCastException { - if (o == null - || o instanceof Boolean - || o instanceof Integer - || o instanceof byte[] - || o instanceof char[] - || o instanceof String) { - return; - } - if (o instanceof Holder) { - checkParam(((Holder) o).get()); - return; - } - throw new ClassCastException(o.getClass().getName()); - } - - /** - * Returns if this Object is equal to another Object. The other Object must - * be an instance of the same type as this Object. Also, both the module - * and the function field must be equal. - * - * @param obj the other Object - * @return if this and the other Object are equal - * @see java.lang.Object#equals(java.lang.Object) - */ - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof NativeCall)) { - return false; - } - if (!getClass().getName().equals(obj.getClass().getName())) { - return false; - } - NativeCall c = (NativeCall) obj; - return module.equals(c.module) && function.equals(c.function); - } - - /** - * Returns the hashCode of this Object. The hashCode is computed by XOR'ing - * the hash codes of the function and the module names. - * - * @return the hashCode - * @see java.lang.Object#hashCode() - */ - public int hashCode() { - int out = function.hashCode(); - out ^= module.hashCode(); - return out; - } - - /** - * Calls {@link #destroy()}. - * - * @see java.lang.Object#finalize() - */ - protected void finalize() throws Throwable { - try { - destroy(); - } - finally { - super.finalize(); - // in case NativeCall is a subclass of a class other than Object - } - } - - /** - * Returns a String representation of this Object. - * - * @return a String, never null - * @see java.lang.Object#toString() - * @see #toStringBuffer(StringBuffer) - */ - public final String toString() { - return toStringBuffer(null).toString(); - } - - /** - * Appends a String representation of this Object to the given - * {@link StringBuffer} or creates a new one if none is given. - * - * @param in the StringBuffer to append to, may be null - * @return a StringBuffer, never null - */ - public StringBuffer toStringBuffer(StringBuffer in) { - if (in == null) { - in = new StringBuffer(64); - } - else { - in.ensureCapacity(in.length() + 64); - } - in.append("{ "); - int idx = getClass().getName().lastIndexOf("."); - if (idx > -1) { - in.append(getClass().getName().substring(++idx)); - } - else { - in.append(getClass().getName()); - } - in.append(": module = "); - in.append(module); - in.append(", function = "); - in.append(function); - in.append(" }"); - return in; - } - -} diff --git a/vendor/nativecall/0.4.1/java/com/eaio/nativecall/Verifier.java b/vendor/nativecall/0.4.1/java/com/eaio/nativecall/Verifier.java deleted file mode 100644 index 085ae8b..0000000 --- a/vendor/nativecall/0.4.1/java/com/eaio/nativecall/Verifier.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Verifier.java - * - * Created on 07.09.2004. - * - * eaio: NativeCall - calling operating system methods from Java - * Copyright (c) 2004-2006 Johann Burkard () - * - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ -package com.eaio.nativecall; - -/** - * A Verifier implements method and module name checking for one given - * operating system. Classes implementing Verifier must be public and have - * a public no-argument constructor. - * - * @author Johann Burkard - * @version $Id: Verifier.java,v 1.1 2006/01/05 20:02:44 grnull Exp $ - */ -public interface Verifier { - - /** - * If there is a default module that system functions are stored in, the - * module's name may be returned here. - * - * @return the name of a default module or null - * @see NativeCall#NativeCall(String) - */ - String getDefaultModule(); - - /** - * Returns if this Verifier supports the given operating system. - * - * @return if this operating system is supported - * @throws SecurityException because {@link java.lang.System} properties - * may be queried - */ - boolean supports() throws SecurityException; - - /** - * Verifies that the given module name is correct. - * - * @param module the module name, may be null - * @return a module name, possibly modified, never null - * @throws NullPointerException if the module name is null - * and there is no default module defined - * @throws IllegalArgumentException if the module is illegal in the - * operating system - * @see #getDefaultModule() - */ - String verifyModuleName(String module) - throws NullPointerException, IllegalArgumentException; - - /** - * Verifies that the given function name is correct. - * - * @param function the function name, may be null - * @return a function name, possibly modified, never null - * @throws NullPointerException if the function name is null - * @throws IllegalArgumentException if the function is illegal in the - * operating system - */ - String verifyFunctionName(String function) - throws NullPointerException, IllegalArgumentException; - - /** - * Converts the given String to one of the following data types, based on the - * module and the function name: - *
    - *

      - *
    • a byte array
    • - *
    • a char array
    • - *
    - * - * @param val the String, never null - * @param module the module name, never null - * @param function the function name, never null - * @return the String converted, never null - */ - Object handleString(String val, String module, String function); - -} diff --git a/vendor/nativecall/0.4.1/java/com/eaio/nativecall/Verifiers.java b/vendor/nativecall/0.4.1/java/com/eaio/nativecall/Verifiers.java deleted file mode 100644 index 6c86654..0000000 --- a/vendor/nativecall/0.4.1/java/com/eaio/nativecall/Verifiers.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Verifiers.java - * - * Created on 07.09.2004. - * - * eaio: NativeCall - calling operating system methods from Java - * Copyright (c) 2004-2006 Johann Burkard () - * - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ -package com.eaio.nativecall; - -import java.util.Iterator; - -import sun.misc.Service; -import sun.misc.ServiceConfigurationError; - -/** - * Verifiers instantiates the matching {@link com.eaio.nativecall.Verifier} for - * the current operating system. - * - * @author Johann Burkard - * @version $Id: Verifiers.java,v 1.2 2006/01/06 10:58:33 grnull Exp $ - */ -final class Verifiers { - - /** - * No instances needed. - */ - private Verifiers() {} - - /** - * The Verifier. - */ - private static Verifier v = null; - - /** - * Find the matching Verifier. - * - * @throws ServiceConfigurationError - * @throws SecurityException - */ - static void init() throws ServiceConfigurationError, SecurityException { - Iterator i = - Service.providers(Verifier.class, Verifier.class.getClassLoader()); - Verifier ver = null; - while (i.hasNext()) { - ver = (Verifier) i.next(); - if (ver.supports()) { - v = ver; - break; - } - } - } - - /** - * Returns the Verifier. - * - * @return a Verifier or null - */ - static Verifier getInstance() { - return v; - } - -} diff --git a/vendor/nativecall/0.4.1/java/com/eaio/nativecall/VoidCall.java b/vendor/nativecall/0.4.1/java/com/eaio/nativecall/VoidCall.java deleted file mode 100644 index c3ce15e..0000000 --- a/vendor/nativecall/0.4.1/java/com/eaio/nativecall/VoidCall.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * VoidCall.java - * - * Created on 16.09.2004 - * - * eaio: NativeCall - calling operating system methods from Java - * Copyright (c) 2004-2006 Johann Burkard () - * - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ -package com.eaio.nativecall; - -/** - * A VoidCall instance encapsulates an operating system method that returns - * nothing. - * - * @author Johann Burkard - * @version $Id: VoidCall.java,v 1.1 2006/01/05 20:02:44 grnull Exp $ - */ -public class VoidCall extends NativeCall { - - /** - * Constructor for VoidCall. - * - * @see NativeCall#NativeCall(String) - */ - public VoidCall(String function) throws SecurityException, - IllegalArgumentException, NullPointerException { - super(function); - } - - /** - * Constructor for VoidCall. - * - * @see NativeCall#NativeCall(String, String) - */ - public VoidCall(String module, String function) throws SecurityException, - IllegalArgumentException, NullPointerException { - super(module, function); - } - - /** - * Calls the function. - *

    - * Updates the error code field. See {@link #getLastError()}. - */ - public native void executeCall(); - - /** - * Calls the function using the given parameter. - *

    - * Updates the error code field. See {@link #getLastError()}. - * - * @param param the parameter, may be null - * @see #executeCall(Object[]) - */ - public void executeCall(Object param) { - executeCall(new Object[] { param }); - } - - /** - * Calls the function using the given parameters. - *

    - * Updates the error code field. See {@link #getLastError()}. - *

    - * During this operation, the contents of the array might be changed. - * - * @param params the parameter array, may be null - */ - public void executeCall(Object[] params) { - if (params == null || params.length == 0) { - executeCall(); - return; - } - check(params); - executeCall0(params); - } - - private native void executeCall0(Object[] params); - -} diff --git a/vendor/nativecall/0.4.1/java/com/eaio/nativecall/Win32Verifier.java b/vendor/nativecall/0.4.1/java/com/eaio/nativecall/Win32Verifier.java deleted file mode 100644 index 85bd60a..0000000 --- a/vendor/nativecall/0.4.1/java/com/eaio/nativecall/Win32Verifier.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Win32Verifier.java - * - * Created on 08.09.2004. - * - * eaio: NativeCall - calling operating system methods from Java - * Copyright (c) 2004-2006 Johann Burkard () - * - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ -package com.eaio.nativecall; - -/** - * A {@link com.eaio.nativecall.Verifier} for the Windows environment. - * - * @author Johann Burkard - * @version $Id: Win32Verifier.java,v 1.3 2006/04/19 20:54:58 grnull Exp $ - */ -public class Win32Verifier implements Verifier { - - /** - * Constructor for Win32Verifier. Does nothing. - */ - public Win32Verifier() {} - - /** - * Verifies that the {@link java.lang.System} property "os.name" starts - * with "Windows". - * - * @see Verifier#supports() - */ - public boolean supports() throws SecurityException { - return System.getProperty("os.name").startsWith("Windows"); - } - - /** - * Returns the default module name if the module name is null - * or an empty String. If the module name contains forward slashes (/), they - * are converted to backward slashes (\). - * - * @see - * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/loadlibrary.asp - * - * @see com.eaio.nativecall.Verifier#verifyModuleName(java.lang.String) - */ - public String verifyModuleName(String module) { - if (module == null || module.length() == 0) { - return getDefaultModule(); - } - if (module.indexOf('/') != -1) { - module = module.replace('/', '\\'); - } - return module; - } - - /** - * Throws a {@link java.lang.NullPointerException} if the function - * name is null or an empty String. No further processing is - * done. - * - * @see com.eaio.nativecall.Verifier#verifyFunctionName(java.lang.String) - */ - public String verifyFunctionName(String function) { - if (function == null || function.length() == 0) { - throw new NullPointerException(); - } - return function; - } - - /** - * Returns "kernel32". - * - * @return "kernel32" - * @see com.eaio.nativecall.Verifier#getDefaultModule() - */ - public String getDefaultModule() { - return "kernel32"; - } - - /** - * If the function name ends on 'W' (Windows' Unicode functions), a - * char array is returned, otherwise a byte array - * is returned. - *

    - * The arrays are always null-terminated. - * - * @see com.eaio.nativecall.Verifier#handleString(java.lang.String, - * java.lang.String, - * java.lang.String) - */ - public Object handleString(String val, String module, String function) { - if (function.charAt(function.length() - 1) == 'W') { - char[] buf = new char[val.length() + 1]; - val.getChars(0, val.length(), buf, 0); - return buf; - } - byte[] buf = new byte[val.length() + 1]; - val.getBytes(0, val.length(), buf, 0); - return buf; - } - -} diff --git a/vendor/nativecall/0.4.1/java/com/eaio/nativecall/package.html b/vendor/nativecall/0.4.1/java/com/eaio/nativecall/package.html deleted file mode 100644 index 22b3abc..0000000 --- a/vendor/nativecall/0.4.1/java/com/eaio/nativecall/package.html +++ /dev/null @@ -1,15 +0,0 @@ - - - -Untitled Document - - -

    Contains the main NativeCall classes.

    -

    For instant API information, see:

    -
      -
    • {@link com.eaio.nativecall.NativeCall}
    • -
    • {@link com.eaio.nativecall.IntCall}
    • -
    • {@link com.eaio.nativecall.VoidCall}
    • -
    - - diff --git a/vendor/nativecall/0.4.1/nativecall-0.4.1.jar b/vendor/nativecall/0.4.1/nativecall-0.4.1.jar deleted file mode 100644 index 7b898040f5e54d8275ef89c2c76594bd840c9497..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9414 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