jdk/src/jdk.dev/share/classes/com/sun/tools/hat/internal/util/Misc.java
changeset 30779 92bb39a2a876
parent 30778 43087a23d825
parent 30736 ff3fc75f3214
child 30780 b83f001a855d
child 30886 d2a0ec86d6ef
equal deleted inserted replaced
30778:43087a23d825 30779:92bb39a2a876
     1 /*
       
     2  * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.  Oracle designates this
       
     8  * particular file as subject to the "Classpath" exception as provided
       
     9  * by Oracle in the LICENSE file that accompanied this code.
       
    10  *
       
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    14  * version 2 for more details (a copy is included in the LICENSE file that
       
    15  * accompanied this code).
       
    16  *
       
    17  * You should have received a copy of the GNU General Public License version
       
    18  * 2 along with this work; if not, write to the Free Software Foundation,
       
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    20  *
       
    21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    22  * or visit www.oracle.com if you need additional information or have any
       
    23  * questions.
       
    24  */
       
    25 
       
    26 
       
    27 /*
       
    28  * The Original Code is HAT. The Initial Developer of the
       
    29  * Original Code is Bill Foote, with contributions from others
       
    30  * at JavaSoft/Sun.
       
    31  */
       
    32 
       
    33 package com.sun.tools.hat.internal.util;
       
    34 import java.util.*;
       
    35 
       
    36 /**
       
    37  * Miscellaneous functions I couldn't think of a good place to put.
       
    38  *
       
    39  * @author      Bill Foote
       
    40  */
       
    41 
       
    42 
       
    43 public class Misc {
       
    44 
       
    45     private static char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7',
       
    46                                      '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
       
    47 
       
    48     public final static String toHex(int addr) {
       
    49         char[] buf = new char[8];
       
    50         int i = 0;
       
    51         for (int s = 28; s >= 0; s -= 4) {
       
    52             buf[i++] = digits[(addr >> s) & 0xf];
       
    53         }
       
    54         return "0x" + new String(buf);
       
    55     }
       
    56 
       
    57     public final static String toHex(long addr) {
       
    58         return "0x" + Long.toHexString(addr);
       
    59     }
       
    60 
       
    61     public final static long parseHex(String value) {
       
    62         long result = 0;
       
    63         if (value.length() < 2 || value.charAt(0) != '0' ||
       
    64             value.charAt(1) != 'x') {
       
    65             return -1L;
       
    66         }
       
    67         for(int i = 2; i < value.length(); i++) {
       
    68             result *= 16;
       
    69             char ch = value.charAt(i);
       
    70             if (ch >= '0' && ch <= '9') {
       
    71                 result += (ch - '0');
       
    72             } else if (ch >= 'a' && ch <= 'f') {
       
    73                 result += (ch - 'a') + 10;
       
    74             } else if (ch >= 'A' && ch <= 'F') {
       
    75                 result += (ch - 'A') + 10;
       
    76             } else {
       
    77                 throw new NumberFormatException("" + ch
       
    78                                         + " is not a valid hex digit");
       
    79             }
       
    80         }
       
    81         return result;
       
    82     }
       
    83 
       
    84     public static String encodeHtml(String str) {
       
    85         final int len = str.length();
       
    86         StringBuilder sb = new StringBuilder();
       
    87         for (int i = 0; i < len; i++) {
       
    88             char ch = str.charAt(i);
       
    89             if (ch == '<') {
       
    90                 sb.append("&lt;");
       
    91             } else if (ch == '>') {
       
    92                 sb.append("&gt;");
       
    93             } else if (ch == '"') {
       
    94                 sb.append("&quot;");
       
    95             } else if (ch == '\'') {
       
    96                 sb.append("&#039;");
       
    97             } else if (ch == '&') {
       
    98                 sb.append("&amp;");
       
    99             } else if (ch < ' ') {
       
   100                 sb.append("&#").append((int)ch).append(';');
       
   101             } else {
       
   102                 int c = (ch & 0xFFFF);
       
   103                 if (c > 127) {
       
   104                     sb.append("&#").append(c).append(';');
       
   105                 } else {
       
   106                     sb.append(ch);
       
   107                 }
       
   108             }
       
   109         }
       
   110         return sb.toString();
       
   111     }
       
   112 }