NameRegistry.pas 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722
  1. {
  2. File: NameRegistry.p
  3. Contains: NameRegistry Interfaces
  4. Version: Technology: MacOS
  5. Release: Universal Interfaces 3.4.2
  6. Copyright: © 1993-2002 by Apple Computer, Inc., all rights reserved.
  7. Bugs?: For bug reports, consult the following page on
  8. the World Wide Web:
  9. http://www.freepascal.org/bugs.html
  10. }
  11. {
  12. Modified for use with Free Pascal
  13. Version 200
  14. Please report any bugs to <[email protected]>
  15. }
  16. {$mode macpas}
  17. {$packenum 1}
  18. {$macro on}
  19. {$inline on}
  20. {$CALLING MWPASCAL}
  21. unit NameRegistry;
  22. interface
  23. {$setc UNIVERSAL_INTERFACES_VERSION := $0342}
  24. {$setc GAP_INTERFACES_VERSION := $0200}
  25. {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
  26. {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
  27. {$endc}
  28. {$ifc defined CPUPOWERPC and defined CPUI386}
  29. {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
  30. {$endc}
  31. {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
  32. {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
  33. {$endc}
  34. {$ifc not defined __ppc__ and defined CPUPOWERPC}
  35. {$setc __ppc__ := 1}
  36. {$elsec}
  37. {$setc __ppc__ := 0}
  38. {$endc}
  39. {$ifc not defined __i386__ and defined CPUI386}
  40. {$setc __i386__ := 1}
  41. {$elsec}
  42. {$setc __i386__ := 0}
  43. {$endc}
  44. {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
  45. {$error Conflicting definitions for __ppc__ and __i386__}
  46. {$endc}
  47. {$ifc defined __ppc__ and __ppc__}
  48. {$setc TARGET_CPU_PPC := TRUE}
  49. {$setc TARGET_CPU_X86 := FALSE}
  50. {$elifc defined __i386__ and __i386__}
  51. {$setc TARGET_CPU_PPC := FALSE}
  52. {$setc TARGET_CPU_X86 := TRUE}
  53. {$elsec}
  54. {$error Neither __ppc__ nor __i386__ is defined.}
  55. {$endc}
  56. {$setc TARGET_CPU_PPC_64 := FALSE}
  57. {$ifc defined FPC_BIG_ENDIAN}
  58. {$setc TARGET_RT_BIG_ENDIAN := TRUE}
  59. {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
  60. {$elifc defined FPC_LITTLE_ENDIAN}
  61. {$setc TARGET_RT_BIG_ENDIAN := FALSE}
  62. {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
  63. {$elsec}
  64. {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
  65. {$endc}
  66. {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
  67. {$setc CALL_NOT_IN_CARBON := FALSE}
  68. {$setc OLDROUTINENAMES := FALSE}
  69. {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
  70. {$setc OPAQUE_UPP_TYPES := TRUE}
  71. {$setc OTCARBONAPPLICATION := TRUE}
  72. {$setc OTKERNEL := FALSE}
  73. {$setc PM_USE_SESSION_APIS := TRUE}
  74. {$setc TARGET_API_MAC_CARBON := TRUE}
  75. {$setc TARGET_API_MAC_OS8 := FALSE}
  76. {$setc TARGET_API_MAC_OSX := TRUE}
  77. {$setc TARGET_CARBON := TRUE}
  78. {$setc TARGET_CPU_68K := FALSE}
  79. {$setc TARGET_CPU_MIPS := FALSE}
  80. {$setc TARGET_CPU_SPARC := FALSE}
  81. {$setc TARGET_OS_MAC := TRUE}
  82. {$setc TARGET_OS_UNIX := FALSE}
  83. {$setc TARGET_OS_WIN32 := FALSE}
  84. {$setc TARGET_RT_MAC_68881 := FALSE}
  85. {$setc TARGET_RT_MAC_CFM := FALSE}
  86. {$setc TARGET_RT_MAC_MACHO := TRUE}
  87. {$setc TYPED_FUNCTION_POINTERS := TRUE}
  88. {$setc TYPE_BOOL := FALSE}
  89. {$setc TYPE_EXTENDED := FALSE}
  90. {$setc TYPE_LONGLONG := TRUE}
  91. uses MacTypes;
  92. {$ALIGN POWER}
  93. {******************************************************************************
  94. *
  95. * Foundation Types
  96. *
  97. }
  98. { Value of a property }
  99. type
  100. RegPropertyValue = Ptr;
  101. { Length of property value }
  102. RegPropertyValueSize = UInt32;
  103. { ******************************************************************************
  104. *
  105. * RegEntryID : The Global x-Namespace Entry Identifier
  106. *
  107. }
  108. RegEntryIDPtr = ^RegEntryID;
  109. RegEntryID = record
  110. contents: array [0..3] of UInt32;
  111. end;
  112. { ******************************************************************************
  113. *
  114. * Root Entry Name Definitions (Applies to all Names in the RootNameSpace)
  115. *
  116. * ¥ Names are a colon-separated list of name components. Name components
  117. * may not themselves contain colons.
  118. * ¥ Names are presented as null-terminated ASCII character strings.
  119. * ¥ Names follow similar parsing rules to Apple file system absolute
  120. * and relative paths. However the '::' parent directory syntax is
  121. * not currently supported.
  122. }
  123. { Max length of Entry Name }
  124. const
  125. kRegCStrMaxEntryNameLength = 47;
  126. { Entry Names are single byte ASCII }
  127. type
  128. RegCStrEntryName = char;
  129. RegCStrEntryNamePtr = ^char;
  130. { length of RegCStrEntryNameBuf = kRegCStrMaxEntryNameLength+1 }
  131. RegCStrEntryNameBuf = packed array [0..47] of char;
  132. RegCStrPathName = char;
  133. RegPathNameSize = UInt32;
  134. const
  135. kRegPathNameSeparator = 58; { 0x3A }
  136. kRegEntryNameTerminator = $00; { '\0' }
  137. kRegPathNameTerminator = $00; { '\0' }
  138. { ******************************************************************************
  139. *
  140. * Property Name and ID Definitions
  141. * (Applies to all Properties Regardless of NameSpace)
  142. }
  143. kRegMaximumPropertyNameLength = 31; { Max length of Property Name }
  144. kRegPropertyNameTerminator = $00; { '\0' }
  145. type
  146. RegPropertyNameBuf = packed array [0..31] of char;
  147. RegPropertyName = char;
  148. RegPropertyNamePtr = ^char;
  149. { ******************************************************************************
  150. *
  151. * Iteration Operations
  152. *
  153. * These specify direction when traversing the name relationships
  154. }
  155. RegIterationOp = UInt32;
  156. RegEntryIterationOp = RegIterationOp;
  157. const
  158. { Absolute locations }
  159. kRegIterRoot = $00000002; { "Upward" Relationships }
  160. kRegIterParents = $00000003; { include all parent(s) of entry }
  161. { "Downward" Relationships }
  162. kRegIterChildren = $00000004; { include all children }
  163. kRegIterSubTrees = $00000005; { include all sub trees of entry }
  164. kRegIterDescendants = $00000005; { include all descendants of entry }
  165. { "Horizontal" Relationships }
  166. kRegIterSibling = $00000006; { include all siblings }
  167. { Keep doing the same thing }
  168. kRegIterContinue = $00000001;
  169. { ******************************************************************************
  170. *
  171. * Name Entry and Property Modifiers
  172. *
  173. *
  174. *
  175. * Modifiers describe special characteristics of names
  176. * and properties. Modifiers might be supported for
  177. * some names and not others.
  178. *
  179. * Device Drivers should not rely on functionality
  180. * specified as a modifier.
  181. }
  182. type
  183. RegModifiers = UInt32;
  184. RegEntryModifiers = RegModifiers;
  185. RegPropertyModifiers = RegModifiers;
  186. const
  187. kRegNoModifiers = $00000000; { no entry modifiers in place }
  188. kRegUniversalModifierMask = $0000FFFF; { mods to all entries }
  189. kRegNameSpaceModifierMask = $00FF0000; { mods to all entries within namespace }
  190. kRegModifierMask = $FF000000; { mods to just this entry }
  191. { Universal Property Modifiers }
  192. kRegPropertyValueIsSavedToNVRAM = $00000020; { property is non-volatile (saved in NVRAM) }
  193. kRegPropertyValueIsSavedToDisk = $00000040; { property is non-volatile (saved on disk) }
  194. { NameRegistry version, Gestalt/PEF-style -- MUST BE KEPT IN SYNC WITH MAKEFILE !! }
  195. LatestNR_PEFVersion = $01030000; { latest NameRegistryLib version (Gestalt/PEF-style) }
  196. { ///////////////////////
  197. //
  198. // The Registry API
  199. //
  200. /////////////////////// }
  201. { NameRegistry dispatch indexes }
  202. kSelectRegistryEntryIDInit = 0;
  203. kSelectRegistryEntryIDCompare = 1;
  204. kSelectRegistryEntryIDCopy = 2;
  205. kSelectRegistryEntryIDDispose = 3;
  206. kSelectRegistryCStrEntryCreate = 4;
  207. kSelectRegistryEntryDelete = 5;
  208. kSelectRegistryEntryCopy = 6;
  209. kSelectRegistryEntryIterateCreate = 7;
  210. kSelectRegistryEntryIterateDispose = 8;
  211. kSelectRegistryEntryIterateSet = 9;
  212. kSelectRegistryEntryIterate = 10;
  213. kSelectRegistryEntrySearch = 11;
  214. kSelectRegistryCStrEntryLookup = 12;
  215. kSelectRegistryEntryToPathSize = 13;
  216. kSelectRegistryCStrEntryToPath = 14;
  217. kSelectRegistryCStrEntryToName = 15;
  218. kSelectRegistryPropertyCreate = 16;
  219. kSelectRegistryPropertyDelete = 17;
  220. kSelectRegistryPropertyRename = 18;
  221. kSelectRegistryPropertyIterateCreate = 19;
  222. kSelectRegistryPropertyIterateDispose = 20;
  223. kSelectRegistryPropertyIterate = 21;
  224. kSelectRegistryPropertyGetSize = 22;
  225. kSelectRegistryPropertyGet = 23;
  226. kSelectRegistryPropertySet = 24;
  227. kSelectRegistryEntryGetMod = 25;
  228. kSelectRegistryEntrySetMod = 26;
  229. kSelectRegistryPropertyGetMod = 27;
  230. kSelectRegistryPropertySetMod = 28;
  231. kSelectRegistryEntryMod = 29;
  232. kSelectRegistryEntryPropertyMod = 30; { if you add more selectors here, remember to change 'kSelectRegistryHighestSelector' below }
  233. kSelectRegistryHighestSelector = 30;
  234. { ///////////////////////
  235. //
  236. // Entry Management
  237. //
  238. /////////////////////// }
  239. { -------------------------------
  240. * EntryID handling
  241. }
  242. {
  243. * Initialize an EntryID to a known invalid state
  244. * note: invalid != uninitialized
  245. }
  246. {$ifc CALL_NOT_IN_CARBON}
  247. {
  248. * RegistryEntryIDInit()
  249. *
  250. * Availability:
  251. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  252. * CarbonLib: not available
  253. * Mac OS X: not available
  254. }
  255. function RegistryEntryIDInit(var id: RegEntryID): OSStatus; external name '_RegistryEntryIDInit';
  256. {
  257. * Compare EntryID's for equality or if invalid
  258. *
  259. * If a NULL value is given for either id1 or id2, the other id
  260. * is compared with an invalid ID. If both are NULL, the id's
  261. * are consided equal (result = true).
  262. }
  263. {
  264. * RegistryEntryIDCompare()
  265. *
  266. * Availability:
  267. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  268. * CarbonLib: not available
  269. * Mac OS X: not available
  270. }
  271. function RegistryEntryIDCompare(const (*var*) id1: RegEntryID; const (*var*) id2: RegEntryID): boolean; external name '_RegistryEntryIDCompare';
  272. {
  273. * Copy an EntryID
  274. }
  275. {
  276. * RegistryEntryIDCopy()
  277. *
  278. * Availability:
  279. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  280. * CarbonLib: not available
  281. * Mac OS X: not available
  282. }
  283. function RegistryEntryIDCopy(const (*var*) src: RegEntryID; var dst: RegEntryID): OSStatus; external name '_RegistryEntryIDCopy';
  284. {
  285. * Free an ID so it can be reused.
  286. }
  287. {
  288. * RegistryEntryIDDispose()
  289. *
  290. * Availability:
  291. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  292. * CarbonLib: not available
  293. * Mac OS X: not available
  294. }
  295. function RegistryEntryIDDispose(var id: RegEntryID): OSStatus; external name '_RegistryEntryIDDispose';
  296. {-------------------------------
  297. * Adding and removing entries
  298. *
  299. * If (parentEntry) is NULL, the name is assumed
  300. * to be a rooted path. It is rooted to an anonymous, unnamed root.
  301. }
  302. {
  303. * RegistryCStrEntryCreate()
  304. *
  305. * Availability:
  306. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  307. * CarbonLib: not available
  308. * Mac OS X: not available
  309. }
  310. function RegistryCStrEntryCreate(const (*var*) parentEntry: RegEntryID; const (*var*) name: RegCStrPathName; var newEntry: RegEntryID): OSStatus; external name '_RegistryCStrEntryCreate';
  311. {
  312. * RegistryEntryDelete()
  313. *
  314. * Availability:
  315. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  316. * CarbonLib: not available
  317. * Mac OS X: not available
  318. }
  319. function RegistryEntryDelete(const (*var*) id: RegEntryID): OSStatus; external name '_RegistryEntryDelete';
  320. {
  321. * RegistryEntryCopy()
  322. *
  323. * Availability:
  324. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  325. * CarbonLib: not available
  326. * Mac OS X: not available
  327. }
  328. function RegistryEntryCopy(var parentEntryID: RegEntryID; var sourceDevice: RegEntryID; var destDevice: RegEntryID): OSStatus; external name '_RegistryEntryCopy';
  329. {---------------------------
  330. * Traversing the namespace
  331. *
  332. * To support arbitrary namespace implementations in the future,
  333. * I have hidden the form that the place pointer takes. The previous
  334. * interface exposed the place pointer by specifying it as a
  335. * RegEntryID.
  336. *
  337. * I have also removed any notion of returning the entries
  338. * in a particular order, because an implementation might
  339. * return the names in semi-random order. Many name service
  340. * implementations will store the names in a hashed lookup
  341. * table.
  342. *
  343. * Writing code to traverse some set of names consists of
  344. * a call to begin the iteration, the iteration loop, and
  345. * a call to end the iteration. The begin call initializes
  346. * the iteration cookie data structure. The call to end the
  347. * iteration should be called even in the case of error so
  348. * that allocated data structures can be freed.
  349. *
  350. * Create(...)
  351. * do (
  352. * Iterate(...);
  353. * ) while (!done);
  354. * Dispose(...);
  355. *
  356. * This is the basic code structure for callers of the iteration
  357. * interface.
  358. }
  359. {$endc} {CALL_NOT_IN_CARBON}
  360. type
  361. RegEntryIter = ^SInt32; { an opaque 32-bit type }
  362. RegEntryIterPtr = ^RegEntryIter; { when a var xx:RegEntryIter parameter can be nil, it is changed to xx: RegEntryIterPtr }
  363. {
  364. * create/dispose the iterator structure
  365. * defaults to root with relationship = kRegIterDescendants
  366. }
  367. {$ifc CALL_NOT_IN_CARBON}
  368. {
  369. * RegistryEntryIterateCreate()
  370. *
  371. * Availability:
  372. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  373. * CarbonLib: not available
  374. * Mac OS X: not available
  375. }
  376. function RegistryEntryIterateCreate(var cookie: RegEntryIter): OSStatus; external name '_RegistryEntryIterateCreate';
  377. {
  378. * RegistryEntryIterateDispose()
  379. *
  380. * Availability:
  381. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  382. * CarbonLib: not available
  383. * Mac OS X: not available
  384. }
  385. function RegistryEntryIterateDispose(var cookie: RegEntryIter): OSStatus; external name '_RegistryEntryIterateDispose';
  386. {
  387. * set Entry Iterator to specified entry
  388. }
  389. {
  390. * RegistryEntryIterateSet()
  391. *
  392. * Availability:
  393. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  394. * CarbonLib: not available
  395. * Mac OS X: not available
  396. }
  397. function RegistryEntryIterateSet(var cookie: RegEntryIter; const (*var*) startEntryID: RegEntryID): OSStatus; external name '_RegistryEntryIterateSet';
  398. {
  399. * Return each value of the iteration
  400. *
  401. * return entries related to the current entry
  402. * with the specified relationship
  403. }
  404. {
  405. * RegistryEntryIterate()
  406. *
  407. * Availability:
  408. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  409. * CarbonLib: not available
  410. * Mac OS X: not available
  411. }
  412. function RegistryEntryIterate(var cookie: RegEntryIter; relationship: RegEntryIterationOp; var foundEntry: RegEntryID; var done: boolean): OSStatus; external name '_RegistryEntryIterate';
  413. {
  414. * return entries with the specified property
  415. *
  416. * A NULL RegPropertyValue pointer will return an
  417. * entry with the property containing any value.
  418. }
  419. {
  420. * RegistryEntrySearch()
  421. *
  422. * Availability:
  423. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  424. * CarbonLib: not available
  425. * Mac OS X: not available
  426. }
  427. function RegistryEntrySearch(var cookie: RegEntryIter; relationship: RegEntryIterationOp; var foundEntry: RegEntryID; var done: boolean; const (*var*) propertyName: RegPropertyName; propertyValue: UnivPtr; propertySize: RegPropertyValueSize): OSStatus; external name '_RegistryEntrySearch';
  428. {--------------------------------
  429. * Find a name in the namespace
  430. *
  431. * This is the fast lookup mechanism.
  432. * NOTE: A reverse lookup mechanism
  433. * has not been provided because
  434. * some name services may not
  435. * provide a fast, general reverse
  436. * lookup.
  437. }
  438. {
  439. * RegistryCStrEntryLookup()
  440. *
  441. * Availability:
  442. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  443. * CarbonLib: not available
  444. * Mac OS X: not available
  445. }
  446. function RegistryCStrEntryLookup(const (*var*) searchPointID: RegEntryID; const (*var*) pathName: RegCStrPathName; var foundEntry: RegEntryID): OSStatus; external name '_RegistryCStrEntryLookup';
  447. {---------------------------------------------
  448. * Convert an entry to a rooted name string
  449. *
  450. * A utility routine to turn an Entry ID
  451. * back into a name string.
  452. }
  453. {
  454. * RegistryEntryToPathSize()
  455. *
  456. * Availability:
  457. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  458. * CarbonLib: not available
  459. * Mac OS X: not available
  460. }
  461. function RegistryEntryToPathSize(const (*var*) entryID: RegEntryID; var pathSize: RegPathNameSize): OSStatus; external name '_RegistryEntryToPathSize';
  462. {
  463. * RegistryCStrEntryToPath()
  464. *
  465. * Availability:
  466. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  467. * CarbonLib: not available
  468. * Mac OS X: not available
  469. }
  470. function RegistryCStrEntryToPath(const (*var*) entryID: RegEntryID; var pathName: RegCStrPathName; pathSize: RegPathNameSize): OSStatus; external name '_RegistryCStrEntryToPath';
  471. {
  472. * Parse a path name.
  473. *
  474. * Retrieve the last component of the path, and
  475. * return a spec for the parent.
  476. }
  477. {
  478. * RegistryCStrEntryToName()
  479. *
  480. * Availability:
  481. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  482. * CarbonLib: not available
  483. * Mac OS X: not available
  484. }
  485. function RegistryCStrEntryToName(const (*var*) entryID: RegEntryID; var parentEntry: RegEntryID; var nameComponent: RegCStrEntryName; var done: boolean): OSStatus; external name '_RegistryCStrEntryToName';
  486. { //////////////////////////////////////////////////////
  487. //
  488. // Property Management
  489. //
  490. ////////////////////////////////////////////////////// }
  491. {-------------------------------
  492. * Adding and removing properties
  493. }
  494. {
  495. * RegistryPropertyCreate()
  496. *
  497. * Availability:
  498. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  499. * CarbonLib: not available
  500. * Mac OS X: not available
  501. }
  502. function RegistryPropertyCreate(const (*var*) entryID: RegEntryID; const (*var*) propertyName: RegPropertyName; propertyValue: UnivPtr; propertySize: RegPropertyValueSize): OSStatus; external name '_RegistryPropertyCreate';
  503. {
  504. * RegistryPropertyDelete()
  505. *
  506. * Availability:
  507. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  508. * CarbonLib: not available
  509. * Mac OS X: not available
  510. }
  511. function RegistryPropertyDelete(const (*var*) entryID: RegEntryID; const (*var*) propertyName: RegPropertyName): OSStatus; external name '_RegistryPropertyDelete';
  512. {
  513. * RegistryPropertyRename()
  514. *
  515. * Availability:
  516. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  517. * CarbonLib: not available
  518. * Mac OS X: not available
  519. }
  520. function RegistryPropertyRename(const (*var*) entry: RegEntryID; const (*var*) oldName: RegPropertyName; const (*var*) newName: RegPropertyName): OSStatus; external name '_RegistryPropertyRename';
  521. {---------------------------
  522. * Traversing the Properties of a name
  523. *
  524. }
  525. {$endc} {CALL_NOT_IN_CARBON}
  526. type
  527. RegPropertyIter = ^SInt32; { an opaque 32-bit type }
  528. RegPropertyIterPtr = ^RegPropertyIter; { when a var xx:RegPropertyIter parameter can be nil, it is changed to xx: RegPropertyIterPtr }
  529. {$ifc CALL_NOT_IN_CARBON}
  530. {
  531. * RegistryPropertyIterateCreate()
  532. *
  533. * Availability:
  534. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  535. * CarbonLib: not available
  536. * Mac OS X: not available
  537. }
  538. function RegistryPropertyIterateCreate(const (*var*) entry: RegEntryID; var cookie: RegPropertyIter): OSStatus; external name '_RegistryPropertyIterateCreate';
  539. {
  540. * RegistryPropertyIterateDispose()
  541. *
  542. * Availability:
  543. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  544. * CarbonLib: not available
  545. * Mac OS X: not available
  546. }
  547. function RegistryPropertyIterateDispose(var cookie: RegPropertyIter): OSStatus; external name '_RegistryPropertyIterateDispose';
  548. {
  549. * RegistryPropertyIterate()
  550. *
  551. * Availability:
  552. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  553. * CarbonLib: not available
  554. * Mac OS X: not available
  555. }
  556. function RegistryPropertyIterate(var cookie: RegPropertyIter; var foundProperty: RegPropertyName; var done: boolean): OSStatus; external name '_RegistryPropertyIterate';
  557. {
  558. * Get the value of the specified property for the specified entry.
  559. *
  560. }
  561. {
  562. * RegistryPropertyGetSize()
  563. *
  564. * Availability:
  565. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  566. * CarbonLib: not available
  567. * Mac OS X: not available
  568. }
  569. function RegistryPropertyGetSize(const (*var*) entryID: RegEntryID; const (*var*) propertyName: RegPropertyName; var propertySize: RegPropertyValueSize): OSStatus; external name '_RegistryPropertyGetSize';
  570. {
  571. * (*propertySize) is the maximum size of the value returned in the buffer
  572. * pointed to by (propertyValue). Upon return, (*propertySize) is the size of the
  573. * value returned.
  574. }
  575. {
  576. * RegistryPropertyGet()
  577. *
  578. * Availability:
  579. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  580. * CarbonLib: not available
  581. * Mac OS X: not available
  582. }
  583. function RegistryPropertyGet(const (*var*) entryID: RegEntryID; const (*var*) propertyName: RegPropertyName; propertyValue: UnivPtr; var propertySize: RegPropertyValueSize): OSStatus; external name '_RegistryPropertyGet';
  584. {
  585. * RegistryPropertySet()
  586. *
  587. * Availability:
  588. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  589. * CarbonLib: not available
  590. * Mac OS X: not available
  591. }
  592. function RegistryPropertySet(const (*var*) entryID: RegEntryID; const (*var*) propertyName: RegPropertyName; propertyValue: UnivPtr; propertySize: RegPropertyValueSize): OSStatus; external name '_RegistryPropertySet';
  593. { //////////////////////////////////////////////////////
  594. //
  595. // Modifier Management
  596. //
  597. ////////////////////////////////////////////////////// }
  598. {
  599. * Modifiers describe special characteristics of names
  600. * and properties. Modifiers might be supported for
  601. * some names and not others.
  602. *
  603. * Device Drivers should not rely on functionality
  604. * specified as a modifier. These interfaces
  605. * are for use in writing Experts.
  606. }
  607. {
  608. * Get and Set operators for entry modifiers
  609. }
  610. {
  611. * RegistryEntryGetMod()
  612. *
  613. * Availability:
  614. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  615. * CarbonLib: not available
  616. * Mac OS X: not available
  617. }
  618. function RegistryEntryGetMod(const (*var*) entry: RegEntryID; var modifiers: RegEntryModifiers): OSStatus; external name '_RegistryEntryGetMod';
  619. {
  620. * RegistryEntrySetMod()
  621. *
  622. * Availability:
  623. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  624. * CarbonLib: not available
  625. * Mac OS X: not available
  626. }
  627. function RegistryEntrySetMod(const (*var*) entry: RegEntryID; modifiers: RegEntryModifiers): OSStatus; external name '_RegistryEntrySetMod';
  628. {
  629. * Get and Set operators for property modifiers
  630. }
  631. {
  632. * RegistryPropertyGetMod()
  633. *
  634. * Availability:
  635. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  636. * CarbonLib: not available
  637. * Mac OS X: not available
  638. }
  639. function RegistryPropertyGetMod(const (*var*) entry: RegEntryID; const (*var*) name: RegPropertyName; var modifiers: RegPropertyModifiers): OSStatus; external name '_RegistryPropertyGetMod';
  640. {
  641. * RegistryPropertySetMod()
  642. *
  643. * Availability:
  644. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  645. * CarbonLib: not available
  646. * Mac OS X: not available
  647. }
  648. function RegistryPropertySetMod(const (*var*) entry: RegEntryID; const (*var*) name: RegPropertyName; modifiers: RegPropertyModifiers): OSStatus; external name '_RegistryPropertySetMod';
  649. {
  650. * Iterator operator for entry modifier search
  651. }
  652. {
  653. * RegistryEntryMod()
  654. *
  655. * Availability:
  656. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  657. * CarbonLib: not available
  658. * Mac OS X: not available
  659. }
  660. function RegistryEntryMod(var cookie: RegEntryIter; relationship: RegEntryIterationOp; var foundEntry: RegEntryID; var done: boolean; matchingModifiers: RegEntryModifiers): OSStatus; external name '_RegistryEntryMod';
  661. {
  662. * Iterator operator for entries with matching
  663. * property modifiers
  664. }
  665. {
  666. * RegistryEntryPropertyMod()
  667. *
  668. * Availability:
  669. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  670. * CarbonLib: not available
  671. * Mac OS X: not available
  672. }
  673. function RegistryEntryPropertyMod(var cookie: RegEntryIter; relationship: RegEntryIterationOp; var foundEntry: RegEntryID; var done: boolean; matchingModifiers: RegPropertyModifiers): OSStatus; external name '_RegistryEntryPropertyMod';
  674. {$endc} {CALL_NOT_IN_CARBON}
  675. {$ALIGN MAC68K}
  676. end.