From 705874ef9ea5fa5568c97d524967de245f15d4e1 Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Thu, 21 Apr 2022 20:19:00 +0300 Subject: [PATCH] dependency resolver changed --- DTLib.Dtsod/DTLib.Dtsod.csproj | 2 +- DTLib.Dtsod/Dependencies/kerep.dll | Bin 38912 -> 0 bytes .../Dependencies/{ => linux/x64}/kerep.so | Bin 77840 -> 77840 bytes .../Dependencies/windows/x64/kerep.dll | Bin 0 -> 47616 bytes .../Dependencies/windows/x86/kerep.dll | Bin 0 -> 40448 bytes DTLib.Dtsod/V24/Autoarr/Autoarr.cs | 22 +++------ DTLib.Dtsod/V24/DependencyResolver.cs | 20 --------- DTLib.Dtsod/V24/DtsodV24.cs | 36 ++++++++++----- DTLib.Dtsod/V24/DtsodV24Functions.cs | 20 +++++---- DTLib.Dtsod/V24/KerepTypes/Unitype.cs | 42 ------------------ DTLib.Tests/DtsodV24/TestDtsodV24.cs | 29 +++++++----- DTLib.Tests/DtsodV24/lists.dtsod | 3 +- DTLib.Tests/Program.cs | 5 ++- DTLib/DependencyResolver.cs | 36 +++++++++++++++ kerep | 2 +- 15 files changed, 102 insertions(+), 115 deletions(-) delete mode 100644 DTLib.Dtsod/Dependencies/kerep.dll rename DTLib.Dtsod/Dependencies/{ => linux/x64}/kerep.so (64%) create mode 100644 DTLib.Dtsod/Dependencies/windows/x64/kerep.dll create mode 100644 DTLib.Dtsod/Dependencies/windows/x86/kerep.dll delete mode 100644 DTLib.Dtsod/V24/DependencyResolver.cs create mode 100644 DTLib/DependencyResolver.cs mode change 120000 => 160000 kerep diff --git a/DTLib.Dtsod/DTLib.Dtsod.csproj b/DTLib.Dtsod/DTLib.Dtsod.csproj index 9fc92a5..a37ad21 100644 --- a/DTLib.Dtsod/DTLib.Dtsod.csproj +++ b/DTLib.Dtsod/DTLib.Dtsod.csproj @@ -25,7 +25,7 @@ - + Always diff --git a/DTLib.Dtsod/Dependencies/kerep.dll b/DTLib.Dtsod/Dependencies/kerep.dll deleted file mode 100644 index 0a231e7963b8d91c73b8c441bfad92dc109b2448..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38912 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 E0xS93c>n+a diff --git a/DTLib.Dtsod/Dependencies/kerep.so b/DTLib.Dtsod/Dependencies/linux/x64/kerep.so similarity index 64% rename from DTLib.Dtsod/Dependencies/kerep.so rename to DTLib.Dtsod/Dependencies/linux/x64/kerep.so index 656d2a8111335b16bdb5e8d22f7ecd17d770a6b3..c1abf1cf0aceb20bef278975d9c35f69eb126272 100644 GIT binary patch delta 10764 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 JGm*r0`X7iohiCu* delta 10376 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 diff --git a/DTLib.Dtsod/Dependencies/windows/x64/kerep.dll b/DTLib.Dtsod/Dependencies/windows/x64/kerep.dll new file mode 100644 index 0000000000000000000000000000000000000000..bdf280b1e0e6830c412e886949cb28f991a98ba2 GIT binary patch literal 47616 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 literal 0 HcmV?d00001 diff --git a/DTLib.Dtsod/Dependencies/windows/x86/kerep.dll b/DTLib.Dtsod/Dependencies/windows/x86/kerep.dll new file mode 100644 index 0000000000000000000000000000000000000000..a760280a74e39dacb3cbbbd89bfc93d5d1a26a1b GIT binary patch literal 40448 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 O>MY*LL : IEnumerable, IDisposable where T : struct public void Dispose() { - Funcs.Free(UnmanagedPtr); + if(AutoDispose) + Funcs.Free(UnmanagedPtr); } - public IEnumerator GetEnumerator() - { - return new AutoarrEnumerator(this); - } + public IEnumerator GetEnumerator() => new AutoarrEnumerator(this); - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); public void Add(T value) { @@ -79,17 +74,12 @@ public class Autoarr : IEnumerable, IDisposable where T : struct private readonly Autoarr arr; private uint index; - public AutoarrEnumerator(Autoarr ar) - { - arr = ar; - } + public AutoarrEnumerator(Autoarr ar) => arr = ar; public T Current { get; private set; } object IEnumerator.Current => Current; - public void Dispose() - { - } + public void Dispose() { } public bool MoveNext() { diff --git a/DTLib.Dtsod/V24/DependencyResolver.cs b/DTLib.Dtsod/V24/DependencyResolver.cs deleted file mode 100644 index 477d698..0000000 --- a/DTLib.Dtsod/V24/DependencyResolver.cs +++ /dev/null @@ -1,20 +0,0 @@ -using DTLib.Filesystem; - -namespace DTLib.Dtsod.V24; - -public static class DependencyResolver -{ - private static bool KerepCopied=false; - - public static void CopyLibs() - { - if(KerepCopied) return; - - string kereplib = Environment.OSVersion.Platform == PlatformID.Win32NT - ? "kerep.dll" - : "kerep.so"; - File.Copy($"Dependencies{Путь.Разд}{kereplib}",kereplib, true); - KerepCopied = true; - Log("g",$"{kereplib} copied"); - } -} \ No newline at end of file diff --git a/DTLib.Dtsod/V24/DtsodV24.cs b/DTLib.Dtsod/V24/DtsodV24.cs index 2b658e2..7ca6b41 100644 --- a/DTLib.Dtsod/V24/DtsodV24.cs +++ b/DTLib.Dtsod/V24/DtsodV24.cs @@ -4,7 +4,7 @@ using Funcs=DTLib.Dtsod.V24.DtsodV24Functions; namespace DTLib.Dtsod.V24; -public class DtsodV24 : IDtsod, IEnumerable>, IDisposable +public class DtsodV24 : IDtsod, IEnumerable, IDisposable { public DtsodVersion Version => DtsodVersion.V24; public readonly DtsodPtr UnmanagedPtr; @@ -29,7 +29,9 @@ public class DtsodV24 : IDtsod, IEnumerable>, IDisposable public IDictionary ToDictionary() { DtsodDict dict = new(); - throw new NotImplementedException(); + foreach (var p in this) + dict.Add(p.key,p.value.ToDynamic()); + return dict; } @@ -68,31 +70,41 @@ public class DtsodV24 : IDtsod, IEnumerable>, IDisposable } - public IEnumerator> GetEnumerator() => new DtsodV24Enumerator(this); + public IEnumerator GetEnumerator() => new DtsodV24Enumerator(this); IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); - class DtsodV24Enumerator: IEnumerator> + class DtsodV24Enumerator: IEnumerator { private readonly DtsodV24 d; private ushort h; + private IEnumerator arEnumerator; public DtsodV24Enumerator(DtsodV24 _d) => d = _d; - - public void Dispose() { } + bool NextAr() + { + if (h >= Funcs.Height(d.UnmanagedPtr)) return false; + var ar = new Autoarr(Funcs.GetRow(d.UnmanagedPtr, h), false); + arEnumerator = ar.GetEnumerator(); + h++; + return true; + } + public bool MoveNext() { - if(h >= Funcs.Height(d.UnmanagedPtr)) return false; - Current = new Autoarr(Funcs.GetRow(d.UnmanagedPtr,h), false); - h++; + if(arEnumerator==null) + NextAr(); + while(!arEnumerator.MoveNext()) + if(!NextAr()) return false; + Current = arEnumerator.Current; return true; } public void Reset() => h = 0; - - public Autoarr Current { get; private set; } - + public KVPair Current { get; private set; } object IEnumerator.Current => Current; + + public void Dispose() { } } } \ No newline at end of file diff --git a/DTLib.Dtsod/V24/DtsodV24Functions.cs b/DTLib.Dtsod/V24/DtsodV24Functions.cs index 73b08e0..16ea055 100644 --- a/DTLib.Dtsod/V24/DtsodV24Functions.cs +++ b/DTLib.Dtsod/V24/DtsodV24Functions.cs @@ -9,6 +9,8 @@ namespace DTLib.Dtsod.V24; internal static class DtsodV24Functions { + private const string kereplib = "kerep"; + static DtsodV24Functions() { DependencyResolver.CopyLibs(); @@ -24,7 +26,7 @@ internal static class DtsodV24Functions //parses text to binary values - [DllImport("kerep", CallingConvention = CallingConvention.Cdecl)] + [DllImport(kereplib, CallingConvention = CallingConvention.Cdecl)] static extern void kerep_DtsodV24_deserialize(string text, out DtsodPtr output, out CharPtr errmsg); internal static DtsodPtr Deserialize(string text) { @@ -34,7 +36,7 @@ internal static class DtsodV24Functions } //creates text representation of dtsod - [DllImport("kerep", CallingConvention = CallingConvention.Cdecl)] + [DllImport(kereplib, CallingConvention = CallingConvention.Cdecl)] static extern void kerep_DtsodV24_serialize(DtsodPtr dtsod, out CharPtr output, out CharPtr errmsg); internal static string Serialize(DtsodPtr dtsod) { @@ -43,7 +45,7 @@ internal static class DtsodV24Functions return Marshal.PtrToStringUTF8(text); } - [DllImport("kerep", CallingConvention = CallingConvention.Cdecl)] + [DllImport(kereplib, CallingConvention = CallingConvention.Cdecl)] static extern void kerep_DtsodV24_get(DtsodPtr dtsod, string key, out Unitype output); //returns value or UniNull if key not found internal static Unitype Get(DtsodPtr dtsod, string key) @@ -52,7 +54,7 @@ internal static class DtsodV24Functions return output; } - [DllImport("kerep",EntryPoint = "kerep_DtsodV24_addOrSet",CallingConvention = CallingConvention.Cdecl)] + [DllImport(kereplib,EntryPoint = "kerep_DtsodV24_addOrSet",CallingConvention = CallingConvention.Cdecl)] //adds or sets value static extern void kerep_DtsodV24_addOrSet(DtsodPtr dtsod, IntPtr key, Unitype value); @@ -62,7 +64,7 @@ internal static class DtsodV24Functions kerep_DtsodV24_addOrSet(dtsod, keyptr, value); } - [DllImport("kerep", CallingConvention = CallingConvention.Cdecl)] + [DllImport(kereplib, CallingConvention = CallingConvention.Cdecl)] //checks for dtsod contains value or dont static extern void kerep_DtsodV24_contains(DtsodPtr dtsod, string key, [MarshalAs(UnmanagedType.I1)] out bool output); internal static bool Contains(DtsodPtr dtsod, string key) @@ -71,7 +73,7 @@ internal static class DtsodV24Functions return output; } - [DllImport("kerep", CallingConvention = CallingConvention.Cdecl)] + [DllImport(kereplib, CallingConvention = CallingConvention.Cdecl)] static extern void kerep_DtsodV24_remove(DtsodPtr dtsod, string key, [MarshalAs(UnmanagedType.I1)] out bool output); //replaces value with UniNull if key exists in dtsod internal static bool Remove(DtsodPtr dtsod, string key) @@ -80,11 +82,11 @@ internal static class DtsodV24Functions return output; } - [DllImport("kerep",EntryPoint="kerep_DtsodV24_free", CallingConvention = CallingConvention.Cdecl)] + [DllImport(kereplib,EntryPoint="kerep_DtsodV24_free", CallingConvention = CallingConvention.Cdecl)] //replaces value with UniNull if key exists in dtsod internal static extern void Free(DtsodPtr dtsod); - [DllImport("kerep", CallingConvention = CallingConvention.Cdecl)] + [DllImport(kereplib, CallingConvention = CallingConvention.Cdecl)] static extern void kerep_DtsodV24_height(DtsodPtr dtsod, out ushort heigth); //returns current amounts of rows (Autoarrs of KVPairs) in hashtable internal static ushort Height(DtsodPtr ptr) @@ -93,7 +95,7 @@ internal static class DtsodV24Functions return h; } - [DllImport("kerep", CallingConvention = CallingConvention.Cdecl)] + [DllImport(kereplib, CallingConvention = CallingConvention.Cdecl)] static extern void kerep_DtsodV24_getrow(DtsodPtr dtsod, ushort h, out AutoarrKVPairPtr row); //Returns row from hashtable. //check current hashtable height before calling this. diff --git a/DTLib.Dtsod/V24/KerepTypes/Unitype.cs b/DTLib.Dtsod/V24/KerepTypes/Unitype.cs index da38370..6845e72 100644 --- a/DTLib.Dtsod/V24/KerepTypes/Unitype.cs +++ b/DTLib.Dtsod/V24/KerepTypes/Unitype.cs @@ -65,48 +65,6 @@ public struct Unitype default: throw new Exception($"can't box value of type {TypeCode}"); } } - - /*public Unitype(bool v) : this() - { - TypeCode = KerepTypeCode.Bool; - Bool = v; - } - public Unitype(int v) : this() - { - TypeCode = KerepTypeCode.Int64; - Int64 = v; - } - public Unitype(uint v) : this() - { - TypeCode = KerepTypeCode.UInt64; - UInt64 = v; - } - public Unitype(double v) : this() - { - TypeCode = KerepTypeCode.Float64; - Float64 = v; - } - public Unitype(string s) : this() - { - TypeCode = KerepTypeCode.CharPtr; - VoidPtr = s.ToHGlobalUTF8(); - } - - public Unitype(Autoarr v) : this() - { - TypeCode = KerepTypeCode.AutoarrUnitypePtr; - VoidPtr = v.UnmanagedPtr; - } - public Unitype(Autoarr v) : this() - { - TypeCode = KerepTypeCode.AutoarrKVPairPtr; - VoidPtr = v.UnmanagedPtr; - } - public Unitype(DtsodV24 v) : this() - { - TypeCode = KerepTypeCode.HashtablePtr; - VoidPtr = v.UnmanagedPtr; - }*/ public dynamic ToDynamic() { diff --git a/DTLib.Tests/DtsodV24/TestDtsodV24.cs b/DTLib.Tests/DtsodV24/TestDtsodV24.cs index a4fcf90..497214b 100644 --- a/DTLib.Tests/DtsodV24/TestDtsodV24.cs +++ b/DTLib.Tests/DtsodV24/TestDtsodV24.cs @@ -19,11 +19,8 @@ public static class TestDtsodV24 { Info.Log("c", "-----[TestDtsodV24/TestBaseTypes]-----"); DtsodV24 dtsod = new(File.ReadAllText($"DtsodV24{Путь.Разд}base_types.dtsod")); - foreach (var autoarr in dtsod) - { - foreach (KVPair pair in autoarr) - Info.LogNoTime("b", pair.ToString()); - } + foreach (var pair in dtsod) + Info.LogNoTime("b", pair.ToString()); Info.Log("g", "test completed"); } @@ -39,14 +36,24 @@ public static class TestDtsodV24 { Info.Log("c", "-------[TestDtsodV24/TestLists]-------"); DtsodV24 dtsod = new(File.ReadAllText($"DtsodV24{Путь.Разд}lists.dtsod")); - foreach (var autoarr in dtsod) - foreach (KVPair pair in autoarr) + foreach (KVPair pair in dtsod) + { + var list = new Autoarr(pair.value.VoidPtr, false); + Info.LogNoTime("b", pair.key.ToStringUTF8(), "w", $" length: {list.Length}"); + foreach (var el in list) { - var list = new Autoarr(pair.value.VoidPtr, false); - Info.LogNoTime("b", pair.key.ToStringUTF8(), "w", $" length: {list.Length}"); - foreach (var el in list) - Info.LogNoTime("h", '\t' + el.ToString()); + Info.LogNoTime("h", '\t' + el.ToString()); + if (el.TypeCode == KerepTypeCode.AutoarrUnitypePtr) + { + var ar = new Autoarr(el.VoidPtr, false); + foreach (var k in ar) + { + Info.LogNoTime($"\t\t{k.ToString()}"); + } + } } + } + Info.Log("y",dtsod.ToString()); Info.Log("g", "test completed"); } diff --git a/DTLib.Tests/DtsodV24/lists.dtsod b/DTLib.Tests/DtsodV24/lists.dtsod index 921034e..c43f109 100644 --- a/DTLib.Tests/DtsodV24/lists.dtsod +++ b/DTLib.Tests/DtsodV24/lists.dtsod @@ -12,4 +12,5 @@ $complex: { e:005; f:-1f; }; -list_of_lists: [ ["sss"]]; \ No newline at end of file +list_of_lists: [ [ "sss" ] ]; +blank_list: []; diff --git a/DTLib.Tests/Program.cs b/DTLib.Tests/Program.cs index aedf62c..f699649 100644 --- a/DTLib.Tests/Program.cs +++ b/DTLib.Tests/Program.cs @@ -28,10 +28,11 @@ public static class Program Console.Title="tester"; try { - TestPInvoke.TestAll(); + /*TestPInvoke.TestAll(); TestAutoarr.TestAll(); TestDtsodV23.TestAll(); - TestDtsodV24.TestAll(); + TestDtsodV24.TestAll();*/ + TestDtsodV24.TestLists(); } catch (Exception ex) { Info.Log("r", ex.ToString()); } diff --git a/DTLib/DependencyResolver.cs b/DTLib/DependencyResolver.cs new file mode 100644 index 0000000..560cff2 --- /dev/null +++ b/DTLib/DependencyResolver.cs @@ -0,0 +1,36 @@ +using System.Runtime.InteropServices; + +namespace DTLib; + +public static class DependencyResolver +{ + private static bool DepsCopied=false; + + public static void CopyLibs() + { + if(DepsCopied) return; + string depsdir = "Dependencies" + Путь.Разд; + depsdir += Environment.OSVersion.Platform switch + { + PlatformID.Unix => "linux", + PlatformID.Win32NT => "windows", + _=> throw new Exception($"unsupported os {Environment.OSVersion.Platform}") + }; + depsdir += Путь.Разд; + depsdir += RuntimeInformation.ProcessArchitecture switch + { + Architecture.X64 => "x64", + Architecture.X86 => "x86", + Architecture.Arm64 => "arm64", + Architecture.Arm => "arm", + _=> throw new Exception($"unsupported platform {RuntimeInformation.ProcessArchitecture}") + }; + foreach (var file in Directory.GetAllFiles(depsdir)) + { + var extracted = file.Substring(file.LastIndexOf(Путь.Разд) + 1); + File.Copy(file,extracted, true); + Log("g",$"{extracted} copied"); + } + DepsCopied = true; + } +} \ No newline at end of file diff --git a/kerep b/kerep deleted file mode 120000 index 6587f45..0000000 --- a/kerep +++ /dev/null @@ -1 +0,0 @@ -/mnt/win10-old/projects/kerep \ No newline at end of file diff --git a/kerep b/kerep new file mode 160000 index 0000000..009174e --- /dev/null +++ b/kerep @@ -0,0 +1 @@ +Subproject commit 009174ecfc3899fc615fcd2d6e9f64256b0f4e65