avm1: Remove `set` specialization from `impl_custom_object!`

`base_proto` is going to be eliminated in a following commit, so
there will no longer be a difference between the two `set_local`
variants.
This commit is contained in:
relrelb 2021-10-22 21:30:04 +03:00 committed by Mike Welsh
parent 3fc0209e03
commit 0a66dac280
17 changed files with 12 additions and 43 deletions

View File

@ -118,7 +118,6 @@ impl<'gc> BevelFilterObject<'gc> {
impl<'gc> TObject<'gc> for BevelFilterObject<'gc> {
impl_custom_object!(base {
set(proto: bevel_filter);
bare_object(as_bevel_filter_object -> BevelFilterObject::empty_object);
});
}

View File

@ -54,7 +54,6 @@ impl<'gc> BitmapDataObject<'gc> {
impl<'gc> TObject<'gc> for BitmapDataObject<'gc> {
impl_custom_object!(base {
set(proto: bitmap_data);
bare_object(as_bitmap_data_object -> BitmapDataObject::empty_object);
});
}

View File

@ -54,7 +54,6 @@ impl<'gc> BlurFilterObject<'gc> {
impl<'gc> TObject<'gc> for BlurFilterObject<'gc> {
impl_custom_object!(base {
set(proto: blur_filter);
bare_object(as_blur_filter_object -> BlurFilterObject::empty_object);
});
}

View File

@ -47,7 +47,6 @@ impl<'gc> ColorMatrixFilterObject<'gc> {
impl<'gc> TObject<'gc> for ColorMatrixFilterObject<'gc> {
impl_custom_object!(base {
set(proto: color_matrix_filter);
bare_object(as_color_matrix_filter_object -> ColorMatrixFilterObject::empty_object);
});
}

View File

@ -92,7 +92,6 @@ impl<'gc> ColorTransformObject<'gc> {
impl<'gc> TObject<'gc> for ColorTransformObject<'gc> {
impl_custom_object!(base {
set(proto: color_transform);
bare_object(as_color_transform_object -> ColorTransformObject::empty_color_transform_object);
});
}

View File

@ -100,7 +100,6 @@ impl<'gc> ConvolutionFilterObject<'gc> {
impl<'gc> TObject<'gc> for ConvolutionFilterObject<'gc> {
impl_custom_object!(base {
set(proto: convolution_filter);
bare_object(as_convolution_filter_object -> ConvolutionFilterObject::empty_object);
});
}

View File

@ -1,33 +1,7 @@
#[macro_export]
macro_rules! impl_custom_object {
($field:ident) => {
crate::impl_custom_object!($field { set(proto: self); });
};
(@extra $field:ident set(proto: self)) => {
fn set_local(
&self,
name: crate::avm1::AvmString<'gc>,
value: crate::avm1::Value<'gc>,
activation: &mut crate::avm1::Activation<'_, 'gc, '_>,
this: crate::avm1::Object<'gc>,
base_proto: Option<crate::avm1::Object<'gc>>,
) -> Result<(), crate::avm1::Error<'gc>> {
self.0.read().$field.set_local(name, value, activation, this, base_proto)
}
};
(@extra $field:ident set(proto: $proto:ident)) => {
fn set_local(
&self,
name: crate::avm1::AvmString<'gc>,
value: crate::avm1::Value<'gc>,
activation: &mut crate::avm1::Activation<'_, 'gc, '_>,
this: crate::avm1::Object<'gc>,
_base_proto: Option<crate::avm1::Object<'gc>>,
) -> Result<(), crate::avm1::Error<'gc>> {
self.0.read().$field.set_local(name, value, activation, this, Some(activation.context.avm1.prototypes.$proto))
}
crate::impl_custom_object!($field {});
};
(@extra $field:ident bare_object($as_obj:ident -> $obj_type:ident :: $new:ident)) => {
@ -61,6 +35,17 @@ macro_rules! impl_custom_object {
self.0.read().$field.get_local_stored(name, activation)
}
fn set_local(
&self,
name: crate::avm1::AvmString<'gc>,
value: crate::avm1::Value<'gc>,
activation: &mut crate::avm1::Activation<'_, 'gc, '_>,
this: crate::avm1::Object<'gc>,
base_proto: Option<crate::avm1::Object<'gc>>,
) -> Result<(), crate::avm1::Error<'gc>> {
self.0.read().$field.set_local(name, value, activation, this, base_proto)
}
fn call(
&self,
name: crate::avm1::AvmString<'gc>,

View File

@ -65,7 +65,6 @@ impl<'gc> DateObject<'gc> {
impl<'gc> TObject<'gc> for DateObject<'gc> {
impl_custom_object!(base {
set(proto: self);
bare_object(as_date_object -> DateObject::empty);
});
}

View File

@ -116,7 +116,6 @@ impl<'gc> DisplacementMapFilterObject<'gc> {
impl<'gc> TObject<'gc> for DisplacementMapFilterObject<'gc> {
impl_custom_object!(base {
set(proto: displacement_map_filter);
bare_object(as_displacement_map_filter_object -> DisplacementMapFilterObject::empty_object);
});
}

View File

@ -86,7 +86,6 @@ impl<'gc> DropShadowFilterObject<'gc> {
impl<'gc> TObject<'gc> for DropShadowFilterObject<'gc> {
impl_custom_object!(base {
set(proto: drop_shadow_filter);
bare_object(as_drop_shadow_filter_object -> DropShadowFilterObject::empty_object);
});
}

View File

@ -74,7 +74,6 @@ impl<'gc> GlowFilterObject<'gc> {
impl<'gc> TObject<'gc> for GlowFilterObject<'gc> {
impl_custom_object!(base {
set(proto: glow_filter);
bare_object(as_glow_filter_object -> GlowFilterObject::empty_object);
});
}

View File

@ -99,7 +99,6 @@ impl<'gc> GradientBevelFilterObject<'gc> {
impl<'gc> TObject<'gc> for GradientBevelFilterObject<'gc> {
impl_custom_object!(base {
set(proto: gradient_bevel_filter);
bare_object(as_gradient_bevel_filter_object -> GradientBevelFilterObject::empty_object);
});
}

View File

@ -99,7 +99,6 @@ impl<'gc> GradientGlowFilterObject<'gc> {
impl<'gc> TObject<'gc> for GradientGlowFilterObject<'gc> {
impl_custom_object!(base {
set(proto: gradient_glow_filter);
bare_object(as_gradient_glow_filter_object -> GradientGlowFilterObject::empty_object);
});
}

View File

@ -59,7 +59,6 @@ impl<'gc> SharedObject<'gc> {
impl<'gc> TObject<'gc> for SharedObject<'gc> {
impl_custom_object!(base {
set(proto: self);
bare_object(as_shared_object -> SharedObject::empty_shared_obj);
});
}

View File

@ -119,7 +119,6 @@ impl<'gc> SoundObject<'gc> {
impl<'gc> TObject<'gc> for SoundObject<'gc> {
impl_custom_object!(base {
set(proto: self);
bare_object(as_sound_object -> SoundObject::empty_sound);
});
}

View File

@ -51,7 +51,6 @@ impl<'gc> TransformObject<'gc> {
impl<'gc> TObject<'gc> for TransformObject<'gc> {
impl_custom_object!(base {
set(proto: color_transform);
bare_object(as_transform_object -> TransformObject::empty);
});

View File

@ -116,7 +116,6 @@ impl fmt::Debug for ValueObject<'_> {
impl<'gc> TObject<'gc> for ValueObject<'gc> {
impl_custom_object!(base {
set(proto: self);
bare_object(as_value_object -> ValueObject::empty_box);
});
}