diff options
| author | Tavmjong Bah <tavmjong@free.fr> | 2018-01-30 08:33:01 +0000 |
|---|---|---|
| committer | Tavmjong Bah <tavmjong@free.fr> | 2018-01-30 08:33:01 +0000 |
| commit | 267299811df952d08324a39008f52c19641de9e0 (patch) | |
| tree | 28fef736a52cb7a72119d119be8eb663ad20a77f /src/object/uri.h | |
| parent | Translations: update inkscape.pot (diff) | |
| download | inkscape-267299811df952d08324a39008f52c19641de9e0.tar.gz inkscape-267299811df952d08324a39008f52c19641de9e0.zip | |
Move classes derived from SPObject to own directory.
A lot of header clean-up.
Diffstat (limited to 'src/object/uri.h')
| -rw-r--r-- | src/object/uri.h | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/src/object/uri.h b/src/object/uri.h new file mode 100644 index 000000000..f0b59780e --- /dev/null +++ b/src/object/uri.h @@ -0,0 +1,164 @@ +/* + * Authors: + * MenTaLguY <mental@rydia.net> + * Jon A. Cruz <jon@joncruz.org> + * + * Copyright (C) 2003 MenTaLguY + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifndef INKSCAPE_URI_H +#define INKSCAPE_URI_H + +#include <exception> +#include <libxml/uri.h> +#include <string> + +namespace Inkscape { + +/** + * Represents an URI as per RFC 2396. + */ +class URI { +public: + + /* Blank constructor */ + URI(); + + /** + * Copy constructor. + */ + URI(URI const &uri); + + /** + * Constructor from a C-style ASCII string. + * + * @param preformed Properly quoted C-style string to be represented. + */ + explicit URI(char const *preformed); + + /** + * Destructor. + */ + ~URI(); + + /** + * Determines if the URI represented is an 'opaque' URI. + * + * @return \c true if the URI is opaque, \c false if hierarchial. + */ + bool isOpaque() const { return _impl->isOpaque(); } + + /** + * Determines if the URI represented is 'relative' as per RFC 2396. + * + * Relative URI references are distinguished by not beginning with a + * scheme name. + * + * @return \c true if the URI is relative, \c false if it is absolute. + */ + bool isRelative() const { return _impl->isRelative(); } + + /** + * Determines if the relative URI represented is a 'net-path' as per RFC 2396. + * + * A net-path is one that starts with "\\". + * + * @return \c true if the URI is relative and a net-path, \c false otherwise. + */ + bool isNetPath() const { return _impl->isNetPath(); } + + /** + * Determines if the relative URI represented is a 'relative-path' as per RFC 2396. + * + * A relative-path is one that starts with no slashes. + * + * @return \c true if the URI is relative and a relative-path, \c false otherwise. + */ + bool isRelativePath() const { return _impl->isRelativePath(); } + + /** + * Determines if the relative URI represented is a 'absolute-path' as per RFC 2396. + * + * An absolute-path is one that starts with a single "\". + * + * @return \c true if the URI is relative and an absolute-path, \c false otherwise. + */ + bool isAbsolutePath() const { return _impl->isAbsolutePath(); } + + const char *getScheme() const { return _impl->getScheme(); } + + const char *getPath() const { return _impl->getPath(); } + + const char *getQuery() const { return _impl->getQuery(); } + + const char *getFragment() const { return _impl->getFragment(); } + + const char *getOpaque() const { return _impl->getOpaque(); } + + static URI fromUtf8( char const* path ); + + static URI from_native_filename(char const *path); + + static char *to_native_filename(char const* uri); + + const std::string getFullPath(std::string const &base) const; + + char *toNativeFilename() const; + + /** + * Returns a glib string version of this URI. + * + * The returned string must be freed with \c g_free(). + * + * @return a glib string version of this URI. + */ + char *toString() const { return _impl->toString(); } + + /** + * Assignment operator. + */ + URI &operator=(URI const &uri); + +private: + class Impl { + public: + static Impl *create(xmlURIPtr uri); + void reference(); + void unreference(); + + bool isOpaque() const; + bool isRelative() const; + bool isNetPath() const; + bool isRelativePath() const; + bool isAbsolutePath() const; + const char *getScheme() const; + const char *getPath() const; + const char *getQuery() const; + const char *getFragment() const; + const char *getOpaque() const; + char *toString() const; + private: + Impl(xmlURIPtr uri); + ~Impl(); + int _refcount; + xmlURIPtr _uri; + }; + Impl *_impl; +}; + +} /* namespace Inkscape */ + +#endif + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : |
