home *** CD-ROM | disk | FTP | other *** search
Wrap
/* File: InstrumentationMacros.h Contains: Useful C macros for instrumenting code. Version: 1.0 DRI: Roger Pantos Copyright: © 1984-1996 by Apple Computer, Inc. All rights reserved. Warning: *** APPLE INTERNAL USE ONLY *** This file contains unreleased SPI's */ #ifndef __INSTRUMENTATIONMACROS__ #define __INSTRUMENTATIONMACROS__ #include "Instrumentation.h" #ifndef INSTRUMENTATION_ACTIVE #define INSTRUMENTATION_ACTIVE 1 #endif /* Shielding macros: call is made only if INSTRUMENTATION_ACTIVE is non-zero. */ #define m_InstInitialize68K() ( INSTRUMENTATION_ACTIVE ? InstInitialize68K() : 0 ) #define m_InstTerminate68K() ( INSTRUMENTATION_ACTIVE ? InstTerminate68K() : 0 ) #define m_InstCreatePathClass( p, n, o, r) ( INSTRUMENTATION_ACTIVE ? InstCreatePathClass( p, n, o, r) : 0 ) #define m_InstCreateTraceClass( p, n, c, o, r) ( INSTRUMENTATION_ACTIVE ? InstCreateTraceClass( p, n, c, o, r) : 0 ) #define m_InstCreateHistogramClass( p, n, l, u, w, o, r) ( INSTRUMENTATION_ACTIVE ? InstCreateHistogramClass( p, n, l, u, w, o, r) : 0 ) #define m_InstCreateSplitHistogramClass( p, n, l, w, k, u, b, o, r) ( INSTRUMENTATION_ACTIVE ? InstCreateSplitHistogramClass( p, n, l, w, k, u, b, o, r) : 0 ) #define m_InstCreateMagnitudeClass( p, n, o, r) ( INSTRUMENTATION_ACTIVE ? InstCreateMagnitudeClass( p, n, o, r) : 0 ) #define m_InstCreateGrowthClass( p, n, o, r) ( INSTRUMENTATION_ACTIVE ? InstCreateGrowthClass( p, n, o, r) : 0 ) #define m_InstCreateTallyClass( p, n, m, o, r) ( INSTRUMENTATION_ACTIVE ? InstCreateTallyClass( p, n, m, o, r) : 0 ) #define m_InstCreateDataDescriptor( f, r) ( INSTRUMENTATION_ACTIVE ? InstCreateDataDescriptor( f, r) : 0 ) #define m_InstCreateDataDescriptors( f, n, r) ( INSTRUMENTATION_ACTIVE ? InstCreateDataDescriptors( f, n, r) : 0 ) #define m_InstCreateEventTag() ( INSTRUMENTATION_ACTIVE ? InstCreateEventTag() : 0 ) #define m_InstEnableClass( c) ( INSTRUMENTATION_ACTIVE ? InstEnableClass( c) : 0 ) #define m_InstDisableClass( c) ( INSTRUMENTATION_ACTIVE ? InstDisableClass( c) : 0 ) #define m_InstDisposeClass( c) ( INSTRUMENTATION_ACTIVE ? InstDisposeClass( c) : (void) 0) #define m_InstDisposeDataDescriptor( d) ( INSTRUMENTATION_ACTIVE ? InstDisposeDataDescriptor( d) : (void) 0) #define m_InstDisposeDataDescriptors( d, n) ( INSTRUMENTATION_ACTIVE ? InstDisposeDataDescriptors( d, n) : (void) 0) #define m_InstUpdateHistogram( c, v, n) ( INSTRUMENTATION_ACTIVE ? InstUpdateHistogram( c, v, n) : (void) 0) #define m_InstUpdateMagnitudeAbsolute( c, v) ( INSTRUMENTATION_ACTIVE ? InstUpdateMagnitudeAbsolute( c, v) : (void) 0) #define m_InstUpdateMagnitudeDelta( c, d) ( INSTRUMENTATION_ACTIVE ? InstUpdateMagnitudeDelta( c, d) : (void) 0) #define m_InstUpdateGrowth( c, i) ( INSTRUMENTATION_ACTIVE ? InstUpdateGrowth( c, i) : (void) 0) #define m_InstUpdateTally( c, b, n) ( INSTRUMENTATION_ACTIVE ? InstUpdateTally( c, b, n) : (void) 0) #define m_InstLogTraceEvent( c, t, o) ( INSTRUMENTATION_ACTIVE ? InstLogTraceEvent( c, t, o) : (void) 0) // InstLogTraceEventWithData(), a var-args function, must be conditionalized manually. #define m_InstLogTraceEventWithDataStructure( c, t, o, d, p, s) ( INSTRUMENTATION_ACTIVE ? InstLogTraceEventWithDataStructure( c, t, o, d, p, s) : (void) 0) /* Convenience macros: shortcuts for doing common tasks */ /* Use the following three macros to produce entry/exit traces. Usage is: void foo() { TRACE_SETUP; LOG_ENTRY( "MyApp:foo" ); // foo's code ... LOG_EXIT; } */ #define TRACE_SETUP static InstTraceClassRef __sTrace = 0; InstEventTag __tTag #define LOG_ENTRY( n ) if ( INSTRUMENTATION_ACTIVE && ( __sTrace || noErr == InstCreateTraceClass( kInstRootClassRef, n, 0, kInstEnableClassMask, &__sTrace))) \ { __tTag = InstCreateEventTag(); InstLogTraceEvent( __sTrace, __tTag, kInstStartEvent); } #define LOG_SUMM_ENTRY( n ) if ( INSTRUMENTATION_ACTIVE && ( __sTrace || noErr == InstCreateTraceClass( kInstRootClassRef, n, 0, kInstEnableClassMask | kInstSummaryTraceClassMask, &__sTrace))) \ { __tTag = InstCreateEventTag(); InstLogTraceEvent( __sTrace, __tTag, kInstStartEvent); } #define LOG_EXIT if ( INSTRUMENTATION_ACTIVE) InstLogTraceEvent( __sTrace, __tTag, kInstEndEvent) #endif /* __INSTRUMENTATIONMACROS__ */