Package com.ibm.icu.dev.tool.layout

Source Code of com.ibm.icu.dev.tool.layout.BuildMirroringTables

/*
*******************************************************************************
* Copyright (C) 1996-2005, International Business Machines Corporation and    *
* others. All Rights Reserved.                                                *
*******************************************************************************
*
*/

package com.ibm.icu.dev.tool.layout;

import com.ibm.icu.impl.Utility;
import com.ibm.icu.lang.UCharacter;
import com.ibm.icu.text.UnicodeSet;

/**
* @author emader
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class BuildMirroringTables extends ModuleWriter
{
    public BuildMirroringTables()
    {
        super();
    }
   
    public void dump(String name, int[] array, int length, int valuesPerLine)
    {
        StringBuffer line = new StringBuffer("    ");
       
        output.println("const LEUnicode32 DefaultCharMapper::" + name + "[] = {");
       
        for (int i = 0; i < length; i += 1) {
           
            if (i > 0 && i % valuesPerLine == 0) {
                output.println(line.toString());
                line.setLength(4);
            }
   
            line.append("0x" + Utility.hex(array[i], 4));
            line.append(", ");
        }
   
        line.setLength(line.length() - 2);
   
        output.println(line.toString());
        output.println("};\n");
    }
   
    public void writeMirroredDataFile(String filename)
    {
        UnicodeSet mirrored = new UnicodeSet("[\\p{Bidi_Mirrored}]");
        int count = mirrored.size();
        int[] chars   = new int[count];
        int[] mirrors = new int[count];
        int total = 0;
       
        System.out.println("There are " + count + " mirrored characters.");
       
        for(int i = 0; i < count; i += 1) {
            int ch = mirrored.charAt(i);
            int m  = UCharacter.getMirror(ch);
           
            if (ch != m) {
                chars[total] = ch & 0xFFFF;
                mirrors[total++] = m & 0xFFFF;
            }
        }
       
        System.out.println("There are " + total + " characters with a different mirror.\n");
       
        openFile(filename);
        writeHeader(null, includeFiles);
       
       
        dump("mirroredChars", chars, total, 8);
       
        System.out.println();
       
        dump("srahCderorrim", mirrors, total, 8);
       
        output.println("const le_int32 DefaultCharMapper::mirroredCharsCount = " + total + ";\n");

        writeTrailer();
        closeFile();
    }
   
    private static String includeFiles[] = {"LETypes.h", "DefaultCharMapper.h"};
   
    public static void main(String[] args)
    {
        BuildMirroringTables bmt = new BuildMirroringTables();
       
        bmt.writeMirroredDataFile("MirroredCharData.cpp");
    }
}
TOP

Related Classes of com.ibm.icu.dev.tool.layout.BuildMirroringTables

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.