Maintainer C++ Namespace Notes
******************************

Namespaces have been employed to help organize source and push all private
symbols (those which are not part of the public C API) to a location
that is unlikely to be accidentally used by anyone. It also virtually
eliminates any chance that private impl symbols will cause symbol collisions
at compile or link-time.

The global namespace is used by C API which generally prefixes all
of its symobls with MP4 to avoid collisions. This space is used by
src/mp4.cpp and include/mp4v2/mp4v2.h . A few exceptions may exist where
additional API is exported from some differently-implemented code.

The rest of the codebase is tucked into various child-namespaces of
the project's top-level 'mp4v2' namespace. The top-level namespace
is reserved for this project, and unless someone branches our codebase
and ignores their moral responsibility to rename their root namespace,
we should neatly avoid symbol collisions. Code external to the project
should never use any symbols which reside in mp4v2.

The namespace 'mp4v2::platform' is private and used for code which abstracts
various plaform differences or implements missing features.

The namespace 'mp4v2::impl' is a private namespace for the main
implementation of libmp4v2. This namespace generally depends on
mp4v2::platform .

The namespace 'mp4v2::util' is a private namespace which adds
functionality for use with libutil and util/ command-line tools. The
positioning is a little more complicated in that it has symbols which
are exported from libmp4v2, which needs full access to mp4v2::impl
hidden symbols. Then libutil itself adds to the same namespace, but
because libutil does not require direct access to mp4v2::impl hidden
symbols it is a separate static library. And finally, the util/ tools
themselves use the namespace for implementation convenience.

Nested (child) namespaces of those listed above are used for further
organization when applicable.

Further documentation is available in the API Reference;
see Namespaces section.
