modules/fxpackager/src/main/native/library/common/Java.h

Print this page




  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 };