Packages

package charset

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. All

Type Members

  1. trait BitsCharset extends Serializable

    Charset enhanced with features allowing it to work with Daffodil's Bit-wise DataInputStream and DataOutputStream.

    Charset enhanced with features allowing it to work with Daffodil's Bit-wise DataInputStream and DataOutputStream.

    Daffodil uses BitsCharset as its primary abstraction for dealing with character sets, which enables it to support character sets where the code units are smaller than 1 byte.

    Note that BitsCharset is NOT derived from java.nio.charset.Charset, nor are BitsCharsetDecoder or BitsCharsetEncoder derived from java.nio.charset.CharsetDecoder or CharsetEncoder respectively. This is partly because these Java classes have many final methods that make it impossible for us to implement what we need by extending them. But more importantly, we need much more low level control about how characters are decoded what what kind of information is returned during decode operations. Getting that information with the limitations of the java Charset API become an encumbrance. Replacing with our own Charset decoders grealy simplifies the code and allows for future enhancements as needed.

  2. final class BitsCharset3BitDFI336DUI001Definition extends BitsCharsetDefinition
  3. final class BitsCharset3BitDFI746DUI002Definition extends BitsCharsetDefinition
  4. final class BitsCharset3BitDFI747DUI001Definition extends BitsCharsetDefinition
  5. final class BitsCharset4BitDFI746DUI002Definition extends BitsCharsetDefinition
  6. final class BitsCharset5BitDFI1661DUI001Definition extends BitsCharsetDefinition
  7. final class BitsCharset5BitDFI769DUI002Definition extends BitsCharsetDefinition
  8. final class BitsCharset5BitPackedLSBFDefinition extends BitsCharsetDefinition
  9. final class BitsCharset6BitDFI264DUI001Definition extends BitsCharsetDefinition
  10. sealed abstract class BitsCharset6BitDFI311DUI002Base extends BitsCharsetNonByteSize
  11. final class BitsCharset6BitDFI311DUI002Definition extends BitsCharsetDefinition
  12. final class BitsCharset6BitICAOAircraftIDDefinition extends BitsCharsetDefinition
  13. final class BitsCharsetAISPayloadArmoringDefinition extends BitsCharsetDefinition
  14. final class BitsCharsetASCIIDefinition extends BitsCharsetDefinition
  15. final class BitsCharsetBase4LSBFDefinition extends BitsCharsetDefinition
  16. final class BitsCharsetBase4MSBFDefinition extends BitsCharsetDefinition
  17. final class BitsCharsetBinaryLSBFDefinition extends BitsCharsetDefinition
  18. final class BitsCharsetBinaryMSBFDefinition extends BitsCharsetDefinition
  19. abstract class BitsCharsetDecoder extends AnyRef
  20. abstract class BitsCharsetDecoderByteSize extends BitsCharsetDecoder

    Base class for byte based decoders

    Base class for byte based decoders

    Provides methods to get a single byte. Also handles logic related to error encoding policy and the replacement characters. Implementing class only need to use the provided methods to get a byte(s) and convert to a char and perform validation on the code point.

  21. abstract class BitsCharsetDecoderCreatesSurrogates extends BitsCharsetDecoderByteSize

    Some encodings need state, but only for the storing of a low surrogate pair.

    Some encodings need state, but only for the storing of a low surrogate pair. This encapsulates that logic. When a class extends this class, it ust implement deocodeOneUnicodeChar, which should decode one char, and if there is a high/low surrogate pair it should call setLowSurrgoate on the low and return the high.

  22. class BitsCharsetDecoderIBM037 extends BitsCharsetDecoderByteSize
  23. class BitsCharsetDecoderISO88591 extends BitsCharsetDecoderByteSize
  24. class BitsCharsetDecoderMalformedException extends ThinException
  25. trait BitsCharsetDecoderState extends AnyRef
  26. class BitsCharsetDecoderUSASCII extends BitsCharsetDecoderByteSize
  27. class BitsCharsetDecoderUTF16BE extends BitsCharsetDecoderCreatesSurrogates
  28. class BitsCharsetDecoderUTF16LE extends BitsCharsetDecoderCreatesSurrogates
  29. class BitsCharsetDecoderUTF32BE extends BitsCharsetDecoderCreatesSurrogates
  30. class BitsCharsetDecoderUTF32LE extends BitsCharsetDecoderCreatesSurrogates
  31. class BitsCharsetDecoderUTF8 extends BitsCharsetDecoderCreatesSurrogates
  32. class BitsCharsetDecoderUnalignedCharDecodeException extends ThinException
  33. abstract class BitsCharsetDefinition extends AnyRef

    These are the classes which must be dynamically loaded in order to add a charset implementation to Daffodil.

    These are the classes which must be dynamically loaded in order to add a charset implementation to Daffodil. All charsets must implement this class and be added to the org.apache.daffodil.processors.charset.BitsCharsetDefinition file in daffodil-io/src/main/resources/META-INF/services. name() must return a fully capitalized string

  34. final class BitsCharsetEBCDIC_CP_USDefinition extends BitsCharsetDefinition
  35. abstract class BitsCharsetEncoder extends IsResetMixin
  36. final class BitsCharsetHexLSBFDefinition extends BitsCharsetDefinition
  37. final class BitsCharsetHexMSBFDefinition extends BitsCharsetDefinition
  38. final class BitsCharsetIBM037Definition extends BitsCharsetDefinition
  39. final class BitsCharsetISO885918BitPackedLSBFDefinition extends BitsCharsetDefinition
  40. final class BitsCharsetISO885918BitPackedMSBFDefinition extends BitsCharsetDefinition
  41. final class BitsCharsetISO88591Definition extends BitsCharsetDefinition
  42. trait BitsCharsetJava extends BitsCharset

    Implements BitsCharset based on encapsulation of a regular JavaCharset.

  43. trait BitsCharsetNonByteSize extends BitsCharset

    Some encodings are not byte-oriented.

    Some encodings are not byte-oriented.

    If we know the correspondence from integers to characters, and we can express that as a string, then everything else can be derived

    This class is explicitly not a java.nio.charset.Charset. It is a BitsCharset, which is not a compatible type with a java.nio.charset.Charset on purpose so we don't confuse the two.

    The problem is that java.nio.charset.Charset is designed in such a way that one cannot implement a proxy class that redirects methods to another class. This is due to all the final methods on the class.

    So instead we do the opposite. We implement our own BitsCharset API, but implement the behavior in terms of a proxy JavaCharsetDecoder and proxy JavaCharsetEncoder that drive the decodeLoop and encodeLoop. This way we don't have to re-implement all the error handling and flush/end logic.

  44. final class BitsCharsetNonByteSizeDecoder extends BitsCharsetDecoder
  45. final class BitsCharsetNonByteSizeEncoder extends BitsCharsetEncoder
  46. final class BitsCharsetOctalLSBFDefinition extends BitsCharsetDefinition
  47. final class BitsCharsetOctalMSBFDefinition extends BitsCharsetDefinition
  48. final class BitsCharsetUSASCII6BitPackedDefinition extends BitsCharsetDefinition
  49. final class BitsCharsetUSASCII6BitPackedLSBFDefinition extends BitsCharsetDefinition
  50. final class BitsCharsetUSASCII6BitPackedMSBFDefinition extends BitsCharsetDefinition
  51. final class BitsCharsetUSASCII7BitPackedDefinition extends BitsCharsetDefinition
  52. final class BitsCharsetUSASCIIDefinition extends BitsCharsetDefinition
  53. final class BitsCharsetUTF16BEDefinition extends BitsCharsetDefinition
  54. final class BitsCharsetUTF16Definition extends BitsCharsetDefinition
  55. final class BitsCharsetUTF16LEDefinition extends BitsCharsetDefinition
  56. final class BitsCharsetUTF32BEDefinition extends BitsCharsetDefinition
  57. final class BitsCharsetUTF32Definition extends BitsCharsetDefinition
  58. final class BitsCharsetUTF32LEDefinition extends BitsCharsetDefinition
  59. final class BitsCharsetUTF8Definition extends BitsCharsetDefinition
  60. final class BitsCharsetWrappingJavaCharsetEncoder extends BitsCharsetEncoder

    Implements BitsCharsetEncoder by encapsulating a standard JavaCharsetEncoder

  61. class CharacterSetAlignmentError extends Exception
  62. sealed abstract class CoderInfo extends AnyRef
  63. case class DecoderInfo(coder: BitsCharsetDecoder, encodingMandatoryAlignmentInBitsArg: Int, maybeCharWidthInBitsArg: MaybeInt) extends CoderInfo with Product with Serializable
  64. trait EncoderDecoderMixin extends LocalBufferMixin
  65. case class EncoderInfo(coder: BitsCharsetEncoder, replacingCoder: BitsCharsetEncoder, reportingCoder: BitsCharsetEncoder, encodingMandatoryAlignmentInBitsArg: Int, maybeCharWidthInBitsArg: MaybeInt) extends CoderInfo with Product with Serializable
  66. trait IsResetMixin extends AnyRef
  67. final class ProxyJavaCharsetEncoder extends CharsetEncoder

    Hyjack a JavaCharsetEncoder to drive the encodeLoop.

    Hyjack a JavaCharsetEncoder to drive the encodeLoop.

    This avoids us reimplementing all the error handling and flush/end logic.

    TODO: Similar to our decoders, we should create custom encoders. Then we wouldn't need all this complex code related to proxying java charsets.

    Attributes
    protected

Value Members

  1. object BitsCharset3BitDFI336DUI001 extends BitsCharsetNonByteSize
  2. object BitsCharset3BitDFI746DUI002 extends BitsCharsetNonByteSize
  3. object BitsCharset3BitDFI747DUI001 extends BitsCharsetNonByteSize
  4. object BitsCharset4BitDFI746DUI002 extends BitsCharsetNonByteSize
  5. object BitsCharset5BitDFI1661DUI001 extends BitsCharsetNonByteSize
  6. object BitsCharset5BitDFI769DUI002 extends BitsCharsetNonByteSize
  7. object BitsCharset5BitPackedLSBF extends BitsCharsetNonByteSize

    X-DFDL-5-BIT-PACKED-LSBF occupies only 5 bits with each code unit.

  8. object BitsCharset6BitDFI264DUI001 extends BitsCharsetNonByteSize

    X-DFDL-6-BIT-DFI-264-DUI-001, special 6 bit encoding

  9. object BitsCharset6BitDFI311DUI002 extends BitsCharset6BitDFI311DUI002Base
  10. object BitsCharset6BitICAOAircraftID extends BitsCharset6BitDFI311DUI002Base
  11. object BitsCharsetAISPayloadArmoring extends BitsCharsetNonByteSize

    Special purpose.

    Special purpose. This is not used for decoding anything. The encoder is used to convert strings using the characters allowed, into binary data using the AIS Payload Armoring described here:

    http://catb.org/gpsd/AIVDM.html#_aivdm_aivdo_payload_armoring

    To convert a string of length N bytes, You will get 6N bits.

    The decoder can be used for unit testing, but the point of this class is to make the encoder available for use in un-doing the AIS Payload armoring when parsing, and performing this armoring when unparsing.

    When encoding from 8-bit say, ascii, or iso-8859-1, this can only encode things that stay within the 64 allowed characters. dfdl:encodingErrorPolicy='error' would check this (once implemented), otherwise where this is used the checking needs to be done separately somehow.

  12. object BitsCharsetBase4LSBF extends BitsCharsetNonByteSize

    Base 4 aka Quarternary

  13. object BitsCharsetBase4MSBF extends BitsCharsetNonByteSize
  14. object BitsCharsetBinaryLSBF extends BitsCharsetNonByteSize

    X-DFDL-BITS-LSBF occupies only 1 bit with each code unit.

  15. object BitsCharsetBinaryMSBF extends BitsCharsetNonByteSize

    X-DFDL-BITS-MSBF occupies only 1 bit with each code unit.

  16. object BitsCharsetDefinitionRegistry
  17. object BitsCharsetHexLSBF extends BitsCharsetNonByteSize

    X-DFDL-HEX-LSBF occupies only 4 bits with each code unit.

  18. object BitsCharsetHexMSBF extends BitsCharsetNonByteSize

    X-DFDL-HEX-MSBF occupies only 4 bits with each code unit.

  19. object BitsCharsetIBM037 extends BitsCharsetJava
  20. object BitsCharsetISO88591 extends BitsCharsetJava
  21. object BitsCharsetISO885918BitPackedLSBF extends BitsCharsetNonByteSize

    X-DFDL-ISO-88591-8-BIT-PACKED-LSB-FIRST occupies only 8 bits with each code unit.

  22. object BitsCharsetISO885918BitPackedMSBF extends BitsCharsetNonByteSize

    X-DFDL-ISO-88591-8-BIT-PACKED-MSB-FIRST occupies only 8 bits with each code unit.

  23. object BitsCharsetOctalLSBF extends BitsCharsetNonByteSize

    X-DFDL-OCTAL-LSBF occupies only 3 bits with each code unit.

  24. object BitsCharsetOctalMSBF extends BitsCharsetNonByteSize

    X-DFDL-OCTAL-MSBF occupies only 3 bits with each code unit.

  25. object BitsCharsetUSASCII extends BitsCharsetJava
  26. object BitsCharsetUSASCII6BitPackedLSBF extends BitsCharsetNonByteSize

    X-DFDL-US-ASCII-6-BIT-PACKED occupies only 6 bits with each code unit.

  27. object BitsCharsetUSASCII6BitPackedMSBF extends BitsCharsetNonByteSize
  28. object BitsCharsetUSASCII7BitPacked extends BitsCharsetNonByteSize

    X-DFDL-US-ASCII-7-BIT-PACKED occupies only 7 bits with each code unit.

  29. object BitsCharsetUTF16BE extends BitsCharsetJava
  30. object BitsCharsetUTF16LE extends BitsCharsetJava
  31. object BitsCharsetUTF32BE extends BitsCharsetJava
  32. object BitsCharsetUTF32LE extends BitsCharsetJava
  33. object BitsCharsetUTF8 extends BitsCharsetJava
  34. object CharsetUtils
  35. object StandardBitsCharsets

    Provides BitsCharset objects corresponding to the usual java charsets found in StandardCharsets.

Ungrouped