]> git.saurik.com Git - apple/cf.git/blobdiff - Parsing.subproj/CFXMLParser.h
CF-476.10.tar.gz
[apple/cf.git] / Parsing.subproj / CFXMLParser.h
diff --git a/Parsing.subproj/CFXMLParser.h b/Parsing.subproj/CFXMLParser.h
deleted file mode 100644 (file)
index d035979..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * Copyright (c) 2005 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
- * 
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- * 
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- * 
- * @APPLE_LICENSE_HEADER_END@
- */
-/*     CFXMLParser.h
-       Copyright (c) 1998-2005, Apple, Inc. All rights reserved.
-*/
-
-#if !defined(__COREFOUNDATION_CFXMLPARSER__)
-#define __COREFOUNDATION_CFXMLPARSER__ 1
-
-#include <CoreFoundation/CFBase.h>
-#include <CoreFoundation/CFArray.h>
-#include <CoreFoundation/CFData.h>
-#include <CoreFoundation/CFDictionary.h>
-#include <CoreFoundation/CFTree.h>
-#include <CoreFoundation/CFURL.h>
-#include <CoreFoundation/CFXMLNode.h>
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-typedef struct __CFXMLParser * CFXMLParserRef;
-
-/* These are the various options you can configure the parser with.  These are
-   chosen such that an option flag of 0 (kCFXMLParserNoOptions) leaves the XML
-   as "intact" as possible (reports all structures; performs no replacements).
-   Hence, to make the parser do the most work, returning only the pure element
-   tree, set the option flag to kCFXMLParserAllOptions.
-
-kCFXMLParserValidateDocument -
-   validate the document against its grammar from the DTD, reporting any errors.
-   Currently not supported.
-
-kCFXMLParserSkipMetaData -
-   silently skip over metadata constructs (the DTD and comments)
-
-kCFXMLParserReplacePhysicalEntities -
-   replace declared entities like &lt;.  Note that other than the 5 predefined
-   entities (lt, gt, quot, amp, apos), these must be defined in the DTD.
-   Currently not supported.
-
-kCFXMLParserSkipWhitespace -
-   skip over all whitespace that does not abut non-whitespace character data.
-   In other words, given <foo>  <bar> blah </bar></foo>, the whitespace between
-   foo's open tag and bar's open tag would be suppressed, but the whitespace
-   around blah would be preserved.
-
-kCFXMLParserAddImpliedAttributes -
-   where the DTD specifies implied attribute-value pairs for a particular element,
-   add those pairs to any occurances of the element in the element tree.
-   Currently not supported.
-*/
-
-typedef enum {
-    kCFXMLParserValidateDocument = (1 << 0),
-    kCFXMLParserSkipMetaData = (1 << 1),
-    kCFXMLParserReplacePhysicalEntities = (1 << 2),
-    kCFXMLParserSkipWhitespace = (1 << 3),
-    kCFXMLParserResolveExternalEntities = (1 << 4),
-    kCFXMLParserAddImpliedAttributes = (1 << 5),
-    kCFXMLParserAllOptions = 0x00FFFFFF,
-    kCFXMLParserNoOptions = 0
-} CFXMLParserOptions;
-
-/* This list is expected to grow */
-typedef enum {
-    kCFXMLStatusParseNotBegun = -2,
-    kCFXMLStatusParseInProgress = -1,
-    kCFXMLStatusParseSuccessful = 0,
-    kCFXMLErrorUnexpectedEOF = 1,
-    kCFXMLErrorUnknownEncoding,
-    kCFXMLErrorEncodingConversionFailure,
-    kCFXMLErrorMalformedProcessingInstruction,
-    kCFXMLErrorMalformedDTD,
-    kCFXMLErrorMalformedName,
-    kCFXMLErrorMalformedCDSect,
-    kCFXMLErrorMalformedCloseTag,
-    kCFXMLErrorMalformedStartTag,
-    kCFXMLErrorMalformedDocument,
-    kCFXMLErrorElementlessDocument,
-    kCFXMLErrorMalformedComment,
-    kCFXMLErrorMalformedCharacterReference,
-    kCFXMLErrorMalformedParsedCharacterData,
-    kCFXMLErrorNoData
-} CFXMLParserStatusCode;
-
-
-/*  These functions are called as a parse progresses.
-
-createXMLStructure -
-  called as new XML structures are encountered by the parser.  May return NULL to indicate
-  that the given structure should be skipped; if NULL is returned for a given structure,
-  only minimal parsing is done for that structure (enough to correctly determine its end,
-  and to extract any data necessary for the remainder of the parse, such as Entity definitions).
-  createXMLStructure (or indeed, any of the tree-creation callbacks) will not be called for any
-  children of the skipped structure.  The only exception is that the top-most element will always
-  be reported even if NULL was returned for the document as a whole.  NOTE: for performance reasons,
-  the node passed to createXMLStructure cannot be safely retained by the client; the node as
-  a whole must be copied (via CFXMLNodeCreateCopy), or its contents must be extracted and copied.
-
-addChild -
-  called as children are parsed and are ready to be added to the tree.  If createXMLStructure
-  returns NULL for a given structure, that structure is omitted entirely, and addChild will
-  NOT be called for either a NULL child or parent.
-
-endXMLStructure -
-  called once a structure (and all its children) are completely parsed.  As elements are encountered,
-  createXMLStructure is called for them first, then addChild to add the new structure to its parent,
-  then addChild (potentially several times) to add the new structure's children to it, then finally 
-  endXMLStructure to show that the structure has been fully parsed.
-
-createXMLStructure, addChild, and endXMLStructure are all REQUIRED TO BE NON-NULL.
-
-resolveExternalEntity -
-  called when external entities are referenced (NOT when they are simply defined).  If the function
-  pointer is NULL, the parser uses its internal routines to try and resolve the entity.  If the
-  function pointer is set, and the function returns NULL, a place holder for the external entity
-  is inserted into the tree.  In this manner, the parser's client can prevent any external network 
-  or file accesses.
-
-handleError - called as errors/warnings are encountered in the data stream.  At some point, we will
-  have an enum of the expected errors, some of which will be fatal, others of which will not.  If
-  the function pointer is NULL, the parser will silently attempt to recover.  The
-  handleError function may always return false to force the parser to stop; if handleError returns
-  true, the parser will attempt to recover (fatal errors will still cause the parse to abort
-  immediately).
-*/
-
-typedef void *         (*CFXMLParserCreateXMLStructureCallBack)(CFXMLParserRef parser, CFXMLNodeRef nodeDesc, void *info);
-typedef void           (*CFXMLParserAddChildCallBack)(CFXMLParserRef parser, void *parent, void *child, void *info);
-typedef void           (*CFXMLParserEndXMLStructureCallBack)(CFXMLParserRef parser, void *xmlType, void *info);
-typedef CFDataRef      (*CFXMLParserResolveExternalEntityCallBack)(CFXMLParserRef parser, CFXMLExternalID *extID, void *info);
-typedef Boolean                (*CFXMLParserHandleErrorCallBack)(CFXMLParserRef parser, CFXMLParserStatusCode error, void *info);
-typedef struct {
-    CFIndex                                  version;
-    CFXMLParserCreateXMLStructureCallBack    createXMLStructure;
-    CFXMLParserAddChildCallBack              addChild;
-    CFXMLParserEndXMLStructureCallBack       endXMLStructure;
-    CFXMLParserResolveExternalEntityCallBack resolveExternalEntity;
-    CFXMLParserHandleErrorCallBack           handleError;
-} CFXMLParserCallBacks;
-
-typedef const void *   (*CFXMLParserRetainCallBack)(const void *info);
-typedef void           (*CFXMLParserReleaseCallBack)(const void *info);
-typedef CFStringRef    (*CFXMLParserCopyDescriptionCallBack)(const void *info);
-typedef struct {
-    CFIndex                            version;
-    void *                             info;
-    CFXMLParserRetainCallBack          retain;
-    CFXMLParserReleaseCallBack         release;
-    CFXMLParserCopyDescriptionCallBack copyDescription;
-} CFXMLParserContext;
-
-CF_EXPORT
-CFTypeID CFXMLParserGetTypeID(void);
-
-/* Creates a parser which will parse the given data with the given options.  xmlData may not be NULL. 
-   dataSource should be the URL from which the data came, and may be NULL; it is used to resolve any
-   relative references found in xmlData. versionOfNodes determines which version CFXMLNodes are produced
-   by the parser; see CFXMLNode.h for more details.  callBacks are the callbacks called by the parser as
-   the parse progresses; callBacks, callBacks->createXMLStructure, callBacks->addChild, and
-   callBacks->endXMLStructure must all be non-NULL.  context determines what if any info pointer is
-   passed to the callbacks as the parse progresses; context may be NULL.  */
-CF_EXPORT
-CFXMLParserRef CFXMLParserCreate(CFAllocatorRef allocator, CFDataRef xmlData, CFURLRef dataSource, CFOptionFlags parseOptions, CFIndex versionOfNodes, CFXMLParserCallBacks *callBacks, CFXMLParserContext *context);
-
-/* Arguments as above, except that the data to be parsed is loaded directly 
-   from dataSource.  dataSource may not be NULL.  */
-CF_EXPORT
-CFXMLParserRef CFXMLParserCreateWithDataFromURL(CFAllocatorRef allocator, CFURLRef dataSource, CFOptionFlags parseOptions, CFIndex versionOfNodes, CFXMLParserCallBacks *callBacks, CFXMLParserContext *context);
-
-CF_EXPORT
-void CFXMLParserGetContext(CFXMLParserRef parser, CFXMLParserContext *context);
-
-CF_EXPORT
-void CFXMLParserGetCallBacks(CFXMLParserRef parser, CFXMLParserCallBacks *callBacks);
-
-CF_EXPORT
-CFURLRef CFXMLParserGetSourceURL(CFXMLParserRef parser);
-
-/* Returns the character index of the current parse location */
-CF_EXPORT
-CFIndex CFXMLParserGetLocation(CFXMLParserRef parser);
-
-/* Returns the line number of the current parse location */
-CF_EXPORT
-CFIndex CFXMLParserGetLineNumber(CFXMLParserRef parser);
-
-/* Returns the top-most object returned by the createXMLStructure callback */
-CF_EXPORT
-void *CFXMLParserGetDocument(CFXMLParserRef parser);
-
-/* Get the status code or a user-readable description of the last error that occurred in a parse.
-   If no error has occurred, a null description string is returned.  See the enum above for
-   possible status returns */
-CF_EXPORT
-CFXMLParserStatusCode CFXMLParserGetStatusCode(CFXMLParserRef parser);
-
-CF_EXPORT
-CFStringRef CFXMLParserCopyErrorDescription(CFXMLParserRef parser);
-
-/* Cause any in-progress parse to abort with the given error code and description.  errorCode
-   must be positive, and errorDescription may not be NULL.  Cannot be called asynchronously
-   (i.e. must be called from within a parser callback) */
-CF_EXPORT
-void CFXMLParserAbort(CFXMLParserRef parser, CFXMLParserStatusCode errorCode, CFStringRef errorDescription);
-
-/* Starts a parse of the data the parser was created with; returns success or failure.
-   Upon success, use CFXMLParserGetDocument() to get the product of the parse.  Upon
-   failure, use CFXMLParserGetErrorCode() or CFXMLParserCopyErrorDescription() to get
-   information about the error.  It is an error to call CFXMLParserParse() while a
-   parse is already underway. */
-CF_EXPORT
-Boolean CFXMLParserParse(CFXMLParserRef parser);
-
-/* These functions provide a higher-level interface.  The XML data is parsed to a
-   special CFTree (an CFXMLTree) with known contexts and callbacks.  See CFXMLNode.h
-   for full details on using an CFXMLTree and the CFXMLNodes contained therein.
-*/
-/* Parse to an CFXMLTreeRef.  parseOptions are as above. versionOfNodes determines
-   what version CFXMLNodes are used to populate the tree.  */
-CF_EXPORT
-CFXMLTreeRef CFXMLTreeCreateFromData(CFAllocatorRef allocator, CFDataRef xmlData, CFURLRef dataSource, CFOptionFlags parseOptions, CFIndex versionOfNodes);
-
-/* As above, with the additional by-reference pass of a CFDictionaryRef containing
-   various error information (see below). The caller is responsible for releasing the
-   returned dictionary. If the error dictionary is not desired, pass NULL. */
-CF_EXPORT
-CFXMLTreeRef CFXMLTreeCreateFromDataWithError(CFAllocatorRef allocator, CFDataRef xmlData, CFURLRef dataSource, CFOptionFlags parseOptions, CFIndex versionOfNodes, CFDictionaryRef *errorDict) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER;
-
-/* Loads the data to be parsed directly from dataSource.  Arguments as above. */
-CF_EXPORT
-CFXMLTreeRef CFXMLTreeCreateWithDataFromURL(CFAllocatorRef allocator, CFURLRef dataSource, CFOptionFlags parseOptions, CFIndex versionOfNodes);
-
-/* Generate the XMLData (ready to be written to whatever permanent storage is to be
-   used) from an CFXMLTree.  Will NOT regenerate entity references (except those
-   required for syntactic correctness) if they were replaced at the parse time;
-   clients that wish this should walk the tree and re-insert any entity references
-   that should appear in the final output file. */
-CF_EXPORT
-CFDataRef CFXMLTreeCreateXMLData(CFAllocatorRef allocator, CFXMLTreeRef xmlTree);
-
-/* Escaping and unescaping XML entities in CFStrings. The standard XML entities
-   are always replaced.  */
-/* Creates a CFString by replacing entities that appear in the entities dictionary.
-   Dictionary keys are the entities themselves, and the values should be CFStrings
-   containing the expansion. Pass NULL for entitiesDictionary to indicate no entities
-   other than the standard five. */
-CF_EXPORT
-CFStringRef CFXMLCreateStringByEscapingEntities(CFAllocatorRef allocator, CFStringRef string, CFDictionaryRef entitiesDictionary) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER;
-
-CF_EXPORT
-CFStringRef CFXMLCreateStringByUnescapingEntities(CFAllocatorRef allocator, CFStringRef string, CFDictionaryRef entitiesDictionary) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER;
-
-/* CFXMLTreeCreateFromDataWithError error dictionary key constants. */
-CF_EXPORT const CFStringRef kCFXMLTreeErrorDescription         AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER;
-    /* value is a CFString containing the readable error string. */
-
-CF_EXPORT const CFStringRef kCFXMLTreeErrorLineNumber          AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER;
-    /* value is a CFNumber containing the line on which the error appears. */
-
-CF_EXPORT const CFStringRef kCFXMLTreeErrorLocation            AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER;
-    /* value is a CFNumber containing the byte location at which the error occurred. */
-
-CF_EXPORT const CFStringRef kCFXMLTreeErrorStatusCode          AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER;
-    /* value is a CFNumber containing the error status code. */
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* ! __COREFOUNDATION_CFXMLPARSER__ */
-