ACEXML_Encoding Class Reference

ACEXML_Encoding. More...

#include <ACEXML/common/Encoding.h>

List of all members.

Public Types

enum  {
  UCS4BE, UCS4LE, UCS4_2143, UCS4_3412,
  UTF16BE, UTF16LE, UTF8, OTHER
}

Static Public Member Functions

const ACEXML_Charget_encoding (const char *input)

Public Attributes

enum ACEXML_Encoding:: { ... }  ENCODING

Static Public Attributes

const ACEXML_Charencoding_names_ [8]
const ACEXML_UTF8 byte_order_mark_ [][4]
const ACEXML_UTF8 magic_values_ [][4]


Detailed Description

ACEXML_Encoding.

Wrapper class for determining the encoding of a file or a byte stream.

Definition at line 35 of file Encoding.h.


Member Enumeration Documentation

anonymous enum
 

Enumeration values:
UCS4BE 
UCS4LE 
UCS4_2143 
UCS4_3412 
UTF16BE 
UTF16LE 
UTF8 
OTHER 

Definition at line 38 of file Encoding.h.

00038        {
00039     UCS4BE,
00040     UCS4LE,
00041     UCS4_2143,
00042     UCS4_3412,
00043     UTF16BE,
00044     UTF16LE,
00045     UTF8,
00046     OTHER
00047   } ENCODING;


Member Function Documentation

const ACEXML_Char * ACEXML_Encoding::get_encoding const char *  input  )  [static]
 

Definition at line 38 of file Encoding.cpp.

References byte_order_mark_, encoding_names_, magic_values_, ACE_OS::memcmp(), UTF16BE, UTF16LE, and UTF8.

Referenced by ACEXML_StrCharStream::determine_encoding(), ACEXML_HttpCharStream::determine_encoding(), and ACEXML_FileCharStream::determine_encoding().

00039 {
00040   if ((ACE_OS::memcmp (&ACEXML_Encoding::byte_order_mark_[ACEXML_Encoding::UTF16BE][0], input, 2) == 0)
00041       && (input[2] != 0 || input[3] != 0)) // 3 & 4 should not be both zero
00042     return ACEXML_Encoding::encoding_names_[ACEXML_Encoding::UTF16BE];
00043   else if ((ACE_OS::memcmp (&ACEXML_Encoding::byte_order_mark_[ACEXML_Encoding::UTF16LE][0], input, 2) == 0)
00044     && (input[2] != 0 || input[3] != 0)) // 3 & 4 should not be both zero
00045     return ACEXML_Encoding::encoding_names_[ACEXML_Encoding::UTF16LE];
00046   else if (ACE_OS::memcmp (&ACEXML_Encoding::byte_order_mark_[ACEXML_Encoding::UTF8][0], input, 3) == 0)
00047     return ACEXML_Encoding::encoding_names_[ACEXML_Encoding::UTF8];
00048   else if (ACE_OS::memcmp (&ACEXML_Encoding::magic_values_[ACEXML_Encoding::UTF16BE][0], input, 4) == 0)
00049     return ACEXML_Encoding::encoding_names_[ACEXML_Encoding::UTF16BE];
00050   else if (ACE_OS::memcmp (&ACEXML_Encoding::magic_values_[ACEXML_Encoding::UTF16LE][0], input, 4) == 0)
00051     return ACEXML_Encoding::encoding_names_[ACEXML_Encoding::UTF16LE];
00052   else if (ACE_OS::memcmp (&ACEXML_Encoding::magic_values_[ACEXML_Encoding::UTF8][0], input, 4) == 0)
00053     return ACEXML_Encoding::encoding_names_[ACEXML_Encoding::UTF8];
00054   else
00055     {
00056       // ACE_ERROR ((LM_ERROR, "Unknown encoding. Assuming UTF-8\n"));
00057       return ACEXML_Encoding::encoding_names_[ACEXML_Encoding::UTF8];
00058     }
00059 }


Member Data Documentation

const ACEXML_UTF8 ACEXML_Encoding::byte_order_mark_[][4] [static]
 

Definition at line 51 of file Encoding.h.

Referenced by get_encoding().

enum { ... } ACEXML_Encoding::ENCODING
 

const ACEXML_Char * ACEXML_Encoding::encoding_names_ [static]
 

Initial value:

 {
  ACE_TEXT ("UCS-4BE"),
  ACE_TEXT ("UCS-4LE"),
  ACE_TEXT ("UCS-4_2143"),
  ACE_TEXT ("UCS-4_3412"),
  ACE_TEXT ("UTF-16"),
  ACE_TEXT ("UTF-16"),
  ACE_TEXT ("UTF-8"),

}

Definition at line 6 of file Encoding.cpp.

Referenced by get_encoding().

const ACEXML_UTF8 ACEXML_Encoding::magic_values_[][4] [static]
 

Definition at line 53 of file Encoding.h.

Referenced by get_encoding().


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 11:47:53 2006 for ACEXML by doxygen 1.3.6