Using core for classes
This commit is contained in:
@@ -45,7 +45,7 @@ impl ClassProcessedData {
|
||||
.collect::<Vec<Spanned<FunctionDecl>>>();
|
||||
|
||||
let mut v_table = Vec::new();
|
||||
let mut override_v_table = std::collections::HashMap::new();
|
||||
let mut override_v_table = HashMap::new();
|
||||
|
||||
for method in &methods {
|
||||
if matches!(method.item.visibility, Visibility::Public) {
|
||||
@@ -178,7 +178,7 @@ impl ClassProcessedData {
|
||||
cg.indent += 1;
|
||||
|
||||
if has_parent {
|
||||
cg.add_indentedln("let mut table = [std::ptr::null(); Self::__V_COUNT];");
|
||||
cg.add_indentedln("let mut table = [core::ptr::null(); Self::__V_COUNT];");
|
||||
|
||||
cg.add_indentedln(&format!("let parent_table = {}::__V_TABLE;", parent_path));
|
||||
cg.add_indentedln(
|
||||
@@ -293,7 +293,7 @@ impl ClassProcessedData {
|
||||
|
||||
// Deref tests for override targets
|
||||
if self.inherits.is_some() && !self.override_v_table.is_empty() {
|
||||
cg.add_indentedln("let this: &Self = &unsafe { std::mem::MaybeUninit::<Self>::zeroed().assume_init() };");
|
||||
cg.add_indentedln("let this: &Self = &unsafe { core::mem::MaybeUninit::<Self>::zeroed().assume_init() };");
|
||||
|
||||
for (override_tier, v) in &self.override_v_table {
|
||||
if let Some(path) = &override_tier.0 {
|
||||
@@ -346,7 +346,7 @@ impl ClassProcessedData {
|
||||
cg.addln(") -> Self {");
|
||||
cg.indent += 1;
|
||||
|
||||
cg.add_indentedln("let mut this: Self = unsafe { std::mem::MaybeUninit::<Self>::zeroed().assume_init() };");
|
||||
cg.add_indentedln("let mut this: Self = unsafe { core::mem::MaybeUninit::<Self>::zeroed().assume_init() };");
|
||||
cg.add_indentedln("this._vptr = &Self::__V_TABLE;");
|
||||
|
||||
for field in &self.fields {
|
||||
@@ -433,7 +433,7 @@ impl ClassProcessedData {
|
||||
let generics_expr_str = Generics::from(self.generics.clone()).get_rust();
|
||||
|
||||
cg.add(&format!(
|
||||
"impl{} std::ops::Deref for {}{}",
|
||||
"impl{} core::ops::Deref for {}{}",
|
||||
generics_str,
|
||||
self.name.get_rust(),
|
||||
generics_expr_str
|
||||
@@ -452,7 +452,7 @@ impl ClassProcessedData {
|
||||
cg.addln("}");
|
||||
|
||||
cg.add(&format!(
|
||||
"impl{} std::ops::DerefMut for {}{}",
|
||||
"impl{} core::ops::DerefMut for {}{}",
|
||||
generics_str,
|
||||
self.name.get_rust(),
|
||||
generics_expr_str
|
||||
@@ -580,7 +580,7 @@ pub fn gen_method_point(method: &FunctionDecl, ctx: &mut Context, cg: &mut RustC
|
||||
mutable: mutable_self,
|
||||
ty: Box::new(TypeExpr::Path(
|
||||
Path(vec![
|
||||
Identifier(String::from("std")),
|
||||
Identifier(String::from("core")),
|
||||
Identifier(String::from("ffi")),
|
||||
Identifier(String::from("c_void")),
|
||||
]),
|
||||
@@ -590,7 +590,7 @@ pub fn gen_method_point(method: &FunctionDecl, ctx: &mut Context, cg: &mut RustC
|
||||
);
|
||||
|
||||
cg.add(&TypeExpr::StaticFn(param_types, method.return_type.clone().map(Box::new)).get_rust());
|
||||
cg.addln(" = std::mem::transmute(func_ptr);");
|
||||
cg.addln(" = core::mem::transmute(func_ptr);");
|
||||
|
||||
if mutable_self {
|
||||
cg.add_indented("func(self as *mut Self as *const core::ffi::c_void");
|
||||
|
||||
Reference in New Issue
Block a user