29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 34 #ifndef JAVA_H 35 #define JAVA_H 36 37 #include "Platform.h" 38 #include "Messages.h" 39 40 #include "jni.h" 41 42 43 class JavaClass; 44 class JavaStaticMethod; 45 class JavaMethod; 46 class JavaStringArray; 47 48 49 class JavaException : public std::exception { 50 // Prohibit Heap-Based Classes. 51 private: 52 static void *operator new(size_t size); 53 54 private: 55 #ifdef DEBUG 56 static std::string CreateExceptionMessage(JNIEnv* Env, jthrowable Exception, 57 jmethodID GetCauseMethod, jmethodID GetStackTraceMethod, jmethodID ThrowableToStringMethod, 58 jmethodID FrameToStringMethod); 59 #endif //DEBUG 60 61 std::string FMessage; 62 jthrowable FException; 63 JNIEnv *FEnv; 64 65 public: 66 explicit JavaException(); 67 explicit JavaException(const char* const message); 68 explicit JavaException(JNIEnv *Env, const char* const message); 69 virtual ~JavaException() throw() {} 70 71 virtual const char* what(); 72 void Rethrow(); 73 }; 74 75 76 class JavaStaticMethod { 77 // Prohibit Heap-Based Classes. 78 private: 79 static void *operator new(size_t size); 80 static void operator delete(void *ptr); 81 82 private: 83 JNIEnv *FEnv; 84 jmethodID FMethod; 85 jclass FClass; 86 public: 87 JavaStaticMethod(JNIEnv *Env, jclass Class, jmethodID Method); 88 89 void CallVoidMethod(int Count, ...); 90 operator jmethodID (); 91 }; | 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 34 #ifndef JAVA_H 35 #define JAVA_H 36 37 #include "Platform.h" 38 #include "Messages.h" 39 40 #include "jni.h" 41 42 43 class JavaClass; 44 class JavaStaticMethod; 45 class JavaMethod; 46 class JavaStringArray; 47 48 49 class JavaException : public Exception { 50 // Prohibit Heap-Based Classes. 51 private: 52 static void *operator new(size_t size); 53 54 private: 55 #ifdef DEBUG 56 static TString CreateExceptionMessage(JNIEnv* Env, jthrowable Exception, 57 jmethodID GetCauseMethod, jmethodID GetStackTraceMethod, jmethodID ThrowableToStringMethod, 58 jmethodID FrameToStringMethod); 59 #endif //DEBUG 60 61 jthrowable FException; 62 JNIEnv *FEnv; 63 64 public: 65 explicit JavaException(); 66 explicit JavaException(JNIEnv *Env, const TString message); 67 virtual ~JavaException() throw() {} 68 69 void Rethrow(); 70 }; 71 72 73 class JavaStaticMethod { 74 // Prohibit Heap-Based Classes. 75 private: 76 static void *operator new(size_t size); 77 static void operator delete(void *ptr); 78 79 private: 80 JNIEnv *FEnv; 81 jmethodID FMethod; 82 jclass FClass; 83 public: 84 JavaStaticMethod(JNIEnv *Env, jclass Class, jmethodID Method); 85 86 void CallVoidMethod(int Count, ...); 87 operator jmethodID (); 88 }; |