MCPcopy Index your code
hub / github.com/RustPython/RustPython / unicode_from_object

Method unicode_from_object

crates/stdlib/src/tkinter.rs:229–254  ·  view source on GitHub ↗
(
            &self,
            obj: *mut tk_sys::Tcl_Obj,
            vm: &VirtualMachine,
        )

Source from the content-addressed store, hash-verified

227 }
228
229 fn unicode_from_object(
230 &self,
231 obj: *mut tk_sys::Tcl_Obj,
232 vm: &VirtualMachine,
233 ) -> PyResult<PyObjectRef> {
234 let type_ptr = unsafe { (*obj).typePtr };
235 if !type_ptr.is_null()
236 && !self.interpreter.is_null()
237 && (type_ptr == self.string_type || type_ptr == self.utf32_string_type)
238 {
239 let len = ptr::null_mut();
240 let data = unsafe { tk_sys::Tcl_GetUnicodeFromObj(obj, len) };
241 return if size_of::<tk_sys::Tcl_UniChar>() == 2 {
242 let v = unsafe { std::slice::from_raw_parts(data as *const u16, len as usize) };
243 let s = String::from_utf16(v).unwrap();
244 Ok(PyObjectRef::from(vm.ctx.new_str(s)))
245 } else {
246 let v = unsafe { std::slice::from_raw_parts(data as *const u32, len as usize) };
247 let s = widestring::U32String::from_vec(v).to_string_lossy();
248 Ok(PyObjectRef::from(vm.ctx.new_str(s)))
249 };
250 }
251 let len = ptr::null_mut();
252 let s = unsafe { tk_sys::Tcl_GetStringFromObj(obj, len) };
253 Self::unicode_from_string(s, len as _, vm)
254 }
255
256 fn var_invoke(&self) {
257 if self.threaded && self.thread_id != Some(unsafe { tk_sys::Tcl_GetCurrentThread() }) {

Callers 2

tcl_obj_to_pyobjectMethod · 0.80
inner_getvarMethod · 0.80

Calls 3

unwrapMethod · 0.45
new_strMethod · 0.45
to_string_lossyMethod · 0.45

Tested by

no test coverage detected