/*
* Copyright (c) 2003 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:  Provides a single header for the cXML Parser
*
*/



#ifndef _CXML_XMLP_INT_ENTITY_H_
#define _CXML_XMLP_INT_ENTITY_H_
#include <e32std.h>
#include "cxml_proj.h"

#ifdef __cplusplus
extern "C" {
#endif


typedef struct CXML_Internal_Entity_s {
   NW_Ucs2 * name;
   NW_Ucs2 * value;
   NW_Uint32 nameLen;
}CXML_Internal_Entity_t;


/** ----------------------------------------------------------------------- **
    @function:    CXML_XML_Parser_Store_I_Entity
    @synopsis:    Function to store the internal entity.
    @scope:       public      

    @parameters: 
        [in] entityVal
                  

        [in] NW_XML_Reader_Interval_t* I_entityName
                  Internal Entity Name


        [in] NW_XML_Reader_Interval_t* I_entityValue
                  Internal Entity Value

    @description: This extracts the Internal Entity name from the XML buffer
                  and stores in the Link list.

    @returns:   
                  In case of file  related failures:  Error codes is returned defined in 
				                                      nwx_status.h
                  NW_STAT_FAILURE : For any general error and entity is not predefined 
                                    entity.
                  NW_STAT_SUCCESS: For success
 -----------------------------------------------------------------------------------**/

 NW_Status_t CXML_XML_Parser_Store_I_Entity(NW_XML_Reader_t* pT, 
                                            NW_XML_Reader_Interval_t* I_entityName,
                                            NW_XML_Reader_Interval_t* I_entityValue,
                                            RPointerArray <CXML_Internal_Entity_t>*  internalEntityList);

 /** ----------------------------------------------------------------------- **
    @function:    CXML_XML_Parser_Free_I_Entity_List
    @synopsis:    Function to free the internal entity list.
    @scope:       public      

    @parameters: void
        

    @description: Function to free the internal entity list.

    @returns:   
                  void
 -----------------------------------------------------------------------------------**/

 void CXML_XML_Parser_Free_I_Entity_List(RPointerArray <CXML_Internal_Entity_t>  internalEntityList);

 /** ----------------------------------------------------------------------- **
    @function:    CXML_XML_Resolve_Internal_Entity
    @synopsis:    Function to resolve the internal entity.
    @scope:       public      

    @parameters: 
        [in] NW_Ucs2* entityName: Name of Entity
                  

        [out] CXML_Uint8** entityValStr
                           If the entity name is the internal entity then this 
                           contains the entiy value string otherwise NULL.
                  


        [out] NW_Bool* entityFound
                  If it is internal entity then it is true otherwise false.
        [in]  NW_Uint32 encoding:
                   Original encoding of the buffer so that entityValStr contain 
                   correct.
        [in]  void* internalEntityList: Internal Entity list

    @description: This extracts the Internal Entity name from the XML buffer
                  and stores in the Link list.

    @returns:   
                  In case of file  related failures:  Error codes is returned defined in 
				                                      nwx_status.h
                  NW_STAT_FAILURE : For any general error and entity is not predefined 
                                    entity.
                  NW_STAT_SUCCESS: For success
 -----------------------------------------------------------------------------------**/

 NW_Status_t CXML_XML_Resolve_Internal_Entity(NW_Ucs2* entityName,
                                              CXML_Uint8** entityValStr,
                                              NW_Bool* entityFound,
                                              NW_Uint32 encoding,
                                              void* internalEntityList);
                                            



#ifdef __cplusplus 
} // extern "C" {
#endif /* __cplusplus */

#endif //_CXML_XMLP_INT_ENTITY_H_
