Back to index

lightning-sunbird  0.9+nobinonly
Defines | Typedefs | Functions | Variables
umap.c File Reference
#include "unicpriv.h"

Go to the source code of this file.

Defines

#define uHit(format, in, cell)   (* m_hit[(format)])((in),(cell))
#define uMap(format, in, uT, cell)   (* m_map[(format)])((in),(uT),(cell))
#define uFillInfoCell(format, uT, cell, info)   (* m_fillinfo[(format)])((uT),(cell),(info))
#define uGetMapCell(uT, item)   ((uMapCell *)(((PRUint16 *)uT) + (uT)->offsetToMapCellArray + (item)*(UMAPCELL_SIZE/sizeof(PRUint16))))
#define uGetFormat(uT, item)   (((((PRUint16 *)uT) + (uT)->offsetToFormatArray)[(item)>> 2 ] >> (((item)% 4 ) << 2)) & 0x0f)
#define SET_REPRESENTABLE(info, c)   (info)[(c) >> 5] |= (1L << ((c) & 0x1f))

Typedefs

typedef PRUint16(* MapFormatFunc )(PRUint16 in, const uTable *uT, const uMapCell *cell)
typedef PRBool(* HitFormateFunc )(PRUint16 in, const uMapCell *cell)
typedef void(* FillInfoFormateFunc )(const uTable *uT, const uMapCell *cell, PRUint32 *info)

Functions

PRIVATE PRBool uHitFormate0 (PRUint16 in, const uMapCell *cell)
PRIVATE PRBool uHitFormate2 (PRUint16 in, const uMapCell *cell)
PRIVATE PRUint16 uMapFormate0 (PRUint16 in, const uTable *uT, const uMapCell *cell)
PRIVATE PRUint16 uMapFormate1 (PRUint16 in, const uTable *uT, const uMapCell *cell)
PRIVATE PRUint16 uMapFormate2 (PRUint16 in, const uTable *uT, const uMapCell *cell)
PRIVATE void uFillInfoFormate0 (const uTable *uT, const uMapCell *cell, PRUint32 *aInfo)
PRIVATE void uFillInfoFormate1 (const uTable *uT, const uMapCell *cell, PRUint32 *aInfo)
PRIVATE void uFillInfoFormate2 (const uTable *uT, const uMapCell *cell, PRUint32 *aInfo)
PRIVATE const uMapCelluGetMapCell (const uTable *uT, PRInt16 item)
PRIVATE char uGetFormat (const uTable *uT, PRInt16 item)
MODULE_PRIVATE void uFillInfo (const uTable *uT, PRUint32 *aInfo)
MODULE_PRIVATE PRBool uMapCode (const uTable *uT, PRUint16 in, PRUint16 *out)

Variables

PRIVATE const MapFormatFunc m_map [uNumFormatTag]
PRIVATE const FillInfoFormateFunc m_fillinfo [uNumFormatTag]
PRIVATE const HitFormateFunc m_hit [uNumFormatTag]

Define Documentation

#define SET_REPRESENTABLE (   info,
  c 
)    (info)[(c) >> 5] |= (1L << ((c) & 0x1f))

Definition at line 178 of file umap.c.

#define uFillInfoCell (   format,
  uT,
  cell,
  info 
)    (* m_fillinfo[(format)])((uT),(cell),(info))

Definition at line 93 of file umap.c.

#define uGetFormat (   uT,
  item 
)    (((((PRUint16 *)uT) + (uT)->offsetToFormatArray)[(item)>> 2 ] >> (((item)% 4 ) << 2)) & 0x0f)

Definition at line 95 of file umap.c.

#define uGetMapCell (   uT,
  item 
)    ((uMapCell *)(((PRUint16 *)uT) + (uT)->offsetToMapCellArray + (item)*(UMAPCELL_SIZE/sizeof(PRUint16))))

Definition at line 94 of file umap.c.

#define uHit (   format,
  in,
  cell 
)    (* m_hit[(format)])((in),(cell))

Definition at line 91 of file umap.c.

#define uMap (   format,
  in,
  uT,
  cell 
)    (* m_map[(format)])((in),(uT),(cell))

Definition at line 92 of file umap.c.


Typedef Documentation

Definition at line 44 of file umap.c.

Definition at line 43 of file umap.c.

Definition at line 42 of file umap.c.


Function Documentation

MODULE_PRIVATE void uFillInfo ( const uTable uT,
PRUint32 aInfo 
)

Definition at line 100 of file umap.c.

{
  PRUint16 itemOfList = uT->itemOfList;
  PRUint16 i;
  for(i=0;i<itemOfList;i++)
  {
    const uMapCell* uCell;
    PRInt8 format = uGetFormat(uT,i);
    uCell = uGetMapCell(uT,i);
    uFillInfoCell(format, uT, uCell, aInfo);
  }
}

Here is the caller graph for this function:

PRIVATE void uFillInfoFormate0 ( const uTable uT,
const uMapCell cell,
PRUint32 aInfo 
)

Definition at line 182 of file umap.c.

{
  PRUint16 begin, end, i;
  begin = cell->fmt.format0.srcBegin;
  end = cell->fmt.format0.srcEnd;
  if( (begin >> 5) == (end >> 5)) /* High 17 bits are the same */
  {
    for(i = begin; i <= end; i++)
      SET_REPRESENTABLE(info, i);
  } 
  else {
    PRUint32 b = begin >> 5;
    PRUint32 e = end >> 5;
    info[ b ] |= (0xFFFFFFFFL << ((begin) & 0x1f)); 
    info[ e ] |= (0xFFFFFFFFL >> (31 - ((end) & 0x1f)));
    for(b++ ; b < e ; b++)
      info[b] |= 0xFFFFFFFFL;
  }
}
PRIVATE void uFillInfoFormate1 ( const uTable uT,
const uMapCell cell,
PRUint32 aInfo 
)

Definition at line 204 of file umap.c.

{
  PRUint16 begin, end, i;
  PRUint16 *base;
  begin = cell->fmt.format0.srcBegin;
  end = cell->fmt.format0.srcEnd;
  base = (((PRUint16 *)uT) + uT->offsetToMappingTable + cell->fmt.format1.mappingOffset);
  for(i = begin; i <= end; i++) 
  {
    if(0xFFFD != base[i - begin])  /* check every item */
      SET_REPRESENTABLE(info, i);
  }
}
PRIVATE void uFillInfoFormate2 ( const uTable uT,
const uMapCell cell,
PRUint32 aInfo 
)

Definition at line 220 of file umap.c.

{
  SET_REPRESENTABLE(info, cell->fmt.format2.srcBegin);
}
PRIVATE char uGetFormat ( const uTable uT,
PRInt16  item 
)

Definition at line 143 of file umap.c.

{
  return ( (in >= cell->fmt.format0.srcBegin) &&
    (in <= cell->fmt.format0.srcEnd) ) ;
}

Definition at line 151 of file umap.c.

{
  return (in == cell->fmt.format2.srcBegin);
}

Definition at line 115 of file umap.c.

{
  PRBool done = PR_FALSE;
  PRUint16 itemOfList = uT->itemOfList;
  PRUint16 i;
  *out = NOMAPPING;
  for(i=0;i<itemOfList;i++)
  {
    const uMapCell* uCell;
    PRInt8 format = uGetFormat(uT,i);
    uCell = uGetMapCell(uT,i);
    if(uHit(format, in, uCell))
    {
      *out = uMap(format, in, uT,uCell);
      done = PR_TRUE;
      break;
    }
  }
  return ( done && (*out != NOMAPPING));
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 158 of file umap.c.

{
  return ((in - cell->fmt.format0.srcBegin) + cell->fmt.format0.destBegin);
}

Definition at line 165 of file umap.c.

{
  return (*(((PRUint16 *)uT) + uT->offsetToMappingTable
    + cell->fmt.format1.mappingOffset + in - cell->fmt.format1.srcBegin));
}

Definition at line 173 of file umap.c.

{
  return (cell->fmt.format2.destBegin);
}

Variable Documentation

Initial value:

Definition at line 74 of file umap.c.

Initial value:

Definition at line 84 of file umap.c.

Initial value:

Definition at line 64 of file umap.c.