Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

840 lines
23 KiB

  1. /*
  2. File: NameRegistry.h
  3. Contains: NameRegistry Interfaces
  4. Version: QuickTime 7.3
  5. Copyright: (c) 2007 (c) 1993-2001 by Apple Computer, Inc., all rights reserved.
  6. Bugs?: For bug reports, consult the following page on
  7. the World Wide Web:
  8. http://developer.apple.com/bugreporter/
  9. */
  10. #ifndef __NAMEREGISTRY__
  11. #define __NAMEREGISTRY__
  12. #ifndef __MACTYPES__
  13. #include <MacTypes.h>
  14. #endif
  15. #if PRAGMA_ONCE
  16. #pragma once
  17. #endif
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21. #if PRAGMA_IMPORT
  22. #pragma import on
  23. #endif
  24. #if PRAGMA_STRUCT_ALIGN
  25. #pragma options align=power
  26. #elif PRAGMA_STRUCT_PACKPUSH
  27. #pragma pack(push, 2)
  28. #elif PRAGMA_STRUCT_PACK
  29. #pragma pack(2)
  30. #endif
  31. /*******************************************************************************
  32. *
  33. * Foundation Types
  34. *
  35. */
  36. /* Value of a property */
  37. typedef void * RegPropertyValue;
  38. /* Length of property value */
  39. typedef UInt32 RegPropertyValueSize;
  40. /*******************************************************************************
  41. *
  42. * RegEntryID : The Global x-Namespace Entry Identifier
  43. *
  44. */
  45. struct RegEntryID {
  46. UInt32 contents[4];
  47. };
  48. typedef struct RegEntryID RegEntryID;
  49. typedef RegEntryID * RegEntryIDPtr;
  50. /*******************************************************************************
  51. *
  52. * Root Entry Name Definitions (Applies to all Names in the RootNameSpace)
  53. *
  54. * o Names are a colon-separated list of name components. Name components
  55. * may not themselves contain colons.
  56. * o Names are presented as null-terminated ASCII character strings.
  57. * o Names follow similar parsing rules to Apple file system absolute
  58. * and relative paths. However the '::' parent directory syntax is
  59. * not currently supported.
  60. */
  61. /* Max length of Entry Name */
  62. enum {
  63. kRegCStrMaxEntryNameLength = 47
  64. };
  65. /* Entry Names are single byte ASCII */
  66. typedef char RegCStrEntryName;
  67. typedef char * RegCStrEntryNamePtr;
  68. /* length of RegCStrEntryNameBuf = kRegCStrMaxEntryNameLength+1*/
  69. typedef char RegCStrEntryNameBuf[48];
  70. typedef char RegCStrPathName;
  71. typedef UInt32 RegPathNameSize;
  72. enum {
  73. kRegPathNameSeparator = ':', /* 0x3A */
  74. kRegEntryNameTerminator = 0x00, /* '\0' */
  75. kRegPathNameTerminator = 0x00 /* '\0' */
  76. };
  77. /*******************************************************************************
  78. *
  79. * Property Name and ID Definitions
  80. * (Applies to all Properties Regardless of NameSpace)
  81. */
  82. enum {
  83. kRegMaximumPropertyNameLength = 31, /* Max length of Property Name */
  84. kRegPropertyNameTerminator = 0x00 /* '\0' */
  85. };
  86. typedef char RegPropertyNameBuf[32];
  87. typedef char RegPropertyName;
  88. typedef char * RegPropertyNamePtr;
  89. /*******************************************************************************
  90. *
  91. * Iteration Operations
  92. *
  93. * These specify direction when traversing the name relationships
  94. */
  95. typedef UInt32 RegIterationOp;
  96. typedef RegIterationOp RegEntryIterationOp;
  97. enum {
  98. /* Absolute locations*/
  99. kRegIterRoot = 0x00000002, /* "Upward" Relationships */
  100. kRegIterParents = 0x00000003, /* include all parent(s) of entry */
  101. /* "Downward" Relationships*/
  102. kRegIterChildren = 0x00000004, /* include all children */
  103. kRegIterSubTrees = 0x00000005, /* include all sub trees of entry */
  104. kRegIterDescendants = 0x00000005, /* include all descendants of entry */
  105. /* "Horizontal" Relationships */
  106. kRegIterSibling = 0x00000006, /* include all siblings */
  107. /* Keep doing the same thing*/
  108. kRegIterContinue = 0x00000001
  109. };
  110. /*******************************************************************************
  111. *
  112. * Name Entry and Property Modifiers
  113. *
  114. *
  115. *
  116. * Modifiers describe special characteristics of names
  117. * and properties. Modifiers might be supported for
  118. * some names and not others.
  119. *
  120. * Device Drivers should not rely on functionality
  121. * specified as a modifier.
  122. */
  123. typedef UInt32 RegModifiers;
  124. typedef RegModifiers RegEntryModifiers;
  125. typedef RegModifiers RegPropertyModifiers;
  126. enum {
  127. kRegNoModifiers = 0x00000000, /* no entry modifiers in place */
  128. kRegUniversalModifierMask = 0x0000FFFF, /* mods to all entries */
  129. kRegNameSpaceModifierMask = 0x00FF0000, /* mods to all entries within namespace */
  130. kRegModifierMask = (long)0xFF000000 /* mods to just this entry */
  131. };
  132. /* Universal Property Modifiers */
  133. enum {
  134. kRegPropertyValueIsSavedToNVRAM = 0x00000020, /* property is non-volatile (saved in NVRAM) */
  135. kRegPropertyValueIsSavedToDisk = 0x00000040 /* property is non-volatile (saved on disk) */
  136. };
  137. /* NameRegistry version, Gestalt/PEF-style -- MUST BE KEPT IN SYNC WITH MAKEFILE !! */
  138. enum {
  139. LatestNR_PEFVersion = 0x01030000 /* latest NameRegistryLib version (Gestalt/PEF-style) */
  140. };
  141. /* ///////////////////////
  142. //
  143. // The Registry API
  144. //
  145. /////////////////////// */
  146. /* NameRegistry dispatch indexes */
  147. enum {
  148. kSelectRegistryEntryIDInit = 0,
  149. kSelectRegistryEntryIDCompare = 1,
  150. kSelectRegistryEntryIDCopy = 2,
  151. kSelectRegistryEntryIDDispose = 3,
  152. kSelectRegistryCStrEntryCreate = 4,
  153. kSelectRegistryEntryDelete = 5,
  154. kSelectRegistryEntryCopy = 6,
  155. kSelectRegistryEntryIterateCreate = 7,
  156. kSelectRegistryEntryIterateDispose = 8,
  157. kSelectRegistryEntryIterateSet = 9,
  158. kSelectRegistryEntryIterate = 10,
  159. kSelectRegistryEntrySearch = 11,
  160. kSelectRegistryCStrEntryLookup = 12,
  161. kSelectRegistryEntryToPathSize = 13,
  162. kSelectRegistryCStrEntryToPath = 14,
  163. kSelectRegistryCStrEntryToName = 15,
  164. kSelectRegistryPropertyCreate = 16,
  165. kSelectRegistryPropertyDelete = 17,
  166. kSelectRegistryPropertyRename = 18,
  167. kSelectRegistryPropertyIterateCreate = 19,
  168. kSelectRegistryPropertyIterateDispose = 20,
  169. kSelectRegistryPropertyIterate = 21,
  170. kSelectRegistryPropertyGetSize = 22,
  171. kSelectRegistryPropertyGet = 23,
  172. kSelectRegistryPropertySet = 24,
  173. kSelectRegistryEntryGetMod = 25,
  174. kSelectRegistryEntrySetMod = 26,
  175. kSelectRegistryPropertyGetMod = 27,
  176. kSelectRegistryPropertySetMod = 28,
  177. kSelectRegistryEntryMod = 29,
  178. kSelectRegistryEntryPropertyMod = 30, /* if you add more selectors here, remember to change 'kSelectRegistryHighestSelector' below*/
  179. kSelectRegistryHighestSelector = kSelectRegistryEntryPropertyMod
  180. };
  181. /* ///////////////////////
  182. //
  183. // Entry Management
  184. //
  185. /////////////////////// */
  186. /*-------------------------------
  187. * EntryID handling
  188. */
  189. /*
  190. * Initialize an EntryID to a known invalid state
  191. * note: invalid != uninitialized
  192. */
  193. #if CALL_NOT_IN_CARBON
  194. /*
  195. * RegistryEntryIDInit()
  196. *
  197. * Availability:
  198. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  199. * CarbonLib: not available
  200. * Mac OS X: not available
  201. */
  202. EXTERN_API_C( OSStatus )
  203. RegistryEntryIDInit(RegEntryID * id) TWOWORDINLINE(0x7000, 0xABE9);
  204. /*
  205. * Compare EntryID's for equality or if invalid
  206. *
  207. * If a NULL value is given for either id1 or id2, the other id
  208. * is compared with an invalid ID. If both are NULL, the id's
  209. * are consided equal (result = true).
  210. */
  211. /*
  212. * RegistryEntryIDCompare()
  213. *
  214. * Availability:
  215. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  216. * CarbonLib: not available
  217. * Mac OS X: not available
  218. */
  219. EXTERN_API_C( Boolean )
  220. RegistryEntryIDCompare(
  221. const RegEntryID * id1,
  222. const RegEntryID * id2) TWOWORDINLINE(0x7001, 0xABE9);
  223. /*
  224. * Copy an EntryID
  225. */
  226. /*
  227. * RegistryEntryIDCopy()
  228. *
  229. * Availability:
  230. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  231. * CarbonLib: not available
  232. * Mac OS X: not available
  233. */
  234. EXTERN_API_C( OSStatus )
  235. RegistryEntryIDCopy(
  236. const RegEntryID * src,
  237. RegEntryID * dst) TWOWORDINLINE(0x7002, 0xABE9);
  238. /*
  239. * Free an ID so it can be reused.
  240. */
  241. /*
  242. * RegistryEntryIDDispose()
  243. *
  244. * Availability:
  245. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  246. * CarbonLib: not available
  247. * Mac OS X: not available
  248. */
  249. EXTERN_API_C( OSStatus )
  250. RegistryEntryIDDispose(RegEntryID * id) TWOWORDINLINE(0x7003, 0xABE9);
  251. /*-------------------------------
  252. * Adding and removing entries
  253. *
  254. * If (parentEntry) is NULL, the name is assumed
  255. * to be a rooted path. It is rooted to an anonymous, unnamed root.
  256. */
  257. /*
  258. * RegistryCStrEntryCreate()
  259. *
  260. * Availability:
  261. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  262. * CarbonLib: not available
  263. * Mac OS X: not available
  264. */
  265. EXTERN_API_C( OSStatus )
  266. RegistryCStrEntryCreate(
  267. const RegEntryID * parentEntry,
  268. const RegCStrPathName * name,
  269. RegEntryID * newEntry) TWOWORDINLINE(0x7004, 0xABE9);
  270. /*
  271. * RegistryEntryDelete()
  272. *
  273. * Availability:
  274. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  275. * CarbonLib: not available
  276. * Mac OS X: not available
  277. */
  278. EXTERN_API_C( OSStatus )
  279. RegistryEntryDelete(const RegEntryID * id) TWOWORDINLINE(0x7005, 0xABE9);
  280. /*
  281. * RegistryEntryCopy()
  282. *
  283. * Availability:
  284. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  285. * CarbonLib: not available
  286. * Mac OS X: not available
  287. */
  288. EXTERN_API_C( OSStatus )
  289. RegistryEntryCopy(
  290. RegEntryID * parentEntryID,
  291. RegEntryID * sourceDevice,
  292. RegEntryID * destDevice) TWOWORDINLINE(0x7006, 0xABE9);
  293. /*---------------------------
  294. * Traversing the namespace
  295. *
  296. * To support arbitrary namespace implementations in the future,
  297. * I have hidden the form that the place pointer takes. The previous
  298. * interface exposed the place pointer by specifying it as a
  299. * RegEntryID.
  300. *
  301. * I have also removed any notion of returning the entries
  302. * in a particular order, because an implementation might
  303. * return the names in semi-random order. Many name service
  304. * implementations will store the names in a hashed lookup
  305. * table.
  306. *
  307. * Writing code to traverse some set of names consists of
  308. * a call to begin the iteration, the iteration loop, and
  309. * a call to end the iteration. The begin call initializes
  310. * the iteration cookie data structure. The call to end the
  311. * iteration should be called even in the case of error so
  312. * that allocated data structures can be freed.
  313. *
  314. * Create(...)
  315. * do {
  316. * Iterate(...);
  317. * } while (!done);
  318. * Dispose(...);
  319. *
  320. * This is the basic code structure for callers of the iteration
  321. * interface.
  322. */
  323. #endif /* CALL_NOT_IN_CARBON */
  324. typedef struct OpaqueRegEntryIter* RegEntryIter;
  325. /*
  326. * create/dispose the iterator structure
  327. * defaults to root with relationship = kRegIterDescendants
  328. */
  329. #if CALL_NOT_IN_CARBON
  330. /*
  331. * RegistryEntryIterateCreate()
  332. *
  333. * Availability:
  334. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  335. * CarbonLib: not available
  336. * Mac OS X: not available
  337. */
  338. EXTERN_API_C( OSStatus )
  339. RegistryEntryIterateCreate(RegEntryIter * cookie) TWOWORDINLINE(0x7007, 0xABE9);
  340. /*
  341. * RegistryEntryIterateDispose()
  342. *
  343. * Availability:
  344. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  345. * CarbonLib: not available
  346. * Mac OS X: not available
  347. */
  348. EXTERN_API_C( OSStatus )
  349. RegistryEntryIterateDispose(RegEntryIter * cookie) TWOWORDINLINE(0x7008, 0xABE9);
  350. /*
  351. * set Entry Iterator to specified entry
  352. */
  353. /*
  354. * RegistryEntryIterateSet()
  355. *
  356. * Availability:
  357. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  358. * CarbonLib: not available
  359. * Mac OS X: not available
  360. */
  361. EXTERN_API_C( OSStatus )
  362. RegistryEntryIterateSet(
  363. RegEntryIter * cookie,
  364. const RegEntryID * startEntryID) TWOWORDINLINE(0x7009, 0xABE9);
  365. /*
  366. * Return each value of the iteration
  367. *
  368. * return entries related to the current entry
  369. * with the specified relationship
  370. */
  371. /*
  372. * RegistryEntryIterate()
  373. *
  374. * Availability:
  375. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  376. * CarbonLib: not available
  377. * Mac OS X: not available
  378. */
  379. EXTERN_API_C( OSStatus )
  380. RegistryEntryIterate(
  381. RegEntryIter * cookie,
  382. RegEntryIterationOp relationship,
  383. RegEntryID * foundEntry,
  384. Boolean * done) TWOWORDINLINE(0x700A, 0xABE9);
  385. /*
  386. * return entries with the specified property
  387. *
  388. * A NULL RegPropertyValue pointer will return an
  389. * entry with the property containing any value.
  390. */
  391. /*
  392. * RegistryEntrySearch()
  393. *
  394. * Availability:
  395. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  396. * CarbonLib: not available
  397. * Mac OS X: not available
  398. */
  399. EXTERN_API_C( OSStatus )
  400. RegistryEntrySearch(
  401. RegEntryIter * cookie,
  402. RegEntryIterationOp relationship,
  403. RegEntryID * foundEntry,
  404. Boolean * done,
  405. const RegPropertyName * propertyName,
  406. const void * propertyValue,
  407. RegPropertyValueSize propertySize) TWOWORDINLINE(0x700B, 0xABE9);
  408. /*--------------------------------
  409. * Find a name in the namespace
  410. *
  411. * This is the fast lookup mechanism.
  412. * NOTE: A reverse lookup mechanism
  413. * has not been provided because
  414. * some name services may not
  415. * provide a fast, general reverse
  416. * lookup.
  417. */
  418. /*
  419. * RegistryCStrEntryLookup()
  420. *
  421. * Availability:
  422. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  423. * CarbonLib: not available
  424. * Mac OS X: not available
  425. */
  426. EXTERN_API_C( OSStatus )
  427. RegistryCStrEntryLookup(
  428. const RegEntryID * searchPointID,
  429. const RegCStrPathName * pathName,
  430. RegEntryID * foundEntry) TWOWORDINLINE(0x700C, 0xABE9);
  431. /*---------------------------------------------
  432. * Convert an entry to a rooted name string
  433. *
  434. * A utility routine to turn an Entry ID
  435. * back into a name string.
  436. */
  437. /*
  438. * RegistryEntryToPathSize()
  439. *
  440. * Availability:
  441. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  442. * CarbonLib: not available
  443. * Mac OS X: not available
  444. */
  445. EXTERN_API_C( OSStatus )
  446. RegistryEntryToPathSize(
  447. const RegEntryID * entryID,
  448. RegPathNameSize * pathSize) TWOWORDINLINE(0x700D, 0xABE9);
  449. /*
  450. * RegistryCStrEntryToPath()
  451. *
  452. * Availability:
  453. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  454. * CarbonLib: not available
  455. * Mac OS X: not available
  456. */
  457. EXTERN_API_C( OSStatus )
  458. RegistryCStrEntryToPath(
  459. const RegEntryID * entryID,
  460. RegCStrPathName * pathName,
  461. RegPathNameSize pathSize) TWOWORDINLINE(0x700E, 0xABE9);
  462. /*
  463. * Parse a path name.
  464. *
  465. * Retrieve the last component of the path, and
  466. * return a spec for the parent.
  467. */
  468. /*
  469. * RegistryCStrEntryToName()
  470. *
  471. * Availability:
  472. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  473. * CarbonLib: not available
  474. * Mac OS X: not available
  475. */
  476. EXTERN_API_C( OSStatus )
  477. RegistryCStrEntryToName(
  478. const RegEntryID * entryID,
  479. RegEntryID * parentEntry,
  480. RegCStrEntryName * nameComponent,
  481. Boolean * done) TWOWORDINLINE(0x700F, 0xABE9);
  482. /* //////////////////////////////////////////////////////
  483. //
  484. // Property Management
  485. //
  486. ////////////////////////////////////////////////////// */
  487. /*-------------------------------
  488. * Adding and removing properties
  489. */
  490. /*
  491. * RegistryPropertyCreate()
  492. *
  493. * Availability:
  494. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  495. * CarbonLib: not available
  496. * Mac OS X: not available
  497. */
  498. EXTERN_API_C( OSStatus )
  499. RegistryPropertyCreate(
  500. const RegEntryID * entryID,
  501. const RegPropertyName * propertyName,
  502. const void * propertyValue,
  503. RegPropertyValueSize propertySize) TWOWORDINLINE(0x7010, 0xABE9);
  504. /*
  505. * RegistryPropertyDelete()
  506. *
  507. * Availability:
  508. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  509. * CarbonLib: not available
  510. * Mac OS X: not available
  511. */
  512. EXTERN_API_C( OSStatus )
  513. RegistryPropertyDelete(
  514. const RegEntryID * entryID,
  515. const RegPropertyName * propertyName) TWOWORDINLINE(0x7011, 0xABE9);
  516. /*
  517. * RegistryPropertyRename()
  518. *
  519. * Availability:
  520. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  521. * CarbonLib: not available
  522. * Mac OS X: not available
  523. */
  524. EXTERN_API_C( OSStatus )
  525. RegistryPropertyRename(
  526. const RegEntryID * entry,
  527. const RegPropertyName * oldName,
  528. const RegPropertyName * newName) TWOWORDINLINE(0x7012, 0xABE9);
  529. /*---------------------------
  530. * Traversing the Properties of a name
  531. *
  532. */
  533. #endif /* CALL_NOT_IN_CARBON */
  534. typedef struct OpaqueRegPropertyIter* RegPropertyIter;
  535. #if CALL_NOT_IN_CARBON
  536. /*
  537. * RegistryPropertyIterateCreate()
  538. *
  539. * Availability:
  540. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  541. * CarbonLib: not available
  542. * Mac OS X: not available
  543. */
  544. EXTERN_API_C( OSStatus )
  545. RegistryPropertyIterateCreate(
  546. const RegEntryID * entry,
  547. RegPropertyIter * cookie) TWOWORDINLINE(0x7013, 0xABE9);
  548. /*
  549. * RegistryPropertyIterateDispose()
  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. EXTERN_API_C( OSStatus )
  557. RegistryPropertyIterateDispose(RegPropertyIter * cookie) TWOWORDINLINE(0x7014, 0xABE9);
  558. /*
  559. * RegistryPropertyIterate()
  560. *
  561. * Availability:
  562. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  563. * CarbonLib: not available
  564. * Mac OS X: not available
  565. */
  566. EXTERN_API_C( OSStatus )
  567. RegistryPropertyIterate(
  568. RegPropertyIter * cookie,
  569. RegPropertyName * foundProperty,
  570. Boolean * done) TWOWORDINLINE(0x7015, 0xABE9);
  571. /*
  572. * Get the value of the specified property for the specified entry.
  573. *
  574. */
  575. /*
  576. * RegistryPropertyGetSize()
  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. EXTERN_API_C( OSStatus )
  584. RegistryPropertyGetSize(
  585. const RegEntryID * entryID,
  586. const RegPropertyName * propertyName,
  587. RegPropertyValueSize * propertySize) TWOWORDINLINE(0x7016, 0xABE9);
  588. /*
  589. * (*propertySize) is the maximum size of the value returned in the buffer
  590. * pointed to by (propertyValue). Upon return, (*propertySize) is the size of the
  591. * value returned.
  592. */
  593. /*
  594. * RegistryPropertyGet()
  595. *
  596. * Availability:
  597. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  598. * CarbonLib: not available
  599. * Mac OS X: not available
  600. */
  601. EXTERN_API_C( OSStatus )
  602. RegistryPropertyGet(
  603. const RegEntryID * entryID,
  604. const RegPropertyName * propertyName,
  605. void * propertyValue,
  606. RegPropertyValueSize * propertySize) TWOWORDINLINE(0x7017, 0xABE9);
  607. /*
  608. * RegistryPropertySet()
  609. *
  610. * Availability:
  611. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  612. * CarbonLib: not available
  613. * Mac OS X: not available
  614. */
  615. EXTERN_API_C( OSStatus )
  616. RegistryPropertySet(
  617. const RegEntryID * entryID,
  618. const RegPropertyName * propertyName,
  619. const void * propertyValue,
  620. RegPropertyValueSize propertySize) TWOWORDINLINE(0x7018, 0xABE9);
  621. /* //////////////////////////////////////////////////////
  622. //
  623. // Modifier Management
  624. //
  625. ////////////////////////////////////////////////////// */
  626. /*
  627. * Modifiers describe special characteristics of names
  628. * and properties. Modifiers might be supported for
  629. * some names and not others.
  630. *
  631. * Device Drivers should not rely on functionality
  632. * specified as a modifier. These interfaces
  633. * are for use in writing Experts.
  634. */
  635. /*
  636. * Get and Set operators for entry modifiers
  637. */
  638. /*
  639. * RegistryEntryGetMod()
  640. *
  641. * Availability:
  642. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  643. * CarbonLib: not available
  644. * Mac OS X: not available
  645. */
  646. EXTERN_API_C( OSStatus )
  647. RegistryEntryGetMod(
  648. const RegEntryID * entry,
  649. RegEntryModifiers * modifiers) TWOWORDINLINE(0x7019, 0xABE9);
  650. /*
  651. * RegistryEntrySetMod()
  652. *
  653. * Availability:
  654. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  655. * CarbonLib: not available
  656. * Mac OS X: not available
  657. */
  658. EXTERN_API_C( OSStatus )
  659. RegistryEntrySetMod(
  660. const RegEntryID * entry,
  661. RegEntryModifiers modifiers) TWOWORDINLINE(0x701A, 0xABE9);
  662. /*
  663. * Get and Set operators for property modifiers
  664. */
  665. /*
  666. * RegistryPropertyGetMod()
  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. EXTERN_API_C( OSStatus )
  674. RegistryPropertyGetMod(
  675. const RegEntryID * entry,
  676. const RegPropertyName * name,
  677. RegPropertyModifiers * modifiers) TWOWORDINLINE(0x701B, 0xABE9);
  678. /*
  679. * RegistryPropertySetMod()
  680. *
  681. * Availability:
  682. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  683. * CarbonLib: not available
  684. * Mac OS X: not available
  685. */
  686. EXTERN_API_C( OSStatus )
  687. RegistryPropertySetMod(
  688. const RegEntryID * entry,
  689. const RegPropertyName * name,
  690. RegPropertyModifiers modifiers) TWOWORDINLINE(0x701C, 0xABE9);
  691. /*
  692. * Iterator operator for entry modifier search
  693. */
  694. /*
  695. * RegistryEntryMod()
  696. *
  697. * Availability:
  698. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  699. * CarbonLib: not available
  700. * Mac OS X: not available
  701. */
  702. EXTERN_API_C( OSStatus )
  703. RegistryEntryMod(
  704. RegEntryIter * cookie,
  705. RegEntryIterationOp relationship,
  706. RegEntryID * foundEntry,
  707. Boolean * done,
  708. RegEntryModifiers matchingModifiers) TWOWORDINLINE(0x701D, 0xABE9);
  709. /*
  710. * Iterator operator for entries with matching
  711. * property modifiers
  712. */
  713. /*
  714. * RegistryEntryPropertyMod()
  715. *
  716. * Availability:
  717. * Non-Carbon CFM: in NameRegistryLib 1.0 and later
  718. * CarbonLib: not available
  719. * Mac OS X: not available
  720. */
  721. EXTERN_API_C( OSStatus )
  722. RegistryEntryPropertyMod(
  723. RegEntryIter * cookie,
  724. RegEntryIterationOp relationship,
  725. RegEntryID * foundEntry,
  726. Boolean * done,
  727. RegPropertyModifiers matchingModifiers) TWOWORDINLINE(0x701E, 0xABE9);
  728. #endif /* CALL_NOT_IN_CARBON */
  729. #if PRAGMA_STRUCT_ALIGN
  730. #pragma options align=reset
  731. #elif PRAGMA_STRUCT_PACKPUSH
  732. #pragma pack(pop)
  733. #elif PRAGMA_STRUCT_PACK
  734. #pragma pack()
  735. #endif
  736. #ifdef PRAGMA_IMPORT_OFF
  737. #pragma import off
  738. #elif PRAGMA_IMPORT
  739. #pragma import reset
  740. #endif
  741. #ifdef __cplusplus
  742. }
  743. #endif
  744. #endif /* __NAMEREGISTRY__ */