6.2 KiB
Coding
Contributing with code to DiscImageChef has three very simple rules:
- Use same style as currently used. In a nutshell:
- Tabs instead of spaces
- Brackets in separate lines
- UNIX line endings
- Do not separate parenthesis,
- Indent every code block (for, foreach, while, if, switch, case)
- Do not modify the interfaces. If you need or want to, comment in an issue how and why you want to change it and we'll discuss it. Same applies for creating new interfaces.
- Everything has a place, a module and an interface. Following is the list of interfaces.
- DiscImageChef uses C# 7 language features (inline declaration, Tuples, etc.) so it can only be compiled with VisualStudio 2017 or higher, Xamarin Studio 7 or higher, or MonoDevelop 7 or higher.
Claunia.RsrcFork
- License: MIT
This library includes code for handling Mac OS resource forks, and decoding them, so any code relating to Mac OS resource forks should be added here.
Claunia.Encoding
- License: MIT
This library includes code for converting codepages not supported by .NET, like those used by ancient operating systems, to/from UTF-8.
plist-cil
- License: MIT
This library includes code for handling Apple property lists.
SharpCompress
- License: MIT
This library includes code for handling compression algorithms and compressed archives. Any need you have of compression or decompression should be handled with this library, and any new algorithm should be added here.
DiscImageChef
- License: GPL
This module contains the command line interface and core code. In the future the core code will be separated from the CLI and a GUI will be added.
DiscImageChef.Checksums
- License: LGPL
This module contains the checksum, hashing and error correction algorithms.
DiscImageChef.Checksums
- License: LGPL
This module contains structs and enumerations needed by more than one of the other modules.
DiscImageChef.Decoders
- License: LGPL
This module contains internal disk, drive and protocol structures as well as code to marshal, decode and print them.
DiscImageChef.Devices
- License: LGPL
This module contains code to talk with hardware devices in different platforms.
Each platform has lowlevel calls in its own folder, and each device protocol has highlevel calls in its own folder. Device commands are separated by protocol standard, or vendor name.
DiscImageChef.DiscImages
- License: LGPL
This module provides reading capabilities for the disk/disc images, one per file.
DiscImageChef.Filesystems
- License: LGPL
This module provides the filesystem support. If only identification is implemented a single file should be used. For full read-only support, a folder should be used.
DiscImageChef.Filters
- License: LGPL
A filter is a modification of the data before it can be passed to the disk image module (compression, fork union, etc), and this module provides support for them.
DiscImageChef.Helpers
- License: LGPL
This module contains a collection of helpers for array manipulation, big-endian marshalling, datetime conversion, hexadecimal printing, string manipulation and byte swapping.
DiscImageChef.Interop
- License: MIT
This module contains calls to the underlying operating system. Currently only OS detection is needed.
DiscImageChef.Metadata
- License: LGPL
This module contains handling of CICM XML metadata, media types and dimensions.
DiscImageChef.Partitions
- License: LGPL
This module contains code for reading partition schemes.
DiscImageChef.Settings
- License: LGPL
This module contains code for handling DiscImageChef settings.