InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
SnpReferenceMacros.h
1 //========================================================================================
2 //
3 // $File$
4 //
5 // Owner: Adobe Developer Technologies
6 //
7 // $Author$
8 //
9 // $DateTime$
10 //
11 // $Revision$
12 //
13 // $Change$
14 //
15 // Copyright 1997-2010 Adobe Systems Incorporated. All rights reserved.
16 //
17 // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance
18 // with the terms of the Adobe license agreement accompanying it. If you have received
19 // this file from a source other than Adobe, then your use, modification, or
20 // distribution of it requires the prior written permission of Adobe.
21 //
22 //========================================================================================
23 
24 #ifndef _SnpReferenceMacros_
25 #define _SnpReferenceMacros_
26 
27 // ipaterso Fix Watson 1086461
28 // This is based on the pattern that CUnitTest used, except adapted
29 // so that we don't need to add into the xxxNoStrip.cpp of SnippetRunner itself
30 // each time we add a snippet.
31 
32 // On the Mac, we cannot guarantee that the linker won't attempt to deadstrip
33 // static initialization code (as sometimes all project settings are updated at once),
34 // the only way can be sure our static instances of
35 // SnpRunnable derived classes don't get stripped is to create an artifical
36 // reference to them
37 // To Snippet CPP file, add DEFINE_SNIPPET(_SnpRunnerWhateverSnippetName)
38 // To SnpRunNoStrip.cpp file, add REFERENCE_SNIPPET(_SnpRunnerWhateverSnippetName)
39 
40 
41 #define DEFINE_SNIPPET(Class) \
42  void ReferenceSnp##Class(); \
43  void ReferenceSnp##Class() { \
44  Class snp; \
45  }
46 
47 #define REFERENCE_SNIPPET(Class) \
48  void ReferenceSnp##Class(); \
49  ReferenceSnp##Class()
50 
51 
52 #endif // SnpReferenceMacros
53 
54 // End, SnpReferenceMacros.h
55