diff options
Diffstat (limited to 'depends/libnbtplusplus/PRD.md')
m--------- | depends/libnbtplusplus | 0 | ||||
-rw-r--r-- | depends/libnbtplusplus/PRD.md | 60 |
2 files changed, 0 insertions, 60 deletions
diff --git a/depends/libnbtplusplus b/depends/libnbtplusplus new file mode 160000 +Subproject 9d17b0a9b93e684a5ac6cac8f70d9a7909a877c diff --git a/depends/libnbtplusplus/PRD.md b/depends/libnbtplusplus/PRD.md deleted file mode 100644 index f7b46f1a..00000000 --- a/depends/libnbtplusplus/PRD.md +++ /dev/null @@ -1,60 +0,0 @@ -# libnbt++2 Product Requirements Document - -### Purpose -Provide a C++ interface for working with NBT data, particularly originating -from Minecraft. - -### Scope -External Minecraft utilities that read or manipulate parts of savefiles, -such as: -- (Graphical) NBT editors -- Inventory editors -- Tools for reading or changing world metadata -- Map editors and visualizers - -### Definitions, Acronyms and Abbreviations -- **libnbt++1:** The predecessor of libnbt++2. -- **Minecraft:** A sandbox voxel world game written in Java, developed by - Mojang. -- **Mojang's implementation:** The NBT library written in Java that Mojang - uses in Minecraft. -- **NBT:** Named Binary Tag. A binary serialization format used by Minecraft. -- **Tag:** A data unit in NBT. Can be a number, string, array, list or - compound. - -### Product Functions -- /RF10/ Reading and writing NBT data files/streams with or without - compression. -- /RF20/ Representing NBT data in memory and allowing programs to read or - manipulate it in all the ways that Mojang's implementation and libnbt++1 - provide. -- /RF30/ A shorter syntax than in libnbt++1 and preferrably also Mojang's - implementation. -- /RF35/ Typesafe operations (no possibly unwanted implicit casts), in case - of incompatible types exceptions should be thrown. -- /RF40/ The need for insecure operations and manual memory management should - be minimized; references and `std::unique_ptr` should be preferred before - raw pointers. -- /RF55/ A wrapper for tags that provides syntactic sugar is preferred - before raw `std::unique_ptr` values. -- /RF50/ Move semantics are preferred before copy semantics. -- /RF55/ Copying tags should be possible, but only in an explicit manner. -- /RF60/ Checked conversions are preferred, unchecked conversions may be - possible but discouraged. - -### Product Performance -- /RP10/ All operations on (not too large) NBT data should not be slower - than their counterparts in Mojang's implementation. -- /RP20/ The library must be able to handle all possible NBT data that - Mojang's implementation can create and handle. -- /RP30/ Often used operations on large Lists, Compounds and Arrays must - be of at most O(log n) time complexity if reasonable. Other operations - should be at most O(n). - -### Quality Requirements -- Functionality: good -- Reliability: normal -- Usability: very good -- Efficiency: good -- Changeability: normal -- Transferability: normal |