Timer.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:8k
- /*
- File: Timer.h
-
- Contains: Time Manager interfaces.
-
- Version: Technology: Mac OS 8.5
- Release: QuickTime 6.0.2
-
- Copyright: (c) 1985-2001 by Apple Computer, Inc., all rights reserved
-
- Bugs?: For bug reports, consult the following page on
- the World Wide Web:
-
- http://developer.apple.com/bugreporter/
-
- */
- #ifndef __TIMER__
- #define __TIMER__
- #ifndef __CONDITIONALMACROS__
- #include "ConditionalMacros.h"
- #endif
- #ifndef __MACTYPES__
- #include "MacTypes.h"
- #endif
- #ifndef __OSUTILS__
- #include "OSUtils.h"
- #endif
- #if PRAGMA_ONCE
- #pragma once
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif
- #if PRAGMA_IMPORT
- #pragma import on
- #endif
- #if PRAGMA_STRUCT_ALIGN
- #pragma options align=mac68k
- #elif PRAGMA_STRUCT_PACKPUSH
- #pragma pack(push, 2)
- #elif PRAGMA_STRUCT_PACK
- #pragma pack(2)
- #endif
- enum {
- /* high bit of qType is set if task is active */
- kTMTaskActive = (1L << 15)
- };
- typedef struct TMTask TMTask;
- typedef TMTask * TMTaskPtr;
- typedef CALLBACK_API( void , TimerProcPtr )(TMTaskPtr tmTaskPtr);
- /*
- WARNING: TimerProcPtr uses register based parameters under classic 68k
- and cannot be written in a high-level language without
- the help of mixed mode or assembly glue.
- */
- typedef REGISTER_UPP_TYPE(TimerProcPtr) TimerUPP;
- struct TMTask {
- QElemPtr qLink;
- short qType;
- TimerUPP tmAddr;
- long tmCount;
- long tmWakeUp;
- long tmReserved;
- };
- #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
- #pragma parameter InsTime(__A0)
- #endif
- EXTERN_API( void )
- InsTime (QElemPtr tmTaskPtr) ONEWORDINLINE(0xA058);
- #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
- #pragma parameter InsXTime(__A0)
- #endif
- EXTERN_API( void )
- InsXTime (QElemPtr tmTaskPtr) ONEWORDINLINE(0xA458);
- #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
- #pragma parameter PrimeTime(__A0, __D0)
- #endif
- EXTERN_API( void )
- PrimeTime (QElemPtr tmTaskPtr,
- long count) ONEWORDINLINE(0xA05A);
- #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
- #pragma parameter RmvTime(__A0)
- #endif
- EXTERN_API( void )
- RmvTime (QElemPtr tmTaskPtr) ONEWORDINLINE(0xA059);
- /* InstallTimeTask, InstallXTimeTask, PrimeTimeTask and RemoveTimeTask work */
- /* just like InsTime, InsXTime, PrimeTime, and RmvTime except that they */
- /* return an OSErr result. */
- #if CALL_NOT_IN_CARBON
- #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
- #pragma parameter __D0 InstallTimeTask(__A0)
- #endif
- EXTERN_API( OSErr )
- InstallTimeTask (QElemPtr tmTaskPtr) ONEWORDINLINE(0xA058);
- #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
- #pragma parameter __D0 InstallXTimeTask(__A0)
- #endif
- EXTERN_API( OSErr )
- InstallXTimeTask (QElemPtr tmTaskPtr) ONEWORDINLINE(0xA458);
- #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
- #pragma parameter __D0 PrimeTimeTask(__A0, __D0)
- #endif
- EXTERN_API( OSErr )
- PrimeTimeTask (QElemPtr tmTaskPtr,
- long count) ONEWORDINLINE(0xA05A);
- #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
- #pragma parameter __D0 RemoveTimeTask(__A0)
- #endif
- EXTERN_API( OSErr )
- RemoveTimeTask (QElemPtr tmTaskPtr) ONEWORDINLINE(0xA059);
- #endif /* CALL_NOT_IN_CARBON */
- EXTERN_API( void )
- Microseconds (UnsignedWide * microTickCount) FOURWORDINLINE(0xA193, 0x225F, 0x22C8, 0x2280);
- #if OPAQUE_UPP_TYPES
- EXTERN_API(TimerUPP)
- NewTimerUPP (TimerProcPtr userRoutine);
- EXTERN_API(void)
- DisposeTimerUPP (TimerUPP userUPP);
- EXTERN_API(void)
- InvokeTimerUPP (TMTaskPtr tmTaskPtr,
- TimerUPP userUPP);
- #else
- enum { uppTimerProcInfo = 0x0000B802 }; /* register no_return_value Func(4_bytes:A1) */
- #define NewTimerUPP(userRoutine) (TimerUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppTimerProcInfo, GetCurrentArchitecture())
- #define DisposeTimerUPP(userUPP) DisposeRoutineDescriptor(userUPP)
- #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
- #pragma parameter InvokeTimerUPP(__A1, __A0)
- void InvokeTimerUPP(TMTaskPtr tmTaskPtr, TimerUPP userUPP) = 0x4E90;
- #else
- #define InvokeTimerUPP(tmTaskPtr, userUPP) CALL_ONE_PARAMETER_UPP((userUPP), uppTimerProcInfo, (tmTaskPtr))
- #endif
- #endif
- /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
- #define NewTimerProc(userRoutine) NewTimerUPP(userRoutine)
- #define CallTimerProc(userRoutine, tmTaskPtr) InvokeTimerUPP(tmTaskPtr, userRoutine)
- #if PRAGMA_STRUCT_ALIGN
- #pragma options align=reset
- #elif PRAGMA_STRUCT_PACKPUSH
- #pragma pack(pop)
- #elif PRAGMA_STRUCT_PACK
- #pragma pack()
- #endif
- #ifdef PRAGMA_IMPORT_OFF
- #pragma import off
- #elif PRAGMA_IMPORT
- #pragma import reset
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif /* __TIMER__ */