123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- { CFPropertyList.h
- Copyright (c) 1998-2005, Apple, Inc. All rights reserved.
- }
- { Pascal Translation Updated: Peter N Lewis, <[email protected]>, September 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 CFPropertyList;
- 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,CFString,CFStream;
- {$ALIGN POWER}
- type
- CFPropertyListMutabilityOptions = SInt32;
- const
- kCFPropertyListImmutable = 0;
- kCFPropertyListMutableContainers = 1;
- kCFPropertyListMutableContainersAndLeaves = 2;
-
- {
- Creates a property list object from its XML description; xmlData should
- be the raw bytes of that description, possibly the contents of an XML
- file. Returns NULL if the data cannot be parsed; if the parse fails
- and errorString is non-NULL, a human-readable description of the failure
- is returned in errorString. It is the caller's responsibility to release
- either the returned object or the error string, whichever is applicable.
- }
- function CFPropertyListCreateFromXMLData( allocator: CFAllocatorRef; xmlData: CFDataRef; mutabilityOption: CFOptionFlags; errorString: CFStringRefPtr ): CFPropertyListRef; external name '_CFPropertyListCreateFromXMLData';
- {
- Returns the XML description of the given object; propertyList must
- be one of the supported property list types, and (for composite types
- like CFArray and CFDictionary) must not contain any elements that
- are not themselves of a property list type. If a non-property list
- type is encountered, NULL is returned. The returned data is
- appropriate for writing out to an XML file. Note that a data, not a
- string, is returned because the bytes contain in them a description
- of the string encoding used.
- }
- function CFPropertyListCreateXMLData( allocator: CFAllocatorRef; propertyList: CFPropertyListRef ): CFDataRef; external name '_CFPropertyListCreateXMLData';
- {
- Recursively creates a copy of the given property list (so nested arrays
- and dictionaries are copied as well as the top-most container). The
- resulting property list has the mutability characteristics determined
- by mutabilityOption.
- }
- function CFPropertyListCreateDeepCopy( allocator: CFAllocatorRef; propertyList: CFPropertyListRef; mutabilityOption: CFOptionFlags ): CFPropertyListRef; external name '_CFPropertyListCreateDeepCopy';
- {#if MAC_OS_X_VERSION_10_2 <= MAC_OS_X_VERSION_MAX_ALLOWED}
- type
- CFPropertyListFormat = SInt32;
- const
- kCFPropertyListOpenStepFormat = 1;
- kCFPropertyListXMLFormat_v1_0 = 100;
- kCFPropertyListBinaryFormat_v1_0 = 200;
- function CFPropertyListIsValid( plist: CFPropertyListRef; format: CFPropertyListFormat ): Boolean; external name '_CFPropertyListIsValid';
- { Returns true if the object graph rooted at plist is a valid property list
- * graph -- that is, no cycles, containing only plist objects, and dictionary
- * keys are strings. The debugging library version spits out some messages
- * to be helpful. The plist structure which is to be allowed is given by
- * the format parameter. }
- function CFPropertyListWriteToStream( propertyList: CFPropertyListRef; stream: CFWriteStreamRef; format: CFPropertyListFormat; var errorString: CFStringRef ): CFIndex; external name '_CFPropertyListWriteToStream';
- { Writes the bytes of a plist serialization out to the stream. The
- * stream must be opened and configured -- the function simply writes
- * a bunch of bytes to the stream. The output plist format can be chosen.
- * Leaves the stream open, but note that reading a plist expects the
- * reading stream to end wherever the writing ended, so that the
- * end of the plist data can be identified. Returns the number of bytes
- * written, or 0 on error. Error messages are not currently localized, but
- * may be in the future, so they are not suitable for comparison. }
- function CFPropertyListCreateFromStream( allocator: CFAllocatorRef; stream: CFReadStreamRef; streamLength: CFIndex; mutabilityOption: CFOptionFlags; var format: CFPropertyListFormat; var errorString: CFStringRef ): CFPropertyListRef; external name '_CFPropertyListCreateFromStream';
- { Same as current function CFPropertyListCreateFromXMLData()
- * but takes a stream instead of data, and works on any plist file format.
- * CFPropertyListCreateFromXMLData() also works on any plist file format.
- * The stream must be open and configured -- the function simply reads a bunch
- * of bytes from it starting at the current location in the stream, to the END
- * of the stream, which is expected to be the end of the plist, or up to the
- * number of bytes given by the length parameter if it is not 0. Error messages
- * are not currently localized, but may be in the future, so they are not
- * suitable for comparison. }
- {#endif}
- end.
|