Skip to content
Permalink
Browse files

Merge pull request #7793 from m-kuhn/vectorlayerinclude

Only include qgsvectorlayer.h where required
  • Loading branch information
m-kuhn committed Sep 5, 2018
2 parents f38400d + 4445c38 commit 4b411e0d1af887a0abba4030899a219d6d07317d
Showing with 199 additions and 93 deletions.
  1. +1 −1 .ci/travis/code_layout/script.sh
  2. +1 −0 python/core/auto_generated/layout/qgslayoutreportcontext.sip.in
  3. +1 −0 python/core/auto_generated/qgsjsonutils.sip.in
  4. +1 −0 python/core/auto_generated/qgsvectorlayerundopassthroughcommand.sip.in
  5. +2 −0 python/gui/auto_generated/qgsfieldvalueslineedit.sip.in
  6. +1 −0 python/gui/auto_generated/qgsnewauxiliarylayerdialog.sip.in
  7. +1 −0 src/analysis/processing/qgsalgorithmextractbylocation.cpp
  8. +1 −0 src/analysis/processing/qgsalgorithmimportphotos.cpp
  9. +1 −0 src/analysis/processing/qgsalgorithmmergevector.cpp
  10. +1 −0 src/analysis/processing/qgsalgorithmpackage.cpp
  11. +1 −0 src/analysis/processing/qgsalgorithmsaveselectedfeatures.cpp
  12. +1 −0 src/analysis/vector/geometry_checker/qgsgeometrycheck.cpp
  13. +0 −1 src/analysis/vector/geometry_checker/qgsgeometrycheck.h
  14. +1 −0 src/analysis/vector/geometry_checker/qgsgeometrychecker.cpp
  15. +18 −1 src/analysis/vector/geometry_checker/qgsgeometrycheckerutils.cpp
  16. +3 −4 src/analysis/vector/geometry_checker/qgsgeometrycheckerutils.h
  17. +1 −0 src/analysis/vector/geometry_checker/qgsgeometrycontainedcheck.cpp
  18. +1 −0 src/analysis/vector/geometry_checker/qgsgeometrycontainedcheck.h
  19. +1 −0 src/analysis/vector/geometry_checker/qgsgeometrydanglecheck.cpp
  20. +1 −0 src/analysis/vector/geometry_checker/qgsgeometryduplicatecheck.cpp
  21. +1 −1 src/analysis/vector/geometry_checker/qgsgeometryfollowboundariescheck.cpp
  22. +2 −0 src/analysis/vector/geometry_checker/qgsgeometrygapcheck.cpp
  23. +1 −0 src/analysis/vector/geometry_checker/qgsgeometrylineintersectioncheck.cpp
  24. +1 −0 src/analysis/vector/geometry_checker/qgsgeometryoverlapcheck.h
  25. +1 −0 src/app/layout/qgslayoutmapgridwidget.cpp
  26. +1 −0 src/app/layout/qgslayoutpagepropertieswidget.cpp
  27. +1 −0 src/app/layout/qgslayoutpolygonwidget.cpp
  28. +1 −0 src/app/layout/qgslayoutpolylinewidget.cpp
  29. +1 −0 src/app/layout/qgslayoutshapewidget.cpp
  30. +0 −1 src/app/qgsattributesformproperties.h
  31. +1 −0 src/app/qgslayercapabilitiesmodel.cpp
  32. +0 −1 src/app/qgsloadstylefromdbdialog.h
  33. +2 −1 src/app/qgsmaptoolselectutils.h
  34. +1 −0 src/app/qgssourcefieldsproperties.cpp
  35. +0 −1 src/app/qgssourcefieldsproperties.h
  36. +2 −0 src/app/qgsstatisticalsummarydockwidget.h
  37. +0 −1 src/app/qgsvectorlayerproperties.h
  38. +3 −0 src/core/expression/qgsexpressionutils.cpp
  39. +1 −2 src/core/expression/qgsexpressionutils.h
  40. +1 −0 src/core/layout/qgsabstractreportsection.cpp
  41. +1 −0 src/core/layout/qgscompositionconverter.cpp
  42. +1 −0 src/core/layout/qgslayout.cpp
  43. +3 −0 src/core/layout/qgslayoutatlas.cpp
  44. +1 −0 src/core/layout/qgslayoutexporter.h
  45. +2 −0 src/core/layout/qgslayoutitemmap.cpp
  46. +2 −0 src/core/layout/qgslayoutitemregistry.cpp
  47. +1 −0 src/core/layout/qgslayoutmultiframeundocommand.cpp
  48. +1 −0 src/core/layout/qgslayoutobject.cpp
  49. +1 −0 src/core/layout/qgslayoutreportcontext.cpp
  50. +3 −1 src/core/layout/qgslayoutreportcontext.h
  51. +1 −0 src/core/layout/qgsreportsectionfieldgroup.h
  52. +2 −0 src/core/processing/models/qgsprocessingmodelalgorithm.cpp
  53. +2 −0 src/core/processing/qgsprocessingparameters.cpp
  54. +1 −0 src/core/processing/qgsprocessingutils.cpp
  55. +2 −1 src/core/processing/qgsprocessingutils.h
  56. +1 −0 src/core/qgsauxiliarystorage.h
  57. +1 −0 src/core/qgscachedfeatureiterator.cpp
  58. +1 −0 src/core/qgsfeaturefiltermodel.cpp
  59. +0 −1 src/core/qgsfeaturefiltermodel.h
  60. +0 −1 src/core/qgsfeaturefiltermodel_p.h
  61. +2 −1 src/core/qgsjsonutils.h
  62. +1 −0 src/core/qgsofflineediting.cpp
  63. +0 −1 src/core/qgsofflineediting.h
  64. +1 −0 src/core/qgsogcutils.cpp
  65. +1 −1 src/core/qgsogcutils.h
  66. +1 −1 src/core/qgsproject.h
  67. +0 −1 src/core/qgsproxyprogresstask.h
  68. +0 −1 src/core/qgsrelation_p.h
  69. +1 −1 src/core/qgsvectorfilewriter.h
  70. +0 −1 src/core/qgsvectorfilewritertask.h
  71. +0 −1 src/core/qgsvectorlayer.h
  72. +1 −0 src/core/qgsvectorlayercache.cpp
  73. +6 −2 src/core/qgsvectorlayercache.h
  74. +1 −0 src/core/qgsvectorlayereditutils.cpp
  75. +1 −1 src/core/qgsvectorlayereditutils.h
  76. +2 −0 src/core/qgsvectorlayerfeaturecounter.cpp
  77. +0 −1 src/core/qgsvectorlayerfeaturecounter.h
  78. +1 −0 src/core/qgsvectorlayerjoinbuffer.h
  79. +1 −0 src/core/qgsvectorlayerjoininfo.cpp
  80. +0 −1 src/core/qgsvectorlayerref.h
  81. +0 −1 src/core/qgsvectorlayerundocommand.h
  82. +2 −0 src/core/qgsvectorlayerundopassthroughcommand.h
  83. +1 −0 src/core/qgsvectorlayerutils.cpp
  84. +0 −1 src/core/qgsvectorlayerutils.h
  85. +1 −0 src/core/qgsvirtuallayertask.cpp
  86. +1 −1 src/core/qgsvirtuallayertask.h
  87. +0 −1 src/gui/attributetable/qgsattributetablemodel.h
  88. +1 −1 src/gui/qgsattributeeditorcontext.h
  89. +1 −0 src/gui/qgscurveeditorwidget.cpp
  90. +40 −0 src/gui/qgsfieldvalueslineedit.cpp
  91. +6 −33 src/gui/qgsfieldvalueslineedit.h
  92. +0 −1 src/gui/qgsnewauxiliaryfielddialog.h
  93. +2 −1 src/gui/qgsnewauxiliarylayerdialog.h
  94. +1 −0 src/plugins/evis/eventbrowser/evisgenericeventbrowsergui.cpp
  95. +0 −1 src/plugins/evis/eventbrowser/evisgenericeventbrowsergui.h
  96. +1 −0 src/plugins/geometry_checker/qgsgeometrycheckerfixsummarydialog.cpp
  97. +0 −1 src/plugins/globe/featuresource/qgsglobefeaturecursor.h
  98. +0 −1 src/plugins/globe/featuresource/qgsglobefeatureutils.h
  99. +1 −0 src/plugins/gps_importer/qgsgpsplugingui.cpp
  100. +2 −1 src/plugins/gps_importer/qgsgpsplugingui.h
  101. +2 −1 src/plugins/grass/qgsgrassplugin.h
  102. +0 −1 src/plugins/topology/checkDock.h
  103. +1 −0 src/plugins/topology/dockModel.cpp
  104. +0 −1 src/plugins/topology/rulesDialog.h
  105. +1 −0 src/plugins/topology/topolError.cpp
  106. +2 −1 src/plugins/topology/topolError.h
  107. +0 −1 src/plugins/topology/topolTest.h
  108. +2 −0 src/providers/virtual/qgsvirtuallayerqueryparser.cpp
  109. +2 −1 src/providers/virtual/qgsvirtuallayerqueryparser.h
  110. +0 −1 src/quickgui/attributes/qgsquickattributemodel.h
  111. +4 −0 src/server/qgsserverinterfaceimpl.cpp
  112. +2 −1 src/server/qgsserverinterfaceimpl.h
  113. +0 −1 src/server/qgsserverprojectutils.h
  114. +0 −1 src/server/services/wfs/qgswfsdescribefeaturetype.h
  115. +1 −0 src/server/services/wfs/qgswfsutils.cpp
  116. +1 −0 src/server/services/wms/qgswmsgetcapabilities.cpp
  117. +1 −0 tests/src/analysis/testqgsprocessing.cpp
  118. +1 −0 tests/src/analysis/testqgsprocessingalgs.cpp
  119. +0 −1 tests/src/app/testqgsmaptoolutils.h
  120. +2 −0 tests/src/core/testqgslayoutitem.cpp
  121. +2 −0 tests/src/core/testqgslayoututils.cpp
  122. +7 −5 tests/src/core/testqgsvectorlayercache.cpp
  123. +1 −0 tests/src/core/testqgsvectorlayerutils.cpp
@@ -20,6 +20,6 @@ pushd build
export CTEST_BUILD_DIR=${TRAVIS_BUILD_DIR}
export CTEST_BUILD_COMMAND="/usr/bin/make -j3 -i -k"

python3 "${TRAVIS_BUILD_DIR}/.ci/travis/scripts/ctest2travis.py" xvfb-run ctest -V --output-on-failure -S "${TRAVIS_BUILD_DIR}/.ci/travis/travis.ctest"
python3 "${TRAVIS_BUILD_DIR}/.ci/travis/scripts/ctest2travis.py" xvfb-run ctest -VV --output-on-failure -S "${TRAVIS_BUILD_DIR}/.ci/travis/travis.ctest"

popd
@@ -7,6 +7,7 @@
************************************************************************/



class QgsLayoutReportContext : QObject
{
%Docstring
@@ -10,6 +10,7 @@




class QgsJsonExporter
{
%Docstring
@@ -11,6 +11,7 @@




class QgsVectorLayerUndoPassthroughCommand : QgsVectorLayerUndoCommand
{
%Docstring
@@ -10,6 +10,8 @@





class QgsFieldValuesLineEdit: QgsFilterLineEdit
{
%Docstring
@@ -9,6 +9,7 @@




class QgsNewAuxiliaryLayerDialog: QDialog
{
%Docstring
@@ -17,6 +17,7 @@

#include "qgsalgorithmextractbylocation.h"
#include "qgsgeometryengine.h"
#include "qgsvectorlayer.h"

///@cond PRIVATE

@@ -17,6 +17,7 @@

#include "qgsalgorithmimportphotos.h"
#include "qgsogrutils.h"
#include "qgsvectorlayer.h"

///@cond PRIVATE

@@ -16,6 +16,7 @@
***************************************************************************/

#include "qgsalgorithmmergevector.h"
#include "qgsvectorlayer.h"

///@cond PRIVATE

@@ -19,6 +19,7 @@
#include "qgsgeometryengine.h"
#include "qgsogrutils.h"
#include "qgsvectorfilewriter.h"
#include "qgsvectorlayer.h"

///@cond PRIVATE

@@ -16,6 +16,7 @@
***************************************************************************/

#include "qgsalgorithmsaveselectedfeatures.h"
#include "qgsvectorlayer.h"

///@cond PRIVATE

@@ -17,6 +17,7 @@
#include "qgscurvepolygon.h"
#include "qgsgeometrycheck.h"
#include "qgsfeaturepool.h"
#include "qgsvectorlayer.h"

QgsGeometryCheckerContext::QgsGeometryCheckerContext( int _precision, const QgsCoordinateReferenceSystem &_mapCrs, const QMap<QString, QgsFeaturePool *> &_featurePools )
: tolerance( std::pow( 10, -_precision ) )
@@ -23,7 +23,6 @@
#include <QStringList>
#include "qgis_analysis.h"
#include "qgsfeature.h"
#include "qgsvectorlayer.h"
#include "geometry/qgsgeometry.h"
#include "qgsgeometrycheckerutils.h"

@@ -18,6 +18,7 @@
#include "qgsgeometrycheck.h"
#include "qgsfeaturepool.h"
#include "qgsproject.h"
#include "qgsvectorlayer.h"

#include <QtConcurrentMap>
#include <QFutureWatcher>
@@ -22,6 +22,8 @@
#include "qgsgeos.h"
#include "qgsgeometrycollection.h"
#include "qgssurface.h"
#include "qgsvectorlayer.h"

#include <qmath.h>

namespace QgsGeometryCheckerUtils
@@ -45,7 +47,22 @@ namespace QgsGeometryCheckerUtils
double LayerFeature::layerToMapUnits() const { return mFeaturePool->getLayerToMapUnits(); }
const QgsCoordinateTransform &LayerFeature::layerToMapTransform() const { return mFeaturePool->getLayerToMapTransform(); }

/////////////////////////////////////////////////////////////////////////////
QString LayerFeature::id() const
{
return QString( "%1:%2" ).arg( layer().name() ).arg( mFeature.id() );
}

bool LayerFeature::operator==( const LayerFeature &other ) const
{
return layer().id() == other.layer().id() && feature().id() == other.feature().id();
}

bool LayerFeature::operator!=( const LayerFeature &other ) const
{
return layer().id() != other.layer().id() || feature().id() != other.feature().id();
}

/////////////////////////////////////////////////////////////////////////////

LayerFeatures::iterator::iterator( const QStringList::const_iterator &layerIt, const LayerFeatures *parent )
: mLayerIt( layerIt )
@@ -20,7 +20,6 @@
#define QGS_GEOMETRYCHECKERUTILS_H

#include "qgsfeature.h"
#include "qgsvectorlayer.h"
#include "geometry/qgsabstractgeometry.h"
#include "geometry/qgspoint.h"
#include <qmath.h>
@@ -41,9 +40,9 @@ namespace QgsGeometryCheckerUtils
const QgsCoordinateTransform &layerToMapTransform() const;
const QgsAbstractGeometry *geometry() const { return mGeometry; }
QString geometryCrs() const { return mMapCrs ? layerToMapTransform().destinationCrs().authid() : layerToMapTransform().sourceCrs().authid(); }
QString id() const { return QString( "%1:%2" ).arg( layer().name() ).arg( mFeature.id() ); }
bool operator==( const LayerFeature &other ) const { return layer().id() == other.layer().id() && feature().id() == other.feature().id(); }
bool operator!=( const LayerFeature &other ) const { return layer().id() != other.layer().id() || feature().id() != other.feature().id(); }
QString id() const;
bool operator==( const LayerFeature &other ) const;
bool operator!=( const LayerFeature &other ) const;

private:
const QgsFeaturePool *mFeaturePool;
@@ -16,6 +16,7 @@
#include "qgsgeometryengine.h"
#include "qgsgeometrycontainedcheck.h"
#include "qgsfeaturepool.h"
#include "qgsvectorlayer.h"


void QgsGeometryContainedCheck::collectErrors( QList<QgsGeometryCheckError *> &errors, QStringList &messages, QAtomicInt *progressCounter, const QMap<QString, QgsFeatureIds> &ids ) const
@@ -19,6 +19,7 @@
#define QGS_GEOMETRY_COVER_CHECK_H

#include "qgsgeometrycheck.h"
#include "qgsvectorlayer.h"

class ANALYSIS_EXPORT QgsGeometryContainedCheckError : public QgsGeometryCheckError
{
@@ -15,6 +15,7 @@

#include "qgsgeometrydanglecheck.h"
#include "qgslinestring.h"
#include "qgsvectorlayer.h"

void QgsGeometryDangleCheck::collectErrors( QList<QgsGeometryCheckError *> &errors, QStringList &/*messages*/, QAtomicInt *progressCounter, const QMap<QString, QgsFeatureIds> &ids ) const
{
@@ -18,6 +18,7 @@
#include "qgsspatialindex.h"
#include "qgsgeometry.h"
#include "qgsfeaturepool.h"
#include "qgsvectorlayer.h"

QString QgsGeometryDuplicateCheckError::duplicatesString( const QMap<QString, QgsFeaturePool *> &featurePools, const QMap<QString, QList<QgsFeatureId>> &duplicates )
{
@@ -17,7 +17,7 @@
#include "qgsgeometryengine.h"
#include "qgsproject.h"
#include "qgsspatialindex.h"

#include "qgsvectorlayer.h"

QgsGeometryFollowBoundariesCheck::QgsGeometryFollowBoundariesCheck( QgsGeometryCheckerContext *context, QgsVectorLayer *checkLayer )
: QgsGeometryCheck( FeatureNodeCheck, {QgsWkbTypes::PolygonGeometry}, context )
@@ -17,6 +17,8 @@
#include "qgsgeometrygapcheck.h"
#include "qgsgeometrycollection.h"
#include "qgsfeaturepool.h"
#include "qgsvectorlayer.h"

#include "geos_c.h"

void QgsGeometryGapCheck::collectErrors( QList<QgsGeometryCheckError *> &errors, QStringList &messages, QAtomicInt *progressCounter, const QMap<QString, QgsFeatureIds> &ids ) const
@@ -15,6 +15,7 @@

#include "qgsgeometrylineintersectioncheck.h"
#include "qgslinestring.h"
#include "qgsvectorlayer.h"

void QgsGeometryLineIntersectionCheck::collectErrors( QList<QgsGeometryCheckError *> &errors, QStringList &/*messages*/, QAtomicInt *progressCounter, const QMap<QString, QgsFeatureIds> &ids ) const
{
@@ -19,6 +19,7 @@
#define QGS_GEOMETRY_OVERLAP_CHECK_H

#include "qgsgeometrycheck.h"
#include "qgsvectorlayer.h"

class ANALYSIS_EXPORT QgsGeometryOverlapCheckError : public QgsGeometryCheckError
{
@@ -26,6 +26,7 @@
#include "qgslayout.h"
#include "qgsmapsettings.h"
#include "qgsexpressionbuilderdialog.h"
#include "qgsvectorlayer.h"

QgsLayoutMapGridWidget::QgsLayoutMapGridWidget( QgsLayoutItemMapGrid *mapGrid, QgsLayoutItemMap *map )
: QgsLayoutItemBaseWidget( nullptr, mapGrid )
@@ -20,6 +20,7 @@
#include "qgslayout.h"
#include "qgslayoutpagecollection.h"
#include "qgslayoutundostack.h"
#include "qgsvectorlayer.h"

QgsLayoutPagePropertiesWidget::QgsLayoutPagePropertiesWidget( QWidget *parent, QgsLayoutItem *layoutItem )
: QgsLayoutItemBaseWidget( parent, layoutItem )
@@ -21,6 +21,7 @@
#include "qgssymbollayerutils.h"
#include "qgslayoutitemregistry.h"
#include "qgslayoutundostack.h"
#include "qgsvectorlayer.h"

QgsLayoutPolygonWidget::QgsLayoutPolygonWidget( QgsLayoutItemPolygon *polygon )
: QgsLayoutItemBaseWidget( nullptr, polygon )
@@ -21,6 +21,7 @@
#include "qgslayoutitemregistry.h"
#include "qgslayout.h"
#include "qgslayoutundostack.h"
#include "qgsvectorlayer.h"

#include <QButtonGroup>
#include <QFileDialog>
@@ -20,6 +20,7 @@
#include "qgslayoutitemshape.h"
#include "qgslayout.h"
#include "qgslayoutundostack.h"
#include "qgsvectorlayer.h"

QgsLayoutShapeWidget::QgsLayoutShapeWidget( QgsLayoutItemShape *shape )
: QgsLayoutItemBaseWidget( nullptr, shape )
@@ -30,7 +30,6 @@
#include <QHBoxLayout>
#include <QFormLayout>

#include "qgsvectorlayer.h"
#include "ui_qgsattributesformproperties.h"
#include "qgis_app.h"
#include "qgsaddattrdialog.h"
@@ -19,6 +19,7 @@

#include "qgslayertree.h"
#include "qgslayertreemodel.h"
#include "qgsvectorlayer.h"

QgsLayerCapabilitiesModel::QgsLayerCapabilitiesModel( QgsProject *project, QObject *parent )
: QSortFilterProxyModel( parent )
@@ -19,7 +19,6 @@
#include "ui_qgsloadstylefromdbdialog.h"
#include "qgsguiutils.h"
#include "qgis_app.h"
#include "qgsvectorlayer.h"
#include "qgsvectordataprovider.h"

class APP_EXPORT QgsLoadStyleFromDBDialog : public QDialog, private Ui::QgsLoadStyleFromDBDialogLayout
@@ -16,11 +16,12 @@ email : jpalmer at linz dot govt dot nz
#ifndef QGSMAPTOOLSELECTUTILS_H
#define QGSMAPTOOLSELECTUTILS_H

#include "qgsvectorlayer.h"
#include <Qt>
#include <QRect>
#include <QPoint>

#include "qgsvectorlayer.h"

class QMouseEvent;
class QgsMapCanvas;
class QgsVectorLayer;
@@ -15,6 +15,7 @@
***************************************************************************/

#include "qgssourcefieldsproperties.h"
#include "qgsvectorlayer.h"

QgsSourceFieldsProperties::QgsSourceFieldsProperties( QgsVectorLayer *layer, QWidget *parent )
: QWidget( parent )
@@ -31,7 +31,6 @@
#include <QHBoxLayout>
#include <QFormLayout>

#include "qgsvectorlayer.h"
#include "ui_qgssourcefieldsproperties.h"
#include "qgis_app.h"
#include "qgsaddattrdialog.h"
@@ -26,6 +26,8 @@
#include "qgsfeedback.h"
#include "qgsvectorlayerutils.h"
#include "qgstaskmanager.h"
#include "qgsvectorlayer.h"

#include "qgis_app.h"

class QMenu;
@@ -24,7 +24,6 @@
#include "qgsguiutils.h"
#include "qgshelp.h"
#include "qgsmaplayerstylemanager.h"
#include "qgsvectorlayer.h"
#include "qgsvectorlayerjoininfo.h"
#include "layertree/qgslayertree.h"
#include "layertree/qgslayertreemodel.h"
@@ -15,6 +15,7 @@

#include "qgsexpressionutils.h"
#include "qgsexpressionnode.h"
#include "qgsvectorlayer.h"

///@cond PRIVATE

@@ -35,3 +36,5 @@ QgsExpressionUtils::TVL QgsExpressionUtils::OR[3][3] =
QgsExpressionUtils::TVL QgsExpressionUtils::NOT[3] = { True, False, Unknown };

///@endcond


@@ -22,12 +22,11 @@
#include "qgsfeature.h"
#include "qgsexpression.h"
#include "qgscolorramp.h"
#include "qgsvectorlayer.h"
#include "qgsvectorlayerfeatureiterator.h"
#include "qgsrasterlayer.h"
#include "qgsproject.h"
#include "qgsrelationmanager.h"

#include "qgsvectorlayer.h"

#define ENSURE_NO_EVAL_ERROR { if ( parent->hasEvalError() ) return QVariant(); }
#define SET_EVAL_ERROR(x) { parent->setEvalErrorString( x ); return QVariant(); }
@@ -19,6 +19,7 @@
#include "qgsreport.h"
#include "qgsreportsectionfieldgroup.h"
#include "qgsreportsectionlayout.h"
#include "qgsvectorlayer.h"

///@cond NOT_STABLE

@@ -29,6 +29,7 @@
#include "qgssymbollayer.h"
#include "qgsproject.h"
#include "qgsmaplayerstylemanager.h"
#include "qgsvectorlayer.h"

#include "qgsprintlayout.h"
#include "qgslayoutatlas.h"
@@ -28,6 +28,7 @@
#include "qgslayoutitemmap.h"
#include "qgslayoutundostack.h"
#include "qgscompositionconverter.h"
#include "qgsvectorlayer.h"

QgsLayout::QgsLayout( QgsProject *project )
: mProject( project )

0 comments on commit 4b411e0

Please sign in to comment.
You can’t perform that action at this time.