From 6bce33305305131a30ff287a74cfb3b64dfb34de Mon Sep 17 00:00:00 2001 From: "Daniel P. Clark" <6ftdan@gmail.com> Date: Sat, 16 Jun 2018 15:44:51 -0400 Subject: [PATCH 1/2] Encoding support --- src/encoding.rs | 12 ++++++++++++ src/lib.rs | 1 + src/string.rs | 3 +++ 3 files changed, 16 insertions(+) create mode 100644 src/encoding.rs diff --git a/src/encoding.rs b/src/encoding.rs new file mode 100644 index 00000000..d1ca6f40 --- /dev/null +++ b/src/encoding.rs @@ -0,0 +1,12 @@ +use types::{c_int, c_char, Value}; + +extern "C" { + pub fn rb_enc_associate_index(obj: Value, idx: c_int) -> Value; + pub fn rb_enc_find_index(name: *const c_char ) -> c_int; + pub fn rb_enc_get_index(obj: Value) -> c_int; + pub fn rb_enc_set_index(obj: Value, encindex: c_int); + pub fn rb_locale_encindex() -> c_int; + pub fn rb_to_encoding_index(obj: Value) -> c_int; + pub fn rb_usascii_encindex() -> c_int; + pub fn rb_utf8_encindex() -> c_int; +} diff --git a/src/lib.rs b/src/lib.rs index ab73abc3..8ba8a219 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,6 +3,7 @@ extern crate libc; pub mod array; pub mod constant; pub mod class; +pub mod encoding; pub mod fixnum; pub mod gc; pub mod float; diff --git a/src/string.rs b/src/string.rs index ba5f6406..5c939226 100644 --- a/src/string.rs +++ b/src/string.rs @@ -10,6 +10,9 @@ extern "C" { pub fn rb_utf8_str_new(str: *const c_char, len: c_long) -> Value; pub fn rb_string_value_cstr(str: *const Value) -> *const c_char; pub fn rb_string_value_ptr(str: *const Value) -> *const c_char; + pub fn rb_str_ascii_only_p(str: Value) -> bool; + pub fn rb_str_export_locale(str: Value) -> Value; + pub fn rb_str_valid_encoding_p(str: Value) -> bool; } #[repr(C)] From 93f675366d71754e3c484f5a6d29600b22fe94c3 Mon Sep 17 00:00:00 2001 From: "Daniel P. Clark" <6ftdan@gmail.com> Date: Sat, 16 Jun 2018 15:56:02 -0400 Subject: [PATCH 2/2] add filesystem encoding lookup --- src/encoding.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/encoding.rs b/src/encoding.rs index d1ca6f40..d6eea28f 100644 --- a/src/encoding.rs +++ b/src/encoding.rs @@ -5,6 +5,7 @@ extern "C" { pub fn rb_enc_find_index(name: *const c_char ) -> c_int; pub fn rb_enc_get_index(obj: Value) -> c_int; pub fn rb_enc_set_index(obj: Value, encindex: c_int); + pub fn rb_filesystem_encindex() -> c_int; pub fn rb_locale_encindex() -> c_int; pub fn rb_to_encoding_index(obj: Value) -> c_int; pub fn rb_usascii_encindex() -> c_int;