1#[doc(hidden)]
78macro_rules! impl_builtin_altrep_family {
79 ($ty:ty, integer, dataptr, $reg_fn:ident, $entry_ident:ident) => {
81 $crate::impl_altinteger_from_data!($ty, dataptr, serialize);
82 #[doc(hidden)]
83 #[unsafe(no_mangle)]
84 pub extern "C-unwind" fn $reg_fn() {
85 <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
86 }
87 #[cfg_attr(
88 not(target_arch = "wasm32"),
89 $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
90 linkme(crate = $crate::linkme)
91 )]
92 #[doc(hidden)]
93 #[allow(non_upper_case_globals)]
94 static $entry_ident: $crate::registry::AltrepRegistration =
95 $crate::registry::AltrepRegistration {
96 register: $reg_fn,
97 symbol: stringify!($reg_fn),
98 };
99 };
100 ($ty:ty, real, dataptr, $reg_fn:ident, $entry_ident:ident) => {
101 $crate::impl_altreal_from_data!($ty, dataptr, serialize);
102 #[doc(hidden)]
103 #[unsafe(no_mangle)]
104 pub extern "C-unwind" fn $reg_fn() {
105 <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
106 }
107 #[cfg_attr(
108 not(target_arch = "wasm32"),
109 $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
110 linkme(crate = $crate::linkme)
111 )]
112 #[doc(hidden)]
113 #[allow(non_upper_case_globals)]
114 static $entry_ident: $crate::registry::AltrepRegistration =
115 $crate::registry::AltrepRegistration {
116 register: $reg_fn,
117 symbol: stringify!($reg_fn),
118 };
119 };
120 ($ty:ty, logical, dataptr, $reg_fn:ident, $entry_ident:ident) => {
121 $crate::impl_altlogical_from_data!($ty, dataptr, serialize);
122 #[doc(hidden)]
123 #[unsafe(no_mangle)]
124 pub extern "C-unwind" fn $reg_fn() {
125 <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
126 }
127 #[cfg_attr(
128 not(target_arch = "wasm32"),
129 $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
130 linkme(crate = $crate::linkme)
131 )]
132 #[doc(hidden)]
133 #[allow(non_upper_case_globals)]
134 static $entry_ident: $crate::registry::AltrepRegistration =
135 $crate::registry::AltrepRegistration {
136 register: $reg_fn,
137 symbol: stringify!($reg_fn),
138 };
139 };
140 ($ty:ty, raw, dataptr, $reg_fn:ident, $entry_ident:ident) => {
141 $crate::impl_altraw_from_data!($ty, dataptr, serialize);
142 #[doc(hidden)]
143 #[unsafe(no_mangle)]
144 pub extern "C-unwind" fn $reg_fn() {
145 <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
146 }
147 #[cfg_attr(
148 not(target_arch = "wasm32"),
149 $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
150 linkme(crate = $crate::linkme)
151 )]
152 #[doc(hidden)]
153 #[allow(non_upper_case_globals)]
154 static $entry_ident: $crate::registry::AltrepRegistration =
155 $crate::registry::AltrepRegistration {
156 register: $reg_fn,
157 symbol: stringify!($reg_fn),
158 };
159 };
160 ($ty:ty, string, dataptr, $reg_fn:ident, $entry_ident:ident) => {
161 $crate::impl_altstring_from_data!($ty, dataptr, serialize);
162 #[doc(hidden)]
163 #[unsafe(no_mangle)]
164 pub extern "C-unwind" fn $reg_fn() {
165 <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
166 }
167 #[cfg_attr(
168 not(target_arch = "wasm32"),
169 $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
170 linkme(crate = $crate::linkme)
171 )]
172 #[doc(hidden)]
173 #[allow(non_upper_case_globals)]
174 static $entry_ident: $crate::registry::AltrepRegistration =
175 $crate::registry::AltrepRegistration {
176 register: $reg_fn,
177 symbol: stringify!($reg_fn),
178 };
179 };
180 ($ty:ty, complex, dataptr, $reg_fn:ident, $entry_ident:ident) => {
181 $crate::impl_altcomplex_from_data!($ty, dataptr, serialize);
182 #[doc(hidden)]
183 #[unsafe(no_mangle)]
184 pub extern "C-unwind" fn $reg_fn() {
185 <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
186 }
187 #[cfg_attr(
188 not(target_arch = "wasm32"),
189 $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
190 linkme(crate = $crate::linkme)
191 )]
192 #[doc(hidden)]
193 #[allow(non_upper_case_globals)]
194 static $entry_ident: $crate::registry::AltrepRegistration =
195 $crate::registry::AltrepRegistration {
196 register: $reg_fn,
197 symbol: stringify!($reg_fn),
198 };
199 };
200 ($ty:ty, integer, materializing, $reg_fn:ident, $entry_ident:ident) => {
209 $crate::impl_altinteger_from_data!($ty, serialize);
210 #[doc(hidden)]
211 #[unsafe(no_mangle)]
212 pub extern "C-unwind" fn $reg_fn() {
213 <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
214 }
215 #[cfg_attr(
216 not(target_arch = "wasm32"),
217 $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
218 linkme(crate = $crate::linkme)
219 )]
220 #[doc(hidden)]
221 #[allow(non_upper_case_globals)]
222 static $entry_ident: $crate::registry::AltrepRegistration =
223 $crate::registry::AltrepRegistration {
224 register: $reg_fn,
225 symbol: stringify!($reg_fn),
226 };
227 };
228 ($ty:ty, real, materializing, $reg_fn:ident, $entry_ident:ident) => {
229 $crate::impl_altreal_from_data!($ty, serialize);
230 #[doc(hidden)]
231 #[unsafe(no_mangle)]
232 pub extern "C-unwind" fn $reg_fn() {
233 <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
234 }
235 #[cfg_attr(
236 not(target_arch = "wasm32"),
237 $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
238 linkme(crate = $crate::linkme)
239 )]
240 #[doc(hidden)]
241 #[allow(non_upper_case_globals)]
242 static $entry_ident: $crate::registry::AltrepRegistration =
243 $crate::registry::AltrepRegistration {
244 register: $reg_fn,
245 symbol: stringify!($reg_fn),
246 };
247 };
248 ($ty:ty, logical, materializing, $reg_fn:ident, $entry_ident:ident) => {
249 $crate::impl_altlogical_from_data!($ty, serialize);
250 #[doc(hidden)]
251 #[unsafe(no_mangle)]
252 pub extern "C-unwind" fn $reg_fn() {
253 <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
254 }
255 #[cfg_attr(
256 not(target_arch = "wasm32"),
257 $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
258 linkme(crate = $crate::linkme)
259 )]
260 #[doc(hidden)]
261 #[allow(non_upper_case_globals)]
262 static $entry_ident: $crate::registry::AltrepRegistration =
263 $crate::registry::AltrepRegistration {
264 register: $reg_fn,
265 symbol: stringify!($reg_fn),
266 };
267 };
268 ($ty:ty, raw, materializing, $reg_fn:ident, $entry_ident:ident) => {
269 $crate::impl_altraw_from_data!($ty, serialize);
270 #[doc(hidden)]
271 #[unsafe(no_mangle)]
272 pub extern "C-unwind" fn $reg_fn() {
273 <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
274 }
275 #[cfg_attr(
276 not(target_arch = "wasm32"),
277 $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
278 linkme(crate = $crate::linkme)
279 )]
280 #[doc(hidden)]
281 #[allow(non_upper_case_globals)]
282 static $entry_ident: $crate::registry::AltrepRegistration =
283 $crate::registry::AltrepRegistration {
284 register: $reg_fn,
285 symbol: stringify!($reg_fn),
286 };
287 };
288 ($ty:ty, string, materializing, $reg_fn:ident, $entry_ident:ident) => {
289 $crate::impl_altstring_from_data!($ty, serialize);
290 #[doc(hidden)]
291 #[unsafe(no_mangle)]
292 pub extern "C-unwind" fn $reg_fn() {
293 <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
294 }
295 #[cfg_attr(
296 not(target_arch = "wasm32"),
297 $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
298 linkme(crate = $crate::linkme)
299 )]
300 #[doc(hidden)]
301 #[allow(non_upper_case_globals)]
302 static $entry_ident: $crate::registry::AltrepRegistration =
303 $crate::registry::AltrepRegistration {
304 register: $reg_fn,
305 symbol: stringify!($reg_fn),
306 };
307 };
308 ($ty:ty, complex, materializing, $reg_fn:ident, $entry_ident:ident) => {
309 $crate::impl_altcomplex_from_data!($ty, serialize);
310 #[doc(hidden)]
311 #[unsafe(no_mangle)]
312 pub extern "C-unwind" fn $reg_fn() {
313 <$ty as $crate::altrep::RegisterAltrep>::get_or_init_class();
314 }
315 #[cfg_attr(
316 not(target_arch = "wasm32"),
317 $crate::linkme::distributed_slice($crate::registry::MX_ALTREP_REGISTRATIONS),
318 linkme(crate = $crate::linkme)
319 )]
320 #[doc(hidden)]
321 #[allow(non_upper_case_globals)]
322 static $entry_ident: $crate::registry::AltrepRegistration =
323 $crate::registry::AltrepRegistration {
324 register: $reg_fn,
325 symbol: stringify!($reg_fn),
326 };
327 };
328}
329
330impl crate::altrep_traits::Altrep for Vec<i32> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<i32> as crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<i32> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Vec<i32> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Vec<i32>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Vec<i32> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<Vec<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Vec<i32> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<Vec<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<i32> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<Vec<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Vec<i32> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<Vec<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<i32> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltInteger for Vec<i32> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <i32 as crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<Vec<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<i32> as
crate::altrep_data::AltIntegerData>::elt(data,
i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<i32>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<Vec<i32> as
crate::altrep_data::AltIntegerData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Vec<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<i32> as
crate::altrep_data::AltIntegerData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Vec<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<i32> as
crate::altrep_data::AltIntegerData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
const HAS_SUM: bool = true;
fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
match <Vec<i32> as
crate::altrep_data::AltIntegerData>::sum(data, narm) {
::core::option::Option::Some(s) => {
if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
crate::SEXP::scalar_integer(s as i32)
} else { crate::SEXP::scalar_real(s as f64) }
}
::core::option::Option::None => crate::SEXP::null(),
}
}
const HAS_MIN: bool = true;
fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<i32> as
crate::altrep_data::AltIntegerData>::min(data,
narm).map(|m|
crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
}
const HAS_MAX: bool = true;
fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<i32> as
crate::altrep_data::AltIntegerData>::max(data,
narm).map(|m|
crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
}
}
impl crate::altrep_data::InferBase for Vec<i32> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Int;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altinteger_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Int)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe { crate::altrep_bridge::install_base::<Vec<i32>>(cls) };
unsafe { crate::altrep_bridge::install_vec::<Vec<i32>>(cls) };
unsafe { crate::altrep_bridge::install_int::<Vec<i32>>(cls) };
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_i32() {
<Vec<i32> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_i32:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Vec_i32 };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Vec_i32,
symbol: "__mx_altrep_reg_builtin_Vec_i32",
}
};impl_builtin_altrep_family!(
340 Vec<i32>,
341 integer,
342 dataptr,
343 __mx_altrep_reg_builtin_Vec_i32,
344 __MX_ALTREP_REG_ENTRY_builtin_Vec_i32
345);
346impl crate::altrep_traits::Altrep for Vec<f64> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<f64> as crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<f64> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Vec<f64> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Vec<f64>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Vec<f64> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<Vec<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Vec<f64> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<Vec<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<f64> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<Vec<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Vec<f64> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<f64>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<Vec<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<f64> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltReal for Vec<f64> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> f64 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <f64 as crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<Vec<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<f64> as
crate::altrep_data::AltRealData>::elt(data, i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [f64]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<f64>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<Vec<f64> as
crate::altrep_data::AltRealData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Vec<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<f64> as
crate::altrep_data::AltRealData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Vec<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<f64> as
crate::altrep_data::AltRealData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
const HAS_SUM: bool = true;
fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<f64> as
crate::altrep_data::AltRealData>::sum(data,
narm).map(|s|
crate::SEXP::scalar_real(s)).unwrap_or(crate::SEXP::null())
}
const HAS_MIN: bool = true;
fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<f64> as
crate::altrep_data::AltRealData>::min(data,
narm).map(|m|
crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
}
const HAS_MAX: bool = true;
fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<f64> as
crate::altrep_data::AltRealData>::max(data,
narm).map(|m|
crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
}
}
impl crate::altrep_data::InferBase for Vec<f64> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Real;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altreal_class(class_name, pkg_name,
dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Real)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe { crate::altrep_bridge::install_base::<Vec<f64>>(cls) };
unsafe { crate::altrep_bridge::install_vec::<Vec<f64>>(cls) };
unsafe { crate::altrep_bridge::install_real::<Vec<f64>>(cls) };
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_f64() {
<Vec<f64> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_f64:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Vec_f64 };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Vec_f64,
symbol: "__mx_altrep_reg_builtin_Vec_f64",
}
};impl_builtin_altrep_family!(
347 Vec<f64>,
348 real,
349 dataptr,
350 __mx_altrep_reg_builtin_Vec_f64,
351 __MX_ALTREP_REG_ENTRY_builtin_Vec_f64
352);
353impl crate::altrep_traits::Altrep for Vec<crate::RLogical> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<crate::RLogical> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<crate::RLogical> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<crate::RLogical> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<crate::RLogical> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Vec<crate::RLogical> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Vec<crate::RLogical>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Vec<crate::RLogical> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<Vec<crate::RLogical> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Vec<crate::RLogical> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<Vec<crate::RLogical> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<crate::RLogical> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<Vec<crate::RLogical> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Vec<crate::RLogical> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<Vec<crate::RLogical> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<crate::RLogical> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltLogical for Vec<crate::RLogical> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <crate::RLogical as
crate::RNativeType>::elt(data2, i.max(0)).to_i32();
}
let data =
unsafe {
<Vec<crate::RLogical> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let i = i.max(0) as usize;
if let ::core::option::Option::Some(values) =
<Vec<crate::RLogical> as
crate::altrep_data::AltLogicalData>::as_r_slice(data) {
return values[i];
}
<Vec<crate::RLogical> as
crate::altrep_data::AltLogicalData>::elt(data, i).to_r_int()
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<i32>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<crate::RLogical> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<Vec<crate::RLogical> as
crate::altrep_data::AltLogicalData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Vec<crate::RLogical> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<crate::RLogical> as
crate::altrep_data::AltLogicalData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Vec<crate::RLogical> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<crate::RLogical> as
crate::altrep_data::AltLogicalData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
const HAS_SUM: bool = true;
fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<crate::RLogical> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
match <Vec<crate::RLogical> as
crate::altrep_data::AltLogicalData>::sum(data, narm) {
::core::option::Option::Some(s) => {
if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
crate::SEXP::scalar_integer(s as i32)
} else { crate::SEXP::scalar_real(s as f64) }
}
::core::option::Option::None => crate::SEXP::null(),
}
}
}
impl crate::altrep_data::InferBase for Vec<crate::RLogical> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Logical;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altlogical_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Logical)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<Vec<crate::RLogical>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<Vec<crate::RLogical>>(cls)
};
unsafe {
crate::altrep_bridge::install_lgl::<Vec<crate::RLogical>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_RLogical() {
<Vec<crate::RLogical> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_RLogical:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Vec_RLogical };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Vec_RLogical,
symbol: "__mx_altrep_reg_builtin_Vec_RLogical",
}
};impl_builtin_altrep_family!(
354 Vec<crate::RLogical>,
355 logical,
356 dataptr,
357 __mx_altrep_reg_builtin_Vec_RLogical,
358 __MX_ALTREP_REG_ENTRY_builtin_Vec_RLogical
359);
360impl crate::altrep_traits::Altrep for Vec<bool> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<bool> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<bool> as crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<bool> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<bool> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Vec<bool> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Vec<bool>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_data::AltrepDataptr<crate::RLogical> for Vec<bool> where {
fn dataptr(&mut self, _writable: bool)
-> ::core::option::Option<*mut crate::RLogical> {
::core::option::Option::None
}
}
impl crate::altrep_traits::AltVec for Vec<bool> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<Vec<bool> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Vec<bool> as
crate::altrep_data::AltrepDataptr<crate::RLogical>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<Vec<bool> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<bool> as
crate::altrep_data::AltrepDataptr<crate::RLogical>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<Vec<bool> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Vec<bool> as
crate::altrep_data::AltrepDataptr<crate::RLogical>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe {
crate::altrep_data::materialize_altrep_data2::<crate::RLogical>(x)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<Vec<bool> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<bool> as
crate::altrep_data::AltrepDataptr<crate::RLogical>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltLogical for Vec<bool> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <crate::RLogical as
crate::RNativeType>::elt(data2, i.max(0)).to_i32();
}
let data =
unsafe {
<Vec<bool> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let i = i.max(0) as usize;
if let ::core::option::Option::Some(values) =
<Vec<bool> as
crate::altrep_data::AltLogicalData>::as_r_slice(data) {
return values[i];
}
<Vec<bool> as
crate::altrep_data::AltLogicalData>::elt(data, i).to_r_int()
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<i32>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<bool> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<Vec<bool> as
crate::altrep_data::AltLogicalData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Vec<bool> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<bool> as
crate::altrep_data::AltLogicalData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Vec<bool> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<bool> as
crate::altrep_data::AltLogicalData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
const HAS_SUM: bool = true;
fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<bool> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
match <Vec<bool> as
crate::altrep_data::AltLogicalData>::sum(data, narm) {
::core::option::Option::Some(s) => {
if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
crate::SEXP::scalar_integer(s as i32)
} else { crate::SEXP::scalar_real(s as f64) }
}
::core::option::Option::None => crate::SEXP::null(),
}
}
}
impl crate::altrep_data::InferBase for Vec<bool> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Logical;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altlogical_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Logical)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe { crate::altrep_bridge::install_base::<Vec<bool>>(cls) };
unsafe { crate::altrep_bridge::install_vec::<Vec<bool>>(cls) };
unsafe { crate::altrep_bridge::install_lgl::<Vec<bool>>(cls) };
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_bool() {
<Vec<bool> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_bool:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Vec_bool };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Vec_bool,
symbol: "__mx_altrep_reg_builtin_Vec_bool",
}
};impl_builtin_altrep_family!(
361 Vec<bool>,
362 logical,
363 materializing,
364 __mx_altrep_reg_builtin_Vec_bool,
365 __MX_ALTREP_REG_ENTRY_builtin_Vec_bool
366);
367impl crate::altrep_traits::Altrep for Vec<u8> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<u8> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<u8> as crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<u8> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<u8> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Vec<u8> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Vec<u8>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Vec<u8> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<Vec<u8> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Vec<u8> as
crate::altrep_data::AltrepDataptr<u8>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<Vec<u8> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<u8> as
crate::altrep_data::AltrepDataptr<u8>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<Vec<u8> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Vec<u8> as
crate::altrep_data::AltrepDataptr<u8>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<u8>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<Vec<u8> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<u8> as
crate::altrep_data::AltrepDataptr<u8>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltRaw for Vec<u8> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> u8 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <u8 as crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<Vec<u8> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<u8> as
crate::altrep_data::AltRawData>::elt(data, i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [u8]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<u8>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<u8> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<Vec<u8> as
crate::altrep_data::AltRawData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
}
impl crate::altrep_data::InferBase for Vec<u8> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Raw;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altraw_class(class_name, pkg_name,
dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Raw)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe { crate::altrep_bridge::install_base::<Vec<u8>>(cls) };
unsafe { crate::altrep_bridge::install_vec::<Vec<u8>>(cls) };
unsafe { crate::altrep_bridge::install_raw::<Vec<u8>>(cls) };
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_u8() {
<Vec<u8> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_u8:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Vec_u8 };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Vec_u8,
symbol: "__mx_altrep_reg_builtin_Vec_u8",
}
};impl_builtin_altrep_family!(
368 Vec<u8>,
369 raw,
370 dataptr,
371 __mx_altrep_reg_builtin_Vec_u8,
372 __MX_ALTREP_REG_ENTRY_builtin_Vec_u8
373);
374impl crate::altrep_traits::Altrep for Vec<String> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<String> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<String> as crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<String> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<String> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Vec<String> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Vec<String>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Vec<String> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
crate::altrep_impl::altstring_dataptr::<Vec<String>>(x, writable)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
let _ = x;
::core::ptr::null()
}
}
impl crate::altrep_traits::AltString for Vec<String> where {
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
unsafe { crate::altrep_impl::altstring_elt::<Vec<String>>(x, i) }
}
const HAS_SET_ELT: bool = true;
fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
unsafe {
crate::altrep_impl::altstring_set_elt::<Vec<String>>(x, i, v)
}
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Vec<String> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<String> as
crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Vec<String> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<String> as
crate::altrep_data::AltStringData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
}
impl crate::altrep_data::InferBase for Vec<String> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altstring_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::String)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe { crate::altrep_bridge::install_base::<Vec<String>>(cls) };
unsafe { crate::altrep_bridge::install_vec::<Vec<String>>(cls) };
unsafe { crate::altrep_bridge::install_str::<Vec<String>>(cls) };
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_String() {
<Vec<String> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_String:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Vec_String };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Vec_String,
symbol: "__mx_altrep_reg_builtin_Vec_String",
}
};impl_builtin_altrep_family!(
375 Vec<String>,
376 string,
377 dataptr,
378 __mx_altrep_reg_builtin_Vec_String,
379 __MX_ALTREP_REG_ENTRY_builtin_Vec_String
380);
381impl crate::altrep_traits::Altrep for Vec<Option<String>> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<Option<String>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<String>> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<Option<String>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<String>> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Vec<Option<String>> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Vec<Option<String>>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Vec<Option<String>> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
crate::altrep_impl::altstring_dataptr::<Vec<Option<String>>>(x,
writable)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
let _ = x;
::core::ptr::null()
}
}
impl crate::altrep_traits::AltString for Vec<Option<String>> where {
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
unsafe {
crate::altrep_impl::altstring_elt::<Vec<Option<String>>>(x, i)
}
}
const HAS_SET_ELT: bool = true;
fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
unsafe {
crate::altrep_impl::altstring_set_elt::<Vec<Option<String>>>(x, i,
v)
}
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Vec<Option<String>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<String>> as
crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Vec<Option<String>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<String>> as
crate::altrep_data::AltStringData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
}
impl crate::altrep_data::InferBase for Vec<Option<String>> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altstring_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::String)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<Vec<Option<String>>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<Vec<Option<String>>>(cls)
};
unsafe {
crate::altrep_bridge::install_str::<Vec<Option<String>>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Option_String() {
<Vec<Option<String>> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_String:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Option_String };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Vec_Option_String,
symbol: "__mx_altrep_reg_builtin_Vec_Option_String",
}
};impl_builtin_altrep_family!(
382 Vec<Option<String>>,
383 string,
384 dataptr,
385 __mx_altrep_reg_builtin_Vec_Option_String,
386 __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_String
387);
388impl crate::altrep_traits::Altrep for Vec<std::borrow::Cow<'static, str>>
where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<std::borrow::Cow<'static, str>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<std::borrow::Cow<'static, str>> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<std::borrow::Cow<'static, str>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<std::borrow::Cow<'static, str>> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Vec<std::borrow::Cow<'static, str>> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Vec<std::borrow::Cow<'static,
str>>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Vec<std::borrow::Cow<'static, str>>
where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
crate::altrep_impl::altstring_dataptr::<Vec<std::borrow::Cow<'static,
str>>>(x, writable)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
let _ = x;
::core::ptr::null()
}
}
impl crate::altrep_traits::AltString for Vec<std::borrow::Cow<'static, str>>
where {
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
unsafe {
crate::altrep_impl::altstring_elt::<Vec<std::borrow::Cow<'static,
str>>>(x, i)
}
}
const HAS_SET_ELT: bool = true;
fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
unsafe {
crate::altrep_impl::altstring_set_elt::<Vec<std::borrow::Cow<'static,
str>>>(x, i, v)
}
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Vec<std::borrow::Cow<'static, str>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<std::borrow::Cow<'static, str>> as
crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Vec<std::borrow::Cow<'static, str>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<std::borrow::Cow<'static, str>> as
crate::altrep_data::AltStringData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
}
impl crate::altrep_data::InferBase for Vec<std::borrow::Cow<'static, str>>
where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altstring_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::String)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<Vec<std::borrow::Cow<'static,
str>>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<Vec<std::borrow::Cow<'static,
str>>>(cls)
};
unsafe {
crate::altrep_bridge::install_str::<Vec<std::borrow::Cow<'static,
str>>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Cow_str() {
<Vec<std::borrow::Cow<'static, str>> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Cow_str:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Cow_str };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Vec_Cow_str,
symbol: "__mx_altrep_reg_builtin_Vec_Cow_str",
}
};impl_builtin_altrep_family!(
392 Vec<std::borrow::Cow<'static, str>>,
393 string,
394 dataptr,
395 __mx_altrep_reg_builtin_Vec_Cow_str,
396 __MX_ALTREP_REG_ENTRY_builtin_Vec_Cow_str
397);
398impl crate::altrep_traits::Altrep for
Vec<Option<std::borrow::Cow<'static, str>>> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<Option<std::borrow::Cow<'static, str>>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<std::borrow::Cow<'static, str>>> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<Option<std::borrow::Cow<'static, str>>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<std::borrow::Cow<'static, str>>> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Vec<Option<std::borrow::Cow<'static, str>>> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Vec<Option<std::borrow::Cow<'static,
str>>>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for
Vec<Option<std::borrow::Cow<'static, str>>> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
crate::altrep_impl::altstring_dataptr::<Vec<Option<std::borrow::Cow<'static,
str>>>>(x, writable)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
let _ = x;
::core::ptr::null()
}
}
impl crate::altrep_traits::AltString for
Vec<Option<std::borrow::Cow<'static, str>>> where {
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
unsafe {
crate::altrep_impl::altstring_elt::<Vec<Option<std::borrow::Cow<'static,
str>>>>(x, i)
}
}
const HAS_SET_ELT: bool = true;
fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
unsafe {
crate::altrep_impl::altstring_set_elt::<Vec<Option<std::borrow::Cow<'static,
str>>>>(x, i, v)
}
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Vec<Option<std::borrow::Cow<'static, str>>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<std::borrow::Cow<'static, str>>> as
crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Vec<Option<std::borrow::Cow<'static, str>>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<std::borrow::Cow<'static, str>>> as
crate::altrep_data::AltStringData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
}
impl crate::altrep_data::InferBase for
Vec<Option<std::borrow::Cow<'static, str>>> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altstring_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::String)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<Vec<Option<std::borrow::Cow<'static,
str>>>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<Vec<Option<std::borrow::Cow<'static,
str>>>>(cls)
};
unsafe {
crate::altrep_bridge::install_str::<Vec<Option<std::borrow::Cow<'static,
str>>>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Option_Cow_str() {
<Vec<Option<std::borrow::Cow<'static, str>>> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Cow_str:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Cow_str };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Vec_Option_Cow_str,
symbol: "__mx_altrep_reg_builtin_Vec_Option_Cow_str",
}
};impl_builtin_altrep_family!(
399 Vec<Option<std::borrow::Cow<'static, str>>>,
400 string,
401 dataptr,
402 __mx_altrep_reg_builtin_Vec_Option_Cow_str,
403 __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Cow_str
404);
405impl crate::altrep_traits::Altrep for Vec<crate::Rcomplex> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<crate::Rcomplex> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<crate::Rcomplex> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<crate::Rcomplex> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<crate::Rcomplex> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Vec<crate::Rcomplex> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Vec<crate::Rcomplex>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Vec<crate::Rcomplex> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<Vec<crate::Rcomplex> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Vec<crate::Rcomplex> as
crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<Vec<crate::Rcomplex> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<crate::Rcomplex> as
crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<Vec<crate::Rcomplex> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Vec<crate::Rcomplex> as
crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe {
crate::altrep_data::materialize_altrep_data2::<crate::Rcomplex>(x)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<Vec<crate::Rcomplex> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<crate::Rcomplex> as
crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltComplex for Vec<crate::Rcomplex> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::Rcomplex {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <crate::Rcomplex as
crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<Vec<crate::Rcomplex> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<crate::Rcomplex> as
crate::altrep_data::AltComplexData>::elt(data,
i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [crate::Rcomplex])
-> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<crate::Rcomplex>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<crate::Rcomplex> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<Vec<crate::Rcomplex> as
crate::altrep_data::AltComplexData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
}
impl crate::altrep_data::InferBase for Vec<crate::Rcomplex> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Complex;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altcomplex_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Complex)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<Vec<crate::Rcomplex>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<Vec<crate::Rcomplex>>(cls)
};
unsafe {
crate::altrep_bridge::install_cplx::<Vec<crate::Rcomplex>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Rcomplex() {
<Vec<crate::Rcomplex> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Rcomplex:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Rcomplex };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Vec_Rcomplex,
symbol: "__mx_altrep_reg_builtin_Vec_Rcomplex",
}
};impl_builtin_altrep_family!(
406 Vec<crate::Rcomplex>,
407 complex,
408 dataptr,
409 __mx_altrep_reg_builtin_Vec_Rcomplex,
410 __MX_ALTREP_REG_ENTRY_builtin_Vec_Rcomplex
411);
412
413impl crate::altrep_traits::Altrep for std::ops::Range<i32> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<std::ops::Range<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i32> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::ops::Range<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i32> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<std::ops::Range<i32> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<std::ops::Range<i32>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_data::AltrepDataptr<i32> for std::ops::Range<i32> where {
fn dataptr(&mut self, _writable: bool)
-> ::core::option::Option<*mut i32> {
::core::option::Option::None
}
}
impl crate::altrep_traits::AltVec for std::ops::Range<i32> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<std::ops::Range<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::ops::Range<i32> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<std::ops::Range<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i32> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<std::ops::Range<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::ops::Range<i32> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<std::ops::Range<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i32> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltInteger for std::ops::Range<i32> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <i32 as crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<std::ops::Range<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i32> as
crate::altrep_data::AltIntegerData>::elt(data,
i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<i32>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<std::ops::Range<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<std::ops::Range<i32> as
crate::altrep_data::AltIntegerData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<std::ops::Range<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i32> as
crate::altrep_data::AltIntegerData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<std::ops::Range<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i32> as
crate::altrep_data::AltIntegerData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
const HAS_SUM: bool = true;
fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::ops::Range<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
match <std::ops::Range<i32> as
crate::altrep_data::AltIntegerData>::sum(data, narm) {
::core::option::Option::Some(s) => {
if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
crate::SEXP::scalar_integer(s as i32)
} else { crate::SEXP::scalar_real(s as f64) }
}
::core::option::Option::None => crate::SEXP::null(),
}
}
const HAS_MIN: bool = true;
fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::ops::Range<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i32> as
crate::altrep_data::AltIntegerData>::min(data,
narm).map(|m|
crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
}
const HAS_MAX: bool = true;
fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::ops::Range<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i32> as
crate::altrep_data::AltIntegerData>::max(data,
narm).map(|m|
crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
}
}
impl crate::altrep_data::InferBase for std::ops::Range<i32> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Int;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altinteger_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Int)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<std::ops::Range<i32>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<std::ops::Range<i32>>(cls)
};
unsafe {
crate::altrep_bridge::install_int::<std::ops::Range<i32>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Range_i32() {
<std::ops::Range<i32> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Range_i32:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Range_i32 };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Range_i32,
symbol: "__mx_altrep_reg_builtin_Range_i32",
}
};impl_builtin_altrep_family!(
415 std::ops::Range<i32>,
416 integer,
417 materializing,
418 __mx_altrep_reg_builtin_Range_i32,
419 __MX_ALTREP_REG_ENTRY_builtin_Range_i32
420);
421impl crate::altrep_traits::Altrep for std::ops::Range<i64> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<std::ops::Range<i64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i64> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::ops::Range<i64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i64> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<std::ops::Range<i64> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<std::ops::Range<i64>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_data::AltrepDataptr<i32> for std::ops::Range<i64> where {
fn dataptr(&mut self, _writable: bool)
-> ::core::option::Option<*mut i32> {
::core::option::Option::None
}
}
impl crate::altrep_traits::AltVec for std::ops::Range<i64> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<std::ops::Range<i64> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::ops::Range<i64> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<std::ops::Range<i64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i64> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<std::ops::Range<i64> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::ops::Range<i64> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<std::ops::Range<i64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i64> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltInteger for std::ops::Range<i64> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <i32 as crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<std::ops::Range<i64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i64> as
crate::altrep_data::AltIntegerData>::elt(data,
i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<i32>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<std::ops::Range<i64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<std::ops::Range<i64> as
crate::altrep_data::AltIntegerData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<std::ops::Range<i64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i64> as
crate::altrep_data::AltIntegerData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<std::ops::Range<i64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i64> as
crate::altrep_data::AltIntegerData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
const HAS_SUM: bool = true;
fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::ops::Range<i64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
match <std::ops::Range<i64> as
crate::altrep_data::AltIntegerData>::sum(data, narm) {
::core::option::Option::Some(s) => {
if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
crate::SEXP::scalar_integer(s as i32)
} else { crate::SEXP::scalar_real(s as f64) }
}
::core::option::Option::None => crate::SEXP::null(),
}
}
const HAS_MIN: bool = true;
fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::ops::Range<i64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i64> as
crate::altrep_data::AltIntegerData>::min(data,
narm).map(|m|
crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
}
const HAS_MAX: bool = true;
fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::ops::Range<i64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<i64> as
crate::altrep_data::AltIntegerData>::max(data,
narm).map(|m|
crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
}
}
impl crate::altrep_data::InferBase for std::ops::Range<i64> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Int;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altinteger_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Int)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<std::ops::Range<i64>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<std::ops::Range<i64>>(cls)
};
unsafe {
crate::altrep_bridge::install_int::<std::ops::Range<i64>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Range_i64() {
<std::ops::Range<i64> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Range_i64:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Range_i64 };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Range_i64,
symbol: "__mx_altrep_reg_builtin_Range_i64",
}
};impl_builtin_altrep_family!(
422 std::ops::Range<i64>,
423 integer,
424 materializing,
425 __mx_altrep_reg_builtin_Range_i64,
426 __MX_ALTREP_REG_ENTRY_builtin_Range_i64
427);
428impl crate::altrep_traits::Altrep for std::ops::Range<f64> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<std::ops::Range<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<f64> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::ops::Range<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<f64> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<std::ops::Range<f64> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<std::ops::Range<f64>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_data::AltrepDataptr<f64> for std::ops::Range<f64> where {
fn dataptr(&mut self, _writable: bool)
-> ::core::option::Option<*mut f64> {
::core::option::Option::None
}
}
impl crate::altrep_traits::AltVec for std::ops::Range<f64> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<std::ops::Range<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::ops::Range<f64> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<std::ops::Range<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<f64> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<std::ops::Range<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::ops::Range<f64> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<f64>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<std::ops::Range<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<f64> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltReal for std::ops::Range<f64> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> f64 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <f64 as crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<std::ops::Range<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<f64> as
crate::altrep_data::AltRealData>::elt(data, i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [f64]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<f64>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<std::ops::Range<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<std::ops::Range<f64> as
crate::altrep_data::AltRealData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<std::ops::Range<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<f64> as
crate::altrep_data::AltRealData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<std::ops::Range<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<f64> as
crate::altrep_data::AltRealData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
const HAS_SUM: bool = true;
fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::ops::Range<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<f64> as
crate::altrep_data::AltRealData>::sum(data,
narm).map(|s|
crate::SEXP::scalar_real(s)).unwrap_or(crate::SEXP::null())
}
const HAS_MIN: bool = true;
fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::ops::Range<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<f64> as
crate::altrep_data::AltRealData>::min(data,
narm).map(|m|
crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
}
const HAS_MAX: bool = true;
fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::ops::Range<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::ops::Range<f64> as
crate::altrep_data::AltRealData>::max(data,
narm).map(|m|
crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
}
}
impl crate::altrep_data::InferBase for std::ops::Range<f64> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Real;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altreal_class(class_name, pkg_name,
dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Real)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<std::ops::Range<f64>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<std::ops::Range<f64>>(cls)
};
unsafe {
crate::altrep_bridge::install_real::<std::ops::Range<f64>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Range_f64() {
<std::ops::Range<f64> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Range_f64:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Range_f64 };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Range_f64,
symbol: "__mx_altrep_reg_builtin_Range_f64",
}
};impl_builtin_altrep_family!(
429 std::ops::Range<f64>,
430 real,
431 materializing,
432 __mx_altrep_reg_builtin_Range_f64,
433 __MX_ALTREP_REG_ENTRY_builtin_Range_f64
434);
435impl crate::altrep_traits::Altrep for Box<[i32]> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Box<[i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[i32]> as crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Box<[i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[i32]> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Box<[i32]> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Box<[i32]>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Box<[i32]> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<Box<[i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Box<[i32]> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<Box<[i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[i32]> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<Box<[i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Box<[i32]> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<Box<[i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[i32]> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltInteger for Box<[i32]> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <i32 as crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<Box<[i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[i32]> as
crate::altrep_data::AltIntegerData>::elt(data,
i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<i32>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<Box<[i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<Box<[i32]> as
crate::altrep_data::AltIntegerData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Box<[i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[i32]> as
crate::altrep_data::AltIntegerData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Box<[i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[i32]> as
crate::altrep_data::AltIntegerData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
const HAS_SUM: bool = true;
fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Box<[i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
match <Box<[i32]> as
crate::altrep_data::AltIntegerData>::sum(data, narm) {
::core::option::Option::Some(s) => {
if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
crate::SEXP::scalar_integer(s as i32)
} else { crate::SEXP::scalar_real(s as f64) }
}
::core::option::Option::None => crate::SEXP::null(),
}
}
const HAS_MIN: bool = true;
fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Box<[i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[i32]> as
crate::altrep_data::AltIntegerData>::min(data,
narm).map(|m|
crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
}
const HAS_MAX: bool = true;
fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Box<[i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[i32]> as
crate::altrep_data::AltIntegerData>::max(data,
narm).map(|m|
crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
}
}
impl crate::altrep_data::InferBase for Box<[i32]> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Int;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altinteger_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Int)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe { crate::altrep_bridge::install_base::<Box<[i32]>>(cls) };
unsafe { crate::altrep_bridge::install_vec::<Box<[i32]>>(cls) };
unsafe { crate::altrep_bridge::install_int::<Box<[i32]>>(cls) };
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Box_i32() {
<Box<[i32]> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Box_i32:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Box_i32 };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Box_i32,
symbol: "__mx_altrep_reg_builtin_Box_i32",
}
};impl_builtin_altrep_family!(
444 Box<[i32]>,
445 integer,
446 dataptr,
447 __mx_altrep_reg_builtin_Box_i32,
448 __MX_ALTREP_REG_ENTRY_builtin_Box_i32
449);
450impl crate::altrep_traits::Altrep for Box<[f64]> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Box<[f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[f64]> as crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Box<[f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[f64]> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Box<[f64]> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Box<[f64]>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Box<[f64]> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<Box<[f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Box<[f64]> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<Box<[f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[f64]> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<Box<[f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Box<[f64]> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<f64>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<Box<[f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[f64]> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltReal for Box<[f64]> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> f64 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <f64 as crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<Box<[f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[f64]> as
crate::altrep_data::AltRealData>::elt(data, i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [f64]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<f64>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<Box<[f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<Box<[f64]> as
crate::altrep_data::AltRealData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Box<[f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[f64]> as
crate::altrep_data::AltRealData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Box<[f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[f64]> as
crate::altrep_data::AltRealData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
const HAS_SUM: bool = true;
fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Box<[f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[f64]> as
crate::altrep_data::AltRealData>::sum(data,
narm).map(|s|
crate::SEXP::scalar_real(s)).unwrap_or(crate::SEXP::null())
}
const HAS_MIN: bool = true;
fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Box<[f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[f64]> as
crate::altrep_data::AltRealData>::min(data,
narm).map(|m|
crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
}
const HAS_MAX: bool = true;
fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Box<[f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[f64]> as
crate::altrep_data::AltRealData>::max(data,
narm).map(|m|
crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
}
}
impl crate::altrep_data::InferBase for Box<[f64]> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Real;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altreal_class(class_name, pkg_name,
dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Real)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe { crate::altrep_bridge::install_base::<Box<[f64]>>(cls) };
unsafe { crate::altrep_bridge::install_vec::<Box<[f64]>>(cls) };
unsafe { crate::altrep_bridge::install_real::<Box<[f64]>>(cls) };
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Box_f64() {
<Box<[f64]> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Box_f64:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Box_f64 };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Box_f64,
symbol: "__mx_altrep_reg_builtin_Box_f64",
}
};impl_builtin_altrep_family!(
451 Box<[f64]>,
452 real,
453 dataptr,
454 __mx_altrep_reg_builtin_Box_f64,
455 __MX_ALTREP_REG_ENTRY_builtin_Box_f64
456);
457impl crate::altrep_traits::Altrep for Box<[crate::RLogical]> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Box<[crate::RLogical]>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Box<[crate::RLogical]> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltLogical for Box<[crate::RLogical]> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <crate::RLogical as
crate::RNativeType>::elt(data2, i.max(0)).to_i32();
}
let data =
unsafe {
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let i = i.max(0) as usize;
if let ::core::option::Option::Some(values) =
<Box<[crate::RLogical]> as
crate::altrep_data::AltLogicalData>::as_r_slice(data) {
return values[i];
}
<Box<[crate::RLogical]> as
crate::altrep_data::AltLogicalData>::elt(data, i).to_r_int()
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<i32>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<Box<[crate::RLogical]> as
crate::altrep_data::AltLogicalData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[crate::RLogical]> as
crate::altrep_data::AltLogicalData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[crate::RLogical]> as
crate::altrep_data::AltLogicalData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
const HAS_SUM: bool = true;
fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Box<[crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
match <Box<[crate::RLogical]> as
crate::altrep_data::AltLogicalData>::sum(data, narm) {
::core::option::Option::Some(s) => {
if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
crate::SEXP::scalar_integer(s as i32)
} else { crate::SEXP::scalar_real(s as f64) }
}
::core::option::Option::None => crate::SEXP::null(),
}
}
}
impl crate::altrep_data::InferBase for Box<[crate::RLogical]> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Logical;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altlogical_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Logical)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<Box<[crate::RLogical]>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<Box<[crate::RLogical]>>(cls)
};
unsafe {
crate::altrep_bridge::install_lgl::<Box<[crate::RLogical]>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Box_RLogical() {
<Box<[crate::RLogical]> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Box_RLogical:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Box_RLogical };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Box_RLogical,
symbol: "__mx_altrep_reg_builtin_Box_RLogical",
}
};impl_builtin_altrep_family!(
458 Box<[crate::RLogical]>,
459 logical,
460 dataptr,
461 __mx_altrep_reg_builtin_Box_RLogical,
462 __MX_ALTREP_REG_ENTRY_builtin_Box_RLogical
463);
464impl crate::altrep_traits::Altrep for Box<[bool]> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Box<[bool]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[bool]> as crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Box<[bool]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[bool]> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Box<[bool]> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Box<[bool]>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_data::AltrepDataptr<crate::RLogical> for Box<[bool]> where
{
fn dataptr(&mut self, _writable: bool)
-> ::core::option::Option<*mut crate::RLogical> {
::core::option::Option::None
}
}
impl crate::altrep_traits::AltVec for Box<[bool]> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<Box<[bool]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Box<[bool]> as
crate::altrep_data::AltrepDataptr<crate::RLogical>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<Box<[bool]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[bool]> as
crate::altrep_data::AltrepDataptr<crate::RLogical>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<Box<[bool]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Box<[bool]> as
crate::altrep_data::AltrepDataptr<crate::RLogical>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe {
crate::altrep_data::materialize_altrep_data2::<crate::RLogical>(x)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<Box<[bool]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[bool]> as
crate::altrep_data::AltrepDataptr<crate::RLogical>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltLogical for Box<[bool]> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <crate::RLogical as
crate::RNativeType>::elt(data2, i.max(0)).to_i32();
}
let data =
unsafe {
<Box<[bool]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let i = i.max(0) as usize;
if let ::core::option::Option::Some(values) =
<Box<[bool]> as
crate::altrep_data::AltLogicalData>::as_r_slice(data) {
return values[i];
}
<Box<[bool]> as
crate::altrep_data::AltLogicalData>::elt(data, i).to_r_int()
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<i32>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<Box<[bool]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<Box<[bool]> as
crate::altrep_data::AltLogicalData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Box<[bool]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[bool]> as
crate::altrep_data::AltLogicalData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Box<[bool]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[bool]> as
crate::altrep_data::AltLogicalData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
const HAS_SUM: bool = true;
fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Box<[bool]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
match <Box<[bool]> as
crate::altrep_data::AltLogicalData>::sum(data, narm) {
::core::option::Option::Some(s) => {
if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
crate::SEXP::scalar_integer(s as i32)
} else { crate::SEXP::scalar_real(s as f64) }
}
::core::option::Option::None => crate::SEXP::null(),
}
}
}
impl crate::altrep_data::InferBase for Box<[bool]> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Logical;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altlogical_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Logical)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe { crate::altrep_bridge::install_base::<Box<[bool]>>(cls) };
unsafe { crate::altrep_bridge::install_vec::<Box<[bool]>>(cls) };
unsafe { crate::altrep_bridge::install_lgl::<Box<[bool]>>(cls) };
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Box_bool() {
<Box<[bool]> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Box_bool:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Box_bool };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Box_bool,
symbol: "__mx_altrep_reg_builtin_Box_bool",
}
};impl_builtin_altrep_family!(
465 Box<[bool]>,
466 logical,
467 materializing,
468 __mx_altrep_reg_builtin_Box_bool,
469 __MX_ALTREP_REG_ENTRY_builtin_Box_bool
470);
471impl crate::altrep_traits::Altrep for Box<[u8]> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Box<[u8]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[u8]> as crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Box<[u8]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[u8]> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Box<[u8]> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Box<[u8]>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Box<[u8]> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<Box<[u8]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Box<[u8]> as
crate::altrep_data::AltrepDataptr<u8>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<Box<[u8]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[u8]> as
crate::altrep_data::AltrepDataptr<u8>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<Box<[u8]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Box<[u8]> as
crate::altrep_data::AltrepDataptr<u8>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<u8>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<Box<[u8]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[u8]> as
crate::altrep_data::AltrepDataptr<u8>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltRaw for Box<[u8]> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> u8 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <u8 as crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<Box<[u8]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[u8]> as
crate::altrep_data::AltRawData>::elt(data, i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [u8]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<u8>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<Box<[u8]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<Box<[u8]> as
crate::altrep_data::AltRawData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
}
impl crate::altrep_data::InferBase for Box<[u8]> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Raw;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altraw_class(class_name, pkg_name,
dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Raw)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe { crate::altrep_bridge::install_base::<Box<[u8]>>(cls) };
unsafe { crate::altrep_bridge::install_vec::<Box<[u8]>>(cls) };
unsafe { crate::altrep_bridge::install_raw::<Box<[u8]>>(cls) };
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Box_u8() {
<Box<[u8]> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Box_u8:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Box_u8 };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Box_u8,
symbol: "__mx_altrep_reg_builtin_Box_u8",
}
};impl_builtin_altrep_family!(
472 Box<[u8]>,
473 raw,
474 dataptr,
475 __mx_altrep_reg_builtin_Box_u8,
476 __MX_ALTREP_REG_ENTRY_builtin_Box_u8
477);
478impl crate::altrep_traits::Altrep for Box<[String]> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Box<[String]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[String]> as crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Box<[String]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[String]> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Box<[String]> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Box<[String]>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Box<[String]> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
crate::altrep_impl::altstring_dataptr::<Box<[String]>>(x,
writable)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
let _ = x;
::core::ptr::null()
}
}
impl crate::altrep_traits::AltString for Box<[String]> where {
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
unsafe { crate::altrep_impl::altstring_elt::<Box<[String]>>(x, i) }
}
const HAS_SET_ELT: bool = true;
fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
unsafe {
crate::altrep_impl::altstring_set_elt::<Box<[String]>>(x, i, v)
}
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Box<[String]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[String]> as
crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Box<[String]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[String]> as
crate::altrep_data::AltStringData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
}
impl crate::altrep_data::InferBase for Box<[String]> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altstring_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::String)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe { crate::altrep_bridge::install_base::<Box<[String]>>(cls) };
unsafe { crate::altrep_bridge::install_vec::<Box<[String]>>(cls) };
unsafe { crate::altrep_bridge::install_str::<Box<[String]>>(cls) };
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Box_String() {
<Box<[String]> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Box_String:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Box_String };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Box_String,
symbol: "__mx_altrep_reg_builtin_Box_String",
}
};impl_builtin_altrep_family!(
479 Box<[String]>,
480 string,
481 dataptr,
482 __mx_altrep_reg_builtin_Box_String,
483 __MX_ALTREP_REG_ENTRY_builtin_Box_String
484);
485impl crate::altrep_traits::Altrep for Box<[crate::Rcomplex]> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Box<[crate::Rcomplex]>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Box<[crate::Rcomplex]> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe {
crate::altrep_data::materialize_altrep_data2::<crate::Rcomplex>(x)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltComplex for Box<[crate::Rcomplex]> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::Rcomplex {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <crate::Rcomplex as
crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltComplexData>::elt(data,
i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [crate::Rcomplex])
-> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<crate::Rcomplex>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<Box<[crate::Rcomplex]> as
crate::altrep_data::AltComplexData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
}
impl crate::altrep_data::InferBase for Box<[crate::Rcomplex]> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Complex;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altcomplex_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Complex)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<Box<[crate::Rcomplex]>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<Box<[crate::Rcomplex]>>(cls)
};
unsafe {
crate::altrep_bridge::install_cplx::<Box<[crate::Rcomplex]>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Box_Rcomplex() {
<Box<[crate::Rcomplex]> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Box_Rcomplex:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Box_Rcomplex };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Box_Rcomplex,
symbol: "__mx_altrep_reg_builtin_Box_Rcomplex",
}
};impl_builtin_altrep_family!(
486 Box<[crate::Rcomplex]>,
487 complex,
488 dataptr,
489 __mx_altrep_reg_builtin_Box_Rcomplex,
490 __MX_ALTREP_REG_ENTRY_builtin_Box_Rcomplex
491);
492
493impl crate::altrep_traits::Altrep for
std::borrow::Cow<'static, [crate::RLogical]> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<std::borrow::Cow<'static,
[crate::RLogical]>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for
std::borrow::Cow<'static, [crate::RLogical]> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltLogical for
std::borrow::Cow<'static, [crate::RLogical]> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <crate::RLogical as
crate::RNativeType>::elt(data2, i.max(0)).to_i32();
}
let data =
unsafe {
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let i = i.max(0) as usize;
if let ::core::option::Option::Some(values) =
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltLogicalData>::as_r_slice(data) {
return values[i];
}
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltLogicalData>::elt(data, i).to_r_int()
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<i32>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltLogicalData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltLogicalData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltLogicalData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
const HAS_SUM: bool = true;
fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
match <std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::AltLogicalData>::sum(data, narm) {
::core::option::Option::Some(s) => {
if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
crate::SEXP::scalar_integer(s as i32)
} else { crate::SEXP::scalar_real(s as f64) }
}
::core::option::Option::None => crate::SEXP::null(),
}
}
}
impl crate::altrep_data::InferBase for
std::borrow::Cow<'static, [crate::RLogical]> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Logical;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altlogical_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Logical)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<std::borrow::Cow<'static,
[crate::RLogical]>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<std::borrow::Cow<'static,
[crate::RLogical]>>(cls)
};
unsafe {
crate::altrep_bridge::install_lgl::<std::borrow::Cow<'static,
[crate::RLogical]>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Cow_RLogical() {
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Cow_RLogical:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Cow_RLogical };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Cow_RLogical,
symbol: "__mx_altrep_reg_builtin_Cow_RLogical",
}
};impl_builtin_altrep_family!(
496 std::borrow::Cow<'static, [crate::RLogical]>,
497 logical,
498 dataptr,
499 __mx_altrep_reg_builtin_Cow_RLogical,
500 __MX_ALTREP_REG_ENTRY_builtin_Cow_RLogical
501);
502impl crate::altrep_traits::Altrep for std::borrow::Cow<'static, [i32]> where
{
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<std::borrow::Cow<'static,
[i32]>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for std::borrow::Cow<'static, [i32]> where
{
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltInteger for std::borrow::Cow<'static, [i32]>
where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <i32 as crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltIntegerData>::elt(data,
i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<i32>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltIntegerData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltIntegerData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltIntegerData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
const HAS_SUM: bool = true;
fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
match <std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltIntegerData>::sum(data, narm) {
::core::option::Option::Some(s) => {
if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
crate::SEXP::scalar_integer(s as i32)
} else { crate::SEXP::scalar_real(s as f64) }
}
::core::option::Option::None => crate::SEXP::null(),
}
}
const HAS_MIN: bool = true;
fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltIntegerData>::min(data,
narm).map(|m|
crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
}
const HAS_MAX: bool = true;
fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::AltIntegerData>::max(data,
narm).map(|m|
crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
}
}
impl crate::altrep_data::InferBase for std::borrow::Cow<'static, [i32]> where
{
const BASE: crate::altrep::RBase = crate::altrep::RBase::Int;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altinteger_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Int)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<std::borrow::Cow<'static,
[i32]>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<std::borrow::Cow<'static,
[i32]>>(cls)
};
unsafe {
crate::altrep_bridge::install_int::<std::borrow::Cow<'static,
[i32]>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Cow_i32() {
<std::borrow::Cow<'static, [i32]> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Cow_i32:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Cow_i32 };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Cow_i32,
symbol: "__mx_altrep_reg_builtin_Cow_i32",
}
};impl_builtin_altrep_family!(
503 std::borrow::Cow<'static, [i32]>,
504 integer,
505 dataptr,
506 __mx_altrep_reg_builtin_Cow_i32,
507 __MX_ALTREP_REG_ENTRY_builtin_Cow_i32
508);
509impl crate::altrep_traits::Altrep for std::borrow::Cow<'static, [f64]> where
{
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<std::borrow::Cow<'static,
[f64]>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for std::borrow::Cow<'static, [f64]> where
{
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<f64>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltReal for std::borrow::Cow<'static, [f64]> where
{
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> f64 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <f64 as crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltRealData>::elt(data, i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [f64]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<f64>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltRealData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltRealData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltRealData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
const HAS_SUM: bool = true;
fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltRealData>::sum(data,
narm).map(|s|
crate::SEXP::scalar_real(s)).unwrap_or(crate::SEXP::null())
}
const HAS_MIN: bool = true;
fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltRealData>::min(data,
narm).map(|m|
crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
}
const HAS_MAX: bool = true;
fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::AltRealData>::max(data,
narm).map(|m|
crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
}
}
impl crate::altrep_data::InferBase for std::borrow::Cow<'static, [f64]> where
{
const BASE: crate::altrep::RBase = crate::altrep::RBase::Real;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altreal_class(class_name, pkg_name,
dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Real)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<std::borrow::Cow<'static,
[f64]>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<std::borrow::Cow<'static,
[f64]>>(cls)
};
unsafe {
crate::altrep_bridge::install_real::<std::borrow::Cow<'static,
[f64]>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Cow_f64() {
<std::borrow::Cow<'static, [f64]> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Cow_f64:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Cow_f64 };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Cow_f64,
symbol: "__mx_altrep_reg_builtin_Cow_f64",
}
};impl_builtin_altrep_family!(
510 std::borrow::Cow<'static, [f64]>,
511 real,
512 dataptr,
513 __mx_altrep_reg_builtin_Cow_f64,
514 __MX_ALTREP_REG_ENTRY_builtin_Cow_f64
515);
516impl crate::altrep_traits::Altrep for std::borrow::Cow<'static, [u8]> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<std::borrow::Cow<'static,
[u8]>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for std::borrow::Cow<'static, [u8]> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltrepDataptr<u8>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltrepDataptr<u8>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltrepDataptr<u8>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<u8>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltrepDataptr<u8>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltRaw for std::borrow::Cow<'static, [u8]> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> u8 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <u8 as crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltRawData>::elt(data, i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [u8]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<u8>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::AltRawData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
}
impl crate::altrep_data::InferBase for std::borrow::Cow<'static, [u8]> where
{
const BASE: crate::altrep::RBase = crate::altrep::RBase::Raw;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altraw_class(class_name, pkg_name,
dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Raw)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<std::borrow::Cow<'static,
[u8]>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<std::borrow::Cow<'static,
[u8]>>(cls)
};
unsafe {
crate::altrep_bridge::install_raw::<std::borrow::Cow<'static,
[u8]>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Cow_u8() {
<std::borrow::Cow<'static, [u8]> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Cow_u8:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Cow_u8 };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Cow_u8,
symbol: "__mx_altrep_reg_builtin_Cow_u8",
}
};impl_builtin_altrep_family!(
517 std::borrow::Cow<'static, [u8]>,
518 raw,
519 dataptr,
520 __mx_altrep_reg_builtin_Cow_u8,
521 __MX_ALTREP_REG_ENTRY_builtin_Cow_u8
522);
523impl crate::altrep_traits::Altrep for
std::borrow::Cow<'static, [crate::Rcomplex]> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<std::borrow::Cow<'static,
[crate::Rcomplex]>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for
std::borrow::Cow<'static, [crate::Rcomplex]> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe {
crate::altrep_data::materialize_altrep_data2::<crate::Rcomplex>(x)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltComplex for
std::borrow::Cow<'static, [crate::Rcomplex]> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::Rcomplex {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <crate::Rcomplex as
crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltComplexData>::elt(data,
i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [crate::Rcomplex])
-> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<crate::Rcomplex>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::AltComplexData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
}
impl crate::altrep_data::InferBase for
std::borrow::Cow<'static, [crate::Rcomplex]> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Complex;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altcomplex_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Complex)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<std::borrow::Cow<'static,
[crate::Rcomplex]>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<std::borrow::Cow<'static,
[crate::Rcomplex]>>(cls)
};
unsafe {
crate::altrep_bridge::install_cplx::<std::borrow::Cow<'static,
[crate::Rcomplex]>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Cow_Rcomplex() {
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Cow_Rcomplex:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Cow_Rcomplex };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Cow_Rcomplex,
symbol: "__mx_altrep_reg_builtin_Cow_Rcomplex",
}
};impl_builtin_altrep_family!(
524 std::borrow::Cow<'static, [crate::Rcomplex]>,
525 complex,
526 dataptr,
527 __mx_altrep_reg_builtin_Cow_Rcomplex,
528 __MX_ALTREP_REG_ENTRY_builtin_Cow_Rcomplex
529);
530
531use crate::altrep::RegisterAltrep;
547
548macro_rules! impl_register_altrep_builtin {
550 ($ty:ty, $class_name:expr) => {
551 impl RegisterAltrep for $ty {
552 fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
553 use std::sync::OnceLock;
554 static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> = OnceLock::new();
555 *CLASS.get_or_init(|| {
556 const CLASS_NAME: &[u8] = concat!($class_name, "\0").as_bytes();
558 let cls = unsafe {
559 <$ty as crate::altrep_data::InferBase>::make_class(
560 CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
561 crate::AltrepPkgName::as_ptr(),
562 )
563 };
564 unsafe {
565 <$ty as crate::altrep_data::InferBase>::install_methods(cls);
566 }
567 cls
568 })
569 }
570 }
571 };
572}
573
574pub(super) use impl_register_altrep_builtin;
575
576impl RegisterAltrep for Vec<i32> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Vec_i32\u{0}".as_bytes();
let cls =
unsafe {
<Vec<i32> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Vec<i32> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Vec<i32>, "Vec_i32");
578impl RegisterAltrep for Vec<f64> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Vec_f64\u{0}".as_bytes();
let cls =
unsafe {
<Vec<f64> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Vec<f64> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Vec<f64>, "Vec_f64");
579impl RegisterAltrep for Vec<crate::RLogical> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Vec_RLogical\u{0}".as_bytes();
let cls =
unsafe {
<Vec<crate::RLogical> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Vec<crate::RLogical> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Vec<crate::RLogical>, "Vec_RLogical");
580impl RegisterAltrep for Vec<bool> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Vec_bool\u{0}".as_bytes();
let cls =
unsafe {
<Vec<bool> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Vec<bool> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Vec<bool>, "Vec_bool");
581impl RegisterAltrep for Vec<u8> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Vec_u8\u{0}".as_bytes();
let cls =
unsafe {
<Vec<u8> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Vec<u8> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Vec<u8>, "Vec_u8");
582impl RegisterAltrep for Vec<String> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Vec_String\u{0}".as_bytes();
let cls =
unsafe {
<Vec<String> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Vec<String> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Vec<String>, "Vec_String");
583impl RegisterAltrep for Vec<Option<String>> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] =
"Vec_Option_String\u{0}".as_bytes();
let cls =
unsafe {
<Vec<Option<String>> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Vec<Option<String>> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Vec<Option<String>>, "Vec_Option_String");
584impl RegisterAltrep for Vec<crate::Rcomplex> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Vec_Rcomplex\u{0}".as_bytes();
let cls =
unsafe {
<Vec<crate::Rcomplex> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Vec<crate::Rcomplex> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Vec<crate::Rcomplex>, "Vec_Rcomplex");
585
586impl RegisterAltrep for std::ops::Range<i32> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Range_i32\u{0}".as_bytes();
let cls =
unsafe {
<std::ops::Range<i32> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<std::ops::Range<i32> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(std::ops::Range<i32>, "Range_i32");
588impl RegisterAltrep for std::ops::Range<i64> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Range_i64\u{0}".as_bytes();
let cls =
unsafe {
<std::ops::Range<i64> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<std::ops::Range<i64> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(std::ops::Range<i64>, "Range_i64");
589impl RegisterAltrep for std::ops::Range<f64> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Range_f64\u{0}".as_bytes();
let cls =
unsafe {
<std::ops::Range<f64> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<std::ops::Range<f64> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(std::ops::Range<f64>, "Range_f64");
590
591impl RegisterAltrep for Box<[i32]> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Box_i32\u{0}".as_bytes();
let cls =
unsafe {
<Box<[i32]> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Box<[i32]> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Box<[i32]>, "Box_i32");
593impl RegisterAltrep for Box<[f64]> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Box_f64\u{0}".as_bytes();
let cls =
unsafe {
<Box<[f64]> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Box<[f64]> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Box<[f64]>, "Box_f64");
594impl RegisterAltrep for Box<[crate::RLogical]> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Box_RLogical\u{0}".as_bytes();
let cls =
unsafe {
<Box<[crate::RLogical]> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Box<[crate::RLogical]> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Box<[crate::RLogical]>, "Box_RLogical");
595impl RegisterAltrep for Box<[bool]> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Box_bool\u{0}".as_bytes();
let cls =
unsafe {
<Box<[bool]> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Box<[bool]> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Box<[bool]>, "Box_bool");
596impl RegisterAltrep for Box<[u8]> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Box_u8\u{0}".as_bytes();
let cls =
unsafe {
<Box<[u8]> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Box<[u8]> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Box<[u8]>, "Box_u8");
597impl RegisterAltrep for Box<[String]> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Box_String\u{0}".as_bytes();
let cls =
unsafe {
<Box<[String]> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Box<[String]> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Box<[String]>, "Box_String");
598impl RegisterAltrep for Box<[crate::Rcomplex]> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Box_Rcomplex\u{0}".as_bytes();
let cls =
unsafe {
<Box<[crate::Rcomplex]> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Box<[crate::Rcomplex]> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Box<[crate::Rcomplex]>, "Box_Rcomplex");
599
600impl RegisterAltrep for std::borrow::Cow<'static, [crate::RLogical]> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Cow_RLogical\u{0}".as_bytes();
let cls =
unsafe {
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<std::borrow::Cow<'static, [crate::RLogical]> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(std::borrow::Cow<'static, [crate::RLogical]>, "Cow_RLogical");
602impl RegisterAltrep for std::borrow::Cow<'static, [i32]> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Cow_i32\u{0}".as_bytes();
let cls =
unsafe {
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<std::borrow::Cow<'static, [i32]> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(std::borrow::Cow<'static, [i32]>, "Cow_i32");
603impl RegisterAltrep for std::borrow::Cow<'static, [f64]> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Cow_f64\u{0}".as_bytes();
let cls =
unsafe {
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<std::borrow::Cow<'static, [f64]> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(std::borrow::Cow<'static, [f64]>, "Cow_f64");
604impl RegisterAltrep for std::borrow::Cow<'static, [u8]> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Cow_u8\u{0}".as_bytes();
let cls =
unsafe {
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<std::borrow::Cow<'static, [u8]> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(std::borrow::Cow<'static, [u8]>, "Cow_u8");
605impl RegisterAltrep for std::borrow::Cow<'static, [crate::Rcomplex]> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Cow_Rcomplex\u{0}".as_bytes();
let cls =
unsafe {
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<std::borrow::Cow<'static, [crate::Rcomplex]> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(std::borrow::Cow<'static, [crate::Rcomplex]>, "Cow_Rcomplex");
606
607impl RegisterAltrep for Vec<std::borrow::Cow<'static, str>> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Vec_Cow_str\u{0}".as_bytes();
let cls =
unsafe {
<Vec<std::borrow::Cow<'static, str>> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Vec<std::borrow::Cow<'static, str>> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Vec<std::borrow::Cow<'static, str>>, "Vec_Cow_str");
609impl RegisterAltrep for Vec<Option<std::borrow::Cow<'static, str>>> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] =
"Vec_Option_Cow_str\u{0}".as_bytes();
let cls =
unsafe {
<Vec<Option<std::borrow::Cow<'static, str>>> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Vec<Option<std::borrow::Cow<'static, str>>> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(
610 Vec<Option<std::borrow::Cow<'static, str>>>,
611 "Vec_Option_Cow_str"
612);
613impl crate::altrep_traits::Altrep for std::collections::VecDeque<i32> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<std::collections::VecDeque<i32>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for std::collections::VecDeque<i32> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<i32>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepDataptr<i32>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltInteger for std::collections::VecDeque<i32>
where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> i32 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <i32 as crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<i32> as
crate::altrep_data::AltIntegerData>::elt(data,
i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [i32]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<i32>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<std::collections::VecDeque<i32> as
crate::altrep_data::AltIntegerData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<i32> as
crate::altrep_data::AltIntegerData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<i32> as
crate::altrep_data::AltIntegerData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
const HAS_SUM: bool = true;
fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
match <std::collections::VecDeque<i32> as
crate::altrep_data::AltIntegerData>::sum(data, narm) {
::core::option::Option::Some(s) => {
if s >= i32::MIN as i64 && s <= i32::MAX as i64 {
crate::SEXP::scalar_integer(s as i32)
} else { crate::SEXP::scalar_real(s as f64) }
}
::core::option::Option::None => crate::SEXP::null(),
}
}
const HAS_MIN: bool = true;
fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<i32> as
crate::altrep_data::AltIntegerData>::min(data,
narm).map(|m|
crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
}
const HAS_MAX: bool = true;
fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::collections::VecDeque<i32> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<i32> as
crate::altrep_data::AltIntegerData>::max(data,
narm).map(|m|
crate::SEXP::scalar_integer(m)).unwrap_or(crate::SEXP::null())
}
}
impl crate::altrep_data::InferBase for std::collections::VecDeque<i32> where
{
const BASE: crate::altrep::RBase = crate::altrep::RBase::Int;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altinteger_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Int)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<std::collections::VecDeque<i32>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<std::collections::VecDeque<i32>>(cls)
};
unsafe {
crate::altrep_bridge::install_int::<std::collections::VecDeque<i32>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_VecDeque_i32() {
<std::collections::VecDeque<i32> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_VecDeque_i32:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_VecDeque_i32 };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_VecDeque_i32,
symbol: "__mx_altrep_reg_builtin_VecDeque_i32",
}
};impl_builtin_altrep_family!(
618 std::collections::VecDeque<i32>,
619 integer,
620 dataptr,
621 __mx_altrep_reg_builtin_VecDeque_i32,
622 __MX_ALTREP_REG_ENTRY_builtin_VecDeque_i32
623);
624impl RegisterAltrep for std::collections::VecDeque<i32> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "VecDeque_i32\u{0}".as_bytes();
let cls =
unsafe {
<std::collections::VecDeque<i32> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<std::collections::VecDeque<i32> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(std::collections::VecDeque<i32>, "VecDeque_i32");
625
626impl crate::altrep_traits::Altrep for std::collections::VecDeque<f64> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<std::collections::VecDeque<f64>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for std::collections::VecDeque<f64> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<f64>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepDataptr<f64>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltReal for std::collections::VecDeque<f64> where
{
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> f64 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <f64 as crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<f64> as
crate::altrep_data::AltRealData>::elt(data, i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [f64]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<f64>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<std::collections::VecDeque<f64> as
crate::altrep_data::AltRealData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<f64> as
crate::altrep_data::AltRealData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<f64> as
crate::altrep_data::AltRealData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
const HAS_SUM: bool = true;
fn sum(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<f64> as
crate::altrep_data::AltRealData>::sum(data,
narm).map(|s|
crate::SEXP::scalar_real(s)).unwrap_or(crate::SEXP::null())
}
const HAS_MIN: bool = true;
fn min(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<f64> as
crate::altrep_data::AltRealData>::min(data,
narm).map(|m|
crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
}
const HAS_MAX: bool = true;
fn max(x: crate::SEXP, narm: bool) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::collections::VecDeque<f64> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<f64> as
crate::altrep_data::AltRealData>::max(data,
narm).map(|m|
crate::SEXP::scalar_real(m)).unwrap_or(crate::SEXP::null())
}
}
impl crate::altrep_data::InferBase for std::collections::VecDeque<f64> where
{
const BASE: crate::altrep::RBase = crate::altrep::RBase::Real;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altreal_class(class_name, pkg_name,
dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Real)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<std::collections::VecDeque<f64>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<std::collections::VecDeque<f64>>(cls)
};
unsafe {
crate::altrep_bridge::install_real::<std::collections::VecDeque<f64>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_VecDeque_f64() {
<std::collections::VecDeque<f64> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_VecDeque_f64:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_VecDeque_f64 };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_VecDeque_f64,
symbol: "__mx_altrep_reg_builtin_VecDeque_f64",
}
};impl_builtin_altrep_family!(
627 std::collections::VecDeque<f64>,
628 real,
629 dataptr,
630 __mx_altrep_reg_builtin_VecDeque_f64,
631 __MX_ALTREP_REG_ENTRY_builtin_VecDeque_f64
632);
633impl RegisterAltrep for std::collections::VecDeque<f64> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "VecDeque_f64\u{0}".as_bytes();
let cls =
unsafe {
<std::collections::VecDeque<f64> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<std::collections::VecDeque<f64> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(std::collections::VecDeque<f64>, "VecDeque_f64");
634
635impl crate::altrep_traits::Altrep for std::collections::VecDeque<u8> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<std::collections::VecDeque<u8> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<u8> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::collections::VecDeque<u8> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<u8> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<std::collections::VecDeque<u8> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<std::collections::VecDeque<u8>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for std::collections::VecDeque<u8> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<std::collections::VecDeque<u8> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::collections::VecDeque<u8> as
crate::altrep_data::AltrepDataptr<u8>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<std::collections::VecDeque<u8> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<u8> as
crate::altrep_data::AltrepDataptr<u8>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<std::collections::VecDeque<u8> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::collections::VecDeque<u8> as
crate::altrep_data::AltrepDataptr<u8>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe { crate::altrep_data::materialize_altrep_data2::<u8>(x) }
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<std::collections::VecDeque<u8> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<u8> as
crate::altrep_data::AltrepDataptr<u8>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltRaw for std::collections::VecDeque<u8> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> u8 {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <u8 as crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<std::collections::VecDeque<u8> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<u8> as
crate::altrep_data::AltRawData>::elt(data, i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [u8]) -> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<u8>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<std::collections::VecDeque<u8> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<std::collections::VecDeque<u8> as
crate::altrep_data::AltRawData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
}
impl crate::altrep_data::InferBase for std::collections::VecDeque<u8> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Raw;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altraw_class(class_name, pkg_name,
dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Raw)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<std::collections::VecDeque<u8>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<std::collections::VecDeque<u8>>(cls)
};
unsafe {
crate::altrep_bridge::install_raw::<std::collections::VecDeque<u8>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_VecDeque_u8() {
<std::collections::VecDeque<u8> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_VecDeque_u8:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_VecDeque_u8 };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_VecDeque_u8,
symbol: "__mx_altrep_reg_builtin_VecDeque_u8",
}
};impl_builtin_altrep_family!(
636 std::collections::VecDeque<u8>,
637 raw,
638 dataptr,
639 __mx_altrep_reg_builtin_VecDeque_u8,
640 __MX_ALTREP_REG_ENTRY_builtin_VecDeque_u8
641);
642impl RegisterAltrep for std::collections::VecDeque<u8> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "VecDeque_u8\u{0}".as_bytes();
let cls =
unsafe {
<std::collections::VecDeque<u8> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<std::collections::VecDeque<u8> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(std::collections::VecDeque<u8>, "VecDeque_u8");
643
644impl crate::altrep_traits::Altrep for
std::collections::VecDeque<crate::Rcomplex> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<std::collections::VecDeque<crate::Rcomplex>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for
std::collections::VecDeque<crate::Rcomplex> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2).cast_mut();
}
}
let direct =
if writable {
let d =
unsafe {
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr(d,
true).map(|p| p.cast::<::core::ffi::c_void>())
} else {
let ro =
{
let d =
unsafe {
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr_or_null(d)
};
if let ::core::option::Option::Some(p) = ro {
return p.cast_mut().cast::<::core::ffi::c_void>();
}
let d =
unsafe {
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltrepExtract>::altrep_extract_mut(x)
};
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr(d,
false).map(|p| p.cast::<::core::ffi::c_void>())
};
if let ::core::option::Option::Some(p) = direct { return p; }
unsafe {
crate::altrep_data::materialize_altrep_data2::<crate::Rcomplex>(x)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
unsafe {
if let ::core::option::Option::Some(data2) =
crate::altrep_data::materialized_altrep_data2(x) {
return crate::sys::DATAPTR_RO(data2);
}
}
let d =
unsafe {
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltrepDataptr<crate::Rcomplex>>::dataptr_or_null(d).map(|p|
p.cast::<::core::ffi::c_void>()).unwrap_or(::core::ptr::null())
}
}
impl crate::altrep_traits::AltComplex for
std::collections::VecDeque<crate::Rcomplex> where {
const HAS_ELT: bool = true;
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::Rcomplex {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return <crate::Rcomplex as
crate::RNativeType>::elt(data2, i.max(0));
}
let data =
unsafe {
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltComplexData>::elt(data,
i.max(0) as usize)
}
const HAS_GET_REGION: bool = true;
fn get_region(x: crate::SEXP, start: crate::R_xlen_t,
len: crate::R_xlen_t, buf: &mut [crate::Rcomplex])
-> crate::R_xlen_t {
if start < 0 || len <= 0 { return 0; }
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return unsafe {
crate::altrep_data::materialized_altrep_region::<crate::Rcomplex>(data2,
start as usize, len as usize, buf)
} as crate::R_xlen_t;
}
let data =
unsafe {
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
let len = len as usize;
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::AltComplexData>::get_region(data,
start as usize, len, buf) as crate::R_xlen_t
}
}
impl crate::altrep_data::InferBase for
std::collections::VecDeque<crate::Rcomplex> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::Complex;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altcomplex_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::Complex)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<std::collections::VecDeque<crate::Rcomplex>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<std::collections::VecDeque<crate::Rcomplex>>(cls)
};
unsafe {
crate::altrep_bridge::install_cplx::<std::collections::VecDeque<crate::Rcomplex>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_VecDeque_Rcomplex() {
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_VecDeque_Rcomplex:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_VecDeque_Rcomplex };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_VecDeque_Rcomplex,
symbol: "__mx_altrep_reg_builtin_VecDeque_Rcomplex",
}
};impl_builtin_altrep_family!(
645 std::collections::VecDeque<crate::Rcomplex>,
646 complex,
647 dataptr,
648 __mx_altrep_reg_builtin_VecDeque_Rcomplex,
649 __MX_ALTREP_REG_ENTRY_builtin_VecDeque_Rcomplex
650);
651impl RegisterAltrep for std::collections::VecDeque<crate::Rcomplex> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] =
"VecDeque_Rcomplex\u{0}".as_bytes();
let cls =
unsafe {
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<std::collections::VecDeque<crate::Rcomplex> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(
652 std::collections::VecDeque<crate::Rcomplex>,
653 "VecDeque_Rcomplex"
654);
655
656impl crate::altrep_traits::Altrep for Vec<Box<str>> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<Box<str>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Box<str>> as crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<Box<str>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Box<str>> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Vec<Box<str>> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Vec<Box<str>>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Vec<Box<str>> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
crate::altrep_impl::altstring_dataptr::<Vec<Box<str>>>(x,
writable)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
let _ = x;
::core::ptr::null()
}
}
impl crate::altrep_traits::AltString for Vec<Box<str>> where {
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
unsafe { crate::altrep_impl::altstring_elt::<Vec<Box<str>>>(x, i) }
}
const HAS_SET_ELT: bool = true;
fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
unsafe {
crate::altrep_impl::altstring_set_elt::<Vec<Box<str>>>(x, i, v)
}
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Vec<Box<str>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Box<str>> as
crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Vec<Box<str>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Box<str>> as
crate::altrep_data::AltStringData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
}
impl crate::altrep_data::InferBase for Vec<Box<str>> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altstring_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::String)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe { crate::altrep_bridge::install_base::<Vec<Box<str>>>(cls) };
unsafe { crate::altrep_bridge::install_vec::<Vec<Box<str>>>(cls) };
unsafe { crate::altrep_bridge::install_str::<Vec<Box<str>>>(cls) };
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Box_str() {
<Vec<Box<str>> as crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Box_str:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Box_str };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Vec_Box_str,
symbol: "__mx_altrep_reg_builtin_Vec_Box_str",
}
};impl_builtin_altrep_family!(
661 Vec<Box<str>>,
662 string,
663 dataptr,
664 __mx_altrep_reg_builtin_Vec_Box_str,
665 __MX_ALTREP_REG_ENTRY_builtin_Vec_Box_str
666);
667impl RegisterAltrep for Vec<Box<str>> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Vec_Box_str\u{0}".as_bytes();
let cls =
unsafe {
<Vec<Box<str>> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Vec<Box<str>> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Vec<Box<str>>, "Vec_Box_str");
668
669impl crate::altrep_traits::Altrep for Vec<Option<Box<str>>> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<Option<Box<str>>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<Box<str>>> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<Option<Box<str>>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<Box<str>>> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Vec<Option<Box<str>>> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Vec<Option<Box<str>>>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Vec<Option<Box<str>>> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
crate::altrep_impl::altstring_dataptr::<Vec<Option<Box<str>>>>(x,
writable)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
let _ = x;
::core::ptr::null()
}
}
impl crate::altrep_traits::AltString for Vec<Option<Box<str>>> where {
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
unsafe {
crate::altrep_impl::altstring_elt::<Vec<Option<Box<str>>>>(x, i)
}
}
const HAS_SET_ELT: bool = true;
fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
unsafe {
crate::altrep_impl::altstring_set_elt::<Vec<Option<Box<str>>>>(x,
i, v)
}
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Vec<Option<Box<str>>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<Box<str>>> as
crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Vec<Option<Box<str>>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<Box<str>>> as
crate::altrep_data::AltStringData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
}
impl crate::altrep_data::InferBase for Vec<Option<Box<str>>> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altstring_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::String)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<Vec<Option<Box<str>>>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<Vec<Option<Box<str>>>>(cls)
};
unsafe {
crate::altrep_bridge::install_str::<Vec<Option<Box<str>>>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Option_Box_str() {
<Vec<Option<Box<str>>> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Box_str:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Box_str };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Vec_Option_Box_str,
symbol: "__mx_altrep_reg_builtin_Vec_Option_Box_str",
}
};impl_builtin_altrep_family!(
670 Vec<Option<Box<str>>>,
671 string,
672 dataptr,
673 __mx_altrep_reg_builtin_Vec_Option_Box_str,
674 __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Box_str
675);
676impl RegisterAltrep for Vec<Option<Box<str>>> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] =
"Vec_Option_Box_str\u{0}".as_bytes();
let cls =
unsafe {
<Vec<Option<Box<str>>> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Vec<Option<Box<str>>> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Vec<Option<Box<str>>>, "Vec_Option_Box_str");
677
678impl crate::altrep_traits::Altrep for Vec<std::rc::Rc<str>> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<std::rc::Rc<str>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<std::rc::Rc<str>> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<std::rc::Rc<str>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<std::rc::Rc<str>> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Vec<std::rc::Rc<str>> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Vec<std::rc::Rc<str>>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Vec<std::rc::Rc<str>> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
crate::altrep_impl::altstring_dataptr::<Vec<std::rc::Rc<str>>>(x,
writable)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
let _ = x;
::core::ptr::null()
}
}
impl crate::altrep_traits::AltString for Vec<std::rc::Rc<str>> where {
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
unsafe {
crate::altrep_impl::altstring_elt::<Vec<std::rc::Rc<str>>>(x, i)
}
}
const HAS_SET_ELT: bool = true;
fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
unsafe {
crate::altrep_impl::altstring_set_elt::<Vec<std::rc::Rc<str>>>(x,
i, v)
}
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Vec<std::rc::Rc<str>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<std::rc::Rc<str>> as
crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Vec<std::rc::Rc<str>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<std::rc::Rc<str>> as
crate::altrep_data::AltStringData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
}
impl crate::altrep_data::InferBase for Vec<std::rc::Rc<str>> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altstring_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::String)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<Vec<std::rc::Rc<str>>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<Vec<std::rc::Rc<str>>>(cls)
};
unsafe {
crate::altrep_bridge::install_str::<Vec<std::rc::Rc<str>>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Rc_str() {
<Vec<std::rc::Rc<str>> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Rc_str:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Rc_str };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Vec_Rc_str,
symbol: "__mx_altrep_reg_builtin_Vec_Rc_str",
}
};impl_builtin_altrep_family!(
679 Vec<std::rc::Rc<str>>,
680 string,
681 dataptr,
682 __mx_altrep_reg_builtin_Vec_Rc_str,
683 __MX_ALTREP_REG_ENTRY_builtin_Vec_Rc_str
684);
685impl RegisterAltrep for Vec<std::rc::Rc<str>> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Vec_Rc_str\u{0}".as_bytes();
let cls =
unsafe {
<Vec<std::rc::Rc<str>> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Vec<std::rc::Rc<str>> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Vec<std::rc::Rc<str>>, "Vec_Rc_str");
686
687impl crate::altrep_traits::Altrep for Vec<Option<std::rc::Rc<str>>> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<Option<std::rc::Rc<str>>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<std::rc::Rc<str>>> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<Option<std::rc::Rc<str>>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<std::rc::Rc<str>>> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Vec<Option<std::rc::Rc<str>>> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Vec<Option<std::rc::Rc<str>>>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Vec<Option<std::rc::Rc<str>>> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
crate::altrep_impl::altstring_dataptr::<Vec<Option<std::rc::Rc<str>>>>(x,
writable)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
let _ = x;
::core::ptr::null()
}
}
impl crate::altrep_traits::AltString for Vec<Option<std::rc::Rc<str>>> where
{
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
unsafe {
crate::altrep_impl::altstring_elt::<Vec<Option<std::rc::Rc<str>>>>(x,
i)
}
}
const HAS_SET_ELT: bool = true;
fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
unsafe {
crate::altrep_impl::altstring_set_elt::<Vec<Option<std::rc::Rc<str>>>>(x,
i, v)
}
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Vec<Option<std::rc::Rc<str>>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<std::rc::Rc<str>>> as
crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Vec<Option<std::rc::Rc<str>>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<std::rc::Rc<str>>> as
crate::altrep_data::AltStringData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
}
impl crate::altrep_data::InferBase for Vec<Option<std::rc::Rc<str>>> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altstring_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::String)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<Vec<Option<std::rc::Rc<str>>>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<Vec<Option<std::rc::Rc<str>>>>(cls)
};
unsafe {
crate::altrep_bridge::install_str::<Vec<Option<std::rc::Rc<str>>>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Option_Rc_str() {
<Vec<Option<std::rc::Rc<str>>> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Rc_str:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Rc_str };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Vec_Option_Rc_str,
symbol: "__mx_altrep_reg_builtin_Vec_Option_Rc_str",
}
};impl_builtin_altrep_family!(
688 Vec<Option<std::rc::Rc<str>>>,
689 string,
690 dataptr,
691 __mx_altrep_reg_builtin_Vec_Option_Rc_str,
692 __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Rc_str
693);
694impl RegisterAltrep for Vec<Option<std::rc::Rc<str>>> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] =
"Vec_Option_Rc_str\u{0}".as_bytes();
let cls =
unsafe {
<Vec<Option<std::rc::Rc<str>>> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Vec<Option<std::rc::Rc<str>>> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Vec<Option<std::rc::Rc<str>>>, "Vec_Option_Rc_str");
695
696impl crate::altrep_traits::Altrep for Vec<std::sync::Arc<str>> where {
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<std::sync::Arc<str>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<std::sync::Arc<str>> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<std::sync::Arc<str>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<std::sync::Arc<str>> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Vec<std::sync::Arc<str>> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Vec<std::sync::Arc<str>>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Vec<std::sync::Arc<str>> where {
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
crate::altrep_impl::altstring_dataptr::<Vec<std::sync::Arc<str>>>(x,
writable)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
let _ = x;
::core::ptr::null()
}
}
impl crate::altrep_traits::AltString for Vec<std::sync::Arc<str>> where {
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
unsafe {
crate::altrep_impl::altstring_elt::<Vec<std::sync::Arc<str>>>(x,
i)
}
}
const HAS_SET_ELT: bool = true;
fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
unsafe {
crate::altrep_impl::altstring_set_elt::<Vec<std::sync::Arc<str>>>(x,
i, v)
}
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Vec<std::sync::Arc<str>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<std::sync::Arc<str>> as
crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Vec<std::sync::Arc<str>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<std::sync::Arc<str>> as
crate::altrep_data::AltStringData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
}
impl crate::altrep_data::InferBase for Vec<std::sync::Arc<str>> where {
const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altstring_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::String)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<Vec<std::sync::Arc<str>>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<Vec<std::sync::Arc<str>>>(cls)
};
unsafe {
crate::altrep_bridge::install_str::<Vec<std::sync::Arc<str>>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Arc_str() {
<Vec<std::sync::Arc<str>> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Arc_str:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Arc_str };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Vec_Arc_str,
symbol: "__mx_altrep_reg_builtin_Vec_Arc_str",
}
};impl_builtin_altrep_family!(
697 Vec<std::sync::Arc<str>>,
698 string,
699 dataptr,
700 __mx_altrep_reg_builtin_Vec_Arc_str,
701 __MX_ALTREP_REG_ENTRY_builtin_Vec_Arc_str
702);
703impl RegisterAltrep for Vec<std::sync::Arc<str>> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] = "Vec_Arc_str\u{0}".as_bytes();
let cls =
unsafe {
<Vec<std::sync::Arc<str>> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Vec<std::sync::Arc<str>> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Vec<std::sync::Arc<str>>, "Vec_Arc_str");
704
705impl crate::altrep_traits::Altrep for Vec<Option<std::sync::Arc<str>>> where
{
const GUARD: crate::altrep_traits::AltrepGuard =
crate::altrep_traits::AltrepGuard::RUnwind;
fn length(x: crate::SEXP) -> crate::R_xlen_t {
if let ::core::option::Option::Some(data2) =
unsafe { crate::altrep_data::materialized_altrep_data2(x) } {
return crate::SexpExt::len(&data2) as crate::R_xlen_t;
}
let data =
unsafe {
<Vec<Option<std::sync::Arc<str>>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<std::sync::Arc<str>>> as
crate::altrep_data::AltrepLen>::altrep_len(data) as
crate::R_xlen_t
}
const HAS_SERIALIZED_STATE: bool = true;
fn serialized_state(x: crate::SEXP) -> crate::SEXP {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::SEXP::null();
}
let data =
unsafe {
<Vec<Option<std::sync::Arc<str>>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<std::sync::Arc<str>>> as
crate::altrep_data::AltrepSerialize>::serialized_state(data)
}
const HAS_UNSERIALIZE: bool = true;
fn unserialize(class: crate::SEXP, state: crate::SEXP) -> crate::SEXP {
let ::core::option::Option::Some(data) =
<Vec<Option<std::sync::Arc<str>>> as
crate::altrep_data::AltrepSerialize>::unserialize(state) else {
{
::core::panicking::panic_fmt(format_args!("ALTREP unserialize failed for {0}",
::core::any::type_name::<Vec<Option<std::sync::Arc<str>>>>()));
};
};
unsafe {
use crate::SEXP;
use crate::externalptr::ExternalPtr;
use crate::sys::altrep::R_altrep_class_t;
use crate::sys::{Rf_protect_unchecked, Rf_unprotect_unchecked};
let ext_ptr = ExternalPtr::new_unchecked(data);
let data1 = ext_ptr.as_sexp();
Rf_protect_unchecked(data1);
let cls = R_altrep_class_t::from_sexp(class);
let out = cls.new_altrep_unchecked(data1, SEXP::nil());
Rf_unprotect_unchecked(1);
out
}
}
}
impl crate::altrep_traits::AltVec for Vec<Option<std::sync::Arc<str>>> where
{
const HAS_DATAPTR: bool = true;
fn dataptr(x: crate::SEXP, writable: bool) -> *mut ::core::ffi::c_void {
unsafe {
crate::altrep_impl::altstring_dataptr::<Vec<Option<std::sync::Arc<str>>>>(x,
writable)
}
}
const HAS_DATAPTR_OR_NULL: bool = true;
fn dataptr_or_null(x: crate::SEXP) -> *const ::core::ffi::c_void {
let _ = x;
::core::ptr::null()
}
}
impl crate::altrep_traits::AltString for Vec<Option<std::sync::Arc<str>>>
where {
fn elt(x: crate::SEXP, i: crate::R_xlen_t) -> crate::SEXP {
unsafe {
crate::altrep_impl::altstring_elt::<Vec<Option<std::sync::Arc<str>>>>(x,
i)
}
}
const HAS_SET_ELT: bool = true;
fn set_elt(x: crate::SEXP, i: crate::R_xlen_t, v: crate::SEXP) {
unsafe {
crate::altrep_impl::altstring_set_elt::<Vec<Option<std::sync::Arc<str>>>>(x,
i, v)
}
}
const HAS_IS_SORTED: bool = true;
fn is_sorted(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return crate::altrep_traits::UNKNOWN_SORTEDNESS;
}
let data =
unsafe {
<Vec<Option<std::sync::Arc<str>>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<std::sync::Arc<str>>> as
crate::altrep_data::AltStringData>::is_sorted(data).map(|s|
s.to_r_int()).unwrap_or(i32::MIN)
}
const HAS_NO_NA: bool = true;
fn no_na(x: crate::SEXP) -> i32 {
if unsafe { crate::altrep_data::altrep_values_written(x) } {
return 0;
}
let data =
unsafe {
<Vec<Option<std::sync::Arc<str>>> as
crate::altrep_data::AltrepExtract>::altrep_extract_ref(x)
};
<Vec<Option<std::sync::Arc<str>>> as
crate::altrep_data::AltStringData>::no_na(data).map(|b|
if b { 1 } else { 0 }).unwrap_or(0)
}
}
impl crate::altrep_data::InferBase for Vec<Option<std::sync::Arc<str>>> where
{
const BASE: crate::altrep::RBase = crate::altrep::RBase::String;
unsafe fn make_class(class_name: *const ::core::ffi::c_char,
pkg_name: *const ::core::ffi::c_char)
-> crate::sys::altrep::R_altrep_class_t {
let dll = crate::altrep_dll_info();
let cls =
unsafe {
crate::sys::altrep::R_make_altstring_class(class_name,
pkg_name, dll)
};
let name = unsafe { ::core::ffi::CStr::from_ptr(class_name) };
crate::altrep::validate_altrep_class(cls, name,
crate::altrep::RBase::String)
}
unsafe fn install_methods(cls: crate::sys::altrep::R_altrep_class_t) {
unsafe {
crate::altrep_bridge::install_base::<Vec<Option<std::sync::Arc<str>>>>(cls)
};
unsafe {
crate::altrep_bridge::install_vec::<Vec<Option<std::sync::Arc<str>>>>(cls)
};
unsafe {
crate::altrep_bridge::install_str::<Vec<Option<std::sync::Arc<str>>>>(cls)
};
}
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub extern "C-unwind" fn __mx_altrep_reg_builtin_Vec_Option_Arc_str() {
<Vec<Option<std::sync::Arc<str>>> as
crate::altrep::RegisterAltrep>::get_or_init_class();
}
#[used]
#[unsafe(link_section = "linkme_MX_ALTREP_REGISTRATIONS")]
#[doc(hidden)]
#[allow(non_upper_case_globals)]
static __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Arc_str:
crate::registry::AltrepRegistration =
{
#[allow(clippy :: no_effect_underscore_binding)]
unsafe fn __typecheck(_: crate::linkme::__private36::Void) {
#[allow(clippy :: ref_option_ref)]
let __new =
|| -> fn() -> &'static crate::registry::AltrepRegistration
{ || &__MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Arc_str };
unsafe {
crate::linkme::DistributedSlice::private_typecheck(crate::registry::MX_ALTREP_REGISTRATIONS,
__new());
}
}
crate::registry::AltrepRegistration {
register: __mx_altrep_reg_builtin_Vec_Option_Arc_str,
symbol: "__mx_altrep_reg_builtin_Vec_Option_Arc_str",
}
};impl_builtin_altrep_family!(
706 Vec<Option<std::sync::Arc<str>>>,
707 string,
708 dataptr,
709 __mx_altrep_reg_builtin_Vec_Option_Arc_str,
710 __MX_ALTREP_REG_ENTRY_builtin_Vec_Option_Arc_str
711);
712impl RegisterAltrep for Vec<Option<std::sync::Arc<str>>> {
fn get_or_init_class() -> crate::sys::altrep::R_altrep_class_t {
use std::sync::OnceLock;
static CLASS: OnceLock<crate::sys::altrep::R_altrep_class_t> =
OnceLock::new();
*CLASS.get_or_init(||
{
const CLASS_NAME: &[u8] =
"Vec_Option_Arc_str\u{0}".as_bytes();
let cls =
unsafe {
<Vec<Option<std::sync::Arc<str>>> as
crate::altrep_data::InferBase>::make_class(CLASS_NAME.as_ptr().cast::<std::ffi::c_char>(),
crate::AltrepPkgName::as_ptr())
};
unsafe {
<Vec<Option<std::sync::Arc<str>>> as
crate::altrep_data::InferBase>::install_methods(cls);
}
cls
})
}
}impl_register_altrep_builtin!(Vec<Option<std::sync::Arc<str>>>, "Vec_Option_Arc_str");
713