home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tricks of the Windows Gam…ming Gurus (2nd Edition)
/
Disc2.iso
/
vc98
/
crt
/
src
/
dostypes.h
< prev
next >
Wrap
C/C++ Source or Header
|
1998-06-17
|
3KB
|
94 lines
/***
*dostypes.h - defines DOS packed date and time types
*
* Copyright (c) 1987-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
* This file defines the DOS packed date and time types.
*
* [Internal]
*
****/
#if _MSC_VER > 1000
#pragma once
#endif /* _MSC_VER > 1000 */
#ifndef _INC_DOSTYPES
#define _INC_DOSTYPES
#ifndef _CRTBLD
/*
* This is an internal C runtime header file. It is used when building
* the C runtimes only. It is not to be used as a public header file.
*/
#error ERROR: Use of C runtime library internal header file.
#endif /* _CRTBLD */
#define MASK4 0xf /* 4 bit mask */
#define MASK5 0x1f /* 5 bit mask */
#define MASK6 0x3f /* 6 bit mask */
#define MASK7 0x7f /* 7 bit mask */
#define DAYLOC 0 /* day value starts in bit 0 */
#define MONTHLOC 5 /* month value starts in bit 5 */
#define YEARLOC 9 /* year value starts in bit 9 */
#define SECLOC 0 /* seconds value starts in bit 0 */
#define MINLOC 5 /* minutes value starts in bit 5 */
#define HOURLOC 11 /* hours value starts in bit 11 */
#define _DATECAST(fd) * (unsigned short *) &(fd)
#define _TIMECAST(ft) * (unsigned short *) &(ft)
#ifdef _WIN32
#define SET_DOS_DAY(fd, xday) fd.Day = (unsigned short)((xday) & MASK5)
#define SET_DOS_MONTH(fd, xmon) fd.Month = (unsigned short)((xmon) & MASK4)
#define SET_DOS_YEAR(fd, xyr) fd.Year = (unsigned short)((xyr) & MASK7)
#define SET_DOS_HOUR(ft, xhr) ft.Hours = (unsigned short)((xhr) & MASK5)
#define SET_DOS_MIN(ft, xmin) ft.Minutes = (unsigned short)((xmin) & MASK6)
#define SET_DOS_SEC(ft, xsec) ft.DoubleSeconds = (unsigned short)((xsec) & MASK5)
#define DOS_DAY(fd) (fd.Day)
#define DOS_MONTH(fd) (fd.Month)
#define DOS_YEAR(fd) (fd.Year)
#define DOS_HOUR(ft) (ft.Hours)
#define DOS_MIN(ft) (ft.Minutes)
#define DOS_SEC(ft) (ft.DoubleSeconds)
#else /* _WIN32 */
#ifdef _MAC
#define SET_DOS_DAY(fd, xday) fd.day = (unsigned short)((xday) & MASK5)
#define SET_DOS_MONTH(fd, xmon) fd.month = (unsigned short)((xmon) & MASK4)
#define SET_DOS_YEAR(fd, xyr) fd.year = (unsigned short)((xyr) & MASK7)
#define SET_DOS_HOUR(ft, xhr) ft.hours = (unsigned short)((xhr) & MASK5)
#define SET_DOS_MIN(ft, xmin) ft.minutes = (unsigned short)((xmin) & MASK6)
#define SET_DOS_SEC(ft, xsec) ft.twosecs = (unsigned short)((xsec) & MASK5)
#define DOS_DAY(fd) (fd.day)
#define DOS_MONTH(fd) (fd.month)
#define DOS_YEAR(fd) (fd.year)
#define DOS_HOUR(ft) (ft.hours)
#define DOS_MIN(ft) (ft.minutes)
#define DOS_SEC(ft) (ft.twosecs)
#else /* _MAC */
#error ERROR - ONLY WIN32 OR MAC TARGET SUPPORTED!
#endif /* _MAC */
#endif /* _WIN32 */
#define XTIME(d,t) _dtoxtime(DOS_YEAR(d),DOS_MONTH(d),DOS_DAY(d),DOS_HOUR(t),\
DOS_MIN(t),DOS_SEC(t)*2)
#endif /* _INC_DOSTYPES */