From 162e3cecb5bb6e342420c6b5c2fde6054fcf34ad Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Thu, 7 Sep 2023 22:17:03 +0200 Subject: [PATCH] BytecodeApi 3.0.0 (.NET 7.0) --- !Docs/Related Files/FileGrayscaleEffect.fx | 8 - .../AsymmetricContentEncryption.cs | 42 - .../AsymmetricEncryption.cs | 36 - .../AsymmetricKeyConvert.cs | 30 - .../ContentEncryption.cs | 39 - .../BytecodeApi.Cryptography/Encryption.cs | 42 - !Examples/BytecodeApi.Cryptography/Hashes.cs | 29 - !Examples/BytecodeApi.Data/Blob.cs | 71 - .../BytecodeApi.Extensions/Extensions.cs | 96 - .../CsvDelimiterDetector.cs | 59 - .../CsvFile.Save.cs | 37 - .../BytecodeApi.FileFormats.Csv/CsvFile.cs | 49 - .../CsvIterator.cs | 43 - .../IniFile.Read.cs | 109 - .../IniFile.Write.cs | 56 - .../BytecodeApi.FileFormats.PE/PEImage.cs | 41 - !Examples/BytecodeApi.FileIcons/FileIcon.cs | 32 - !Examples/BytecodeApi.IO.Cli/Cli.cs | 64 - .../BytecodeApi.IO.FileSystem/CacheFile.cs | 47 - !Examples/BytecodeApi.IO.Http/HttpClient.cs | 44 - .../BytecodeApi.IO.Interop/DynamicLibrary.cs | 19 - .../GlobalKeyboardHook.cs | 26 - .../DeviceManager.cs | 29 - .../BytecodeApi.IO.SystemInfo/HostsFile.cs | 18 - .../InstalledSoftware.cs | 23 - .../BytecodeApi.IO.SystemInfo/TcpView.cs | 24 - !Examples/BytecodeApi.IO.Wmi/Wmi.cs | 23 - !Examples/BytecodeApi.IO/BinaryStream.cs | 36 - !Examples/BytecodeApi.IO/Compression.cs | 31 - !Examples/BytecodeApi.IO/ProcessEx.cs | 25 - !Examples/BytecodeApi.IO/ZipCompression.cs | 26 - !Examples/BytecodeApi.Mathematics/ByteSize.cs | 36 - !Examples/BytecodeApi.Text/QuotedString.cs | 17 - .../BytecodeApi.Text/SentenceGenerator.cs | 28 - !Examples/BytecodeApi.Text/WordGenerator.cs | 26 - !Examples/BytecodeApi.Text/Wording.cs | 29 - !Examples/BytecodeApi/ApplicationBase.cs | 49 - !Examples/BytecodeApi/CSharp.cs | 58 - !Examples/BytecodeApi/CachedProperty.cs | 32 - !Examples/BytecodeApi/EnumEx.cs | 40 - .gitignore | 3 +- .nuget/PackageIcon.pdn | Bin 0 -> 14120 bytes .nuget/PackageIcon.png | Bin 0 -> 5048 bytes .../.nuget/README.md | 3 + .../BytecodeApi.CommandLineParser.csproj | 43 + .../CommandLineParserError.cs | 52 + .../CommandLineParserException.cs | 29 + BytecodeApi.CommandLineParser/Option.cs | 120 + BytecodeApi.CommandLineParser/OptionSet.cs | 233 ++ BytecodeApi.CommandLineParser/ParsedOption.cs | 36 + .../ParsedOptionSet.cs | 550 ++++ .../Properties/AssemblyInfo.cs | 4 + BytecodeApi.CommandLineParser/README.md | 99 + BytecodeApi.ConsoleUI/.nuget/README.md | 3 + .../BytecodeApi.ConsoleUI.csproj | 43 + BytecodeApi.ConsoleUI/ConsoleInput.cs | 160 ++ BytecodeApi.ConsoleUI/ConsoleInputTheme.cs | 69 + BytecodeApi.ConsoleUI/ConsoleStyle.cs | 76 + BytecodeApi.ConsoleUI/ConsoleWriter.cs | 256 ++ BytecodeApi.ConsoleUI/ConsoleWriterTheme.cs | 93 + .../Properties/AssemblyInfo.cs | 4 + BytecodeApi.ConsoleUI/README.md | 145 ++ .../AsymmetricContentEncryptionTests.cs | 23 + .../AsymmetricEncryptionTests.cs | 23 + .../AsymmetricKeyConvertTests.cs | 46 + .../BloomFilterTests.cs | 47 + .../BytecodeApi.Cryptography.Tests.csproj | 27 + .../RSAParametersEqualityComparer.cs | 26 + .../ContentEncryptionTests.cs | 25 + .../EncryptionTests.cs | 23 + BytecodeApi.Cryptography.Tests/HashesTests.cs | 54 + .../Properties/AssemblyInfo.cs | 1 + BytecodeApi.Cryptography/.nuget/README.md | 3 + .../AsymmetricContentEncryption.cs | 190 +- .../AsymmetricEncryption.cs | 205 +- .../AsymmetricKeyConvert.cs | 418 +-- BytecodeApi.Cryptography/AsymmetricKeyType.cs | 17 - BytecodeApi.Cryptography/BloomFilter.cs | 105 + .../BloomFilterHashFunction.cs | 11 + .../BytecodeApi.Cryptography.csproj | 108 +- BytecodeApi.Cryptography/ContentEncryption.cs | 116 +- BytecodeApi.Cryptography/Encryption.cs | 173 +- BytecodeApi.Cryptography/HashAlgorithms.cs | 70 - .../HashAlgorithms/Adler32.cs | 72 + .../HashAlgorithms/CRC32.cs | 88 + .../HashAlgorithms/CRC64.cs | 88 + .../HashAlgorithms/RIPEMD160.cs | 420 +++ .../HashAlgorithms/Tiger.cs | 24 + .../HashAlgorithms/Tiger2.cs | 24 + .../HashAlgorithms/TigerBase.cs | 339 +++ .../HashAlgorithms/Whirlpool.cs | 558 ++++ BytecodeApi.Cryptography/HashType.cs | 135 +- BytecodeApi.Cryptography/Hashes.cs | 263 +- .../Properties/AssemblyInfo.cs | 10 +- BytecodeApi.Cryptography/README.md | 147 ++ BytecodeApi.CsvParser/.nuget/README.md | 3 + .../BytecodeApi.CsvParser.csproj | 43 + BytecodeApi.CsvParser/CsvCell.cs | 111 + BytecodeApi.CsvParser/CsvDelimiterDetector.cs | 186 ++ BytecodeApi.CsvParser/CsvFile.cs | 496 ++++ BytecodeApi.CsvParser/CsvHelper.cs | 55 + BytecodeApi.CsvParser/CsvIterator.cs | 327 +++ BytecodeApi.CsvParser/CsvRow.cs | 125 + BytecodeApi.CsvParser/CsvRowCollection.cs | 102 + .../Properties/AssemblyInfo.cs | 4 + BytecodeApi.CsvParser/README.md | 81 + .../BytecodeApi.FileFormats.csproj | 101 - BytecodeApi.FileFormats/Csv/CsvCell.cs | 113 - .../Csv/CsvDelimiterDetector.cs | 194 -- BytecodeApi.FileFormats/Csv/CsvFile.cs | 490 ---- BytecodeApi.FileFormats/Csv/CsvHelper.cs | 48 - BytecodeApi.FileFormats/Csv/CsvIterator.cs | 331 --- BytecodeApi.FileFormats/Csv/CsvRow.cs | 122 - .../Csv/CsvRowCollection.cs | 104 - .../Ini/IniDuplicatePropertyNameBehavior.cs | 25 - .../Ini/IniDuplicateSectionNameBehavior.cs | 25 - BytecodeApi.FileFormats/Ini/IniErrorLine.cs | 28 - BytecodeApi.FileFormats/Ini/IniFile.cs | 425 ---- .../Ini/IniFileFormattingOptions.cs | 40 - .../Ini/IniFileParsingOptions.cs | 99 - .../Ini/IniParsingException.cs | 30 - BytecodeApi.FileFormats/Ini/IniProperty.cs | 51 - .../Ini/IniPropertyCollection.cs | 209 -- .../Ini/IniPropertyDelimiter.cs | 21 - BytecodeApi.FileFormats/Ini/IniSection.cs | 60 - .../Ini/IniSectionCollection.cs | 184 -- .../PE/ImageCharacteristics.cs | 72 - BytecodeApi.FileFormats/PE/ImageCoffHeader.cs | 48 - .../PE/ImageDataDirectory.cs | 33 - .../PE/ImageDataDirectoryName.cs | 69 - .../PE/ImageDllCharacteristics.cs | 56 - BytecodeApi.FileFormats/PE/ImageDosHeader.cs | 133 - .../PE/ImageMachineType.cs | 141 - .../PE/ImageOptionalHeader.cs | 122 - .../PE/ImageOptionalHeader32.cs | 37 - .../PE/ImageOptionalHeader64.cs | 33 - BytecodeApi.FileFormats/PE/ImageSection.cs | 28 - .../PE/ImageSectionFlags.cs | 132 - .../PE/ImageSectionHeader.cs | 64 - BytecodeApi.FileFormats/PE/ImageSubsystem.cs | 65 - BytecodeApi.FileFormats/PE/PEImage.cs | 253 -- .../PE/PEImageParseException.cs | 25 - .../Properties/AssemblyInfo.cs | 13 - .../ResourceFile/ResourceEntry.cs | 35 - .../ResourceFile/ResourceFileInfo.cs | 250 -- .../ResourceFile/ResourceType.cs | 93 - .../BytecodeApi.FileIcons.csproj | 387 --- BytecodeApi.FileIcons/FileIcon.cs | 177 -- BytecodeApi.FileIcons/KnownFileIconImages.cs | 1187 --------- BytecodeApi.FileIcons/KnownFileIconImages.tt | 32 - BytecodeApi.FileIcons/KnownFileIcons.cs | 401 --- BytecodeApi.FileIcons/KnownFileIcons.tt | 21 - .../Properties/AssemblyInfo.cs | 10 - .../Properties/Resources.Designer.cs | 1063 -------- .../Properties/Resources.resx | 421 --- .../Resources/_directory.ico | Bin 3117 -> 0 bytes BytecodeApi.FileIcons/Resources/_unknown.ico | Bin 2492 -> 0 bytes BytecodeApi.FileIcons/Resources/accdb.ico | Bin 1509 -> 0 bytes BytecodeApi.FileIcons/Resources/asm.ico | Bin 1385 -> 0 bytes BytecodeApi.FileIcons/Resources/aspx.ico | Bin 1891 -> 0 bytes BytecodeApi.FileIcons/Resources/avi.ico | Bin 4364 -> 0 bytes BytecodeApi.FileIcons/Resources/bat.ico | Bin 2511 -> 0 bytes BytecodeApi.FileIcons/Resources/bmp.ico | Bin 3182 -> 0 bytes BytecodeApi.FileIcons/Resources/c.ico | Bin 1252 -> 0 bytes BytecodeApi.FileIcons/Resources/cer.ico | Bin 4884 -> 0 bytes BytecodeApi.FileIcons/Resources/chm.ico | Bin 1142 -> 0 bytes BytecodeApi.FileIcons/Resources/com.ico | Bin 1244 -> 0 bytes BytecodeApi.FileIcons/Resources/config.ico | Bin 1565 -> 0 bytes BytecodeApi.FileIcons/Resources/contact.ico | Bin 4263 -> 0 bytes BytecodeApi.FileIcons/Resources/cpp.ico | Bin 1024 -> 0 bytes BytecodeApi.FileIcons/Resources/cs.ico | Bin 1397 -> 0 bytes BytecodeApi.FileIcons/Resources/csproj.ico | Bin 1190 -> 0 bytes BytecodeApi.FileIcons/Resources/css.ico | Bin 1234 -> 0 bytes BytecodeApi.FileIcons/Resources/csv.ico | Bin 1744 -> 0 bytes BytecodeApi.FileIcons/Resources/db.ico | Bin 3909 -> 0 bytes BytecodeApi.FileIcons/Resources/dll.ico | Bin 3909 -> 0 bytes BytecodeApi.FileIcons/Resources/doc.ico | Bin 1298 -> 0 bytes BytecodeApi.FileIcons/Resources/docx.ico | Bin 1514 -> 0 bytes BytecodeApi.FileIcons/Resources/dotx.ico | Bin 1455 -> 0 bytes BytecodeApi.FileIcons/Resources/dtd.ico | Bin 1252 -> 0 bytes BytecodeApi.FileIcons/Resources/exe.ico | Bin 1244 -> 0 bytes BytecodeApi.FileIcons/Resources/filters.ico | Bin 1154 -> 0 bytes BytecodeApi.FileIcons/Resources/gif.ico | Bin 3560 -> 0 bytes BytecodeApi.FileIcons/Resources/h.ico | Bin 1226 -> 0 bytes BytecodeApi.FileIcons/Resources/hlp.ico | Bin 2928 -> 0 bytes BytecodeApi.FileIcons/Resources/hpp.ico | Bin 1226 -> 0 bytes BytecodeApi.FileIcons/Resources/htm.ico | Bin 5932 -> 0 bytes BytecodeApi.FileIcons/Resources/html.ico | Bin 5932 -> 0 bytes BytecodeApi.FileIcons/Resources/inf.ico | Bin 3994 -> 0 bytes BytecodeApi.FileIcons/Resources/ini.ico | Bin 3994 -> 0 bytes BytecodeApi.FileIcons/Resources/ino.ico | Bin 5165 -> 0 bytes BytecodeApi.FileIcons/Resources/iso.ico | Bin 4115 -> 0 bytes BytecodeApi.FileIcons/Resources/jpeg.ico | Bin 2859 -> 0 bytes BytecodeApi.FileIcons/Resources/jpg.ico | Bin 2859 -> 0 bytes BytecodeApi.FileIcons/Resources/js.ico | Bin 2043 -> 0 bytes BytecodeApi.FileIcons/Resources/json.ico | Bin 1404 -> 0 bytes BytecodeApi.FileIcons/Resources/lib.ico | Bin 795 -> 0 bytes BytecodeApi.FileIcons/Resources/lnk.ico | Bin 3465 -> 0 bytes BytecodeApi.FileIcons/Resources/log.ico | Bin 2462 -> 0 bytes BytecodeApi.FileIcons/Resources/m4a.ico | Bin 3722 -> 0 bytes BytecodeApi.FileIcons/Resources/m4v.ico | Bin 4238 -> 0 bytes BytecodeApi.FileIcons/Resources/mak.ico | Bin 1093 -> 0 bytes BytecodeApi.FileIcons/Resources/manifest.ico | Bin 1272 -> 0 bytes BytecodeApi.FileIcons/Resources/md.ico | Bin 2462 -> 0 bytes BytecodeApi.FileIcons/Resources/mdb.ico | Bin 1275 -> 0 bytes BytecodeApi.FileIcons/Resources/mid.ico | Bin 4316 -> 0 bytes BytecodeApi.FileIcons/Resources/midi.ico | Bin 4316 -> 0 bytes BytecodeApi.FileIcons/Resources/mp3.ico | Bin 3723 -> 0 bytes BytecodeApi.FileIcons/Resources/mp4.ico | Bin 4316 -> 0 bytes BytecodeApi.FileIcons/Resources/mp4v.ico | Bin 4303 -> 0 bytes BytecodeApi.FileIcons/Resources/mpeg.ico | Bin 4452 -> 0 bytes BytecodeApi.FileIcons/Resources/mpg.ico | Bin 4452 -> 0 bytes BytecodeApi.FileIcons/Resources/msc.ico | Bin 5771 -> 0 bytes BytecodeApi.FileIcons/Resources/msi.ico | Bin 5276 -> 0 bytes BytecodeApi.FileIcons/Resources/pdb.ico | Bin 1476 -> 0 bytes BytecodeApi.FileIcons/Resources/pdf.ico | Bin 3367 -> 0 bytes BytecodeApi.FileIcons/Resources/pdn.ico | Bin 7024 -> 0 bytes BytecodeApi.FileIcons/Resources/php.ico | Bin 1523 -> 0 bytes BytecodeApi.FileIcons/Resources/phpproj.ico | Bin 1220 -> 0 bytes BytecodeApi.FileIcons/Resources/png.ico | Bin 4703 -> 0 bytes BytecodeApi.FileIcons/Resources/potx.ico | Bin 1464 -> 0 bytes BytecodeApi.FileIcons/Resources/ppt.ico | Bin 1262 -> 0 bytes BytecodeApi.FileIcons/Resources/pptx.ico | Bin 1655 -> 0 bytes BytecodeApi.FileIcons/Resources/rar.ico | Bin 3321 -> 0 bytes BytecodeApi.FileIcons/Resources/rdp.ico | Bin 9012 -> 0 bytes BytecodeApi.FileIcons/Resources/reg.ico | Bin 3659 -> 0 bytes BytecodeApi.FileIcons/Resources/res.ico | Bin 1232 -> 0 bytes BytecodeApi.FileIcons/Resources/resx.ico | Bin 1182 -> 0 bytes BytecodeApi.FileIcons/Resources/rll.ico | Bin 3909 -> 0 bytes BytecodeApi.FileIcons/Resources/rtf.ico | Bin 1298 -> 0 bytes BytecodeApi.FileIcons/Resources/scr.ico | Bin 1244 -> 0 bytes BytecodeApi.FileIcons/Resources/sdf.ico | Bin 4943 -> 0 bytes BytecodeApi.FileIcons/Resources/settings.ico | Bin 1832 -> 0 bytes BytecodeApi.FileIcons/Resources/sh.ico | Bin 2462 -> 0 bytes BytecodeApi.FileIcons/Resources/sln.ico | Bin 1436 -> 0 bytes BytecodeApi.FileIcons/Resources/txt.ico | Bin 2462 -> 0 bytes BytecodeApi.FileIcons/Resources/user.ico | Bin 1713 -> 0 bytes BytecodeApi.FileIcons/Resources/vb.ico | Bin 1537 -> 0 bytes BytecodeApi.FileIcons/Resources/vbproj.ico | Bin 1342 -> 0 bytes BytecodeApi.FileIcons/Resources/vbs.ico | Bin 3412 -> 0 bytes BytecodeApi.FileIcons/Resources/vcf.ico | Bin 4838 -> 0 bytes BytecodeApi.FileIcons/Resources/vcxproj.ico | Bin 926 -> 0 bytes BytecodeApi.FileIcons/Resources/vsix.ico | Bin 774 -> 0 bytes BytecodeApi.FileIcons/Resources/wav.ico | Bin 3800 -> 0 bytes BytecodeApi.FileIcons/Resources/wma.ico | Bin 3810 -> 0 bytes BytecodeApi.FileIcons/Resources/wmv.ico | Bin 4502 -> 0 bytes BytecodeApi.FileIcons/Resources/wpl.ico | Bin 4129 -> 0 bytes BytecodeApi.FileIcons/Resources/wsf.ico | Bin 3412 -> 0 bytes BytecodeApi.FileIcons/Resources/xaml.ico | Bin 4273 -> 0 bytes BytecodeApi.FileIcons/Resources/xls.ico | Bin 1324 -> 0 bytes BytecodeApi.FileIcons/Resources/xlsx.ico | Bin 1512 -> 0 bytes BytecodeApi.FileIcons/Resources/xltx.ico | Bin 1461 -> 0 bytes BytecodeApi.FileIcons/Resources/xml.ico | Bin 1495 -> 0 bytes BytecodeApi.FileIcons/Resources/xsd.ico | Bin 1215 -> 0 bytes BytecodeApi.FileIcons/Resources/zip.ico | Bin 3461 -> 0 bytes .../SpecialFileIconImages.cs | 35 - BytecodeApi.FileIcons/SpecialFileIcons.cs | 17 - BytecodeApi.IniParser/.nuget/README.md | 3 + .../BytecodeApi.IniParser.csproj | 43 + .../IniDuplicatePropertyNameBehavior.cs | 24 + .../IniDuplicateSectionNameBehavior.cs | 24 + BytecodeApi.IniParser/IniErrorLine.cs | 29 + BytecodeApi.IniParser/IniFile.cs | 455 ++++ .../IniFileFormattingOptions.cs | 39 + .../IniFileParsingOptions.cs | 98 + BytecodeApi.IniParser/IniParsingException.cs | 29 + BytecodeApi.IniParser/IniProperty.cs | 50 + .../IniPropertyCollection.cs | 185 ++ BytecodeApi.IniParser/IniPropertyDelimiter.cs | 20 + BytecodeApi.IniParser/IniSection.cs | 55 + BytecodeApi.IniParser/IniSectionCollection.cs | 183 ++ .../Properties/AssemblyInfo.cs | 4 + BytecodeApi.IniParser/README.md | 132 + .../.nuget/README.md | 3 + .../BytecodeApi.LanguageGenerator.csproj | 43 + .../ILanguageStringGenerator.cs | 15 + .../LoremIpsumGenerator.cs | 87 + .../NameGenerator.cs | 109 + .../Properties/AssemblyInfo.cs | 4 + BytecodeApi.LanguageGenerator/README.md | 72 + .../SentenceGenerator.cs | 94 + .../TextGenerator.cs | 96 + .../WordGenerator.cs | 88 + BytecodeApi.Lexer/.nuget/README.md | 3 + BytecodeApi.Lexer/BytecodeApi.Lexer.csproj | 43 + BytecodeApi.Lexer/Grammar.cs | 24 + BytecodeApi.Lexer/Lexer.cs | 128 + BytecodeApi.Lexer/ParseException.cs | 30 + BytecodeApi.Lexer/Properties/AssemblyInfo.cs | 4 + BytecodeApi.Lexer/README.md | 44 + BytecodeApi.Lexer/Token.cs | 83 + BytecodeApi.Lexer/TokenCollection.cs | 162 ++ BytecodeApi.PEParser/.nuget/README.md | 3 + .../BytecodeApi.PEParser.csproj | 43 + BytecodeApi.PEParser/ImageCharacteristics.cs | 69 + BytecodeApi.PEParser/ImageCoffHeader.cs | 44 + BytecodeApi.PEParser/ImageDataDirectory.cs | 30 + .../ImageDataDirectoryName.cs | 68 + .../ImageDllCharacteristics.cs | 53 + BytecodeApi.PEParser/ImageDosHeader.cs | 132 + BytecodeApi.PEParser/ImageMachineType.cs | 140 + BytecodeApi.PEParser/ImageOptionalHeader.cs | 131 + BytecodeApi.PEParser/ImageOptionalHeader32.cs | 36 + BytecodeApi.PEParser/ImageOptionalHeader64.cs | 32 + BytecodeApi.PEParser/ImageSection.cs | 25 + BytecodeApi.PEParser/ImageSectionFlags.cs | 129 + BytecodeApi.PEParser/ImageSectionHeader.cs | 64 + BytecodeApi.PEParser/ImageSubsystem.cs | 64 + BytecodeApi.PEParser/PEImage.cs | 250 ++ BytecodeApi.PEParser/PEImageParseException.cs | 24 + .../Properties/AssemblyInfo.cs | 4 + BytecodeApi.PEParser/README.md | 29 + BytecodeApi.PEResources/.nuget/README.md | 3 + .../BytecodeApi.PEResources.csproj | 44 + .../Properties/AssemblyInfo.cs | 4 + BytecodeApi.PEResources/README.md | 34 + BytecodeApi.PEResources/ResourceFileInfo.cs | 332 +++ BytecodeApi.PEResources/ResourceType.cs | 92 + BytecodeApi.Penetration/.nuget/README.md | 3 + BytecodeApi.Penetration/BlueScreen.cs | 31 + .../BytecodeApi.Penetration.csproj | 43 + BytecodeApi.Penetration/DllInjection.cs | 81 + .../ExecutableInjection.cs | 244 ++ .../Properties/AssemblyInfo.cs | 4 + BytecodeApi.Penetration/README.md | 55 + BytecodeApi.Penetration/Shellcode.cs | 91 + BytecodeApi.Rest/.nuget/README.md | 3 + BytecodeApi.Rest/BytecodeApi.Rest.csproj | 43 + BytecodeApi.Rest/Properties/AssemblyInfo.cs | 4 + BytecodeApi.Rest/README.md | 68 + BytecodeApi.Rest/RestClient.cs | 154 ++ BytecodeApi.Rest/RestException.cs | 31 + BytecodeApi.Rest/RestRequest.cs | 243 ++ BytecodeApi.UI/BytecodeApi.UI.csproj | 164 -- .../Controls/ContainerItemsControl.cs | 22 - BytecodeApi.UI/Controls/MenuItemService.cs | 49 - .../Controls/NoInheritanceContainer.cs | 26 - .../Controls/ObservableUserControl.cs | 222 -- BytecodeApi.UI/Controls/ObservableWindow.cs | 221 -- .../Controls/TreeViewItemService.cs | 67 - BytecodeApi.UI/Controls/WatermarkAdorner.cs | 89 - BytecodeApi.UI/Controls/WatermarkService.cs | 121 - BytecodeApi.UI/ConverterBase.cs | 120 - BytecodeApi.UI/ConverterBaseExtended.cs | 72 - BytecodeApi.UI/Converters/BooleanConverter.cs | 50 - .../Converters/BooleanConverterMethod.cs | 51 - .../Converters/BooleanMathConverter.cs | 41 - .../Converters/BooleanMathConverterMethod.cs | 24 - .../Converters/ByteSizeConverter.cs | 144 -- .../Converters/CoalesceConverter.cs | 28 - .../Converters/DateTimeConverter.cs | 59 - .../Converters/DateTimeConverterMethod.cs | 55 - BytecodeApi.UI/Converters/EnumConverter.cs | 51 - .../Converters/EnumConverterMethod.cs | 29 - .../Converters/EqualityConverter.cs | 87 - .../Converters/EqualityConverterMethod.cs | 35 - .../Converters/IEnumerableAnyConverter.cs | 44 - .../Converters/IEnumerableConverter.cs | 66 - .../Converters/IEnumerableConverterMethod.cs | 66 - BytecodeApi.UI/Converters/IfConverter.cs | 40 - .../Converters/ImageSourceConverter.cs | 34 - BytecodeApi.UI/Converters/MathConverter.cs | 121 - .../Converters/MathConverterMethod.cs | 49 - BytecodeApi.UI/Converters/NullConverter.cs | 40 - BytecodeApi.UI/Converters/PathConverter.cs | 57 - .../Converters/PathConverterMethod.cs | 45 - BytecodeApi.UI/Converters/RangeConverter.cs | 70 - BytecodeApi.UI/Converters/StringConverter.cs | 71 - .../Converters/StringConverterMethod.cs | 125 - .../Converters/StringEmptyConverter.cs | 63 - .../Converters/StringEmptyConverterMethod.cs | 17 - .../Converters/TimeSpanConverter.cs | 59 - .../Converters/TimeSpanConverterMethod.cs | 55 - .../TimeSpanHumanReadableConverter.cs | 56 - BytecodeApi.UI/Converters/TypeConverter.cs | 64 - .../Converters/TypeConverterMethod.cs | 19 - BytecodeApi.UI/Converters/VersionConverter.cs | 42 - BytecodeApi.UI/Data/KeyboardShortcut.cs | 178 -- BytecodeApi.UI/Data/ObservableObject.cs | 95 - BytecodeApi.UI/DelegateCommand.cs | 150 -- BytecodeApi.UI/DependencyPropertyEx.cs | 102 - BytecodeApi.UI/Dialogs/FileDialogs.cs | 186 -- BytecodeApi.UI/Dialogs/IconPickerDialog.cs | 61 - BytecodeApi.UI/Dialogs/MessageBoxes.cs | 141 - BytecodeApi.UI/Effects/GrayscaleEffect.cs | 38 - .../Extensions/ApplicationExtensions.cs | 44 - .../Extensions/ControlExtensions.cs | 21 - .../Extensions/DependencyObjectExtensions.cs | 231 -- .../Extensions/DispatcherObjectExtensions.cs | 31 - .../Extensions/FrameworkElementExtensions.cs | 53 - .../Extensions/UIElementExtensions.cs | 77 - .../Extensions/VisibilityExtensions.cs | 26 - BytecodeApi.UI/HotKey.cs | 102 - BytecodeApi.UI/HotKeyEventArgs.cs | 31 - BytecodeApi.UI/HwndBroadcast.cs | 95 - BytecodeApi.UI/Markup/BooleanExtension.cs | 44 - BytecodeApi.UI/Markup/ByteExtension.cs | 44 - BytecodeApi.UI/Markup/CharExtension.cs | 44 - BytecodeApi.UI/Markup/DateTimeExtension.cs | 44 - BytecodeApi.UI/Markup/DecimalExtension.cs | 44 - BytecodeApi.UI/Markup/DoubleExtension.cs | 44 - .../Markup/EventBindingExtension.cs | 91 - BytecodeApi.UI/Markup/IconExtension.cs | 53 - BytecodeApi.UI/Markup/Int16Extension.cs | 44 - BytecodeApi.UI/Markup/Int32Extension.cs | 44 - BytecodeApi.UI/Markup/Int64Extension.cs | 44 - BytecodeApi.UI/Markup/SByteExtension.cs | 44 - BytecodeApi.UI/Markup/SingleExtension.cs | 44 - BytecodeApi.UI/Markup/StringExtension.cs | 44 - BytecodeApi.UI/Markup/TimeSpanExtension.cs | 44 - BytecodeApi.UI/Markup/TypeExtension.cs | 53 - BytecodeApi.UI/Markup/TypeExtensionMethod.cs | 25 - BytecodeApi.UI/Markup/UInt16Extension.cs | 44 - BytecodeApi.UI/Markup/UInt32Extension.cs | 44 - BytecodeApi.UI/Markup/UInt64Extension.cs | 44 - .../Mathematics/ProgressCalculator.cs | 114 - .../ProgressCalculatorEventArgs.cs | 48 - BytecodeApi.UI/Packs.cs | 17 - BytecodeApi.UI/Properties/AssemblyInfo.cs | 18 - BytecodeApi.UI/SingleInstance.cs | 163 -- BytecodeApi.UI/UIContext.cs | 27 - BytecodeApi.UI/UITreeType.cs | 20 - BytecodeApi.Win32/.nuget/README.md | 3 + BytecodeApi.Win32/AtomTable/Atom.cs | 140 + BytecodeApi.Win32/AtomTable/GlobalAtom.cs | 140 + BytecodeApi.Win32/AtomTable/IAtom.cs | 16 + BytecodeApi.Win32/BytecodeApi.Win32.csproj | 49 + BytecodeApi.Win32/Desktop.cs | 152 ++ BytecodeApi.Win32/Interop/CommandPrompt.cs | 120 + .../Interop/CommandPromptEventArgs.cs | 29 + .../Interop/GlobalKeyboardHook.cs | 130 + BytecodeApi.Win32/Interop/HookProc.cs | 3 + .../Interop/KeyboardHookEventArgs.cs | 39 + .../Interop/KeyboardHookEventHandler.cs | 8 + BytecodeApi.Win32/Properties/AssemblyInfo.cs | 4 + BytecodeApi.Win32/README.md | 199 ++ BytecodeApi.Win32/SystemInfo/DeviceInfo.cs | 43 + BytecodeApi.Win32/SystemInfo/DeviceManager.cs | 76 + .../SystemInfo/DeviceTypeInfo.cs | 47 + BytecodeApi.Win32/SystemInfo/HardwareInfo.cs | 106 + BytecodeApi.Win32/SystemInfo/HostsFile.cs | 44 + .../SystemInfo/HostsFileEntry.cs | 23 + .../SystemInfo/InstalledSoftware.cs | 67 + .../SystemInfo/InstalledSoftwareInfo.cs | 46 + BytecodeApi.Win32/SystemInfo/KnownBrowser.cs | 40 + .../SystemInfo/OperatingSystemInfo.cs | 194 ++ .../SystemInfo/ProtocolMapping.cs | 48 + .../SystemInfo/ProtocolMappingEntry.cs | 27 + BytecodeApi.Win32/SystemInfo/TcpView.cs | 228 ++ BytecodeApi.Win32/SystemInfo/TcpViewEntry.cs | 57 + .../SystemInfo/TransportProtocol.cs | 20 + .../SystemInfo/TransportProtocolAndVersion.cs | 30 + BytecodeApi.Wmi/.nuget/README.md | 3 + BytecodeApi.Wmi/BytecodeApi.Wmi.csproj | 46 + BytecodeApi.Wmi/IWmiQueryable.cs | 45 + BytecodeApi.Wmi/Properties/AssemblyInfo.cs | 4 + BytecodeApi.Wmi/README.md | 50 + BytecodeApi.Wmi/WmiClass.cs | 108 + BytecodeApi.Wmi/WmiContext.cs | 12 + BytecodeApi.Wmi/WmiIterator.cs | 53 + BytecodeApi.Wmi/WmiNamespace.cs | 84 + BytecodeApi.Wmi/WmiObject.cs | 25 + BytecodeApi.Wmi/WmiProperty.cs | 114 + BytecodeApi.Wmi/WmiPropertyCollection.cs | 73 + BytecodeApi.Wmi/WmiQueryBuilder.cs | 93 + BytecodeApi.Wpf/.nuget/README.md | 3 + BytecodeApi.Wpf/BindingErrorTraceListener.cs | 49 + BytecodeApi.Wpf/BytecodeApi.Wpf.csproj | 60 + BytecodeApi.Wpf/Controls/NewLine.cs | 25 + .../Controls/ObservableItemsControl.cs | 220 ++ .../Controls/ObservableUserControl.cs | 220 ++ BytecodeApi.Wpf/Controls/ObservableWindow.cs | 203 ++ BytecodeApi.Wpf/ConverterBase.cs | 112 + .../Converters/BooleanConverter.cs | 49 + .../Converters/BooleanConverterMethod.cs | 50 + .../Converters/BooleanMathConverter.cs | 40 + .../Converters/BooleanMathConverterMethod.cs | 23 + .../Converters/ByteSizeConverter.cs | 149 ++ .../Converters/CoalesceConverter.cs | 27 + .../Converters/DateOnlyConverter.cs | 83 + .../Converters/DateOnlyConverterMethod.cs | 36 + .../Converters/DateTimeConverter.cs | 96 + .../Converters/DateTimeConverterMethod.cs | 60 + BytecodeApi.Wpf/Converters/EnumConverter.cs | 49 + .../Converters/EnumConverterMethod.cs | 27 + .../Converters/EnumerableAnyConverter.cs | 41 + .../Converters/EnumerableConverter.cs | 61 + .../Converters/EnumerableConverterMethod.cs | 61 + .../Converters/EqualityConverter.cs | 75 + .../Converters/EqualityConverterMethod.cs | 32 + BytecodeApi.Wpf/Converters/IfConverter.cs | 39 + .../Converters/ImageSourceConverter.cs | 42 + BytecodeApi.Wpf/Converters/MathConverter.cs | 130 + .../Converters/MathConverterMethod.cs | 53 + BytecodeApi.Wpf/Converters/MoneyConverter.cs | 88 + .../Converters/MoneyConverterMethod.cs | 30 + BytecodeApi.Wpf/Converters/NullConverter.cs | 39 + BytecodeApi.Wpf/Converters/PathConverter.cs | 55 + .../Converters/PathConverterMethod.cs | 44 + BytecodeApi.Wpf/Converters/RangeConverter.cs | 67 + BytecodeApi.Wpf/Converters/StringConverter.cs | 70 + .../Converters/StringConverterMethod.cs | 128 + .../Converters/StringEmptyConverter.cs | 55 + .../Converters/StringEmptyConverterMethod.cs | 16 + .../Converters/TimeSpanConverter.cs | 57 + .../Converters/TimeSpanConverterMethod.cs | 52 + .../TimeSpanHumanReadableConverter.cs | 61 + BytecodeApi.Wpf/Converters/TypeConverter.cs | 54 + .../Converters/TypeConverterMethod.cs | 16 + .../Converters/VersionConverter.cs | 39 + BytecodeApi.Wpf/Data/KeyboardShortcut.cs | 249 ++ BytecodeApi.Wpf/DelegateCommand.cs | 166 ++ BytecodeApi.Wpf/DependencyPropertyEx.cs | 175 ++ BytecodeApi.Wpf/Dialogs/Dialog.cs | 269 ++ BytecodeApi.Wpf/Dialogs/DialogIcon.cs | 48 + BytecodeApi.Wpf/Dialogs/DialogMessageBoxes.cs | 311 +++ BytecodeApi.Wpf/Dialogs/DialogResult.cs | 68 + BytecodeApi.Wpf/Dialogs/FileDialogs.cs | 191 ++ BytecodeApi.Wpf/Dialogs/IconPickerDialog.cs | 68 + BytecodeApi.Wpf/Dialogs/MessageBoxes.cs | 165 ++ BytecodeApi.Wpf/Effects/GrayscaleEffect.cs | 48 + BytecodeApi.Wpf/Effects/InvertEffect.cs | 53 + .../Extensions/ApplicationExtensions.cs | 73 + .../Extensions/BitmapEncoderExtensions.cs | 38 + BytecodeApi.Wpf/Extensions/ColorExtensions.cs | 97 + .../DefaultTypes/BooleanExtensions.cs | 36 + .../Extensions/DelegateDebounceExtensions.cs | 124 + .../Extensions/DependencyObjectExtensions.cs | 223 ++ .../Extensions/FrameworkElementExtensions.cs | 52 + BytecodeApi.Wpf/Extensions/IconExtensions.cs | 24 + BytecodeApi.Wpf/Extensions/ImageExtensions.cs | 42 + .../Extensions/TextBoxExtensions.cs | 48 + .../Extensions/UIElementExtensions.cs | 75 + .../Extensions/VisibilityExtensions.cs | 28 + BytecodeApi.Wpf/Interop/HotKey.cs | 139 + BytecodeApi.Wpf/Interop/HotKeyEventArgs.cs | 25 + BytecodeApi.Wpf/Interop/HwndBroadcast.cs | 114 + BytecodeApi.Wpf/Interop/OutlookDataObject.cs | 467 ++++ BytecodeApi.Wpf/Interop/SingleInstance.cs | 193 ++ BytecodeApi.Wpf/Markup/BooleanExtension.cs | 42 + BytecodeApi.Wpf/Markup/ByteExtension.cs | 42 + BytecodeApi.Wpf/Markup/CharExtension.cs | 42 + BytecodeApi.Wpf/Markup/DateOnlyExtension.cs | 61 + BytecodeApi.Wpf/Markup/DateTimeExtension.cs | 61 + BytecodeApi.Wpf/Markup/DecimalExtension.cs | 42 + BytecodeApi.Wpf/Markup/DoubleExtension.cs | 42 + .../Markup/EventBindingExtension.cs | 100 + BytecodeApi.Wpf/Markup/IconExtension.cs | 51 + BytecodeApi.Wpf/Markup/Int16Extension.cs | 42 + BytecodeApi.Wpf/Markup/Int32Extension.cs | 42 + BytecodeApi.Wpf/Markup/Int64Extension.cs | 42 + BytecodeApi.Wpf/Markup/SByteExtension.cs | 42 + BytecodeApi.Wpf/Markup/SingleExtension.cs | 42 + BytecodeApi.Wpf/Markup/StringExtension.cs | 42 + BytecodeApi.Wpf/Markup/ThicknessExtension.cs | 54 + BytecodeApi.Wpf/Markup/TimeOnlyExtension.cs | 61 + BytecodeApi.Wpf/Markup/TimeSpanExtension.cs | 42 + BytecodeApi.Wpf/Markup/TypeExtension.cs | 50 + BytecodeApi.Wpf/Markup/TypeExtensionMethod.cs | 22 + BytecodeApi.Wpf/Markup/UInt16Extension.cs | 42 + BytecodeApi.Wpf/Markup/UInt32Extension.cs | 42 + BytecodeApi.Wpf/Markup/UInt64Extension.cs | 42 + BytecodeApi.Wpf/Packs.cs | 16 + BytecodeApi.Wpf/Properties/AssemblyInfo.cs | 18 + .../Properties/Resources.Designer.cs | 156 +- .../Properties/Resources.resx | 249 +- BytecodeApi.Wpf/README.md | 248 ++ .../Resources/GrayscaleEffect.ps | Bin BytecodeApi.Wpf/Resources/InvertEffect.ps | Bin 0 -> 252 bytes BytecodeApi.Wpf/Services/MenuItemService.cs | 60 + BytecodeApi.Wpf/Services/TextBlockService.cs | 48 + .../Services/TreeViewItemService.cs | 66 + BytecodeApi.Wpf/Services/WindowService.cs | 269 ++ .../Threading/DispatcherTimerFactory.cs | 87 + BytecodeApi.Wpf/TwoWayConverterBase.cs | 62 + BytecodeApi.Wpf/UIContext.cs | 35 + BytecodeApi.Wpf/UITreeType.cs | 19 + BytecodeApi.sln | 297 ++- BytecodeApi.sln.GhostDoc.xml | 66 - BytecodeApi/.nuget/README.md | 3 + BytecodeApi/ApplicationBase.cs | 681 ++--- BytecodeApi/BytecodeApi.csproj | 278 +- BytecodeApi/CSharp.cs | 1145 +++++---- BytecodeApi/CachedProperty.cs | 159 +- .../Comparers/ByteArrayEqualityComparer.cs | 40 + BytecodeApi/Comparers/DelegateComparer.cs | 90 +- .../Comparers/DelegateEqualityComparer.cs | 109 +- .../Comparers/EnumerableCountComparer.cs | 57 + .../Comparers/IEnumerableCountComparer.cs | 48 - .../Comparers/NaturalStringComparer.cs | 79 +- .../Comparers/SpecialStringComparer.cs | 51 - BytecodeApi/Comparers/StringLengthComparer.cs | 74 +- .../Comparers/StringLengthTrimmedComparer.cs | 74 +- BytecodeApi/ConvertEx.cs | 1018 ++++---- BytecodeApi/ConvertObjectOptions.cs | 77 +- BytecodeApi/Create.cs | 318 +-- BytecodeApi/Data/Blob.cs | 200 +- BytecodeApi/Data/BlobCollection.cs | 351 ++- BytecodeApi/Data/BlobTree.cs | 123 +- BytecodeApi/Data/BlobTreeNode.cs | 398 +-- BytecodeApi/Data/BlobTreeNodeCollection.cs | 256 +- BytecodeApi/Data/Currency.cs | 821 ++++++ BytecodeApi/Data/CurrencyConversion.cs | 33 + BytecodeApi/Data/CurrencyConverter.cs | 92 + BytecodeApi/Data/ICopy.cs | 14 + BytecodeApi/Data/IDeepCopy.cs | 14 + BytecodeApi/Data/Money.cs | 320 +++ BytecodeApi/Data/ObjectEventArgs.cs | 32 - BytecodeApi/Data/ObjectEventHandler.cs | 10 - BytecodeApi/Data/ObservableObject.cs | 92 + BytecodeApi/DateTimeEx.cs | 95 + BytecodeApi/DateTimePart.cs | 61 +- BytecodeApi/EnumEx.cs | 130 +- BytecodeApi/Extensions/ArrayExtensions.cs | 39 + BytecodeApi/Extensions/BitArrayExtensions.cs | 359 +++ .../Extensions/BitmapEncoderExtensions.cs | 44 - BytecodeApi/Extensions/ByteArrayExtensions.cs | 207 ++ .../Extensions/Collections/ArrayExtensions.cs | 24 - .../Collections/BitArrayExtensions.cs | 328 --- .../Collections/ByteArrayExtensions.cs | 196 -- BytecodeApi/Extensions/ColorExtensions.cs | 92 - .../Extensions/CompressionExtensions.cs | 95 +- .../Extensions/CookieContainerExtensions.cs | 39 - BytecodeApi/Extensions/DateOnlyExtensions.cs | 45 + BytecodeApi/Extensions/DateTimeExtensions.cs | 445 ++-- .../DefaultTypes/BooleanExtensions.cs | 78 +- .../Extensions/DefaultTypes/ByteExtensions.cs | 75 +- .../Extensions/DefaultTypes/CharExtensions.cs | 576 ++--- .../DefaultTypes/DecimalExtensions.cs | 75 +- .../DefaultTypes/DoubleExtensions.cs | 171 +- .../Extensions/DefaultTypes/GuidExtensions.cs | 32 +- .../DefaultTypes/Int16Extensions.cs | 75 +- .../DefaultTypes/Int32Extensions.cs | 75 +- .../DefaultTypes/Int64Extensions.cs | 75 +- .../DefaultTypes/SByteExtensions.cs | 75 +- .../DefaultTypes/SingleExtensions.cs | 171 +- .../DefaultTypes/StringConvertExtensions.cs | 1086 ++++---- .../DefaultTypes/StringExtensions.cs | 2161 ++++++++++------ .../DefaultTypes/UInt16Extensions.cs | 75 +- .../DefaultTypes/UInt32Extensions.cs | 75 +- .../DefaultTypes/UInt64Extensions.cs | 75 +- .../Extensions/DelegateDebounceExtensions.cs | 104 + BytecodeApi/Extensions/DelegateExtensions.cs | 385 --- .../Extensions/DirectoryInfoExtensions.cs | 259 +- BytecodeApi/Extensions/EnumExtensions.cs | 50 +- .../Extensions/EnumerableConvertExtensions.cs | 291 +++ .../Extensions/EnumerableExtensions.cs | 720 ++++++ .../Extensions/EnumerableMathExtensions.cs | 347 +++ .../Extensions/EnumerableStringExtensions.cs | 75 + BytecodeApi/Extensions/ExceptionExtensions.cs | 139 +- .../Extensions/ExpressionExtensions.cs | 95 +- BytecodeApi/Extensions/FileInfoExtensions.cs | 410 ++- .../Extensions/FileSystemInfoExtensions.cs | 116 +- .../IEnumerableConvertExtensions.cs | 295 --- .../Extensions/IEnumerableExtensions.cs | 1079 -------- .../Extensions/IQueryableExtensions.cs | 47 - BytecodeApi/Extensions/IconExtensions.cs | 79 +- BytecodeApi/Extensions/ImageExtensions.cs | 264 +- BytecodeApi/Extensions/ProcessExtensions.cs | 584 ++--- BytecodeApi/Extensions/RandomExtensions.cs | 495 ++-- .../RandomNumberGeneratorExtensions.cs | 481 ++-- .../Extensions/ReflectionExtensions.cs | 375 +-- BytecodeApi/Extensions/RegistryExtensions.cs | 777 +++--- BytecodeApi/Extensions/StreamExtensions.cs | 122 +- BytecodeApi/Extensions/TimeOnlyExtensions.cs | 34 + BytecodeApi/Extensions/TimeSpanExtensions.cs | 272 +- BytecodeApi/Extensions/WebClientExtensions.cs | 42 - BytecodeApi/Extensions/XDocumentExtensions.cs | 98 + BytecodeApi/Extensions/XmlExtensions.cs | 104 - BytecodeApi/GuidFormat.cs | 59 +- BytecodeApi/IO/AlternateDataStream.cs | 134 + .../IO/AlternateDataStreamAttributes.cs | 29 + BytecodeApi/IO/AlternateDataStreamInfo.cs | 139 + BytecodeApi/IO/AlternateDataStreamType.cs | 52 + BytecodeApi/IO/BinaryStream.cs | 1170 +++++---- BytecodeApi/IO/Cli/CliException.cs | 32 - BytecodeApi/IO/Cli/CliValidationSource.cs | 55 - BytecodeApi/IO/Cli/CommandLineParser.cs | 35 - BytecodeApi/IO/Cli/Option.cs | 122 - BytecodeApi/IO/Cli/OptionSet.cs | 232 -- BytecodeApi/IO/Cli/ParsedOption.cs | 42 - BytecodeApi/IO/Cli/ParsedOptionSet.cs | 524 ---- BytecodeApi/IO/CliCommand.cs | 181 ++ BytecodeApi/IO/CliResult.cs | 36 + BytecodeApi/IO/CommandLine.cs | 81 + BytecodeApi/IO/CompareDirectoryOptions.cs | 45 + BytecodeApi/IO/Compression.cs | 101 +- .../IO/Debugging/BindingErrorTraceListener.cs | 51 - .../IO/Debugging/DelegateTraceListener.cs | 144 -- BytecodeApi/IO/Debugging/TraceDataInfo.cs | 54 - BytecodeApi/IO/Debugging/TraceEventInfo.cs | 64 - BytecodeApi/IO/Debugging/TraceTransferInfo.cs | 55 - BytecodeApi/IO/Desktop.cs | 139 - BytecodeApi/IO/DirectoryEx.cs | 160 ++ BytecodeApi/IO/ElevationType.cs | 33 +- BytecodeApi/IO/FileEx.cs | 101 + BytecodeApi/IO/FileExtensionInfo.cs | 258 ++ .../IO/FileSystem/AlternateDataStream.cs | 115 - .../AlternateDataStreamAttributes.cs | 32 - .../IO/FileSystem/AlternateDataStreamInfo.cs | 97 - .../IO/FileSystem/AlternateDataStreamType.cs | 53 - BytecodeApi/IO/FileSystem/CacheFile.cs | 209 -- .../IO/FileSystem/CacheFileRequestCallback.cs | 14 - .../IO/FileSystem/CacheFileUpdateCallback.cs | 10 - .../IO/FileSystem/CompareDirectoryOptions.cs | 49 - BytecodeApi/IO/FileSystem/DirectoryEx.cs | 163 -- BytecodeApi/IO/FileSystem/FileEx.cs | 113 - BytecodeApi/IO/FileSystem/KnownPaths.cs | 22 - BytecodeApi/IO/FileSystem/PathEx.cs | 82 - BytecodeApi/IO/FileSystem/TempDirectory.cs | 76 - BytecodeApi/IO/Http/HttpClient.cs | 122 - BytecodeApi/IO/Http/HttpException.cs | 38 - BytecodeApi/IO/Http/HttpFile.cs | 16 - BytecodeApi/IO/Http/HttpGetRequest.cs | 36 - BytecodeApi/IO/Http/HttpHeadRequest.cs | 67 - BytecodeApi/IO/Http/HttpMultipartRequest.cs | 146 -- BytecodeApi/IO/Http/HttpParameter.cs | 14 - BytecodeApi/IO/Http/HttpPostRequest.cs | 91 - BytecodeApi/IO/Http/HttpRequest.cs | 220 -- BytecodeApi/IO/Http/HttpResponseHeaders.cs | 72 - BytecodeApi/IO/IconHelper.cs | 171 +- BytecodeApi/IO/Interop/Atom.cs | 62 - BytecodeApi/IO/Interop/CommandPrompt.cs | 107 - .../IO/Interop/CommandPromptEventArgs.cs | 30 - BytecodeApi/IO/Interop/DynamicLibrary.cs | 100 - .../IO/Interop/DynamicLibraryFunction.cs | 107 - BytecodeApi/IO/Interop/GlobalAtom.cs | 62 - BytecodeApi/IO/Interop/GlobalKeyboardHook.cs | 88 - BytecodeApi/IO/Interop/IAtom.cs | 17 - .../IO/Interop/KeyboardHookEventArgs.cs | 41 - .../IO/Interop/KeyboardHookEventHandler.cs | 9 - BytecodeApi/IO/Interop/OutlookDataObject.cs | 347 --- BytecodeApi/IO/KnownPaths.cs | 21 + BytecodeApi/IO/Network.cs | 109 +- BytecodeApi/IO/PathEx.cs | 128 + BytecodeApi/IO/ProcessEx.cs | 554 ++-- BytecodeApi/IO/ProcessIntegrityLevel.cs | 49 +- BytecodeApi/IO/ProcessLoadLibraryResult.cs | 36 - BytecodeApi/IO/SystemInfo/DeviceInfo.cs | 48 - BytecodeApi/IO/SystemInfo/DeviceManager.cs | 64 - BytecodeApi/IO/SystemInfo/DeviceTypeInfo.cs | 48 - .../IO/SystemInfo/FileExtensionInfo.cs | 220 -- BytecodeApi/IO/SystemInfo/HostsFile.cs | 34 - BytecodeApi/IO/SystemInfo/HostsFileEntry.cs | 27 - .../IO/SystemInfo/InstalledSoftware.cs | 65 - .../IO/SystemInfo/InstalledSoftwareInfo.cs | 51 - BytecodeApi/IO/SystemInfo/ProtocolMapping.cs | 40 - .../IO/SystemInfo/ProtocolMappingEntry.cs | 31 - .../IO/SystemInfo/ProtocolMappingProtocol.cs | 21 - BytecodeApi/IO/SystemInfo/TcpView.cs | 184 -- BytecodeApi/IO/SystemInfo/TcpViewEntry.cs | 57 - .../IO/SystemInfo/TcpViewEntryProtocol.cs | 31 - BytecodeApi/IO/TempDirectory.cs | 81 + BytecodeApi/IO/TransferCallback.cs | 9 - BytecodeApi/IO/Wmi/WmiClass.cs | 143 -- BytecodeApi/IO/Wmi/WmiNamespace.cs | 161 -- BytecodeApi/IO/Wmi/WmiObject.cs | 37 - BytecodeApi/IO/Wmi/WmiProperty.cs | 119 - BytecodeApi/IO/Wmi/WmiPropertyCollection.cs | 101 - BytecodeApi/IO/ZipCompression.cs | 387 ++- BytecodeApi/IndexedProperty.cs | 38 + BytecodeApi/Internal/Check.cs | 445 ++-- BytecodeApi/Internal/ExceptionMessages.cs | 59 +- BytecodeApi/Internal/Native.cs | 720 ------ BytecodeApi/Internal/Throw.cs | 94 +- BytecodeApi/Interop/DynamicLibrary.cs | 96 + BytecodeApi/Interop/DynamicLibraryFunction.cs | 103 + BytecodeApi/Interop/HGlobal.cs | 261 ++ BytecodeApi/KnownBrowser.cs | 41 - BytecodeApi/Mathematics/AngleType.cs | 33 +- BytecodeApi/Mathematics/BitCalculator.cs | 1297 +++++----- BytecodeApi/Mathematics/ByteSize.cs | 1463 ++++++----- BytecodeApi/Mathematics/ByteSizeUnit.cs | 81 +- BytecodeApi/Mathematics/DateTimeEx.cs | 94 - BytecodeApi/Mathematics/MathEx.cs | 2265 ++++++----------- BytecodeApi/Mathematics/ProgressCalculator.cs | 116 + .../ProgressCalculatorEventArgs.cs | 45 + BytecodeApi/Mathematics/Range.cs | 134 - BytecodeApi/Properties/AssemblyInfo.cs | 43 +- BytecodeApi/README.md | 462 ++++ BytecodeApi/ReadOnlyIndexedProperty.cs | 30 + BytecodeApi/SpecialStringComparisons.cs | 44 - BytecodeApi/StringCasing.cs | 79 +- BytecodeApi/Text/ILanguageStringGenerator.cs | 16 - .../Json/Converters/DateOnlyJsonConverter.cs | 35 + .../Json/Converters/EnumNameJsonConverter.cs | 35 + .../Json/Converters/TimeOnlyJsonConverter.cs | 35 + BytecodeApi/Text/QuotedString.cs | 255 +- BytecodeApi/Text/SentenceGenerator.cs | 91 - BytecodeApi/Text/StringDistance.cs | 182 +- BytecodeApi/Text/TextGenerator.cs | 88 - BytecodeApi/Text/TextResources.cs | 57 +- BytecodeApi/Text/WordGenerator.cs | 88 - BytecodeApi/Text/Wording.cs | 515 ++-- BytecodeApi/Threading/Deferrer.cs | 117 - BytecodeApi/Threading/ThreadFactory.cs | 189 +- BytecodeApi/TypeNaming.cs | 39 +- BytecodeApi/Validate.cs | 428 ++-- Global/GlobalAssemblyInfo.cs | 12 - LICENSE.md | 2 +- Playground.Console/App.config | 6 - Playground.Console/ExecuteAttribute.cs | 7 + Playground.Console/Playground.Console.csproj | 134 +- Playground.Console/Playground.cs | 37 + Playground.Console/Program.cs | 36 - Playground.Console/Startup.cs | 32 + Playground.Wpf/App.config | 6 - Playground.Wpf/App.xaml | 5 +- Playground.Wpf/App.xaml.cs | 19 +- Playground.Wpf/{Views => }/MainWindow.xaml | 8 +- Playground.Wpf/MainWindow.xaml.cs | 30 + Playground.Wpf/MainWindowViewModel.cs | 28 + Playground.Wpf/Playground.Wpf.csproj | 164 +- Playground.Wpf/Properties/AssemblyInfo.cs | 3 + .../Properties/Resources.Designer.cs | 63 - Playground.Wpf/Properties/Resources.resx | 117 - .../ViewModels/MainWindowViewModel.cs | 23 - Playground.Wpf/Views/MainUserControl.xaml | 11 - Playground.Wpf/Views/MainUserControl.xaml.cs | 13 - Playground.Wpf/Views/MainWindow.xaml.cs | 16 - README.md | 64 +- 821 files changed, 43030 insertions(+), 41227 deletions(-) delete mode 100644 !Docs/Related Files/FileGrayscaleEffect.fx delete mode 100644 !Examples/BytecodeApi.Cryptography/AsymmetricContentEncryption.cs delete mode 100644 !Examples/BytecodeApi.Cryptography/AsymmetricEncryption.cs delete mode 100644 !Examples/BytecodeApi.Cryptography/AsymmetricKeyConvert.cs delete mode 100644 !Examples/BytecodeApi.Cryptography/ContentEncryption.cs delete mode 100644 !Examples/BytecodeApi.Cryptography/Encryption.cs delete mode 100644 !Examples/BytecodeApi.Cryptography/Hashes.cs delete mode 100644 !Examples/BytecodeApi.Data/Blob.cs delete mode 100644 !Examples/BytecodeApi.Extensions/Extensions.cs delete mode 100644 !Examples/BytecodeApi.FileFormats.Csv/CsvDelimiterDetector.cs delete mode 100644 !Examples/BytecodeApi.FileFormats.Csv/CsvFile.Save.cs delete mode 100644 !Examples/BytecodeApi.FileFormats.Csv/CsvFile.cs delete mode 100644 !Examples/BytecodeApi.FileFormats.Csv/CsvIterator.cs delete mode 100644 !Examples/BytecodeApi.FileFormats.Ini/IniFile.Read.cs delete mode 100644 !Examples/BytecodeApi.FileFormats.Ini/IniFile.Write.cs delete mode 100644 !Examples/BytecodeApi.FileFormats.PE/PEImage.cs delete mode 100644 !Examples/BytecodeApi.FileIcons/FileIcon.cs delete mode 100644 !Examples/BytecodeApi.IO.Cli/Cli.cs delete mode 100644 !Examples/BytecodeApi.IO.FileSystem/CacheFile.cs delete mode 100644 !Examples/BytecodeApi.IO.Http/HttpClient.cs delete mode 100644 !Examples/BytecodeApi.IO.Interop/DynamicLibrary.cs delete mode 100644 !Examples/BytecodeApi.IO.Interop/GlobalKeyboardHook.cs delete mode 100644 !Examples/BytecodeApi.IO.SystemInfo/DeviceManager.cs delete mode 100644 !Examples/BytecodeApi.IO.SystemInfo/HostsFile.cs delete mode 100644 !Examples/BytecodeApi.IO.SystemInfo/InstalledSoftware.cs delete mode 100644 !Examples/BytecodeApi.IO.SystemInfo/TcpView.cs delete mode 100644 !Examples/BytecodeApi.IO.Wmi/Wmi.cs delete mode 100644 !Examples/BytecodeApi.IO/BinaryStream.cs delete mode 100644 !Examples/BytecodeApi.IO/Compression.cs delete mode 100644 !Examples/BytecodeApi.IO/ProcessEx.cs delete mode 100644 !Examples/BytecodeApi.IO/ZipCompression.cs delete mode 100644 !Examples/BytecodeApi.Mathematics/ByteSize.cs delete mode 100644 !Examples/BytecodeApi.Text/QuotedString.cs delete mode 100644 !Examples/BytecodeApi.Text/SentenceGenerator.cs delete mode 100644 !Examples/BytecodeApi.Text/WordGenerator.cs delete mode 100644 !Examples/BytecodeApi.Text/Wording.cs delete mode 100644 !Examples/BytecodeApi/ApplicationBase.cs delete mode 100644 !Examples/BytecodeApi/CSharp.cs delete mode 100644 !Examples/BytecodeApi/CachedProperty.cs delete mode 100644 !Examples/BytecodeApi/EnumEx.cs create mode 100644 .nuget/PackageIcon.pdn create mode 100644 .nuget/PackageIcon.png create mode 100644 BytecodeApi.CommandLineParser/.nuget/README.md create mode 100644 BytecodeApi.CommandLineParser/BytecodeApi.CommandLineParser.csproj create mode 100644 BytecodeApi.CommandLineParser/CommandLineParserError.cs create mode 100644 BytecodeApi.CommandLineParser/CommandLineParserException.cs create mode 100644 BytecodeApi.CommandLineParser/Option.cs create mode 100644 BytecodeApi.CommandLineParser/OptionSet.cs create mode 100644 BytecodeApi.CommandLineParser/ParsedOption.cs create mode 100644 BytecodeApi.CommandLineParser/ParsedOptionSet.cs create mode 100644 BytecodeApi.CommandLineParser/Properties/AssemblyInfo.cs create mode 100644 BytecodeApi.CommandLineParser/README.md create mode 100644 BytecodeApi.ConsoleUI/.nuget/README.md create mode 100644 BytecodeApi.ConsoleUI/BytecodeApi.ConsoleUI.csproj create mode 100644 BytecodeApi.ConsoleUI/ConsoleInput.cs create mode 100644 BytecodeApi.ConsoleUI/ConsoleInputTheme.cs create mode 100644 BytecodeApi.ConsoleUI/ConsoleStyle.cs create mode 100644 BytecodeApi.ConsoleUI/ConsoleWriter.cs create mode 100644 BytecodeApi.ConsoleUI/ConsoleWriterTheme.cs create mode 100644 BytecodeApi.ConsoleUI/Properties/AssemblyInfo.cs create mode 100644 BytecodeApi.ConsoleUI/README.md create mode 100644 BytecodeApi.Cryptography.Tests/AsymmetricContentEncryptionTests.cs create mode 100644 BytecodeApi.Cryptography.Tests/AsymmetricEncryptionTests.cs create mode 100644 BytecodeApi.Cryptography.Tests/AsymmetricKeyConvertTests.cs create mode 100644 BytecodeApi.Cryptography.Tests/BloomFilterTests.cs create mode 100644 BytecodeApi.Cryptography.Tests/BytecodeApi.Cryptography.Tests.csproj create mode 100644 BytecodeApi.Cryptography.Tests/Comparers/RSAParametersEqualityComparer.cs create mode 100644 BytecodeApi.Cryptography.Tests/ContentEncryptionTests.cs create mode 100644 BytecodeApi.Cryptography.Tests/EncryptionTests.cs create mode 100644 BytecodeApi.Cryptography.Tests/HashesTests.cs create mode 100644 BytecodeApi.Cryptography.Tests/Properties/AssemblyInfo.cs create mode 100644 BytecodeApi.Cryptography/.nuget/README.md delete mode 100644 BytecodeApi.Cryptography/AsymmetricKeyType.cs create mode 100644 BytecodeApi.Cryptography/BloomFilter.cs create mode 100644 BytecodeApi.Cryptography/BloomFilterHashFunction.cs delete mode 100644 BytecodeApi.Cryptography/HashAlgorithms.cs create mode 100644 BytecodeApi.Cryptography/HashAlgorithms/Adler32.cs create mode 100644 BytecodeApi.Cryptography/HashAlgorithms/CRC32.cs create mode 100644 BytecodeApi.Cryptography/HashAlgorithms/CRC64.cs create mode 100644 BytecodeApi.Cryptography/HashAlgorithms/RIPEMD160.cs create mode 100644 BytecodeApi.Cryptography/HashAlgorithms/Tiger.cs create mode 100644 BytecodeApi.Cryptography/HashAlgorithms/Tiger2.cs create mode 100644 BytecodeApi.Cryptography/HashAlgorithms/TigerBase.cs create mode 100644 BytecodeApi.Cryptography/HashAlgorithms/Whirlpool.cs create mode 100644 BytecodeApi.Cryptography/README.md create mode 100644 BytecodeApi.CsvParser/.nuget/README.md create mode 100644 BytecodeApi.CsvParser/BytecodeApi.CsvParser.csproj create mode 100644 BytecodeApi.CsvParser/CsvCell.cs create mode 100644 BytecodeApi.CsvParser/CsvDelimiterDetector.cs create mode 100644 BytecodeApi.CsvParser/CsvFile.cs create mode 100644 BytecodeApi.CsvParser/CsvHelper.cs create mode 100644 BytecodeApi.CsvParser/CsvIterator.cs create mode 100644 BytecodeApi.CsvParser/CsvRow.cs create mode 100644 BytecodeApi.CsvParser/CsvRowCollection.cs create mode 100644 BytecodeApi.CsvParser/Properties/AssemblyInfo.cs create mode 100644 BytecodeApi.CsvParser/README.md delete mode 100644 BytecodeApi.FileFormats/BytecodeApi.FileFormats.csproj delete mode 100644 BytecodeApi.FileFormats/Csv/CsvCell.cs delete mode 100644 BytecodeApi.FileFormats/Csv/CsvDelimiterDetector.cs delete mode 100644 BytecodeApi.FileFormats/Csv/CsvFile.cs delete mode 100644 BytecodeApi.FileFormats/Csv/CsvHelper.cs delete mode 100644 BytecodeApi.FileFormats/Csv/CsvIterator.cs delete mode 100644 BytecodeApi.FileFormats/Csv/CsvRow.cs delete mode 100644 BytecodeApi.FileFormats/Csv/CsvRowCollection.cs delete mode 100644 BytecodeApi.FileFormats/Ini/IniDuplicatePropertyNameBehavior.cs delete mode 100644 BytecodeApi.FileFormats/Ini/IniDuplicateSectionNameBehavior.cs delete mode 100644 BytecodeApi.FileFormats/Ini/IniErrorLine.cs delete mode 100644 BytecodeApi.FileFormats/Ini/IniFile.cs delete mode 100644 BytecodeApi.FileFormats/Ini/IniFileFormattingOptions.cs delete mode 100644 BytecodeApi.FileFormats/Ini/IniFileParsingOptions.cs delete mode 100644 BytecodeApi.FileFormats/Ini/IniParsingException.cs delete mode 100644 BytecodeApi.FileFormats/Ini/IniProperty.cs delete mode 100644 BytecodeApi.FileFormats/Ini/IniPropertyCollection.cs delete mode 100644 BytecodeApi.FileFormats/Ini/IniPropertyDelimiter.cs delete mode 100644 BytecodeApi.FileFormats/Ini/IniSection.cs delete mode 100644 BytecodeApi.FileFormats/Ini/IniSectionCollection.cs delete mode 100644 BytecodeApi.FileFormats/PE/ImageCharacteristics.cs delete mode 100644 BytecodeApi.FileFormats/PE/ImageCoffHeader.cs delete mode 100644 BytecodeApi.FileFormats/PE/ImageDataDirectory.cs delete mode 100644 BytecodeApi.FileFormats/PE/ImageDataDirectoryName.cs delete mode 100644 BytecodeApi.FileFormats/PE/ImageDllCharacteristics.cs delete mode 100644 BytecodeApi.FileFormats/PE/ImageDosHeader.cs delete mode 100644 BytecodeApi.FileFormats/PE/ImageMachineType.cs delete mode 100644 BytecodeApi.FileFormats/PE/ImageOptionalHeader.cs delete mode 100644 BytecodeApi.FileFormats/PE/ImageOptionalHeader32.cs delete mode 100644 BytecodeApi.FileFormats/PE/ImageOptionalHeader64.cs delete mode 100644 BytecodeApi.FileFormats/PE/ImageSection.cs delete mode 100644 BytecodeApi.FileFormats/PE/ImageSectionFlags.cs delete mode 100644 BytecodeApi.FileFormats/PE/ImageSectionHeader.cs delete mode 100644 BytecodeApi.FileFormats/PE/ImageSubsystem.cs delete mode 100644 BytecodeApi.FileFormats/PE/PEImage.cs delete mode 100644 BytecodeApi.FileFormats/PE/PEImageParseException.cs delete mode 100644 BytecodeApi.FileFormats/Properties/AssemblyInfo.cs delete mode 100644 BytecodeApi.FileFormats/ResourceFile/ResourceEntry.cs delete mode 100644 BytecodeApi.FileFormats/ResourceFile/ResourceFileInfo.cs delete mode 100644 BytecodeApi.FileFormats/ResourceFile/ResourceType.cs delete mode 100644 BytecodeApi.FileIcons/BytecodeApi.FileIcons.csproj delete mode 100644 BytecodeApi.FileIcons/FileIcon.cs delete mode 100644 BytecodeApi.FileIcons/KnownFileIconImages.cs delete mode 100644 BytecodeApi.FileIcons/KnownFileIconImages.tt delete mode 100644 BytecodeApi.FileIcons/KnownFileIcons.cs delete mode 100644 BytecodeApi.FileIcons/KnownFileIcons.tt delete mode 100644 BytecodeApi.FileIcons/Properties/AssemblyInfo.cs delete mode 100644 BytecodeApi.FileIcons/Properties/Resources.Designer.cs delete mode 100644 BytecodeApi.FileIcons/Properties/Resources.resx delete mode 100644 BytecodeApi.FileIcons/Resources/_directory.ico delete mode 100644 BytecodeApi.FileIcons/Resources/_unknown.ico delete mode 100644 BytecodeApi.FileIcons/Resources/accdb.ico delete mode 100644 BytecodeApi.FileIcons/Resources/asm.ico delete mode 100644 BytecodeApi.FileIcons/Resources/aspx.ico delete mode 100644 BytecodeApi.FileIcons/Resources/avi.ico delete mode 100644 BytecodeApi.FileIcons/Resources/bat.ico delete mode 100644 BytecodeApi.FileIcons/Resources/bmp.ico delete mode 100644 BytecodeApi.FileIcons/Resources/c.ico delete mode 100644 BytecodeApi.FileIcons/Resources/cer.ico delete mode 100644 BytecodeApi.FileIcons/Resources/chm.ico delete mode 100644 BytecodeApi.FileIcons/Resources/com.ico delete mode 100644 BytecodeApi.FileIcons/Resources/config.ico delete mode 100644 BytecodeApi.FileIcons/Resources/contact.ico delete mode 100644 BytecodeApi.FileIcons/Resources/cpp.ico delete mode 100644 BytecodeApi.FileIcons/Resources/cs.ico delete mode 100644 BytecodeApi.FileIcons/Resources/csproj.ico delete mode 100644 BytecodeApi.FileIcons/Resources/css.ico delete mode 100644 BytecodeApi.FileIcons/Resources/csv.ico delete mode 100644 BytecodeApi.FileIcons/Resources/db.ico delete mode 100644 BytecodeApi.FileIcons/Resources/dll.ico delete mode 100644 BytecodeApi.FileIcons/Resources/doc.ico delete mode 100644 BytecodeApi.FileIcons/Resources/docx.ico delete mode 100644 BytecodeApi.FileIcons/Resources/dotx.ico delete mode 100644 BytecodeApi.FileIcons/Resources/dtd.ico delete mode 100644 BytecodeApi.FileIcons/Resources/exe.ico delete mode 100644 BytecodeApi.FileIcons/Resources/filters.ico delete mode 100644 BytecodeApi.FileIcons/Resources/gif.ico delete mode 100644 BytecodeApi.FileIcons/Resources/h.ico delete mode 100644 BytecodeApi.FileIcons/Resources/hlp.ico delete mode 100644 BytecodeApi.FileIcons/Resources/hpp.ico delete mode 100644 BytecodeApi.FileIcons/Resources/htm.ico delete mode 100644 BytecodeApi.FileIcons/Resources/html.ico delete mode 100644 BytecodeApi.FileIcons/Resources/inf.ico delete mode 100644 BytecodeApi.FileIcons/Resources/ini.ico delete mode 100644 BytecodeApi.FileIcons/Resources/ino.ico delete mode 100644 BytecodeApi.FileIcons/Resources/iso.ico delete mode 100644 BytecodeApi.FileIcons/Resources/jpeg.ico delete mode 100644 BytecodeApi.FileIcons/Resources/jpg.ico delete mode 100644 BytecodeApi.FileIcons/Resources/js.ico delete mode 100644 BytecodeApi.FileIcons/Resources/json.ico delete mode 100644 BytecodeApi.FileIcons/Resources/lib.ico delete mode 100644 BytecodeApi.FileIcons/Resources/lnk.ico delete mode 100644 BytecodeApi.FileIcons/Resources/log.ico delete mode 100644 BytecodeApi.FileIcons/Resources/m4a.ico delete mode 100644 BytecodeApi.FileIcons/Resources/m4v.ico delete mode 100644 BytecodeApi.FileIcons/Resources/mak.ico delete mode 100644 BytecodeApi.FileIcons/Resources/manifest.ico delete mode 100644 BytecodeApi.FileIcons/Resources/md.ico delete mode 100644 BytecodeApi.FileIcons/Resources/mdb.ico delete mode 100644 BytecodeApi.FileIcons/Resources/mid.ico delete mode 100644 BytecodeApi.FileIcons/Resources/midi.ico delete mode 100644 BytecodeApi.FileIcons/Resources/mp3.ico delete mode 100644 BytecodeApi.FileIcons/Resources/mp4.ico delete mode 100644 BytecodeApi.FileIcons/Resources/mp4v.ico delete mode 100644 BytecodeApi.FileIcons/Resources/mpeg.ico delete mode 100644 BytecodeApi.FileIcons/Resources/mpg.ico delete mode 100644 BytecodeApi.FileIcons/Resources/msc.ico delete mode 100644 BytecodeApi.FileIcons/Resources/msi.ico delete mode 100644 BytecodeApi.FileIcons/Resources/pdb.ico delete mode 100644 BytecodeApi.FileIcons/Resources/pdf.ico delete mode 100644 BytecodeApi.FileIcons/Resources/pdn.ico delete mode 100644 BytecodeApi.FileIcons/Resources/php.ico delete mode 100644 BytecodeApi.FileIcons/Resources/phpproj.ico delete mode 100644 BytecodeApi.FileIcons/Resources/png.ico delete mode 100644 BytecodeApi.FileIcons/Resources/potx.ico delete mode 100644 BytecodeApi.FileIcons/Resources/ppt.ico delete mode 100644 BytecodeApi.FileIcons/Resources/pptx.ico delete mode 100644 BytecodeApi.FileIcons/Resources/rar.ico delete mode 100644 BytecodeApi.FileIcons/Resources/rdp.ico delete mode 100644 BytecodeApi.FileIcons/Resources/reg.ico delete mode 100644 BytecodeApi.FileIcons/Resources/res.ico delete mode 100644 BytecodeApi.FileIcons/Resources/resx.ico delete mode 100644 BytecodeApi.FileIcons/Resources/rll.ico delete mode 100644 BytecodeApi.FileIcons/Resources/rtf.ico delete mode 100644 BytecodeApi.FileIcons/Resources/scr.ico delete mode 100644 BytecodeApi.FileIcons/Resources/sdf.ico delete mode 100644 BytecodeApi.FileIcons/Resources/settings.ico delete mode 100644 BytecodeApi.FileIcons/Resources/sh.ico delete mode 100644 BytecodeApi.FileIcons/Resources/sln.ico delete mode 100644 BytecodeApi.FileIcons/Resources/txt.ico delete mode 100644 BytecodeApi.FileIcons/Resources/user.ico delete mode 100644 BytecodeApi.FileIcons/Resources/vb.ico delete mode 100644 BytecodeApi.FileIcons/Resources/vbproj.ico delete mode 100644 BytecodeApi.FileIcons/Resources/vbs.ico delete mode 100644 BytecodeApi.FileIcons/Resources/vcf.ico delete mode 100644 BytecodeApi.FileIcons/Resources/vcxproj.ico delete mode 100644 BytecodeApi.FileIcons/Resources/vsix.ico delete mode 100644 BytecodeApi.FileIcons/Resources/wav.ico delete mode 100644 BytecodeApi.FileIcons/Resources/wma.ico delete mode 100644 BytecodeApi.FileIcons/Resources/wmv.ico delete mode 100644 BytecodeApi.FileIcons/Resources/wpl.ico delete mode 100644 BytecodeApi.FileIcons/Resources/wsf.ico delete mode 100644 BytecodeApi.FileIcons/Resources/xaml.ico delete mode 100644 BytecodeApi.FileIcons/Resources/xls.ico delete mode 100644 BytecodeApi.FileIcons/Resources/xlsx.ico delete mode 100644 BytecodeApi.FileIcons/Resources/xltx.ico delete mode 100644 BytecodeApi.FileIcons/Resources/xml.ico delete mode 100644 BytecodeApi.FileIcons/Resources/xsd.ico delete mode 100644 BytecodeApi.FileIcons/Resources/zip.ico delete mode 100644 BytecodeApi.FileIcons/SpecialFileIconImages.cs delete mode 100644 BytecodeApi.FileIcons/SpecialFileIcons.cs create mode 100644 BytecodeApi.IniParser/.nuget/README.md create mode 100644 BytecodeApi.IniParser/BytecodeApi.IniParser.csproj create mode 100644 BytecodeApi.IniParser/IniDuplicatePropertyNameBehavior.cs create mode 100644 BytecodeApi.IniParser/IniDuplicateSectionNameBehavior.cs create mode 100644 BytecodeApi.IniParser/IniErrorLine.cs create mode 100644 BytecodeApi.IniParser/IniFile.cs create mode 100644 BytecodeApi.IniParser/IniFileFormattingOptions.cs create mode 100644 BytecodeApi.IniParser/IniFileParsingOptions.cs create mode 100644 BytecodeApi.IniParser/IniParsingException.cs create mode 100644 BytecodeApi.IniParser/IniProperty.cs create mode 100644 BytecodeApi.IniParser/IniPropertyCollection.cs create mode 100644 BytecodeApi.IniParser/IniPropertyDelimiter.cs create mode 100644 BytecodeApi.IniParser/IniSection.cs create mode 100644 BytecodeApi.IniParser/IniSectionCollection.cs create mode 100644 BytecodeApi.IniParser/Properties/AssemblyInfo.cs create mode 100644 BytecodeApi.IniParser/README.md create mode 100644 BytecodeApi.LanguageGenerator/.nuget/README.md create mode 100644 BytecodeApi.LanguageGenerator/BytecodeApi.LanguageGenerator.csproj create mode 100644 BytecodeApi.LanguageGenerator/ILanguageStringGenerator.cs create mode 100644 BytecodeApi.LanguageGenerator/LoremIpsumGenerator.cs create mode 100644 BytecodeApi.LanguageGenerator/NameGenerator.cs create mode 100644 BytecodeApi.LanguageGenerator/Properties/AssemblyInfo.cs create mode 100644 BytecodeApi.LanguageGenerator/README.md create mode 100644 BytecodeApi.LanguageGenerator/SentenceGenerator.cs create mode 100644 BytecodeApi.LanguageGenerator/TextGenerator.cs create mode 100644 BytecodeApi.LanguageGenerator/WordGenerator.cs create mode 100644 BytecodeApi.Lexer/.nuget/README.md create mode 100644 BytecodeApi.Lexer/BytecodeApi.Lexer.csproj create mode 100644 BytecodeApi.Lexer/Grammar.cs create mode 100644 BytecodeApi.Lexer/Lexer.cs create mode 100644 BytecodeApi.Lexer/ParseException.cs create mode 100644 BytecodeApi.Lexer/Properties/AssemblyInfo.cs create mode 100644 BytecodeApi.Lexer/README.md create mode 100644 BytecodeApi.Lexer/Token.cs create mode 100644 BytecodeApi.Lexer/TokenCollection.cs create mode 100644 BytecodeApi.PEParser/.nuget/README.md create mode 100644 BytecodeApi.PEParser/BytecodeApi.PEParser.csproj create mode 100644 BytecodeApi.PEParser/ImageCharacteristics.cs create mode 100644 BytecodeApi.PEParser/ImageCoffHeader.cs create mode 100644 BytecodeApi.PEParser/ImageDataDirectory.cs create mode 100644 BytecodeApi.PEParser/ImageDataDirectoryName.cs create mode 100644 BytecodeApi.PEParser/ImageDllCharacteristics.cs create mode 100644 BytecodeApi.PEParser/ImageDosHeader.cs create mode 100644 BytecodeApi.PEParser/ImageMachineType.cs create mode 100644 BytecodeApi.PEParser/ImageOptionalHeader.cs create mode 100644 BytecodeApi.PEParser/ImageOptionalHeader32.cs create mode 100644 BytecodeApi.PEParser/ImageOptionalHeader64.cs create mode 100644 BytecodeApi.PEParser/ImageSection.cs create mode 100644 BytecodeApi.PEParser/ImageSectionFlags.cs create mode 100644 BytecodeApi.PEParser/ImageSectionHeader.cs create mode 100644 BytecodeApi.PEParser/ImageSubsystem.cs create mode 100644 BytecodeApi.PEParser/PEImage.cs create mode 100644 BytecodeApi.PEParser/PEImageParseException.cs create mode 100644 BytecodeApi.PEParser/Properties/AssemblyInfo.cs create mode 100644 BytecodeApi.PEParser/README.md create mode 100644 BytecodeApi.PEResources/.nuget/README.md create mode 100644 BytecodeApi.PEResources/BytecodeApi.PEResources.csproj create mode 100644 BytecodeApi.PEResources/Properties/AssemblyInfo.cs create mode 100644 BytecodeApi.PEResources/README.md create mode 100644 BytecodeApi.PEResources/ResourceFileInfo.cs create mode 100644 BytecodeApi.PEResources/ResourceType.cs create mode 100644 BytecodeApi.Penetration/.nuget/README.md create mode 100644 BytecodeApi.Penetration/BlueScreen.cs create mode 100644 BytecodeApi.Penetration/BytecodeApi.Penetration.csproj create mode 100644 BytecodeApi.Penetration/DllInjection.cs create mode 100644 BytecodeApi.Penetration/ExecutableInjection.cs create mode 100644 BytecodeApi.Penetration/Properties/AssemblyInfo.cs create mode 100644 BytecodeApi.Penetration/README.md create mode 100644 BytecodeApi.Penetration/Shellcode.cs create mode 100644 BytecodeApi.Rest/.nuget/README.md create mode 100644 BytecodeApi.Rest/BytecodeApi.Rest.csproj create mode 100644 BytecodeApi.Rest/Properties/AssemblyInfo.cs create mode 100644 BytecodeApi.Rest/README.md create mode 100644 BytecodeApi.Rest/RestClient.cs create mode 100644 BytecodeApi.Rest/RestException.cs create mode 100644 BytecodeApi.Rest/RestRequest.cs delete mode 100644 BytecodeApi.UI/BytecodeApi.UI.csproj delete mode 100644 BytecodeApi.UI/Controls/ContainerItemsControl.cs delete mode 100644 BytecodeApi.UI/Controls/MenuItemService.cs delete mode 100644 BytecodeApi.UI/Controls/NoInheritanceContainer.cs delete mode 100644 BytecodeApi.UI/Controls/ObservableUserControl.cs delete mode 100644 BytecodeApi.UI/Controls/ObservableWindow.cs delete mode 100644 BytecodeApi.UI/Controls/TreeViewItemService.cs delete mode 100644 BytecodeApi.UI/Controls/WatermarkAdorner.cs delete mode 100644 BytecodeApi.UI/Controls/WatermarkService.cs delete mode 100644 BytecodeApi.UI/ConverterBase.cs delete mode 100644 BytecodeApi.UI/ConverterBaseExtended.cs delete mode 100644 BytecodeApi.UI/Converters/BooleanConverter.cs delete mode 100644 BytecodeApi.UI/Converters/BooleanConverterMethod.cs delete mode 100644 BytecodeApi.UI/Converters/BooleanMathConverter.cs delete mode 100644 BytecodeApi.UI/Converters/BooleanMathConverterMethod.cs delete mode 100644 BytecodeApi.UI/Converters/ByteSizeConverter.cs delete mode 100644 BytecodeApi.UI/Converters/CoalesceConverter.cs delete mode 100644 BytecodeApi.UI/Converters/DateTimeConverter.cs delete mode 100644 BytecodeApi.UI/Converters/DateTimeConverterMethod.cs delete mode 100644 BytecodeApi.UI/Converters/EnumConverter.cs delete mode 100644 BytecodeApi.UI/Converters/EnumConverterMethod.cs delete mode 100644 BytecodeApi.UI/Converters/EqualityConverter.cs delete mode 100644 BytecodeApi.UI/Converters/EqualityConverterMethod.cs delete mode 100644 BytecodeApi.UI/Converters/IEnumerableAnyConverter.cs delete mode 100644 BytecodeApi.UI/Converters/IEnumerableConverter.cs delete mode 100644 BytecodeApi.UI/Converters/IEnumerableConverterMethod.cs delete mode 100644 BytecodeApi.UI/Converters/IfConverter.cs delete mode 100644 BytecodeApi.UI/Converters/ImageSourceConverter.cs delete mode 100644 BytecodeApi.UI/Converters/MathConverter.cs delete mode 100644 BytecodeApi.UI/Converters/MathConverterMethod.cs delete mode 100644 BytecodeApi.UI/Converters/NullConverter.cs delete mode 100644 BytecodeApi.UI/Converters/PathConverter.cs delete mode 100644 BytecodeApi.UI/Converters/PathConverterMethod.cs delete mode 100644 BytecodeApi.UI/Converters/RangeConverter.cs delete mode 100644 BytecodeApi.UI/Converters/StringConverter.cs delete mode 100644 BytecodeApi.UI/Converters/StringConverterMethod.cs delete mode 100644 BytecodeApi.UI/Converters/StringEmptyConverter.cs delete mode 100644 BytecodeApi.UI/Converters/StringEmptyConverterMethod.cs delete mode 100644 BytecodeApi.UI/Converters/TimeSpanConverter.cs delete mode 100644 BytecodeApi.UI/Converters/TimeSpanConverterMethod.cs delete mode 100644 BytecodeApi.UI/Converters/TimeSpanHumanReadableConverter.cs delete mode 100644 BytecodeApi.UI/Converters/TypeConverter.cs delete mode 100644 BytecodeApi.UI/Converters/TypeConverterMethod.cs delete mode 100644 BytecodeApi.UI/Converters/VersionConverter.cs delete mode 100644 BytecodeApi.UI/Data/KeyboardShortcut.cs delete mode 100644 BytecodeApi.UI/Data/ObservableObject.cs delete mode 100644 BytecodeApi.UI/DelegateCommand.cs delete mode 100644 BytecodeApi.UI/DependencyPropertyEx.cs delete mode 100644 BytecodeApi.UI/Dialogs/FileDialogs.cs delete mode 100644 BytecodeApi.UI/Dialogs/IconPickerDialog.cs delete mode 100644 BytecodeApi.UI/Dialogs/MessageBoxes.cs delete mode 100644 BytecodeApi.UI/Effects/GrayscaleEffect.cs delete mode 100644 BytecodeApi.UI/Extensions/ApplicationExtensions.cs delete mode 100644 BytecodeApi.UI/Extensions/ControlExtensions.cs delete mode 100644 BytecodeApi.UI/Extensions/DependencyObjectExtensions.cs delete mode 100644 BytecodeApi.UI/Extensions/DispatcherObjectExtensions.cs delete mode 100644 BytecodeApi.UI/Extensions/FrameworkElementExtensions.cs delete mode 100644 BytecodeApi.UI/Extensions/UIElementExtensions.cs delete mode 100644 BytecodeApi.UI/Extensions/VisibilityExtensions.cs delete mode 100644 BytecodeApi.UI/HotKey.cs delete mode 100644 BytecodeApi.UI/HotKeyEventArgs.cs delete mode 100644 BytecodeApi.UI/HwndBroadcast.cs delete mode 100644 BytecodeApi.UI/Markup/BooleanExtension.cs delete mode 100644 BytecodeApi.UI/Markup/ByteExtension.cs delete mode 100644 BytecodeApi.UI/Markup/CharExtension.cs delete mode 100644 BytecodeApi.UI/Markup/DateTimeExtension.cs delete mode 100644 BytecodeApi.UI/Markup/DecimalExtension.cs delete mode 100644 BytecodeApi.UI/Markup/DoubleExtension.cs delete mode 100644 BytecodeApi.UI/Markup/EventBindingExtension.cs delete mode 100644 BytecodeApi.UI/Markup/IconExtension.cs delete mode 100644 BytecodeApi.UI/Markup/Int16Extension.cs delete mode 100644 BytecodeApi.UI/Markup/Int32Extension.cs delete mode 100644 BytecodeApi.UI/Markup/Int64Extension.cs delete mode 100644 BytecodeApi.UI/Markup/SByteExtension.cs delete mode 100644 BytecodeApi.UI/Markup/SingleExtension.cs delete mode 100644 BytecodeApi.UI/Markup/StringExtension.cs delete mode 100644 BytecodeApi.UI/Markup/TimeSpanExtension.cs delete mode 100644 BytecodeApi.UI/Markup/TypeExtension.cs delete mode 100644 BytecodeApi.UI/Markup/TypeExtensionMethod.cs delete mode 100644 BytecodeApi.UI/Markup/UInt16Extension.cs delete mode 100644 BytecodeApi.UI/Markup/UInt32Extension.cs delete mode 100644 BytecodeApi.UI/Markup/UInt64Extension.cs delete mode 100644 BytecodeApi.UI/Mathematics/ProgressCalculator.cs delete mode 100644 BytecodeApi.UI/Mathematics/ProgressCalculatorEventArgs.cs delete mode 100644 BytecodeApi.UI/Packs.cs delete mode 100644 BytecodeApi.UI/Properties/AssemblyInfo.cs delete mode 100644 BytecodeApi.UI/SingleInstance.cs delete mode 100644 BytecodeApi.UI/UIContext.cs delete mode 100644 BytecodeApi.UI/UITreeType.cs create mode 100644 BytecodeApi.Win32/.nuget/README.md create mode 100644 BytecodeApi.Win32/AtomTable/Atom.cs create mode 100644 BytecodeApi.Win32/AtomTable/GlobalAtom.cs create mode 100644 BytecodeApi.Win32/AtomTable/IAtom.cs create mode 100644 BytecodeApi.Win32/BytecodeApi.Win32.csproj create mode 100644 BytecodeApi.Win32/Desktop.cs create mode 100644 BytecodeApi.Win32/Interop/CommandPrompt.cs create mode 100644 BytecodeApi.Win32/Interop/CommandPromptEventArgs.cs create mode 100644 BytecodeApi.Win32/Interop/GlobalKeyboardHook.cs create mode 100644 BytecodeApi.Win32/Interop/HookProc.cs create mode 100644 BytecodeApi.Win32/Interop/KeyboardHookEventArgs.cs create mode 100644 BytecodeApi.Win32/Interop/KeyboardHookEventHandler.cs create mode 100644 BytecodeApi.Win32/Properties/AssemblyInfo.cs create mode 100644 BytecodeApi.Win32/README.md create mode 100644 BytecodeApi.Win32/SystemInfo/DeviceInfo.cs create mode 100644 BytecodeApi.Win32/SystemInfo/DeviceManager.cs create mode 100644 BytecodeApi.Win32/SystemInfo/DeviceTypeInfo.cs create mode 100644 BytecodeApi.Win32/SystemInfo/HardwareInfo.cs create mode 100644 BytecodeApi.Win32/SystemInfo/HostsFile.cs create mode 100644 BytecodeApi.Win32/SystemInfo/HostsFileEntry.cs create mode 100644 BytecodeApi.Win32/SystemInfo/InstalledSoftware.cs create mode 100644 BytecodeApi.Win32/SystemInfo/InstalledSoftwareInfo.cs create mode 100644 BytecodeApi.Win32/SystemInfo/KnownBrowser.cs create mode 100644 BytecodeApi.Win32/SystemInfo/OperatingSystemInfo.cs create mode 100644 BytecodeApi.Win32/SystemInfo/ProtocolMapping.cs create mode 100644 BytecodeApi.Win32/SystemInfo/ProtocolMappingEntry.cs create mode 100644 BytecodeApi.Win32/SystemInfo/TcpView.cs create mode 100644 BytecodeApi.Win32/SystemInfo/TcpViewEntry.cs create mode 100644 BytecodeApi.Win32/SystemInfo/TransportProtocol.cs create mode 100644 BytecodeApi.Win32/SystemInfo/TransportProtocolAndVersion.cs create mode 100644 BytecodeApi.Wmi/.nuget/README.md create mode 100644 BytecodeApi.Wmi/BytecodeApi.Wmi.csproj create mode 100644 BytecodeApi.Wmi/IWmiQueryable.cs create mode 100644 BytecodeApi.Wmi/Properties/AssemblyInfo.cs create mode 100644 BytecodeApi.Wmi/README.md create mode 100644 BytecodeApi.Wmi/WmiClass.cs create mode 100644 BytecodeApi.Wmi/WmiContext.cs create mode 100644 BytecodeApi.Wmi/WmiIterator.cs create mode 100644 BytecodeApi.Wmi/WmiNamespace.cs create mode 100644 BytecodeApi.Wmi/WmiObject.cs create mode 100644 BytecodeApi.Wmi/WmiProperty.cs create mode 100644 BytecodeApi.Wmi/WmiPropertyCollection.cs create mode 100644 BytecodeApi.Wmi/WmiQueryBuilder.cs create mode 100644 BytecodeApi.Wpf/.nuget/README.md create mode 100644 BytecodeApi.Wpf/BindingErrorTraceListener.cs create mode 100644 BytecodeApi.Wpf/BytecodeApi.Wpf.csproj create mode 100644 BytecodeApi.Wpf/Controls/NewLine.cs create mode 100644 BytecodeApi.Wpf/Controls/ObservableItemsControl.cs create mode 100644 BytecodeApi.Wpf/Controls/ObservableUserControl.cs create mode 100644 BytecodeApi.Wpf/Controls/ObservableWindow.cs create mode 100644 BytecodeApi.Wpf/ConverterBase.cs create mode 100644 BytecodeApi.Wpf/Converters/BooleanConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/BooleanConverterMethod.cs create mode 100644 BytecodeApi.Wpf/Converters/BooleanMathConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/BooleanMathConverterMethod.cs create mode 100644 BytecodeApi.Wpf/Converters/ByteSizeConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/CoalesceConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/DateOnlyConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/DateOnlyConverterMethod.cs create mode 100644 BytecodeApi.Wpf/Converters/DateTimeConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/DateTimeConverterMethod.cs create mode 100644 BytecodeApi.Wpf/Converters/EnumConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/EnumConverterMethod.cs create mode 100644 BytecodeApi.Wpf/Converters/EnumerableAnyConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/EnumerableConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/EnumerableConverterMethod.cs create mode 100644 BytecodeApi.Wpf/Converters/EqualityConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/EqualityConverterMethod.cs create mode 100644 BytecodeApi.Wpf/Converters/IfConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/ImageSourceConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/MathConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/MathConverterMethod.cs create mode 100644 BytecodeApi.Wpf/Converters/MoneyConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/MoneyConverterMethod.cs create mode 100644 BytecodeApi.Wpf/Converters/NullConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/PathConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/PathConverterMethod.cs create mode 100644 BytecodeApi.Wpf/Converters/RangeConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/StringConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/StringConverterMethod.cs create mode 100644 BytecodeApi.Wpf/Converters/StringEmptyConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/StringEmptyConverterMethod.cs create mode 100644 BytecodeApi.Wpf/Converters/TimeSpanConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/TimeSpanConverterMethod.cs create mode 100644 BytecodeApi.Wpf/Converters/TimeSpanHumanReadableConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/TypeConverter.cs create mode 100644 BytecodeApi.Wpf/Converters/TypeConverterMethod.cs create mode 100644 BytecodeApi.Wpf/Converters/VersionConverter.cs create mode 100644 BytecodeApi.Wpf/Data/KeyboardShortcut.cs create mode 100644 BytecodeApi.Wpf/DelegateCommand.cs create mode 100644 BytecodeApi.Wpf/DependencyPropertyEx.cs create mode 100644 BytecodeApi.Wpf/Dialogs/Dialog.cs create mode 100644 BytecodeApi.Wpf/Dialogs/DialogIcon.cs create mode 100644 BytecodeApi.Wpf/Dialogs/DialogMessageBoxes.cs create mode 100644 BytecodeApi.Wpf/Dialogs/DialogResult.cs create mode 100644 BytecodeApi.Wpf/Dialogs/FileDialogs.cs create mode 100644 BytecodeApi.Wpf/Dialogs/IconPickerDialog.cs create mode 100644 BytecodeApi.Wpf/Dialogs/MessageBoxes.cs create mode 100644 BytecodeApi.Wpf/Effects/GrayscaleEffect.cs create mode 100644 BytecodeApi.Wpf/Effects/InvertEffect.cs create mode 100644 BytecodeApi.Wpf/Extensions/ApplicationExtensions.cs create mode 100644 BytecodeApi.Wpf/Extensions/BitmapEncoderExtensions.cs create mode 100644 BytecodeApi.Wpf/Extensions/ColorExtensions.cs create mode 100644 BytecodeApi.Wpf/Extensions/DefaultTypes/BooleanExtensions.cs create mode 100644 BytecodeApi.Wpf/Extensions/DelegateDebounceExtensions.cs create mode 100644 BytecodeApi.Wpf/Extensions/DependencyObjectExtensions.cs create mode 100644 BytecodeApi.Wpf/Extensions/FrameworkElementExtensions.cs create mode 100644 BytecodeApi.Wpf/Extensions/IconExtensions.cs create mode 100644 BytecodeApi.Wpf/Extensions/ImageExtensions.cs create mode 100644 BytecodeApi.Wpf/Extensions/TextBoxExtensions.cs create mode 100644 BytecodeApi.Wpf/Extensions/UIElementExtensions.cs create mode 100644 BytecodeApi.Wpf/Extensions/VisibilityExtensions.cs create mode 100644 BytecodeApi.Wpf/Interop/HotKey.cs create mode 100644 BytecodeApi.Wpf/Interop/HotKeyEventArgs.cs create mode 100644 BytecodeApi.Wpf/Interop/HwndBroadcast.cs create mode 100644 BytecodeApi.Wpf/Interop/OutlookDataObject.cs create mode 100644 BytecodeApi.Wpf/Interop/SingleInstance.cs create mode 100644 BytecodeApi.Wpf/Markup/BooleanExtension.cs create mode 100644 BytecodeApi.Wpf/Markup/ByteExtension.cs create mode 100644 BytecodeApi.Wpf/Markup/CharExtension.cs create mode 100644 BytecodeApi.Wpf/Markup/DateOnlyExtension.cs create mode 100644 BytecodeApi.Wpf/Markup/DateTimeExtension.cs create mode 100644 BytecodeApi.Wpf/Markup/DecimalExtension.cs create mode 100644 BytecodeApi.Wpf/Markup/DoubleExtension.cs create mode 100644 BytecodeApi.Wpf/Markup/EventBindingExtension.cs create mode 100644 BytecodeApi.Wpf/Markup/IconExtension.cs create mode 100644 BytecodeApi.Wpf/Markup/Int16Extension.cs create mode 100644 BytecodeApi.Wpf/Markup/Int32Extension.cs create mode 100644 BytecodeApi.Wpf/Markup/Int64Extension.cs create mode 100644 BytecodeApi.Wpf/Markup/SByteExtension.cs create mode 100644 BytecodeApi.Wpf/Markup/SingleExtension.cs create mode 100644 BytecodeApi.Wpf/Markup/StringExtension.cs create mode 100644 BytecodeApi.Wpf/Markup/ThicknessExtension.cs create mode 100644 BytecodeApi.Wpf/Markup/TimeOnlyExtension.cs create mode 100644 BytecodeApi.Wpf/Markup/TimeSpanExtension.cs create mode 100644 BytecodeApi.Wpf/Markup/TypeExtension.cs create mode 100644 BytecodeApi.Wpf/Markup/TypeExtensionMethod.cs create mode 100644 BytecodeApi.Wpf/Markup/UInt16Extension.cs create mode 100644 BytecodeApi.Wpf/Markup/UInt32Extension.cs create mode 100644 BytecodeApi.Wpf/Markup/UInt64Extension.cs create mode 100644 BytecodeApi.Wpf/Packs.cs create mode 100644 BytecodeApi.Wpf/Properties/AssemblyInfo.cs rename {BytecodeApi.UI => BytecodeApi.Wpf}/Properties/Resources.Designer.cs (79%) rename {BytecodeApi.UI => BytecodeApi.Wpf}/Properties/Resources.resx (92%) create mode 100644 BytecodeApi.Wpf/README.md rename BytecodeApi.UI/Resources/FileGrayscaleEffect.ps => BytecodeApi.Wpf/Resources/GrayscaleEffect.ps (100%) create mode 100644 BytecodeApi.Wpf/Resources/InvertEffect.ps create mode 100644 BytecodeApi.Wpf/Services/MenuItemService.cs create mode 100644 BytecodeApi.Wpf/Services/TextBlockService.cs create mode 100644 BytecodeApi.Wpf/Services/TreeViewItemService.cs create mode 100644 BytecodeApi.Wpf/Services/WindowService.cs create mode 100644 BytecodeApi.Wpf/Threading/DispatcherTimerFactory.cs create mode 100644 BytecodeApi.Wpf/TwoWayConverterBase.cs create mode 100644 BytecodeApi.Wpf/UIContext.cs create mode 100644 BytecodeApi.Wpf/UITreeType.cs delete mode 100644 BytecodeApi.sln.GhostDoc.xml create mode 100644 BytecodeApi/.nuget/README.md create mode 100644 BytecodeApi/Comparers/ByteArrayEqualityComparer.cs create mode 100644 BytecodeApi/Comparers/EnumerableCountComparer.cs delete mode 100644 BytecodeApi/Comparers/IEnumerableCountComparer.cs delete mode 100644 BytecodeApi/Comparers/SpecialStringComparer.cs create mode 100644 BytecodeApi/Data/Currency.cs create mode 100644 BytecodeApi/Data/CurrencyConversion.cs create mode 100644 BytecodeApi/Data/CurrencyConverter.cs create mode 100644 BytecodeApi/Data/ICopy.cs create mode 100644 BytecodeApi/Data/IDeepCopy.cs create mode 100644 BytecodeApi/Data/Money.cs delete mode 100644 BytecodeApi/Data/ObjectEventArgs.cs delete mode 100644 BytecodeApi/Data/ObjectEventHandler.cs create mode 100644 BytecodeApi/Data/ObservableObject.cs create mode 100644 BytecodeApi/DateTimeEx.cs create mode 100644 BytecodeApi/Extensions/ArrayExtensions.cs create mode 100644 BytecodeApi/Extensions/BitArrayExtensions.cs delete mode 100644 BytecodeApi/Extensions/BitmapEncoderExtensions.cs create mode 100644 BytecodeApi/Extensions/ByteArrayExtensions.cs delete mode 100644 BytecodeApi/Extensions/Collections/ArrayExtensions.cs delete mode 100644 BytecodeApi/Extensions/Collections/BitArrayExtensions.cs delete mode 100644 BytecodeApi/Extensions/Collections/ByteArrayExtensions.cs delete mode 100644 BytecodeApi/Extensions/ColorExtensions.cs delete mode 100644 BytecodeApi/Extensions/CookieContainerExtensions.cs create mode 100644 BytecodeApi/Extensions/DateOnlyExtensions.cs create mode 100644 BytecodeApi/Extensions/DelegateDebounceExtensions.cs delete mode 100644 BytecodeApi/Extensions/DelegateExtensions.cs create mode 100644 BytecodeApi/Extensions/EnumerableConvertExtensions.cs create mode 100644 BytecodeApi/Extensions/EnumerableExtensions.cs create mode 100644 BytecodeApi/Extensions/EnumerableMathExtensions.cs create mode 100644 BytecodeApi/Extensions/EnumerableStringExtensions.cs delete mode 100644 BytecodeApi/Extensions/IEnumerableConvertExtensions.cs delete mode 100644 BytecodeApi/Extensions/IEnumerableExtensions.cs delete mode 100644 BytecodeApi/Extensions/IQueryableExtensions.cs create mode 100644 BytecodeApi/Extensions/TimeOnlyExtensions.cs delete mode 100644 BytecodeApi/Extensions/WebClientExtensions.cs create mode 100644 BytecodeApi/Extensions/XDocumentExtensions.cs delete mode 100644 BytecodeApi/Extensions/XmlExtensions.cs create mode 100644 BytecodeApi/IO/AlternateDataStream.cs create mode 100644 BytecodeApi/IO/AlternateDataStreamAttributes.cs create mode 100644 BytecodeApi/IO/AlternateDataStreamInfo.cs create mode 100644 BytecodeApi/IO/AlternateDataStreamType.cs delete mode 100644 BytecodeApi/IO/Cli/CliException.cs delete mode 100644 BytecodeApi/IO/Cli/CliValidationSource.cs delete mode 100644 BytecodeApi/IO/Cli/CommandLineParser.cs delete mode 100644 BytecodeApi/IO/Cli/Option.cs delete mode 100644 BytecodeApi/IO/Cli/OptionSet.cs delete mode 100644 BytecodeApi/IO/Cli/ParsedOption.cs delete mode 100644 BytecodeApi/IO/Cli/ParsedOptionSet.cs create mode 100644 BytecodeApi/IO/CliCommand.cs create mode 100644 BytecodeApi/IO/CliResult.cs create mode 100644 BytecodeApi/IO/CommandLine.cs create mode 100644 BytecodeApi/IO/CompareDirectoryOptions.cs delete mode 100644 BytecodeApi/IO/Debugging/BindingErrorTraceListener.cs delete mode 100644 BytecodeApi/IO/Debugging/DelegateTraceListener.cs delete mode 100644 BytecodeApi/IO/Debugging/TraceDataInfo.cs delete mode 100644 BytecodeApi/IO/Debugging/TraceEventInfo.cs delete mode 100644 BytecodeApi/IO/Debugging/TraceTransferInfo.cs delete mode 100644 BytecodeApi/IO/Desktop.cs create mode 100644 BytecodeApi/IO/DirectoryEx.cs create mode 100644 BytecodeApi/IO/FileEx.cs create mode 100644 BytecodeApi/IO/FileExtensionInfo.cs delete mode 100644 BytecodeApi/IO/FileSystem/AlternateDataStream.cs delete mode 100644 BytecodeApi/IO/FileSystem/AlternateDataStreamAttributes.cs delete mode 100644 BytecodeApi/IO/FileSystem/AlternateDataStreamInfo.cs delete mode 100644 BytecodeApi/IO/FileSystem/AlternateDataStreamType.cs delete mode 100644 BytecodeApi/IO/FileSystem/CacheFile.cs delete mode 100644 BytecodeApi/IO/FileSystem/CacheFileRequestCallback.cs delete mode 100644 BytecodeApi/IO/FileSystem/CacheFileUpdateCallback.cs delete mode 100644 BytecodeApi/IO/FileSystem/CompareDirectoryOptions.cs delete mode 100644 BytecodeApi/IO/FileSystem/DirectoryEx.cs delete mode 100644 BytecodeApi/IO/FileSystem/FileEx.cs delete mode 100644 BytecodeApi/IO/FileSystem/KnownPaths.cs delete mode 100644 BytecodeApi/IO/FileSystem/PathEx.cs delete mode 100644 BytecodeApi/IO/FileSystem/TempDirectory.cs delete mode 100644 BytecodeApi/IO/Http/HttpClient.cs delete mode 100644 BytecodeApi/IO/Http/HttpException.cs delete mode 100644 BytecodeApi/IO/Http/HttpFile.cs delete mode 100644 BytecodeApi/IO/Http/HttpGetRequest.cs delete mode 100644 BytecodeApi/IO/Http/HttpHeadRequest.cs delete mode 100644 BytecodeApi/IO/Http/HttpMultipartRequest.cs delete mode 100644 BytecodeApi/IO/Http/HttpParameter.cs delete mode 100644 BytecodeApi/IO/Http/HttpPostRequest.cs delete mode 100644 BytecodeApi/IO/Http/HttpRequest.cs delete mode 100644 BytecodeApi/IO/Http/HttpResponseHeaders.cs delete mode 100644 BytecodeApi/IO/Interop/Atom.cs delete mode 100644 BytecodeApi/IO/Interop/CommandPrompt.cs delete mode 100644 BytecodeApi/IO/Interop/CommandPromptEventArgs.cs delete mode 100644 BytecodeApi/IO/Interop/DynamicLibrary.cs delete mode 100644 BytecodeApi/IO/Interop/DynamicLibraryFunction.cs delete mode 100644 BytecodeApi/IO/Interop/GlobalAtom.cs delete mode 100644 BytecodeApi/IO/Interop/GlobalKeyboardHook.cs delete mode 100644 BytecodeApi/IO/Interop/IAtom.cs delete mode 100644 BytecodeApi/IO/Interop/KeyboardHookEventArgs.cs delete mode 100644 BytecodeApi/IO/Interop/KeyboardHookEventHandler.cs delete mode 100644 BytecodeApi/IO/Interop/OutlookDataObject.cs create mode 100644 BytecodeApi/IO/KnownPaths.cs create mode 100644 BytecodeApi/IO/PathEx.cs delete mode 100644 BytecodeApi/IO/ProcessLoadLibraryResult.cs delete mode 100644 BytecodeApi/IO/SystemInfo/DeviceInfo.cs delete mode 100644 BytecodeApi/IO/SystemInfo/DeviceManager.cs delete mode 100644 BytecodeApi/IO/SystemInfo/DeviceTypeInfo.cs delete mode 100644 BytecodeApi/IO/SystemInfo/FileExtensionInfo.cs delete mode 100644 BytecodeApi/IO/SystemInfo/HostsFile.cs delete mode 100644 BytecodeApi/IO/SystemInfo/HostsFileEntry.cs delete mode 100644 BytecodeApi/IO/SystemInfo/InstalledSoftware.cs delete mode 100644 BytecodeApi/IO/SystemInfo/InstalledSoftwareInfo.cs delete mode 100644 BytecodeApi/IO/SystemInfo/ProtocolMapping.cs delete mode 100644 BytecodeApi/IO/SystemInfo/ProtocolMappingEntry.cs delete mode 100644 BytecodeApi/IO/SystemInfo/ProtocolMappingProtocol.cs delete mode 100644 BytecodeApi/IO/SystemInfo/TcpView.cs delete mode 100644 BytecodeApi/IO/SystemInfo/TcpViewEntry.cs delete mode 100644 BytecodeApi/IO/SystemInfo/TcpViewEntryProtocol.cs create mode 100644 BytecodeApi/IO/TempDirectory.cs delete mode 100644 BytecodeApi/IO/TransferCallback.cs delete mode 100644 BytecodeApi/IO/Wmi/WmiClass.cs delete mode 100644 BytecodeApi/IO/Wmi/WmiNamespace.cs delete mode 100644 BytecodeApi/IO/Wmi/WmiObject.cs delete mode 100644 BytecodeApi/IO/Wmi/WmiProperty.cs delete mode 100644 BytecodeApi/IO/Wmi/WmiPropertyCollection.cs create mode 100644 BytecodeApi/IndexedProperty.cs delete mode 100644 BytecodeApi/Internal/Native.cs create mode 100644 BytecodeApi/Interop/DynamicLibrary.cs create mode 100644 BytecodeApi/Interop/DynamicLibraryFunction.cs create mode 100644 BytecodeApi/Interop/HGlobal.cs delete mode 100644 BytecodeApi/KnownBrowser.cs delete mode 100644 BytecodeApi/Mathematics/DateTimeEx.cs create mode 100644 BytecodeApi/Mathematics/ProgressCalculator.cs create mode 100644 BytecodeApi/Mathematics/ProgressCalculatorEventArgs.cs delete mode 100644 BytecodeApi/Mathematics/Range.cs create mode 100644 BytecodeApi/README.md create mode 100644 BytecodeApi/ReadOnlyIndexedProperty.cs delete mode 100644 BytecodeApi/SpecialStringComparisons.cs delete mode 100644 BytecodeApi/Text/ILanguageStringGenerator.cs create mode 100644 BytecodeApi/Text/Json/Converters/DateOnlyJsonConverter.cs create mode 100644 BytecodeApi/Text/Json/Converters/EnumNameJsonConverter.cs create mode 100644 BytecodeApi/Text/Json/Converters/TimeOnlyJsonConverter.cs delete mode 100644 BytecodeApi/Text/SentenceGenerator.cs delete mode 100644 BytecodeApi/Text/TextGenerator.cs delete mode 100644 BytecodeApi/Text/WordGenerator.cs delete mode 100644 BytecodeApi/Threading/Deferrer.cs delete mode 100644 Global/GlobalAssemblyInfo.cs delete mode 100644 Playground.Console/App.config create mode 100644 Playground.Console/ExecuteAttribute.cs create mode 100644 Playground.Console/Playground.cs delete mode 100644 Playground.Console/Program.cs create mode 100644 Playground.Console/Startup.cs delete mode 100644 Playground.Wpf/App.config rename Playground.Wpf/{Views => }/MainWindow.xaml (52%) create mode 100644 Playground.Wpf/MainWindow.xaml.cs create mode 100644 Playground.Wpf/MainWindowViewModel.cs create mode 100644 Playground.Wpf/Properties/AssemblyInfo.cs delete mode 100644 Playground.Wpf/Properties/Resources.Designer.cs delete mode 100644 Playground.Wpf/Properties/Resources.resx delete mode 100644 Playground.Wpf/ViewModels/MainWindowViewModel.cs delete mode 100644 Playground.Wpf/Views/MainUserControl.xaml delete mode 100644 Playground.Wpf/Views/MainUserControl.xaml.cs delete mode 100644 Playground.Wpf/Views/MainWindow.xaml.cs diff --git a/!Docs/Related Files/FileGrayscaleEffect.fx b/!Docs/Related Files/FileGrayscaleEffect.fx deleted file mode 100644 index 3a6d53b..0000000 --- a/!Docs/Related Files/FileGrayscaleEffect.fx +++ /dev/null @@ -1,8 +0,0 @@ -sampler2D implicitInput : register(s0); - -float4 main(float2 uv : TEXCOORD) : COLOR -{ - float4 color = tex2D(implicitInput, uv); - color.rgb = dot(color.rgb, float3(.3, .59, .11)); - return color; -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.Cryptography/AsymmetricContentEncryption.cs b/!Examples/BytecodeApi.Cryptography/AsymmetricContentEncryption.cs deleted file mode 100644 index 2800c48..0000000 --- a/!Examples/BytecodeApi.Cryptography/AsymmetricContentEncryption.cs +++ /dev/null @@ -1,42 +0,0 @@ -using BytecodeApi.Cryptography; -using BytecodeApi.Extensions; -using BytecodeApi.Text; -using System; -using System.Security.Cryptography; - -public static class Program -{ - [STAThread] - public static void Main() - { - // This class encrypts a randomly generated AES key with an RSA key and the data with the AES key. - // The AsymmetricEncryption class can only encrypt enough data to encrypt the AES key. - // AsymmetricContentEncryption is using AsymmetricEncryption internally. - - // Data to encrypt - byte[] data = new byte[100]; // Can be any size - for (int i = 0; i < data.Length; i++) data[i] = (byte)i; - - Console.WriteLine("byte[] data ="); - Console.WriteLine(Wording.FormatBinary(data)); - - // Generate public/private key pair - AsymmetricEncryption.GenerateKeyPair(out RSAParameters publicKey, out RSAParameters privateKey); - - // Encrypt using the public key - byte[] encrypted = AsymmetricContentEncryption.Encrypt(data, publicKey); - Console.WriteLine("byte[] encrypted ="); - Console.WriteLine(Wording.FormatBinary(encrypted)); - - // Decrypt using the private key - byte[] decrypted = AsymmetricContentEncryption.Decrypt(encrypted, privateKey); - - // Compare decrypted data with original data - if (!data.Compare(decrypted)) - { - throw new Exception("Decryted data does not match oridinal data!?"); - } - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.Cryptography/AsymmetricEncryption.cs b/!Examples/BytecodeApi.Cryptography/AsymmetricEncryption.cs deleted file mode 100644 index cef99d9..0000000 --- a/!Examples/BytecodeApi.Cryptography/AsymmetricEncryption.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Security.Cryptography; - -public static class Program -{ - [STAThread] - public static void Main() - { - // The maximum amount of data that can be encrypted depends on the RSA key size. - // To encrypt any amount of data, use the AsymmetricContentEncryption class. - - // Data to encrypt - byte[] data = new byte[] { 1, 2, 3, 4, 5, 6, 7 }; - Console.WriteLine("byte[] data ="); - Console.WriteLine(Wording.FormatBinary(data)); - - // Generate public/private key pair - AsymmetricEncryption.GenerateKeyPair(out RSAParameters publicKey, out RSAParameters privateKey); - - // Encrypt using the public key - byte[] encrypted = AsymmetricEncryption.Encrypt(data, publicKey); - Console.WriteLine("byte[] encrypted ="); - Console.WriteLine(Wording.FormatBinary(encrypted)); - - // Decrypt using the private key - byte[] decrypted = AsymmetricEncryption.Decrypt(encrypted, privateKey); - - // Compare decrypted data with original data - if (!data.Compare(decrypted)) - { - throw new Exception("Decryted data does not match oridinal data!?"); - } - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.Cryptography/AsymmetricKeyConvert.cs b/!Examples/BytecodeApi.Cryptography/AsymmetricKeyConvert.cs deleted file mode 100644 index 7bf0cac..0000000 --- a/!Examples/BytecodeApi.Cryptography/AsymmetricKeyConvert.cs +++ /dev/null @@ -1,30 +0,0 @@ -using BytecodeApi.Cryptography; -using BytecodeApi.Text; -using System; -using System.Security.Cryptography; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Generate public/private key pair - AsymmetricEncryption.GenerateKeyPair(out RSAParameters publicKey, out RSAParameters privateKey); - - // Convert to DER key - byte[] der = AsymmetricKeyConvert.ToDer(publicKey, AsymmetricKeyType.Public); - Console.WriteLine("byte[] public_der ="); - Console.WriteLine(Wording.FormatBinary(der)); - - // Convert to PEM - string pem = AsymmetricKeyConvert.ToPem(privateKey, AsymmetricKeyType.Private); - Console.WriteLine("string private_pem ="); - Console.WriteLine(pem); - - Console.WriteLine("and so on..."); - - // This class converts between PEM and DER formats, and RSAParameters objects. - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.Cryptography/ContentEncryption.cs b/!Examples/BytecodeApi.Cryptography/ContentEncryption.cs deleted file mode 100644 index cb3524d..0000000 --- a/!Examples/BytecodeApi.Cryptography/ContentEncryption.cs +++ /dev/null @@ -1,39 +0,0 @@ -using BytecodeApi.Cryptography; -using BytecodeApi.Extensions; -using BytecodeApi.Text; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Data to encrypt - byte[] data = new byte[] { 1, 2, 3, 4, 5, 6, 7 }; - Console.WriteLine("byte[] data ="); - Console.WriteLine(Wording.FormatBinary(data)); - - // Password - const string password = "secret"; - Console.WriteLine("string password = " + password); - Console.WriteLine(); - - // Encrypt using the password and hash the password 1000 times - byte[] encrypted = ContentEncryption.Encrypt(data, password, 1000); - Console.WriteLine("byte[] encrypted ="); - Console.WriteLine(Wording.FormatBinary(encrypted)); - - // Decrypt data using the password - // The encrypted byte[] contains the IV and information about how many times the password was hashed. - // Therefore, only the password is needed. - byte[] decrypted = ContentEncryption.Decrypt(encrypted, password); - - // Compare decrypted data with original data - if (!data.Compare(decrypted)) - { - throw new Exception("Decryted data does not match oridinal data!?"); - } - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.Cryptography/Encryption.cs b/!Examples/BytecodeApi.Cryptography/Encryption.cs deleted file mode 100644 index c7cd214..0000000 --- a/!Examples/BytecodeApi.Cryptography/Encryption.cs +++ /dev/null @@ -1,42 +0,0 @@ -using BytecodeApi.Cryptography; -using BytecodeApi.Extensions; -using BytecodeApi.Text; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Data to encrypt - byte[] data = new byte[] { 1, 2, 3, 4, 5, 6, 7 }; - Console.WriteLine("byte[] data ="); - Console.WriteLine(Wording.FormatBinary(data)); - - // IV is a random value - byte[] iv = Encryption.GenerateIV(); - Console.WriteLine("byte[] iv ="); - Console.WriteLine(Wording.FormatBinary(iv)); - - // Encryption key is derived from a password, hashed 1000 times - byte[] key = Hashes.ComputeBytes("password", HashType.SHA256, 1000); - Console.WriteLine("byte[] key ="); - Console.WriteLine(Wording.FormatBinary(key)); - - // Encrypt a byte[] using a specified key and IV - byte[] encrypted = Encryption.Encrypt(data, iv, key); - Console.WriteLine("byte[] encrypted ="); - Console.WriteLine(Wording.FormatBinary(encrypted)); - - // Decrypt data using the same key and IV - byte[] decrypted = Encryption.Decrypt(encrypted, iv, key); - - // Compare decrypted data with original data - if (!data.Compare(decrypted)) - { - throw new Exception("Decryted data does not match oridinal data!?"); - } - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.Cryptography/Hashes.cs b/!Examples/BytecodeApi.Cryptography/Hashes.cs deleted file mode 100644 index 41c0fc2..0000000 --- a/!Examples/BytecodeApi.Cryptography/Hashes.cs +++ /dev/null @@ -1,29 +0,0 @@ -using BytecodeApi.Cryptography; -using BytecodeApi.Text; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - const string str = "Hello, World!"; - - // Convert str to UTF8 bytes, compute hash and return hexadecimal hash string - Console.WriteLine("Hash of \"" + str + "\" ="); - Console.WriteLine(Hashes.Compute(str, HashType.SHA256)); - Console.WriteLine(); - - // Convert str to UTF8 bytes, compute hash and return byte[] - Console.WriteLine("Hash bytes of \"" + str + "\" ="); - byte[] hash = Hashes.ComputeBytes(str, HashType.SHA256); - Console.WriteLine(Wording.FormatBinary(hash)); - - // Compute hash of a byte[] and return hash as byte[] - Console.WriteLine("Hash bytes of byte[] { 1, 2, 3 } ="); - hash = Hashes.ComputeBytes(new byte[] { 1, 2, 3 }, HashType.SHA256); - Console.WriteLine(Wording.FormatBinary(hash)); - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.Data/Blob.cs b/!Examples/BytecodeApi.Data/Blob.cs deleted file mode 100644 index ea05edc..0000000 --- a/!Examples/BytecodeApi.Data/Blob.cs +++ /dev/null @@ -1,71 +0,0 @@ -using BytecodeApi.Data; -using BytecodeApi.Extensions; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Blob: An object that is composed of a name and binary content - // BlobCollection: A collection of blobs - // BlobTree A hierarchical structure of nodes and blobs - - // Blobs are not dedicated to be read and written from/to the file system. - // However, this example also includes file & directory opetaions. - - // Create a blob - Blob blob = new Blob("name", new byte[100]); - blob.Tag = "some additional information"; // Any object can be associated with a blob to store additional information - - // Load blob from file - blob = Blob.FromFile(@"C:\Windows\win.ini"); - - // Load a directory into a blob tree: - // (the example requires a location that is present on every OS and it shouldn't be too large...) - BlobTree blobTree = BlobTree.FromDirectory(@"C:\Windows\System32\Sysprep"); - - // Iterate through a blob tree and write to console - Console.WriteLine("Iterate through BlobTree that was loaded from a directory:"); - PrintTree(blobTree.Root); - - // Find a node or blob by a backslash delimited path - BlobTreeNode node = blobTree.Root.FindNode(@"ActionFiles"); // equivalent of a directory - Blob specificBlob = blobTree.Root.FindBlob(@"ActionFiles\Cleanup.xml"); // equivalent of a file - - // Create a blob collection - BlobCollection blobs = new BlobCollection(); - blobs.Add(new Blob("blob1", new byte[100])); - blobs.Add(new Blob("blob2", new byte[100])); - blobs.Add(new Blob("blob3", new byte[100])); - - // Save to directory - // blobs.SaveToDirectory(@"C:\path\to\directory"); - - // Load blob collection from directory. Unlike a blob tree, this collection willy only contains the files directly in this directory. - // BlobCollection.FromDirectory(@"C:\path\to\directory"); - - // Load all files recursively into a flat blob collection - // BlobCollection.FromDirectory(@"C:\path\to\directory", true); - - Console.ReadKey(); - } - - private static void PrintTree(BlobTreeNode node, int consoleIndent = 0) - { - Console.Write(" ".Repeat(consoleIndent)); - Console.Write("* " + node.Name); - Console.WriteLine(" (" + node.ComputeSize() + ")"); // Compute the size of all blobs recursively - - foreach (BlobTreeNode childNode in node.Nodes) - { - PrintTree(childNode, consoleIndent + 1); - } - - foreach (Blob blob in node.Blobs) - { - Console.Write(" ".Repeat(consoleIndent + 1)); - Console.WriteLine("> " + blob.Name + " (" + blob.Content.Length + ")"); - } - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.Extensions/Extensions.cs b/!Examples/BytecodeApi.Extensions/Extensions.cs deleted file mode 100644 index 26d6349..0000000 --- a/!Examples/BytecodeApi.Extensions/Extensions.cs +++ /dev/null @@ -1,96 +0,0 @@ -using BytecodeApi.Extensions; -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; - -public static class Program -{ - [STAThread] - public static void Main() - { - // There are a lot of extensions. To not overwhelm the examples, here are just a few of them. - // Each method represents a category of examples - - IEnumerableExtensions(); - StringExtensions(); - DefaultTypeExtensions(); - ArrayAndCollectionExtensions(); - - // And many more... - // See documentation of the BytecodeApi.Extensions namespace - } - - private static void IEnumerableExtensions() - { - int[] array = new int[1000]; - for (int i = 0; i < array.Length; i++) array[i] = i; - - // Break down an array into chunks with a chunk size of 17 - foreach (IEnumerable chunk in array.Chunk(17)) - { - // ... - } - - // Concatenate string array with CRLF - string multiLineString = new[] { "line1", "line2", "line3" }.AsMultilineString(); - - // Random sort an array - int[] randomSorted = array.SortRandom().ToArray(); - - // Equivalent of .OrderBy(i => i) - int[] sorted = array.Sort().ToArray(); - - // See the documentation for a full overview of all extension methods - } - private static void StringExtensions() - { - // Trivial, but useful - especially for producing readable LINQ queries - - string str1 = "".ToNullIfEmpty(); // null - string str2 = " ".ToNullIfEmptyOrWhiteSpace(); // null - - string str3 = "hello, world".SubstringFrom(", "); // "world" - string str4 = "hello, world".SubstringFrom("xxx"); // "hello, world" - string str5 = "hello, world".SubstringUntil(", "); // "hello" - string str6 = "begin:hello".TrimStartString("begin"); // "hello" - string str7 = str6.EnsureStartsWith("begin:"); // "begin:hello" - byte[] bytes = "hello".ToAnsiBytes(); - - int int1 = "123".ToInt32OrDefault(); // 123 - int int2 = "abc".ToInt32OrDefault(); // 0 - int? int3 = "abc".ToInt32OrNull(); // null - DateTime? date = "2021-11-15".ToDateTime("yyyy-MM-dd"); - - // And for all other default datatypes... - } - private static void DefaultTypeExtensions() - { - int? int1 = 0.ToNullIfDefault(); // null - int? int2 = 123.ToNullIfDefault(); // 123 - - // Equivalent methods implemented for all other default datatypes... - - bool isUpper = 'A'.IsUpper(); // true - bool isHex = 'A'.IsHexadecimal(); // true - } - private static void ArrayAndCollectionExtensions() - { - // IsNullOrEmpty returns true for any of these cases - bool empty1 = ((int[])null).IsNullOrEmpty(); - bool empty2 = new int[0].IsNullOrEmpty(); - bool empty3 = new object[] { null, null }.IsNullOrEmpty(); - - bool equal = new byte[] { 1, 2, 3 }.Compare(new byte[] { 1, 2, 3 }); // true - - int index = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }.FindSequence(new byte[] { 4, 5 }); // 3 - - // BitArray extensions - BitArray bitArray = new BitArray(10); - - bool[] convertedBitArray = bitArray.ToBooleanArray(); - int countTrue = bitArray.CountTrue(); // 0 - - bitArray.SetRandomValues(true); // true = cryptographic random numbers - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.FileFormats.Csv/CsvDelimiterDetector.cs b/!Examples/BytecodeApi.FileFormats.Csv/CsvDelimiterDetector.cs deleted file mode 100644 index da72cd5..0000000 --- a/!Examples/BytecodeApi.FileFormats.Csv/CsvDelimiterDetector.cs +++ /dev/null @@ -1,59 +0,0 @@ -using BytecodeApi.Extensions; -using BytecodeApi.FileFormats.Csv; -using System; -using System.IO; - -public static class Program -{ - [STAThread] - public static void Main() - { - // CSV file as string - string csvString = @" -FirstName;LastName;Age -Addison;Smith;45 -Cassidy;Johnson;12 -Delaney;Williams;31 -Fallon;Brown;24 -Harlow;Jones;86 -"; - - // We quicky convert the CSV string to a Stream. - // It's easier to demonstrate than using a file on the disk. But typically, this would be a file. - using (MemoryStream memoryStream = new MemoryStream(csvString.ToUTF8Bytes())) - { - string delimiter = CsvDelimiterDetector.CreateDefault().FromStream(memoryStream); - - // ";" was detected - } - - // CsvDelimiterDetector.CreateDefault() has default settings. - // To customize, create a custom detector like this: - CsvDelimiterDetector customDelimiter = new CsvDelimiterDetector - ( - // Test these delimiters: - new[] { ";", ",", "|", "\t" }, - // The tested file must have at least 10 lines, otherwise the delimiter is considered indeterminable. - 10, - // A maximum of 100 lines is tested before the detector exits. The file may contain less, but no less than 10. - 100 - ); - - // Typically, the delimiter detector is implemented in CsvFile and CsvIterator per default. - // Unless the delimiter is clearly defined, it is recommended to to pass null to the "delimiter" parameter. - CsvFile csv = CsvFile.FromString(csvString); // no "delimiter" parameter was passed - - // When no delimiter is explicitly passed to the CsvFile.From*() method, the CsvFile.DelimiterDetector is used. - // This static field is initialized to CsvDelimiterDetector.CreateDefault() and can be changed globally. - - // When omitting the "delimiter" parameter from the CsvIterator.From*() method, the CsvIterator.DelimiterDetector is used. - // CsvFile.DelimiterDetector and CsvIterator.DelimiterDetector can be defined separately. - using (MemoryStream memoryStream = new MemoryStream(csvString.ToUTF8Bytes())) - { - foreach (CsvRow row in CsvIterator.FromStream(memoryStream)) - { - // ... - } - } - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.FileFormats.Csv/CsvFile.Save.cs b/!Examples/BytecodeApi.FileFormats.Csv/CsvFile.Save.cs deleted file mode 100644 index 4781fc0..0000000 --- a/!Examples/BytecodeApi.FileFormats.Csv/CsvFile.Save.cs +++ /dev/null @@ -1,37 +0,0 @@ -using BytecodeApi.Extensions; -using BytecodeApi.FileFormats.Csv; -using System; -using System.IO; -using System.Text; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Create a CSV object, or use a CsvFile instance retrieved from the CsvFile.From*() method. - CsvFile csv = new CsvFile(); - - // Populate with data - csv.Delimiter = ";"; - csv.Headers = new[] { "FirstName", "LastName", "Age" }; - - csv.Rows.Add(new CsvRow("Addison", "Smith", "45")); - csv.Rows.Add(new CsvRow("Cassidy", "Johnson", "12")); - csv.Rows.Add(new CsvRow("Delaney", "Williams", "31")); - csv.Rows.Add(new CsvRow("Fallon", "Brown", "24")); - csv.Rows.Add(new CsvRow("Harlow", "Jones", "86")); - - // Write CSV to a file or stream. - using (MemoryStream memoryStream = new MemoryStream()) - { - csv.Save(memoryStream, false, Encoding.Default); - - // In this example, we want to print it to the console, so we need it as a string - string str = memoryStream.ToArray().ToUTF8String(); - Console.WriteLine(str); - } - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.FileFormats.Csv/CsvFile.cs b/!Examples/BytecodeApi.FileFormats.Csv/CsvFile.cs deleted file mode 100644 index 4109969..0000000 --- a/!Examples/BytecodeApi.FileFormats.Csv/CsvFile.cs +++ /dev/null @@ -1,49 +0,0 @@ -using BytecodeApi.FileFormats.Csv; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - // CSV file as string - string csvString = @" -FirstName;LastName;Age -Addison;Smith;45 -Cassidy;Johnson;12 -Delaney;Williams;31 -Fallon;Brown;24 -Harlow;Jones;86 -"; - - // Get CSV from a string that contains CSV data - CsvFile csv = CsvFile.FromString(csvString, true, ";"); - - // or - // CsvFile csv = CsvFile.FromFile(@"C:\path\to\data.csv", true, ";"); - // CsvFile csv = CsvFile.FromBinary(byte_array_containing_csv_file, true, ";"); - // CsvFile csv = CsvFile.FromStream(fileStream, true, ";") - - string[] headers = csv.Headers; // FirstName, LastName, Age - CsvRow row = csv.Rows[0]; // Addison, Smith, 45 - - // true, if CSV parsing failed in any row - bool errors = csv.HasErrors; - - // true, if all rows contain the same amount of columns - bool columnsCorrect = csv.IsColumnCountConsistent; - - // Check, if CSV has 3 columns in every row - bool columnsAsExpected = csv.CheckColumnCount(3); - - // Get column index of "LastName", case insensitive - // In case, columns are reordered - int lastNameIndex = csv.GetColumnIndex("LastName", true); - - // Get column content by name rather than by index - string lastName = csv.Rows[0][lastNameIndex].Value; - - // Omit the "delimiter" parameter to automatically detect the delimiter - CsvFile csvAutoDetectDelimiter = CsvFile.FromString(csvString, true); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.FileFormats.Csv/CsvIterator.cs b/!Examples/BytecodeApi.FileFormats.Csv/CsvIterator.cs deleted file mode 100644 index d6b1db3..0000000 --- a/!Examples/BytecodeApi.FileFormats.Csv/CsvIterator.cs +++ /dev/null @@ -1,43 +0,0 @@ -using BytecodeApi.Extensions; -using BytecodeApi.FileFormats.Csv; -using System; -using System.IO; - -public static class Program -{ - [STAThread] - public static void Main() - { - // CSV file as string - string csvString = @" -FirstName;LastName;Age -Addison;Smith;45 -Cassidy;Johnson;12 -Delaney;Williams;31 -Fallon;Brown;24 -Harlow;Jones;86 -"; - - // We quicky convert the CSV string to a Stream. - // It's easier to demonstrate than using a file on the disk. But typically, this would be a file. - using (MemoryStream memoryStream = new MemoryStream(csvString.ToUTF8Bytes())) - { - foreach (CsvRow row in CsvIterator.FromStream(memoryStream, true, ";")) // hasHeaderRow = true: The firt row is ignored - { - // Now we can iterate over the CSV file rather than loading it into a CsvFile object. - // This way, CSV files of any size can be processed. - } - } - - using (MemoryStream memoryStream = new MemoryStream(csvString.ToUTF8Bytes())) - { - // Omit the "delimiter" parameter to automatically detect the delimiter - foreach (CsvRow row in CsvIterator.FromStream(memoryStream, true)) - { - // ... - } - } - - // Use the CsvFile class for CSV files that are small enough to be stored in memory completely. - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.FileFormats.Ini/IniFile.Read.cs b/!Examples/BytecodeApi.FileFormats.Ini/IniFile.Read.cs deleted file mode 100644 index cfc3927..0000000 --- a/!Examples/BytecodeApi.FileFormats.Ini/IniFile.Read.cs +++ /dev/null @@ -1,109 +0,0 @@ -using BytecodeApi.Extensions; -using BytecodeApi.FileFormats.Ini; -using System; -using System.IO; -using System.Text; - -public static class Program -{ - [STAThread] - public static void Main() - { - string iniString = @" -global_prop1 = hello -global_prop2 = world - -[section1] -key1 = value1 -key2 = value2 - -[section2] -key3 = value3 - -; A section that occurs multiple times -[section2] -key4 = value 4 -"; - IniFile ini; - - // We quicky convert the INI string to a Stream. - // It's easier to demonstrate than using a file on the disk. But typically, this would be a file. - using (MemoryStream memoryStream = new MemoryStream(iniString.ToUTF8Bytes())) - { - // Custom parsing options (optional) - // Where the INI file has no clear specification, IniFileParsingOptions can be used to specify details about parsing - - IniFileParsingOptions parsingOptions = new IniFileParsingOptions - { - // true add to errors to IniFile.ErrorLines; false to throw an exception - IgnoreErrors = true, - - // Trim section names like [ my_section ] - TrimSectionNames = true, - // Trim property and value names (Set to false, if you need whitespaces at the beginning or end of property names/values) - TrimPropertyNames = true, - TrimPropertyValues = true, - - // Allow global properties (without a section declaration) - AllowGlobalProperties = true, - - // Allow section names that contain closing brackets like [my]section] - AllowSectionNameClosingBracket = true, - // Empty lines should typically be acceptable - AllowEmptyLines = true, - - // Typically properties are like "key = value" (equal sign), but some may use a colon instead - PropertyDelimiter = IniPropertyDelimiter.EqualSign, - - // Allow semicolon comments (;), but no number sign comments (#) - AllowSemicolonComments = true, - AllowNumberSignComments = false, - - // Merge properties of sections where the name is equal - DuplicateSectionNameBehavior = IniDuplicateSectionNameBehavior.Merge, - // Consider the name of two sections equal, regardless of case - DuplicateSectionNameIgnoreCase = true, - - // Duplicate property names are an error - DuplicatePropertyNameBehavior = IniDuplicatePropertyNameBehavior.Abort, - // Consider the name of two properties equal, regardless of case - DuplicatePropertyNameIgnoreCase = true - }; - - ini = IniFile.FromStream(memoryStream, Encoding.Default, parsingOptions); - } - - // "global properties" are properties without a section. They are on top of *any* section declaration - Console.WriteLine("Global properties without a section:"); - foreach (IniProperty globalProperty in ini.GlobalProperties.Properties) - { - Console.WriteLine("Name: " + globalProperty.Name + ", Value: " + globalProperty.Value); - } - Console.WriteLine(); - - // Loop through all sections and their properties - foreach (IniSection section in ini.Sections) - { - Console.WriteLine("Section: " + section.Name); - foreach (IniProperty property in section.Properties) - { - Console.WriteLine("Name: " + property.Name + ", Value: " + property.Value); - } - Console.WriteLine(); - } - - // Typically, reading an INI file means going through specific sections and properties, not just looping over it - if (ini.HasSection("section1", true)) // true = ignore case - { - IniSection section = ini.Sections["section1", true]; // true = ignore case - - // true = ignore case - // "nothing" = the default value, if the property does not exist - IniProperty property = section.Properties["key1", true, "nothing"]; - - string theValue = property.Value; - } - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.FileFormats.Ini/IniFile.Write.cs b/!Examples/BytecodeApi.FileFormats.Ini/IniFile.Write.cs deleted file mode 100644 index 3fb2702..0000000 --- a/!Examples/BytecodeApi.FileFormats.Ini/IniFile.Write.cs +++ /dev/null @@ -1,56 +0,0 @@ -using BytecodeApi.Extensions; -using BytecodeApi.FileFormats.Ini; -using System; -using System.IO; -using System.Text; - -public static class Program -{ - [STAThread] - public static void Main() - { - IniFile ini = new IniFile(); - - // Set global properties (before any section declaration) - ini.GlobalProperties.Properties.Add("global_prop1", "hello"); - ini.GlobalProperties.Properties.Add("global_prop2", "world"); - - // Create a section - IniSection section1 = new IniSection("section1"); - section1.Properties.Add("key1", "value1"); - section1.Properties.Add("key1", "value2"); - ini.Sections.Add(section1); - - // Create another section - IniSection section2 = new IniSection("section2"); - section2.Properties.Add("key1", "value1"); - section2.Properties.Add("key1", "value2"); - ini.Sections.Add(section2); - - using (MemoryStream memoryStream = new MemoryStream()) - { - // Custom formatting options (optional) - IniFileFormattingOptions formattingOptions = new IniFileFormattingOptions - { - // property = value (equal sign) - PropertyDelimiter = IniPropertyDelimiter.EqualSign, - - // property{SPACE}=value - UseDelimiterSpaceBefore = true, - // property={SPACE}value - UseDelimiterSpaceAfter = true, - - // Line breaks between sections look nice - UseNewLineBetweenSections = true - }; - - ini.Save(memoryStream, Encoding.Default, formattingOptions); - - // Save it to a stream so we can display in console - string iniString = memoryStream.ToArray().ToUTF8String(); - Console.WriteLine(iniString); - } - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.FileFormats.PE/PEImage.cs b/!Examples/BytecodeApi.FileFormats.PE/PEImage.cs deleted file mode 100644 index d3e4256..0000000 --- a/!Examples/BytecodeApi.FileFormats.PE/PEImage.cs +++ /dev/null @@ -1,41 +0,0 @@ -using BytecodeApi.FileFormats.PE; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Read explorer.exe - PEImage pe = PEImage.FromFile(@"C:\Windows\explorer.exe"); - - // Boring stuff - ImageDosHeader dosHeader = pe.DosHeader; - byte[] dosStub = pe.DosStub; - - Console.WriteLine("explorer.exe"); - Console.WriteLine(); - - Console.WriteLine(pe.CoffHeader.NumberOfSections + " Sections:"); - foreach (ImageSection section in pe.Sections) - { - Console.Write(" * " + section.Header.Name.PadRight(15)); - Console.Write(" (raw data = " + section.Header.SizeOfRawData + " bytes, "); - Console.WriteLine("virtual size = " + section.Header.VirtualSize + " bytes)"); - } - Console.WriteLine(); - - if (pe.OptionalHeader is ImageOptionalHeader32) - { - Console.WriteLine("Executable is 32-bit"); - } - else if (pe.OptionalHeader is ImageOptionalHeader64) - { - Console.WriteLine("Executable is 64-bit"); - } - - // If you are dissecting PE files, you are probably familiar with the rest of the properties... - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.FileIcons/FileIcon.cs b/!Examples/BytecodeApi.FileIcons/FileIcon.cs deleted file mode 100644 index b422c91..0000000 --- a/!Examples/BytecodeApi.FileIcons/FileIcon.cs +++ /dev/null @@ -1,32 +0,0 @@ -using BytecodeApi.FileIcons; -using System; -using System.Drawing; -using System.Windows.Media.Imaging; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Get the file icon for the .csproj extension - FileIcon csprojIcon = KnownFileIcons.Csproj; - - // Get as bitmap - // Available sizes are: 16, 32, 48 - Bitmap csproj16 = csprojIcon.Icon16; - // or use the shortcut - csproj16 = KnownFileIcons.Csproj.Icon16; - - // Get the bitmap source to use in WPF projects - BitmapSource csproj16Source = csprojIcon.Icon16ImageSource; - // or use the shortcut (can be used with x:Static markup extension and directly bound in a WPF - csproj16Source = KnownFileIconImages.Csproj16; - - // Get the icon from an extension string - FileIcon exeIcon = FileIcon.FromExtension("exe"); - - // Special file icons - FileIcon directory = SpecialFileIcons.Directory; - FileIcon unknwonFileType = SpecialFileIcons.Unknown; - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.IO.Cli/Cli.cs b/!Examples/BytecodeApi.IO.Cli/Cli.cs deleted file mode 100644 index 64ecaf6..0000000 --- a/!Examples/BytecodeApi.IO.Cli/Cli.cs +++ /dev/null @@ -1,64 +0,0 @@ -using BytecodeApi.IO.Cli; -using System; -using System.Collections.ObjectModel; - -public static class Program -{ - [STAThread] - public static void Main(string[] args) - { - // Define what options are available: - OptionSet optionSet = new OptionSet("-", "--") // "-" is the prefix and "--" is the prefix for "alternative" options - .Add("command1") // Add option "-command1" - .Add(new[] { "h" }, new[] { "help" }); // "-h" or "--help" ("--h" or "-help" are invalid) - - // Option -^ Alternative -^ - - // Typical parsing of commandline: - ParsedOptionSet parsed1 = optionSet.Parse(args); - // or all arguments in one string, which is then split into a string[] internally - ParsedOptionSet parsed2 = optionSet.Parse(Environment.CommandLine); - - // Examples: - ParsedOptionSet parsed3 = optionSet.Parse("-h"); // Option with prefix - ParsedOptionSet parsed4 = optionSet.Parse("--help"); // Alternative option with alternative prefix - ParsedOptionSet parsed5 = optionSet.Parse("-command1 param1 param2 param3"); // Option with parameters - - // Parsing with validators: - // There are two methods for validation: - // - Custom handlers for validation failures - // - Throwing of an exception - - ParsedOptionSet parsed6 = optionSet - .Parse("-foo -command1 param1 param2") - // Validator that throws a CliException: - .Assert.OptionRequired("command1") - // Custom validator: - .Validate.MaximumValueCount("command1", 2, () => - { - Console.WriteLine("-command1 may only have two parameters!"); - }) - .Validate.FileExists("command1", () => - { - Console.WriteLine("All parameters of -command1 must point to existing files!"); - }); - // etc... - - // "Arguments" are what is not associated with any option - // In this example, "-foo", because it's not specified in our OptionSet - ReadOnlyCollection arguments = parsed6.Arguments; - - // Handle all known options: - parsed6 - .Handle("command1", parameters => - { - // Invoked, if "-command1" was specified - Console.WriteLine("-command1 executed"); - foreach (string p in parameters) Console.WriteLine(p); - }) - .Handle("h", parameters => - { - Console.WriteLine("Help"); - }); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.IO.FileSystem/CacheFile.cs b/!Examples/BytecodeApi.IO.FileSystem/CacheFile.cs deleted file mode 100644 index 02f772f..0000000 --- a/!Examples/BytecodeApi.IO.FileSystem/CacheFile.cs +++ /dev/null @@ -1,47 +0,0 @@ -using BytecodeApi.IO.FileSystem; -using System; -using System.IO; -using System.Threading; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Define a file that contains cached contents. - // This is useful to store information that take long to retrieve and should - // be kept a specific period of time before retrieving again - - // Example: List of all postal codes and street names, retrieved from a WebService - // The list only changes occasionally and should be stored on the disk to increase application startup - - CacheFile cacheFile = CacheFile.CreateWithTimeout - ( - Path.Combine(Path.GetTempPath(), "cachefile_example"), - TimeSpan.FromSeconds(10), - CacheFile_UpdateCallback - ); - - while (true) - { - // Read the file. - - // When retrieving for the first time, the update callback is invoked - // After that, the callback update is only invoked, if the timeout of 10 seconds has passed - - byte[] file = cacheFile.ReadAllBytes(); - Console.WriteLine("File was read"); - Thread.Sleep(1000); - } - } - - private static void CacheFile_UpdateCallback(FileStream stream) - { - // This Callback is invoked when the cached file needs to be updated - - // Very complex function that retrieves a lot of data through a WebService: - stream.Write(new byte[100], 0, 100); - - Console.WriteLine("UpdateCallback was invoked; Cached file was written to"); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.IO.Http/HttpClient.cs b/!Examples/BytecodeApi.IO.Http/HttpClient.cs deleted file mode 100644 index 52788e2..0000000 --- a/!Examples/BytecodeApi.IO.Http/HttpClient.cs +++ /dev/null @@ -1,44 +0,0 @@ -using BytecodeApi.IO.Http; -using System; -using System.IO; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Create HTTP client - HttpClient http = new HttpClient(true, "BytecodeApi.IO.Http.HttpClient"); - - // The HTTP client wraps common HTTP functionality (GET, POST, etc.) - // and returns the content as a string, byte[], Stream or file. - - // Note, that example.com does not actually support following examples. - - string example = http - .Get("https://example.com/") // Create GET request - .ReadString(); // Execute request and store result as string - - byte[] binaryExample = http - .Get("https://example.com/") - .AddQueryParameter("param", "value") // /?param=value - .ReadBytes(); // Read as byte[] - - http - .Post("https://example.com/login") // Posting into a form - .AddQueryParameter("param", "value") // /?param=value - .AddPostValue("username", "admin") - .AddPostValue("password", "123456") - .AddPostValue("btnOk", "1") - .ReadString(); - - // Using callback for progress calculation: - http - .Post("https://example.com/large_file.zip") - .ReadFile(Path.Combine(Path.GetTempPath(), "download_test"), (bytes, totalBytes) => - { - Console.WriteLine(bytes + " bytes read since the last callback."); - Console.WriteLine(totalBytes + " bytes read in total."); - }); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.IO.Interop/DynamicLibrary.cs b/!Examples/BytecodeApi.IO.Interop/DynamicLibrary.cs deleted file mode 100644 index 53e8007..0000000 --- a/!Examples/BytecodeApi.IO.Interop/DynamicLibrary.cs +++ /dev/null @@ -1,19 +0,0 @@ -using BytecodeApi.IO.Interop; -using System; -using System.Runtime.InteropServices; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Dynamically create P/Invoke methods at runtime: - - int tickCount = new DynamicLibrary("kernel32.dll") - .GetFunction("GetTickCount", CallingConvention.StdCall, CharSet.Ansi) - .Call(); - - Console.WriteLine("GetTickCount() = " + tickCount); - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.IO.Interop/GlobalKeyboardHook.cs b/!Examples/BytecodeApi.IO.Interop/GlobalKeyboardHook.cs deleted file mode 100644 index 4d60ef1..0000000 --- a/!Examples/BytecodeApi.IO.Interop/GlobalKeyboardHook.cs +++ /dev/null @@ -1,26 +0,0 @@ -using BytecodeApi.IO.Interop; -using System; -using System.Windows.Forms; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Global keyboard hook: - // Run application, switch to any other application and start typing - // Captured keystrokes are displayed in the console window - - using (GlobalKeyboardHook hook = new GlobalKeyboardHook()) - { - hook.KeyPressed += Hook_KeyPressed; - - Application.Run(); - } - } - - private static void Hook_KeyPressed(object sender, KeyboardHookEventArgs e) - { - Console.WriteLine("Char = " + (e.KeyChar == '\0' ? "NULL" : e.KeyChar.ToString()) + ", ScanCode = " + e.ScanCode + ", KeyCode = " + e.KeyCode); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.IO.SystemInfo/DeviceManager.cs b/!Examples/BytecodeApi.IO.SystemInfo/DeviceManager.cs deleted file mode 100644 index 6781e95..0000000 --- a/!Examples/BytecodeApi.IO.SystemInfo/DeviceManager.cs +++ /dev/null @@ -1,29 +0,0 @@ -using BytecodeApi.IO.SystemInfo; -using System; -using System.Collections.Generic; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Enumerate over devices - - foreach (DeviceTypeInfo type in DeviceManager.Create().DeviceTypes) - { - Console.WriteLine(type.ClassName); - - foreach (DeviceInfo device in type.Devices) - { - Console.WriteLine(" " + device.Name); - - foreach (KeyValuePair attribute in device.Attributes) - { - Console.WriteLine(" " + attribute.Key + " = " + attribute.Value); - } - } - } - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.IO.SystemInfo/HostsFile.cs b/!Examples/BytecodeApi.IO.SystemInfo/HostsFile.cs deleted file mode 100644 index 28f2133..0000000 --- a/!Examples/BytecodeApi.IO.SystemInfo/HostsFile.cs +++ /dev/null @@ -1,18 +0,0 @@ -using BytecodeApi.IO.SystemInfo; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Read hosts file - - foreach (HostsFileEntry entry in HostsFile.GetEntries()) - { - Console.WriteLine(entry.IPAddress + " " + entry.HostName); - } - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.IO.SystemInfo/InstalledSoftware.cs b/!Examples/BytecodeApi.IO.SystemInfo/InstalledSoftware.cs deleted file mode 100644 index 1751cc8..0000000 --- a/!Examples/BytecodeApi.IO.SystemInfo/InstalledSoftware.cs +++ /dev/null @@ -1,23 +0,0 @@ -using BytecodeApi.IO.SystemInfo; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Get list of installed software - - foreach (InstalledSoftwareInfo software in InstalledSoftware.GetEntries()) - { - Console.WriteLine(software.Name); - Console.WriteLine(" Version: " + software.Version); - Console.WriteLine(" Publisher: " + software.Publisher); - Console.WriteLine(" Installed on: " + software.InstallDate); - Console.WriteLine(" Installation path: " + software.InstallPath); - Console.WriteLine(new string('-', 50)); - } - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.IO.SystemInfo/TcpView.cs b/!Examples/BytecodeApi.IO.SystemInfo/TcpView.cs deleted file mode 100644 index d6a1caf..0000000 --- a/!Examples/BytecodeApi.IO.SystemInfo/TcpView.cs +++ /dev/null @@ -1,24 +0,0 @@ -using BytecodeApi.Extensions; -using BytecodeApi.IO.SystemInfo; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Get list of TCP & UDP connections - - foreach (TcpViewEntry entry in new TcpView(true).GetEntries()) - { - Console.Write(entry.Protocol.GetDescription() + " "); - Console.Write(entry.LocalAddress + ":" + (entry.LocalProtocolName ?? entry.LocalPort.ToString())); - Console.Write(" - "); - Console.Write(entry.RemoteAddress + ":" + (entry.RemoteProtocolName ?? entry.RemotePort.ToString())); - Console.Write(" " + entry.TcpState); - Console.WriteLine(" PID: " + entry.ProcessId); - } - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.IO.Wmi/Wmi.cs b/!Examples/BytecodeApi.IO.Wmi/Wmi.cs deleted file mode 100644 index c83f16f..0000000 --- a/!Examples/BytecodeApi.IO.Wmi/Wmi.cs +++ /dev/null @@ -1,23 +0,0 @@ -using BytecodeApi.Extensions; -using BytecodeApi.IO.Wmi; -using System; -using System.Linq; - -public static class Program -{ - [STAThread] - public static void Main() - { - // WMI query using the classes in the BytecodeApi.IO.Wmi namespace - - string[] installedAntiVirus = new WmiNamespace("SecurityCenter2") - .GetClass("AntiVirusProduct") - .GetObjects("displayName") - .Select(obj => obj.Properties["displayName"].GetValue()) - .Where(item => !item.IsNullOrEmpty()) - .ToArray(); - - // Note, that WMI is typically convenient to use, but lacks the performance that the native API offers. - // If a task can be achieved without the use of WMI, it is recommended to use the WinAPI instead. - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.IO/BinaryStream.cs b/!Examples/BytecodeApi.IO/BinaryStream.cs deleted file mode 100644 index e920998..0000000 --- a/!Examples/BytecodeApi.IO/BinaryStream.cs +++ /dev/null @@ -1,36 +0,0 @@ -using BytecodeApi.IO; -using System; -using System.IO; - -public static class Program -{ - [STAThread] - public static void Main() - { - using (MemoryStream memoryStream = new MemoryStream()) - { - // BinaryStream is a wrapper that uses both BinaryReader and BinaryWriter, based on whether the stream is readable/writable. - // This abstraction layer can read and write any default data type. - // If the stream does not support writing, the Write*() methods will throw an exception. - - using (BinaryStream binaryStream = new BinaryStream(memoryStream)) - { - // Write 3 integers - binaryStream.Write(123); - binaryStream.Write(456); - binaryStream.Write(789); - - // Seek to beginning and read 3 integers - binaryStream.BaseStream.Seek(0, SeekOrigin.Begin); - int a = binaryStream.ReadInt32(); // 123 - int b = binaryStream.ReadInt32(); // 456 - - // The BinaryStream keeps track of read & written byte count: - Console.WriteLine("Bytes read: " + binaryStream.BytesRead); - Console.WriteLine("Bytes written: " + binaryStream.BytesWritten); - } - } - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.IO/Compression.cs b/!Examples/BytecodeApi.IO/Compression.cs deleted file mode 100644 index e61e85b..0000000 --- a/!Examples/BytecodeApi.IO/Compression.cs +++ /dev/null @@ -1,31 +0,0 @@ -using BytecodeApi.Extensions; -using BytecodeApi.IO; -using BytecodeApi.Text; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Data to compress - byte[] data = new byte[100]; - Console.WriteLine("byte[] data ="); - Console.WriteLine(Wording.FormatBinary(data)); - - // Compress data using GZip - byte[] compressed = Compression.Compress(data); - Console.WriteLine("byte[] compressed ="); - Console.WriteLine(Wording.FormatBinary(compressed)); - - byte[] decompressed = Compression.Decompress(compressed); - - // Compare decompressed data with original data - if (!data.Compare(decompressed)) - { - throw new Exception("Decompressed data does not match oridinal data!?"); - } - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.IO/ProcessEx.cs b/!Examples/BytecodeApi.IO/ProcessEx.cs deleted file mode 100644 index f25c759..0000000 --- a/!Examples/BytecodeApi.IO/ProcessEx.cs +++ /dev/null @@ -1,25 +0,0 @@ -using BytecodeApi.IO; -using System; -using System.Diagnostics; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Start process and read console output - Console.WriteLine("Reading console output of inconfig.exe:"); - Console.WriteLine(); - Console.WriteLine(ProcessEx.ReadProcessOutput("ipconfig.exe")); - - // Start process, wait for it to exit and retrieve the exit code - int exitCode = ProcessEx.Execute("net.exe"); - // exit code is "1", because net.exe expects arguments. - - // Start notepad.exe with low integrity level (sandbox) - // Notepad cannot save to the disk, because it has no permission. - Process sandboxedProcess = ProcessEx.StartWithIntegrity(@"notepad.exe", ProcessIntegrityLevel.Low); - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.IO/ZipCompression.cs b/!Examples/BytecodeApi.IO/ZipCompression.cs deleted file mode 100644 index f1fcffa..0000000 --- a/!Examples/BytecodeApi.IO/ZipCompression.cs +++ /dev/null @@ -1,26 +0,0 @@ -using BytecodeApi.Data; -using BytecodeApi.IO; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - // ZipCompression can be used to create ZIP files from collections or a tree of blobs. - // The result can be stored in byte[] or directly written into a file or Stream. - - // In this example, we create a collection of blobs. ZipCompression also accepts BlobTree objects. - BlobCollection blobs = new BlobCollection(); - blobs.Add(new Blob("file1.txt", new byte[1000])); - blobs.Add(new Blob("file2.txt", new byte[2000])); - - // The result of compression is a ZIP file: - // The hierarchy of a BlobTree is mapped to directories and files. - byte[] zipFile = ZipCompression.Compress(blobs); - - // Decompress a ZIP file into a BlobTree. - // This ZIP file does not need to be created by the ZipCompression class. Any ZIP file can be decompressed into a BlobTree. - BlobTree decompressed = ZipCompression.Decompress(zipFile); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.Mathematics/ByteSize.cs b/!Examples/BytecodeApi.Mathematics/ByteSize.cs deleted file mode 100644 index ca77df3..0000000 --- a/!Examples/BytecodeApi.Mathematics/ByteSize.cs +++ /dev/null @@ -1,36 +0,0 @@ -using BytecodeApi.Mathematics; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - // The ByteSize struct represent a size, in bytes. - // There are also WPF converters to display ByteSize values in the UI. - - ByteSize a = 10000000; // 10 million bytes - - // Format automatically - Console.WriteLine(a.Format()); - - // Format with specific unit - Console.WriteLine(a.Format(ByteSizeUnit.KiloByte)); - - // Format with 3 decimals - Console.WriteLine(a.Format(ByteSizeUnit.KiloByte, 3)); - - // Use thousands separator, because the unit (KiloByte) results in a number larger than 1000 - Console.WriteLine(a.Format(ByteSizeUnit.KiloByte, 3, false, true)); - - // Get megabytes as double value - double megaBytes = a.MegaBytes; - - // Cast back to long value - long bytes = (long)a; - // or - bytes = a.Bytes; - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.Text/QuotedString.cs b/!Examples/BytecodeApi.Text/QuotedString.cs deleted file mode 100644 index a61cf95..0000000 --- a/!Examples/BytecodeApi.Text/QuotedString.cs +++ /dev/null @@ -1,17 +0,0 @@ -using BytecodeApi.Text; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - // QuotedString is a representation of a string that is quoted and escaped. - QuotedString str = "Hello, \"world\""; - - Console.WriteLine("String: " + str.OriginalString); - Console.WriteLine("Quoted: " + str.ToString()); - Console.WriteLine("Verbatim: " + str.ToVerbatimString()); - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.Text/SentenceGenerator.cs b/!Examples/BytecodeApi.Text/SentenceGenerator.cs deleted file mode 100644 index 0c0f52b..0000000 --- a/!Examples/BytecodeApi.Text/SentenceGenerator.cs +++ /dev/null @@ -1,28 +0,0 @@ -using BytecodeApi.Text; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - SentenceGenerator sentenceGenerator = new SentenceGenerator - { - MinWords = 3, // Sentence has between 3 and 10 words - MaxWords = 10, - CommaChance = .1, // 10 % of words have a "," behind them - FinishPunctuation = "...?!".ToCharArray() // 60 % ".", 20 % "?" and 20 % "!" - }; - - // SentenceGenerator is injected with a WordGenerator. - //sentenceGenerator.WordGenerator = ... - - // Generate some sentences - for (int i = 0; i < 10; i++) - { - Console.WriteLine(sentenceGenerator.Generate()); - } - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.Text/WordGenerator.cs b/!Examples/BytecodeApi.Text/WordGenerator.cs deleted file mode 100644 index 1647884..0000000 --- a/!Examples/BytecodeApi.Text/WordGenerator.cs +++ /dev/null @@ -1,26 +0,0 @@ -using BytecodeApi; -using BytecodeApi.Text; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - WordGenerator wordGenerator = new WordGenerator - { - MinLength = 4, // The word has between 4 and 9 characters - MaxLength = 9, - DoubleConsonantChance = .1, // 10 % chance of a double consonant (bb, cc, dd, ..) - DoubleVovelChance = .3 // 30 % chance of a double vovel (aa, ii, oo, ...) - }; - - // Generate some words - for (int i = 0; i < 10; i++) - { - Console.WriteLine(wordGenerator.Generate(StringCasing.CamelCase)); - } - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi.Text/Wording.cs b/!Examples/BytecodeApi.Text/Wording.cs deleted file mode 100644 index 470279f..0000000 --- a/!Examples/BytecodeApi.Text/Wording.cs +++ /dev/null @@ -1,29 +0,0 @@ -using BytecodeApi.Extensions; -using BytecodeApi.Mathematics; -using BytecodeApi.Text; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - // The Wording class manipulates strings in a linguistic fashion to create readable objects. - - Console.WriteLine("Formatted binary output:"); - Console.WriteLine(Wording.FormatBinary(MathEx.Random.NextBytes(50))); - - Console.WriteLine("Join strings, but use 'and' as last separator:"); - Console.WriteLine(Wording.JoinStrings(", ", " and ", "Apples", "Pears", "Bananas")); - Console.WriteLine(); - - Console.WriteLine("Formatted timespan:"); - Console.WriteLine(Wording.FormatTimeSpan(new TimeSpan(2, 30, 11))); // To include seconds, specify the maxElements parameter - Console.WriteLine(); - - Console.WriteLine("Wrapping at 50 characters, without overflow:"); - Console.WriteLine(); - Console.WriteLine(Wording.WrapText(TextResources.LoremIpsum, 50, false)); - Console.WriteLine(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi/ApplicationBase.cs b/!Examples/BytecodeApi/ApplicationBase.cs deleted file mode 100644 index a95a318..0000000 --- a/!Examples/BytecodeApi/ApplicationBase.cs +++ /dev/null @@ -1,49 +0,0 @@ -using BytecodeApi; -using BytecodeApi.Extensions; -using BytecodeApi.Mathematics; -using System; -using System.Linq; - -public static class Program -{ - [STAThread] - public static void Main() - { - Console.WriteLine("ApplicationBase.Path = " + ApplicationBase.Path); - Console.WriteLine("ApplicationBase.FileName = " + ApplicationBase.FileName); - Console.WriteLine("ApplicationBase.Version = " + ApplicationBase.Version); - Console.WriteLine("ApplicationBase.DebugMode = " + ApplicationBase.DebugMode); - Console.WriteLine(); - - Console.WriteLine("ApplicationBase.Process.Id = " + ApplicationBase.Process.Id); - Console.WriteLine("ApplicationBase.Process.SessionId = " + ApplicationBase.Process.SessionId); - Console.WriteLine("ApplicationBase.Process.IntegrityLevel = " + ApplicationBase.Process.IntegrityLevel); - Console.WriteLine("ApplicationBase.Process.IsElevated = " + ApplicationBase.Process.IsElevated); - Console.WriteLine("ApplicationBase.Process.ElevationType = " + ApplicationBase.Process.ElevationType); - Console.WriteLine("ApplicationBase.Process.Memory = " + new ByteSize(ApplicationBase.Process.Memory).Format()); - Console.WriteLine("ApplicationBase.Process.FrameworkVersion = " + ApplicationBase.Process.FrameworkVersion); - Console.WriteLine(); - - Console.WriteLine("ApplicationBase.Session.CurrentUser = " + ApplicationBase.Session.CurrentUser); - Console.WriteLine("ApplicationBase.Session.CurrentUserShort = " + ApplicationBase.Session.CurrentUserShort); - Console.WriteLine("ApplicationBase.Session.DomainName = " + ApplicationBase.Session.DomainName); - Console.WriteLine("ApplicationBase.Session.Workgroup = " + ApplicationBase.Session.Workgroup); - Console.WriteLine("ApplicationBase.Session.Dpi = " + ApplicationBase.Session.Dpi.Width + "x" + ApplicationBase.Session.Dpi.Height); - Console.WriteLine("ApplicationBase.Session.IsRdp = " + ApplicationBase.Session.IsRdp); - Console.WriteLine(); - - Console.WriteLine("ApplicationBase.OperatingSystem.Name = " + ApplicationBase.OperatingSystem.Name); - Console.WriteLine("ApplicationBase.OperatingSystem.InstallDate = " + ApplicationBase.OperatingSystem.InstallDate); - Console.WriteLine("ApplicationBase.OperatingSystem.InstalledAntiVirusSoftware = " + ApplicationBase.OperatingSystem.InstalledAntiVirusSoftware.AsString(", ")); - Console.WriteLine("ApplicationBase.OperatingSystem.DefaultBrowser = " + ApplicationBase.OperatingSystem.DefaultBrowser); - Console.WriteLine("ApplicationBase.OperatingSystem.FrameworkVersionNumber = " + ApplicationBase.OperatingSystem.FrameworkVersionNumber); - Console.WriteLine("ApplicationBase.OperatingSystem.FrameworkVersionName = " + ApplicationBase.OperatingSystem.FrameworkVersionName); - Console.WriteLine(); - - Console.WriteLine("ApplicationBase.Hardware.ProcessorNames = " + ApplicationBase.Hardware.ProcessorNames.Distinct().AsString(", ")); - Console.WriteLine("ApplicationBase.Hardware.Memory = " + new ByteSize(ApplicationBase.Hardware.Memory ?? 0).Format()); - Console.WriteLine("ApplicationBase.Hardware.VideoControllerName = " + ApplicationBase.Hardware.VideoControllerName); - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi/CSharp.cs b/!Examples/BytecodeApi/CSharp.cs deleted file mode 100644 index 9b651db..0000000 --- a/!Examples/BytecodeApi/CSharp.cs +++ /dev/null @@ -1,58 +0,0 @@ -using BytecodeApi; -using BytecodeApi.Mathematics; -using System; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Inline try/catch - Console.WriteLine("GetFirstName() = " + CSharp.Try(() => GetFirstName(), "my_default_value")); - - // Retry a function for 20 times - Console.WriteLine("GetLastName() = " + CSharp.Retry(() => GetLastName(), 20)); - - // Convert from one object to another using reflection - // Very useful if you have classes where most properties are equal (e.g. conversion of database model to entities) - ClassA objA = new ClassA - { - FirstName = "Bill", - LastName = "Smith" - }; - ClassB objB = CSharp.ConvertObject(objA); - - Console.ReadKey(); - } - - private static string GetFirstName() - { - // This method has a bug and throws: - throw new Exception(); - } - private static string GetLastName() - { - // This method connects to an unstable web service and sometimes throws: - - if (MathEx.Random.Next(3) == 0) - { - return "Smith"; - } - else - { - throw new Exception(); - } - } -} - -public class ClassA -{ - public string FirstName { get; set; } - public string LastName { get; set; } -} - -public class ClassB -{ - public string FirstName { get; set; } - public string LastName { get; set; } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi/CachedProperty.cs b/!Examples/BytecodeApi/CachedProperty.cs deleted file mode 100644 index d558473..0000000 --- a/!Examples/BytecodeApi/CachedProperty.cs +++ /dev/null @@ -1,32 +0,0 @@ -using BytecodeApi; -using System; -using System.Threading; - -public static class Program -{ - private static int TestBackingField = 0; - private static readonly CachedProperty MyProperty = new CachedProperty(() => - { - // getter - // This property increments its value each time the getter is called - return ++TestBackingField; - }, TimeSpan.FromSeconds(1)); - - // ^---- Timeout = 1 second; Specify null to call the getter only once. - - [STAThread] - public static void Main() - { - // CachedProperty serves as cache for values stored in memory, - // but retrieved only periodically after a timeout has been exceeded - - for (int i = 0; i < 30; i++) - { - // The actual getter is called only 1x per second as specified by the timeout property of our CachedProperty - Console.WriteLine(MyProperty.Get()); - Thread.Sleep(100); - } - - Console.ReadKey(); - } -} \ No newline at end of file diff --git a/!Examples/BytecodeApi/EnumEx.cs b/!Examples/BytecodeApi/EnumEx.cs deleted file mode 100644 index aa31393..0000000 --- a/!Examples/BytecodeApi/EnumEx.cs +++ /dev/null @@ -1,40 +0,0 @@ -using BytecodeApi; -using BytecodeApi.Extensions; -using System; -using System.Collections.Generic; -using System.ComponentModel; - -public static class Program -{ - [STAThread] - public static void Main() - { - // Get description - string mondayDescription = Day.Monday.GetDescription(); - Day? monday = EnumEx.FindValueByDescription("Mon"); - - // Get all enum values - Day[] enumValues = EnumEx.GetValues(); - - // Get all enum values with description - Dictionary enumDescriptionLookup = EnumEx.GetDescriptionLookup(); - } -} - -public enum Day -{ - [Description("Mon")] - Monday, - [Description("Tue")] - Tuesday, - [Description("Wed")] - Wednesday, - [Description("Thu")] - Thursday, - [Description("Fri")] - Friday, - [Description("Sat")] - Saturday, - [Description("Sun")] - Sunday -} \ No newline at end of file diff --git a/.gitignore b/.gitignore index be2577e..3698cbd 100644 --- a/.gitignore +++ b/.gitignore @@ -16,5 +16,4 @@ TestResults/ *~*.xlsx *~*.docx -$Build/ -$Help/ \ No newline at end of file +$Build/ \ No newline at end of file diff --git a/.nuget/PackageIcon.pdn b/.nuget/PackageIcon.pdn new file mode 100644 index 0000000000000000000000000000000000000000..347df60066fa20ad72a3e763695263b323ad88d4 GIT binary patch literal 14120 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 literal 0 HcmV?d00001 diff --git a/.nuget/PackageIcon.png b/.nuget/PackageIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..ae5749a65fcc8fcca71712377b0ac8ad050b4f3a GIT binary patch literal 5048 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 KS1(hAhy4%XlBJ&j literal 0 HcmV?d00001 diff --git a/BytecodeApi.CommandLineParser/.nuget/README.md b/BytecodeApi.CommandLineParser/.nuget/README.md new file mode 100644 index 0000000..3fe0428 --- /dev/null +++ b/BytecodeApi.CommandLineParser/.nuget/README.md @@ -0,0 +1,3 @@ +# BytecodeApi.CommandLineParser + +Library for commandline parsing and handling. \ No newline at end of file diff --git a/BytecodeApi.CommandLineParser/BytecodeApi.CommandLineParser.csproj b/BytecodeApi.CommandLineParser/BytecodeApi.CommandLineParser.csproj new file mode 100644 index 0000000..ea98de6 --- /dev/null +++ b/BytecodeApi.CommandLineParser/BytecodeApi.CommandLineParser.csproj @@ -0,0 +1,43 @@ + + + net7.0 + enable + enable + True + True + + + 3.0.0 + 3.0.0 + 3.0.0 + + + BytecodeApi.CommandLineParser + BytecodeApi.CommandLineParser + Library for commandline parsing and handling. + bytecode77 + Martin Fischer + © bytecode77, 2023. + + + BytecodeApi.CommandLineParser + commandline cli parsing cmd + https://bytecode77.com/bytecode-api + git + https://github.com/bytecode77/bytecode-api + BSD-2-Clause + .nuget\README.md + .nuget\PackageIcon.png + ../$Build + + + + + + + + + + + + \ No newline at end of file diff --git a/BytecodeApi.CommandLineParser/CommandLineParserError.cs b/BytecodeApi.CommandLineParser/CommandLineParserError.cs new file mode 100644 index 0000000..5a9f72a --- /dev/null +++ b/BytecodeApi.CommandLineParser/CommandLineParserError.cs @@ -0,0 +1,52 @@ +namespace BytecodeApi.CommandLineParser; + +/// +/// Specifies a validation source for a , if validated using the object. +/// +public enum CommandLineParserError +{ + /// + /// The exception is a general error that did not occur during validation using the object. + /// + None, + /// + /// The exception occurred in the method. + /// + OptionRequired, + /// + /// The exception occurred in the method. + /// + OptionNotDuplicate, + /// + /// The exception occurred in the method. + /// + ValueCount, + /// + /// The exception occurred in the method. + /// + MinimumValueCount, + /// + /// The exception occurred in the method. + /// + MaximumValueCount, + /// + /// The exception occurred in the method. + /// + Custom, + /// + /// The exception occurred in the method. + /// + Int32, + /// + /// The exception occurred in the method. + /// + FileExists, + /// + /// The exception occurred in the method. + /// + DirectoryExists, + /// + /// The exception occurred in the method. + /// + FileExtension +} \ No newline at end of file diff --git a/BytecodeApi.CommandLineParser/CommandLineParserException.cs b/BytecodeApi.CommandLineParser/CommandLineParserException.cs new file mode 100644 index 0000000..5b8af70 --- /dev/null +++ b/BytecodeApi.CommandLineParser/CommandLineParserException.cs @@ -0,0 +1,29 @@ +namespace BytecodeApi.CommandLineParser; + +/// +/// The exception that is thrown when commandline parsing failed or was asserted using the object. +/// +public sealed class CommandLineParserException : Exception +{ + /// + /// Gets a value that indicates what validation took place using the object. For general exceptions, is returned. + /// + public CommandLineParserError Error { get; private init; } + + /// + /// Initializes a new instance of the class. + /// + /// The message that describes the error. + public CommandLineParserException(string? message) : this(CommandLineParserError.None, message) + { + } + /// + /// Initializes a new instance of the class. + /// + /// If validated using the object, indicates what validation took place. + /// The message that describes the error. + public CommandLineParserException(CommandLineParserError error, string? message) : base(message) + { + Error = error; + } +} \ No newline at end of file diff --git a/BytecodeApi.CommandLineParser/Option.cs b/BytecodeApi.CommandLineParser/Option.cs new file mode 100644 index 0000000..ce89c93 --- /dev/null +++ b/BytecodeApi.CommandLineParser/Option.cs @@ -0,0 +1,120 @@ +using BytecodeApi.Extensions; +using System.Collections.ObjectModel; +using System.Diagnostics; + +namespace BytecodeApi.CommandLineParser; + +/// +/// Represents a commandline option, specified by possible arguments and alternatives. +/// Example: "-p 12345" and "--password 12345" +/// +[DebuggerDisplay($"{nameof(Option)}: Arguments = {{string.Join(\"|\", Arguments)}}, Alternatives = {{string.Join(\"|\", Alternatives)}}")] +public sealed class Option : IEquatable