/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtXmlPatterns module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 3 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL3 included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 3 requirements ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 2.0 or (at your option) the GNU General ** Public license version 3 or any later version approved by the KDE Free ** Qt Foundation. The licenses are as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-2.0.html and ** https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ // // W A R N I N G // ------------- // // This file is not part of the Qt API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. #ifndef Patternist_Locale_H #define Patternist_Locale_H #include #include #include #include #include #include QT_BEGIN_NAMESPACE /** * @file * @short Contains functions used for formatting arguments, such as keywords and paths, * in translated strings. */ namespace QPatternist { /** * @short Provides a translation context & functions for the Qt XML Patterns * module. * * This class is not supposed to be instantiated. */ class QtXmlPatterns { public: Q_DECLARE_TR_FUNCTIONS(QtXmlPatterns) private: /** * No implementation is provided, this class is not supposed to be * instantiated. */ inline QtXmlPatterns(); Q_DISABLE_COPY(QtXmlPatterns) }; // don't make this function static, otherwise xlC 7 cannot find it inline QString formatKeyword(const QString &keyword) { return QLatin1String("") + escape(keyword) + QLatin1String(""); } /** * @overload */ static inline QString formatKeyword(const QStringRef &keyword) { return formatKeyword(keyword.toString()); } static inline QString formatKeyword(const char *const keyword) { return formatKeyword(QLatin1String(keyword)); } static inline QString formatKeyword(const QChar keyword) { return formatKeyword(QString(keyword)); } /** * @short Formats element name. */ static inline QString formatElement(const QString &element) { // for the moment we forward to formatKeyword, that will change later return formatKeyword(element); } /** * @overload */ static inline QString formatElement(const char *const element) { return formatElement(QLatin1String(element)); } /** * @short Formats attribute name. */ static inline QString formatAttribute(const QString &attribute) { // for the moment we forward to formatKeyword, that will change later return formatKeyword(attribute); } /** * @overload */ static inline QString formatAttribute(const char *const attribute) { return formatAttribute(QLatin1String(attribute)); } /** * @short Formats ItemType and SequenceType. * * This function is not declared static, because the compiler on target * aix-xlc-64 won't accept it. */ template inline QString formatType(const NamePool::Ptr &np, const T &type) { Q_ASSERT(type); return QLatin1String("") + escape(type->displayName(np)) + QLatin1String(""); } /** * @short Formats name of any type. */ static inline QString formatType(const NamePool::Ptr &np, const QXmlName &name) { return QLatin1String("") + escape(np->displayName(name)) + QLatin1String(""); } /** * @short Formats Cardinality. */ static inline QString formatType(const Cardinality &type) { return QLatin1String("") + escape(type.displayName(Cardinality::IncludeExplanation)) + QLatin1String(""); } /** * @short Formats @p uri as a path to a resource, typically it's a filename * or a URI. */ static inline QString formatResourcePath(const QUrl &uri) { const QString normalizedURI(escape(uri.toString(QUrl::RemovePassword))); return QLatin1String("") + normalizedURI + QLatin1String(""); } /** * @short Formats @p uri for display. * * @note It's not guaranteed that URIs being formatted are valid. That can * be an arbitrary string. */ static inline QString formatURI(const QUrl &uri) { return QLatin1String("") + escape(uri.toString(QUrl::RemovePassword)) + QLatin1String(""); } /** * @short Formats @p uri, that's considered to be a URI, for display. * * @p uri does not have to be a valid QUrl or valid instance of @c * xs:anyURI. */ static inline QString formatURI(const QString &uri) { const QUrl realURI(uri); return formatURI(realURI); } static inline QString formatData(const QString &data) { return QLatin1String("") + escape(data) + QLatin1String(""); } /** * This is an overload, provided for convenience. */ static inline QString formatData(const xsInteger data) { return formatData(QString::number(data)); } /** * This is an overload, provided for convenience. */ static inline QString formatData(const char *const data) { return formatData(QLatin1String(data)); } /** * This is an overload, provided for convenience. */ static inline QString formatData(const QLatin1Char &data) { return formatData(QString(data)); } /** * Formats an arbitrary expression, such as a regular expression * or XQuery query. */ static inline QString formatExpression(const QString &expr) { return QLatin1String("") + escape(expr) + QLatin1String(""); } } #ifdef Q_NO_TYPESAFE_FLAGS #error "Patternist does not compile with Q_NO_TYPESAFE_FLAGS set, because the code uses negative enum values. qglobal.h has typedef uint Flags." #endif #ifdef QT_NO_EXCEPTIONS #error "Patternist uses exceptions and cannot be built without." #endif QT_END_NAMESPACE #endif