/*
 * Copyright 2008 Google Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.google.gwt.core.ext.typeinfo;

/**
 * Constants used with JNI type descriptors.
 */
public class JniConstants {
  /*
   * TODO: use this from more places; maybe provide mappings?
   */
  public static final char DESC_ARRAY = '[';
  public static final char DESC_BOOLEAN = 'Z';
  public static final char DESC_BYTE = 'B';
  public static final char DESC_CHAR = 'C';
  public static final char DESC_DOUBLE = 'D';
  public static final char DESC_FLOAT = 'F';
  public static final char DESC_INT = 'I';
  public static final char DESC_LONG = 'J';
  public static final char DESC_REF = 'L';
  public static final char DESC_REF_END = ';';
  public static final char DESC_SHORT = 'S';
  public static final char DESC_VOID = 'V';
}
