1 /* Jackson JSON-processor.
2  *
3  * Copyright (c) 2007- Tatu Saloranta, tatu.saloranta@iki.fi
4  */

5
6 package com.fasterxml.jackson.core;
7
8 /**
9  * Enumeration that defines legal encodings that can be used
10  * for JSON content, based on list of allowed encodings from
11  * <a href="http://www.ietf.org/rfc/rfc4627.txt">JSON specification</a>.
12  *<p>
13  * Note: if application want to explicitly disregard Encoding
14  * limitations (to read in JSON encoded using an encoding not
15  * listed as allowed), they can use {@link java.io.Reader} /
16  * {@link java.io.Writer} instances as input
17  */

18 public enum JsonEncoding {
19     UTF8("UTF-8"false, 8), // N/A for big-endian, really
20         UTF16_BE("UTF-16BE"true, 16),
21         UTF16_LE("UTF-16LE"false, 16),
22         UTF32_BE("UTF-32BE"true, 32),
23         UTF32_LE("UTF-32LE"false, 32)
24         ;
25     
26     private final String _javaName;
27
28     private final boolean _bigEndian;
29
30     private final int _bits;
31     
32     JsonEncoding(String javaName, boolean bigEndian, int bits)
33     {
34         _javaName = javaName;
35         _bigEndian = bigEndian;
36         _bits = bits;
37     }
38
39     /**
40      * Method for accessing encoding name that JDK will support.
41      *
42      * @return Matching encoding name that JDK will support.
43      */

44     public String getJavaName() { return _javaName; }
45
46     /**
47      * Whether encoding is big-endian (if encoding supports such
48      * notion). If no such distinction is made (as is the case for
49      * {@link #UTF8}), return value is undefined.
50      *
51      * @return True for big-endian encodings; false for little-endian
52      *   (or if not applicable)
53      */

54     public boolean isBigEndian() { return _bigEndian; }
55
56     public int bits() { return _bits; }
57 }
58