Qt 4.8
qt-4.8.6
src
xmlpatterns
functions
qdatetimefn.cpp
Go to the documentation of this file.
1
/****************************************************************************
2
**
3
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
4
** Contact: http://www.qt-project.org/legal
5
**
6
** This file is part of the QtXmlPatterns module of the Qt Toolkit.
7
**
8
** $QT_BEGIN_LICENSE:LGPL$
9
** Commercial License Usage
10
** Licensees holding valid commercial Qt licenses may use this file in
11
** accordance with the commercial license agreement provided with the
12
** Software or, alternatively, in accordance with the terms contained in
13
** a written agreement between you and Digia. For licensing terms and
14
** conditions see http://qt.digia.com/licensing. For further information
15
** use the contact form at http://qt.digia.com/contact-us.
16
**
17
** GNU Lesser General Public License Usage
18
** Alternatively, this file may be used under the terms of the GNU Lesser
19
** General Public License version 2.1 as published by the Free Software
20
** Foundation and appearing in the file LICENSE.LGPL included in the
21
** packaging of this file. Please review the following information to
22
** ensure the GNU Lesser General Public License version 2.1 requirements
23
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24
**
25
** In addition, as a special exception, Digia gives you certain additional
26
** rights. These rights are described in the Digia Qt LGPL Exception
27
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28
**
29
** GNU General Public License Usage
30
** Alternatively, this file may be used under the terms of the GNU
31
** General Public License version 3.0 as published by the Free Software
32
** Foundation and appearing in the file LICENSE.GPL included in the
33
** packaging of this file. Please review the following information to
34
** ensure the GNU General Public License version 3.0 requirements will be
35
** met: http://www.gnu.org/copyleft/gpl.html.
36
**
37
**
38
** $QT_END_LICENSE$
39
**
40
****************************************************************************/
41
42
#include "
qatomiccomparator_p.h
"
43
#include "
qcommonvalues_p.h
"
44
#include "
qschemadatetime_p.h
"
45
#include "
qdaytimeduration_p.h
"
46
#include "
qdecimal_p.h
"
47
#include "
qinteger_p.h
"
48
#include "
qpatternistlocale_p.h
"
49
50
#include "
qdatetimefn_p.h
"
51
52
QT_BEGIN_NAMESPACE
53
54
using namespace
QPatternist
;
55
56
Item
DateTimeFN::evaluateSingleton
(
const
DynamicContext::Ptr
&context)
const
57
{
58
const
Item
di(
m_operands
.
first
()->
evaluateSingleton
(context));
59
if
(!di)
60
return
Item
();
61
62
const
Item
ti(
m_operands
.
last
()->
evaluateSingleton
(context));
63
if
(!ti)
64
return
Item
();
65
66
QDateTime
date(di.as<
AbstractDateTime
>()->
toDateTime
());
67
Q_ASSERT
(date.isValid());
68
QDateTime
time(ti.as<
AbstractDateTime
>()->
toDateTime
());
69
Q_ASSERT
(time.isValid());
70
71
if
(date.timeSpec() == time.timeSpec() ||
/* Identical timezone properties. */
72
time.timeSpec() ==
Qt::LocalTime
)
/* time has no timezone, but date do. */
73
{
74
date.setTime(time.time());
75
Q_ASSERT
(date.isValid());
76
return
DateTime::fromDateTime
(date);
77
}
78
else
if
(date.timeSpec() ==
Qt::LocalTime
)
/* date has no timezone, but time do. */
79
{
80
time.setDate(date.date());
81
Q_ASSERT
(time.isValid());
82
return
DateTime::fromDateTime
(time);
83
}
84
else
85
{
86
context->
error
(QtXmlPatterns::tr(
"If both values have zone offsets, "
87
"they must have the same zone offset. "
88
"%1 and %2 are not the same."
)
89
.arg(
formatData
(di.stringValue()),
90
formatData
(di.stringValue())),
91
ReportContext::FORG0008
,
this
);
92
return
Item
();
/* Silence GCC warning. */
93
}
94
}
95
96
QT_END_NAMESPACE
QPatternist::UnlimitedContainer::m_operands
Expression::List m_operands
Definition:
qunlimitedcontainer_p.h:139
QT_END_NAMESPACE
#define QT_END_NAMESPACE
This macro expands to.
Definition:
qglobal.h:90
QPatternist::AbstractDateTime
Base class for classes implementing values related to time, date or both.
Definition:
qabstractdatetime_p.h:80
qcommonvalues_p.h
QExplicitlySharedDataPointer< DynamicContext >
QPatternist::DateTime::fromDateTime
static DateTime::Ptr fromDateTime(const QDateTime &dt)
Definition:
qschemadatetime.cpp:95
qatomiccomparator_p.h
Q_ASSERT
#define Q_ASSERT(cond)
Definition:
qglobal.h:1823
qschemadatetime_p.h
Contains class DateTime. This file was originally called qdatetime_p.h, but various build systems can...
qdecimal_p.h
QPatternist::DateTimeFN::evaluateSingleton
virtual Item evaluateSingleton(const DynamicContext::Ptr &context) const
Definition:
qdatetimefn.cpp:56
qdaytimeduration_p.h
QT_BEGIN_NAMESPACE
#define QT_BEGIN_NAMESPACE
This macro expands to.
Definition:
qglobal.h:89
QPatternist::ReportContext::error
void error(const QString &message, const ReportContext::ErrorCode errorCode, const QSourceLocation &sourceLocation)
Definition:
qreportcontext.cpp:81
qinteger_p.h
QPatternist
The namespace for the internal API of QtXmlPatterns.
Definition:
qacceliterators_p.h:62
QPatternist::AbstractDateTime::toDateTime
const QDateTime & toDateTime() const
Definition:
qabstractdatetime_p.h:97
QPatternist::formatData
static QString formatData(const QString &data)
Definition:
qpatternistlocale_p.h:228
QList::first
T & first()
Returns a reference to the first item in the list.
Definition:
qlist.h:282
Qt::LocalTime
Definition:
qnamespace.h:1405
qpatternistlocale_p.h
Contains functions used for formatting arguments, such as keywords and paths, in translated strings...
QDateTime
The QDateTime class provides date and time functions.
Definition:
qdatetime.h:216
QPatternist::Item
Represents an item in the XPath 2.0 Data Model.
Definition:
qitem_p.h:182
qdatetimefn_p.h
QList::last
T & last()
Returns a reference to the last item in the list.
Definition:
qlist.h:284
QPatternist::ReportContext::FORG0008
Definition:
qreportcontext_p.h:901
QPatternist::Expression::evaluateSingleton
virtual Item evaluateSingleton(const DynamicContext::Ptr &context) const
Definition:
qexpression.cpp:310
Qt 4.8 Source Code Browser