File tree 3 files changed +30
-1
lines changed
3 files changed +30
-1
lines changed Original file line number Diff line number Diff line change 6
6
7
7
<groupId >org.byteskript</groupId >
8
8
<artifactId >byteskript</artifactId >
9
- <version >1.0.36 </version >
9
+ <version >1.0.37 </version >
10
10
<name >ByteSkript</name >
11
11
<description >A compiled JVM implementation of the Skript language.</description >
12
12
Original file line number Diff line number Diff line change 2
2
import org .byteskript .skript .runtime .threading .ScriptThread ;
3
3
import org .byteskript .skript .runtime .type .AtomicVariable ;
4
4
5
+ import java .lang .ref .Reference ;
6
+ import java .lang .ref .SoftReference ;
7
+ import java .lang .ref .WeakReference ;
8
+
5
9
/**
6
10
* This is the Java implementation of the 'skript' namespace functions.
7
11
* Some implementations may re-implement this in Skript itself.
@@ -129,6 +133,23 @@ public static double log(Object object) {
129
133
//endregion
130
134
131
135
//region Generic
136
+ public static WeakReference <?> weak_reference (Object value ) {
137
+ if (value instanceof WeakReference <?> reference ) return reference ;
138
+ if (value instanceof Reference <?> reference ) return new WeakReference <>(reference .get ());
139
+ return new WeakReference <>(value );
140
+ }
141
+
142
+ public static SoftReference <?> soft_reference (Object value ) {
143
+ if (value instanceof SoftReference <?> reference ) return reference ;
144
+ if (value instanceof Reference <?> reference ) return new SoftReference <>(reference .get ());
145
+ return new SoftReference <>(value );
146
+ }
147
+
148
+ public static Object reference_value (Object object ) {
149
+ if (object instanceof Reference <?> reference ) return reference .get ();
150
+ return object ;
151
+ }
152
+
132
153
public static AtomicVariable get_atomic_literal (Object atomic ) {
133
154
if (atomic instanceof AtomicVariable variable ) return variable ;
134
155
else return AtomicVariable .wrap (atomic );
Original file line number Diff line number Diff line change @@ -71,6 +71,14 @@ function generic:
71
71
assert hashcode("hello") is a number: "Generic function failed."
72
72
assert strict_equals(1, 1) is true: "Generic function failed."
73
73
assert strict_equals("cc", "c" + "c") is false: "Generic function failed."
74
+ assert weak_reference("hello") exists: "Weak reference creation failed."
75
+ assert soft_reference("hello") exists: "Soft reference creation failed."
76
+ set {thing} to weak_reference("hello")
77
+ assert {thing} is not "hello": "Reference was not created."
78
+ assert reference_value({thing}) is "hello": "Weak reference was not extracted."
79
+ set {thing} to soft_reference("hello")
80
+ assert {thing} is not "hello": "Reference was not created."
81
+ assert reference_value({thing}) is "hello": "Soft reference was not extracted."
74
82
75
83
function test:
76
84
trigger:
You can’t perform that action at this time.
0 commit comments