| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605 | {     File:       HIToolbox/HIArchive.h      Contains:   HIArchive Interfaces.      Version:    HIToolbox-219.4.81~2      Copyright:  © 2004-2005 by Apple Computer, Inc., all rights reserved.      Bugs?:      For bug reports, consult the following page on                 the World Wide Web:                      http://www.freepascal.org/bugs.html }{       Pascal Translation:  Peter N Lewis, <[email protected]>, August 2005 }{    Modified for use with Free Pascal    Version 200    Please report any bugs to <[email protected]>}{$mode macpas}{$packenum 1}{$macro on}{$inline on}{$CALLING MWPASCAL}unit HIArchive;interface{$setc UNIVERSAL_INTERFACES_VERSION := $0342}{$setc GAP_INTERFACES_VERSION := $0200}{$ifc not defined USE_CFSTR_CONSTANT_MACROS}    {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}{$endc}{$ifc defined CPUPOWERPC and defined CPUI386}	{$error Conflicting initial definitions for CPUPOWERPC and CPUI386}{$endc}{$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}	{$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}{$endc}{$ifc not defined __ppc__ and defined CPUPOWERPC}	{$setc __ppc__ := 1}{$elsec}	{$setc __ppc__ := 0}{$endc}{$ifc not defined __i386__ and defined CPUI386}	{$setc __i386__ := 1}{$elsec}	{$setc __i386__ := 0}{$endc}{$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}	{$error Conflicting definitions for __ppc__ and __i386__}{$endc}{$ifc defined __ppc__ and __ppc__}	{$setc TARGET_CPU_PPC := TRUE}	{$setc TARGET_CPU_X86 := FALSE}{$elifc defined __i386__ and __i386__}	{$setc TARGET_CPU_PPC := FALSE}	{$setc TARGET_CPU_X86 := TRUE}{$elsec}	{$error Neither __ppc__ nor __i386__ is defined.}{$endc}{$setc TARGET_CPU_PPC_64 := FALSE}{$ifc defined FPC_BIG_ENDIAN}	{$setc TARGET_RT_BIG_ENDIAN := TRUE}	{$setc TARGET_RT_LITTLE_ENDIAN := FALSE}{$elifc defined FPC_LITTLE_ENDIAN}	{$setc TARGET_RT_BIG_ENDIAN := FALSE}	{$setc TARGET_RT_LITTLE_ENDIAN := TRUE}{$elsec}	{$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}{$endc}{$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}{$setc CALL_NOT_IN_CARBON := FALSE}{$setc OLDROUTINENAMES := FALSE}{$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}{$setc OPAQUE_UPP_TYPES := TRUE}{$setc OTCARBONAPPLICATION := TRUE}{$setc OTKERNEL := FALSE}{$setc PM_USE_SESSION_APIS := TRUE}{$setc TARGET_API_MAC_CARBON := TRUE}{$setc TARGET_API_MAC_OS8 := FALSE}{$setc TARGET_API_MAC_OSX := TRUE}{$setc TARGET_CARBON := TRUE}{$setc TARGET_CPU_68K := FALSE}{$setc TARGET_CPU_MIPS := FALSE}{$setc TARGET_CPU_SPARC := FALSE}{$setc TARGET_OS_MAC := TRUE}{$setc TARGET_OS_UNIX := FALSE}{$setc TARGET_OS_WIN32 := FALSE}{$setc TARGET_RT_MAC_68881 := FALSE}{$setc TARGET_RT_MAC_CFM := FALSE}{$setc TARGET_RT_MAC_MACHO := TRUE}{$setc TYPED_FUNCTION_POINTERS := TRUE}{$setc TYPE_BOOL := FALSE}{$setc TYPE_EXTENDED := FALSE}{$setc TYPE_LONGLONG := TRUE}uses MacTypes,CFBase,CFData,CFNumber,HIObject;{$ALIGN POWER}{ *  HIArchive *   *  Discussion: *    HIArchive provides a standard, extensible mechanism to flatten *    objects for storage in memory or on disk for later retrieval or *    transfer to another application. The archive is encoded using the *    binary property list format. The binary plist can be converted to *    text XML with /usr/bin/plutil for develoment purposes. Details on *    how to create an object that supports the HIArchive protocol are *    provided in HIToolbox/HIObject.h.  *     *    When writing data out to an archive, the client must first use *    HIArchiveCreateForEncoding to generate the archive into which the *    data will be encoded. From there, data may be added to the *    archive by calling HIArchiveEncodeBoolean, HIArchiveEncodeNumber, *    and HIArchiveEncodeCFType. If HIArchiveEncodeCFType is being *    called on one of your custom HIObjects, HIToolbox will send it *    the kEventHIObjectEncode (HIOBject.h) event. In order to receive *    this event your HIObject must first have set its archiving *    ignored value to false via HIObjectSetArchivingIgnored. This lets *    HIToolbox know your object supports archiving. The *    kEventParamHIArchive parameter contains the HIArchiveRef into *    which it should encode all of its relevant state information. All *    information added to the archive is written with a key. This key *    is used later during the unarchiving process to pull the encoded *    data from the archive. System supplied HIObjects namespace their *    keys with an HI prefix. Subclasses of system supplied HIObjects *    should only use this namespace if explicitly overriding a value *    written to the archive by the superclass. Take care to mantain *    the same preference format when overriding the default to avoid *    incompatibilities. When your archiving process is complete, *    HIArchiveCopyEncodedData will compress the data into the archive *    return it in a CFDataRef. This CFDataRef can be sent to another *    application or written out to disk for later retrieval. Once the *    encoded data is compressed, no more data may be added to the *    archive. At this point, the HIArchiveRef must be released via *    CFRelease.  *     *    When retrieving data from an archive, the client must first use *    HIArchiveCreateForDecoding to create an archive reference capable *    of decoding the data from the provided CFDataRef. Given the *    HIArchiveRef, data may be pulled from the archive via *    HIArchiveDecodeBoolean, HIArchiveDecodeNumber, *    HIArchiveCopyDecodedCFType and HIArchiveCopyDecodedHIObject. If *    HIArchiveCopyDecodedHIObject is called on one of you custom *    HIObjects, HIToolbox will send it the kEventHIObjectInitialize *    (HIOBject.h) event. The kEventParamHIArchive parameter contains *    the HIArchiveRef from which it should decode all of its relevant *    state information. Because these data values were written by key, *    they can be read in any order regardless of how they were *    written. This also means new keyed values can be added without *    breaking existing decoding routines. Once all data has been read *    from the archive, it may simply be released via CFRelease. *     *     *    For those clients who wish to provide HIArchive editing features *    there are a few tricks necessary to achieve the desired behavior. *    A generic HIArchive editor will likely be used by clients to edit *    objects for which it has no direct knowledge (or which have not *    yet been designed). For instance, it may provide users with the *    ability to edit custom HIViews including generic functionality to *    set the view's class identifier, title, frame, etc. In this case, *    it is necessary to instantiate the superclass *    ("com.apple.hiview") of the custom view object because it doesn't *    exist and hasn't been registered within the editor.  *     *    After the user has completed editing the object and desires to *    write out the archive, the editor must set the custom archive *    data to the object with HIObjectSetCustomArchiveData as a *    CFDictionary. Standard keys for initialization parameter types, *    names and values, class and superclass identifiers and CDEF *    procID are provided in HIToolbox/HIObject.h. Of particular *    importance are the object's class and superclass identifier. *    HIArchive uses these values to instantiate the proper object when *    loading the archive within the client's application. The *    parameter types, names and values are then automatically passed *    to the client object through its initialization event.  *     *    At this point, the object can simply be written into the archive *    with HIArchiveCreateForEncoding and HIArchiveEncodeCFType. *    HIArchive will handle writing the appropriate classID based on *    the custom data that was assigned earlier.  *     *    Generic HIArchive editing applications will also need to handle *    loading client archives. In this case, the archive is decoded in *    editing mode by passing the *    kHIArchiveDecodeSuperclassForUnregisteredObjects proxy bit in *    HIArchiveCreateForDecoding. When objects not registered in the *    current application are decoded, HIArchive will notice this and *    look into the custom data for the object's superclass identifier, *    instantiate an object of that type instead and attach the custom *    data to the newly created object. The editor can then look at the *    attached custom data with HIObjectCopyCustomArchiveData and *    provide it in the UI for the user to edit. }type	HIArchiveRef = ^SInt32; { an opaque 32-bit type }{ *  Discussion: *    HIArchive errors }const{   * The archive was created specifically for encoding or decoding but   * passed into a non-corresponding routine.   }	hiArchiveTypeMismatchErr = -6780;  {   * The keyed value requested does not exist in the archive.   }	hiArchiveKeyNotAvailableErr = -6781;  {   * HIArchiveCopyEncodedData has been called and no more data may be   * encoded.   }	hiArchiveEncodingCompleteErr = -6782;  {   * The HIObject does not support the archiving protocol.   }	hiArchiveHIObjectIgnoresArchivingErr = -6783;{ *  Discussion: *    HIArchiveCreateForDecoding options }const{   * kDecodeSuperclassForUnregisteredObjects is passed to   * HIArchiveCreateForDecoding indicating that if an HIObject's class   * has not been registered before it is pulled from the archive,   * HIArchiveCopyDecodedCFType will automatically instantiate the   * unarchived object as its superclass if it exists. For instance, a   * custom HIView of class "com.myco.customview" being unarchived will   * be instantiated as class "com.apple.hiview" if your app has not   * yet registered "com.myco.customview". This is useful for archive   * editors that do not implement all objects contained in a client   * archive. Note that only data written to the archive by the   * superclass will be decoded. All data unique to the unregistered   * subclass will be ignored. This option also signals the HIObject to   * load its custom archive data so it can be accessed via   * HIObjectCopyCustomArchiveData. HIArchive is unable to instantiate   * unregistered objects whose superclasses are also unregistered.   }	kHIArchiveDecodeSuperclassForUnregisteredObjects = 1 shl 0;{ *  HIArchiveGetTypeID() *   *  Summary: *    Returns the CFType identifier for an HIArchive object. *   *  Mac OS X threading: *    Not thread safe *   *  Result: *    A CFTypeID unique to HIArchive instances. *   *  Availability: *    Mac OS X:         in version 10.4 and later in Carbon.framework *    CarbonLib:        not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later *    Non-Carbon CFM:   not available }function HIArchiveGetTypeID: CFTypeID; external name '_HIArchiveGetTypeID';(* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *){ *  HIArchiveCreateForEncoding() *   *  Summary: *    Creates an HIArchive for use in encoding object information. *   *  Discussion: *    The created HIArchiveRef is a CFType and must be released via *    CFRelease. *   *  Mac OS X threading: *    Not thread safe *   *  Parameters: *     *    outEncoder: *      An HIArchive reference which receives the created HIArchive on *      return. *   *  Result: *    An operating system result code. *   *  Availability: *    Mac OS X:         in version 10.4 and later in Carbon.framework *    CarbonLib:        not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later *    Non-Carbon CFM:   not available }function HIArchiveCreateForEncoding( var outEncoder: HIArchiveRef ): OSStatus; external name '_HIArchiveCreateForEncoding';(* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *){ *  HIArchiveEncodeBoolean() *   *  Summary: *    Adds a keyed boolean value to the provided archive. *   *  Mac OS X threading: *    Not thread safe *   *  Parameters: *     *    inEncoder: *      An HIArchiveRef to which the boolean value is added. *     *    inKey: *      The key associated with the boolean value used for later *      decoding. *     *    inBoolean: *      The boolean value to be encoded. *   *  Result: *    An operating system result code. *   *  Availability: *    Mac OS X:         in version 10.4 and later in Carbon.framework *    CarbonLib:        not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later *    Non-Carbon CFM:   not available }function HIArchiveEncodeBoolean( inEncoder: HIArchiveRef; inKey: CFStringRef; inBoolean: Boolean ): OSStatus; external name '_HIArchiveEncodeBoolean';(* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *){ *  HIArchiveEncodeNumber() *   *  Summary: *    Adds a keyed number value to the provided archive. *   *  Mac OS X threading: *    Not thread safe *   *  Parameters: *     *    inEncoder: *      An HIArchiveRef to which the number value is added. *     *    inKey: *      The key associated with the number value used for later *      decoding. *     *    inNumberType: *      A CFNumberType describing the type of number value being *      encoded. *     *    inNumberValue: *      The number value to be encoded. *   *  Result: *    An operating system result code. *   *  Availability: *    Mac OS X:         in version 10.4 and later in Carbon.framework *    CarbonLib:        not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later *    Non-Carbon CFM:   not available }function HIArchiveEncodeNumber( inEncoder: HIArchiveRef; inKey: CFStringRef; inNumberType: CFNumberType; inNumberValue: {const} UnivPtr ): OSStatus; external name '_HIArchiveEncodeNumber';(* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *){ *  HIArchiveEncodeCFType() *   *  Summary: *    Adds a keyed CFType to the provided archive. *   *  Discussion: *    Encodes basic and property list based CFTypes including HIObjects *    supporting the archiving protocol. If the HIObject supports the *    archiving protocol, it will receive the kEventHIObjectEncode *    event during which it should encode all relevant state *    information. The kEventParamHIArchive parameter contains the *    archive into which data should be added. *   *  Mac OS X threading: *    Not thread safe *   *  Parameters: *     *    inEncoder: *      An HIArchiveRef to which the CFType is added. *     *    inKey: *      The key associated with the CFType used for later decoding. *     *    inCFType: *      The CFType to be encoded. *   *  Result: *    An operating system result code. *   *  Availability: *    Mac OS X:         in version 10.4 and later in Carbon.framework *    CarbonLib:        not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later *    Non-Carbon CFM:   not available }function HIArchiveEncodeCFType( inEncoder: HIArchiveRef; inKey: CFStringRef; inCFType: CFTypeRef ): OSStatus; external name '_HIArchiveEncodeCFType';(* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *){ *  HIArchiveCopyEncodedData() *   *  Summary: *    Returns the encoded archive as a CFDataRef. *   *  Discussion: *    Compresses the archived data for storage and returns it as a *    CFDataRef. After the archived data is compressed, no further *    information may be encoded. Do not call this routine until the *    encoding process is complete. *   *  Mac OS X threading: *    Not thread safe *   *  Parameters: *     *    inEncoder: *      An HIArchiveRef into which the archived data was compiled. *     *    outData: *      A CFData reference which receives the compressed archive data *      on return. *   *  Result: *    An operating system result code. *   *  Availability: *    Mac OS X:         in version 10.4 and later in Carbon.framework *    CarbonLib:        not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later *    Non-Carbon CFM:   not available }function HIArchiveCopyEncodedData( inEncoder: HIArchiveRef; var outData: CFDataRef ): OSStatus; external name '_HIArchiveCopyEncodedData';(* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *){ *  HIArchiveCreateForDecoding() *   *  Summary: *    Creates an HIArchive for use in decoding the object information *    contained in the provided CFData reference. *   *  Discussion: *    The created HIArchiveRef is a CFType and must be released via *    CFRelease. *   *  Mac OS X threading: *    Not thread safe *   *  Parameters: *     *    inData: *      A CFDataRef containing a previously encoded archive. *     *    inOptions: *      The only option supported by this routine at present is *      kHIArchiveDecodeSuperclassForUnregisteredObjects. You may also *      pass zero for this parameter to get the default behavior. *     *    outDecoder: *      An HIArchive reference which receives the created HIArchive on *      return. *   *  Result: *    An operating system result code. *   *  Availability: *    Mac OS X:         in version 10.4 and later in Carbon.framework *    CarbonLib:        not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later *    Non-Carbon CFM:   not available }function HIArchiveCreateForDecoding( inData: CFDataRef; inOptions: OptionBits; var outDecoder: HIArchiveRef ): OSStatus; external name '_HIArchiveCreateForDecoding';(* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *){ *  HIArchiveDecodeBoolean() *   *  Summary: *    Pulls a keyed boolean value from the provided archive. *   *  Mac OS X threading: *    Not thread safe *   *  Parameters: *     *    inDecoder: *      An HIArchiveRef from which the boolean value is pulled. *     *    inKey: *      The key associated with the boolean value used while encoding. *     *    outBoolean: *      The boolean value to be decoded. *   *  Result: *    An operating system result code. *   *  Availability: *    Mac OS X:         in version 10.4 and later in Carbon.framework *    CarbonLib:        not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later *    Non-Carbon CFM:   not available }function HIArchiveDecodeBoolean( inDecoder: HIArchiveRef; inKey: CFStringRef; var outBoolean: Boolean ): OSStatus; external name '_HIArchiveDecodeBoolean';(* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *){ *  HIArchiveDecodeNumber() *   *  Summary: *    Pulls a keyed number value from the provided archive. *   *  Mac OS X threading: *    Not thread safe *   *  Parameters: *     *    inDecoder: *      An HIArchiveRef from which the number value is pulled. *     *    inKey: *      The key associated with the number value used while encoding. *     *    inNumberType: *      A CFNumberType describing the type of number value being *      encoded. *     *    outNumberValue: *      The number value to be decoded. *   *  Result: *    An operating system result code. *   *  Availability: *    Mac OS X:         in version 10.4 and later in Carbon.framework *    CarbonLib:        not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later *    Non-Carbon CFM:   not available }function HIArchiveDecodeNumber( inDecoder: HIArchiveRef; inKey: CFStringRef; inNumberType: CFNumberType; outNumberValue: UnivPtr ): OSStatus; external name '_HIArchiveDecodeNumber';(* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *){ *  HIArchiveCopyDecodedCFType() *   *  Summary: *    Pulls a keyed CFType from the provided archive. *   *  Discussion: *    Decodes basic and property list based CFTypes and HIObjects. If *    the CFType is an HIObject, it will be constructed and receive the *    kEventHIObjectInitialize event. The kEventParamHIArchive *    parameter contains the archive from which data should be *    retrieved. *   *  Mac OS X threading: *    Not thread safe *   *  Parameters: *     *    inDecoder: *      An HIArchiveRef from which the CFType value is pulled. *     *    inKey: *      The key associated with the CFType used while encoding. *     *    outCFType: *      The CFType to be decoded. *   *  Result: *    An operating system result code. *   *  Availability: *    Mac OS X:         in version 10.4 and later in Carbon.framework *    CarbonLib:        not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later *    Non-Carbon CFM:   not available }function HIArchiveCopyDecodedCFType( inDecoder: HIArchiveRef; inKey: CFStringRef; var outCFType: CFTypeRef ): OSStatus; external name '_HIArchiveCopyDecodedCFType';(* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *)end.
 |