imgtools/imglib/host/h_mem.cpp
changeset 0 044383f39525
equal deleted inserted replaced
-1:000000000000 0:044383f39525
       
     1 /*
       
     2 * Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include <stdlib.h>   
       
    20 #include <malloc.h>
       
    21 #include <stdio.h>
       
    22 #include <string.h>
       
    23 
       
    24 #include "h_utl.h"
       
    25 
       
    26 TAny *HMem::Alloc(TAny * const aBaseAddress,const TUint32 aImageSize)
       
    27 	{
       
    28 	if (aBaseAddress != 0)
       
    29 		{
       
    30 		Print(EError, "Allocating at a specified address is not supported on this system.\n");
       
    31 		return 0;
       
    32 		}
       
    33 
       
    34 	TAny *address = malloc(aImageSize);
       
    35 	return (address);
       
    36 	}
       
    37 
       
    38 void HMem::Free(TAny * const aMem)
       
    39 	{
       
    40 	free(aMem);
       
    41 	}
       
    42 
       
    43 void HMem::Copy(TAny * const aDestAddr,const TAny * const aSourceAddr,const TUint32 aLength)
       
    44 	{
       
    45 	memcpy(aDestAddr,aSourceAddr,(size_t)aLength);
       
    46 	}
       
    47 
       
    48 void HMem::Move(TAny * const aDestAddr,const TAny * const aSourceAddr,const TUint32 aLength)
       
    49 	{
       
    50 	memmove(aDestAddr,aSourceAddr,(size_t)aLength);
       
    51 	}
       
    52 
       
    53 void HMem::Set(TAny * const aDestAddr, const TUint8 aFillChar, const TUint32 aLength)
       
    54 	{		
       
    55 	memset(aDestAddr, aFillChar, aLength);
       
    56 	}
       
    57 
       
    58 void HMem::FillZ(TAny * const aDestAddr, const TUint32 aLength)
       
    59 	{		
       
    60 	memset(aDestAddr, 0, aLength);
       
    61 	}
       
    62 
       
    63 TUint HMem::CheckSum(TUint *aPtr, TInt aSize)
       
    64 	{
       
    65 	TUint sum=0;
       
    66 	aSize/=4;
       
    67 	while (aSize-->0)
       
    68 		sum+=*aPtr++;
       
    69 	return sum;
       
    70 	}
       
    71 
       
    72 TUint HMem::CheckSum8(TUint8 *aPtr, TInt aSize)
       
    73 	{
       
    74 	TUint sum=0;
       
    75 	while (aSize-->0)
       
    76 		sum+=*aPtr++;
       
    77 	return sum;
       
    78 	}
       
    79 
       
    80 TUint HMem::CheckSumOdd8(TUint8 *aPtr, TInt aSize)
       
    81 	{
       
    82 	return CheckSumEven8(aPtr+2, aSize-2);
       
    83 	}
       
    84 
       
    85 TUint HMem::CheckSumEven8(TUint8 *aPtr, TInt aSize)
       
    86 	{
       
    87 	TUint sum=0;
       
    88 	while (aSize>0)
       
    89 		{
       
    90 		sum+=(TUint)aPtr[0]+aPtr[1];
       
    91 		aPtr+=4;
       
    92 		aSize-=4;
       
    93 		}
       
    94 	return sum;
       
    95 	}
       
    96 
       
    97 static const TUint32 CrcTab32[256] =
       
    98 	{
       
    99 	0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
       
   100 	0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
       
   101 	0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
       
   102 	0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
       
   103 	0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
       
   104 	0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
       
   105 	0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
       
   106 	0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
       
   107 	0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
       
   108 	0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
       
   109 	0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
       
   110 	0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
       
   111 	0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
       
   112 	0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
       
   113 	0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
       
   114 	0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
       
   115 	0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
       
   116 	0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
       
   117 	0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
       
   118 	0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
       
   119 	0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
       
   120 	0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
       
   121 	0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
       
   122 	0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
       
   123 	0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
       
   124 	0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
       
   125 	0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
       
   126 	0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
       
   127 	0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
       
   128 	0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
       
   129 	0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
       
   130 	0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
       
   131 	0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
       
   132 	0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
       
   133 	0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
       
   134 	0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
       
   135 	0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
       
   136 	0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
       
   137 	0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
       
   138 	0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
       
   139 	0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
       
   140 	0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
       
   141 	0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
       
   142 	0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
       
   143 	0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
       
   144 	0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
       
   145 	0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
       
   146 	0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
       
   147 	0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
       
   148 	0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
       
   149 	0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
       
   150 	0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
       
   151 	0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
       
   152 	0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
       
   153 	0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
       
   154 	0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
       
   155 	0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
       
   156 	0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
       
   157 	0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
       
   158 	0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
       
   159 	0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
       
   160 	0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
       
   161 	0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
       
   162 	0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
       
   163 	};
       
   164 
       
   165 /**
       
   166 Performs a CCITT CRC-32 checksum on the specified data.
       
   167 
       
   168 On return from this function, the referenced 32 bit integer contains the CRC
       
   169 value.
       
   170 
       
   171 @param aCrc		A reference to a 32 bit integer to contain the CRC value. 
       
   172 @param aPtr		A pointer to the start of the data to be checksummed. 
       
   173 @param aLength	The length of the data to be checksummed.
       
   174 */
       
   175 void HMem::Crc32(TUint32& aCrc, const TAny* aPtr, TInt aLength)
       
   176 	{
       
   177 	const TUint8* p = (const TUint8*)aPtr;
       
   178 	const TUint8* q = p + aLength;
       
   179 	TUint32 crc = aCrc;
       
   180 	while (p < q)
       
   181 		crc = (crc >> 8) ^ CrcTab32[(crc ^ *p++) & 0xff];
       
   182 	aCrc = crc;
       
   183 	}