== Requirements ==
 (1) URI parser fully conforming to the
     latest URI RFC. Currently this is RFC 3986:
     https://datatracker.ietf.org/doc/html/rfc3986

 (2) Based on an LL(1) grammar, at least mainly.
     Not using a jump table but one function per
     rule instead.

 (3) Library licensed under "New BSD license".
     https://opensource.org/license/BSD-2-Clause
     Test suite code licensed under LGPL.
     https://opensource.org/license/lgpl-3-0

 (4) Written in ANSI/ISO C.

 (5) Portable. Must compile with GCC, MinGW,
     Visual Studio 200[35].

 (6) "OOP-C" -> thread safe, no shared globals
     between two parser "instances"

 (7) Support for <char> and <wchar_t> without internal
     conversion. Two versions of all functions
     from the public interface.

 (8) Doxygen Code documentation at least for all
     interface functions and structures.
     https://www.doxygen.nl/

 (9) Sun Java code conventions for all C/C++ code.
     http://java.sun.com/docs/codeconv/

(10) #include "xxx" for files in same folder.
     #include <xxx> for files from include folders.

(11) Use GoogleTest for unit testing.
     https://github.com/google/googletest

(12) Implement algorithm for reference resolution

(13) Implement algorithm for normalization and
     comparison

== Optional goals ==
 (A) C++ Wrapper classes (uriparser++?)
