The open source OpenXR runtime
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"