This file is indexed.

/usr/include/KF5/KAlarmCal/kalarmcal/datetime.h is in libkf5alarmcalendar-dev 4:17.12.3-0ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
/*
 *  datetime.h  -  date/time with start-of-day time for date-only values
 *  This file is part of kalarmcal library, which provides access to KAlarm
 *  calendar data.
 *  Copyright © 2003,2005-2007,2009,2011 by David Jarvie <djarvie@kde.org>
 *
 *  This library is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU Library General Public License as published
 *  by the Free Software Foundation; either version 2 of the License, or (at
 *  your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful, but WITHOUT
 *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
 *  License for more details.
 *
 *  You should have received a copy of the GNU Library General Public License
 *  along with this library; see the file COPYING.LIB.  If not, write to the
 *  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 *  MA 02110-1301, USA.
 */
#ifndef KALARM_DATETIME_H
#define KALARM_DATETIME_H

#include "kalarmcal_export.h"

#include <kdatetime.h>

namespace KAlarmCal
{

/**
 *  @short As KDateTime, but with a configurable start-of-day time for date-only values.
 *
 *  The DateTime class holds a date, with or without a time.
 *
 *  DateTime is very similar to the KDateTime class. The time assumed for date-only values
 *  is the start-of-day time set by setStartOfDay().
 *
 *  @author David Jarvie <djarvie@kde.org>
*/
class KALARMCAL_EXPORT DateTime
{
public:
    /** Default constructor.
     *  Constructs an invalid date-time.
     */
    DateTime();

    /** Constructor for a date-only value. */
    DateTime(const QDate &d, const KDateTime::Spec &spec);

    /** Constructor for a date-time value. */
    DateTime(const QDate &d, const QTime &t, const KDateTime::Spec &spec);

    /** Constructor for a date-time value. */
    DateTime(const QDateTime &dt, const KDateTime::Spec &spec);

    /** Constructor for a date-time value. */
    DateTime(const KDateTime &dt);

    /** Copy constructor. */
    DateTime(const DateTime &dt);

    ~DateTime();

    /** Assignment operator. */
    DateTime &operator=(const DateTime &dt);

    /** Assignment operator.
     *  Sets the value to a specified date-time.
     */
    DateTime &operator=(const KDateTime &dt);

    /** Returns true if the date is null and, if it is a date-time value, the time is also null. */
    bool isNull() const;

    /** Returns true if the date is valid and, if it is a date-time value, the time is also valid. */
    bool isValid() const;

    /** Returns true if it is date-only value. */
    bool isDateOnly() const;

    /** Sets the value to be either date-only or date-time.
     *  @param d True to set the value to be date-only; false to set it to a date-time value.
     */
    void setDateOnly(bool d);

    /** Returns the date part of the value. */
    QDate date() const;

    /** Sets the date component of the value. */
    void setDate(const QDate &d);

    /** Returns the date and time of the value.
     *  If the value is date-only, the time part returned is 00:00:00. */
    QDateTime rawDateTime() const;

    /** Returns the date and time of the value as a KDateTime. */
    KDateTime kDateTime() const;

    /** Returns the time part of the value.
     *  If the value is date-only, the time returned is the start-of-day time set by setStartOfDay().
     */
    QTime effectiveTime() const;

    /** Sets the time component of the value.
     *  The value is converted if necessary to be a date-time value. */
    void setTime(const QTime &t);

    /** Returns the date and time of the value.
     *  If the value is date-only, the time part returned is equal to the start-of-day time set
     *  by setStartOfDay().
     */
    QDateTime effectiveDateTime() const;

    /** Sets the date/time component of the value. */
    void setDateTime(const QDateTime &dt);

    /** Returns the date and time of the value.
     *  If the value is date-only, the time part returned is equal to the start-of-day time set
     *  by setStartOfDay().
     */
    KDateTime effectiveKDateTime() const;

    /** Returns the date and time of the value as written in the calendar.
     *  If the value is date-only, the time part returned is 00:00.
     */
    KDateTime calendarKDateTime() const;

    /** Returns the time zone of the value. */
    KTimeZone timeZone() const;

    /** Returns the time specification of the value. */
    KDateTime::Spec timeSpec() const;

    /** Changes the time specification of the value. */
    void setTimeSpec(const KDateTime::Spec &spec);

    /** Returns the time specification type of the date/time, i.e. whether it is
     * UTC, has a time zone, etc. */
    KDateTime::SpecType timeType() const;

    /** Returns whether the time zone for the date/time is the current local system time zone. */
    bool isLocalZone() const;

    /** Returns whether the date/time is a local clock time. */
    bool isClockTime() const;

    /** Returns whether the date/time is a UTC time. */
    bool isUtc() const;

    /** Returns whether the date/time is a local time at a fixed offset from UTC. */
    bool isOffsetFromUtc() const;

    /** Returns the UTC offset associated with the date/time. */
    int utcOffset() const;

    /** Returns whether the date/time is the second occurrence of this time. */
    bool isSecondOccurrence() const;

    /** Sets whether this is the second occurrence of this date/time. */
    void setSecondOccurrence(bool second);

    /** Returns the time converted to UTC. */
    DateTime toUtc() const;

    /** Returns the time expressed as an offset from UTC, using the UTC offset
     * associated with this instance's date/time. */
    DateTime toOffsetFromUtc() const;

    /** Returns the time expressed as a specified offset from UTC. */
    DateTime toOffsetFromUtc(int utcOffset) const;

    /** Returns the time converted to the current local system time zone. */
    DateTime toLocalZone() const;

    /** Returns the time converted to the local clock time. */
    DateTime toClockTime() const;

    /** Returns the time converted to a specified time zone. */
    DateTime toZone(const KTimeZone &zone) const;

    /** Returns the time converted to a new time specification. */
    DateTime toTimeSpec(const KDateTime::Spec &spec) const;

    /** Converts the time to a UTC time, measured in seconds since 00:00:00 UTC
     * 1st January 1970 (as returned by time(2)). */
    uint toTime_t() const;

    /** Sets the value to a specified date-time value.
     *  @param secs The time_t date-time value, expressed as the number of seconds elapsed
     *              since 1970-01-01 00:00:00 UTC.
     */
    void setTime_t(uint secs);

    /** Returns a DateTime value @p secs seconds later than the value of this object. */
    DateTime addSecs(qint64 n) const;

    /** Returns a DateTime value @p mins minutes later than the value of this object. */
    DateTime addMins(qint64 n) const;

    /** Returns a DateTime value @p n days later than the value of this object. */
    DateTime addDays(int n) const;

    /** Returns a DateTime value @p n months later than the value of this object. */
    DateTime addMonths(int n) const;

    /** Returns a DateTime value @p n years later than the value of this object. */
    DateTime addYears(int n) const;

    /** Returns the number of days from this date or date-time to @p dt. */
    int daysTo(const DateTime &dt) const;

    /** Returns the number of minutes from this date or date-time to @p dt. */
    int minsTo(const DateTime &dt) const;

    /** Returns the number of seconds from this date or date-time to @p dt.
     *
     *  @warning The return value can overflow if the two values are far enough
     *           apart. Use sectTo_long() to avoid this.
     */
    int secsTo(const DateTime &dt) const;

    /** Returns the number of seconds as a qint64 from this date or date-time to @p dt. */
    qint64 secsTo_long(const DateTime &dt) const;

    /** Returns the value as a string.
     *  If it is a date-time, both time and date are included in the output.
     *  If it is date-only, only the date is included in the output.
     */
    QString toString(Qt::DateFormat f = Qt::TextDate) const;

    /** Returns the value as a string.
     *  If it is a date-time, both time and date are included in the output.
     *  If it is date-only, only the date is included in the output.
     */
    QString toString(const QString &format) const;

    /** Returns the value as a string, formatted according to the user's locale.
     *  If it is a date-time, both time and date are included in the output.
     *  If it is date-only, only the date is included in the output.
     */
    QString formatLocale(bool shortFormat = true) const;

    /** Sets the start-of-day time.
     *  The default value is midnight (0000 hrs).
     */
    static void setStartOfDay(const QTime &sod);

    /** Returns the start-of-day time. */
    static QTime startOfDay();

    /** Compare this value with another. */
    KDateTime::Comparison compare(const DateTime &other) const;

    KALARMCAL_EXPORT friend bool operator==(const KAlarmCal::DateTime &dt1, const KAlarmCal::DateTime &dt2);
    KALARMCAL_EXPORT friend bool operator==(const KDateTime &dt1, const KAlarmCal::DateTime &dt2);
    KALARMCAL_EXPORT friend bool operator<(const KAlarmCal::DateTime &dt1, const KAlarmCal::DateTime &dt2);
    friend bool operator<(const KDateTime &dt1, const KAlarmCal::DateTime &dt2);

private:
    //@cond PRIVATE
    class Private;
    Private *const d;
    //@endcond
};

/** Returns true if the two values are equal. */
KALARMCAL_EXPORT bool operator==(const DateTime &dt1, const DateTime &dt2);
KALARMCAL_EXPORT bool operator==(const KDateTime &dt1, const DateTime &dt2);

/** Returns true if the two values are not equal. */
inline bool operator!=(const DateTime &dt1, const DateTime &dt2)
{
    return !operator==(dt1, dt2);
}
inline bool operator!=(const KDateTime &dt1, const DateTime &dt2)
{
    return !operator==(dt1, dt2);
}

/** Returns true if the @p dt1 is earlier than @p dt2.
 *  If the two values have the same date, and one value is date-only while the
 *  other is a date-time, the time used for the date-only value is the
 *  start-of-day time set in the KAlarm Preferences dialog.
 */
KALARMCAL_EXPORT bool operator<(const DateTime &dt1, const DateTime &dt2);
inline bool operator<(const KDateTime &dt1, const DateTime &dt2)
{
    return operator<(DateTime(dt1), dt2);
}

/** Returns true if the @p dt1 is later than @p dt2.
 *  If the two values have the same date, and one value is date-only while the
 *  other is a date-time, the time used for the date-only value is the
 *  start-of-day time set in the KAlarm Preferences dialog.
 */
inline bool operator>(const DateTime &dt1, const DateTime &dt2)
{
    return operator<(dt2, dt1);
}
inline bool operator>(const KDateTime &dt1, const DateTime &dt2)
{
    return operator<(dt2, DateTime(dt1));
}

/** Returns true if the @p dt1 is later than or equal to @p dt2.
 *  If the two values have the same date, and one value is date-only while the
 *  other is a date-time, the time used for the date-only value is the
 *  start-of-day time set in the KAlarm Preferences dialog.
 */
inline bool operator>=(const DateTime &dt1, const DateTime &dt2)
{
    return !operator<(dt1, dt2);
}
inline bool operator>=(const KDateTime &dt1, const DateTime &dt2)
{
    return !operator<(DateTime(dt1), dt2);
}

/** Returns true if the @p dt1 is earlier than or equal to @p dt2.
 *  If the two values have the same date, and one value is date-only while the
 *  other is a date-time, the time used for the date-only value is the
 *  start-of-day time set in the KAlarm Preferences dialog.
 */
inline bool operator<=(const DateTime &dt1, const DateTime &dt2)
{
    return !operator<(dt2, dt1);
}
inline bool operator<=(const KDateTime &dt1, const DateTime &dt2)
{
    return !operator<(dt2, DateTime(dt1));
}

} // namespace KAlarmCal

#endif // KALARM_DATETIME_H