diff options
Diffstat (limited to 'include/Uri/Uri.hpp')
-rw-r--r-- | include/Uri/Uri.hpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/include/Uri/Uri.hpp b/include/Uri/Uri.hpp new file mode 100644 index 0000000..b5f85c2 --- /dev/null +++ b/include/Uri/Uri.hpp @@ -0,0 +1,53 @@ +#ifndef URI_HPP +#define URI_HPP + +/** + * @file Uri.hpp + * + * This module declares the Uri::Uri class. + * + * © 2018 by Richard Walters + */ + +#include <memory> + +namespace Uri { + + /** + * This class represents a Uniform Resource Identifier (URI), + * as defined in RFC 3986 (https://tools.ietf.org/html/rfc3986). + */ + class Uri { + // Lifecycle management + public: + ~Uri(); + Uri(const Uri&) = delete; + Uri(Uri&&) = delete; + Uri& operator=(const Uri&) = delete; + Uri& operator=(Uri&&) = delete; + + // Public methods + public: + /** + * This is the default constructor. + */ + Uri(); + + // Private properties + private: + /** + * This is the type of structure that contains the private + * properties of the instance. It is defined in the implementation + * and declared here to ensure that it is scoped inside the class. + */ + struct Impl; + + /** + * This contains the private properties of the instance. + */ + std::unique_ptr< struct Impl > impl_; + }; + +} + +#endif /* URI_HPP */ |