001/*
002 *  This file is part of the Jikes RVM project (http://jikesrvm.org).
003 *
004 *  This file is licensed to You under the Eclipse Public License (EPL);
005 *  You may not use this file except in compliance with the License. You
006 *  may obtain a copy of the License at
007 *
008 *      http://www.opensource.org/licenses/eclipse-1.0.php
009 *
010 *  See the COPYRIGHT.txt file distributed with this work for information
011 *  regarding copyright ownership.
012 */
013package org.jikesrvm.util;
014
015public class StringUtilities {
016
017  /**
018   * Convert a <code>String</code> filename to a byte array using the
019   * deprecated ascii String method for cases where passing it through
020   * a character set converter is too heavyweight.  Allocates an
021   * additional null-terminator byte so that the resulting byte array
022   * can be passed to native C functions.
023   *
024   * @param fileName File name
025   * @return Byte-array representation
026   */
027  @SuppressWarnings("deprecation")
028  public static byte[] stringToBytesNullTerminated(String fileName) {
029    byte[] asciiName = new byte[fileName.length() + 1]; // +1 for \0 terminator
030    fileName.getBytes(0, fileName.length(), asciiName, 0);
031    return asciiName;
032  }
033
034  /**
035   * Convert a <code>String</code> filename to a byte array using the
036   * deprecated ascii String method for cases where passing it through
037   * a character set converter is too heavyweight.
038   *
039   * @param fileName File name
040   * @return Byte-array representation
041   */
042  @SuppressWarnings("deprecation")
043  public static byte[] stringToBytes(String fileName) {
044    byte[] asciiName = new byte[fileName.length()];
045    fileName.getBytes(0, fileName.length(), asciiName, 0);
046    return asciiName;
047  }
048
049  /**
050   * Convert a byte array to a <code>String</code> assuming the ASCII
051   * character set, for use in cases (such as early in the boot process)
052   * where character set conversion is unavailable or inadvisable.
053   *
054   * @param val Byte array to convert
055   * @return The resulting string
056   */
057  public static String asciiBytesToString(byte[] val) {
058    return asciiBytesToString(val, 0, val.length);
059  }
060
061  /**
062   * Convert a byte array to a <code>String</code> assuming the ASCII
063   * character set, for use in cases (such as early in the boot process)
064   * where character set conversion is unavailable or inadvisable.
065   *
066   * @param val Byte array to convert
067   * @param start Start the string at this byte
068   * @param length Use 'length' bytes
069   * @return The resulting string
070   */
071  @SuppressWarnings("deprecation")
072  public static String asciiBytesToString(byte[] val, int start, int length) {
073    return new String(val, 0, start, length);
074  }
075
076}