diff -r 889504eac4fb -r 604ca70b6235 xmlsrv_plat/cxml_library_api/inc/nw_wbxml_dictionary.h --- a/xmlsrv_plat/cxml_library_api/inc/nw_wbxml_dictionary.h Tue Aug 31 17:02:56 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,824 +0,0 @@ -/* -* Copyright (c) 2000 - 2001 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the License "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -/** ----------------------------------------------------------------------- ** - @package: NW_WBXML - - @synopsis: default - - @description: Wbxml token definitions - - ** ----------------------------------------------------------------------- **/ - -#ifndef NW_PARSER_WBXML_DICTIONARY_H -#define NW_PARSER_WBXML_DICTIONARY_H - -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -/*Different feature flags for cXML Library internal use only. */ - -#define CXML_DTD_SUPPORT_ON 0x0000001 - -/** ----------------------------------------------------------------------- ** - @struct: NW_WBXML_DictEntry - - @synopsis: Entry - - @scope: public - @variables: - NW_Byte token - The token. - - NW_String_UCS2Buff_t* name - The name. - - @description: Generic dictionary entry. - ** ----------------------------------------------------------------------- **/ -typedef struct NW_WBXML_DictEntry_s{ - NW_Byte token; - NW_String_UCS2Buff_t* name; -}NW_WBXML_DictEntry_t; - - -/** ----------------------------------------------------------------------- ** - @struct: NW_WBXML_Codepage - - @synopsis: Codepage - - @scope: public - @variables: - NW_Byte count - The number of tokens. - - NW_WBXML_DictEntry_t* tokens - Ordered by token. - - NW_Byte* names - Ordered by name, stored as offsets into the token list. - - @description: Codepages should be small and have efficient access - both by token and name. They are currently stored in - packed lists of token-string pairs. While this - requires one more NW_Byte per entry than a sparse - array, they are still guaranteed to be smaller than - sparse arrays for tables with less. than ~200 - entries. Since the biggest table we know about (wbxml - attributes) has only 109 entries this seems like a - reasonable tradeoff. - - ** ----------------------------------------------------------------------- **/ -typedef struct NW_WBXML_Codepage_s{ - NW_Byte count; - NW_WBXML_DictEntry_t* tokens; - NW_Byte* names; -}NW_WBXML_Codepage_t; - - -/** ----------------------------------------------------------------------- ** - @struct: NW_WBXML_Dictionary - - @synopsis: Dictionary - - @scope: public - @variables: - NW_Uint32 public_id - The public ID. - - NW_Ucs2* doc_type - The document type. - - NW_Int32 tag_page_count - Number of tag pages. - - NW_WBXML_Codepage_t* tag_pages - Array of pages. - - NW_Int32 attr_page_count - Number of attribute pages. - - NW_WBXML_Codepage_t* attr_pages - Array of pages. - - @description: This structure stores the basic definition of a dictionary. - ** ----------------------------------------------------------------------- **/ -typedef struct NW_WBXML_Dictionary_s { - /* Dictionary identifiers */ - NW_Uint32 public_id; - NW_Ucs2* doc_type; - /* Tag code pages */ - NW_Int32 tag_page_count; - NW_WBXML_Codepage_t* tag_pages; - /* Attribute code pages */ - NW_Int32 attr_page_count; - NW_WBXML_Codepage_t* attr_pages; -}NW_WBXML_Dictionary_t; - - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_initialize - - @synopsis: Initialize dictionary. - - @scope: public - - @parameters: - [in] NW_Int32 n - Number of dictionaries. - - [in] NW_WBXML_Dictionary_t* d[] - The array of dictionaries. - - @description: Dictionary initialization. - - @returns: NW_Status_t - Status of operation. - - [NW_STAT_SUCCESS] - Dictionaries added to active list - - [NW_STAT_FAILURE] - List already full. - - ** ----------------------------------------------------------------------- **/ -IMPORT_C NW_Status_t -NW_WBXML_Dictionary_initialize(NW_Int32 n, NW_WBXML_Dictionary_t* d[]); - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_add - - @synopsis: add dictionary(s). - - @scope: public - - @parameters: - [in] NW_Int32 n - Number of dictionaries. - - [in] NW_WBXML_Dictionary_t* d[] - The array of dictionaries. - - @description: add an array of dictionaries. - - @returns: NW_Status_t - Status of operation. - - [NW_STAT_SUCCESS] - Dictionaries added to active list - - [NW_STAT_FAILURE] - List already full. - - ** ----------------------------------------------------------------------- **/ -NW_Status_t -NW_WBXML_Dictionary_add(NW_Int32 n, NW_WBXML_Dictionary_t* d[]); - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_destroy - - @synopsis: Destroy dictionary. - - @scope: public - - @parameters: - [in] void - - - [in-out] - - - @description: Dictionary destruction. - - @returns: NW_Status_t - default - - ** ----------------------------------------------------------------------- **/ -IMPORT_C NW_Status_t -NW_WBXML_Dictionary_destroy (); - -/* ----------------------------------------------------------------------- ** - Dictionary lookup -** ----------------------------------------------------------------------- **/ - - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_getIndexByPublicId - - @synopsis: Get dictionary index using publicID. - - @scope: public - - @parameters: - [in] NW_Uint32 public_id - The publid ID to search for. - - @description: Get dictionary index using publicID. - - @returns: NW_Uint32 - 1 - based index or 0 if not found. - - ** ----------------------------------------------------------------------- **/ -NW_Uint32 -NW_WBXML_Dictionary_getIndexByPublicId (NW_Uint32 public_id); - - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_getIndexByDocType - - @synopsis: Get dictionary index using docType. - - @scope: public - - @parameters: - [out] NW_String_t* doc_type - Returned document type. - - [in] NW_Uint32 encoding - Requested encoding. - - @description: Get dictionary index using docType. - - @returns: NW_Uint32 - 1 based index if found, otherwise 0. - - ** ----------------------------------------------------------------------- **/ -NW_Uint32 -NW_WBXML_Dictionary_getIndexByDocType(NW_String_t* doc_type, NW_Uint32 encoding); - - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_getByPublicId - - @synopsis: Get dictionary using publicId. - - @scope: public - - @parameters: - [in] NW_Uint32 publicId - Public ID. - - @description: Look up a dictionary using the document public ID. The - public ID can be gotten from the document header - (NMXB_Wbxml_Document_t). - - Documents contain either a public ID or a document type - string. Use this function for documents containing a public ID. - - @returns: NW_WBXML_Dictionary_t* - Pointer to dictionary or NULL if not found. - - ** ----------------------------------------------------------------------- **/ -IMPORT_C NW_WBXML_Dictionary_t* -NW_WBXML_Dictionary_getByPublicId (NW_Uint32 publicId); - - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_getByDocType - - @synopsis: Get dictionary using docType. - - @scope: public - - @parameters: - [in] NW_String_t* docType - A UCS-2 encoded string representing the document type. - - [in] NW_Uint32 encoding - The encoding. - - @description: Look up a dictionary using the document type - string. The document type can be gotten from the - document header (NW_Wbxml_Document_t). The string - contained in the header will be encoded in the - document encoding. Note that if the encoding is not - UCS-2, this string must be converted to a UCS-2 string - before being passed to this function. Documents - contain either a public ID or a document type - string. Use this functions for documents containing a - document type string - - @returns: NW_WBXML_Dictionary_t* - Pointer to dictionary or NULL if not found. - - ** ----------------------------------------------------------------------- **/ -NW_WBXML_Dictionary_t* -NW_WBXML_Dictionary_getByDocType (NW_String_t* docType, NW_Uint32 encoding); - - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_getByIndex - - @synopsis: Get dictionary using index. - - @scope: public - - @parameters: - [in] NW_Uint32 dictIndex - The index. - - @description: Get dictionary using index. - - @returns: NW_WBXML_Dictionary_t* - Pointer to dictionary or NULL if not found. - - ** ----------------------------------------------------------------------- **/ -NW_WBXML_Dictionary_t* -NW_WBXML_Dictionary_getByIndex(NW_Uint32 dictIndex); - - -/* ----------------------------------------------------------------------- ** - Lookups by token -** ----------------------------------------------------------------------- **/ - - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_getTagByFqToken - - @synopsis: Get tag using fully qualified token. - - @scope: public - - @parameters: - [in] NW_Uint32 fq_token - The fully qualified token. - - @description: Gets the string represented by a token. The fq_token - parameter is a token that was returned by the parser - via the FQToken callback. Such token values are "fully - qualified" since they contain not only the token value - itself, but also information that specifies the - dictionary, the code page, and whether the token is - part of the attribute or token code space. Fully - qualified token values should be treated as opaque - data. Get tag using fully qualified token. - - @returns: NW_String_UCS2Buff_t* - Tag name or NULL if not found. - - ** ----------------------------------------------------------------------- **/ -IMPORT_C NW_String_UCS2Buff_t* -NW_WBXML_Dictionary_getTagByFqToken (NW_Uint32 fq_token); - - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_getElementNameByToken - - @synopsis: Get element name using token. - - @scope: public - - @parameters: - [in] NW_WBXML_Dictionary_t* dictionary - The dictionary to search. - - [in] NW_Uint16 token - The token. - - @description: Get element name using token. - - @returns: NW_String_UCS2Buff_t* - Element name or NULL if not found. - - ** ----------------------------------------------------------------------- **/ -NW_String_UCS2Buff_t* -NW_WBXML_Dictionary_getElementNameByToken (NW_WBXML_Dictionary_t* dictionary, - NW_Uint16 token); - - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_getAttributeNameByToken - - @synopsis: Get attribute name using token. - - @scope: public - - @parameters: - [in] NW_WBXML_Dictionary_t* dictionary - The dictionary. - - [in] NW_Uint16 token - The token. - - @description: Get attribute name using token. - - @returns: NW_String_UCS2Buff_t* - Attribute name or NULL if not found. - - ** ----------------------------------------------------------------------- **/ -IMPORT_C NW_String_UCS2Buff_t* -NW_WBXML_Dictionary_getAttributeNameByToken (NW_WBXML_Dictionary_t* dictionary, - NW_Uint16 token); - - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_resolveLiteralToken - - @synopsis: Returns literal token. - - @scope: public - - @parameters: - [in-out] NW_Uint32* token - The token. - - [in] NW_String_t* name - Name to lookup. - - [in] NW_Bool is_tag - NW_TRUE if tag token otherwise NW_FALSE if attribute . - - [in] NW_Uint32 encoding - The encoding of this string. - - [in] NW_Bool matchCase - If NW_TRUE do case sensitive compare. - - @description: Given a tag or attribute token, if the token is a literal, - use the given name to lookup the tag/attribute's "real" - token and return that token. - - @returns: NW_Status_t - Status of operation. - - [NW_STAT_SUCCESS] - Token resolved. - - [NW_STAT_FAILURE] - Token lookup fails (NOT fatal) - - [NW_STAT_OUT_OF_MEMORY] - Out of memory. - - ** ----------------------------------------------------------------------- **/ -IMPORT_C NW_Status_t -NW_WBXML_Dictionary_resolveLiteralToken(NW_Uint32* token, - NW_String_t* name, - NW_Bool is_tag, - NW_Uint32 encoding, - NW_Bool matchCase); - -/* ----------------------------------------------------------------------- ** - Lookups by name -** ----------------------------------------------------------------------- **/ - - -#define NW_WBXML_MASK_CODEPAGE 0x0000FF00 -#define NW_WBXML_MASK_TOKEN 0x000000FF -/* mask off the page and tag leaving content and attribute bits out */ -#define NW_WBXML_MASK_FQTOKEN_TAG 0x0000FF3F - -#define NW_WBXML_Dictionary_extractPage(x) \ - ((NW_Uint8)(((x) & NW_WBXML_MASK_CODEPAGE) >> 8)) - -#define NW_WBXML_Dictionary_extractToken(x) \ - ((NW_Uint8)((x) & NW_WBXML_MASK_TOKEN)) - - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_getAttributeToken - - @synopsis: Get attribute token using name. - - @scope: public - - @parameters: - [in] NW_WBXML_Dictionary_t* dictionary - The dictionary. - - [in] const NW_String_t* name - The attribute name. - - [in] NW_Uint32 encoding - The encoding of the name. - - [in] NW_Bool matchCase - Case sensitive comparison if NW_TRUE. - - @description: Look up an attribute token in a dictionary. The lower - two bytes of the returned value represent the code - page and token. The token value can be calculated as - value&0xff ; the code page can be calculated as - (value>>8)&0xff.) - - A fully qualified token constructed from the return - value violates the goal that fully qualified tokens be - opaque. Attribute tokens can either be attribute start - tokens or attribute value tokens. Attribute start - tokens may contain both a name and a value or a name - alone. To look up an attribute start token containing - a name and value, the string argument should be of the - form "name=value". Since attributes may be encoded as - either a single attribute start token, or an attribute - start token and one or more attribute value tokens, - dictionaries may contain multiple entries for a - particular attribute name. The caller may need to do - several lookups to convert a particular attribute - string into a set of tokens, especially if the caller - wants to find the smallest set of tokens to represent - a particular string. - - These return the lower 16 bits of the fully qualified - token i.e., the token and code page. The rest of the - token can be constructed by the caller if needed. We - don't use all 32 bits in order to be able to return a - signed quantity to indicate failure. - - @returns: NW_Int16 - Either the token or -1 if the token is not found. - - ** ----------------------------------------------------------------------- **/ -IMPORT_C NW_Int16 -NW_WBXML_Dictionary_getAttributeToken (NW_WBXML_Dictionary_t* dictionary, - const NW_String_t* name, - NW_Uint32 encoding, - NW_Bool matchCase); - - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_getTagToken - - @synopsis: Get tag token using name. - - @scope: public - - @parameters: - [in] NW_WBXML_Dictionary_t* dictionary - The dictionary to look in. - - [in] NW_String_UCS2Buff_t* name - The name to search for. - - [in] NW_Bool matchCase - Case sensitive match if NW_TRUE. - - @description: Look up a tag token in a dictionary. The lower two - bytes of the returned value represent the code page - and token. The token value can be calculated as - value&0xff and the code page can be calculated as - (value>>8)&0xff. - - A fully qualified token is constructed from the return - value. This violates the goal that fully qualified - tokens be opaque. - - These return the lower 16 bits of the fully qualified - token i.e., the token and code page. The rest of the - token can be constructed by the caller if needed. We - don't use all 32 bits in order to be able to return a - signed quantity to indicate failure. - - @returns: NW_Int16 - Either the token or -1 if the token is not found. - - ** ----------------------------------------------------------------------- **/ -IMPORT_C NW_Int16 -NW_WBXML_Dictionary_getTagToken(NW_WBXML_Dictionary_t* dictionary, - NW_String_UCS2Buff_t* name, - NW_Bool matchCase); - - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_getAttributeToken2 - - @synopsis: Get attribute token using name (alt.) - - @scope: public - - @parameters: - [in] NW_WBXML_Dictionary_t* dictionary - The dictionary to look in. - - [in] NW_Uint32 encoding - The encoding of name. - - [in] NW_Uint32 charCount - Length of name in characters. - - [in] NW_Uint8* pBuf - The characters. - - [out] NW_Uint16* pPageToken - The token. - - [in] NW_Bool isName - NW_TRUE for attribute name, NW_FALSE for attribute value. - - @description: Get attribute token using name (alt.) Boolean flag determines - whether to return attribute name (NW_TRUE) or attribute value - (NW_FALSE). A cleaner alternative is to use the more specific - functions which do not require the boolean argument. - - These return the lower 16 bits of the fully qualified - token i.e., the token and code page. The rest of the - token can be constructed by the caller if needed. We - don't use all 32 bits in order to be able to return a - signed quantity to indicate failure. - - @returns: NW_Status_t - Status of operation. - - [NW_STAT_SUCCESS] - Token returned. - - [NW_STAT_FAILURE] - Token not found or required parameter is NULL. - - ** ----------------------------------------------------------------------- **/ -NW_Status_t -NW_WBXML_Dictionary_getAttributeToken2(NW_WBXML_Dictionary_t* dictionary, - NW_Uint32 encoding, - NW_Uint32 charCount, - NW_Uint8* pBuf, - NW_Uint16* pPageToken, - NW_Bool isName); - - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_getAttributeNameToken - - @synopsis: Get attribute name token using name. - - @scope: public - - @parameters: - [in] NW_WBXML_Dictionary_t* dictionary - The dictionary. - - [in] NW_Uint32 encoding - The encoding. - - [in] NW_Uint32 charCount - Length of name in characters. - - [in] NW_Uint8* pBuf - The name. - - [out] NW_Uint16* pPageToken - Returned token. - - @description: Get attribute name token using name. - - @returns: NW_Status_t - Status of operation. - - [NW_STAT_SUCCESS] - Token returned. - - [NW_STAT_FAILURE] - Token not found or required parameter is NULL. - - ** ----------------------------------------------------------------------- **/ -NW_Status_t -NW_WBXML_Dictionary_getAttributeNameToken(NW_WBXML_Dictionary_t* dictionary, - NW_Uint32 encoding, - NW_Uint32 charCount, - NW_Uint8* pBuf, - NW_Uint16* pPageToken); - - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_getAttributeValueToken - - @synopsis: Get attribute value token using name. - - @scope: public - - @parameters: - [in] NW_WBXML_Dictionary_t* dictionary - The dictionary. - - [in] NW_Uint32 encoding - The encoding. - - [in] NW_Uint32 charCount - Length of attribute value. - - [in] NW_Uint8* pBuf - The attribute value. - - [out] NW_Uint16* pPageToken - The returned token. - - @description: Get attribute value token using name. - - @returns: NW_Status_t - Status of operation. - - [NW_STAT_SUCCESS] - Token returned. - - [NW_STAT_FAILURE] - Token not found or required parameter is NULL. - - ** ----------------------------------------------------------------------- **/ -NW_Status_t -NW_WBXML_Dictionary_getAttributeValueToken(NW_WBXML_Dictionary_t* dictionary, - NW_Uint32 encoding, - NW_Uint32 charCount, - NW_Uint8* pBuf, - NW_Uint16* pPageToken); - - -/** ----------------------------------------------------------------------- ** - @function: NW_WBXML_Dictionary_getTagToken2 - - @synopsis: Get tag token using name (alt.) - - @scope: public - - @parameters: - [in] NW_WBXML_Dictionary_t* dictionary - The dictionary. - - [in] NW_Uint32 encoding - The encoding. - - [in] NW_Uint32 charCount - Length of value. - - [in] NW_Uint8* pBuf - The value. - - [out] NW_Uint16* pPageToken - The returned token. - - @description: Get tag token using name (alt.) - - @returns: NW_Status_t - Status of operation. - - [NW_STAT_SUCCESS] - Token returned. - - [NW_STAT_FAILURE] - Token not found or required parameter is NULL. - - ** ----------------------------------------------------------------------- **/ -NW_Status_t -NW_WBXML_Dictionary_getTagToken2(NW_WBXML_Dictionary_t* dictionary, - NW_Uint32 encoding, - NW_Uint32 charCount, - NW_Uint8* pBuf, - NW_Uint16* pPageToken); - -/* 1. returns success, oom, or failure - 2. if oom or failure, no leaks and no residual memory allocations - 3. if oom or failure on return *ppDocType is NULL - 4 if success on return *ppDocType is a valid string or NULL if - no matching dictionary or dictionary did not have a doc_type string. */ -NW_Status_t -NW_WBXML_Dictionary_publicId_to_doctypeString(NW_Uint32 publicId, - NW_String_t** ppDocType); - - - -/** ----------------------------------------------------------------------- ** - @function: CXML_Additional_Feature_Supprted - - @synopsis: To decide about differnt. This helps in the debugging the - cXML Library. It is not for any client. So, this function - may not be used. - - @scope: public - - @parameters: - - @description: There are bit masks defined for different features and for - internal use only. - - @returns: - - Bit mask of features supported. If not feature is supported - then this function returns zero. - - ** ----------------------------------------------------------------------- **/ -IMPORT_C -CXML_Int32 CXML_Additional_Feature_Supprted(); - - - -#ifdef __cplusplus -} /* extern "C" { */ -#endif /* __cplusplus */ - -#endif /* NW_PARSER_WBXML_DICTIONARY_H */