diff options
Diffstat (limited to 'components/style_traits')
-rw-r--r-- | components/style_traits/Cargo.toml | 17 | ||||
-rw-r--r-- | components/style_traits/cursor.rs | 3 | ||||
-rw-r--r-- | components/style_traits/lib.rs | 15 | ||||
-rw-r--r-- | components/style_traits/values.rs | 32 | ||||
-rw-r--r-- | components/style_traits/viewport.rs | 6 |
5 files changed, 53 insertions, 20 deletions
diff --git a/components/style_traits/Cargo.toml b/components/style_traits/Cargo.toml index b089931d3cb..e823e1fbe7e 100644 --- a/components/style_traits/Cargo.toml +++ b/components/style_traits/Cargo.toml @@ -8,13 +8,16 @@ publish = false name = "style_traits" path = "lib.rs" +[features] +servo = ["heapsize", "heapsize_plugin", "serde", "serde_macros", "euclid/plugins", + "cssparser/heap_size", "cssparser/serde-serialization", "util/servo"] + [dependencies] util = {path = "../util"} -plugins = {path = "../plugins"} -cssparser = {version = "0.5.4", features = ["heap_size", "serde-serialization"]} -euclid = {version = "0.6.4", features = ["plugins"]} -heapsize = "0.3.0" -heapsize_plugin = "0.1.2" +cssparser = "0.5.4" +euclid = "0.6.4" +heapsize = {version = "0.3.0", optional = true} +heapsize_plugin = {version = "0.1.2", optional = true} rustc-serialize = "0.3" -serde = "0.7" -serde_macros = "0.7" +serde = {version = "0.7", optional = true} +serde_macros = {version = "0.7", optional = true} diff --git a/components/style_traits/cursor.rs b/components/style_traits/cursor.rs index be1d9b3c0b3..d667b1c3d73 100644 --- a/components/style_traits/cursor.rs +++ b/components/style_traits/cursor.rs @@ -8,7 +8,8 @@ use cssparser::ToCss; macro_rules! define_cursor { ($( $css: expr => $variant: ident = $value: expr, )+) => { - #[derive(Clone, Copy, Debug, Deserialize, Eq, HeapSizeOf, PartialEq, Serialize)] + #[derive(Clone, Copy, Debug, Eq, PartialEq)] + #[cfg_attr(feature = "servo", derive(Deserialize, Serialize, HeapSizeOf))] #[repr(u8)] pub enum Cursor { $( $variant = $value ),+ diff --git a/components/style_traits/lib.rs b/components/style_traits/lib.rs index 5cb01bb8c03..3b68e412d36 100644 --- a/components/style_traits/lib.rs +++ b/components/style_traits/lib.rs @@ -8,19 +8,20 @@ #![crate_name = "style_traits"] #![crate_type = "rlib"] -#![feature(custom_derive)] -#![feature(plugin)] -#![plugin(heapsize_plugin)] -#![plugin(serde_macros)] -#![plugin(plugins)] + #![deny(unsafe_code)] +#![cfg_attr(feature = "servo", feature(custom_derive))] +#![cfg_attr(feature = "servo", feature(plugin))] +#![cfg_attr(feature = "servo", plugin(serde_macros))] +#![cfg_attr(feature = "servo", plugin(heapsize_plugin))] + #[macro_use] extern crate cssparser; extern crate euclid; -extern crate heapsize; +#[cfg(feature = "servo")] extern crate heapsize; extern crate rustc_serialize; -extern crate serde; +#[cfg(feature = "servo")] extern crate serde; extern crate util; pub mod cursor; diff --git a/components/style_traits/values.rs b/components/style_traits/values.rs index 5b9226f324e..995e98fcfef 100644 --- a/components/style_traits/values.rs +++ b/components/style_traits/values.rs @@ -5,12 +5,38 @@ #[macro_export] macro_rules! define_css_keyword_enum { ($name: ident: $( $css: expr => $variant: ident ),+,) => { - define_css_keyword_enum!($name: $( $css => $variant ),+); + __define_css_keyword_enum__add_optional_traits!($name [ $( $css => $variant ),+ ]); }; ($name: ident: $( $css: expr => $variant: ident ),+) => { + __define_css_keyword_enum__add_optional_traits!($name [ $( $css => $variant ),+ ]); + }; +} + +#[cfg(feature = "servo")] +#[macro_export] +macro_rules! __define_css_keyword_enum__add_optional_traits { + ($name: ident [ $( $css: expr => $variant: ident ),+ ]) => { + __define_css_keyword_enum__actual! { + $name [ Deserialize, Serialize, HeapSizeOf ] [ $( $css => $variant ),+ ] + } + }; +} + +#[cfg(not(feature = "servo"))] +#[macro_export] +macro_rules! __define_css_keyword_enum__add_optional_traits { + ($name: ident [ $( $css: expr => $variant: ident ),+ ]) => { + __define_css_keyword_enum__actual! { + $name [] [ $( $css => $variant ),+ ] + } + }; +} + +#[macro_export] +macro_rules! __define_css_keyword_enum__actual { + ($name: ident [ $( $derived_trait: ident),* ] [ $( $css: expr => $variant: ident ),+ ]) => { #[allow(non_camel_case_types)] - #[derive(Clone, Eq, PartialEq, Copy, Hash, RustcEncodable, Debug, HeapSizeOf)] - #[derive(Deserialize, Serialize)] + #[derive(Clone, Eq, PartialEq, Copy, Hash, RustcEncodable, Debug $(, $derived_trait )* )] pub enum $name { $( $variant ),+ } diff --git a/components/style_traits/viewport.rs b/components/style_traits/viewport.rs index f8b89ae4de6..96075f7a5e3 100644 --- a/components/style_traits/viewport.rs +++ b/components/style_traits/viewport.rs @@ -20,7 +20,8 @@ define_css_keyword_enum!(Orientation: "landscape" => Landscape); -#[derive(Clone, Debug, PartialEq, Deserialize, Serialize, HeapSizeOf)] +#[derive(Clone, Debug, PartialEq)] +#[cfg_attr(feature = "servo", derive(Deserialize, Serialize, HeapSizeOf))] pub struct ViewportConstraints { pub size: TypedSize2D<ViewportPx, f32>, @@ -54,7 +55,8 @@ impl ToCss for ViewportConstraints { /// Zoom is a number | percentage | auto /// See http://dev.w3.org/csswg/css-device-adapt/#descdef-viewport-zoom -#[derive(Copy, Clone, Debug, HeapSizeOf, PartialEq)] +#[derive(Copy, Clone, Debug, PartialEq)] +#[cfg_attr(feature = "servo", derive(HeapSizeOf))] pub enum Zoom { Number(f32), Percentage(f32), |