From 0c825f6b5fb997726c48259198a73dde0179f1dd Mon Sep 17 00:00:00 2001 From: Robert Vokac Date: Fri, 20 Dec 2024 18:10:02 +0100 Subject: [PATCH] Changes --- .../JDotNet/CSharpKeyWords/Default_.java | 22 +++++++ .../JDotNet/CSharpKeyWords/Namespace.java | 24 ++++++++ .../{Default.java => Nullable.java} | 6 +- .../jdotnet/JDotNet/CSharpKeyWords/Ref.java | 24 ++++++++ .../CSharpKeyWords}/Struct.java | 2 +- .../Sensors/AccelerometerFailedException.java | 13 ++++ .../Sensors/SensorFailedException.java | 15 +++++ .../System/Collections/Generic/List_.java | 60 +++++++++++++++++++ .../jdotnet/System/Diagnostics/Debug.java | 3 + .../jdotnet/System/IDisposable.java | 4 +- .../openeggbert/jdotnet/System/String_.java | 54 ++++++++++++++++- .../jdotnet/System/SystemException.java | 14 +++++ .../openeggbert/jdotnet/System/TimeSpan.java | 23 ++++++- .../openeggbert/jdotnet/System/UInt32.java | 21 +++++++ .../System/UnauthorizedAccessException.java | 14 +++++ .../Generic/NewClass.java => string.java} | 6 +- .../com/openeggbert/jdotnet/System/uint.java | 17 ++++++ 17 files changed, 313 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Default_.java create mode 100644 src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Namespace.java rename src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/{Default.java => Nullable.java} (86%) create mode 100644 src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Ref.java rename src/main/java/com/openeggbert/jdotnet/{System => JDotNet/CSharpKeyWords}/Struct.java (90%) create mode 100644 src/main/java/com/openeggbert/jdotnet/JDotNet/Microsoft/Devices/Sensors/AccelerometerFailedException.java create mode 100644 src/main/java/com/openeggbert/jdotnet/JDotNet/Microsoft/Devices/Sensors/SensorFailedException.java create mode 100644 src/main/java/com/openeggbert/jdotnet/System/Collections/Generic/List_.java create mode 100644 src/main/java/com/openeggbert/jdotnet/System/SystemException.java create mode 100644 src/main/java/com/openeggbert/jdotnet/System/UInt32.java create mode 100644 src/main/java/com/openeggbert/jdotnet/System/UnauthorizedAccessException.java rename src/main/java/com/openeggbert/jdotnet/System/{Collections/Generic/NewClass.java => string.java} (74%) create mode 100644 src/main/java/com/openeggbert/jdotnet/System/uint.java diff --git a/src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Default_.java b/src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Default_.java new file mode 100644 index 0000000..c44eae6 --- /dev/null +++ b/src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Default_.java @@ -0,0 +1,22 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.openeggbert.jdotnet.JDotNet.CSharpKeyWords; + +/** + * + * @author robertvokac + */ +public class Default_ { + + private Default_() { + //Not meant to be instantiated. + } + + public static > T default_(T instance) { + instance.reset(); + return instance; + } + +} diff --git a/src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Namespace.java b/src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Namespace.java new file mode 100644 index 0000000..00f70b3 --- /dev/null +++ b/src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Namespace.java @@ -0,0 +1,24 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.openeggbert.jdotnet.JDotNet.CSharpKeyWords; + +import com.openeggbert.jdotnet.JDotNet.AdditionalClassForDotNetSimulation; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * + * @author robertvokac + * Simulates the C# key word namespace. + */ + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +@AdditionalClassForDotNetSimulation +public @interface Namespace { + String name(); +} diff --git a/src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Default.java b/src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Nullable.java similarity index 86% rename from src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Default.java rename to src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Nullable.java index 6b3cee2..9c7ecbd 100644 --- a/src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Default.java +++ b/src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Nullable.java @@ -13,12 +13,12 @@ import java.lang.annotation.Target; /** * * @author robertvokac - * Simulates the C# key word default. + * Simulates the C# key word ?. */ @Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.LOCAL_VARIABLE) +@Target(ElementType.PARAMETER) @AdditionalClassForDotNetSimulation -public @interface Default { +public @interface Nullable { String description() default ""; } diff --git a/src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Ref.java b/src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Ref.java new file mode 100644 index 0000000..bde6d4e --- /dev/null +++ b/src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Ref.java @@ -0,0 +1,24 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.openeggbert.jdotnet.JDotNet.CSharpKeyWords; + +import com.openeggbert.jdotnet.JDotNet.AdditionalClassForDotNetSimulation; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * + * @author robertvokac + * Simulates the C# key word ref. + */ + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.PARAMETER) +@AdditionalClassForDotNetSimulation +public @interface Ref { + String description() default ""; +} diff --git a/src/main/java/com/openeggbert/jdotnet/System/Struct.java b/src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Struct.java similarity index 90% rename from src/main/java/com/openeggbert/jdotnet/System/Struct.java rename to src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Struct.java index 336080b..6c54ca9 100644 --- a/src/main/java/com/openeggbert/jdotnet/System/Struct.java +++ b/src/main/java/com/openeggbert/jdotnet/JDotNet/CSharpKeyWords/Struct.java @@ -2,7 +2,7 @@ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template */ -package com.openeggbert.jdotnet.System; +package com.openeggbert.jdotnet.JDotNet.CSharpKeyWords; import com.openeggbert.jdotnet.JDotNet.AdditionalClassForDotNetSimulation; diff --git a/src/main/java/com/openeggbert/jdotnet/JDotNet/Microsoft/Devices/Sensors/AccelerometerFailedException.java b/src/main/java/com/openeggbert/jdotnet/JDotNet/Microsoft/Devices/Sensors/AccelerometerFailedException.java new file mode 100644 index 0000000..741a1de --- /dev/null +++ b/src/main/java/com/openeggbert/jdotnet/JDotNet/Microsoft/Devices/Sensors/AccelerometerFailedException.java @@ -0,0 +1,13 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.openeggbert.jdotnet.JDotNet.Microsoft.Devices.Sensors; + +/** + * + * @author robertvokac + */ +public class AccelerometerFailedException extends SensorFailedException{ + +} diff --git a/src/main/java/com/openeggbert/jdotnet/JDotNet/Microsoft/Devices/Sensors/SensorFailedException.java b/src/main/java/com/openeggbert/jdotnet/JDotNet/Microsoft/Devices/Sensors/SensorFailedException.java new file mode 100644 index 0000000..f977a64 --- /dev/null +++ b/src/main/java/com/openeggbert/jdotnet/JDotNet/Microsoft/Devices/Sensors/SensorFailedException.java @@ -0,0 +1,15 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.openeggbert.jdotnet.JDotNet.Microsoft.Devices.Sensors; + +import com.openeggbert.jdotnet.System.Exception_; + +/** + * + * @author robertvokac + */ +public class SensorFailedException extends Exception_{ + +} diff --git a/src/main/java/com/openeggbert/jdotnet/System/Collections/Generic/List_.java b/src/main/java/com/openeggbert/jdotnet/System/Collections/Generic/List_.java new file mode 100644 index 0000000..04f9ade --- /dev/null +++ b/src/main/java/com/openeggbert/jdotnet/System/Collections/Generic/List_.java @@ -0,0 +1,60 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.openeggbert.jdotnet.System.Collections.Generic; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import lombok.NoArgsConstructor; + +/** + * + * @author robertvokac + */ +@NoArgsConstructor +public class List_ implements Iterable { + + private final List internalList = new ArrayList<>(); + + public List_ (List_ oldList) { + for (T item : oldList) { + Add(item); + } + } + + public void Clear() { + internalList.clear(); + } + + public T ElementAt(int i) { + return internalList.get(i); + } + + public T Add(T item) { + internalList.add(item); + return item; + } + + public T YieldReturn(T item) { + return Add(item); + } + + @Override + public Iterator iterator() { + return internalList.iterator(); + } + + public Iterable Reverse() { + List_ copy = new List_(this); + Collections.reverse(copy.internalList); + return copy.internalList; + } + + public boolean Contains(T o) { + return internalList.contains(o); + } + +} diff --git a/src/main/java/com/openeggbert/jdotnet/System/Diagnostics/Debug.java b/src/main/java/com/openeggbert/jdotnet/System/Diagnostics/Debug.java index 544c0f6..a23e001 100644 --- a/src/main/java/com/openeggbert/jdotnet/System/Diagnostics/Debug.java +++ b/src/main/java/com/openeggbert/jdotnet/System/Diagnostics/Debug.java @@ -9,6 +9,9 @@ package com.openeggbert.jdotnet.System.Diagnostics; * @author robertvokac */ public class Debug { + public static void WriteLine(String msg) { + Write(msg + "\n"); + } public static void Write(String msg) { //todo } diff --git a/src/main/java/com/openeggbert/jdotnet/System/IDisposable.java b/src/main/java/com/openeggbert/jdotnet/System/IDisposable.java index 357329a..09c8095 100644 --- a/src/main/java/com/openeggbert/jdotnet/System/IDisposable.java +++ b/src/main/java/com/openeggbert/jdotnet/System/IDisposable.java @@ -9,5 +9,7 @@ package com.openeggbert.jdotnet.System; * @author robertvokac */ public interface IDisposable { - + + void Dispose(); + } diff --git a/src/main/java/com/openeggbert/jdotnet/System/String_.java b/src/main/java/com/openeggbert/jdotnet/System/String_.java index 0b28921..b0e015e 100644 --- a/src/main/java/com/openeggbert/jdotnet/System/String_.java +++ b/src/main/java/com/openeggbert/jdotnet/System/String_.java @@ -4,16 +4,68 @@ */ package com.openeggbert.jdotnet.System; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import lombok.Getter; + /** * * @author robertvokac */ public class String_ { - private String_() { + + protected String_() { //Not meant to be instantiated. } + @Getter + private String value; + + public static boolean IsNullOrEmpty(String string) { return string == null || string.isEmpty(); } + + public static String Format(String template, Object... args) { + if (template == null || args == null) { + throw new IllegalArgumentException("Template and arguments must not be null."); + } + + Pattern pattern = Pattern.compile("\\{(\\d+)}"); + Matcher matcher = pattern.matcher(template); + StringBuffer result = new StringBuffer(); + + while (matcher.find()) { + String placeholder = matcher.group(1); + int index = Integer.parseInt(placeholder); + + if (index < 0 || index >= args.length) { + throw new IllegalArgumentException("Placeholder index out of range: " + index); + } + + matcher.appendReplacement(result, args[index].toString()); + } + + // Přidej zbývající část šablony + matcher.appendTail(result); + + return result.toString(); + } + public String_(char ch, int times) { + if(times < 0) { + throw new Exception_("times cannot be less than 0"); + } + if(times == 0) {value = "";return;} + if(times == 1) {value = String.valueOf(ch); return;} + StringBuilder sb = new StringBuilder(); + for(int i = 0;i< times;i++) { + sb.append(ch); + } + value = sb.toString(); + } + + @Override + public String toString() { + return getValue(); + } } diff --git a/src/main/java/com/openeggbert/jdotnet/System/SystemException.java b/src/main/java/com/openeggbert/jdotnet/System/SystemException.java new file mode 100644 index 0000000..2971c20 --- /dev/null +++ b/src/main/java/com/openeggbert/jdotnet/System/SystemException.java @@ -0,0 +1,14 @@ +package com.openeggbert.jdotnet.System; + +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ + +/** + * + * @author robertvokac + */ +public class SystemException extends Exception_{ + +} diff --git a/src/main/java/com/openeggbert/jdotnet/System/TimeSpan.java b/src/main/java/com/openeggbert/jdotnet/System/TimeSpan.java index 2201c88..fa34928 100644 --- a/src/main/java/com/openeggbert/jdotnet/System/TimeSpan.java +++ b/src/main/java/com/openeggbert/jdotnet/System/TimeSpan.java @@ -4,11 +4,32 @@ */ package com.openeggbert.jdotnet.System; +import com.openeggbert.jdotnet.JDotNet.CSharpKeyWords.Struct; +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; + /** * * @author robertvokac */ -public class TimeSpan { +@AllArgsConstructor +@NoArgsConstructor +public class TimeSpan extends Struct { public static TimeSpan FromTicks(long ticks) {return null;} public static TimeSpan FromSeconds(double seconds) {return null;} + private long _ticks; + public long Ticks() { + return this._ticks; + } + + @Override + public TimeSpan copy() { + return new TimeSpan(_ticks); + } + + @Override + public TimeSpan reset() { + this._ticks = 0l; + return this; + } } diff --git a/src/main/java/com/openeggbert/jdotnet/System/UInt32.java b/src/main/java/com/openeggbert/jdotnet/System/UInt32.java new file mode 100644 index 0000000..c51ac32 --- /dev/null +++ b/src/main/java/com/openeggbert/jdotnet/System/UInt32.java @@ -0,0 +1,21 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.openeggbert.jdotnet.System; + +import com.openeggbert.jdotnet.JDotNet.CSharpKeyWords.Const; + +/** + * + * @author robertvokac + */ +public class UInt32 { + + protected UInt32() { + //Not meant to be instantiated. + } + public @Const static final long MaxValue = 0xFFFFFFFFL; // 32-bit unsigned maximum value + public @Const static final long MinValue = 0; + +} diff --git a/src/main/java/com/openeggbert/jdotnet/System/UnauthorizedAccessException.java b/src/main/java/com/openeggbert/jdotnet/System/UnauthorizedAccessException.java new file mode 100644 index 0000000..b86e656 --- /dev/null +++ b/src/main/java/com/openeggbert/jdotnet/System/UnauthorizedAccessException.java @@ -0,0 +1,14 @@ +package com.openeggbert.jdotnet.System; + +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ + +/** + * + * @author robertvokac + */ +public class UnauthorizedAccessException extends SystemException { + +} diff --git a/src/main/java/com/openeggbert/jdotnet/System/Collections/Generic/NewClass.java b/src/main/java/com/openeggbert/jdotnet/System/string.java similarity index 74% rename from src/main/java/com/openeggbert/jdotnet/System/Collections/Generic/NewClass.java rename to src/main/java/com/openeggbert/jdotnet/System/string.java index b424bc6..cccae69 100644 --- a/src/main/java/com/openeggbert/jdotnet/System/Collections/Generic/NewClass.java +++ b/src/main/java/com/openeggbert/jdotnet/System/string.java @@ -2,12 +2,14 @@ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template */ -package com.openeggbert.jdotnet.System.Collections.Generic; +package com.openeggbert.jdotnet.System; + /** * * @author robertvokac */ -public class NewClass { +public class string extends String_ { + } diff --git a/src/main/java/com/openeggbert/jdotnet/System/uint.java b/src/main/java/com/openeggbert/jdotnet/System/uint.java new file mode 100644 index 0000000..ceb13eb --- /dev/null +++ b/src/main/java/com/openeggbert/jdotnet/System/uint.java @@ -0,0 +1,17 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.openeggbert.jdotnet.System; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import lombok.Getter; + +/** + * + * @author robertvokac + */ +public class uint extends UInt32 { + +}