[][src]Enum oem_cp::code_table_type::TableType

pub enum TableType {
    Complete(&'static [char; 128]),
    Incomplete(&'static [Option<char>; 128]),
}

Wrapper enumerate for decoding tables

It has 2 types: Complete, complete tables (it doesn't have undefined codepoints) / Incomplete, incomplete tables (does have ones)

Variants

Complete(&'static [char; 128])

complete table, which doen't have any undefined codepoints

Incomplete(&'static [Option<char>; 128])

incomplete table, which has some undefined codepoints

Implementations

impl TableType[src]

pub fn decode_string_checked<'a, T: Into<Cow<'a, [u8]>>>(
    &self,
    src: T
) -> Option<String>
[src]

Wrapper function for decoding bytes encoded in SBCSs

This function returns None if any bytes bumps into undefined codepoints

Arguments

  • src - bytes encoded in SBCS

Examples

use oem_cp::code_table::{DECODING_TABLE_CP437, DECODING_TABLE_CP874};
use oem_cp::code_table_type::TableType;
use TableType::{Complete,Incomplete};

assert_eq!(Complete(&DECODING_TABLE_CP437).decode_string_checked(vec![0xFB, 0xAC, 0x3D, 0xAB]), Some("√¼=½".to_string()));
// means shrimp in Thai (U+E49 => 0xE9)
assert_eq!(Incomplete(&DECODING_TABLE_CP874).decode_string_checked(vec![0xA1, 0xD8, 0xE9, 0xA7]), Some("กุ้ง".to_string()));
// 0xDB-0xDE,0xFC-0xFF is invalid in CP874 in Windows (strict mode)
assert_eq!(Incomplete(&DECODING_TABLE_CP874).decode_string_checked(vec![0x30, 0xDB]), None);

pub fn decode_string_lossy<'a, T: Into<Cow<'a, [u8]>>>(&self, src: T) -> String[src]

Wrapper function for decoding bytes encoded in SBCSs

Undefined codepoints are replaced with U+FFFD.

Arguments

  • src - bytes encoded in SBCS

Examples

use oem_cp::code_table::{DECODING_TABLE_CP437, DECODING_TABLE_CP874};
use oem_cp::code_table_type::TableType;
use TableType::{Complete,Incomplete};

assert_eq!(Complete(&DECODING_TABLE_CP437).decode_string_lossy(vec![0xFB, 0xAC, 0x3D, 0xAB]), "√¼=½".to_string());
// means shrimp in Thai (U+E49 => 0xE9)
assert_eq!(Incomplete(&DECODING_TABLE_CP874).decode_string_lossy(vec![0xA1, 0xD8, 0xE9, 0xA7]), "กุ้ง".to_string());
// 0xDB-0xDE,0xFC-0xFF is invalid in CP874 in Windows (strict mode)
assert_eq!(Incomplete(&DECODING_TABLE_CP874).decode_string_lossy(vec![0x30, 0xDB]), "0\u{FFFD}".to_string());

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.