aboutsummaryrefslogtreecommitdiff
path: root/include/Uri
diff options
context:
space:
mode:
authorRichard Walters <rwalters@digitalstirling.com>2018-06-02 19:44:09 -0700
committerRichard Walters <rwalters@digitalstirling.com>2018-06-02 19:44:09 -0700
commit5e69673563dd72f23dabc1f6d86ad684710b23bb (patch)
tree43471032352a770c7d7eb4aff05a8c00c37d9184 /include/Uri
Initial Revision.
Diffstat (limited to 'include/Uri')
-rw-r--r--include/Uri/Uri.hpp53
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 */