private int[] generateTable(){
  if (dataCount == 0) {
    int[] tmpArray=new int[2];
    tmpArray[0]=composeEntry(0,DEFAULT_VALUE);
    tmpArray[1]=composeEntry(UPPER_LIMIT,DEFAULT_VALUE);
    tempTable=null;
    return tmpArray;
  }
  Arrays.sort(tempTable,0,dataCount);
  int[] newTempTable=new int[dataCount * 2 + 3];
  int old_index=0;
  int new_index=0;
  int loop_count=dataCount - 1;
  long data=tempTable[old_index];
  int start=(int)(data >> 32) & CODEPOINT_MASK;
  int end=(int)(data >> 8) & CODEPOINT_MASK;
  if (start != Character.MIN_SUPPLEMENTARY_CODE_POINT) {
    newTempTable[new_index++]=composeEntry(Character.MIN_SUPPLEMENTARY_CODE_POINT,defaultValue);
  }
  newTempTable[new_index++]=composeEntry(start,(int)data);
  for (int i=0; i < loop_count; i++) {
    data=tempTable[++old_index];
    int nextStart=(int)(data >> 32) & CODEPOINT_MASK;
    if (end != start && end != nextStart - 1) {
      newTempTable[new_index++]=composeEntry(end + 1,defaultValue);
    }
    newTempTable[new_index++]=composeEntry(nextStart,(int)data);
    start=nextStart;
    end=(int)(data >> 8) & CODEPOINT_MASK;
  }
  newTempTable[new_index++]=composeEntry(++end,defaultValue);
  if (end < UPPER_LIMIT) {
    newTempTable[new_index++]=composeEntry(UPPER_LIMIT,defaultValue);
  }
  dataTable=new int[new_index];
  System.arraycopy(newTempTable,0,dataTable,0,new_index);
  tempTable=null;
  return dataTable;
}

private int [ ] generateTable ( ) { if ( dataCount == 0 ) { int [ ] tmpArray = new int [ 2 ] ; tmpArray [ 0 ] = composeEntry ( 0 , DEFAULT_VALUE ) ; tmpArray [ 1 ] = composeEntry ( UPPER_LIMIT , DEFAULT_VALUE ) ; tempTable = null ; return tmpArray ; } Arrays . sort ( tempTable , 0 , dataCount ) ; int [ ] newTempTable = new int [ dataCount * 2 + 3 ] ; int old_index = 0 ; int new_index = 0 ; int loop_count = dataCount - 1 ; long data = tempTable [ old_index ] ; int start = ( int ) ( data > > 32 ) & CODEPOINT_MASK ; int end = ( int ) ( data > > 8 ) & CODEPOINT_MASK ; if ( start != Character . MIN_SUPPLEMENTARY_CODE_POINT ) { newTempTable [ new_index ++ ] = composeEntry ( Character . MIN_SUPPLEMENTARY_CODE_POINT , defaultValue ) ; } newTempTable [ new_index ++ ] = composeEntry ( start , ( int ) data ) ; for ( int i = 0 ; i < loop_count ; i ++ ) { data = tempTable [ ++ old_index ] ; int nextStart = ( int ) ( data > > 32 ) & CODEPOINT_MASK ; if ( end != start && end != nextStart - 1 ) { newTempTable [ new_index ++ ] = composeEntry ( end + 1 , defaultValue ) ; } newTempTable [ new_index ++ ] = composeEntry ( nextStart , ( int ) data ) ; start = nextStart ; end = ( int ) ( data > > 8 ) & CODEPOINT_MASK ; } newTempTable [ new_index ++ ] = composeEntry ( ++ end , defaultValue ) ; if ( end < UPPER_LIMIT ) { newTempTable [ new_index ++ ] = composeEntry ( UPPER_LIMIT , defaultValue ) ; } dataTable = new int [ new_index ] ; System . arraycopy ( newTempTable , 0 , dataTable , 0 , new_index ) ; tempTable = null ; return dataTable ; }
generates a table from the given data
