diff --git a/core/src/avm1.rs b/core/src/avm1.rs index 579a9b3f4..e7d824884 100644 --- a/core/src/avm1.rs +++ b/core/src/avm1.rs @@ -28,7 +28,6 @@ pub mod object; pub mod property; pub mod property_map; mod scope; -mod string; mod timer; mod value; @@ -47,7 +46,6 @@ pub use object::stage_object::StageObject; pub use object::{Object, ObjectPtr, TObject}; use scope::Scope; use smallvec::alloc::borrow::Cow; -pub use string::AvmString; pub use timer::Timers; pub use value::Value; diff --git a/core/src/avm1/activation.rs b/core/src/avm1/activation.rs index 95fa7925f..765949c40 100644 --- a/core/src/avm1/activation.rs +++ b/core/src/avm1/activation.rs @@ -5,13 +5,13 @@ use crate::avm1::object::{Object, TObject}; use crate::avm1::property::Attribute; use crate::avm1::scope::Scope; use crate::avm1::{ - fscommand, globals, scope, skip_actions, start_drag, ArrayObject, AvmString, ScriptObject, - Value, + fscommand, globals, scope, skip_actions, start_drag, ArrayObject, ScriptObject, Value, }; use crate::backend::navigator::{NavigationMethod, RequestOptions}; use crate::context::UpdateContext; use crate::display_object::{DisplayObject, MovieClip, TDisplayObject, TDisplayObjectContainer}; use crate::ecma_conversions::f64_to_wrapping_u32; +use crate::string::AvmString; use crate::tag_utils::SwfSlice; use crate::vminterface::Instantiator; use crate::{avm_error, avm_warn}; diff --git a/core/src/avm1/globals.rs b/core/src/avm1/globals.rs index 57987cd81..be44778fc 100644 --- a/core/src/avm1/globals.rs +++ b/core/src/avm1/globals.rs @@ -3,7 +3,8 @@ use crate::avm1::error::Error; use crate::avm1::function::{Executable, FunctionObject}; use crate::avm1::property::Attribute; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object, ScriptObject, TObject, Value}; +use crate::avm1::{Object, ScriptObject, TObject, Value}; +use crate::string::AvmString; use gc_arena::Collect; use gc_arena::MutationContext; use rand::Rng; diff --git a/core/src/avm1/globals/array.rs b/core/src/avm1/globals/array.rs index fc9522110..6336b25d0 100644 --- a/core/src/avm1/globals/array.rs +++ b/core/src/avm1/globals/array.rs @@ -4,7 +4,8 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; use crate::avm1::function::{Executable, FunctionObject}; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{ArrayObject, AvmString, Object, TObject, Value}; +use crate::avm1::{ArrayObject, Object, TObject, Value}; +use crate::string::AvmString; use bitflags::bitflags; use gc_arena::MutationContext; use std::cmp::Ordering; diff --git a/core/src/avm1/globals/bevel_filter.rs b/core/src/avm1/globals/bevel_filter.rs index 5e1424ce1..3ccc13f82 100644 --- a/core/src/avm1/globals/bevel_filter.rs +++ b/core/src/avm1/globals/bevel_filter.rs @@ -4,7 +4,8 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; use crate::avm1::object::bevel_filter::{BevelFilterObject, BevelFilterType}; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object, TObject, Value}; +use crate::avm1::{Object, TObject, Value}; +use crate::string::AvmString; use gc_arena::MutationContext; const PROTO_DECLS: &[Declaration] = declare_properties! { diff --git a/core/src/avm1/globals/boolean.rs b/core/src/avm1/globals/boolean.rs index 49410a769..5fd142166 100644 --- a/core/src/avm1/globals/boolean.rs +++ b/core/src/avm1/globals/boolean.rs @@ -5,7 +5,8 @@ use crate::avm1::error::Error; use crate::avm1::function::{Executable, FunctionObject}; use crate::avm1::object::value_object::ValueObject; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object, TObject, Value}; +use crate::avm1::{Object, TObject, Value}; +use crate::string::AvmString; use gc_arena::MutationContext; const PROTO_DECLS: &[Declaration] = declare_properties! { diff --git a/core/src/avm1/globals/color_transform.rs b/core/src/avm1/globals/color_transform.rs index a0fbbd32d..e546d823f 100644 --- a/core/src/avm1/globals/color_transform.rs +++ b/core/src/avm1/globals/color_transform.rs @@ -3,7 +3,8 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object, TObject, Value}; +use crate::avm1::{Object, TObject, Value}; +use crate::string::AvmString; use gc_arena::MutationContext; use crate::avm1::object::color_transform_object::ColorTransformObject; diff --git a/core/src/avm1/globals/context_menu_item.rs b/core/src/avm1/globals/context_menu_item.rs index 064d05550..f2ebdcfed 100644 --- a/core/src/avm1/globals/context_menu_item.rs +++ b/core/src/avm1/globals/context_menu_item.rs @@ -2,8 +2,9 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; use crate::avm1::object::TObject; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object}; +use crate::avm1::Object; use crate::avm1::{ScriptObject, Value}; +use crate::string::AvmString; use gc_arena::MutationContext; const PROTO_DECLS: &[Declaration] = declare_properties! { diff --git a/core/src/avm1/globals/date.rs b/core/src/avm1/globals/date.rs index 097f84677..e8b56c983 100644 --- a/core/src/avm1/globals/date.rs +++ b/core/src/avm1/globals/date.rs @@ -3,7 +3,8 @@ use crate::avm1::error::Error; use crate::avm1::function::{Executable, FunctionObject}; use crate::avm1::object::date_object::DateObject; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object, TObject, Value}; +use crate::avm1::{Object, TObject, Value}; +use crate::string::AvmString; use chrono::{DateTime, Datelike, Duration, LocalResult, TimeZone, Timelike, Utc}; use gc_arena::{Collect, MutationContext}; use num_traits::ToPrimitive; diff --git a/core/src/avm1/globals/displacement_map_filter.rs b/core/src/avm1/globals/displacement_map_filter.rs index 2d83c7610..7a91bb9ae 100644 --- a/core/src/avm1/globals/displacement_map_filter.rs +++ b/core/src/avm1/globals/displacement_map_filter.rs @@ -4,7 +4,8 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; use crate::avm1::object::displacement_map_filter::DisplacementMapFilterObject; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object, TObject, Value}; +use crate::avm1::{Object, TObject, Value}; +use crate::string::AvmString; use gc_arena::MutationContext; const PROTO_DECLS: &[Declaration] = declare_properties! { diff --git a/core/src/avm1/globals/display_object.rs b/core/src/avm1/globals/display_object.rs index 8ff3de949..f5cc5df7f 100644 --- a/core/src/avm1/globals/display_object.rs +++ b/core/src/avm1/globals/display_object.rs @@ -4,8 +4,9 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; use crate::avm1::property::Attribute; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object, ScriptObject, TObject, Value}; +use crate::avm1::{Object, ScriptObject, TObject, Value}; use crate::display_object::{DisplayObject, Lists, TDisplayObject, TDisplayObjectContainer}; +use crate::string::AvmString; use gc_arena::MutationContext; /// Depths used/returned by ActionScript are offset by this amount from depths used inside the SWF/by the VM. diff --git a/core/src/avm1/globals/error.rs b/core/src/avm1/globals/error.rs index 07b88731b..0c7caea20 100644 --- a/core/src/avm1/globals/error.rs +++ b/core/src/avm1/globals/error.rs @@ -3,7 +3,8 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object, ScriptObject, TObject, Value}; +use crate::avm1::{Object, ScriptObject, TObject, Value}; +use crate::string::AvmString; use gc_arena::MutationContext; const PROTO_DECLS: &[Declaration] = declare_properties! { diff --git a/core/src/avm1/globals/gradient_bevel_filter.rs b/core/src/avm1/globals/gradient_bevel_filter.rs index c48e18185..41c165872 100644 --- a/core/src/avm1/globals/gradient_bevel_filter.rs +++ b/core/src/avm1/globals/gradient_bevel_filter.rs @@ -5,7 +5,8 @@ use crate::avm1::error::Error; use crate::avm1::object::bevel_filter::BevelFilterType; use crate::avm1::object::gradient_bevel_filter::GradientBevelFilterObject; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{ArrayObject, AvmString, Object, TObject, Value}; +use crate::avm1::{ArrayObject, Object, TObject, Value}; +use crate::string::AvmString; use gc_arena::MutationContext; const PROTO_DECLS: &[Declaration] = declare_properties! { diff --git a/core/src/avm1/globals/gradient_glow_filter.rs b/core/src/avm1/globals/gradient_glow_filter.rs index 7ca296ee0..5353c18c1 100644 --- a/core/src/avm1/globals/gradient_glow_filter.rs +++ b/core/src/avm1/globals/gradient_glow_filter.rs @@ -5,7 +5,8 @@ use crate::avm1::error::Error; use crate::avm1::object::bevel_filter::BevelFilterType; use crate::avm1::object::gradient_glow_filter::GradientGlowFilterObject; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{ArrayObject, AvmString, Object, TObject, Value}; +use crate::avm1::{ArrayObject, Object, TObject, Value}; +use crate::string::AvmString; use gc_arena::MutationContext; const PROTO_DECLS: &[Declaration] = declare_properties! { diff --git a/core/src/avm1/globals/load_vars.rs b/core/src/avm1/globals/load_vars.rs index 50ce60e70..288ac2a19 100644 --- a/core/src/avm1/globals/load_vars.rs +++ b/core/src/avm1/globals/load_vars.rs @@ -5,9 +5,10 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; use crate::avm1::property::Attribute; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object, ScriptObject, TObject, Value}; +use crate::avm1::{Object, ScriptObject, TObject, Value}; use crate::avm_warn; use crate::backend::navigator::{NavigationMethod, RequestOptions}; +use crate::string::AvmString; use gc_arena::MutationContext; use std::borrow::Cow; @@ -66,7 +67,7 @@ fn decode<'gc>( for (k, v) in url::form_urlencoded::parse(data.as_bytes()) { this.set( &k, - crate::avm1::AvmString::new(activation.context.gc_context, v.into_owned()).into(), + crate::string::AvmString::new(activation.context.gc_context, v.into_owned()).into(), activation, )?; } @@ -239,7 +240,7 @@ fn to_string<'gc>( .extend_pairs(form_values.iter()) .finish(); - Ok(crate::avm1::AvmString::new(activation.context.gc_context, query_string).into()) + Ok(crate::string::AvmString::new(activation.context.gc_context, query_string).into()) } fn spawn_load_var_fetch<'gc>( diff --git a/core/src/avm1/globals/matrix.rs b/core/src/avm1/globals/matrix.rs index 5ab3a6280..be40315e9 100644 --- a/core/src/avm1/globals/matrix.rs +++ b/core/src/avm1/globals/matrix.rs @@ -5,8 +5,9 @@ use crate::avm1::error::Error; use crate::avm1::function::{Executable, FunctionObject}; use crate::avm1::globals::point::{point_to_object, value_to_point}; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object, ScriptObject, TObject, Value}; +use crate::avm1::{Object, ScriptObject, TObject, Value}; use crate::matrix::Matrix; +use crate::string::AvmString; use gc_arena::MutationContext; use swf::Twips; diff --git a/core/src/avm1/globals/movie_clip.rs b/core/src/avm1/globals/movie_clip.rs index bbf96b538..a0dc3ba90 100644 --- a/core/src/avm1/globals/movie_clip.rs +++ b/core/src/avm1/globals/movie_clip.rs @@ -5,7 +5,7 @@ use crate::avm1::error::Error; use crate::avm1::globals::display_object::{self, AVM_DEPTH_BIAS, AVM_MAX_DEPTH}; use crate::avm1::globals::matrix::gradient_object_to_matrix; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{self, AvmString, Object, ScriptObject, TObject, Value}; +use crate::avm1::{self, Object, ScriptObject, TObject, Value}; use crate::avm_error; use crate::avm_warn; use crate::backend::{navigator::NavigationMethod, render}; @@ -15,6 +15,7 @@ use crate::display_object::{ use crate::ecma_conversions::f64_to_wrapping_i32; use crate::prelude::*; use crate::shape_utils::DrawCommand; +use crate::string::AvmString; use crate::tag_utils::SwfSlice; use crate::vminterface::Instantiator; use gc_arena::MutationContext; diff --git a/core/src/avm1/globals/number.rs b/core/src/avm1/globals/number.rs index 9e2477cfe..73a44f850 100644 --- a/core/src/avm1/globals/number.rs +++ b/core/src/avm1/globals/number.rs @@ -5,7 +5,8 @@ use crate::avm1::error::Error; use crate::avm1::function::{Executable, FunctionObject}; use crate::avm1::object::value_object::ValueObject; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object, TObject, Value}; +use crate::avm1::{Object, TObject, Value}; +use crate::string::AvmString; use gc_arena::MutationContext; const PROTO_DECLS: &[Declaration] = declare_properties! { diff --git a/core/src/avm1/globals/point.rs b/core/src/avm1/globals/point.rs index 00040684b..59f930194 100644 --- a/core/src/avm1/globals/point.rs +++ b/core/src/avm1/globals/point.rs @@ -4,7 +4,8 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; use crate::avm1::function::{Executable, FunctionObject}; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object, ScriptObject, TObject, Value}; +use crate::avm1::{Object, ScriptObject, TObject, Value}; +use crate::string::AvmString; use gc_arena::MutationContext; const PROTO_DECLS: &[Declaration] = declare_properties! { diff --git a/core/src/avm1/globals/rectangle.rs b/core/src/avm1/globals/rectangle.rs index 0f8d9357c..7d2ef6186 100644 --- a/core/src/avm1/globals/rectangle.rs +++ b/core/src/avm1/globals/rectangle.rs @@ -5,7 +5,8 @@ use crate::avm1::error::Error; use crate::avm1::function::{Executable, FunctionObject}; use crate::avm1::globals::point::{construct_new_point, point_to_object, value_to_point}; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object, ScriptObject, TObject, Value}; +use crate::avm1::{Object, ScriptObject, TObject, Value}; +use crate::string::AvmString; use gc_arena::MutationContext; const PROTO_DECLS: &[Declaration] = declare_properties! { diff --git a/core/src/avm1/globals/shared_object.rs b/core/src/avm1/globals/shared_object.rs index a18beb488..b77bfbc0b 100644 --- a/core/src/avm1/globals/shared_object.rs +++ b/core/src/avm1/globals/shared_object.rs @@ -4,9 +4,10 @@ use crate::avm1::function::{Executable, FunctionObject}; use crate::avm1::object::shared_object::SharedObject; use crate::avm1::property::Attribute; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object, ScriptObject, TObject, Value}; +use crate::avm1::{Object, ScriptObject, TObject, Value}; use crate::avm_warn; use crate::display_object::TDisplayObject; +use crate::string::AvmString; use flash_lso::types::Value as AmfValue; use flash_lso::types::{AMFVersion, Element, Lso}; use gc_arena::MutationContext; diff --git a/core/src/avm1/globals/stage.rs b/core/src/avm1/globals/stage.rs index d6c5a5d31..46a3afbb9 100644 --- a/core/src/avm1/globals/stage.rs +++ b/core/src/avm1/globals/stage.rs @@ -5,7 +5,8 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; use crate::avm1::globals::as_broadcaster::BroadcasterFunctions; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object, ScriptObject, Value}; +use crate::avm1::{Object, ScriptObject, Value}; +use crate::string::AvmString; use gc_arena::MutationContext; const OBJECT_DECLS: &[Declaration] = declare_properties! { diff --git a/core/src/avm1/globals/string.rs b/core/src/avm1/globals/string.rs index 2083f4dde..fe3ca5790 100644 --- a/core/src/avm1/globals/string.rs +++ b/core/src/avm1/globals/string.rs @@ -6,8 +6,8 @@ use crate::avm1::function::{Executable, FunctionObject}; use crate::avm1::object::value_object::ValueObject; use crate::avm1::property::Attribute; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{ArrayObject, AvmString, Object, TObject, Value}; -use crate::string::utils as string_utils; +use crate::avm1::{ArrayObject, Object, TObject, Value}; +use crate::string::{utils as string_utils, AvmString}; use gc_arena::MutationContext; const PROTO_DECLS: &[Declaration] = declare_properties! { diff --git a/core/src/avm1/globals/system_capabilities.rs b/core/src/avm1/globals/system_capabilities.rs index 83c9607bb..8c5a0a261 100644 --- a/core/src/avm1/globals/system_capabilities.rs +++ b/core/src/avm1/globals/system_capabilities.rs @@ -3,7 +3,8 @@ use crate::avm1::error::Error; use crate::avm1::globals::system::SystemCapabilities; use crate::avm1::object::Object; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, ScriptObject, Value}; +use crate::avm1::{ScriptObject, Value}; +use crate::string::AvmString; use gc_arena::MutationContext; const OBJECT_DECLS: &[Declaration] = declare_properties! { diff --git a/core/src/avm1/globals/system_security.rs b/core/src/avm1/globals/system_security.rs index f8449c6ec..a24a41cb4 100644 --- a/core/src/avm1/globals/system_security.rs +++ b/core/src/avm1/globals/system_security.rs @@ -2,8 +2,9 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; use crate::avm1::object::Object; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, ScriptObject, Value}; +use crate::avm1::{ScriptObject, Value}; use crate::avm_warn; +use crate::string::AvmString; use gc_arena::MutationContext; use std::convert::Into; diff --git a/core/src/avm1/globals/text_field.rs b/core/src/avm1/globals/text_field.rs index 9e987c31a..b7644f3f0 100644 --- a/core/src/avm1/globals/text_field.rs +++ b/core/src/avm1/globals/text_field.rs @@ -2,11 +2,12 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; use crate::avm1::globals::display_object; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{AvmString, Object, ScriptObject, TObject, Value}; +use crate::avm1::{Object, ScriptObject, TObject, Value}; use crate::avm_error; use crate::display_object::{AutoSizeMode, EditText, TDisplayObject, TextSelection}; use crate::font::round_down_to_pixel; use crate::html::TextFormat; +use crate::string::AvmString; use gc_arena::MutationContext; macro_rules! tf_method { diff --git a/core/src/avm1/globals/text_format.rs b/core/src/avm1/globals/text_format.rs index 7e4b54247..131d72fb3 100644 --- a/core/src/avm1/globals/text_format.rs +++ b/core/src/avm1/globals/text_format.rs @@ -2,7 +2,8 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; -use crate::avm1::{AvmString, Object, ScriptObject, TObject, Value}; +use crate::avm1::{Object, ScriptObject, TObject, Value}; +use crate::string::AvmString; use gc_arena::MutationContext; fn map_defined_to_string<'gc>( diff --git a/core/src/avm1/globals/xml.rs b/core/src/avm1/globals/xml.rs index 51af41303..755d89d60 100644 --- a/core/src/avm1/globals/xml.rs +++ b/core/src/avm1/globals/xml.rs @@ -4,9 +4,10 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; use crate::avm1::object::xml_object::XmlObject; use crate::avm1::property_decl::{define_properties_on, Declaration}; -use crate::avm1::{ArrayObject, AvmString, Object, TObject, Value}; +use crate::avm1::{ArrayObject, Object, TObject, Value}; use crate::avm_warn; use crate::backend::navigator::RequestOptions; +use crate::string::AvmString; use crate::xml; use crate::xml::{XmlDocument, XmlNode}; use gc_arena::MutationContext; diff --git a/core/src/avm1/object/script_object.rs b/core/src/avm1/object/script_object.rs index 9ab0e22bf..bde922343 100644 --- a/core/src/avm1/object/script_object.rs +++ b/core/src/avm1/object/script_object.rs @@ -3,7 +3,8 @@ use crate::avm1::error::Error; use crate::avm1::function::ExecutionReason; use crate::avm1::property::{Attribute, Property}; use crate::avm1::property_map::{Entry, PropertyMap}; -use crate::avm1::{AvmString, Object, ObjectPtr, TObject, Value}; +use crate::avm1::{Object, ObjectPtr, TObject, Value}; +use crate::string::AvmString; use core::fmt; use gc_arena::{Collect, GcCell, MutationContext}; use std::borrow::Cow; diff --git a/core/src/avm1/object/stage_object.rs b/core/src/avm1/object/stage_object.rs index 841182cdc..6b54e4c67 100644 --- a/core/src/avm1/object/stage_object.rs +++ b/core/src/avm1/object/stage_object.rs @@ -4,11 +4,12 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; use crate::avm1::property::Attribute; use crate::avm1::property_map::PropertyMap; -use crate::avm1::{AvmString, Object, ObjectPtr, ScriptObject, TDisplayObject, TObject, Value}; +use crate::avm1::{Object, ObjectPtr, ScriptObject, TDisplayObject, TObject, Value}; use crate::avm_warn; use crate::context::UpdateContext; use crate::display_object::{DisplayObject, EditText, MovieClip, TDisplayObjectContainer}; use crate::string::utils::swf_string_eq; +use crate::string::AvmString; use crate::types::Percent; use gc_arena::{Collect, GcCell, MutationContext}; use std::borrow::Cow; diff --git a/core/src/avm1/object/xml_attributes_object.rs b/core/src/avm1/object/xml_attributes_object.rs index 8c786c6a2..e81d144fa 100644 --- a/core/src/avm1/object/xml_attributes_object.rs +++ b/core/src/avm1/object/xml_attributes_object.rs @@ -4,7 +4,8 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; use crate::avm1::object::{ObjectPtr, TObject}; use crate::avm1::property::Attribute; -use crate::avm1::{AvmString, Object, ScriptObject, Value}; +use crate::avm1::{Object, ScriptObject, Value}; +use crate::string::AvmString; use crate::xml::{XmlName, XmlNode}; use gc_arena::{Collect, MutationContext}; use std::borrow::Cow; diff --git a/core/src/avm1/value.rs b/core/src/avm1/value.rs index fe6580cd9..835bd25fc 100644 --- a/core/src/avm1/value.rs +++ b/core/src/avm1/value.rs @@ -1,11 +1,12 @@ use crate::avm1::activation::Activation; use crate::avm1::error::Error; use crate::avm1::object::value_object::ValueObject; -use crate::avm1::{AvmString, Object, TObject}; +use crate::avm1::{Object, TObject}; use crate::ecma_conversions::{ f64_to_string, f64_to_wrapping_i16, f64_to_wrapping_i32, f64_to_wrapping_u16, f64_to_wrapping_u32, }; +use crate::string::AvmString; use gc_arena::Collect; use std::borrow::Cow; @@ -516,7 +517,8 @@ mod test { use crate::avm1::object::{Object, TObject}; use crate::avm1::property::Attribute; use crate::avm1::test_utils::with_avm; - use crate::avm1::{AvmString, Value}; + use crate::avm1::Value; + use crate::string::AvmString; #[test] fn to_primitive_num() { diff --git a/core/src/avm2.rs b/core/src/avm2.rs index 62826d747..4bc72e07f 100644 --- a/core/src/avm2.rs +++ b/core/src/avm2.rs @@ -4,8 +4,8 @@ use crate::avm2::globals::{SystemClasses, SystemPrototypes}; use crate::avm2::method::Method; use crate::avm2::object::EventObject; use crate::avm2::script::{Script, TranslationUnit}; -use crate::avm2::string::AvmString; use crate::context::UpdateContext; +use crate::string::AvmString; use crate::tag_utils::SwfSlice; use gc_arena::{Collect, MutationContext}; use std::collections::HashMap; diff --git a/core/src/avm2/activation.rs b/core/src/avm2/activation.rs index 44de4e7c1..9e7bf953c 100644 --- a/core/src/avm2/activation.rs +++ b/core/src/avm2/activation.rs @@ -10,10 +10,10 @@ use crate::avm2::object::{ use crate::avm2::object::{Object, TObject}; use crate::avm2::scope::Scope; use crate::avm2::script::Script; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::{value, Avm2, Error}; use crate::context::UpdateContext; +use crate::string::AvmString; use crate::swf::extensions::ReadSwfExt; use gc_arena::{Gc, GcCell, MutationContext}; use smallvec::SmallVec; diff --git a/core/src/avm2/class.rs b/core/src/avm2/class.rs index 26beaa9cc..b983b36d2 100644 --- a/core/src/avm2/class.rs +++ b/core/src/avm2/class.rs @@ -5,10 +5,10 @@ use crate::avm2::method::{Method, NativeMethodImpl}; use crate::avm2::names::{Multiname, Namespace, QName}; use crate::avm2::object::Object; use crate::avm2::script::TranslationUnit; -use crate::avm2::string::AvmString; use crate::avm2::traits::{Trait, TraitKind}; use crate::avm2::value::Value; use crate::avm2::Error; +use crate::string::AvmString; use bitflags::bitflags; use gc_arena::{Collect, GcCell, MutationContext}; use std::fmt; diff --git a/core/src/avm2/events.rs b/core/src/avm2/events.rs index ebf1d06b9..7e1a2d504 100644 --- a/core/src/avm2/events.rs +++ b/core/src/avm2/events.rs @@ -3,10 +3,10 @@ use crate::avm2::activation::Activation; use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::{Object, TObject}; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; use crate::display_object::TDisplayObject; +use crate::string::AvmString; use gc_arena::Collect; use std::collections::{BTreeMap, HashMap}; use std::hash::{Hash, Hasher}; diff --git a/core/src/avm2/globals.rs b/core/src/avm2/globals.rs index 2d27f5a12..9aa5e6a42 100644 --- a/core/src/avm2/globals.rs +++ b/core/src/avm2/globals.rs @@ -10,9 +10,9 @@ use crate::avm2::object::{ }; use crate::avm2::scope::Scope; use crate::avm2::script::Script; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; +use crate::string::AvmString; use gc_arena::{Collect, GcCell, MutationContext}; mod array; diff --git a/core/src/avm2/globals/array.rs b/core/src/avm2/globals/array.rs index 51fa44792..fe823bf51 100644 --- a/core/src/avm2/globals/array.rs +++ b/core/src/avm2/globals/array.rs @@ -6,9 +6,9 @@ use crate::avm2::class::Class; use crate::avm2::method::{Method, NativeMethodImpl}; use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::{array_allocator, ArrayObject, Object, TObject}; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; +use crate::string::AvmString; use bitflags::bitflags; use gc_arena::{GcCell, MutationContext}; use std::cmp::{min, Ordering}; diff --git a/core/src/avm2/globals/flash/display/displayobject.rs b/core/src/avm2/globals/flash/display/displayobject.rs index 33787e196..4075d1b93 100644 --- a/core/src/avm2/globals/flash/display/displayobject.rs +++ b/core/src/avm2/globals/flash/display/displayobject.rs @@ -5,10 +5,10 @@ use crate::avm2::class::Class; use crate::avm2::method::{Method, NativeMethodImpl}; use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::{stage_allocator, LoaderInfoObject, Object, TObject}; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; use crate::display_object::{DisplayObject, HitTestOptions, TDisplayObject}; +use crate::string::AvmString; use crate::types::{Degrees, Percent}; use crate::vminterface::Instantiator; use gc_arena::{GcCell, MutationContext}; diff --git a/core/src/avm2/globals/flash/display/movieclip.rs b/core/src/avm2/globals/flash/display/movieclip.rs index 3879939d2..31c25bbca 100644 --- a/core/src/avm2/globals/flash/display/movieclip.rs +++ b/core/src/avm2/globals/flash/display/movieclip.rs @@ -6,10 +6,10 @@ use crate::avm2::class::Class; use crate::avm2::method::{Method, NativeMethodImpl}; use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::{ArrayObject, Object, TObject}; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; use crate::display_object::{MovieClip, Scene, TDisplayObject}; +use crate::string::AvmString; use crate::tag_utils::{SwfMovie, SwfSlice}; use gc_arena::{GcCell, MutationContext}; use std::sync::Arc; diff --git a/core/src/avm2/globals/flash/display/stage.rs b/core/src/avm2/globals/flash/display/stage.rs index 974f1d8f1..bc02e8169 100644 --- a/core/src/avm2/globals/flash/display/stage.rs +++ b/core/src/avm2/globals/flash/display/stage.rs @@ -5,11 +5,11 @@ use crate::avm2::class::{Class, ClassAttributes}; use crate::avm2::method::{Method, NativeMethodImpl}; use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::{Object, TObject}; -use crate::avm2::string::AvmString; use crate::avm2::traits::Trait; use crate::avm2::value::Value; use crate::avm2::Error; use crate::display_object::TDisplayObject; +use crate::string::AvmString; use gc_arena::{GcCell, MutationContext}; use swf::Color; diff --git a/core/src/avm2/globals/flash/events/event.rs b/core/src/avm2/globals/flash/events/event.rs index e1e84683c..3e8038c2a 100644 --- a/core/src/avm2/globals/flash/events/event.rs +++ b/core/src/avm2/globals/flash/events/event.rs @@ -5,9 +5,9 @@ use crate::avm2::class::{Class, ClassAttributes}; use crate::avm2::method::{Method, NativeMethodImpl}; use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::{event_allocator, EventObject, Object, TObject}; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; +use crate::string::AvmString; use gc_arena::{GcCell, MutationContext}; /// Implements `flash.events.Event`'s instance constructor. diff --git a/core/src/avm2/globals/flash/geom/point.rs b/core/src/avm2/globals/flash/geom/point.rs index 4f5550d54..26ba034f0 100644 --- a/core/src/avm2/globals/flash/geom/point.rs +++ b/core/src/avm2/globals/flash/geom/point.rs @@ -1,9 +1,9 @@ //! `flash.geom.Point` builtin/prototype -use crate::avm1::AvmString; use crate::avm2::class::{Class, ClassAttributes}; use crate::avm2::method::{Method, NativeMethodImpl}; use crate::avm2::{Activation, Error, Namespace, Object, QName, TObject, Value}; +use crate::string::AvmString; use gc_arena::{GcCell, MutationContext}; pub fn create_point<'gc>( diff --git a/core/src/avm2/globals/flash/geom/rectangle.rs b/core/src/avm2/globals/flash/geom/rectangle.rs index a2573b4c2..b6f50e195 100644 --- a/core/src/avm2/globals/flash/geom/rectangle.rs +++ b/core/src/avm2/globals/flash/geom/rectangle.rs @@ -1,10 +1,10 @@ //! `flash.geom.Rectangle` builtin/prototype -use crate::avm1::AvmString; use crate::avm2::class::{Class, ClassAttributes}; use crate::avm2::globals::flash::geom::point::create_point; use crate::avm2::method::{Method, NativeMethodImpl}; use crate::avm2::{Activation, Error, Namespace, Object, QName, TObject, Value}; +use crate::string::AvmString; use gc_arena::{GcCell, MutationContext}; pub fn create_rectangle<'gc>( diff --git a/core/src/avm2/globals/flash/system/security.rs b/core/src/avm2/globals/flash/system/security.rs index 2d0296b63..ab5029b59 100644 --- a/core/src/avm2/globals/flash/system/security.rs +++ b/core/src/avm2/globals/flash/system/security.rs @@ -6,8 +6,8 @@ use crate::avm2::method::{Method, NativeMethodImpl}; use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::Object; use crate::avm2::value::Value; -use crate::avm2::AvmString; use crate::avm2::Error; +use crate::string::AvmString; use gc_arena::{GcCell, MutationContext}; fn instance_init<'gc>( diff --git a/core/src/avm2/globals/flash/text/textfield.rs b/core/src/avm2/globals/flash/text/textfield.rs index ec8c99763..bb67842cb 100644 --- a/core/src/avm2/globals/flash/text/textfield.rs +++ b/core/src/avm2/globals/flash/text/textfield.rs @@ -5,11 +5,11 @@ use crate::avm2::class::{Class, ClassAttributes}; use crate::avm2::method::{Method, NativeMethodImpl}; use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::{Object, TObject}; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; use crate::display_object::{AutoSizeMode, EditText, TDisplayObject, TextSelection}; use crate::html::TextFormat; +use crate::string::AvmString; use crate::tag_utils::SwfMovie; use crate::vminterface::AvmType; use gc_arena::{GcCell, MutationContext}; diff --git a/core/src/avm2/globals/flash/utils.rs b/core/src/avm2/globals/flash/utils.rs index 41d39c49d..b2167fff6 100644 --- a/core/src/avm2/globals/flash/utils.rs +++ b/core/src/avm2/globals/flash/utils.rs @@ -1,9 +1,9 @@ //! `flash.utils` namespace use crate::avm2::object::TObject; -use crate::avm2::string::AvmString; use crate::avm2::QName; use crate::avm2::{Activation, Error, Object, Value}; +use crate::string::AvmString; pub mod bytearray; pub mod compression_algorithm; diff --git a/core/src/avm2/globals/flash/utils/bytearray.rs b/core/src/avm2/globals/flash/utils/bytearray.rs index 6d3f8d221..1cf69f10e 100644 --- a/core/src/avm2/globals/flash/utils/bytearray.rs +++ b/core/src/avm2/globals/flash/utils/bytearray.rs @@ -4,10 +4,10 @@ use crate::avm2::class::{Class, ClassAttributes}; use crate::avm2::method::{Method, NativeMethodImpl}; use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::{bytearray_allocator, Object, TObject}; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; use crate::character::Character; +use crate::string::AvmString; use encoding_rs::Encoding; use encoding_rs::UTF_8; use gc_arena::{GcCell, MutationContext}; diff --git a/core/src/avm2/globals/regexp.rs b/core/src/avm2/globals/regexp.rs index e2daf9915..8ecc83154 100644 --- a/core/src/avm2/globals/regexp.rs +++ b/core/src/avm2/globals/regexp.rs @@ -4,10 +4,10 @@ use crate::avm2::class::Class; use crate::avm2::method::{Method, NativeMethodImpl, ParamConfig}; use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::{regexp_allocator, ArrayObject, Object, TObject}; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; use crate::avm2::{activation::Activation, array::ArrayStorage}; +use crate::string::AvmString; use gc_arena::{GcCell, MutationContext}; /// Implements `RegExp`'s instance initializer. diff --git a/core/src/avm2/globals/string.rs b/core/src/avm2/globals/string.rs index 88233bde7..56397106c 100644 --- a/core/src/avm2/globals/string.rs +++ b/core/src/avm2/globals/string.rs @@ -5,11 +5,11 @@ use crate::avm2::class::{Class, ClassAttributes}; use crate::avm2::method::{Method, NativeMethodImpl}; use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::{primitive_allocator, Object, TObject}; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::ArrayObject; use crate::avm2::Error; use crate::string::utils as string_utils; +use crate::string::AvmString; use gc_arena::{GcCell, MutationContext}; use std::iter; diff --git a/core/src/avm2/globals/vector.rs b/core/src/avm2/globals/vector.rs index 9aef37947..0971f65c4 100644 --- a/core/src/avm2/globals/vector.rs +++ b/core/src/avm2/globals/vector.rs @@ -10,10 +10,10 @@ use crate::avm2::globals::NS_VECTOR; use crate::avm2::method::{Method, NativeMethodImpl}; use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::{vector_allocator, FunctionObject, Object, TObject, VectorObject}; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::vector::VectorStorage; use crate::avm2::Error; +use crate::string::AvmString; use gc_arena::{GcCell, MutationContext}; use std::cmp::{max, min, Ordering}; diff --git a/core/src/avm2/method.rs b/core/src/avm2/method.rs index 67b336e62..38a3fcc51 100644 --- a/core/src/avm2/method.rs +++ b/core/src/avm2/method.rs @@ -4,9 +4,9 @@ use crate::avm2::activation::Activation; use crate::avm2::names::Multiname; use crate::avm2::object::Object; use crate::avm2::script::TranslationUnit; -use crate::avm2::string::AvmString; use crate::avm2::value::{abc_default_value, Value}; use crate::avm2::Error; +use crate::string::AvmString; use gc_arena::{Collect, CollectionContext, Gc, MutationContext}; use std::fmt; use std::rc::Rc; diff --git a/core/src/avm2/names.rs b/core/src/avm2/names.rs index 4aa08c613..72693eef5 100644 --- a/core/src/avm2/names.rs +++ b/core/src/avm2/names.rs @@ -2,8 +2,8 @@ use crate::avm2::activation::Activation; use crate::avm2::script::TranslationUnit; -use crate::avm2::string::AvmString; use crate::avm2::Error; +use crate::string::AvmString; use gc_arena::{Collect, MutationContext}; use swf::avm2::types::{ AbcFile, Index, Multiname as AbcMultiname, Namespace as AbcNamespace, diff --git a/core/src/avm2/object.rs b/core/src/avm2/object.rs index 5a42d2f6e..715055e79 100644 --- a/core/src/avm2/object.rs +++ b/core/src/avm2/object.rs @@ -10,7 +10,6 @@ use crate::avm2::function::Executable; use crate::avm2::names::{Multiname, Namespace, QName}; use crate::avm2::regexp::RegExp; use crate::avm2::scope::Scope; -use crate::avm2::string::AvmString; use crate::avm2::traits::{Trait, TraitKind}; use crate::avm2::value::{Hint, Value}; use crate::avm2::vector::VectorStorage; @@ -18,6 +17,7 @@ use crate::avm2::Error; use crate::backend::audio::{SoundHandle, SoundInstanceHandle}; use crate::bitmap::bitmap_data::BitmapData; use crate::display_object::DisplayObject; +use crate::string::AvmString; use gc_arena::{Collect, GcCell, MutationContext}; use ruffle_macros::enum_trait_object; use std::cell::{Ref, RefMut}; diff --git a/core/src/avm2/object/array_object.rs b/core/src/avm2/object/array_object.rs index 6bdfb50d9..c6871d9be 100644 --- a/core/src/avm2/object/array_object.rs +++ b/core/src/avm2/object/array_object.rs @@ -1,6 +1,5 @@ //! Array-structured objects -use crate::avm1::AvmString; use crate::avm2::activation::Activation; use crate::avm2::array::ArrayStorage; use crate::avm2::class::Class; @@ -10,6 +9,7 @@ use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::scope::Scope; use crate::avm2::value::Value; use crate::avm2::Error; +use crate::string::AvmString; use crate::{impl_avm2_custom_object, impl_avm2_custom_object_instance}; use gc_arena::{Collect, GcCell, MutationContext}; use std::cell::{Ref, RefMut}; diff --git a/core/src/avm2/object/bitmapdata_object.rs b/core/src/avm2/object/bitmapdata_object.rs index 575175243..972d5c6c4 100644 --- a/core/src/avm2/object/bitmapdata_object.rs +++ b/core/src/avm2/object/bitmapdata_object.rs @@ -6,10 +6,10 @@ use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::script_object::ScriptObjectData; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::scope::Scope; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; use crate::bitmap::bitmap_data::BitmapData; +use crate::string::AvmString; use crate::{ impl_avm2_custom_object, impl_avm2_custom_object_instance, impl_avm2_custom_object_properties, }; diff --git a/core/src/avm2/object/bytearray_object.rs b/core/src/avm2/object/bytearray_object.rs index f7799e2e0..47f6e06d8 100644 --- a/core/src/avm2/object/bytearray_object.rs +++ b/core/src/avm2/object/bytearray_object.rs @@ -5,9 +5,9 @@ use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::script_object::ScriptObjectData; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::scope::Scope; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; +use crate::string::AvmString; use crate::{impl_avm2_custom_object, impl_avm2_custom_object_instance}; use gc_arena::{Collect, GcCell, MutationContext}; use std::cell::{Ref, RefMut}; diff --git a/core/src/avm2/object/class_object.rs b/core/src/avm2/object/class_object.rs index fbf7da74e..022439aa1 100644 --- a/core/src/avm2/object/class_object.rs +++ b/core/src/avm2/object/class_object.rs @@ -8,9 +8,9 @@ use crate::avm2::object::function_object::FunctionObject; use crate::avm2::object::script_object::{scriptobject_allocator, ScriptObject, ScriptObjectData}; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::scope::Scope; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; +use crate::string::AvmString; use crate::{impl_avm2_custom_object, impl_avm2_custom_object_properties}; use gc_arena::{Collect, GcCell, MutationContext}; use std::collections::HashMap; diff --git a/core/src/avm2/object/dispatch_object.rs b/core/src/avm2/object/dispatch_object.rs index bfa0e5aaa..2fe58b88f 100644 --- a/core/src/avm2/object/dispatch_object.rs +++ b/core/src/avm2/object/dispatch_object.rs @@ -7,9 +7,9 @@ use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::script_object::ScriptObjectData; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::scope::Scope; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; +use crate::string::AvmString; use crate::{ impl_avm2_custom_object, impl_avm2_custom_object_instance, impl_avm2_custom_object_properties, }; diff --git a/core/src/avm2/object/domain_object.rs b/core/src/avm2/object/domain_object.rs index 8f3dfbfe4..276a1f66d 100644 --- a/core/src/avm2/object/domain_object.rs +++ b/core/src/avm2/object/domain_object.rs @@ -7,9 +7,9 @@ use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::script_object::ScriptObjectData; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::scope::Scope; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; +use crate::string::AvmString; use crate::{ impl_avm2_custom_object, impl_avm2_custom_object_instance, impl_avm2_custom_object_properties, }; diff --git a/core/src/avm2/object/event_object.rs b/core/src/avm2/object/event_object.rs index 390844018..def858e7d 100644 --- a/core/src/avm2/object/event_object.rs +++ b/core/src/avm2/object/event_object.rs @@ -7,9 +7,9 @@ use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::script_object::ScriptObjectData; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::scope::Scope; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; +use crate::string::AvmString; use crate::{ impl_avm2_custom_object, impl_avm2_custom_object_instance, impl_avm2_custom_object_properties, }; diff --git a/core/src/avm2/object/function_object.rs b/core/src/avm2/object/function_object.rs index 22b1d69b6..34726475f 100644 --- a/core/src/avm2/object/function_object.rs +++ b/core/src/avm2/object/function_object.rs @@ -8,9 +8,9 @@ use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::script_object::{ScriptObject, ScriptObjectData}; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::scope::Scope; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; +use crate::string::AvmString; use crate::{ impl_avm2_custom_object, impl_avm2_custom_object_instance, impl_avm2_custom_object_properties, }; diff --git a/core/src/avm2/object/loaderinfo_object.rs b/core/src/avm2/object/loaderinfo_object.rs index 5a39b1f1f..8c7878faf 100644 --- a/core/src/avm2/object/loaderinfo_object.rs +++ b/core/src/avm2/object/loaderinfo_object.rs @@ -6,10 +6,10 @@ use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::script_object::ScriptObjectData; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::scope::Scope; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; use crate::display_object::DisplayObject; +use crate::string::AvmString; use crate::tag_utils::SwfMovie; use crate::{ impl_avm2_custom_object, impl_avm2_custom_object_instance, impl_avm2_custom_object_properties, diff --git a/core/src/avm2/object/namespace_object.rs b/core/src/avm2/object/namespace_object.rs index 724c659d6..a12a1e59f 100644 --- a/core/src/avm2/object/namespace_object.rs +++ b/core/src/avm2/object/namespace_object.rs @@ -1,6 +1,5 @@ //! Boxed namespaces -use crate::avm1::AvmString; use crate::avm2::activation::Activation; use crate::avm2::class::Class; use crate::avm2::names::{Namespace, QName}; @@ -9,6 +8,7 @@ use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::scope::Scope; use crate::avm2::value::Value; use crate::avm2::Error; +use crate::string::AvmString; use crate::{ impl_avm2_custom_object, impl_avm2_custom_object_instance, impl_avm2_custom_object_properties, }; diff --git a/core/src/avm2/object/primitive_object.rs b/core/src/avm2/object/primitive_object.rs index 84a635743..4f61cef4f 100644 --- a/core/src/avm2/object/primitive_object.rs +++ b/core/src/avm2/object/primitive_object.rs @@ -8,9 +8,9 @@ use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::script_object::ScriptObjectData; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::scope::Scope; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; +use crate::string::AvmString; use crate::{ impl_avm2_custom_object, impl_avm2_custom_object_instance, impl_avm2_custom_object_properties, }; diff --git a/core/src/avm2/object/regexp_object.rs b/core/src/avm2/object/regexp_object.rs index 1f0356402..5005302ec 100644 --- a/core/src/avm2/object/regexp_object.rs +++ b/core/src/avm2/object/regexp_object.rs @@ -7,9 +7,9 @@ use crate::avm2::object::script_object::ScriptObjectData; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::regexp::RegExp; use crate::avm2::scope::Scope; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; +use crate::string::AvmString; use crate::{ impl_avm2_custom_object, impl_avm2_custom_object_instance, impl_avm2_custom_object_properties, }; diff --git a/core/src/avm2/object/script_object.rs b/core/src/avm2/object/script_object.rs index e84f0e77d..bedeefe80 100644 --- a/core/src/avm2/object/script_object.rs +++ b/core/src/avm2/object/script_object.rs @@ -9,9 +9,9 @@ use crate::avm2::property_map::PropertyMap; use crate::avm2::return_value::ReturnValue; use crate::avm2::scope::Scope; use crate::avm2::slot::Slot; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; +use crate::string::AvmString; use gc_arena::{Collect, GcCell, MutationContext}; use std::collections::HashMap; use std::fmt::Debug; diff --git a/core/src/avm2/object/sound_object.rs b/core/src/avm2/object/sound_object.rs index afec44361..65ce4e51e 100644 --- a/core/src/avm2/object/sound_object.rs +++ b/core/src/avm2/object/sound_object.rs @@ -6,10 +6,10 @@ use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::script_object::ScriptObjectData; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::scope::Scope; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; use crate::backend::audio::SoundHandle; +use crate::string::AvmString; use crate::{ impl_avm2_custom_object, impl_avm2_custom_object_instance, impl_avm2_custom_object_properties, }; diff --git a/core/src/avm2/object/soundchannel_object.rs b/core/src/avm2/object/soundchannel_object.rs index c7ee2e488..79ab7fbac 100644 --- a/core/src/avm2/object/soundchannel_object.rs +++ b/core/src/avm2/object/soundchannel_object.rs @@ -6,10 +6,10 @@ use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::script_object::ScriptObjectData; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::scope::Scope; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; use crate::backend::audio::SoundInstanceHandle; +use crate::string::AvmString; use crate::{ impl_avm2_custom_object, impl_avm2_custom_object_instance, impl_avm2_custom_object_properties, }; diff --git a/core/src/avm2/object/stage_object.rs b/core/src/avm2/object/stage_object.rs index 617264c83..82542524b 100644 --- a/core/src/avm2/object/stage_object.rs +++ b/core/src/avm2/object/stage_object.rs @@ -7,10 +7,10 @@ use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::script_object::ScriptObjectData; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::scope::Scope; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; use crate::display_object::DisplayObject; +use crate::string::AvmString; use gc_arena::{Collect, GcCell, MutationContext}; /// A class instance allocator that allocates Stage objects. diff --git a/core/src/avm2/object/vector_object.rs b/core/src/avm2/object/vector_object.rs index f94f5ef60..4c4ba8169 100644 --- a/core/src/avm2/object/vector_object.rs +++ b/core/src/avm2/object/vector_object.rs @@ -6,10 +6,10 @@ use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::script_object::ScriptObjectData; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::scope::Scope; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::vector::VectorStorage; use crate::avm2::Error; +use crate::string::AvmString; use crate::{impl_avm2_custom_object, impl_avm2_custom_object_instance}; use gc_arena::{Collect, GcCell, MutationContext}; use std::cell::{Ref, RefMut}; diff --git a/core/src/avm2/object/xml_object.rs b/core/src/avm2/object/xml_object.rs index 9523f2a76..1abe24501 100644 --- a/core/src/avm2/object/xml_object.rs +++ b/core/src/avm2/object/xml_object.rs @@ -6,9 +6,9 @@ use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::script_object::ScriptObjectData; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::scope::Scope; -use crate::avm2::string::AvmString; use crate::avm2::value::Value; use crate::avm2::Error; +use crate::string::AvmString; use crate::{ impl_avm2_custom_object, impl_avm2_custom_object_instance, impl_avm2_custom_object_properties, }; diff --git a/core/src/avm2/regexp.rs b/core/src/avm2/regexp.rs index ad37b1a98..5aa343fb9 100644 --- a/core/src/avm2/regexp.rs +++ b/core/src/avm2/regexp.rs @@ -1,6 +1,6 @@ //! RegExp Structure -use crate::avm2::string::AvmString; +use crate::string::AvmString; use bitflags::bitflags; use gc_arena::Collect; use regress::Regex; diff --git a/core/src/avm2/script.rs b/core/src/avm2/script.rs index 9feb676d1..b91c2a2d8 100644 --- a/core/src/avm2/script.rs +++ b/core/src/avm2/script.rs @@ -5,11 +5,11 @@ use crate::avm2::class::Class; use crate::avm2::domain::Domain; use crate::avm2::method::{BytecodeMethod, Method}; use crate::avm2::object::{DomainObject, Object, TObject}; -use crate::avm2::string::AvmString; use crate::avm2::traits::Trait; use crate::avm2::value::Value; use crate::avm2::{Avm2, Error}; use crate::context::UpdateContext; +use crate::string::AvmString; use fnv::FnvHashMap; use gc_arena::{Collect, Gc, GcCell, MutationContext}; use std::cell::Ref; diff --git a/core/src/avm2/string.rs b/core/src/avm2/string.rs index da58c3f2f..cbb2056b9 100644 --- a/core/src/avm2/string.rs +++ b/core/src/avm2/string.rs @@ -1,3 +1,3 @@ //! AVM2 String representation -pub use crate::avm1::AvmString; +pub use crate::string::AvmString; diff --git a/core/src/avm2/value.rs b/core/src/avm2/value.rs index c6fd32785..0219c86dd 100644 --- a/core/src/avm2/value.rs +++ b/core/src/avm2/value.rs @@ -5,9 +5,9 @@ use crate::avm2::names::Namespace; use crate::avm2::names::QName; use crate::avm2::object::{NamespaceObject, Object, PrimitiveObject, TObject}; use crate::avm2::script::TranslationUnit; -use crate::avm2::string::AvmString; use crate::avm2::Error; use crate::ecma_conversions::{f64_to_wrapping_i32, f64_to_wrapping_u32}; +use crate::string::AvmString; use gc_arena::{Collect, MutationContext}; use std::cell::Ref; use swf::avm2::types::{DefaultValue as AbcDefaultValue, Index}; diff --git a/core/src/display_object/edit_text.rs b/core/src/display_object/edit_text.rs index d774574c0..a6b49cdaf 100644 --- a/core/src/display_object/edit_text.rs +++ b/core/src/display_object/edit_text.rs @@ -2,7 +2,7 @@ use crate::avm1::activation::{Activation as Avm1Activation, ActivationIdentifier}; use crate::avm1::{ - Avm1, AvmString, Object as Avm1Object, StageObject as Avm1StageObject, TObject as Avm1TObject, + Avm1, Object as Avm1Object, StageObject as Avm1StageObject, TObject as Avm1TObject, Value as Avm1Value, }; use crate::avm2::{ @@ -17,7 +17,7 @@ use crate::font::{round_down_to_pixel, Glyph, TextRenderSettings}; use crate::html::{BoxBounds, FormatSpans, LayoutBox, LayoutContent, TextFormat}; use crate::prelude::*; use crate::shape_utils::DrawCommand; -use crate::string::utils as string_utils; +use crate::string::{utils as string_utils, AvmString}; use crate::tag_utils::SwfMovie; use crate::transform::Transform; use crate::types::{Degrees, Percent}; diff --git a/core/src/display_object/movie_clip.rs b/core/src/display_object/movie_clip.rs index e217e1074..ca7e78654 100644 --- a/core/src/display_object/movie_clip.rs +++ b/core/src/display_object/movie_clip.rs @@ -1,6 +1,6 @@ //! `MovieClip` display object and support code. use crate::avm1::{ - Avm1, AvmString, Object as Avm1Object, StageObject, TObject as Avm1TObject, Value as Avm1Value, + Avm1, Object as Avm1Object, StageObject, TObject as Avm1TObject, Value as Avm1Value, }; use crate::avm2::Activation as Avm2Activation; use crate::avm2::{ @@ -27,6 +27,7 @@ use crate::drawing::Drawing; use crate::events::{ButtonKeyCode, ClipEvent, ClipEventResult}; use crate::font::Font; use crate::prelude::*; +use crate::string::AvmString; use crate::tag_utils::{self, DecodeResult, SwfMovie, SwfSlice, SwfStream}; use crate::types::{Degrees, Percent}; use crate::vminterface::{AvmObject, AvmType, Instantiator}; diff --git a/core/src/external.rs b/core/src/external.rs index f600696b2..6c20caaea 100644 --- a/core/src/external.rs +++ b/core/src/external.rs @@ -4,10 +4,11 @@ use crate::avm1::activation::{ use crate::avm1::object::TObject; use crate::avm1::Value as Avm1Value; use crate::avm1::{ - ArrayObject as Avm1ArrayObject, AvmString as Avm1String, Error as Avm1Error, - Object as Avm1Object, ScriptObject as Avm1ScriptObject, + ArrayObject as Avm1ArrayObject, Error as Avm1Error, Object as Avm1Object, + ScriptObject as Avm1ScriptObject, }; use crate::context::UpdateContext; +use crate::string::AvmString; use gc_arena::Collect; use std::collections::BTreeMap; @@ -24,8 +25,8 @@ pub enum Value { List(Vec), } -impl From> for Value { - fn from(string: Avm1String<'_>) -> Self { +impl From> for Value { + fn from(string: AvmString<'_>) -> Self { Value::String(string.to_string()) } } @@ -153,7 +154,7 @@ impl Value { Value::Bool(value) => Avm1Value::Bool(value), Value::Number(value) => Avm1Value::Number(value), Value::String(value) => { - Avm1Value::String(Avm1String::new(activation.context.gc_context, value)) + Avm1Value::String(AvmString::new(activation.context.gc_context, value)) } Value::Object(values) => { let object = Avm1ScriptObject::object( diff --git a/core/src/html/text_format.rs b/core/src/html/text_format.rs index 92219393b..11e900306 100644 --- a/core/src/html/text_format.rs +++ b/core/src/html/text_format.rs @@ -2,8 +2,8 @@ use crate::avm1::activation::Activation as Avm1Activation; use crate::avm1::{ - ArrayObject as Avm1ArrayObject, AvmString, Object as Avm1Object, - ScriptObject as Avm1ScriptObject, TObject as Avm1TObject, Value as Avm1Value, + ArrayObject as Avm1ArrayObject, Object as Avm1Object, ScriptObject as Avm1ScriptObject, + TObject as Avm1TObject, Value as Avm1Value, }; use crate::avm2::{ Activation as Avm2Activation, ArrayObject as Avm2ArrayObject, Error as Avm2Error, @@ -12,6 +12,7 @@ use crate::avm2::{ }; use crate::context::UpdateContext; use crate::html::iterators::TextSpanIter; +use crate::string::AvmString; use crate::tag_utils::SwfMovie; use crate::xml::{Step, XmlDocument, XmlName, XmlNode}; use gc_arena::{Collect, MutationContext}; diff --git a/core/src/loader.rs b/core/src/loader.rs index 86caf2162..fb2e55c54 100644 --- a/core/src/loader.rs +++ b/core/src/loader.rs @@ -1,12 +1,13 @@ //! Management of async loaders use crate::avm1::activation::{Activation, ActivationIdentifier}; -use crate::avm1::{Avm1, AvmString, Object, TObject, Value}; +use crate::avm1::{Avm1, Object, TObject, Value}; use crate::avm2::{Activation as Avm2Activation, Domain as Avm2Domain}; use crate::backend::navigator::OwnedFuture; use crate::context::{ActionQueue, ActionType}; use crate::display_object::{DisplayObject, MorphShape, TDisplayObject}; use crate::player::{Player, NEWEST_PLAYER_VERSION}; +use crate::string::AvmString; use crate::tag_utils::SwfMovie; use crate::vminterface::Instantiator; use crate::xml::XmlNode; diff --git a/core/src/player.rs b/core/src/player.rs index a9eebfc59..c9e237992 100644 --- a/core/src/player.rs +++ b/core/src/player.rs @@ -3,7 +3,7 @@ use crate::avm1::debug::VariableDumper; use crate::avm1::globals::system::SystemProperties; use crate::avm1::object::Object; use crate::avm1::property::Attribute; -use crate::avm1::{Avm1, AvmString, ScriptObject, TObject, Timers, Value}; +use crate::avm1::{Avm1, ScriptObject, TObject, Timers, Value}; use crate::avm2::{Activation as Avm2Activation, Avm2, Domain as Avm2Domain}; use crate::backend::{ audio::{AudioBackend, AudioManager}, @@ -28,6 +28,7 @@ use crate::focus_tracker::FocusTracker; use crate::library::Library; use crate::loader::LoadManager; use crate::prelude::*; +use crate::string::AvmString; use crate::tag_utils::SwfMovie; use crate::transform::TransformStack; use crate::vminterface::{AvmType, Instantiator}; diff --git a/core/src/string.rs b/core/src/string.rs index 00e65679a..6acbbba2f 100644 --- a/core/src/string.rs +++ b/core/src/string.rs @@ -1,2 +1,5 @@ +mod avm; mod tables; pub mod utils; + +pub use avm::AvmString; diff --git a/core/src/avm1/string.rs b/core/src/string/avm.rs similarity index 100% rename from core/src/avm1/string.rs rename to core/src/string/avm.rs diff --git a/core/src/string/utils.rs b/core/src/string/utils.rs index 4204ab94d..069c21185 100644 --- a/core/src/string/utils.rs +++ b/core/src/string/utils.rs @@ -1,5 +1,4 @@ ///! Utilities for operating on strings in SWF files. - use super::tables::{LOWERCASE_TABLE, UPPERCASE_TABLE}; /// Gets the position of the previous char