cdesktopenv/cde/lib/csa/rerule.h

181 lines
4.1 KiB
C

/*
* CDE - Common Desktop Environment
*
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
*
* These libraries and programs are free software; you can
* redistribute them and/or modify them under the terms of the GNU
* Lesser General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* These libraries and programs are distributed in the hope that
* they will be useful, but WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with these libraries and programs; if not, write
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
* Floor, Boston, MA 02110-1301 USA
*/
/* $XConsortium: rerule.h /main/1 1996/04/21 19:24:15 drk $ */
/*
* (c) Copyright 1993, 1994 Hewlett-Packard Company
* (c) Copyright 1993, 1994 International Business Machines Corp.
* (c) Copyright 1993, 1994 Novell, Inc.
* (c) Copyright 1993, 1994 Sun Microsystems, Inc.
*/
#ifndef _RERULE_H
#define _RERULE_H
typedef unsigned long Time;
typedef unsigned int Interval;
typedef int Duration;
#define RE_INFINITY -1
#define RE_NOTSET -2
#define RE_ERROR -3
#define RE_LASTDAY 32
#define RE_STOP_FLAG 0x80000000
#define RE_SET_FLAG(data) (data |= RE_STOP_FLAG)
#define RE_STOP_IS_SET(data) (data & RE_STOP_FLAG)
#define RE_MASK_STOP(data) (data & ~RE_STOP_FLAG)
#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif
typedef enum {
WD_SUN = 0,
WD_MON,
WD_TUE,
WD_WED,
WD_THU,
WD_FRI,
WD_SAT
} WeekDay;
typedef enum {
WK_F1 = 0,
WK_F2,
WK_F3,
WK_F4,
WK_F5,
WK_L1,
WK_L2,
WK_L3,
WK_L4,
WK_L5
} WeekNumber;
typedef enum {
RT_MINUTE,
RT_DAILY,
RT_WEEKLY,
RT_MONTHLY_POSITION,
RT_MONTHLY_DAY,
RT_YEARLY_MONTH,
RT_YEARLY_DAY
} RepeatType;
typedef struct _NumberList {
struct _NumberList *nl_next;
unsigned int nl_number;
} NumberList;
typedef struct _DayTime {
WeekDay dt_day;
unsigned int dt_ntime;
Time *dt_time;
} DayTime;
typedef struct _DayTimeList {
struct _DayTimeList *dtl_next;
DayTime *dtl_daytime;
} DayTimeList;
typedef struct _WeekDayTime {
unsigned int wdt_nday;
WeekDay *wdt_day;
unsigned int wdt_ntime;
Time *wdt_time;
unsigned int wdt_nweek;
WeekNumber *wdt_week;
} WeekDayTime;
typedef struct _WeekDayTimeList {
struct _WeekDayTimeList *wdtl_next;
WeekDayTime *wdtl_weektime;
} WeekDayTimeList;
typedef struct _DailyData {
unsigned int dd_ntime;
Time *dd_time;
} DailyData;
typedef struct _WeeklyData {
unsigned int wd_ndaytime;
DayTime *wd_daytime;
} WeeklyData;
typedef struct _MonthlyData {
unsigned int md_nitems; /* # of md_weektime or md_days */
WeekDayTime *md_weektime; /* Used in MP command */
unsigned int *md_days; /* Array of days for MD command */
} MonthlyData;
typedef struct _YearlyData {
unsigned int yd_nitems;
unsigned int *yd_items; /* Array of days/months event occurs */
} YearlyData;
typedef struct _RepeatEvent {
struct _RepeatEvent *re_next;
struct _RepeatEvent *re_prev;
Interval re_interval;
Duration re_duration;
time_t re_end_date;
RepeatType re_type;
union {
DailyData *re_daily;
WeeklyData *re_weekly;
MonthlyData *re_monthly;
YearlyData *re_yearly;
} re_data;
} RepeatEvent;
typedef struct _RepeatEventState {
struct _RepeatEventState *res_next;
const RepeatEvent *res_re;
Duration res_duration; /* # events remaining */
union {
struct _DailyState {
unsigned int res_time;
} ds;
struct _WeeklyState {
unsigned int res_daytime;
unsigned int res_time;
} ws;
struct _MonthlyState {
unsigned int res_day;
unsigned int res_weektime;
unsigned int res_wday;
unsigned int res_wtime;
unsigned int res_wweek;
} ms;
struct _YearlyState {
unsigned int res_daymonth;
} ys;
} res_data;
} RepeatEventState;
extern void _DtCm_free_re(RepeatEvent *);
extern void _DtCm_free_re_state(RepeatEventState *);
#endif /* _RERULE_H */