File tree Expand file tree Collapse file tree 3 files changed +30
-1
lines changed
Expand file tree Collapse file tree 3 files changed +30
-1
lines changed Original file line number Diff line number Diff line change 66
77 <groupId >org.byteskript</groupId >
88 <artifactId >byteskript</artifactId >
9- <version >1.0.36 </version >
9+ <version >1.0.37 </version >
1010 <name >ByteSkript</name >
1111 <description >A compiled JVM implementation of the Skript language.</description >
1212
Original file line number Diff line number Diff line change 22import org .byteskript .skript .runtime .threading .ScriptThread ;
33import org .byteskript .skript .runtime .type .AtomicVariable ;
44
5+ import java .lang .ref .Reference ;
6+ import java .lang .ref .SoftReference ;
7+ import java .lang .ref .WeakReference ;
8+
59/**
610 * This is the Java implementation of the 'skript' namespace functions.
711 * Some implementations may re-implement this in Skript itself.
@@ -129,6 +133,23 @@ public static double log(Object object) {
129133 //endregion
130134
131135 //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+
132153 public static AtomicVariable get_atomic_literal (Object atomic ) {
133154 if (atomic instanceof AtomicVariable variable ) return variable ;
134155 else return AtomicVariable .wrap (atomic );
Original file line number Diff line number Diff line change @@ -71,6 +71,14 @@ function generic:
7171 assert hashcode("hello") is a number: "Generic function failed."
7272 assert strict_equals(1, 1) is true: "Generic function failed."
7373 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."
7482
7583function test:
7684 trigger:
You can’t perform that action at this time.
0 commit comments