Add doc/std/README.md
diff --git a/doc/std/README.md b/doc/std/README.md new file mode 100644 index 0000000..17c5a2f --- /dev/null +++ b/doc/std/README.md
@@ -0,0 +1,34 @@ +# Standard Library + +Wuffs' standard library consists of multiple packages, each implementing a +particular file format or algorithm. Those packages can be grouped into several +categories: + +- [Compression Decoders](/doc/std/compression-decoders.md). +- [Hashers](/doc/std/hashers.md). +- [Image Decoders](/doc/std/image-decoders.md). + +The general pattern is that a package `foo` (e.g. `jpeg`, `png`) contains a +struct `bar` (e.g. `hasher`, `decoder`, etc) that implements a +package-independent interface. For example, every compression decoder struct +would have a `decode_io_writer` method. In C, this would be invoked as + +``` +// Allocate and initialize the struct. +wuffs_foo__decoder* dec = etc; + +// Do the work. Error checking is not shown, for brevity. +const char* status = wuffs_foo__decoder__decode_io_writer(dec, etc); +``` + +When that C library is used as C++, that last line can be shortened: + +``` +const char* status = dec->decode_io_writer(etc); +``` + +See also the [glossary](/doc/glossary.md), as well as the notes on: + +- [Coroutines](/doc/note/coroutines.md). +- [Initialization](/doc/note/initialization.md). +- [Statuses](/doc/note/statuses.md).
diff --git a/doc/std/hashers.md b/doc/std/hashers.md index c64e00f..28c5613 100644 --- a/doc/std/hashers.md +++ b/doc/std/hashers.md
@@ -25,3 +25,8 @@ ## Examples - [example/crc32](/example/crc32) + + +--- + +See also the general remarks on [Wuffs' standard library](/doc/std/README.md).