xml/cxmllibrary/src/xmlp/src/XmlpIntEntity.cpp
branchRCL_3
changeset 21 604ca70b6235
parent 20 889504eac4fb
--- a/xml/cxmllibrary/src/xmlp/src/XmlpIntEntity.cpp	Tue Aug 31 17:02:56 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,482 +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: 
-*
-*/
-
-
-/* Code to handle Internal Entities */
-
-#include "cxml_internal.h"
-#include <xml/cxml/nw_xmlp_xmlreader.h>
-#include <xml/cxml/nw_xmlp_xmlparser.h>
-#include <xml/cxml/nw_string_string.h>
-
-#include "cxml_xmlp_int_entity.h"
-
-//#include <flogger.h> // Comment out this.
-
-
-
-
-
-/** ----------------------------------------------------------------------- **
-    @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
-
-        [in]  RPointerArray <CXML_Internal_Entity_t>*  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_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)
- {
-  NW_Uint32 length;
-  NW_Uint32 nameLength;
-  NW_Uint32 totalByteCount = 0;
-  NW_Uint32 i =0;
-  NW_Uint8* bufPointer;
-  NW_Uint8* pName;
-  NW_Ucs2* ucsName;
-  NW_Uint32 valueByteLength;
-  NW_Uint8* pValue;
-  NW_Ucs2* ucsValue;
-  CXML_Internal_Entity_t* internalEntity=NULL;
-  NW_Ucs2 c;
-  NW_Uint32 numbytes;
-  TInt errorCode;
-  TInt entryCount;
-  NW_Status_t s;
-
-  /* Check Entity Name Interval and Value Interval is valid */
-
-  if ( (!NW_XML_Reader_Interval_IsWellFormed(I_entityName) ) &&
-       (!NW_XML_Reader_Interval_IsWellFormed(I_entityValue) ) )
-  {
-   return NW_STAT_FAILURE;
-  }
-
-
-     /* Entity name */
-
-    length = I_entityName->stop - I_entityName->start;
-    nameLength = length; /* byte length */
-    s = NW_XML_Reader_DataAddressFromBuffer(pT, I_entityName->start,
-                                         &nameLength, &bufPointer);
-    if (NW_STAT_IS_FAILURE(s)) {
-        return s;
-    }
-    if (nameLength != length) {
-        return NW_STAT_FAILURE;
-    }
-    nameLength = I_entityName->charStop - I_entityName->charStart; /* char count */
-
-    /* pName is not NULL terminated so need to use following method. The num byte
-     * will be used for both pName and pVlaue.
-     */
-
-
-    numbytes = NW_String_readChar( (NW_Byte*) bufPointer,&c,pT->encoding);
-
-    /* Calculate the length of string. Also add the number of characters 
-     * required for the NULL termination.
-     */
-        
-    totalByteCount = length + numbytes;
-
-
-    pName = (NW_Uint8*) NW_Mem_Malloc(totalByteCount);
-
-    if (pName  != NULL) 
-     {
-      (void)NW_Mem_memcpy(pName , bufPointer, length );
-
-
-       for(i=0; i < numbytes; i++)
-       {
-        pName[length+i] = '\0';
-       }
-      } /*end if (pName  != NULL)*/
-     else
-     {
-      return NW_STAT_OUT_OF_MEMORY;
-     }
-
-   
-
-    /* The "pName" is already NULL terminated */
-
-    if(pT->encoding != HTTP_iso_10646_ucs_2)
-    {
-     s = NW_String_byteToUCS2Char(pName, length, &ucsName);
-
-     if(s != NW_STAT_SUCCESS)
-     {
-      return s;
-     }
-
-     totalByteCount = 2*totalByteCount;
-    }/*end if(pT->encoding != HTTP_iso_10646_ucs_2)*/
-    else
-    {
-     ucsName = (NW_Ucs2*) NW_Mem_Malloc(totalByteCount); 
-     (void)NW_Mem_memcpy(ucsName, pName, totalByteCount);
-
-    }
-
-    /*Now free the pName */
-
-    if(pName != NULL)
-    {
-     NW_Mem_Free(pName);
-    }
-   
-    internalEntity = (CXML_Internal_Entity_t*) NW_Mem_Malloc(sizeof(CXML_Internal_Entity_t) );
-
-    if(internalEntity == NULL)
-    {
-        if(pName != NULL)
-        {
-         NW_Mem_Free(pName);
-        }
-     return NW_STAT_OUT_OF_MEMORY;
-    }
- 
-      
-
-            //SSS: Comment me.
-/*
-    RFileLogger::WriteFormat(_L("Browser"), _L("xml_core.log"), 
-                         EFileLoggingModeAppend, _L("In_INT:Name=%s \n"), 
-                         ucsName);
-
-*/
-  
-    /* Length is including the NULL termination. */
-
-    internalEntity->nameLen = totalByteCount; 
-
-    /* value setup */
-    length = I_entityValue->stop - I_entityValue->start;
-    valueByteLength = length;
-    s = NW_XML_Reader_DataAddressFromBuffer(pT, I_entityValue->start,
-                                         &valueByteLength, &bufPointer);
-    if (NW_STAT_IS_FAILURE(s)) {
-        return s;
-    }
-    if (valueByteLength != length) {
-        return NW_STAT_FAILURE;
-    }
-
-    /* Calculate the length of string. Also add the number of characters 
-     * required for the NULL termination.
-     */
-        
-    totalByteCount = length + numbytes;
-
-
-    pValue = (NW_Uint8*) NW_Mem_Malloc(totalByteCount);
-
-    if (pValue  != NULL) 
-     {
-      (void)NW_Mem_memcpy(pValue , bufPointer, length );
-
-
-       for(i=0; i < numbytes; i++)
-       {
-        pValue[length+i] = '\0';
-       }
-      } /*end if (pValue  != NULL)*/  
-     else
-     {
-      return NW_STAT_OUT_OF_MEMORY;
-     }
-
-  
-    if(pT->encoding != HTTP_iso_10646_ucs_2)
-    {
-     s = NW_String_byteToUCS2Char(pValue, length, &ucsValue);
-
-     if(s != NW_STAT_SUCCESS)
-     {
-      return s;
-     }
-     totalByteCount = 2*totalByteCount;
-    }/*end if(pT->encoding != HTTP_iso_10646_ucs_2)*/
-    else
-    {
-     ucsValue = (NW_Ucs2*) NW_Mem_Malloc(totalByteCount); 
-     (void)NW_Mem_memcpy(ucsValue, pValue, totalByteCount);
-
-    }
-     /*Now free the pValue */
-
-    if(pValue != NULL)
-    {
-     NW_Mem_Free(pValue);
-    }
-
-
-
-      //SSS: Comment me.
-/*
-    RFileLogger::WriteFormat(_L("Browser"), _L("xml_core.log"), 
-                         EFileLoggingModeAppend, _L("In_INT:Value=%s \n"), 
-                         ucsValue);
-*/
-
-
-
-     internalEntity->name  = ucsName;
-     internalEntity->value = ucsValue;
-
-    entryCount = internalEntityList->Count();
-
-    errorCode =  internalEntityList->Insert(internalEntity,entryCount);
-
-        if(errorCode != KErrNone)
-        {
-         return NW_STAT_FAILURE;
-        }
-
-        ///SSS:Comment me below.
-  /*
-   RFileLogger::WriteFormat(_L("Browser"), _L("xml_core.log"), 
-                         EFileLoggingModeAppend, _L("In_INT:Adding:nameLen=%d name=%s valueLen=%d value=%s \n"), 
-                         internalEntity->nameLen, internalEntity->name, 
-                         totalByteCount, internalEntity->value );
-
-  */
- 
-
-
-
-    return NW_STAT_SUCCESS;
-
- }/*end CXML_XML_Parser_Store_I_Entity*/
-
-  /** ----------------------------------------------------------------------- **
-    @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)
- {
-  TInt count = 0;
-  NW_Int32 i = 0;
-  CXML_Internal_Entity_t* internalEntity=NULL;
-
-
-  count = internalEntityList.Count();
-
-  for(i=0; i < count; i++)
-    {
-     internalEntity = (CXML_Internal_Entity_t*) internalEntityList[i]; 
-
-     if(internalEntity != NULL)
-     {
-      /*   
-
-      RFileLogger::WriteFormat(_L("Browser"), _L("xml_core.log"), 
-                         EFileLoggingModeAppend, _L("Deleting: name=%s  value=%s \n"), 
-                         internalEntity->name, internalEntity->value );
-      */
-
-      NW_Mem_Free(internalEntity->name);
-      NW_Mem_Free(internalEntity->value);
-     }
-    } /*end for()*/
- /* This will destroy the internal pointers */
-
-  internalEntityList.ResetAndDestroy();
-
- }/*end CXML_XML_Parser_Free_I_Entity_List(void)*/
-
-
-  /** ----------------------------------------------------------------------- **
-    @function:    CXML_XML_Resolve_Internal_Entity
-    @synopsis:    Function to store 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* entityList)
- {
-  NW_Uint32 entityNameByteCnt;
-  TInt count = 0;
-  CXML_Int32 i = 0;
-  CXML_Int32 strCmp;
-  NW_Ucs2*  valBuf;
-  NW_Uint32 valBufByteCnt = 0;
-  CXML_Internal_Entity_t* internalEntity=NULL;
-  RPointerArray <CXML_Internal_Entity_t>*  internalEntityList = (RPointerArray <CXML_Internal_Entity_t>*)  entityList;
-
-  *entityFound = NW_FALSE;
-
-
-
-  /* The entity name at time is always in the Ucs2 so fixed value is used below */
-
- 
-  NW_Int32 entityNameLen = NW_String_charBuffGetLength((void*) entityName,
-                                              HTTP_iso_10646_ucs_2,
-                                              &entityNameByteCnt);
-
-  
-  (void) entityNameLen; //To remove the warning
-  count = internalEntityList->Count();
-
-  /* Now look for entity name in  "internalEntityList" */
-
-   for(i=0; i < count; i++)
-    {
-     internalEntity = (CXML_Internal_Entity_t*) (*internalEntityList)[i]; 
-      
-
-     if(internalEntity != NULL)
-     {
-      if(internalEntity->nameLen == entityNameByteCnt)
-      {
-       strCmp = CXML_Str_Stricmp( (const CXML_Ucs2 *)internalEntity->name, entityName);
-
-       if(strCmp == 0)
-       {
-         
-        valBuf = internalEntity->value ;
-        NW_Int32 valBufLen = NW_String_charBuffGetLength( (void*)internalEntity->value,
-                                                 HTTP_iso_10646_ucs_2,
-                                                 &valBufByteCnt);
-
-        if(valBuf != NULL)
-        {
-
-          
-         switch(encoding)
-         {
-          /* write the string based on the actual encoding.*/
-         case HTTP_utf_8:
-             *entityValStr = (NW_Byte*) CXML_Str_CvtToAscii(valBuf);
-             *entityFound = NW_TRUE;
-              break;
-
-         case HTTP_iso_8859_1:      
-         case HTTP_us_ascii:
-              *entityValStr = (NW_Byte*) CXML_Str_CvtToAscii(valBuf);
-              *entityFound = NW_TRUE;
-              break;
-         case HTTP_iso_10646_ucs_2:
-             *entityValStr = (CXML_Uint8*) NW_Mem_Malloc(valBufByteCnt);
-             if(*entityValStr == NULL)
-             {
-              return NW_STAT_OUT_OF_MEMORY;
-             }
-             CXML_Mem_memcpy((void*)*entityValStr,internalEntity->value,valBufByteCnt);
-             *entityFound = NW_TRUE;
-             break;
-         default:
-             //Some thing wrong so break
-             break;
-         }/*end switch(encoding)*/
-            
-            if(*entityFound == NW_TRUE)
-            {
-             break;
-            }
-        }/*end if(valBuf != NULL)*/
-       }/*end if(strCmp == 0)*/
-
-      }/*end if(internalEntity->nameLen = entityNameByteCnt)*/
-      
-     }/*end if(internalEntity != NULL)*/
-    } /*end for()*/
-
-
-   if(*entityFound == NW_FALSE)
-   {
-    /*If it is not a internal Entity */
-    *entityValStr = NULL;
-   }
-
-   ///SSS: This will be freed when Internal Entity Array is freed 
-   /*
-   if(valBuf != NULL)
-   {
-    NW_Mem_Free(valBuf);
-   }
-  */
-   return NW_STAT_SUCCESS;
- }/*end CXML_XML_Resolve_Internal_Entity() */