home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Interfaces / CIncludes / Resources.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-11  |  8.4 KB  |  248 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Resources.h
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Friday, November 11, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. */
  16.  
  17. #ifndef __RESOURCES__
  18. #define __RESOURCES__
  19.  
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. /*    #include <ConditionalMacros.h>                                */
  25.  
  26. #ifndef __MIXEDMODE__
  27. #include <MixedMode.h>
  28. #endif
  29.  
  30. #ifndef __FILES__
  31. #include <Files.h>
  32. #endif
  33. /*    #include <OSUtils.h>                                        */
  34. /*        #include <Memory.h>                                        */
  35.  
  36. #ifdef __cplusplus
  37. extern "C" {
  38. #endif
  39.  
  40. #if GENERATINGPOWERPC
  41. #pragma options align=mac68k
  42. #endif
  43.  
  44. #ifdef __CFM68K__
  45. #pragma lib_export on
  46. #endif
  47.  
  48.  
  49. enum {
  50.     resSysHeap                    = 64,                            /*System or application heap?*/
  51.     resPurgeable                = 32,                            /*Purgeable resource?*/
  52.     resLocked                    = 16,                            /*Load it in locked?*/
  53.     resProtected                = 8,                            /*Protected?*/
  54.     resPreload                    = 4,                            /*Load in on OpenResFile?*/
  55.     resChanged                    = 2,                            /*Resource changed?*/
  56.     mapReadOnly                    = 128,                            /*Resource file read-only*/
  57.     mapCompact                    = 64,                            /*Compact resource file*/
  58.     mapChanged                    = 32,                            /*Write map out at update*/
  59.     kResFileNotOpened            = -1,                            /*ref num return as error when opening a resource file*/
  60.     kSystemResFile                = 0                                /*this is the default ref num to the system file*/
  61. };
  62.  
  63. /*
  64.         ResErrProcPtr uses register based parameters on the 68k and cannot
  65.         be written in or called from a high-level language without the help of
  66.         mixed mode or assembly glue.
  67.  
  68.         In:
  69.          => thErr           D0.W
  70. */
  71.  
  72. #if GENERATINGCFM
  73. typedef UniversalProcPtr ResErrUPP;
  74. #else
  75. typedef Register68kProcPtr ResErrUPP;
  76. #endif
  77.  
  78. enum {
  79.     uppResErrProcInfo = kRegisterBased
  80.          | REGISTER_ROUTINE_PARAMETER(1, kRegisterD0, SIZE_CODE(sizeof(OSErr)))
  81. };
  82.  
  83. #if GENERATINGCFM
  84. #define NewResErrProc(userRoutine)        \
  85.         (ResErrUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppResErrProcInfo, GetCurrentArchitecture())
  86. #else
  87. #define NewResErrProc(userRoutine)        \
  88.         ((ResErrUPP) (userRoutine))
  89. #endif
  90.  
  91. #if GENERATINGCFM
  92. #define CallResErrProc(userRoutine, thErr)        \
  93.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppResErrProcInfo, (thErr))
  94. #else
  95. /* (*ResErrProcPtr) cannot be called from a high-level language without the Mixed Mode Manager */
  96. #endif
  97.  
  98. extern pascal short InitResources(void)
  99.  ONEWORDINLINE(0xA995);
  100. extern pascal void RsrcZoneInit(void)
  101.  ONEWORDINLINE(0xA996);
  102. extern pascal void CloseResFile(short refNum)
  103.  ONEWORDINLINE(0xA99A);
  104. extern pascal short ResError(void)
  105.  ONEWORDINLINE(0xA9AF);
  106. extern pascal short CurResFile(void)
  107.  ONEWORDINLINE(0xA994);
  108. extern pascal short HomeResFile(Handle theResource)
  109.  ONEWORDINLINE(0xA9A4);
  110. extern pascal void CreateResFile(ConstStr255Param fileName)
  111.  ONEWORDINLINE(0xA9B1);
  112. extern pascal short OpenResFile(ConstStr255Param fileName)
  113.  ONEWORDINLINE(0xA997);
  114. extern pascal void UseResFile(short refNum)
  115.  ONEWORDINLINE(0xA998);
  116. extern pascal short CountTypes(void)
  117.  ONEWORDINLINE(0xA99E);
  118. extern pascal short Count1Types(void)
  119.  ONEWORDINLINE(0xA81C);
  120. extern pascal void GetIndType(ResType *theType, short index)
  121.  ONEWORDINLINE(0xA99F);
  122. extern pascal void Get1IndType(ResType *theType, short index)
  123.  ONEWORDINLINE(0xA80F);
  124. extern pascal void SetResLoad(Boolean load)
  125.  ONEWORDINLINE(0xA99B);
  126. extern pascal short CountResources(ResType theType)
  127.  ONEWORDINLINE(0xA99C);
  128. extern pascal short Count1Resources(ResType theType)
  129.  ONEWORDINLINE(0xA80D);
  130. extern pascal Handle GetIndResource(ResType theType, short index)
  131.  ONEWORDINLINE(0xA99D);
  132. extern pascal Handle Get1IndResource(ResType theType, short index)
  133.  ONEWORDINLINE(0xA80E);
  134. extern pascal Handle GetResource(ResType theType, short theID)
  135.  ONEWORDINLINE(0xA9A0);
  136. extern pascal Handle Get1Resource(ResType theType, short theID)
  137.  ONEWORDINLINE(0xA81F);
  138. extern pascal Handle GetNamedResource(ResType theType, ConstStr255Param name)
  139.  ONEWORDINLINE(0xA9A1);
  140. extern pascal Handle Get1NamedResource(ResType theType, ConstStr255Param name)
  141.  ONEWORDINLINE(0xA820);
  142. extern pascal void LoadResource(Handle theResource)
  143.  ONEWORDINLINE(0xA9A2);
  144. extern pascal void ReleaseResource(Handle theResource)
  145.  ONEWORDINLINE(0xA9A3);
  146. extern pascal void DetachResource(Handle theResource)
  147.  ONEWORDINLINE(0xA992);
  148. extern pascal short UniqueID(ResType theType)
  149.  ONEWORDINLINE(0xA9C1);
  150. extern pascal short Unique1ID(ResType theType)
  151.  ONEWORDINLINE(0xA810);
  152. extern pascal short GetResAttrs(Handle theResource)
  153.  ONEWORDINLINE(0xA9A6);
  154. extern pascal void GetResInfo(Handle theResource, short *theID, ResType *theType, Str255 name)
  155.  ONEWORDINLINE(0xA9A8);
  156. extern pascal void SetResInfo(Handle theResource, short theID, ConstStr255Param name)
  157.  ONEWORDINLINE(0xA9A9);
  158. extern pascal void AddResource(Handle theData, ResType theType, short theID, ConstStr255Param name)
  159.  ONEWORDINLINE(0xA9AB);
  160. extern pascal long GetResourceSizeOnDisk(Handle theResource)
  161.  ONEWORDINLINE(0xA9A5);
  162. extern pascal long GetMaxResourceSize(Handle theResource)
  163.  ONEWORDINLINE(0xA821);
  164. extern pascal long RsrcMapEntry(Handle theResource)
  165.  ONEWORDINLINE(0xA9C5);
  166. extern pascal void SetResAttrs(Handle theResource, short attrs)
  167.  ONEWORDINLINE(0xA9A7);
  168. extern pascal void ChangedResource(Handle theResource)
  169.  ONEWORDINLINE(0xA9AA);
  170. extern pascal void RemoveResource(Handle theResource)
  171.  ONEWORDINLINE(0xA9AD);
  172. extern pascal void UpdateResFile(short refNum)
  173.  ONEWORDINLINE(0xA999);
  174. extern pascal void WriteResource(Handle theResource)
  175.  ONEWORDINLINE(0xA9B0);
  176. extern pascal void SetResPurge(Boolean install)
  177.  ONEWORDINLINE(0xA993);
  178. extern pascal short GetResFileAttrs(short refNum)
  179.  ONEWORDINLINE(0xA9F6);
  180. extern pascal void SetResFileAttrs(short refNum, short attrs)
  181.  ONEWORDINLINE(0xA9F7);
  182. extern pascal short OpenRFPerm(ConstStr255Param fileName, short vRefNum, SInt8 permission)
  183.  ONEWORDINLINE(0xA9C4);
  184. extern pascal Handle RGetResource(ResType theType, short theID)
  185.  ONEWORDINLINE(0xA80C);
  186. #if SystemSevenOrLater
  187. extern pascal short HOpenResFile(short vRefNum, long dirID, ConstStr255Param fileName, SInt8 permission)
  188.  ONEWORDINLINE(0xA81A);
  189. #else
  190. extern pascal short HOpenResFile(short vRefNum, long dirID, ConstStr255Param fileName, SInt8 permission);
  191. #endif
  192. #if SystemSevenOrLater
  193. extern pascal void HCreateResFile(short vRefNum, long dirID, ConstStr255Param fileName)
  194.  ONEWORDINLINE(0xA81B);
  195. #else
  196. extern pascal void HCreateResFile(short vRefNum, long dirID, ConstStr255Param fileName);
  197. #endif
  198. extern pascal short FSpOpenResFile(const FSSpec *spec, SignedByte permission)
  199.  TWOWORDINLINE(0x700D, 0xAA52);
  200. extern pascal void FSpCreateResFile(const FSSpec *spec, OSType creator, OSType fileType, ScriptCode scriptTag)
  201.  TWOWORDINLINE(0x700E, 0xAA52);
  202. /*  partial resource calls  */
  203. extern pascal void ReadPartialResource(Handle theResource, long offset, void *buffer, long count)
  204.  TWOWORDINLINE(0x7001, 0xA822);
  205. extern pascal void WritePartialResource(Handle theResource, long offset, const void *buffer, long count)
  206.  TWOWORDINLINE(0x7002, 0xA822);
  207. extern pascal void SetResourceSize(Handle theResource, long newSize)
  208.  TWOWORDINLINE(0x7003, 0xA822);
  209. extern pascal Handle GetNextFOND(Handle fondHandle)
  210.  TWOWORDINLINE(0x700A, 0xA822);
  211. /* Use TempInsertROMMap to force the ROM resource map to be
  212.    inserted into the chain in front of the system. Note that
  213.    this call is only temporary - the modified resource chain
  214.    is only used for the next call to the resource manager.
  215.    See IM IV 19 for more information. */
  216. extern pascal void TempInsertROMMap(Boolean tempResLoad);
  217. #if CGLUESUPPORTED
  218. extern Handle getnamedresource(ResType theType, const char *name);
  219. extern Handle get1namedresource(ResType theType, const char *name);
  220. extern short openrfperm(const char *fileName, short vRefNum, char permission);
  221. extern short openresfile(const char *fileName);
  222. extern void createresfile(const char *fileName);
  223. extern void getresinfo(Handle theResource, short *theID, ResType *theType, char *name);
  224. extern void setresinfo(Handle theResource, short theID, const char *name);
  225. extern void addresource(Handle theResource, ResType theType, short theID, const char *name);
  226. #endif
  227. #if OLDROUTINENAMES
  228. #if CGLUESUPPORTED
  229. #define SizeResource(theResource) GetResourceSizeOnDisk(theResource)
  230. #define MaxSizeRsrc(theResource) GetMaxResourceSize(theResource)
  231. #define RmveResource(theResource) RemoveResource(theResource)
  232. #endif
  233. #endif
  234.  
  235. #ifdef __CFM68K__
  236. #pragma lib_export off
  237. #endif
  238.  
  239. #if GENERATINGPOWERPC
  240. #pragma options align=reset
  241. #endif
  242.  
  243. #ifdef __cplusplus
  244. }
  245. #endif
  246.  
  247. #endif /* __RESOURCES__ */
  248.