From dc962f2abdaea37930d86c8e92a665eda1efbf4b Mon Sep 17 00:00:00 2001 From: David Wendt Date: Sat, 18 Jul 2020 16:41:35 -0400 Subject: [PATCH] Add AVM2 equivalent of `PropertyMap` for further expansion. --- core/src/avm2.rs | 1 + core/src/avm2/property_map.rs | 7 +++++++ core/src/avm2/script_object.rs | 3 ++- 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 core/src/avm2/property_map.rs diff --git a/core/src/avm2.rs b/core/src/avm2.rs index a38380bec..31d797234 100644 --- a/core/src/avm2.rs +++ b/core/src/avm2.rs @@ -29,6 +29,7 @@ mod method; mod names; mod object; mod property; +mod property_map; mod return_value; mod scope; mod script; diff --git a/core/src/avm2/property_map.rs b/core/src/avm2/property_map.rs new file mode 100644 index 000000000..c9d762c38 --- /dev/null +++ b/core/src/avm2/property_map.rs @@ -0,0 +1,7 @@ +//! Property map + +use crate::avm2::names::QName; +use std::collections::HashMap; + +/// Type which represents named properties on an object. +pub type PropertyMap<'gc, V> = HashMap, V>; diff --git a/core/src/avm2/script_object.rs b/core/src/avm2/script_object.rs index 3e0b6dcdd..c306f9836 100644 --- a/core/src/avm2/script_object.rs +++ b/core/src/avm2/script_object.rs @@ -6,6 +6,7 @@ use crate::avm2::function::Executable; use crate::avm2::names::{Namespace, QName}; use crate::avm2::object::{Object, ObjectPtr, TObject}; use crate::avm2::property::Property; +use crate::avm2::property_map::PropertyMap; use crate::avm2::r#trait::Trait; use crate::avm2::return_value::ReturnValue; use crate::avm2::scope::Scope; @@ -53,7 +54,7 @@ pub enum ScriptObjectClass<'gc> { #[collect(no_drop)] pub struct ScriptObjectData<'gc> { /// Properties stored on this object. - values: HashMap, Property<'gc>>, + values: PropertyMap<'gc, Property<'gc>>, /// Slots stored on this object. slots: Vec>,