xml/cxmllibrary/src/xmlp/include/cxml_xmlp_entity.h
author hgs
Wed, 23 Jun 2010 20:27:15 +0530
changeset 24 74f0b3eb154c
permissions -rw-r--r--
201024
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
24
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Provides a single header for the cXML Parser
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#ifndef _CXML_ENTITY_H_
hgs
parents:
diff changeset
    21
#define _CXML_ENTITY_H_
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include <xml/cxml/cxml_proj.h>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#ifdef __cplusplus
hgs
parents:
diff changeset
    26
extern "C" {
hgs
parents:
diff changeset
    27
#endif
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
/* As per WBXML Format Specification (WAP-192-WBXML-20010725-a), 
hgs
parents:
diff changeset
    30
 * section 5.8.4.3, the entities in WBXML can be represented either 
hgs
parents:
diff changeset
    31
 * as String token (STR_I) or the ENTITY Token. The numeric character 
hgs
parents:
diff changeset
    32
 * entities are reprented as ENTITY token and all other as STR_I.
hgs
parents:
diff changeset
    33
 * 
hgs
parents:
diff changeset
    34
 * In our implementation, all XML/HTML is represented as the numeric 
hgs
parents:
diff changeset
    35
 * character entities. The numeric character entities is allocated four
hgs
parents:
diff changeset
    36
 * bytes (NW_Uint32). The highest order byte will distinguish between the
hgs
parents:
diff changeset
    37
 * different types of entities e.g. between predefined or character numeric 
hgs
parents:
diff changeset
    38
 * entities.
hgs
parents:
diff changeset
    39
 *
hgs
parents:
diff changeset
    40
 */
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
  
hgs
parents:
diff changeset
    43
// The maximum length of the entities can't exceed than 
hgs
parents:
diff changeset
    44
// 9 bytes in current implementation. Provides safty
hgs
parents:
diff changeset
    45
// for the infinite loop.
hgs
parents:
diff changeset
    46
	
hgs
parents:
diff changeset
    47
enum { CXML_ATTR_VAL_STR = 512,
hgs
parents:
diff changeset
    48
       CXML_ENTITY_VAL_LEN =4
hgs
parents:
diff changeset
    49
};
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
typedef struct CXML_EntitySet_Entry_s {
hgs
parents:
diff changeset
    52
   CXML_Uint8* name;
hgs
parents:
diff changeset
    53
   CXML_Ucs2 value;
hgs
parents:
diff changeset
    54
}CXML_EntitySet_Entry_t;
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
    60
    @function:    CXML_XML_Handle_entity
hgs
parents:
diff changeset
    61
    @synopsis:    Resolve the entities.
hgs
parents:
diff changeset
    62
    @scope:       public      
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
    @parameters: 
hgs
parents:
diff changeset
    65
        [in] NW_XML_Reader_t* pT
hgs
parents:
diff changeset
    66
                  
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
        [in] NW_XML_Reader_Interval_t* pI_entityData
hgs
parents:
diff changeset
    69
                  Entity name 
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
        [out] NW_Uint32* entityVal
hgs
parents:
diff changeset
    73
                       If it is Character hex entry, Character decimal entry or
hgs
parents:
diff changeset
    74
                       Prefined entry then it contains the hex value of entity.
hgs
parents:
diff changeset
    75
                       In case of Internal entities it is zero.
hgs
parents:
diff changeset
    76
                        
hgs
parents:
diff changeset
    77
		[out] CXML_Uint8** entityStr
hgs
parents:
diff changeset
    78
                       In case of Internal Entities, it is string corresponding 
hgs
parents:
diff changeset
    79
                       to the entity name defined in 
hgs
parents:
diff changeset
    80
                       NW_XML_Reader_Interval_t* pI_entityData. 
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
        [out] NW_Bool* entityFound 
hgs
parents:
diff changeset
    83
                       NW_TRUE: If valid type of entity is defined.
hgs
parents:
diff changeset
    84
        [in] RPointerArray <CXML_Internal_Entity_t>  internalEntityList 
hgs
parents:
diff changeset
    85
                       List of Internal Entities for search. This is
hgs
parents:
diff changeset
    86
                       casted to (void*) to avoid c++ related error in
hgs
parents:
diff changeset
    87
                       <e32std.h>
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
    @description:  * The following type of entities are handled
hgs
parents:
diff changeset
    90
                 * 1) Character hex entry
hgs
parents:
diff changeset
    91
                 * 2) Character decimal entry
hgs
parents:
diff changeset
    92
                 * 3) Prefined entry
hgs
parents:
diff changeset
    93
                 * 4) Internal Entities defined in the DTD.
hgs
parents:
diff changeset
    94
                 *
hgs
parents:
diff changeset
    95
                 * 
hgs
parents:
diff changeset
    96
                 
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
    @returns:   
hgs
parents:
diff changeset
   100
                  In case of file  related failures:  Error codes is returned defined in 
hgs
parents:
diff changeset
   101
				                                      nwx_status.h
hgs
parents:
diff changeset
   102
                  NW_STAT_FAILURE : For any general error and entity is not predefined 
hgs
parents:
diff changeset
   103
                                    entity.
hgs
parents:
diff changeset
   104
                  NW_STAT_SUCCESS: For success
hgs
parents:
diff changeset
   105
 -----------------------------------------------------------------------------------**/
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
NW_Status_t CXML_XML_Handle_entity(NW_XML_Reader_t* pT,
hgs
parents:
diff changeset
   108
								   NW_XML_Reader_Interval_t* pI_entityData,
hgs
parents:
diff changeset
   109
								   NW_Uint32* entityVal,
hgs
parents:
diff changeset
   110
                                   CXML_Uint8** entityStr,
hgs
parents:
diff changeset
   111
								   NW_Bool* entityFound,
hgs
parents:
diff changeset
   112
                                   void* internalEntityList);
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
hgs
parents:
diff changeset
   116
hgs
parents:
diff changeset
   117
NW_Status_t CXML_XML_Parser_Entity(NW_XML_Reader_t* pT,
hgs
parents:
diff changeset
   118
							    NW_XML_Reader_Interval_t* I_entityData,
hgs
parents:
diff changeset
   119
							    NW_Bool* entityFound);
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
/** ----------------------------------------------------------------------- **
hgs
parents:
diff changeset
   122
    @function:    CXML_XML_Get_Entity
hgs
parents:
diff changeset
   123
    @synopsis:    Converts the entity value from CXML_Uint32 to CXML_Byte string.
hgs
parents:
diff changeset
   124
    @scope:       public      
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
    @parameters: 
hgs
parents:
diff changeset
   127
        [in] entityVal
hgs
parents:
diff changeset
   128
                  
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
        [out] CXML_Byte* entityStr
hgs
parents:
diff changeset
   131
                  Entity value in the string.
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
        [out] CXML_Uint32* strLen
hgs
parents:
diff changeset
   135
                       Length of the entity string. 
hgs
parents:
diff changeset
   136
					   0: In case of error.
hgs
parents:
diff changeset
   137
hgs
parents:
diff changeset
   138
    @description: Converts the entity value from CXML_Uint32 to CXML_Byte string.
hgs
parents:
diff changeset
   139
hgs
parents:
diff changeset
   140
    @returns:   
hgs
parents:
diff changeset
   141
                  In case of file  related failures:  Error codes is returned defined in 
hgs
parents:
diff changeset
   142
				                                      nwx_status.h
hgs
parents:
diff changeset
   143
                  NW_STAT_FAILURE : For any general error and entity is not predefined 
hgs
parents:
diff changeset
   144
                                    entity.
hgs
parents:
diff changeset
   145
                  NW_STAT_SUCCESS: For success
hgs
parents:
diff changeset
   146
 -----------------------------------------------------------------------------------**/
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
IMPORT_C
hgs
parents:
diff changeset
   149
NW_Status_t CXML_XML_Get_Entity(CXML_Uint32 entityVal,
hgs
parents:
diff changeset
   150
								CXML_Byte* entityStr,
hgs
parents:
diff changeset
   151
								CXML_Uint32* strLen);
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
#ifdef __cplusplus 
hgs
parents:
diff changeset
   154
} // extern "C" {
hgs
parents:
diff changeset
   155
#endif /* __cplusplus */
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
#endif //_CXML_ENTITY_H_