diff -r 59758314f811 -r d4524d6a4472 Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/depot_8c_source.html --- a/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/depot_8c_source.html Fri Jun 11 15:24:34 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,130 +0,0 @@ - - - - -TB9.2 Example Applications: examples/PIPS/antiword/src/depot.c Source File - - - - - -

examples/PIPS/antiword/src/depot.c

00001 /*
-00002  * depot.c
-00003  * Copyright (C) 1998-2002 A.J. van Os; Released under GPL
-00004  *
-00005  * Description:
-00006  * Functions to compute the depot offset
-00007  */
-00008 
-00009 #include "antiword.h"
-00010 
-00011 #define SIZE_RATIO      (BIG_BLOCK_SIZE/SMALL_BLOCK_SIZE)
-00012 
-00013 static ULONG    *aulSmallBlockList = NULL;
-00014 static size_t   tSmallBlockListLen = 0;
-00015 
-00016 
-00017 /*
-00018  * vDestroySmallBlockList - destroy the small block list
-00019  */
-00020 void
-00021 vDestroySmallBlockList(void)
-00022 {
-00023         DBG_MSG("vDestroySmallBlockList");
-00024 
-00025         aulSmallBlockList = xfree(aulSmallBlockList);
-00026         tSmallBlockListLen = 0;
-00027 } /* end of vDestroySmalBlockList */
-00028 
-00029 /*
-00030  * vCreateSmallBlockList - create the small block list
-00031  *
-00032  * returns: TRUE when successful, otherwise FALSE
-00033  */
-00034 BOOL
-00035 bCreateSmallBlockList(ULONG ulStartblock, const ULONG *aulBBD, size_t tBBDLen)
-00036 {
-00037         ULONG   ulTmp;
-00038         size_t  tSize;
-00039         int     iIndex;
-00040 
-00041         fail(aulSmallBlockList != NULL);
-00042         fail(tSmallBlockListLen != 0);
-00043         fail(ulStartblock > MAX_BLOCKNUMBER && ulStartblock != END_OF_CHAIN);
-00044         fail(aulBBD == NULL);
-00045         fail(tBBDLen == 0);
-00046 
-00047         /* Find the length of the small block list */
-00048         for (tSmallBlockListLen = 0, ulTmp = ulStartblock;
-00049              tSmallBlockListLen < tBBDLen && ulTmp != END_OF_CHAIN;
-00050              tSmallBlockListLen++, ulTmp = aulBBD[ulTmp]) {
-00051                 if (ulTmp >= (ULONG)tBBDLen) {
-00052                         DBG_DEC(ulTmp);
-00053                         DBG_DEC(tBBDLen);
-00054                         werr(1, "The Big Block Depot is damaged");
-00055                 }
-00056         }
-00057         DBG_DEC(tSmallBlockListLen);
-00058 
-00059         if (tSmallBlockListLen == 0) {
-00060                 /* There is no small block list */
-00061                 fail(ulStartblock != END_OF_CHAIN);
-00062                 aulSmallBlockList = NULL;
-00063                 return TRUE;
-00064         }
-00065 
-00066         /* Create the small block list */
-00067         tSize = tSmallBlockListLen * sizeof(ULONG);
-00068         aulSmallBlockList = xmalloc(tSize);
-00069         for (iIndex = 0, ulTmp = ulStartblock;
-00070              iIndex < (int)tBBDLen && ulTmp != END_OF_CHAIN;
-00071              iIndex++, ulTmp = aulBBD[ulTmp]) {
-00072                 if (ulTmp >= (ULONG)tBBDLen) {
-00073                         DBG_DEC(ulTmp);
-00074                         DBG_DEC(tBBDLen);
-00075                         werr(1, "The Big Block Depot is damaged");
-00076                 }
-00077                 aulSmallBlockList[iIndex] = ulTmp;
-00078                 NO_DBG_DEC(aulSmallBlockList[iIndex]);
-00079         }
-00080         return TRUE;
-00081 } /* end of bCreateSmallBlockList */
-00082 
-00083 /*
-00084  * ulDepotOffset - get the depot offset the block list
-00085  */
-00086 ULONG
-00087 ulDepotOffset(ULONG ulIndex, size_t tBlockSize)
-00088 {
-00089         ULONG   ulTmp;
-00090         size_t  tTmp;
-00091 
-00092         fail(ulIndex >= ULONG_MAX / BIG_BLOCK_SIZE);
-00093 
-00094         switch (tBlockSize) {
-00095         case BIG_BLOCK_SIZE:
-00096                 return (ulIndex + 1) * BIG_BLOCK_SIZE;
-00097         case SMALL_BLOCK_SIZE:
-00098                 tTmp = (size_t)(ulIndex / SIZE_RATIO);
-00099                 ulTmp = ulIndex % SIZE_RATIO;
-00100                 if (aulSmallBlockList == NULL ||
-00101                     tTmp >= tSmallBlockListLen) {
-00102                         DBG_HEX(aulSmallBlockList);
-00103                         DBG_DEC(tSmallBlockListLen);
-00104                         DBG_DEC(tTmp);
-00105                         return 0;
-00106                 }
-00107                 return ((aulSmallBlockList[tTmp] + 1) * SIZE_RATIO +
-00108                                 ulTmp) * SMALL_BLOCK_SIZE;
-00109         default:
-00110                 DBG_DEC(tBlockSize);
-00111                 DBG_FIXME();
-00112                 return 0;
-00113         }
-00114 } /* end of ulDepotOffset */
-
-
Generated by  - -doxygen 1.6.2
- -