InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
MResourceAccessX.h
1 /*************************************************************************
2  *
3  * ADOBE CONFIDENTIAL
4  * ___________________
5  *
6  * Copyright 2025 Adobe
7  * All Rights Reserved.
8  *
9  * NOTICE: All information contained herein is, and remains
10  * the property of Adobe and its suppliers, if any. The intellectual
11  * and technical concepts contained herein are proprietary to Adobe
12  * and its suppliers and are protected by all applicable intellectual
13  * property laws, including trade secret and copyright laws.
14  * Dissemination of this information or reproduction of this material
15  * is strictly forbidden unless prior written permission is obtained
16  * from Adobe.
17  **************************************************************************/
18 
19 #ifndef __MResourceAccessX__
20 #define __MResourceAccessX__
21 
22 #include "MBaseResourceAccessX.h"
23 
24 // This is required for the linker due to the friend declarations below.
25 extern "C" {
26  void InitConnection();
27  void TerminateConnection();
28 }
29 
39 {
40 public:
48  MResourceAccessX(const IDFile* resourceFile);
52  MResourceAccessX(NSBundle* bundle);
56  MResourceAccessX(PluginID plugin);
57 
59  virtual ~MResourceAccessX();
60 
62  static void SetResourceFile(const IDFile* rsrcFileLocation);
63 
65  static void SetPluginBundle(CFBundleRef bundle);
66 
67 private:
68  // The IDFile pointer in gPluginResourceFileInfo needs to be allocated very
69  // early in InitConnection() and deallocated in TerminateConnection(). Make
70  // the functions friends to give them access to gPluginResourceFileInfo.
71  friend class PlugIn;
72  friend class MResourceAccessXCleanerUpper;
73  friend void InitConnection();
74  static ResourceFileInfo gPluginResourceFileInfo;
75 
76 #ifdef DEBUG
77  int32 fOldNumResAccesses; // to catch unneeded usages
78 #endif
79 };
80 
81 // Used by the runtime to destruct the static MResourceAccessX::gPluginResourceFileInfo a bit earlier than usual,
82 // to aid our leak tracking code.
84 {
85 public:
86  MResourceAccessXCleanerUpper(char* dylibName = nil);
88 
89  char* fDylibName;
90 };
91 
92 
93 #endif // __MResourceAccessX__