sys7.1-doc-wip/Interfaces/CIncludes/DateTime.h
2019-07-27 22:37:48 +08:00

286 lines
9.0 KiB
C

/*
File: DateTime.h
Copyright: © 1992 by Apple Computer, Inc., all rights reserved.
Change History (most recent first):
<1> 4/22/92 FM first checked in
<4> 4/17/92 DCL For New Inside Mac: Mo' Better Call Names. Str -> String, Secs
-> Seconds. Sorry, no more Secs.
<3> 4/1/92 DCL Fix the calls from xxxxIntlxxxx to xxxxxxxxxIntl.
<2> 3/30/92 DCL For New Inside Mac: Added New Improved Better Names for the same
old calls. #1025005
<1> 3/26/92 DCL first checked in
<0> 3/12/92 DCL Moved all the DateTime stuff from OSUtils, packages
and Script
*/
#ifndef __DATETIME__
#define __DATETIME__
#ifndef __TYPES__
#include <Types.h>
#endif
struct DateTimeRec {
short year;
short month;
short day;
short hour;
short minute;
short second;
short dayOfWeek;
};
enum {shortDate,longDate,abbrevDate};
typedef unsigned char DateForm;
typedef struct DateTimeRec DateTimeRec;
enum {
/* String2Date status values */
fatalDateTime = 0x8000, /*String2Date and String2Time mask to a fatal error*/
longDateFound = 1, /*String2Date mask to long date found*/
leftOverChars = 2, /*String2Date & Time mask to warn of left over characters*/
sepNotIntlSep = 4, /*String2Date & Time mask to warn of non-standard separators*/
fieldOrderNotIntl = 8, /*String2Date & Time mask to warn of non-standard field order*/
extraneousStrings = 16, /*String2Date & Time mask to warn of unparsable strings in text*/
tooManySeps = 32, /*String2Date & Time mask to warn of too many separators*/
sepNotConsistent = 64, /*String2Date & Time mask to warn of inconsistent separators*/
tokenErr = 0x8100, /*String2Date & Time mask for 'tokenizer err encountered'*/
cantReadUtilities = 0x8200,
dateTimeNotFound = 0x8400,
dateTimeInvalid = 0x8800,
/* Date equates */
smallDateBit = 31, /*Restrict valid date/time to range of Time global*/
togChar12HourBit = 30, /*If toggling hour by char, accept hours 1..12 only*/
togCharZCycleBit = 29, /*Modifier for togChar12HourBit: accept hours 0..11 only*/
togDelta12HourBit = 28, /*If toggling hour up/down, restrict to 12-hour range (am/pm)*/
genCdevRangeBit = 27, /*Restrict date/time to range used by genl CDEV*/
validDateFields = -1,
maxDateField = 10,
eraMask = 0x0001,
yearMask = 0x0002,
monthMask = 0x0004,
dayMask = 0x0008,
hourMask = 0x0010,
minuteMask = 0x0020,
secondMask = 0x0040,
dayOfWeekMask = 0x0080,
dayOfYearMask = 0x0100,
weekOfYearMask = 0x0200,
pmMask = 0x0400,
dateStdMask = 0x007F /*default for ValidDate flags and ToggleDate TogglePB.togFlags*/
};
enum {mdy,dmy,ymd,myd,dym,ydm};
typedef unsigned char DateOrders;
enum {
zeroCycle = 1, /*0:00 AM/PM format*/
longDay = 0, /*day of the month*/
longWeek = 1, /*day of the week*/
longMonth = 2, /*month of the year*/
longYear = 3, /*year*/
supDay = 1, /*suppress day of month*/
supWeek = 2, /*suppress day of week*/
supMonth = 4, /*suppress month*/
supYear = 8, /*suppress year*/
dayLdingZ = 32,
mntLdingZ = 64,
century = 128,
secLeadingZ = 32,
minLeadingZ = 64,
hrLeadingZ = 128
};
enum {eraField,yearField,monthField,dayField,hourField,minuteField,secondField,
dayOfWeekField,dayOfYearField,weekOfYearField,pmField,res1Field,res2Field,
res3Field};
typedef unsigned char LongDateField;
typedef short ToggleResults;
typedef short StringToDateStatus;
typedef short String2DateStatus;
struct DateCacheRecord {
short hidden[256]; /*only for temporary use*/
};
typedef struct DateCacheRecord DateCacheRecord;
typedef DateCacheRecord *DateCachePtr;
typedef comp LongDateTime;
union LongDateCvt {
comp c;
struct {
long lHigh;
long lLow;
} hl;
};
typedef union LongDateCvt LongDateCvt;
union LongDateRec {
struct {
short era;
short year;
short month;
short day;
short hour;
short minute;
short second;
short dayOfWeek;
short dayOfYear;
short weekOfYear;
short pm;
short res1;
short res2;
short res3;
} ld;
short list[14]; /*Index by LongDateField!*/
struct {
short eraAlt;
DateTimeRec oldDate;
} od;
};
typedef union LongDateRec LongDateRec;
typedef char DateDelta;
struct TogglePB {
long togFlags; /*caller normally sets low word to dateStdMask=$7F*/
ResType amChars; /*from 'itl0', but uppercased*/
ResType pmChars; /*from 'itl0', but uppercased*/
long reserved[4];
};
typedef struct TogglePB TogglePB;
#ifdef __cplusplus
extern "C" {
#endif
#pragma parameter __D0 ReadDateTime(__A0)
pascal OSErr ReadDateTime(unsigned long *time)
= 0xA039;
#pragma parameter GetDateTime(__A0)
pascal void GetDateTime(unsigned long *secs)
= {0x20B8,0x020C};
#pragma parameter __D0 SetDateTime(__D0)
pascal OSErr SetDateTime(unsigned long time)
= 0xA03A;
#pragma parameter SetTime(__A0)
pascal void SetTime(const DateTimeRec *d)
= {0xA9C7,0xA03A};
#pragma parameter GetTime(__A0)
pascal void GetTime(DateTimeRec *d)
= {0x2038,0x020C,0xA9C6};
pascal void DateToSeconds(const DateTimeRec *d,unsigned long *secs);
pascal void Date2Secs(const DateTimeRec *d,unsigned long *secs);
#pragma parameter SecondsToDate(__D0,__A0)
pascal void SecondsToDate(unsigned long secs,DateTimeRec *d)
= 0xA9C6;
#pragma parameter Secs2Date(__D0,__A0)
pascal void Secs2Date(unsigned long secs,DateTimeRec *d)
= 0xA9C6;
pascal void DateString(long dateTime,DateForm longFlag,Str255 result)
= {0x4267,0xA9ED};
pascal void IUDateString(long dateTime,DateForm longFlag,Str255 result)
= {0x4267,0xA9ED};
pascal void DateStringIntl(long dateTime,DateForm longFlag,Str255 result,
Handle intlHandle)
= {0x3F3C,0x000E,0xA9ED};
pascal void IUDatePString(long dateTime,DateForm longFlag,Str255 result,
Handle intlHandle)
= {0x3F3C,0x000E,0xA9ED};
pascal void TimeString(long dateTime,Boolean wantSeconds,Str255 result)
= {0x3F3C,0x0002,0xA9ED};
pascal void IUTimeString(long dateTime,Boolean wantSeconds,Str255 result)
= {0x3F3C,0x0002,0xA9ED};
pascal void TimeStringIntl(long dateTime,Boolean wantSeconds,Str255 result,
Handle intlHandle)
= {0x3F3C,0x0010,0xA9ED};
pascal void IUTimePString(long dateTime,Boolean wantSeconds,Str255 result,
Handle intlHandle)
= {0x3F3C,0x0010,0xA9ED};
void datestring(long dateTime,DateForm longFlag,char *result);
void iudatestring(long dateTime,DateForm longFlag,char *result);
void datestringintl(long dateTime,DateForm longFlag,char *result,Handle intlHandle);
void iudatepstring(long dateTime,DateForm longFlag,char *result,Handle intlHandle);
void timestring(long dateTime,Boolean wantSeconds,char *result);
void iutimestring(long dateTime,Boolean wantSeconds,char *result);
void timestringintl(long dateTime,Boolean wantSeconds,char *result,Handle intlHandle);
void iutimepstring(long dateTime,Boolean wantSeconds,char *result,Handle intlHandle);
pascal void LongDateStringIntl(LongDateTime *dateTime,DateForm longFlag,Str255 result,
Handle intlHandle)
= {0x3F3C,0x0014,0xA9ED};
pascal void IULDateString(LongDateTime *dateTime,DateForm longFlag,Str255 result,
Handle intlHandle)
= {0x3F3C,0x0014,0xA9ED};
pascal void LongTimeStringIntl(LongDateTime *dateTime,Boolean wantSeconds,Str255 result,
Handle intlHandle)
= {0x3F3C,0x0016,0xA9ED};
pascal void IULTimeString(LongDateTime *dateTime,Boolean wantSeconds,Str255 result,
Handle intlHandle)
= {0x3F3C,0x0016,0xA9ED};
void longdatestringintl(LongDateTime *dateTime,DateForm longFlag,char *result,
Handle intlHandle);
void iuldatestring(LongDateTime *dateTime,DateForm longFlag,char *result,
Handle intlHandle);
void longtimestringintl(LongDateTime *dateTime,Boolean wantSeconds,char *result,
Handle intlHandle);
void iultimestring(LongDateTime *dateTime,Boolean wantSeconds,char *result,
Handle intlHandle);
pascal OSErr InitDateCache(DateCachePtr theCache)
= {0x2F3C,0x8204,0xFFF8,0xA8B5};
pascal StringToDateStatus StringToDate(Ptr textPtr,long textLen,DateCachePtr theCache,
long *lengthUsed,LongDateRec *dateTime)
= {0x2F3C,0x8214,0xFFF6,0xA8B5};
pascal String2DateStatus String2Date(Ptr textPtr,long textLen,DateCachePtr theCache,
long *lengthUsed,LongDateRec *dateTime)
= {0x2F3C,0x8214,0xFFF6,0xA8B5};
pascal StringToDateStatus StringToTime(Ptr textPtr,long textLen,DateCachePtr theCache,
long *lengthUsed,LongDateRec *dateTime)
= {0x2F3C,0x8214,0xFFF4,0xA8B5};
pascal String2DateStatus String2Time(Ptr textPtr,long textLen,DateCachePtr theCache,
long *lengthUsed,LongDateRec *dateTime)
= {0x2F3C,0x8214,0xFFF4,0xA8B5};
pascal void LongDateToSeconds(const LongDateRec *lDate,LongDateTime *lSecs)
= {0x2F3C,0x8008,0xFFF2,0xA8B5};
pascal void LongDate2Secs(const LongDateRec *lDate,LongDateTime *lSecs)
= {0x2F3C,0x8008,0xFFF2,0xA8B5};
pascal void SecondsToLongDate(LongDateTime *lSecs,LongDateRec *lDate)
= {0x2F3C,0x8008,0xFFF0,0xA8B5};
pascal void LongSecs2Date(LongDateTime *lSecs,LongDateRec *lDate)
= {0x2F3C,0x8008,0xFFF0,0xA8B5};
pascal ToggleResults ToggleDate(LongDateTime *lSecs,LongDateField field,
DateDelta delta,short ch,const TogglePB *params)
= {0x2F3C,0x820E,0xFFEE,0xA8B5};
pascal short ValidDate(const LongDateRec *vDate,long flags,LongDateTime *newSecs)
= {0x2F3C,0x820C,0xFFE4,0xA8B5};
#ifdef __cplusplus
}
#endif
#endif