diff options
author | Ms2ger <ms2ger@gmail.com> | 2015-04-28 19:42:46 +0200 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2015-04-28 23:31:10 +0200 |
commit | 903305416a8fd4eef75960f9e83491adaaa519e8 (patch) | |
tree | 445f64c0a52c3b554ffc50ee96fe54ea11f32f86 /components/script/dom | |
parent | b6fc83cf2b4b426548bb9d10e9493f2b111bd617 (diff) | |
download | servo-903305416a8fd4eef75960f9e83491adaaa519e8.tar.gz servo-903305416a8fd4eef75960f9e83491adaaa519e8.zip |
Implement Clone for Copy types.
Diffstat (limited to 'components/script/dom')
20 files changed, 39 insertions, 30 deletions
diff --git a/components/script/dom/bindings/callback.rs b/components/script/dom/bindings/callback.rs index 1d3936f21bb..975e3cb99d9 100644 --- a/components/script/dom/bindings/callback.rs +++ b/components/script/dom/bindings/callback.rs @@ -16,7 +16,7 @@ use std::ffi::CString; use std::ptr; /// The exception handling used for a call. -#[derive(Copy, PartialEq)] +#[derive(Copy, Clone, PartialEq)] pub enum ExceptionHandling { /// Report any exception and don't throw it to the caller code. Report, diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index b48efbda91d..b63df28d349 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -2917,7 +2917,7 @@ class CGEnum(CGThing): decl = """\ #[repr(usize)] -#[derive(PartialEq, Copy)] +#[derive(PartialEq, Copy, Clone)] #[jstraceable] pub enum %s { %s @@ -5388,8 +5388,8 @@ class GlobalGenRoots(): return CGList([ CGGeneric(AUTOGENERATED_WARNING_COMMENT), CGGeneric("pub const MAX_PROTO_CHAIN_LENGTH: usize = %d;\n\n" % config.maxProtoChainLength), - CGNonNamespacedEnum('ID', protos, [0], deriving="PartialEq, Copy"), - CGNonNamespacedEnum('Proxies', proxies, [0], deriving="PartialEq, Copy"), + CGNonNamespacedEnum('ID', protos, [0], deriving="PartialEq, Copy, Clone"), + CGNonNamespacedEnum('Proxies', proxies, [0], deriving="PartialEq, Copy, Clone"), ]) diff --git a/components/script/dom/bindings/global.rs b/components/script/dom/bindings/global.rs index 8297c2244a9..1b34844fa53 100644 --- a/components/script/dom/bindings/global.rs +++ b/components/script/dom/bindings/global.rs @@ -25,7 +25,7 @@ use js::jsapi::{JS_GetClass}; use url::Url; /// A freely-copyable reference to a rooted global object. -#[derive(Copy)] +#[derive(Copy, Clone)] pub enum GlobalRef<'a> { /// A reference to a `Window` object. Window(JSRef<'a, window::Window>), diff --git a/components/script/dom/bindings/js.rs b/components/script/dom/bindings/js.rs index 115fcdbbe97..c80aa48b4ac 100644 --- a/components/script/dom/bindings/js.rs +++ b/components/script/dom/bindings/js.rs @@ -124,6 +124,9 @@ impl<T: Reflectable> Rootable<T> for Unrooted<T> { } impl<T> Copy for Unrooted<T> {} +impl<T> Clone for Unrooted<T> { + fn clone(&self) -> Unrooted<T> { *self } +} /// A type that represents a JS-owned value that is rooted for the lifetime of /// this value. Importantly, it requires explicit rooting in order to interact @@ -545,6 +548,9 @@ pub struct RootCollection { pub struct RootCollectionPtr(pub *const RootCollection); impl Copy for RootCollectionPtr {} +impl Clone for RootCollectionPtr { + fn clone(&self) -> RootCollectionPtr { *self } +} impl RootCollection { /// Create an empty collection of roots diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs index 369a4f11d88..2c96fa2c0dd 100644 --- a/components/script/dom/bindings/utils.rs +++ b/components/script/dom/bindings/utils.rs @@ -129,7 +129,7 @@ pub struct NativePropertyHooks { } /// The struct that holds inheritance information for DOM object reflectors. -#[derive(Copy)] +#[derive(Copy, Clone)] pub struct DOMClass { /// A list of interfaces that this object implements, in order of decreasing /// derivedness. @@ -148,6 +148,9 @@ pub struct DOMJSClass { /// Associated data for DOM object reflectors. pub dom_class: DOMClass } +impl Clone for DOMJSClass { + fn clone(&self) -> DOMJSClass { *self } +} unsafe impl Sync for DOMJSClass {} /// Returns the ProtoOrIfaceArray for the given global object. diff --git a/components/script/dom/domexception.rs b/components/script/dom/domexception.rs index 1c5a436199f..414e4481f16 100644 --- a/components/script/dom/domexception.rs +++ b/components/script/dom/domexception.rs @@ -13,7 +13,7 @@ use util::str::DOMString; use std::borrow::ToOwned; #[repr(u16)] -#[derive(Copy, Debug)] +#[derive(Copy, Clone, Debug)] #[jstraceable] pub enum DOMErrorName { IndexSizeError = DOMExceptionConstants::INDEX_SIZE_ERR, diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 03f8f17195f..a936e783ad4 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -108,7 +108,7 @@ impl ElementDerived for EventTarget { } } -#[derive(Copy, PartialEq, Debug)] +#[derive(Copy, Clone, PartialEq, Debug)] #[jstraceable] pub enum ElementTypeId { HTMLElement(HTMLElementTypeId), diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs index 55883659c39..4f0086310aa 100644 --- a/components/script/dom/event.rs +++ b/components/script/dom/event.rs @@ -19,7 +19,7 @@ use std::default::Default; use time; #[jstraceable] -#[derive(Copy)] +#[derive(Copy, Clone)] #[repr(u16)] pub enum EventPhase { None = EventConstants::NONE, diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs index ab0e73ec8de..01e436c9743 100644 --- a/components/script/dom/eventtarget.rs +++ b/components/script/dom/eventtarget.rs @@ -33,14 +33,14 @@ use url::Url; use std::collections::HashMap; -#[derive(Copy, PartialEq)] +#[derive(Copy, Clone, PartialEq)] #[jstraceable] pub enum ListenerPhase { Capturing, Bubbling, } -#[derive(Copy, PartialEq)] +#[derive(Copy, Clone, PartialEq)] #[jstraceable] pub enum EventTargetTypeId { Node(NodeTypeId), @@ -51,7 +51,7 @@ pub enum EventTargetTypeId { XMLHttpRequestEventTarget(XMLHttpRequestEventTargetTypeId) } -#[derive(Copy, PartialEq)] +#[derive(Copy, Clone, PartialEq)] #[jstraceable] pub enum EventListenerType { Additive(EventListener), @@ -67,7 +67,7 @@ impl EventListenerType { } } -#[derive(Copy, PartialEq)] +#[derive(Copy, Clone, PartialEq)] #[jstraceable] #[privatize] pub struct EventListenerEntry { diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs index 57ce2aed0f0..22c1b67656a 100644 --- a/components/script/dom/htmlbuttonelement.rs +++ b/components/script/dom/htmlbuttonelement.rs @@ -29,7 +29,7 @@ use std::cell::Cell; use string_cache::Atom; #[jstraceable] -#[derive(PartialEq, Copy)] +#[derive(PartialEq, Copy, Clone)] #[allow(dead_code)] enum ButtonType { ButtonSubmit, diff --git a/components/script/dom/htmlelement.rs b/components/script/dom/htmlelement.rs index 0b5fa1b5639..f42aceced3a 100644 --- a/components/script/dom/htmlelement.rs +++ b/components/script/dom/htmlelement.rs @@ -239,7 +239,7 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLElement> { } } -#[derive(Copy, PartialEq, Debug)] +#[derive(Copy, Clone, PartialEq, Debug)] #[jstraceable] pub enum HTMLElementTypeId { HTMLElement, diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index abb3ec98aa6..c5c1ae2e77a 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -133,13 +133,13 @@ impl<'a> HTMLFormElementMethods for JSRef<'a, HTMLFormElement> { } } -#[derive(Copy)] +#[derive(Copy, Clone)] pub enum SubmittedFrom { FromFormSubmitMethod, NotFromFormSubmitMethod } -#[derive(Copy)] +#[derive(Copy, Clone)] pub enum ResetFrom { FromFormResetMethod, NotFromFormResetMethod @@ -407,21 +407,21 @@ pub struct FormDatum { pub value: DOMString } -#[derive(Copy)] +#[derive(Copy, Clone)] pub enum FormEncType { TextPlainEncoded, UrlEncoded, FormDataEncoded } -#[derive(Copy)] +#[derive(Copy, Clone)] pub enum FormMethod { FormGet, FormPost, FormDialog } -#[derive(Copy)] +#[derive(Copy, Clone)] pub enum FormSubmitter<'a> { FormElement(JSRef<'a, HTMLFormElement>), InputElement(JSRef<'a, HTMLInputElement>), diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index e72d13295ec..379327d760a 100644 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -48,7 +48,7 @@ const DEFAULT_SUBMIT_VALUE: &'static str = "Submit"; const DEFAULT_RESET_VALUE: &'static str = "Reset"; #[jstraceable] -#[derive(PartialEq, Copy)] +#[derive(PartialEq, Copy, Clone)] #[allow(dead_code)] enum InputType { InputSubmit, diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index 331d43e8aba..86a882dbb86 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -38,7 +38,7 @@ impl HTMLMediaElement { } } -#[derive(Copy, PartialEq, Debug)] +#[derive(Copy, Clone, PartialEq, Debug)] #[jstraceable] pub enum HTMLMediaElementTypeId { HTMLAudioElement, diff --git a/components/script/dom/htmltablecellelement.rs b/components/script/dom/htmltablecellelement.rs index 1737bddcb84..378a804c361 100644 --- a/components/script/dom/htmltablecellelement.rs +++ b/components/script/dom/htmltablecellelement.rs @@ -16,7 +16,7 @@ use cssparser::RGBA; use util::str::{self, DOMString, LengthOrPercentageOrAuto}; use std::cell::Cell; -#[derive(Copy, PartialEq, Debug)] +#[derive(Copy, Clone, PartialEq, Debug)] #[jstraceable] pub enum HTMLTableCellElementTypeId { HTMLTableDataCellElement, diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index f8dc318b6c6..d5e3482a10e 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -190,7 +190,7 @@ impl Drop for Node { /// suppress observers flag /// https://dom.spec.whatwg.org/#concept-node-insert /// https://dom.spec.whatwg.org/#concept-node-remove -#[derive(Copy)] +#[derive(Copy, Clone)] enum SuppressObserver { Suppressed, Unsuppressed @@ -266,7 +266,7 @@ impl LayoutDataRef { } /// The different types of nodes. -#[derive(Copy, PartialEq, Debug)] +#[derive(Copy, Clone, PartialEq, Debug)] #[jstraceable] pub enum NodeTypeId { DocumentType, @@ -1311,7 +1311,7 @@ impl Iterator for TreeIterator { /// Specifies whether children must be recursively cloned or not. -#[derive(Copy, PartialEq)] +#[derive(Copy, Clone, PartialEq)] pub enum CloneChildrenFlag { CloneChildren, DoNotCloneChildren diff --git a/components/script/dom/servohtmlparser.rs b/components/script/dom/servohtmlparser.rs index fbd89a27787..199c06dca35 100644 --- a/components/script/dom/servohtmlparser.rs +++ b/components/script/dom/servohtmlparser.rs @@ -33,7 +33,7 @@ pub struct Sink { /// FragmentContext is used only to pass this group of related values /// into functions. -#[derive(Copy)] +#[derive(Copy, Clone)] pub struct FragmentContext<'a> { pub context_elem: JSRef<'a, Node>, pub form_elem: Option<JSRef<'a, Node>>, diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs index ec58f3e4221..8723454182b 100644 --- a/components/script/dom/workerglobalscope.rs +++ b/components/script/dom/workerglobalscope.rs @@ -34,7 +34,7 @@ use std::rc::Rc; use std::cell::Cell; use url::{Url, UrlParser}; -#[derive(Copy, PartialEq)] +#[derive(Copy, Clone, PartialEq)] #[jstraceable] pub enum WorkerGlobalScopeTypeId { DedicatedGlobalScope, diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 3e84dfc0037..73748b27f14 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -67,7 +67,7 @@ use dom::bindings::codegen::UnionTypes::StringOrURLSearchParams; use dom::bindings::codegen::UnionTypes::StringOrURLSearchParams::{eString, eURLSearchParams}; pub type SendParam = StringOrURLSearchParams; -#[derive(PartialEq, Copy)] +#[derive(PartialEq, Copy, Clone)] #[jstraceable] enum XMLHttpRequestState { Unsent = 0, diff --git a/components/script/dom/xmlhttprequesteventtarget.rs b/components/script/dom/xmlhttprequesteventtarget.rs index e27496ec2d9..2457f192883 100644 --- a/components/script/dom/xmlhttprequesteventtarget.rs +++ b/components/script/dom/xmlhttprequesteventtarget.rs @@ -9,7 +9,7 @@ use dom::bindings::codegen::InheritTypes::XMLHttpRequestEventTargetDerived; use dom::bindings::js::JSRef; use dom::eventtarget::{EventTarget, EventTargetHelpers, EventTargetTypeId}; -#[derive(Copy, PartialEq)] +#[derive(Copy, Clone, PartialEq)] #[jstraceable] pub enum XMLHttpRequestEventTargetTypeId { XMLHttpRequest, |