cprover
unicode.cpp File Reference
#include "unicode.h"
#include <cstring>
#include <locale>
#include <iomanip>
#include <sstream>
#include <cstdint>
Include dependency graph for unicode.cpp:

Go to the source code of this file.

Macros

#define BUFSIZE   100
 

Functions

bool is_little_endian_arch ()
 Determine endianness of the architecture. More...
 
std::string narrow (const wchar_t *s)
 
std::wstring widen (const char *s)
 
std::string narrow (const std::wstring &s)
 
std::wstring widen (const std::string &s)
 
static void utf8_append_code (unsigned int c, std::string &result)
 Appends a unicode character to a utf8-encoded string. More...
 
std::string utf32_to_utf8 (const std::basic_string< unsigned int > &s)
 
const char ** narrow_argv (int argc, const wchar_t **argv_wide)
 
uint16_t do_swap_bytes (uint16_t x)
 A helper function for dealing with different UTF16 endians. More...
 
void utf16_append_code (unsigned int code, bool swap_bytes, std::wstring &result)
 
std::wstring utf8_to_utf16 (const std::string &in, bool swap_bytes)
 
std::wstring utf8_to_utf16_big_endian (const std::string &in)
 
std::wstring utf8_to_utf16_little_endian (const std::string &in)
 
std::string utf16_little_endian_to_ascii (const std::wstring &in)
 

Macro Definition Documentation

§ BUFSIZE

#define BUFSIZE   100

Definition at line 29 of file unicode.cpp.

Function Documentation

§ do_swap_bytes()

uint16_t do_swap_bytes ( uint16_t  x)

A helper function for dealing with different UTF16 endians.

parameters: A 16-bit integer
Returns
A 16-bit integer with bytes swapped

Definition at line 173 of file unicode.cpp.

Referenced by utf16_append_code().

§ is_little_endian_arch()

bool is_little_endian_arch ( )

Determine endianness of the architecture.

Returns
True if the architecture is little_endian

Definition at line 23 of file unicode.cpp.

Referenced by utf8_to_utf16_big_endian(), and utf8_to_utf16_little_endian().

§ narrow() [1/2]

std::string narrow ( const wchar_t *  s)

Definition at line 31 of file unicode.cpp.

References r.

Referenced by narrow_argv(), ms_cl_cmdlinet::parse_env(), and ms_cl_cmdlinet::process_response_file().

§ narrow() [2/2]

std::string narrow ( const std::wstring &  s)

Definition at line 81 of file unicode.cpp.

References r.

§ narrow_argv()

const char** narrow_argv ( int  argc,
const wchar_t **  argv_wide 
)

Definition at line 155 of file unicode.cpp.

References narrow().

Referenced by main().

§ utf16_append_code()

void utf16_append_code ( unsigned int  code,
bool  swap_bytes,
std::wstring &  result 
)

Definition at line 181 of file unicode.cpp.

References do_swap_bytes().

Referenced by utf8_to_utf16().

§ utf16_little_endian_to_ascii()

std::string utf16_little_endian_to_ascii ( const std::wstring &  in)
parameters: String in UTF-16LE format
Returns
String in US-ASCII format, with escapes for other characters

Definition at line 291 of file unicode.cpp.

References loc.

§ utf32_to_utf8()

std::string utf32_to_utf8 ( const std::basic_string< unsigned int > &  s)
Parameters
utf32:encodedwide string
Returns
utf8-encoded string with the same unicode characters as the input.

Definition at line 143 of file unicode.cpp.

References utf8_append_code().

Referenced by append_universal_char(), convert_one_string_literal(), and make_identifier().

§ utf8_append_code()

static void utf8_append_code ( unsigned int  c,
std::string &  result 
)
static

Appends a unicode character to a utf8-encoded string.

parameters: character to append, string to append to

Definition at line 117 of file unicode.cpp.

Referenced by utf32_to_utf8().

§ utf8_to_utf16()

std::wstring utf8_to_utf16 ( const std::string &  in,
bool  swap_bytes 
)
parameters: String in UTF-8 format, bool value indicating whether the
endianness should be different from the architecture one.
Returns
String in UTF-16 format. The encoding follows the endianness of the architecture iff swap_bytes is true.

Definition at line 214 of file unicode.cpp.

References size_type(), and utf16_append_code().

Referenced by utf8_to_utf16_big_endian(), and utf8_to_utf16_little_endian().

§ utf8_to_utf16_big_endian()

std::wstring utf8_to_utf16_big_endian ( const std::string &  in)
parameters: String in UTF-8 format
Returns
String in UTF-16BE format

Definition at line 275 of file unicode.cpp.

References is_little_endian_arch(), and utf8_to_utf16().

§ utf8_to_utf16_little_endian()

std::wstring utf8_to_utf16_little_endian ( const std::string &  in)
parameters: String in UTF-8 format
Returns
String in UTF-16LE format

Definition at line 283 of file unicode.cpp.

References is_little_endian_arch(), and utf8_to_utf16().

Referenced by string_constraint_generatort::add_axioms_for_constant(), delete_directory(), and java_bytecode_typecheckt::typecheck_expr_java_string_literal().

§ widen() [1/2]

§ widen() [2/2]

std::wstring widen ( const std::string &  s)

Definition at line 98 of file unicode.cpp.

References r.