The open source OpenXR runtime
at main 82 lines 2.0 kB view raw
1// Copyright 2020-2021, Collabora, Ltd. 2// SPDX-License-Identifier: BSL-1.0 3// Author: Rylie Pavlik <rylie.pavlik@collabora.com> 4 5#pragma once 6 7#include "ObjectWrapperBase.h" 8 9namespace wrap { 10namespace dalvik::system { 11class DexClassLoader; 12} // namespace dalvik::system 13 14namespace java::lang { 15class Class; 16class ClassLoader; 17} // namespace java::lang 18 19} // namespace wrap 20 21namespace wrap { 22namespace dalvik::system { 23/*! 24 * Wrapper for dalvik.system.DexClassLoader objects. 25 */ 26class DexClassLoader : public ObjectWrapperBase { 27 public: 28 using ObjectWrapperBase::ObjectWrapperBase; 29 static constexpr const char *getTypeName() noexcept { 30 return "dalvik/system/DexClassLoader"; 31 } 32 33 /*! 34 * Wrapper for a constructor 35 * 36 * Java prototype: 37 * `public dalvik.system.DexClassLoader(java.lang.String, java.lang.String, 38 * java.lang.String, java.lang.ClassLoader);` 39 * 40 * JNI signature: 41 * (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V 42 * 43 */ 44 static DexClassLoader construct(std::string const &searchPath, 45 std::string const &nativeSearchPath, 46 jni::Object parentClassLoader); 47 48 /*! 49 * Wrapper for the loadClass method 50 * 51 * Java prototype: 52 * `public java.lang.Class<?> loadClass(java.lang.String) throws 53 * java.lang.ClassNotFoundException;` 54 * 55 * JNI signature: (Ljava/lang/String;)Ljava/lang/Class; 56 * 57 */ 58 java::lang::Class loadClass(std::string const &name); 59 60 /*! 61 * Class metadata 62 */ 63 struct Meta : public MetaBase { 64 jni::method_t init; 65 jni::method_t loadClass; 66 67 /*! 68 * Singleton accessor 69 */ 70 static Meta &data() { 71 static Meta instance{}; 72 return instance; 73 } 74 75 private: 76 Meta(); 77 }; 78}; 79 80} // namespace dalvik::system 81} // namespace wrap 82#include "dalvik.system.impl.h"