From 34c4f1c727bff0b65ac7c3253de120861ee70e3a Mon Sep 17 00:00:00 2001 From: Pascal Schedel Date: Mon, 21 Oct 2024 09:12:54 +0200 Subject: [PATCH] convert Pilz.Collections to c# --- Pilz.Collections/App.config | 6 - Pilz.Collections/Pilz.Collections.csproj | 16 + Pilz.Collections/Pilz.Collections.vbproj | 62 -- Pilz.Collections/SimpleHistory/Enums.vb | 12 - .../SimpleHistory/HistoryPoint.cs | 615 ++++++++++++++++++ .../SimpleHistory/HistoryPoint.vb | 543 ---------------- Pilz.Collections/SimpleHistory/MemberLists.cs | 31 + Pilz.Collections/SimpleHistory/MemberLists.vb | 33 - .../SimpleHistory/ObjectAction.cs | 176 +++++ .../SimpleHistory/ObjectAction.vb | 164 ----- Pilz.Collections/SimpleHistory/ObjectBase.cs | 10 + Pilz.Collections/SimpleHistory/ObjectBase.vb | 13 - Pilz.Collections/SimpleHistory/ObjectState.cs | 88 +++ Pilz.Collections/SimpleHistory/ObjectState.vb | 84 --- .../SimpleHistory/ObjectValueType.cs | 11 + .../SimpleHistory/ObjectValueType.vb | 12 - .../SimpleHistory/SimpleHistory.cs | 101 +++ .../SimpleHistory/SimpleHistory.vb | 111 ---- Pilz.sln | 18 +- Pilz.sln.bak | 231 +++++++ 20 files changed, 1288 insertions(+), 1049 deletions(-) delete mode 100644 Pilz.Collections/App.config create mode 100644 Pilz.Collections/Pilz.Collections.csproj delete mode 100644 Pilz.Collections/Pilz.Collections.vbproj delete mode 100644 Pilz.Collections/SimpleHistory/Enums.vb create mode 100644 Pilz.Collections/SimpleHistory/HistoryPoint.cs delete mode 100644 Pilz.Collections/SimpleHistory/HistoryPoint.vb create mode 100644 Pilz.Collections/SimpleHistory/MemberLists.cs delete mode 100644 Pilz.Collections/SimpleHistory/MemberLists.vb create mode 100644 Pilz.Collections/SimpleHistory/ObjectAction.cs delete mode 100644 Pilz.Collections/SimpleHistory/ObjectAction.vb create mode 100644 Pilz.Collections/SimpleHistory/ObjectBase.cs delete mode 100644 Pilz.Collections/SimpleHistory/ObjectBase.vb create mode 100644 Pilz.Collections/SimpleHistory/ObjectState.cs delete mode 100644 Pilz.Collections/SimpleHistory/ObjectState.vb create mode 100644 Pilz.Collections/SimpleHistory/ObjectValueType.cs delete mode 100644 Pilz.Collections/SimpleHistory/ObjectValueType.vb create mode 100644 Pilz.Collections/SimpleHistory/SimpleHistory.cs delete mode 100644 Pilz.Collections/SimpleHistory/SimpleHistory.vb create mode 100644 Pilz.sln.bak diff --git a/Pilz.Collections/App.config b/Pilz.Collections/App.config deleted file mode 100644 index a932133..0000000 --- a/Pilz.Collections/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Pilz.Collections/Pilz.Collections.csproj b/Pilz.Collections/Pilz.Collections.csproj new file mode 100644 index 0000000..03d7757 --- /dev/null +++ b/Pilz.Collections/Pilz.Collections.csproj @@ -0,0 +1,16 @@ + + + + + + net8.0 + latest + enable + enable + + + + 2.0.0 + + + \ No newline at end of file diff --git a/Pilz.Collections/Pilz.Collections.vbproj b/Pilz.Collections/Pilz.Collections.vbproj deleted file mode 100644 index c95b375..0000000 --- a/Pilz.Collections/Pilz.Collections.vbproj +++ /dev/null @@ -1,62 +0,0 @@ - - - - netstandard2.0;net8.0 - Pilz.Collections.xml - true - - - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022,40008 - - - false - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - true - - - On - - - Binary - - - Off - On - - - 2.0.0 - - - true - bin\$(Platform)\$(Configuration)\ - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022,40008 - MinimumRecommendedRules.ruleset - true - - - bin\$(Platform)\$(Configuration)\ - true - 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 - MinimumRecommendedRules.ruleset - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Pilz.Collections/SimpleHistory/Enums.vb b/Pilz.Collections/SimpleHistory/Enums.vb deleted file mode 100644 index 8438552..0000000 --- a/Pilz.Collections/SimpleHistory/Enums.vb +++ /dev/null @@ -1,12 +0,0 @@ -Namespace SimpleHistory - - ''' - ''' Specify which member types you would include. - ''' - Public Enum ObjectValueType - None = 0 - Field = 1 - [Property] = 2 - End Enum - -End Namespace \ No newline at end of file diff --git a/Pilz.Collections/SimpleHistory/HistoryPoint.cs b/Pilz.Collections/SimpleHistory/HistoryPoint.cs new file mode 100644 index 0000000..bb92aa9 --- /dev/null +++ b/Pilz.Collections/SimpleHistory/HistoryPoint.cs @@ -0,0 +1,615 @@ +using System.Data; +using System.Reflection; + +namespace Pilz.Collections.SimpleHistory; + +/// +/// Represent some Object States and Actions. +/// +public class HistoryPoint +{ + /// + /// Represents the Name of this History Point + /// + /// + public string Name { get; set; } = string.Empty; + + /// + /// A List of Object States and Actions. + /// + /// + public List Entries { get; } = []; + + /// + /// Some data can be refered on this HistoryPoint. Don't know, in some situations this can be helpful. + /// + public readonly object? Tag = null; + + public bool HasEntries() where T : ObjectBase + { + return Entries.Where(n => n is T).Any(); + } + + internal void Undo() + { + foreach (var s in Entries.OrderBy(n => n.UndoPriority)) + { + switch (s) + { + case ObjectState state: + state.Patch(); + break; + case ObjectAction action: + action.Undo(); + break; + } + } + } + + internal void Redo() + { + foreach (var s in Entries.OrderBy(n => n.RedoPriority)) + { + switch (s) + { + case ObjectState state: + state.Patch(); + break; + case ObjectAction action: + action.Redo(); + break; + } + } + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// Specify which members to include. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] obj, MemberWhiteList whiteList) + { + return FromObject([obj], ObjectValueType.None, (object)whiteList, BindingFlags.Default); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// Specify which members to exclude. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] obj, MemberBlackList blackList) + { + return FromObject([obj], ObjectValueType.None, (object)blackList, BindingFlags.Default); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// The member names to include. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] obj, params string[] memberName) + { + return FromObject(obj, true, memberName); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// If true, the memberName-Array has member names that should be included. + /// The member names to include/exclude. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] obj, bool isWhiteList, params string[] memberName) + { + if (isWhiteList) + return FromObject([obj], ObjectValueType.None, (object)new MemberWhiteList(memberName), BindingFlags.Default); + else + return FromObject([obj], ObjectValueType.None, (object)new MemberBlackList(memberName), BindingFlags.Default); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// Specify what member types to include. + /// The member names to include. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] obj, ObjectValueType membersToStore, params string[] memberName) + { + return FromObject(obj, membersToStore, true, memberName); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// Specify what member types to include. + /// If true, the memberName-Array has member names that should be included. + /// The member names to include/exclude. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] obj, ObjectValueType membersToStore, bool isWhiteList, params string[] memberName) + { + if (isWhiteList) + return FromObject([obj], membersToStore, (object)new MemberWhiteList(memberName), BindingFlags.Default); + else + return FromObject([obj], membersToStore, (object)new MemberBlackList(memberName), BindingFlags.Default); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// The Binding Flags that the members should have. + /// The member names to include. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] obj, BindingFlags flags, params string[] memberName) + { + return FromObject(obj, flags, true, memberName); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// The Binding Flags that the members should have. + /// If true, the memberName-Array has member names that should be included. + /// The member names to include/exclude. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] obj, BindingFlags flags, bool isWhiteList, params string[] memberName) + { + if (isWhiteList) + return FromObject([obj], ObjectValueType.None, (object)new MemberWhiteList(memberName), flags); + else + return FromObject([obj], ObjectValueType.None, (object)new MemberBlackList(memberName), flags); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// Specify what member types to include. + /// The Binding Flags that the members should have. + /// The member names to include. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] obj, ObjectValueType membersToStore, BindingFlags flags, params string[] memberName) + { + return FromObject(obj, flags, true, memberName); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// Specify what member types to include. + /// The Binding Flags that the members should have. + /// If true, the memberName-Array has member names that should be included. + /// The member names to include/exclude. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] obj, ObjectValueType membersToStore, BindingFlags flags, bool isWhiteList, params string[] memberName) + { + if (isWhiteList) + return FromObject([obj], membersToStore, (object)new MemberWhiteList(memberName), flags); + else + return FromObject([obj], membersToStore, (object)new MemberBlackList(memberName), flags); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// Specify which members to include. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, MemberWhiteList whiteList) + { + return FromObject([obj], ObjectValueType.None, (object)whiteList, BindingFlags.Default); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// Specify which members to exclude. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, MemberBlackList blackList) + { + return FromObject([obj], ObjectValueType.None, (object)blackList, BindingFlags.Default); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// The member names to include/exclude. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, params string[] memberName) + { + return FromObject(obj, true, memberName); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// If true, the memberName-Array has member names that should be included. + /// The member names to include/exclude. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, bool isWhiteList, params string[] memberName) + { + if (isWhiteList) + return FromObject([obj], ObjectValueType.None, (object)new MemberWhiteList(memberName), BindingFlags.Default); + else + return FromObject([obj], ObjectValueType.None, (object)new MemberBlackList(memberName), BindingFlags.Default); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// Specify what member types to include. + /// The member names to include. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, params string[] memberName) + { + return FromObject(obj, membersToStore, true, memberName); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// Specify what member types to include. + /// If true, the memberName-Array has member names that should be included. + /// The member names to include/exclude. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, bool isWhiteList, params string[] memberName) + { + if (isWhiteList) + return FromObject([obj], membersToStore, (object)new MemberWhiteList(memberName), BindingFlags.Default); + else + return FromObject([obj], membersToStore, (object)new MemberBlackList(memberName), BindingFlags.Default); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// The Binding Flags that the members should have. + /// The member names to include. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, BindingFlags flags, params string[] memberName) + { + return FromObject(obj, flags, true, memberName); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// The Binding Flags that the members should have. + /// If true, the memberName-Array has member names that should be included. + /// The member names to include/exclude. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, BindingFlags flags, bool isWhiteList, params string[] memberName) + { + if (isWhiteList) + return FromObject([obj], ObjectValueType.None, (object)new MemberWhiteList(memberName), flags); + else + return FromObject([obj], ObjectValueType.None, (object)new MemberBlackList(memberName), flags); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// Specify what member types to include. + /// The Binding Flags that the members should have. + /// The member names to include. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, BindingFlags flags, params string[] memberName) + { + return FromObject(obj, flags, true, memberName); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// Specify what member types to include. + /// The Binding Flags that the members should have. + /// If true, the memberName-Array has member names that should be included. + /// The member names to include/exclude. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, BindingFlags flags, bool isWhiteList, params string[] memberName) + { + if (isWhiteList) + return FromObject([obj], membersToStore, (object)new MemberWhiteList(memberName), flags); + else + return FromObject([obj], membersToStore, (object)new MemberBlackList(memberName), flags); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj) + { + return FromObject([obj], ObjectValueType.None, default(object), BindingFlags.Default); + } + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// Specify what member types to include. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore) + { + return FromObject([obj], membersToStore, default(object), BindingFlags.Default); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// Specify what member types to include. + /// Specify which members to include. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, MemberWhiteList whiteList) + { + return FromObject([obj], membersToStore, (object)whiteList, BindingFlags.Default); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// Specify what member types to include. + /// Specify which members to exclude. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, MemberBlackList blackList) + { + return FromObject([obj], membersToStore, (object)blackList, BindingFlags.Default); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// The Binding Flags that the members should have. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, BindingFlags flags) + { + return FromObject([obj], ObjectValueType.None, default(object), flags); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// Specify what member types to include. + /// The Binding Flags that the members should have. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, BindingFlags flags) + { + return FromObject([obj], membersToStore, default(object), flags); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// Specify what member types to include. + /// Specify which members to include. + /// The Binding Flags that the members should have. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, MemberWhiteList whiteList, BindingFlags flags) + { + return FromObject([obj], membersToStore, (object)whiteList, flags); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The object that should be included. + /// Specify what member types to include. + /// Specify which members to exclude. + /// The Binding Flags that the members should have. + /// A History Point with Object States. + public static HistoryPoint FromObject(object obj, ObjectValueType membersToStore, MemberBlackList blackList, BindingFlags flags) + { + return FromObject([obj], membersToStore, (object)blackList, flags); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] objs) + { + return FromObject(objs, ObjectValueType.None, default(object), BindingFlags.Default); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// Specify what member types to include. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] objs, ObjectValueType membersToStore) + { + return FromObject(objs, membersToStore, default(object), BindingFlags.Default); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// Specify what member types to include. + /// Specify which members to include. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] objs, ObjectValueType membersToStore, MemberWhiteList whiteList) + { + return FromObject(objs, membersToStore, (object)whiteList, BindingFlags.Default); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// Specify what member types to include. + /// Specify which members to exclude. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] objs, ObjectValueType membersToStore, MemberBlackList blackList) + { + return FromObject(objs, membersToStore, (object)blackList, BindingFlags.Default); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// The Binding Flags that the members should have. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] objs, BindingFlags flags) + { + return FromObject(objs, ObjectValueType.None, default(object), flags); + } + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// Specify what member types to include. + /// The Binding Flags that the members should have. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] objs, ObjectValueType membersToStore, BindingFlags flags) + { + return FromObject(objs, membersToStore, default(object), flags); + } + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// Specify what member types to include. + /// Specify which members to include. + /// The Binding Flags that the members should have. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] objs, ObjectValueType membersToStore, MemberWhiteList whiteList, BindingFlags flags) + { + return FromObject(objs, membersToStore, (object)whiteList, flags); + } + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// Specify what member types to include. + /// Specify which members to exclude. + /// The Binding Flags that the members should have. + /// A History Point with Object States. + public static HistoryPoint FromObject(object[] objs, ObjectValueType membersToStore, MemberBlackList blackList, BindingFlags flags) + { + return FromObject(objs, membersToStore, (object)blackList, flags); + } + + /// + /// Creates an History Point with Object States automaticly from input. + /// + /// The objects that should be included. + /// Specify what member types to include. + /// Specify which members to include. + /// The Binding Flags that the members should have. + /// A History Point with Object States. + private static HistoryPoint FromObject(object[] objs, ObjectValueType membersToStore, object? whiteOrBlackList, BindingFlags flags) + { + var hp = new HistoryPoint(); + + whiteOrBlackList ??= new MemberBlackList(); + var isWhiteList = whiteOrBlackList is MemberWhiteList; + + if (flags == BindingFlags.Default) + flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; + + if (membersToStore == ObjectValueType.None) + membersToStore = ObjectValueType.Field | ObjectValueType.Property; + + foreach (var obj in objs) + { + if ((membersToStore & ObjectValueType.Field) == ObjectValueType.Field) + { + foreach (var fi in obj.GetType().GetFields(flags)) + { + var contains = ((List)whiteOrBlackList).Contains(fi.Name); + if (isWhiteList ? contains : !contains) + { + var os = new ObjectState + { + Object = obj, + MemberName = fi.Name, + MemberType = ObjectValueType.Field, + MemberFlags = flags, + ValueToPatch = fi.GetValue(obj) + }; + hp.Entries.Add(os); + } + } + } + + if ((membersToStore & ObjectValueType.Property) == ObjectValueType.Property) + { + foreach (var pi in obj.GetType().GetProperties(flags)) + { + var contains = ((List)whiteOrBlackList).Contains(pi.Name); + if (isWhiteList ? contains : !contains) + { + var os = new ObjectState + { + Object = obj, + MemberName = pi.Name, + MemberType = ObjectValueType.Property, + MemberFlags = flags, + ValueToPatch = pi.GetValue(obj) + }; + hp.Entries.Add(os); + } + } + } + } + + return hp; + } + + /// + /// Combines some History Points to one. + /// + /// An array of History Points to combine. + /// One History Point that contains all Data of inputted History Points. + public static HistoryPoint Concat(params HistoryPoint[] hps) + { + return Concat(null, hps); + } + + /// + /// Combines some History Points to one. + /// + /// An array of History Points to combine. + /// The new name for the History Point after concating. + /// One History Point that contains all Data of inputted History Points. + public static HistoryPoint Concat(string? newName, params HistoryPoint[] hps) + { + var hp = new HistoryPoint(); + + foreach (var _hp in hps) + hp.Entries.AddRange(_hp.Entries); + + if (newName != null) + hp.Name = newName; + else + hp.Name = hps.FirstOrDefault()?.Name ?? string.Empty; + + return hp; + } + +} \ No newline at end of file diff --git a/Pilz.Collections/SimpleHistory/HistoryPoint.vb b/Pilz.Collections/SimpleHistory/HistoryPoint.vb deleted file mode 100644 index daf5755..0000000 --- a/Pilz.Collections/SimpleHistory/HistoryPoint.vb +++ /dev/null @@ -1,543 +0,0 @@ -Imports System.Reflection - -Namespace SimpleHistory - - ''' - ''' Represent some Object States and Actions. - ''' - Public Class HistoryPoint - - ''' - ''' Represents the Name of this History Point - ''' - ''' - Public Property Name As String = "" - ''' - ''' A List of Object States and Actions. - ''' - ''' - Public ReadOnly Property Entries As New List(Of ObjectBase) - ''' - ''' Some data can be refered on this HistoryPoint. Don't know, in some situations this can be helpful. - ''' - Public ReadOnly Tag As Object = Nothing - - Public Function HasEntries(Of T As ObjectBase)() As Boolean - Return Entries.Where(Function(n) TypeOf n Is T).Count > 0 - End Function - - Friend Sub Undo() - For Each s As ObjectBase In Entries.OrderBy(Function(n) n.UndoPriority) - If TypeOf s Is ObjectState Then - CType(s, ObjectState).Patch() - ElseIf TypeOf s Is ObjectAction Then - CType(s, ObjectAction).Undo() - End If - Next - End Sub - - Friend Sub Redo() - For Each s As ObjectBase In Entries.OrderBy(Function(n) n.RedoPriority) - If TypeOf s Is ObjectState Then - CType(s, ObjectState).Patch() - ElseIf TypeOf s Is ObjectAction Then - CType(s, ObjectAction).Redo() - End If - Next - End Sub - - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' Specify which members to include. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object(), whiteList As MemberWhiteList) As HistoryPoint - Return FromObject({obj}, ObjectValueType.None, CObj(whiteList), BindingFlags.Default) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' Specify which members to exclude. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object(), blackList As MemberBlackList) As HistoryPoint - Return FromObject({obj}, ObjectValueType.None, CObj(blackList), BindingFlags.Default) - End Function - - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' The member names to include. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object(), ParamArray memberName As String()) As HistoryPoint - Return FromObject(obj, True, memberName) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' If true, the memberName-Array has member names that should be included. - ''' The member names to include/exclude. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object(), isWhiteList As Boolean, ParamArray memberName As String()) As HistoryPoint - If isWhiteList Then - Return FromObject({obj}, ObjectValueType.None, CObj(New MemberWhiteList(memberName)), BindingFlags.Default) - Else - Return FromObject({obj}, ObjectValueType.None, CObj(New MemberBlackList(memberName)), BindingFlags.Default) - End If - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' Specify what member types to include. - ''' The member names to include. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object(), membersToStore As ObjectValueType, ParamArray memberName As String()) As HistoryPoint - Return FromObject(obj, membersToStore, True, memberName) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' Specify what member types to include. - ''' If true, the memberName-Array has member names that should be included. - ''' The member names to include/exclude. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object(), membersToStore As ObjectValueType, isWhiteList As Boolean, ParamArray memberName As String()) As HistoryPoint - If isWhiteList Then - Return FromObject({obj}, membersToStore, CObj(New MemberWhiteList(memberName)), BindingFlags.Default) - Else - Return FromObject({obj}, membersToStore, CObj(New MemberBlackList(memberName)), BindingFlags.Default) - End If - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' The Binding Flags that the members should have. - ''' The member names to include. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object(), flags As BindingFlags, ParamArray memberName As String()) As HistoryPoint - Return FromObject(obj, flags, True, memberName) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' The Binding Flags that the members should have. - ''' If true, the memberName-Array has member names that should be included. - ''' The member names to include/exclude. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object(), flags As BindingFlags, isWhiteList As Boolean, ParamArray memberName As String()) As HistoryPoint - If isWhiteList Then - Return FromObject({obj}, ObjectValueType.None, CObj(New MemberWhiteList(memberName)), flags) - Else - Return FromObject({obj}, ObjectValueType.None, CObj(New MemberBlackList(memberName)), flags) - End If - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' Specify what member types to include. - ''' The Binding Flags that the members should have. - ''' The member names to include. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object(), membersToStore As ObjectValueType, flags As BindingFlags, ParamArray memberName As String()) As HistoryPoint - Return FromObject(obj, flags, True, memberName) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' Specify what member types to include. - ''' The Binding Flags that the members should have. - ''' If true, the memberName-Array has member names that should be included. - ''' The member names to include/exclude. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object(), membersToStore As ObjectValueType, flags As BindingFlags, isWhiteList As Boolean, ParamArray memberName As String()) As HistoryPoint - If isWhiteList Then - Return FromObject({obj}, membersToStore, CObj(New MemberWhiteList(memberName)), flags) - Else - Return FromObject({obj}, membersToStore, CObj(New MemberBlackList(memberName)), flags) - End If - End Function - - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' Specify which members to include. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, whiteList As MemberWhiteList) As HistoryPoint - Return FromObject({obj}, ObjectValueType.None, CObj(whiteList), BindingFlags.Default) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' Specify which members to exclude. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, blackList As MemberBlackList) As HistoryPoint - Return FromObject({obj}, ObjectValueType.None, CObj(blackList), BindingFlags.Default) - End Function - - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' The member names to include/exclude. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, ParamArray memberName As String()) As HistoryPoint - Return FromObject(obj, True, memberName) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' If true, the memberName-Array has member names that should be included. - ''' The member names to include/exclude. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, isWhiteList As Boolean, ParamArray memberName As String()) As HistoryPoint - If isWhiteList Then - Return FromObject({obj}, ObjectValueType.None, CObj(New MemberWhiteList(memberName)), BindingFlags.Default) - Else - Return FromObject({obj}, ObjectValueType.None, CObj(New MemberBlackList(memberName)), BindingFlags.Default) - End If - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' Specify what member types to include. - ''' The member names to include. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, ParamArray memberName As String()) As HistoryPoint - Return FromObject(obj, membersToStore, True, memberName) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' Specify what member types to include. - ''' If true, the memberName-Array has member names that should be included. - ''' The member names to include/exclude. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, isWhiteList As Boolean, ParamArray memberName As String()) As HistoryPoint - If isWhiteList Then - Return FromObject({obj}, membersToStore, CObj(New MemberWhiteList(memberName)), BindingFlags.Default) - Else - Return FromObject({obj}, membersToStore, CObj(New MemberBlackList(memberName)), BindingFlags.Default) - End If - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' The Binding Flags that the members should have. - ''' The member names to include. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, flags As BindingFlags, ParamArray memberName As String()) As HistoryPoint - Return FromObject(obj, flags, True, memberName) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' The Binding Flags that the members should have. - ''' If true, the memberName-Array has member names that should be included. - ''' The member names to include/exclude. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, flags As BindingFlags, isWhiteList As Boolean, ParamArray memberName As String()) As HistoryPoint - If isWhiteList Then - Return FromObject({obj}, ObjectValueType.None, CObj(New MemberWhiteList(memberName)), flags) - Else - Return FromObject({obj}, ObjectValueType.None, CObj(New MemberBlackList(memberName)), flags) - End If - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' Specify what member types to include. - ''' The Binding Flags that the members should have. - ''' The member names to include. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, flags As BindingFlags, ParamArray memberName As String()) As HistoryPoint - Return FromObject(obj, flags, True, memberName) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' Specify what member types to include. - ''' The Binding Flags that the members should have. - ''' If true, the memberName-Array has member names that should be included. - ''' The member names to include/exclude. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, flags As BindingFlags, isWhiteList As Boolean, ParamArray memberName As String()) As HistoryPoint - If isWhiteList Then - Return FromObject({obj}, membersToStore, CObj(New MemberWhiteList(memberName)), flags) - Else - Return FromObject({obj}, membersToStore, CObj(New MemberBlackList(memberName)), flags) - End If - End Function - - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object) As HistoryPoint - Return FromObject({obj}, ObjectValueType.None, CObj(Nothing), BindingFlags.Default) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' Specify what member types to include. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType) As HistoryPoint - Return FromObject({obj}, membersToStore, CObj(Nothing), BindingFlags.Default) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' Specify what member types to include. - ''' Specify which members to include. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, whiteList As MemberWhiteList) As HistoryPoint - Return FromObject({obj}, membersToStore, CObj(whiteList), BindingFlags.Default) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' Specify what member types to include. - ''' Specify which members to exclude. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, blackList As MemberBlackList) As HistoryPoint - Return FromObject({obj}, membersToStore, CObj(blackList), BindingFlags.Default) - End Function - - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' The Binding Flags that the members should have. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, flags As BindingFlags) As HistoryPoint - Return FromObject({obj}, ObjectValueType.None, CObj(Nothing), flags) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' Specify what member types to include. - ''' The Binding Flags that the members should have. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, flags As BindingFlags) As HistoryPoint - Return FromObject({obj}, membersToStore, CObj(Nothing), flags) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' Specify what member types to include. - ''' Specify which members to include. - ''' The Binding Flags that the members should have. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, whiteList As MemberWhiteList, flags As BindingFlags) As HistoryPoint - Return FromObject({obj}, membersToStore, CObj(whiteList), flags) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The object that should be included. - ''' Specify what member types to include. - ''' Specify which members to exclude. - ''' The Binding Flags that the members should have. - ''' A History Point with Object States. - Public Shared Function FromObject(obj As Object, membersToStore As ObjectValueType, blackList As MemberBlackList, flags As BindingFlags) As HistoryPoint - Return FromObject({obj}, membersToStore, CObj(blackList), flags) - End Function - - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' A History Point with Object States. - Public Shared Function FromObject(objs As Object()) As HistoryPoint - Return FromObject(objs, ObjectValueType.None, CObj(Nothing), BindingFlags.Default) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' Specify what member types to include. - ''' A History Point with Object States. - Public Shared Function FromObject(objs As Object(), membersToStore As ObjectValueType) As HistoryPoint - Return FromObject(objs, membersToStore, CObj(Nothing), BindingFlags.Default) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' Specify what member types to include. - ''' Specify which members to include. - ''' A History Point with Object States. - Public Shared Function FromObject(objs As Object(), membersToStore As ObjectValueType, whiteList As MemberWhiteList) As HistoryPoint - Return FromObject(objs, membersToStore, CObj(whiteList), BindingFlags.Default) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' Specify what member types to include. - ''' Specify which members to exclude. - ''' A History Point with Object States. - Public Shared Function FromObject(objs As Object(), membersToStore As ObjectValueType, blackList As MemberBlackList) As HistoryPoint - Return FromObject(objs, membersToStore, CObj(blackList), BindingFlags.Default) - End Function - - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' The Binding Flags that the members should have. - ''' A History Point with Object States. - Public Shared Function FromObject(objs As Object(), flags As BindingFlags) As HistoryPoint - Return FromObject(objs, ObjectValueType.None, CObj(Nothing), flags) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' Specify what member types to include. - ''' The Binding Flags that the members should have. - ''' A History Point with Object States. - Public Shared Function FromObject(objs As Object(), membersToStore As ObjectValueType, flags As BindingFlags) As HistoryPoint - Return FromObject(objs, membersToStore, CObj(Nothing), flags) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' Specify what member types to include. - ''' Specify which members to include. - ''' The Binding Flags that the members should have. - ''' A History Point with Object States. - Public Shared Function FromObject(objs As Object(), membersToStore As ObjectValueType, whiteList As MemberWhiteList, flags As BindingFlags) As HistoryPoint - Return FromObject(objs, membersToStore, CObj(whiteList), flags) - End Function - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' Specify what member types to include. - ''' Specify which members to exclude. - ''' The Binding Flags that the members should have. - ''' A History Point with Object States. - Public Shared Function FromObject(objs As Object(), membersToStore As ObjectValueType, blackList As MemberBlackList, flags As BindingFlags) As HistoryPoint - Return FromObject(objs, membersToStore, CObj(blackList), flags) - End Function - - ''' - ''' Creates an History Point with Object States automaticly from input. - ''' - ''' The objects that should be included. - ''' Specify what member types to include. - ''' Specify which members to include. - ''' The Binding Flags that the members should have. - ''' A History Point with Object States. - Private Shared Function FromObject(objs As Object(), membersToStore As ObjectValueType, whiteOrBlackList As Object, flags As BindingFlags) As HistoryPoint - Dim hp As New HistoryPoint - - If whiteOrBlackList Is Nothing Then whiteOrBlackList = New MemberBlackList - Dim isWhiteList As Boolean = TypeOf whiteOrBlackList Is MemberWhiteList - - If flags = BindingFlags.Default Then - flags = BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.NonPublic - End If - If membersToStore = ObjectValueType.None Then - membersToStore = ObjectValueType.Field Or ObjectValueType.Property - End If - - For Each obj As Object In objs - If (membersToStore And ObjectValueType.Field) = ObjectValueType.Field Then - - For Each fi As FieldInfo In obj.GetType.GetFields(flags) - - Dim contains As Boolean = CType(whiteOrBlackList, List(Of String)).Contains(fi.Name) - If If(isWhiteList, contains, Not contains) Then - - Dim os As New ObjectState - os.Object = obj - os.MemberName = fi.Name - os.MemberType = ObjectValueType.Field - os.MemberFlags = flags - os.ValueToPatch = fi.GetValue(obj) - hp.Entries.Add(os) - - End If - - Next - - End If - - If (membersToStore And ObjectValueType.Property) = ObjectValueType.Property Then - - For Each pi As PropertyInfo In obj.GetType.GetProperties(flags) - - Dim contains As Boolean = CType(whiteOrBlackList, List(Of String)).Contains(pi.Name) - If If(isWhiteList, contains, Not contains) Then - - Dim os As New ObjectState - os.Object = obj - os.MemberName = pi.Name - os.MemberType = ObjectValueType.Property - os.MemberFlags = flags - os.ValueToPatch = pi.GetValue(obj) - hp.Entries.Add(os) - - End If - - Next - - End If - Next - - Return hp - End Function - - ''' - ''' Combines some History Points to one. - ''' - ''' An array of History Points to combine. - ''' One History Point that contains all Data of inputted History Points. - Public Shared Function Concat(ParamArray hps As HistoryPoint()) As HistoryPoint - Return Concat(hps.FirstOrDefault?.Name, hps) - End Function - - ''' - ''' Combines some History Points to one. - ''' - ''' An array of History Points to combine. - ''' One History Point that contains all Data of inputted History Points. - Public Shared Function Concat(newName As String, ParamArray hps As HistoryPoint()) As HistoryPoint - Dim hp As New HistoryPoint - - For Each _hp As HistoryPoint In hps - hp.Entries.AddRange(_hp.Entries) - Next - - Return hp - End Function - - End Class - -End Namespace diff --git a/Pilz.Collections/SimpleHistory/MemberLists.cs b/Pilz.Collections/SimpleHistory/MemberLists.cs new file mode 100644 index 0000000..105135a --- /dev/null +++ b/Pilz.Collections/SimpleHistory/MemberLists.cs @@ -0,0 +1,31 @@ +namespace Pilz.Collections.SimpleHistory; + +/// +/// List contianing member names to include. +/// +public class MemberWhiteList : List +{ + + public MemberWhiteList() : base() + { + } + + public MemberWhiteList(string[] entries) : base(entries) + { + } +} + +/// +/// List contianing member names to exclude +/// +public class MemberBlackList : List +{ + + public MemberBlackList() : base() + { + } + + public MemberBlackList(string[] entries) : base(entries) + { + } +} \ No newline at end of file diff --git a/Pilz.Collections/SimpleHistory/MemberLists.vb b/Pilz.Collections/SimpleHistory/MemberLists.vb deleted file mode 100644 index 05fdf82..0000000 --- a/Pilz.Collections/SimpleHistory/MemberLists.vb +++ /dev/null @@ -1,33 +0,0 @@ -Namespace SimpleHistory - - ''' - ''' List contianing member names to include. - ''' - Public Class MemberWhiteList - Inherits List(Of String) - - Public Sub New() - MyBase.New - End Sub - - Public Sub New(entries As String()) - MyBase.New(entries) - End Sub - End Class - - ''' - ''' List contianing member names to exclude - ''' - Public Class MemberBlackList - Inherits List(Of String) - - Public Sub New() - MyBase.New - End Sub - - Public Sub New(entries As String()) - MyBase.New(entries) - End Sub - End Class - -End Namespace \ No newline at end of file diff --git a/Pilz.Collections/SimpleHistory/ObjectAction.cs b/Pilz.Collections/SimpleHistory/ObjectAction.cs new file mode 100644 index 0000000..88f5d4c --- /dev/null +++ b/Pilz.Collections/SimpleHistory/ObjectAction.cs @@ -0,0 +1,176 @@ +using System.Reflection; + +namespace Pilz.Collections.SimpleHistory; + +public class ObjectAction : ObjectBase +{ + public object? Object { get; set; } = null; + public List ParametersUndo { get; } = []; + public List ParametersRedo { get; } = []; + public MethodInfo? MethodUndo { get; set; } = null; + public MethodInfo? MethodRedo { get; set; } = null; + public bool AutogenerateObject { get; set; } = true; + + /// + /// Creates a new Instance of Object Action. + /// + public ObjectAction() + { + } + + /// + /// Creates a new Instance of Object Action. + /// + /// The Objects that contains the methodes to call. + /// The name of the methode to call on Undo. + /// The name of the methode to call on Redo. + public ObjectAction(object obj, string methodNameUndo, string methodNameRedo) : this(obj, methodNameUndo, methodNameRedo, [], [], BindingFlags.Default, BindingFlags.Default) + { + } + + /// + /// Creates a new Instance of Object Action. + /// + /// The Objects that contains the methodes to call. + /// The name of the methode to call on Undo. + /// The name of the methode to call on Redo. + /// The parameters for calling the methode on Undo. + /// The parameters for calling the methode on Redo. + public ObjectAction(object obj, string methodNameUndo, string methodNameRedo, object[] paramsUndo, object[] paramsRedo) : this(obj, methodNameUndo, methodNameRedo, paramsUndo, paramsRedo, BindingFlags.Default, BindingFlags.Default) + { + } + + /// + /// Creates a new Instance of Object Action. + /// + /// The Objects that contains the methodes to call. + /// The name of the methode to call on Undo. + /// The name of the methode to call on Redo. + /// The parameters for calling the methode on Undo. + /// The parameters for calling the methode on Redo. + /// The Binding Flags of Methode on Undo. + /// The Binding Flags of Methode on Redo. + public ObjectAction(object obj, string methodNameUndo, string methodNameRedo, object[] paramsUndo, object[] paramsRedo, BindingFlags methodFlagsUndo, BindingFlags methodFlagsRedo) + { + Object = obj; + ParametersUndo.AddRange(paramsUndo); + ParametersRedo.AddRange(paramsRedo); + MethodUndo = GetMethodInfo(obj, methodNameUndo, GetFlags(methodFlagsUndo)); + MethodRedo = GetMethodInfo(obj, methodNameRedo, GetFlags(methodFlagsRedo)); + } + + /// + /// Creates a new Instance of Object Action. + /// + /// The Objects that contains the methodes to call. + /// The name of the methode to call on Undo. + /// The name of the methode to call on Redo. + /// The Binding Flags of Methode on Undo. + /// The Binding Flags of Methode on Redo. + public ObjectAction(object obj, string methodNameUndo, string methodNameRedo, BindingFlags methodFlagsUndo, BindingFlags methodFlagsRedo) : this(obj, methodNameUndo, methodNameRedo, [], [], methodFlagsUndo, methodFlagsRedo) + { + } + + /// + /// Creates a new Instance of Object Action. + /// + /// The Objects that contains the methodes to call. + /// The MethodInfo of the methode to call on Undo. + /// The MethodInfo of the methode to call on Redo. + public ObjectAction(object obj, MethodInfo methodUndo, MethodInfo methodRedo) + { + Object = obj; + MethodUndo = methodUndo; + MethodRedo = methodRedo; + } + /// + /// Creates a new Instance of Object Action. + /// + /// The Objects that contains the methodes to call. + /// The MethodInfo of the methode to call on Undo. + /// The MethodInfo of the methode to call on Redo. + /// The parameters for calling the methode on Undo. + /// The parameters for calling the methode on Redo. + public ObjectAction(object obj, MethodInfo methodUndo, MethodInfo methodRedo, object[] paramsUndo, object[] paramsRedo) : this(obj, methodUndo, methodRedo) + { + ParametersUndo.AddRange(paramsUndo); + ParametersRedo.AddRange(paramsRedo); + } + + /// + /// Creates a new Instance of Object Action. + /// + /// The Objects that contains the methodes to call. + /// The Delegate of the methode to call on Undo. + /// The Delegate of the methode to call on Redo. + public ObjectAction(object obj, Delegate methodUndo, Delegate methodRedo) + { + Object = obj; + MethodUndo = methodUndo.Method; + MethodRedo = methodRedo.Method; + } + + /// + /// Creates a new Instance of Object Action. + /// + /// The Objects that contains the methodes to call. + /// The Delegate of the methode to call on Undo. + /// The Delegate of the methode to call on Redo. + /// The parameters for calling the methode on Undo. + /// The parameters for calling the methode on Redo. + public ObjectAction(object obj, Delegate methodUndo, Delegate methodRedo, object[] paramsUndo, object[] paramsRedo) : this(obj, methodUndo, methodRedo) + { + ParametersUndo.AddRange(paramsUndo); + ParametersRedo.AddRange(paramsRedo); + } + + /// + /// Creates a new Instance of Object Action. + /// + /// The Objects that contains the methodes to call. + /// The Action of the methode to call on Undo. + /// The Action of the methode to call on Redo. + public ObjectAction(object obj, Action methodUndo, Action methodRedo) + { + Object = obj; + MethodUndo = methodUndo.Method; + MethodRedo = methodRedo.Method; + } + + private static BindingFlags GetFlags(BindingFlags flags) + { + if (flags == BindingFlags.Default) + flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; + return flags; + } + + private static MethodInfo? GetMethodInfo(object obj, string name, BindingFlags flags) + { + return obj.GetType().GetMethod(name, flags); + } + + internal void Undo() + { + CheckIfObjIsNothing(MethodUndo); + MethodUndo?.Invoke(Object, ParametersUndo.ToArray()); + } + + internal void Redo() + { + CheckIfObjIsNothing(MethodRedo); + MethodRedo?.Invoke(Object, ParametersRedo.ToArray()); + } + + private void CheckIfObjIsNothing(MethodInfo? mi) + { + if (mi is not null && !mi.IsStatic && AutogenerateObject) + { + if ((Object is null || Object.GetType() != mi.ReflectedType) && !mi.IsStatic) + { + var constructor = mi.ReflectedType?.GetConstructor(Type.EmptyTypes); + var classObject = constructor?.Invoke([]); + Object = classObject; + } + } + } +} \ No newline at end of file diff --git a/Pilz.Collections/SimpleHistory/ObjectAction.vb b/Pilz.Collections/SimpleHistory/ObjectAction.vb deleted file mode 100644 index 5af9e86..0000000 --- a/Pilz.Collections/SimpleHistory/ObjectAction.vb +++ /dev/null @@ -1,164 +0,0 @@ -Imports System.Reflection - -Namespace SimpleHistory - - Public Class ObjectAction - Inherits ObjectBase - - Public Property [Object] As Object = Nothing - Public ReadOnly Property ParametersUndo As New List(Of Object) - Public ReadOnly Property ParametersRedo As New List(Of Object) - Public Property MethodUndo As MethodInfo = Nothing - Public Property MethodRedo As MethodInfo = Nothing - Public Property AutogenerateObject As Boolean = True - - ''' - ''' Creates a new Instance of Object Action. - ''' - Public Sub New() - End Sub - - Private Function GetMethodInfo(obj As Object, name As String, flags As BindingFlags) - Return obj.GetType.GetMethod(name, flags) - End Function - - ''' - ''' Creates a new Instance of Object Action. - ''' - ''' The Objects that contains the methodes to call. - ''' The name of the methode to call on Undo. - ''' The name of the methode to call on Redo. - Public Sub New(obj As Object, methodNameUndo As String, methodNameRedo As String) - Me.New(obj, methodNameUndo, methodNameRedo, {}, {}, BindingFlags.Default, BindingFlags.Default) - End Sub - ''' - ''' Creates a new Instance of Object Action. - ''' - ''' The Objects that contains the methodes to call. - ''' The name of the methode to call on Undo. - ''' The name of the methode to call on Redo. - ''' The parameters for calling the methode on Undo. - ''' The parameters for calling the methode on Redo. - Public Sub New(obj As Object, methodNameUndo As String, methodNameRedo As String, paramsUndo As Object(), paramsRedo As Object()) - Me.New(obj, methodNameUndo, methodNameRedo, paramsUndo, paramsRedo, BindingFlags.Default, BindingFlags.Default) - End Sub - ''' - ''' Creates a new Instance of Object Action. - ''' - ''' The Objects that contains the methodes to call. - ''' The name of the methode to call on Undo. - ''' The name of the methode to call on Redo. - ''' The parameters for calling the methode on Undo. - ''' The parameters for calling the methode on Redo. - ''' The Binding Flags of Methode on Undo. - ''' The Binding Flags of Methode on Redo. - Public Sub New(obj As Object, methodNameUndo As String, methodNameRedo As String, paramsUndo As Object(), paramsRedo As Object(), methodFlagsUndo As BindingFlags, methodFlagsRedo As BindingFlags) - [Object] = obj - ParametersUndo.AddRange(paramsUndo) - ParametersRedo.AddRange(paramsRedo) - MethodUndo = GetMethodInfo(obj, methodNameUndo, GetFlags(methodFlagsUndo)) - MethodRedo = GetMethodInfo(obj, methodNameRedo, GetFlags(methodFlagsRedo)) - End Sub - ''' - ''' Creates a new Instance of Object Action. - ''' - ''' The Objects that contains the methodes to call. - ''' The name of the methode to call on Undo. - ''' The name of the methode to call on Redo. - ''' The Binding Flags of Methode on Undo. - ''' The Binding Flags of Methode on Redo. - Public Sub New(obj As Object, methodNameUndo As String, methodNameRedo As String, methodFlagsUndo As BindingFlags, methodFlagsRedo As BindingFlags) - Me.New(obj, methodNameUndo, methodNameRedo, {}, {}, methodFlagsUndo, methodFlagsRedo) - End Sub - - ''' - ''' Creates a new Instance of Object Action. - ''' - ''' The Objects that contains the methodes to call. - ''' The MethodInfo of the methode to call on Undo. - ''' The MethodInfo of the methode to call on Redo. - Public Sub New(obj As Object, methodUndo As MethodInfo, methodRedo As MethodInfo) - [Object] = obj - Me.MethodUndo = methodUndo - Me.MethodRedo = methodRedo - End Sub - ''' - ''' Creates a new Instance of Object Action. - ''' - ''' The Objects that contains the methodes to call. - ''' The MethodInfo of the methode to call on Undo. - ''' The MethodInfo of the methode to call on Redo. - ''' The parameters for calling the methode on Undo. - ''' The parameters for calling the methode on Redo. - Public Sub New(obj As Object, methodUndo As MethodInfo, methodRedo As MethodInfo, paramsUndo As Object(), paramsRedo As Object()) - Me.New(obj, methodUndo, methodRedo) - ParametersUndo.AddRange(paramsUndo) - ParametersRedo.AddRange(paramsRedo) - End Sub - ''' - ''' Creates a new Instance of Object Action. - ''' - ''' The Objects that contains the methodes to call. - ''' The Delegate of the methode to call on Undo. - ''' The Delegate of the methode to call on Redo. - Public Sub New(obj As Object, methodUndo As [Delegate], methodRedo As [Delegate]) - [Object] = obj - Me.MethodUndo = methodUndo.Method - Me.MethodRedo = methodRedo.Method - End Sub - ''' - ''' Creates a new Instance of Object Action. - ''' - ''' The Objects that contains the methodes to call. - ''' The Delegate of the methode to call on Undo. - ''' The Delegate of the methode to call on Redo. - ''' The parameters for calling the methode on Undo. - ''' The parameters for calling the methode on Redo. - Public Sub New(obj As Object, methodUndo As [Delegate], methodRedo As [Delegate], paramsUndo As Object(), paramsRedo As Object()) - Me.New(obj, methodUndo, methodRedo) - ParametersUndo.AddRange(paramsUndo) - ParametersRedo.AddRange(paramsRedo) - End Sub - ''' - ''' Creates a new Instance of Object Action. - ''' - ''' The Objects that contains the methodes to call. - ''' The Action of the methode to call on Undo. - ''' The Action of the methode to call on Redo. - Public Sub New(obj As Object, methodUndo As Action, methodRedo As Action) - [Object] = obj - Me.MethodUndo = methodUndo.Method - Me.MethodRedo = methodRedo.Method - End Sub - - Private Function GetFlags(flags As BindingFlags) As BindingFlags - If flags = BindingFlags.Default Then - flags = BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.NonPublic - End If - Return flags - End Function - - Friend Sub Undo() - CheckIfObjIsNothing(MethodUndo) - MethodUndo?.Invoke([Object], ParametersUndo.ToArray) - End Sub - - Friend Sub Redo() - CheckIfObjIsNothing(MethodRedo) - MethodRedo?.Invoke([Object], ParametersRedo.ToArray) - End Sub - - Private Sub CheckIfObjIsNothing(mi As MethodInfo) - If mi IsNot Nothing AndAlso Not mi.IsStatic AndAlso AutogenerateObject Then - If (Me.Object Is Nothing OrElse Me.Object.GetType <> mi.ReflectedType) AndAlso Not mi.IsStatic Then - Dim constructor As ConstructorInfo = mi.ReflectedType.GetConstructor(Type.EmptyTypes) - Dim classObject As Object = constructor.Invoke({}) - Me.Object = classObject - End If - End If - End Sub - - End Class - - -End Namespace \ No newline at end of file diff --git a/Pilz.Collections/SimpleHistory/ObjectBase.cs b/Pilz.Collections/SimpleHistory/ObjectBase.cs new file mode 100644 index 0000000..67a7148 --- /dev/null +++ b/Pilz.Collections/SimpleHistory/ObjectBase.cs @@ -0,0 +1,10 @@ +namespace Pilz.Collections.SimpleHistory; + +public class ObjectBase +{ + public static int DefaultPriorityValue { get; set; } = 1000; + + public int UndoPriority { get; set; } = DefaultPriorityValue; + + public int RedoPriority { get; set; } = DefaultPriorityValue; +} \ No newline at end of file diff --git a/Pilz.Collections/SimpleHistory/ObjectBase.vb b/Pilz.Collections/SimpleHistory/ObjectBase.vb deleted file mode 100644 index 76a201e..0000000 --- a/Pilz.Collections/SimpleHistory/ObjectBase.vb +++ /dev/null @@ -1,13 +0,0 @@ -Namespace SimpleHistory - - Public Class ObjectBase - - Public Shared Property DefaultPriorityValue As Integer = 1000 - - Public Property UndoPriority As Integer = DefaultPriorityValue - Public Property RedoPriority As Integer = DefaultPriorityValue - - End Class - - -End Namespace \ No newline at end of file diff --git a/Pilz.Collections/SimpleHistory/ObjectState.cs b/Pilz.Collections/SimpleHistory/ObjectState.cs new file mode 100644 index 0000000..7b33a29 --- /dev/null +++ b/Pilz.Collections/SimpleHistory/ObjectState.cs @@ -0,0 +1,88 @@ +using System.Reflection; + +namespace Pilz.Collections.SimpleHistory; + +public class ObjectState : ObjectBase +{ + /// + /// The Object including the members to patch. + /// + /// + public object? Object { get; set; } = null; + + /// + /// The name of the Member to patch. + /// + /// + public string MemberName { get; set; } = ""; + + /// + /// The Value that should be patched. + /// + /// + public object? ValueToPatch { get; set; } = null; + + /// + /// The member types to include at searching for the member. + /// + /// + public ObjectValueType MemberType { get; set; } = ObjectValueType.Field; + + /// + /// The Binding Flags that are used at searching for the member. + /// + /// + public BindingFlags MemberFlags { get; set; } = BindingFlags.Default; + + /// + /// Creates a new Instance of ObjectState from input. + /// + /// The Object including the members to patch. + /// The name of the Member to patch. + /// The member types to include at searching for the member. + /// The Binding Flags that are used at searching for the member. + public ObjectState(object obj, string valname, object valToPatch, ObjectValueType valtype) + { + Object = obj; + MemberName = valname; + ValueToPatch = valToPatch; + MemberType = valtype; + } + + /// + /// Creates a new Instance of ObjectState. + /// + public ObjectState() + { + } + + internal void Patch() + { + if (Object is null) + return; + + var t = Object.GetType(); + + switch (MemberType) + { + case ObjectValueType.Field: + if (t.GetField(MemberName, MemberFlags) is FieldInfo f) + { + var temp = f.GetValue(Object); + f.SetValue(Object, ValueToPatch); + ValueToPatch = temp; + } + break; + case ObjectValueType.Property: + if (t.GetProperty(MemberName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static) is PropertyInfo p) + { + var temp = p.GetValue(Object); + p.SetValue(Object, ValueToPatch); + ValueToPatch = temp; + } + break; + default: + throw new Exception("ValueType is invalid!"); + } + } +} \ No newline at end of file diff --git a/Pilz.Collections/SimpleHistory/ObjectState.vb b/Pilz.Collections/SimpleHistory/ObjectState.vb deleted file mode 100644 index 9678686..0000000 --- a/Pilz.Collections/SimpleHistory/ObjectState.vb +++ /dev/null @@ -1,84 +0,0 @@ -Imports System.Reflection - -Namespace SimpleHistory - - Public Class ObjectState - Inherits ObjectBase - - ''' - ''' The Object including the members to patch. - ''' - ''' - Public Property [Object] As Object = Nothing - ''' - ''' The name of the Member to patch. - ''' - ''' - Public Property MemberName As String = "" - ''' - ''' The Value that should be patched. - ''' - ''' - Public Property ValueToPatch As Object = Nothing - ''' - ''' The member types to include at searching for the member. - ''' - ''' - Public Property MemberType As ObjectValueType = ObjectValueType.Field - ''' - ''' The Binding Flags that are used at searching for the member. - ''' - ''' - Public Property MemberFlags As BindingFlags = BindingFlags.Default - - ''' - ''' Creates a new Instance of ObjectState from input. - ''' - ''' The Object including the members to patch. - ''' The name of the Member to patch. - ''' The member types to include at searching for the member. - ''' The Binding Flags that are used at searching for the member. - Public Sub New(obj As Object, valname As String, valToPatch As Object, valtype As ObjectValueType) - [Object] = obj - MemberName = valname - ValueToPatch = valToPatch - MemberType = valtype - End Sub - - ''' - ''' Creates a new Instance of ObjectState. - ''' - Public Sub New() - End Sub - - Friend Sub Patch() - Dim t As Type = [Object].GetType - Select Case MemberType - Case ObjectValueType.Field - Dim f As FieldInfo = t.GetField(MemberName, MemberFlags) - Dim temp As Object = Nothing - - If f IsNot Nothing Then - temp = f.GetValue([Object]) - f.SetValue([Object], ValueToPatch) - ValueToPatch = temp - End If - - Case ObjectValueType.Property - Dim p As PropertyInfo = t.GetProperty(MemberName, BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.NonPublic Or BindingFlags.Static) - Dim temp As Object = Nothing - - If p IsNot Nothing Then - temp = p.GetValue([Object]) - p.SetValue([Object], ValueToPatch) - ValueToPatch = temp - End If - - Case Else - Throw New Exception("ValueType is invalid!") - End Select - End Sub - - End Class - -End Namespace \ No newline at end of file diff --git a/Pilz.Collections/SimpleHistory/ObjectValueType.cs b/Pilz.Collections/SimpleHistory/ObjectValueType.cs new file mode 100644 index 0000000..a984f22 --- /dev/null +++ b/Pilz.Collections/SimpleHistory/ObjectValueType.cs @@ -0,0 +1,11 @@ +namespace Pilz.Collections.SimpleHistory; + +/// +/// Specify which member types you would include. +/// +public enum ObjectValueType +{ + None = 0, + Field = 1, + Property = 2, +} \ No newline at end of file diff --git a/Pilz.Collections/SimpleHistory/ObjectValueType.vb b/Pilz.Collections/SimpleHistory/ObjectValueType.vb deleted file mode 100644 index 8438552..0000000 --- a/Pilz.Collections/SimpleHistory/ObjectValueType.vb +++ /dev/null @@ -1,12 +0,0 @@ -Namespace SimpleHistory - - ''' - ''' Specify which member types you would include. - ''' - Public Enum ObjectValueType - None = 0 - Field = 1 - [Property] = 2 - End Enum - -End Namespace \ No newline at end of file diff --git a/Pilz.Collections/SimpleHistory/SimpleHistory.cs b/Pilz.Collections/SimpleHistory/SimpleHistory.cs new file mode 100644 index 0000000..cd710f6 --- /dev/null +++ b/Pilz.Collections/SimpleHistory/SimpleHistory.cs @@ -0,0 +1,101 @@ +namespace Pilz.Collections.SimpleHistory; + +public class HistoryStack +{ + private readonly Stack stackPast = new(); + private readonly Stack stackFuture = new(); + + /// + /// Gets the count of history points. + /// + /// + public int ChangesCount => stackPast.Count; + + /// + /// Gets the current stack of all past HistoryPoints that are used for the Undo function. + /// + /// + public HistoryPoint[] PastHistoryPoints => [.. stackPast]; + + /// + /// Gets the current stack of all future HistoryPoints that are used for the Redo function. + /// + /// + public HistoryPoint[] FutureHistoryPoints => [.. stackFuture]; + + /// + /// Checks if the History has past changes. + /// + /// + public bool HasChanges() => stackPast.Count > 0; + + /// + /// Patch Object States and call Undo Actions. + /// + public HistoryPoint? Undo() + { + HistoryPoint? ret; + + if (stackPast.Count > 0) + { + var hp = stackPast.Pop(); + hp.Undo(); + stackFuture.Push(hp); + ret = hp; + } + else + ret = null; + + return ret; + } + + /// + /// Patch Object States and call Redo Actions. + /// + public HistoryPoint? Redo() + { + HistoryPoint? ret; + + if (stackFuture.Count > 0) + { + var hp = stackFuture.Pop(); + hp.Redo(); + stackPast.Push(hp); + ret = hp; + } + else + ret = null; + + return ret; + } + + /// + /// Clear the History. + /// + public void Clear() + { + stackPast.Clear(); + stackFuture.Clear(); + } + + /// + /// Store a History Point. + /// + /// The History Point to add to the past changes. + /// The name to set for the History Point. + public void Store(HistoryPoint point, string newName) + { + point.Name = newName; + Store(point); + } + + /// + /// Store a History Point. + /// + /// The History Point to add to the past changes. + public void Store(HistoryPoint point) + { + stackPast.Push(point); + stackFuture.Clear(); + } +} \ No newline at end of file diff --git a/Pilz.Collections/SimpleHistory/SimpleHistory.vb b/Pilz.Collections/SimpleHistory/SimpleHistory.vb deleted file mode 100644 index 1277754..0000000 --- a/Pilz.Collections/SimpleHistory/SimpleHistory.vb +++ /dev/null @@ -1,111 +0,0 @@ -Namespace SimpleHistory - - Public Class HistoryStack - - Private stackPast As New Stack(Of HistoryPoint) - Private stackFuture As New Stack(Of HistoryPoint) - - ''' - ''' Gets the count of history points. - ''' - ''' - Public ReadOnly Property ChangesCount As Boolean - Get - Return stackPast.Count - End Get - End Property - - ''' - ''' Gets the current stack of all past HistoryPoints that are used for the Undo function. - ''' - ''' - Public ReadOnly Property PastHistoryPoints As HistoryPoint() - Get - Return stackPast.ToArray - End Get - End Property - - ''' - ''' Gets the current stack of all future HistoryPoints that are used for the Redo function. - ''' - ''' - Public ReadOnly Property FutureHistoryPoints As HistoryPoint() - Get - Return stackFuture.ToArray - End Get - End Property - - ''' - ''' Checks if the History has past changes. - ''' - ''' - Public Function HasChanges() As Boolean - Return stackPast.Count > 0 - End Function - - ''' - ''' Patch Object States and call Undo Actions. - ''' - Public Function Undo() As HistoryPoint - Dim ret As HistoryPoint - - If stackPast.Count > 0 Then - Dim hp As HistoryPoint = stackPast.Pop - hp.Undo() - stackFuture.Push(hp) - ret = hp - Else - ret = Nothing - End If - - Return ret - End Function - - ''' - ''' Patch Object States and call Redo Actions. - ''' - Public Function Redo() As HistoryPoint - Dim ret As HistoryPoint - - If stackFuture.Count > 0 Then - Dim hp As HistoryPoint = stackFuture.Pop - hp.Redo() - stackPast.Push(hp) - ret = hp - Else - ret = Nothing - End If - - Return ret - End Function - - ''' - ''' Clear the History. - ''' - Public Sub Clear() - stackPast.Clear() - stackFuture.Clear() - End Sub - - ''' - ''' Store a History Point. - ''' - ''' The History Point to add to the past changes. - ''' The name to set for the History Point. - Public Sub Store(point As HistoryPoint, newName As String) - point.Name = newName - Store(point) - End Sub - - ''' - ''' Store a History Point. - ''' - ''' The History Point to add to the past changes. - Public Sub Store(point As HistoryPoint) - stackPast.Push(point) - stackFuture.Clear() - End Sub - - End Class - -End Namespace diff --git a/Pilz.sln b/Pilz.sln index a5e2904..99c31cd 100644 --- a/Pilz.sln +++ b/Pilz.sln @@ -9,7 +9,7 @@ Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Drawing", "Pilz.Drawin EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.UI", "Pilz.UI\Pilz.UI.csproj", "{3058E1D4-81CA-02C8-10A8-88FBF0A55201}" EndProject -Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Collections", "Pilz.Collections\Pilz.Collections.vbproj", "{E4B2D294-8479-4014-942D-0B460E453DEA}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Collections", "Pilz.Collections\Pilz.Collections.csproj", "{569653FF-4821-0FE5-1675-C1386CD2094A}" EndProject Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Threading", "Pilz.Threading\Pilz.Threading.vbproj", "{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}" EndProject @@ -77,14 +77,14 @@ Global {3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Release|Any CPU.Build.0 = Release|Any CPU {3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Release|x86.ActiveCfg = Release|Any CPU {3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Release|x86.Build.0 = Release|Any CPU - {E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|x86.ActiveCfg = Debug|Any CPU - {E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|x86.Build.0 = Debug|Any CPU - {E4B2D294-8479-4014-942D-0B460E453DEA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E4B2D294-8479-4014-942D-0B460E453DEA}.Release|Any CPU.Build.0 = Release|Any CPU - {E4B2D294-8479-4014-942D-0B460E453DEA}.Release|x86.ActiveCfg = Release|Any CPU - {E4B2D294-8479-4014-942D-0B460E453DEA}.Release|x86.Build.0 = Release|Any CPU + {569653FF-4821-0FE5-1675-C1386CD2094A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {569653FF-4821-0FE5-1675-C1386CD2094A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {569653FF-4821-0FE5-1675-C1386CD2094A}.Debug|x86.ActiveCfg = Debug|Any CPU + {569653FF-4821-0FE5-1675-C1386CD2094A}.Debug|x86.Build.0 = Debug|Any CPU + {569653FF-4821-0FE5-1675-C1386CD2094A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {569653FF-4821-0FE5-1675-C1386CD2094A}.Release|Any CPU.Build.0 = Release|Any CPU + {569653FF-4821-0FE5-1675-C1386CD2094A}.Release|x86.ActiveCfg = Release|Any CPU + {569653FF-4821-0FE5-1675-C1386CD2094A}.Release|x86.Build.0 = Release|Any CPU {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|Any CPU.Build.0 = Debug|Any CPU {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|x86.ActiveCfg = Debug|Any CPU diff --git a/Pilz.sln.bak b/Pilz.sln.bak new file mode 100644 index 0000000..a5e2904 --- /dev/null +++ b/Pilz.sln.bak @@ -0,0 +1,231 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34018.315 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz", "Pilz\Pilz.csproj", "{9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}" +EndProject +Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Drawing", "Pilz.Drawing\Pilz.Drawing.vbproj", "{1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.UI", "Pilz.UI\Pilz.UI.csproj", "{3058E1D4-81CA-02C8-10A8-88FBF0A55201}" +EndProject +Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Collections", "Pilz.Collections\Pilz.Collections.vbproj", "{E4B2D294-8479-4014-942D-0B460E453DEA}" +EndProject +Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Threading", "Pilz.Threading\Pilz.Threading.vbproj", "{D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.IO", "Pilz.IO\Pilz.IO.csproj", "{877D980E-4F61-0E53-0E8B-5C50B7D1440C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Win32", "Pilz.Win32\Pilz.Win32.csproj", "{B9C4C3E6-60CF-07E3-2FA4-A7036239D037}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Configuration", "Pilz.Configuration\Pilz.Configuration.csproj", "{1748E038-0A47-04E1-3C5E-FF9566DFFB7C}" +EndProject +Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Drawing.Drawing3D.OpenGLFactory", "Pilz.Drawing.Drawing3D.OpenGLRenderer\Pilz.Drawing.Drawing3D.OpenGLFactory.vbproj", "{5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}" +EndProject +Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Pilz.Simple3DFileParser", "Pilz.Simple3DFileParser\Pilz.Simple3DFileParser.vbproj", "{AC955819-7910-450C-940C-7C1989483D4B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.LicenseHelper", "Pilz.LicenseHelper\Pilz.LicenseHelper.csproj", "{67593FF7-C1D1-4529-98C4-61CBD0615F08}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Net", "Pilz.Net\Pilz.Net.csproj", "{F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Cryptography", "Pilz.Cryptography\Pilz.Cryptography.csproj", "{3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.UI.Telerik", "Pilz.UI.Telerik\Pilz.UI.Telerik.csproj", "{DF674119-CC28-40AA-968F-1E23D184A491}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Net.CloudProviders.Nextcloud", "Pilz.Net.CloudProviders.Nextcloud\Pilz.Net.CloudProviders.Nextcloud.csproj", "{A91E966B-3A82-4F32-A703-2FC1C7654FD1}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Plugins", "Pilz.Plugins\Pilz.Plugins.csproj", "{1170FCA6-192D-42FE-A79F-49EE03035554}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Plugins.Advanced", "Pilz.Plugins.Advanced\Pilz.Plugins.Advanced.csproj", "{72153EC8-B297-4A94-80AA-3574544BE8CF}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Gaming.Minecraft", "Pilz.Gaming.Minecraft\Pilz.Gaming.Minecraft.csproj", "{B285DA24-39C9-4BA2-AF3D-A1A05737268B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Plugins.Advanced.UI", "Pilz.Plugins.Advanced.UI\Pilz.Plugins.Advanced.UI.csproj", "{5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Plugins.Advanced.UI.Telerik", "Pilz.Plugins.Advanced.UI.Telerik\Pilz.Plugins.Advanced.UI.Telerik.csproj", "{0A837BD6-A19C-4A05-A57D-CBB0CD64B244}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pilz.Extensions", "Pilz.Extensions\Pilz.Extensions.csproj", "{63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}.Debug|x86.ActiveCfg = Debug|Any CPU + {9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}.Debug|x86.Build.0 = Debug|Any CPU + {9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}.Release|Any CPU.Build.0 = Release|Any CPU + {9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}.Release|x86.ActiveCfg = Release|Any CPU + {9559AAE8-BA4B-03B8-1EF3-2AFE7BCD5AAC}.Release|x86.Build.0 = Release|Any CPU + {1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Debug|x86.ActiveCfg = Debug|Any CPU + {1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Debug|x86.Build.0 = Debug|Any CPU + {1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Release|Any CPU.Build.0 = Release|Any CPU + {1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Release|x86.ActiveCfg = Release|Any CPU + {1A0B8106-2449-4908-B5E1-A00D8E9CF8F6}.Release|x86.Build.0 = Release|Any CPU + {3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Debug|x86.ActiveCfg = Debug|Any CPU + {3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Debug|x86.Build.0 = Debug|Any CPU + {3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Release|Any CPU.Build.0 = Release|Any CPU + {3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Release|x86.ActiveCfg = Release|Any CPU + {3058E1D4-81CA-02C8-10A8-88FBF0A55201}.Release|x86.Build.0 = Release|Any CPU + {E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|x86.ActiveCfg = Debug|Any CPU + {E4B2D294-8479-4014-942D-0B460E453DEA}.Debug|x86.Build.0 = Debug|Any CPU + {E4B2D294-8479-4014-942D-0B460E453DEA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E4B2D294-8479-4014-942D-0B460E453DEA}.Release|Any CPU.Build.0 = Release|Any CPU + {E4B2D294-8479-4014-942D-0B460E453DEA}.Release|x86.ActiveCfg = Release|Any CPU + {E4B2D294-8479-4014-942D-0B460E453DEA}.Release|x86.Build.0 = Release|Any CPU + {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|x86.ActiveCfg = Debug|Any CPU + {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Debug|x86.Build.0 = Debug|Any CPU + {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Release|Any CPU.Build.0 = Release|Any CPU + {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Release|x86.ActiveCfg = Release|Any CPU + {D9C8655E-4F1C-4348-A51C-AB00FD9A14BB}.Release|x86.Build.0 = Release|Any CPU + {877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Debug|x86.ActiveCfg = Debug|Any CPU + {877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Debug|x86.Build.0 = Debug|Any CPU + {877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Release|Any CPU.Build.0 = Release|Any CPU + {877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Release|x86.ActiveCfg = Release|Any CPU + {877D980E-4F61-0E53-0E8B-5C50B7D1440C}.Release|x86.Build.0 = Release|Any CPU + {B9C4C3E6-60CF-07E3-2FA4-A7036239D037}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B9C4C3E6-60CF-07E3-2FA4-A7036239D037}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B9C4C3E6-60CF-07E3-2FA4-A7036239D037}.Debug|x86.ActiveCfg = Debug|Any CPU + {B9C4C3E6-60CF-07E3-2FA4-A7036239D037}.Debug|x86.Build.0 = Debug|Any CPU + {B9C4C3E6-60CF-07E3-2FA4-A7036239D037}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B9C4C3E6-60CF-07E3-2FA4-A7036239D037}.Release|Any CPU.Build.0 = Release|Any CPU + {B9C4C3E6-60CF-07E3-2FA4-A7036239D037}.Release|x86.ActiveCfg = Release|Any CPU + {B9C4C3E6-60CF-07E3-2FA4-A7036239D037}.Release|x86.Build.0 = Release|Any CPU + {1748E038-0A47-04E1-3C5E-FF9566DFFB7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1748E038-0A47-04E1-3C5E-FF9566DFFB7C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1748E038-0A47-04E1-3C5E-FF9566DFFB7C}.Debug|x86.ActiveCfg = Debug|Any CPU + {1748E038-0A47-04E1-3C5E-FF9566DFFB7C}.Debug|x86.Build.0 = Debug|Any CPU + {1748E038-0A47-04E1-3C5E-FF9566DFFB7C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1748E038-0A47-04E1-3C5E-FF9566DFFB7C}.Release|Any CPU.Build.0 = Release|Any CPU + {1748E038-0A47-04E1-3C5E-FF9566DFFB7C}.Release|x86.ActiveCfg = Release|Any CPU + {1748E038-0A47-04E1-3C5E-FF9566DFFB7C}.Release|x86.Build.0 = Release|Any CPU + {5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Debug|x86.ActiveCfg = Debug|Any CPU + {5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Debug|x86.Build.0 = Debug|Any CPU + {5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Release|Any CPU.Build.0 = Release|Any CPU + {5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Release|x86.ActiveCfg = Release|Any CPU + {5E9F0B0A-F7B8-49A9-80FC-6DFE0D44CC84}.Release|x86.Build.0 = Release|Any CPU + {AC955819-7910-450C-940C-7C1989483D4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AC955819-7910-450C-940C-7C1989483D4B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AC955819-7910-450C-940C-7C1989483D4B}.Debug|x86.ActiveCfg = Debug|Any CPU + {AC955819-7910-450C-940C-7C1989483D4B}.Debug|x86.Build.0 = Debug|Any CPU + {AC955819-7910-450C-940C-7C1989483D4B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AC955819-7910-450C-940C-7C1989483D4B}.Release|Any CPU.Build.0 = Release|Any CPU + {AC955819-7910-450C-940C-7C1989483D4B}.Release|x86.ActiveCfg = Release|Any CPU + {AC955819-7910-450C-940C-7C1989483D4B}.Release|x86.Build.0 = Release|Any CPU + {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Debug|Any CPU.Build.0 = Debug|Any CPU + {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Debug|x86.ActiveCfg = Debug|Any CPU + {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Debug|x86.Build.0 = Debug|Any CPU + {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|Any CPU.ActiveCfg = Release|Any CPU + {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|Any CPU.Build.0 = Release|Any CPU + {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|x86.ActiveCfg = Release|Any CPU + {67593FF7-C1D1-4529-98C4-61CBD0615F08}.Release|x86.Build.0 = Release|Any CPU + {F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}.Debug|x86.ActiveCfg = Debug|Any CPU + {F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}.Debug|x86.Build.0 = Debug|Any CPU + {F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}.Release|Any CPU.Build.0 = Release|Any CPU + {F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}.Release|x86.ActiveCfg = Release|Any CPU + {F7A0304A-C59E-0F5D-06C3-B43F63B2DBC6}.Release|x86.Build.0 = Release|Any CPU + {3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Debug|x86.ActiveCfg = Debug|Any CPU + {3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Debug|x86.Build.0 = Debug|Any CPU + {3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Release|Any CPU.Build.0 = Release|Any CPU + {3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Release|x86.ActiveCfg = Release|Any CPU + {3F5988E6-439E-4A9D-B2C6-47EFFB161AC6}.Release|x86.Build.0 = Release|Any CPU + {DF674119-CC28-40AA-968F-1E23D184A491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DF674119-CC28-40AA-968F-1E23D184A491}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DF674119-CC28-40AA-968F-1E23D184A491}.Debug|x86.ActiveCfg = Debug|Any CPU + {DF674119-CC28-40AA-968F-1E23D184A491}.Debug|x86.Build.0 = Debug|Any CPU + {DF674119-CC28-40AA-968F-1E23D184A491}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DF674119-CC28-40AA-968F-1E23D184A491}.Release|Any CPU.Build.0 = Release|Any CPU + {DF674119-CC28-40AA-968F-1E23D184A491}.Release|x86.ActiveCfg = Release|Any CPU + {DF674119-CC28-40AA-968F-1E23D184A491}.Release|x86.Build.0 = Release|Any CPU + {A91E966B-3A82-4F32-A703-2FC1C7654FD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A91E966B-3A82-4F32-A703-2FC1C7654FD1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A91E966B-3A82-4F32-A703-2FC1C7654FD1}.Debug|x86.ActiveCfg = Debug|Any CPU + {A91E966B-3A82-4F32-A703-2FC1C7654FD1}.Debug|x86.Build.0 = Debug|Any CPU + {A91E966B-3A82-4F32-A703-2FC1C7654FD1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A91E966B-3A82-4F32-A703-2FC1C7654FD1}.Release|Any CPU.Build.0 = Release|Any CPU + {A91E966B-3A82-4F32-A703-2FC1C7654FD1}.Release|x86.ActiveCfg = Release|Any CPU + {A91E966B-3A82-4F32-A703-2FC1C7654FD1}.Release|x86.Build.0 = Release|Any CPU + {1170FCA6-192D-42FE-A79F-49EE03035554}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1170FCA6-192D-42FE-A79F-49EE03035554}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1170FCA6-192D-42FE-A79F-49EE03035554}.Debug|x86.ActiveCfg = Debug|Any CPU + {1170FCA6-192D-42FE-A79F-49EE03035554}.Debug|x86.Build.0 = Debug|Any CPU + {1170FCA6-192D-42FE-A79F-49EE03035554}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1170FCA6-192D-42FE-A79F-49EE03035554}.Release|Any CPU.Build.0 = Release|Any CPU + {1170FCA6-192D-42FE-A79F-49EE03035554}.Release|x86.ActiveCfg = Release|Any CPU + {1170FCA6-192D-42FE-A79F-49EE03035554}.Release|x86.Build.0 = Release|Any CPU + {72153EC8-B297-4A94-80AA-3574544BE8CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {72153EC8-B297-4A94-80AA-3574544BE8CF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {72153EC8-B297-4A94-80AA-3574544BE8CF}.Debug|x86.ActiveCfg = Debug|Any CPU + {72153EC8-B297-4A94-80AA-3574544BE8CF}.Debug|x86.Build.0 = Debug|Any CPU + {72153EC8-B297-4A94-80AA-3574544BE8CF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {72153EC8-B297-4A94-80AA-3574544BE8CF}.Release|Any CPU.Build.0 = Release|Any CPU + {72153EC8-B297-4A94-80AA-3574544BE8CF}.Release|x86.ActiveCfg = Release|Any CPU + {72153EC8-B297-4A94-80AA-3574544BE8CF}.Release|x86.Build.0 = Release|Any CPU + {B285DA24-39C9-4BA2-AF3D-A1A05737268B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B285DA24-39C9-4BA2-AF3D-A1A05737268B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B285DA24-39C9-4BA2-AF3D-A1A05737268B}.Debug|x86.ActiveCfg = Debug|Any CPU + {B285DA24-39C9-4BA2-AF3D-A1A05737268B}.Debug|x86.Build.0 = Debug|Any CPU + {B285DA24-39C9-4BA2-AF3D-A1A05737268B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B285DA24-39C9-4BA2-AF3D-A1A05737268B}.Release|Any CPU.Build.0 = Release|Any CPU + {B285DA24-39C9-4BA2-AF3D-A1A05737268B}.Release|x86.ActiveCfg = Release|Any CPU + {B285DA24-39C9-4BA2-AF3D-A1A05737268B}.Release|x86.Build.0 = Release|Any CPU + {5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}.Debug|x86.ActiveCfg = Debug|Any CPU + {5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}.Debug|x86.Build.0 = Debug|Any CPU + {5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}.Release|Any CPU.Build.0 = Release|Any CPU + {5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}.Release|x86.ActiveCfg = Release|Any CPU + {5030C047-B04B-4BA7-8CEF-3B6C3F3A2C59}.Release|x86.Build.0 = Release|Any CPU + {0A837BD6-A19C-4A05-A57D-CBB0CD64B244}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0A837BD6-A19C-4A05-A57D-CBB0CD64B244}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0A837BD6-A19C-4A05-A57D-CBB0CD64B244}.Debug|x86.ActiveCfg = Debug|Any CPU + {0A837BD6-A19C-4A05-A57D-CBB0CD64B244}.Debug|x86.Build.0 = Debug|Any CPU + {0A837BD6-A19C-4A05-A57D-CBB0CD64B244}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0A837BD6-A19C-4A05-A57D-CBB0CD64B244}.Release|Any CPU.Build.0 = Release|Any CPU + {0A837BD6-A19C-4A05-A57D-CBB0CD64B244}.Release|x86.ActiveCfg = Release|Any CPU + {0A837BD6-A19C-4A05-A57D-CBB0CD64B244}.Release|x86.Build.0 = Release|Any CPU + {63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}.Debug|x86.ActiveCfg = Debug|Any CPU + {63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}.Debug|x86.Build.0 = Debug|Any CPU + {63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}.Release|Any CPU.Build.0 = Release|Any CPU + {63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}.Release|x86.ActiveCfg = Release|Any CPU + {63DA7581-F35E-4EDD-BEAE-01E281B0BDC3}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {728F13B2-34E5-46C6-BB39-3203EE238C2A} + EndGlobalSection +EndGlobal