da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/* : : generated by proto : : */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/***********************************************************************
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* This software is part of the ast package *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* Copyright (c) 1985-2010 AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* and is licensed under the *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Common Public License, Version 1.0 *
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin* by AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* A copy of the License is available at *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* http://www.opensource.org/licenses/cpl1.0.txt *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Information and Software Systems Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* AT&T Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Florham Park NJ *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Glenn Fowler <gsf@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* David Korn <dgk@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Phong Vo <kpv@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin***********************************************************************/
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Glenn Fowler
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * AT&T Research
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * time conversion support definitions
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef _TM_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !defined(__PROTO__)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <prototyped.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !defined(__LINKAGE__)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define __LINKAGE__ /* 2004-08-11 transition */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _TM_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_VERSION 20070319L
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <ast.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <times.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef daylight
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define tmset(z) tminit(z)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define tmisleapyear(y) (!((y)%4)&&(((y)%100)||!((((y)<1900)?((y)+1900):(y))%400)))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_ADJUST (1<<0) /* local doesn't do leap secs */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_LEAP (1<<1) /* do leap seconds */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_UTC (1<<2) /* universal coordinated ref */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_PEDANTIC (1<<3) /* pedantic date parse */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_DATESTYLE (1<<4) /* date(1) style mmddHHMMccyy */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_SUBSECOND (1<<5) /* <something>%S => ...%S.%P */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_DST (-60) /* default minutes for DST */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_LOCALZONE (25 * 60) /* use local time zone offset */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_UTCZONE (26 * 60) /* UTC "time zone" */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_MAXLEAP 1 /* max leap secs per leap */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_WINDOW 69 /* century windowing guard year */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * these indices must agree with tm_dform[]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_MONTH_ABBREV 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_MONTH 12
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_DAY_ABBREV 24
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_DAY 31
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_TIME 38
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_DATE 39
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_DEFAULT 40
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_MERIDIAN 41
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_UT 43
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_DT 47
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_SUFFIXES 51
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_PARTS 55
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_HOURS 62
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_DAYS 66
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_LAST 69
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_THIS 72
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_NEXT 75
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_EXACT 78
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_NOISE 81
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_ORDINAL 85
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_DIGITS 95
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_CTIME 105
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_DATE_1 106
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_INTERNATIONAL 107
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_RECENT 108
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_DISTANT 109
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_MERIDIAN_TIME 110
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_ERA 111
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_ERA_DATE 112
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_ERA_TIME 113
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_ERA_DEFAULT 114
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_ERA_YEAR 115
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_ORDINALS 116
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define TM_FINAL 126
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz#define TM_WORK 129
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz#define TM_NFORM 132
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintypedef struct /* leap second info */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin time_t time; /* the leap second event */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int total; /* inclusive total since epoch */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin} Tm_leap_t;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintypedef struct /* time zone info */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* type; /* type name */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* standard; /* standard time name */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* daylight; /* daylight or summertime name */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin short west; /* minutes west of GMT */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin short dst; /* add to tz.west for DST */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin} Tm_zone_t;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintypedef struct /* tm library readonly data */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char** format; /* default TM_* format strings */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz unsigned char* lex; /* format lex type classes */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* digit; /* output digits */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin short* days; /* days in month i */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin short* sum; /* days in months before i */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Tm_leap_t* leap; /* leap second table */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Tm_zone_t* zone; /* alternate timezone table */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin} Tm_data_t;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintypedef struct /* tm library global info */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* deformat; /* TM_DEFAULT override */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int flags; /* flags */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char** format; /* current format strings */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Tm_zone_t* date; /* timezone from last tmdate() */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Tm_zone_t* local; /* local timezone */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Tm_zone_t* zone; /* current timezone */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin} Tm_info_t;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintypedef struct Tm_s
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int tm_sec;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int tm_min;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int tm_hour;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int tm_mday;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int tm_mon;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int tm_year;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int tm_wday;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int tm_yday;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int tm_isdst;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin uint32_t tm_nsec;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Tm_zone_t* tm_zone;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin} Tm_t;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _BLD_ast && defined(__EXPORT__)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef __MANGLE__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define __MANGLE__ __LINKAGE__ __EXPORT__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !_BLD_ast && defined(__IMPORT__)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef __MANGLE__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define __MANGLE__ __LINKAGE__ __IMPORT__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ Tm_data_t* _tm_datap_;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ Tm_info_t* _tm_infop_;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define tm_data (*_tm_datap_)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define tm_info (*_tm_infop_)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef __MANGLE__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define __MANGLE__ __LINKAGE__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _BLD_ast && defined(__EXPORT__)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef __MANGLE__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define __MANGLE__ __LINKAGE__ __EXPORT__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ time_t tmdate __PROTO__((const char*, char**, time_t*));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ int tmequiv __PROTO__((Tm_t*));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ Tm_t* tmfix __PROTO__((Tm_t*));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ char* tmfmt __PROTO__((char*, size_t, const char*, time_t*));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ char* tmform __PROTO__((char*, const char*, time_t*));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ int tmgoff __PROTO__((const char*, char**, int));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ void tminit __PROTO__((Tm_zone_t*));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ time_t tmleap __PROTO__((time_t*));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ int tmlex __PROTO__((const char*, char**, char**, int, char**, int));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ char** tmlocale __PROTO__((void));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ Tm_t* tmmake __PROTO__((time_t*));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ char* tmpoff __PROTO__((char*, size_t, const char*, int, int));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ time_t tmscan __PROTO__((const char*, char**, const char*, char**, time_t*, long));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ int tmsleep __PROTO__((time_t, time_t));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ time_t tmtime __PROTO__((Tm_t*, int));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ Tm_zone_t* tmtype __PROTO__((const char*, char**));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ int tmweek __PROTO__((Tm_t*, int, int, int));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ int tmword __PROTO__((const char*, char**, const char*, char**, int));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern __MANGLE__ Tm_zone_t* tmzone __PROTO__((const char*, char**, const char*, int*));
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef __MANGLE__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define __MANGLE__ __LINKAGE__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif