00001 /* --------------------------------------------------------------------------- 00002 commonc++ - A C++ Common Class Library 00003 Copyright (C) 2005-2012 Mark A Lindner 00004 00005 This file is part of commonc++. 00006 00007 This library is free software; you can redistribute it and/or 00008 modify it under the terms of the GNU Library General Public 00009 License as published by the Free Software Foundation; either 00010 version 2 of the License, or (at your option) any later version. 00011 00012 This library is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 Library General Public License for more details. 00016 00017 You should have received a copy of the GNU Library General Public 00018 License along with this library; if not, write to the Free 00019 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00020 --------------------------------------------------------------------------- 00021 */ 00022 00023 #ifndef __ccxx_JavaVirtualMachine_hxx 00024 #define __ccxx_JavaVirtualMachine_hxx 00025 00026 #include <commonc++/Common.h++> 00027 #include <commonc++/Exception.h++> 00028 #include <commonc++/SearchPath.h++> 00029 #include <commonc++/String.h++> 00030 #include <commonc++/ThreadLocal.h++> 00031 #include <commonc++/JavaException.h++> 00032 #include <commonc++/JavaContext.h++> 00033 00034 #include <jni.h> 00035 00036 namespace ccxx { 00037 00054 class COMMONCPPJVM_API JavaVirtualMachine 00055 { 00056 public: 00057 00070 JavaVirtualMachine(const SearchPath& classPath = SearchPath::empty, 00071 const SearchPath& linkerPath = SearchPath::empty, 00072 uint_t initialHeapSize = 0, uint_t maxHeapSize = 0, 00073 bool server = false, bool verbose = false, 00074 bool nojit = false); 00075 00077 ~JavaVirtualMachine() throw(); 00078 00084 JavaContext attachThread() throw(JavaException); 00085 00091 void detachThread() throw(JavaException); 00092 00094 inline bool isVerbose() const throw() 00095 { return(_verbose); } 00096 00097 private: 00098 00099 class JavaContextPtr : public ThreadLocal<JavaContext> 00100 { 00101 protected: 00102 00103 JavaContext *initialValue() 00104 { return(new JavaContext(NULL)); } 00105 }; 00106 00107 JavaVM *_jvm; 00108 JavaContextPtr _context; 00109 bool _verbose; 00110 00111 CCXX_COPY_DECLS(JavaVirtualMachine); 00112 }; 00113 00114 } // namespace ccxx 00115 00116 #endif // __ccxx_JavaVirtualMachine_hxx 00117 00118 /* end of header file */
1.6.3