home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Beta / Quicktime 2.0 Beta.iso / Programming Stuff / Interfaces / Universal Interfaces / OSUtils.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-01-30  |  15.0 KB  |  630 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        OSUtils.h
  3.  
  4.     Copyright:    © 1984-1993 by Apple Computer, Inc., all rights reserved.
  5.  
  6.     WARNING
  7.     This file was auto generated by the interfacer tool. Modifications
  8.     must be made to the master file.
  9.  
  10. */
  11.  
  12. #ifndef __OSUTILS__
  13. #define __OSUTILS__
  14.  
  15. #ifndef __TYPES__
  16. #include <Types.h>
  17. /*    #include <ConditionalMacros.h>                                */
  18. /*    #include <MixedMode.h>                                        */
  19. /*        #include <Traps.h>                                        */
  20. #endif
  21.  
  22. enum  {
  23.     useFree                        = 0,
  24.     useATalk                    = 1,
  25.     useAsync                    = 2,
  26.     useExtClk                    = 3,                            /*Externally clocked*/
  27.     useMIDI                        = 4,
  28. /**** Environs Equates ****/
  29.     curSysEnvVers                = 2,                            /*Updated to equal latest SysEnvirons version*/
  30. /* Machine Types */
  31.     envMac                        = -1,
  32.     envXL                        = -2,
  33.     envMachUnknown                = 0,
  34.     env512KE                    = 1,
  35.     envMacPlus                    = 2,
  36.     envSE                        = 3,
  37.     envMacII                    = 4,
  38.     envMacIIx                    = 5,
  39.     envMacIIcx                    = 6,
  40.     envSE30                        = 7,
  41.     envPortable                    = 8,
  42.     envMacIIci                    = 9,
  43.     envMacIIfx                    = 11,
  44. /* CPU types */
  45.     envCPUUnknown                = 0
  46. };
  47.  
  48. enum  {
  49.     env68000                    = 1,
  50.     env68010                    = 2,
  51.     env68020                    = 3,
  52.     env68030                    = 4,
  53.     env68040                    = 5,
  54. /* Keyboard types */
  55.     envUnknownKbd                = 0,
  56.     envMacKbd                    = 1,
  57.     envMacAndPad                = 2,
  58.     envMacPlusKbd                = 3,
  59.     envAExtendKbd                = 4,
  60.     envStandADBKbd                = 5,
  61.     envPrtblADBKbd                = 6,
  62.     envPrtblISOKbd                = 7,
  63.     envStdISOADBKbd                = 8,
  64.     envExtISOADBKbd                = 9,
  65.     false32b                    = 0,                            /*24 bit addressing error*/
  66.     true32b                        = 1,                            /*32 bit addressing error*/
  67. /* result types for RelString Call */
  68.     sortsBefore                    = -1,                            /*first string < second string*/
  69.     sortsEqual                    = 0,                            /*first string = second string*/
  70.     sortsAfter                    = 1                                /*first string > second string*/
  71. };
  72.  
  73. enum  {
  74. /* Toggle results */
  75.     toggleUndefined                = 0,
  76.     toggleOK                    = 1,
  77.     toggleBadField                = 2,
  78.     toggleBadDelta                = 3,
  79.     toggleBadChar                = 4,
  80.     toggleUnknown                = 5,
  81.     toggleBadNum                = 6,
  82.     toggleOutOfRange            = 7,                            /*synonym for toggleErr3*/
  83.     toggleErr3                    = 7,
  84.     toggleErr4                    = 8,
  85.     toggleErr5                    = 9,
  86. /* Date equates */
  87.     smallDateBit                = 31,                            /*Restrict valid date/time to range of Time global*/
  88.     togChar12HourBit            = 30,                            /*If toggling hour by char, accept hours 1..12 only*/
  89.     togCharZCycleBit            = 29,                            /*Modifier for togChar12HourBit: accept hours 0..11 only*/
  90.     togDelta12HourBit            = 28,                            /*If toggling hour up/down, restrict to 12-hour range (am/pm)*/
  91.     genCdevRangeBit                = 27,                            /*Restrict date/time to range used by genl CDEV*/
  92.     validDateFields                = -1,
  93.     maxDateField                = 10,
  94.     eraMask                        = 0x0001,
  95.     yearMask                    = 0x0002,
  96.     monthMask                    = 0x0004,
  97.     dayMask                        = 0x0008,
  98.     hourMask                    = 0x0010,
  99.     minuteMask                    = 0x0020,
  100.     secondMask                    = 0x0040,
  101.     dayOfWeekMask                = 0x0080,
  102.     dayOfYearMask                = 0x0100,
  103.     weekOfYearMask                = 0x0200,
  104.     pmMask                        = 0x0400,
  105.     dateStdMask                    = 0x007F                        /*default for ValidDate flags and ToggleDate TogglePB.togFlags*/
  106. };
  107.  
  108. enum  {
  109.     eraField,
  110.     yearField,
  111.     monthField,
  112.     dayField,
  113.     hourField,
  114.     minuteField,
  115.     secondField,
  116.     dayOfWeekField,
  117.     dayOfYearField,
  118.     weekOfYearField,
  119.     pmField,
  120.     res1Field,
  121.     res2Field,
  122.     res3Field
  123. };
  124.  
  125. typedef unsigned char LongDateField;
  126.  
  127. enum  {
  128.     dummyType,
  129.     vType,
  130.     ioQType,
  131.     drvQType,
  132.     evType,
  133.     fsQType,
  134.     sIQType,
  135.     dtQType
  136. };
  137.  
  138. typedef unsigned short QTypes;
  139.  
  140. enum  {
  141.     OSTrap,
  142.     ToolTrap
  143. };
  144.  
  145. typedef unsigned char TrapType;
  146.  
  147. #if defined(powerc) || defined (__powerc)
  148. #pragma options align=mac68k
  149. #endif
  150. struct SysParmType {
  151.     char                        valid;
  152.     char                        aTalkA;
  153.     char                        aTalkB;
  154.     char                        config;
  155.     short                        portA;
  156.     short                        portB;
  157.     long                        alarm;
  158.     short                        font;
  159.     short                        kbdPrint;
  160.     short                        volClik;
  161.     short                        misc;
  162. };
  163. #if defined(powerc) || defined(__powerc)
  164. #pragma options align=reset
  165. #endif
  166.  
  167. typedef struct SysParmType SysParmType;
  168.  
  169. typedef SysParmType *SysPPtr;
  170.  
  171. #if defined(powerc) || defined (__powerc)
  172. #pragma options align=mac68k
  173. #endif
  174. struct QElem {
  175.     struct QElem                *qLink;
  176.     short                        qType;
  177.     short                        qData[1];
  178. };
  179. #if defined(powerc) || defined(__powerc)
  180. #pragma options align=reset
  181. #endif
  182.  
  183. typedef struct QElem QElem;
  184.  
  185. typedef QElem *QElemPtr;
  186.  
  187. #if defined(powerc) || defined (__powerc)
  188. #pragma options align=mac68k
  189. #endif
  190. struct QHdr {
  191.     short                        qFlags;
  192.     QElemPtr                    qHead;
  193.     QElemPtr                    qTail;
  194. };
  195. #if defined(powerc) || defined(__powerc)
  196. #pragma options align=reset
  197. #endif
  198.  
  199. typedef struct QHdr QHdr;
  200.  
  201. typedef QHdr *QHdrPtr;
  202.  
  203.  
  204. /*
  205.     DeferredTaskProcs cannot be written in or called from a high-level 
  206.     language without the help of mixed mode or assembly glue because they 
  207.     use the following parameter-passing convention:
  208.  
  209.     typedef pascal void (*DeferredTaskProcPtr)(long dtParam);
  210.  
  211.         In:
  212.             =>     dtParam                A1.L
  213.         Out:
  214.             none
  215. */
  216.  
  217. enum  {
  218.     uppDeferredTaskProcInfo        = kRegisterBased|REGISTER_ROUTINE_PARAMETER(1,kRegisterA1,kFourByteCode)
  219. };
  220.  
  221. #if USESROUTINEDESCRIPTORS
  222. typedef pascal void (*DeferredTaskProcPtr)(long dtParam);
  223.  
  224. typedef UniversalProcPtr DeferredTaskUPP;
  225.  
  226. #define CallDeferredTaskProc(userRoutine, dtParam)  \
  227.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppDeferredTaskProcInfo, (dtParam))
  228.  
  229. #define NewDeferredTaskProc(userRoutine)  \
  230.     (DeferredTaskUPP) NewRoutineDescriptor((ProcPtr)(userRoutine),  \
  231.     uppDeferredTaskProcInfo, GetCurrentISA())
  232.  
  233. #else
  234. typedef ProcPtr DeferredTaskUPP;
  235.  
  236. #define NewDeferredTaskProc(userRoutine)  \
  237.     (DeferredTaskUPP)(userRoutine)
  238.  
  239. #endif
  240.  
  241. #if defined(powerc) || defined (__powerc)
  242. #pragma options align=mac68k
  243. #endif
  244. struct DeferredTask {
  245.     QElemPtr                    qLink;
  246.     short                        qType;
  247.     short                        dtFlags;
  248.     DeferredTaskUPP                dtAddr;
  249.     long                        dtParam;
  250.     long                        dtReserved;
  251. };
  252. #if defined(powerc) || defined(__powerc)
  253. #pragma options align=reset
  254. #endif
  255.  
  256. typedef struct DeferredTask DeferredTask;
  257.  
  258. typedef DeferredTask *DeferredTaskPtr;
  259.  
  260. #if defined(powerc) || defined (__powerc)
  261. #pragma options align=mac68k
  262. #endif
  263. struct SysEnvRec {
  264.     short                        environsVersion;
  265.     short                        machineType;
  266.     short                        systemVersion;
  267.     short                        processor;
  268.     Boolean                        hasFPU;
  269.     Boolean                        hasColorQD;
  270.     short                        keyBoardType;
  271.     short                        atDrvrVersNum;
  272.     short                        sysVRefNum;
  273. };
  274. #if defined(powerc) || defined(__powerc)
  275. #pragma options align=reset
  276. #endif
  277.  
  278. typedef struct SysEnvRec SysEnvRec;
  279.  
  280. #if defined(powerc) || defined (__powerc)
  281. #pragma options align=mac68k
  282. #endif
  283. struct MachineLocation {
  284.     Fract                        latitude;
  285.     Fract                        longitude;
  286.     union {
  287.         char                        dlsDelta;                    /*signed byte; daylight savings delta*/
  288.         long                        gmtDelta;                    /*must mask - see documentation*/
  289.     }                            gmtFlags;
  290. };
  291. #if defined(powerc) || defined(__powerc)
  292. #pragma options align=reset
  293. #endif
  294.  
  295. typedef struct MachineLocation MachineLocation;
  296.  
  297. #if defined(powerc) || defined (__powerc)
  298. #pragma options align=mac68k
  299. #endif
  300. struct DateTimeRec {
  301.     short                        year;
  302.     short                        month;
  303.     short                        day;
  304.     short                        hour;
  305.     short                        minute;
  306.     short                        second;
  307.     short                        dayOfWeek;
  308. };
  309. #if defined(powerc) || defined(__powerc)
  310. #pragma options align=reset
  311. #endif
  312.  
  313. typedef struct DateTimeRec DateTimeRec;
  314.  
  315. typedef wide LongDateTime;
  316.  
  317. #if defined(powerc) || defined (__powerc)
  318. #pragma options align=mac68k
  319. #endif
  320. union LongDateCvt {
  321.     wide                        c;
  322.     struct {
  323.         long                        lHigh;
  324.         long                        lLow;
  325.     }                            hl;
  326. };
  327. #if defined(powerc) || defined(__powerc)
  328. #pragma options align=reset
  329. #endif
  330.  
  331. typedef union LongDateCvt LongDateCvt;
  332.  
  333. #if defined(powerc) || defined (__powerc)
  334. #pragma options align=mac68k
  335. #endif
  336. union LongDateRec {
  337.     struct {
  338.         short                        era;
  339.         short                        year;
  340.         short                        month;
  341.         short                        day;
  342.         short                        hour;
  343.         short                        minute;
  344.         short                        second;
  345.         short                        dayOfWeek;
  346.         short                        dayOfYear;
  347.         short                        weekOfYear;
  348.         short                        pm;
  349.         short                        res1;
  350.         short                        res2;
  351.         short                        res3;
  352.     }                            ld;
  353.     short                        list[14];                        /*Index by LongDateField!*/
  354.     struct {
  355.         short                        eraAlt;
  356.         DateTimeRec                    oldDate;
  357.     }                            od;
  358. };
  359. #if defined(powerc) || defined(__powerc)
  360. #pragma options align=reset
  361. #endif
  362.  
  363. typedef union LongDateRec LongDateRec;
  364.  
  365. typedef char DateDelta;
  366.  
  367. #if defined(powerc) || defined (__powerc)
  368. #pragma options align=mac68k
  369. #endif
  370. struct TogglePB {
  371.     long                        togFlags;                        /*caller normally sets low word to dateStdMask=$7F*/
  372.     ResType                        amChars;                        /*from 'itl0', but uppercased*/
  373.     ResType                        pmChars;                        /*from 'itl0', but uppercased*/
  374.     long                        reserved[4];
  375. };
  376. #if defined(powerc) || defined(__powerc)
  377. #pragma options align=reset
  378. #endif
  379.  
  380. typedef struct TogglePB TogglePB;
  381.  
  382. typedef short ToggleResults;
  383.  
  384. #ifdef __cplusplus
  385. extern "C" {
  386. #endif
  387.  
  388. extern pascal void LongDateToSeconds(const LongDateRec *lDate, LongDateTime *lSecs)
  389.  FOURWORDINLINE(0x2F3C, 0x8008, 0xFFF2, 0xA8B5);
  390. extern pascal void LongSecondsToDate(LongDateTime *lSecs, LongDateRec *lDate)
  391.  FOURWORDINLINE(0x2F3C, 0x8008, 0xFFF0, 0xA8B5);
  392. extern pascal ToggleResults ToggleDate(LongDateTime *lSecs, LongDateField field, DateDelta delta, short ch, const TogglePB *params)
  393.  FOURWORDINLINE(0x2F3C, 0x820E, 0xFFEE, 0xA8B5);
  394. extern pascal short ValidDate(const LongDateRec *vDate, long flags, LongDateTime *newSecs)
  395.  FOURWORDINLINE(0x2F3C, 0x820C, 0xFFE4, 0xA8B5);
  396. extern pascal Boolean IsMetric(void)
  397.  THREEWORDINLINE(0x3F3C, 0x0004, 0xA9ED);
  398. #if USESCODEFRAGMENTS
  399. extern pascal SysPPtr GetSysPPtr(void);
  400. #else
  401. #define GetSysPPtr() ((SysPPtr) 0x01F8)
  402.  
  403. #endif
  404.  
  405.  
  406. #if USES68KINLINES
  407. #pragma parameter __D0 ReadDateTime(__A0)
  408. #endif
  409. extern pascal OSErr ReadDateTime(unsigned long *time)
  410.  ONEWORDINLINE(0xA039);
  411.  
  412. #if USES68KINLINES
  413. #pragma parameter  GetDateTime(__A0)
  414. #endif
  415. extern pascal void GetDateTime(unsigned long *secs)
  416.  TWOWORDINLINE(0x20B8, 0x020C);
  417.  
  418. #if USES68KINLINES
  419. #pragma parameter __D0 SetDateTime(__D0)
  420. #endif
  421. extern pascal OSErr SetDateTime(unsigned long time)
  422.  ONEWORDINLINE(0xA03A);
  423.  
  424. #if USES68KINLINES
  425. #pragma parameter  SetTime(__A0)
  426. #endif
  427. extern pascal void SetTime(const DateTimeRec *d)
  428.  TWOWORDINLINE(0xA9C7, 0xA03A);
  429.  
  430. #if USES68KINLINES
  431. #pragma parameter  GetTime(__A0)
  432. #endif
  433. extern pascal void GetTime(DateTimeRec *d)
  434.  THREEWORDINLINE(0x2038, 0x020C, 0xA9C6);
  435. extern pascal void DateToSeconds(const DateTimeRec *d, unsigned long *secs);
  436.  
  437. #if USES68KINLINES
  438. #pragma parameter  SecondsToDate(__D0, __A0)
  439. #endif
  440. extern pascal void SecondsToDate(unsigned long secs, DateTimeRec *d)
  441.  ONEWORDINLINE(0xA9C6);
  442. extern pascal void SysBeep(short duration)
  443.  ONEWORDINLINE(0xA9C8);
  444.  
  445. #if USES68KINLINES
  446. #pragma parameter __D0 DTInstall(__A0)
  447. #endif
  448. extern pascal OSErr DTInstall(DeferredTaskPtr dtTaskPtr)
  449.  ONEWORDINLINE(0xA082);
  450. #if USES68KINLINES
  451. #define GetMMUMode() (* (char*) 0x0CB2)
  452.  
  453.  
  454. #if USES68KINLINES
  455. #pragma parameter  SwapMMUMode(__A0)
  456. #endif
  457. extern pascal void SwapMMUMode(char *mode)
  458.  THREEWORDINLINE(0x1010, 0xA05D, 0x1080);
  459. #else
  460. #define GetMMUMode() ((char)true32b)
  461.  
  462. #define SwapMMUMode(x) (*(char*)(x) = true32b)
  463.  
  464. #endif
  465.  
  466. #if SystemSixOrLater
  467.  
  468. #if USES68KINLINES
  469. #pragma parameter __D0 SysEnvirons(__D0, __A0)
  470. #endif
  471. extern pascal OSErr SysEnvirons(short versionRequested, SysEnvRec *theWorld)
  472.  ONEWORDINLINE(0xA090);
  473. #else
  474. extern pascal OSErr SysEnvirons(short versionRequested, SysEnvRec *theWorld);
  475. #endif
  476.  
  477.  
  478. #if USES68KINLINES
  479. #pragma parameter  Delay(__A0, __A1)
  480. #endif
  481. extern pascal void Delay(long numTicks, long *finalTicks)
  482.  TWOWORDINLINE(0xA03B, 0x2280);
  483.  
  484. /*
  485.     GetTrapAddress and SetTrapAddress are obsolete and should not
  486.     be used. Always use NGetTrapAddress and NSetTrapAddress instead.
  487.     The old routines will not be supported for PowerPC apps.
  488. */
  489.  
  490. #if defined(OBSOLETE) && !defined(powerc) && !defined(__powerc)
  491.  
  492. #if USES68KINLINES
  493. #pragma parameter __A0 GetTrapAddress(__D0)
  494. #endif
  495. extern pascal UniversalProcPtr GetTrapAddress(short trapNum)
  496.  ONEWORDINLINE(0xA146);
  497.  
  498. #if USES68KINLINES
  499. #pragma parameter  SetTrapAddress(__A0, __D0)
  500. #endif
  501. extern pascal void SetTrapAddress(UniversalProcPtr trapAddr, short trapNum)
  502.  ONEWORDINLINE(0xA047);
  503. #endif
  504.  
  505. extern pascal UniversalProcPtr NGetTrapAddress(short trapNum, TrapType tTyp);
  506. extern pascal void NSetTrapAddress(UniversalProcPtr trapAddr, short trapNum, TrapType tTyp);
  507.  
  508. #if USES68KINLINES
  509. #pragma parameter __A0 GetOSTrapAddress(__D0)
  510. #endif
  511. extern pascal UniversalProcPtr GetOSTrapAddress(short trapNum)
  512.  ONEWORDINLINE(0xA346);
  513.  
  514. #if USES68KINLINES
  515. #pragma parameter  SetOSTrapAddress(__A0, __D0)
  516. #endif
  517. extern pascal void SetOSTrapAddress(UniversalProcPtr trapAddr, short trapNum)
  518.  ONEWORDINLINE(0xA247);
  519.  
  520. #if USES68KINLINES
  521. #pragma parameter __A0 GetToolTrapAddress(__D0)
  522. #endif
  523. extern pascal UniversalProcPtr GetToolTrapAddress(short trapNum)
  524.  ONEWORDINLINE(0xA746);
  525.  
  526. #if USES68KINLINES
  527. #pragma parameter  SetToolTrapAddress(__A0, __D0)
  528. #endif
  529. extern pascal void SetToolTrapAddress(UniversalProcPtr trapAddr, short trapNum)
  530.  ONEWORDINLINE(0xA647);
  531.  
  532. #if USES68KINLINES
  533. #pragma parameter __A0 GetToolboxTrapAddress(__D0)
  534. #endif
  535. extern pascal UniversalProcPtr GetToolboxTrapAddress(short trapNum)
  536.  ONEWORDINLINE(0xA746);
  537.  
  538. #if USES68KINLINES
  539. #pragma parameter  SetToolboxTrapAddress(__A0, __D0)
  540. #endif
  541. extern pascal void SetToolboxTrapAddress(UniversalProcPtr trapAddr, short trapNum)
  542.  ONEWORDINLINE(0xA647);
  543. extern pascal OSErr WriteParam(void);
  544.  
  545. #if USES68KINLINES
  546. #pragma parameter  Enqueue(__A0, __A1)
  547. #endif
  548. extern pascal void Enqueue(QElemPtr qElement, QHdrPtr qHeader)
  549.  ONEWORDINLINE(0xA96F);
  550.  
  551. #if USES68KINLINES
  552. #pragma parameter __D0 Dequeue(__A0, __A1)
  553. #endif
  554. extern pascal OSErr Dequeue(QElemPtr qElement, QHdrPtr qHeader)
  555.  ONEWORDINLINE(0xA96E);
  556. extern long SetCurrentA5(void)
  557.  THREEWORDINLINE(0x200D, 0x2A78, 0x0904);
  558.  
  559. #if USES68KINLINES
  560. #pragma parameter __D0 SetA5(__D0)
  561. #endif
  562. extern long SetA5(long newA5)
  563.  ONEWORDINLINE(0xC18D);
  564. #if !SystemSevenOrLater
  565. extern pascal void Environs(short *rom, short *machine);
  566. #endif
  567.  
  568. extern pascal OSErr HandToHand(Handle *theHndl);
  569.  
  570. #if USES68KINLINES
  571. #pragma parameter __D0 PtrToXHand(__A0, __A1, __D0)
  572. #endif
  573. extern pascal OSErr PtrToXHand(const void *srcPtr, Handle dstHndl, long size)
  574.  ONEWORDINLINE(0xA9E2);
  575. extern pascal OSErr PtrToHand(const void *srcPtr, Handle *dstHndl, long size);
  576.  
  577. #if USES68KINLINES
  578. #pragma parameter __D0 HandAndHand(__A0, __A1)
  579. #endif
  580. extern pascal OSErr HandAndHand(Handle hand1, Handle hand2)
  581.  ONEWORDINLINE(0xA9E4);
  582.  
  583. #if USES68KINLINES
  584. #pragma parameter __D0 PtrAndHand(__A0, __A1, __D0)
  585. #endif
  586. extern pascal OSErr PtrAndHand(const void *ptr1, Handle hand2, long size)
  587.  ONEWORDINLINE(0xA9EF);
  588.  
  589. #if USES68KINLINES
  590. #pragma parameter __D0 InitUtil
  591. #endif
  592. extern pascal OSErr InitUtil(void)
  593.  ONEWORDINLINE(0xA03F);
  594. #if defined(powerc) || defined(__powerc)
  595. extern pascal void MakeDataExecutable(void *baseAddress, unsigned long length);
  596. #else
  597. extern pascal Boolean SwapInstructionCache(Boolean cacheEnable);
  598. extern pascal void FlushInstructionCache(void);
  599. extern pascal Boolean SwapDataCache(Boolean cacheEnable);
  600. extern pascal void FlushDataCache(void);
  601. #endif
  602.  
  603. extern pascal void ReadLocation(MachineLocation *loc)
  604.  FIVEWORDINLINE(0x205F, 0x203C, 0x000C, 0x00E4, 0xA051);
  605. extern pascal void WriteLocation(const MachineLocation *loc)
  606.  FIVEWORDINLINE(0x205F, 0x203C, 0x000C, 0x00E4, 0xA052);
  607. #if !USES68KINLINES
  608. extern pascal UniversalProcPtr *GetTrapVector(short trapNumber);
  609. #endif
  610.  
  611. #if OLDROUTINENAMES
  612. #define LongDate2Secs(lDate, lSecs) LongDateToSeconds(lDate, lSecs)
  613.  
  614. #define LongSecs2Date(lSecs, lDate) LongSecondsToDate(lSecs, lDate)
  615.  
  616. #define IUMetric() IsMetric()
  617.  
  618. #define Date2Secs(d, secs) DateToSeconds(d, secs)
  619.  
  620. #define Secs2Date(secs, d) SecondsToDate(secs, d)
  621.  
  622. #endif
  623.  
  624. #ifdef __cplusplus
  625. }
  626. #endif
  627.  
  628. #endif
  629.  
  630.