From 48222a730f751a1fbddb1ab4f8692bbbf6e76dd5 Mon Sep 17 00:00:00 2001 From: Ilya Zverev Date: Tue, 15 Dec 2015 14:24:29 +0300 Subject: [PATCH 1/4] [styles] Add building:part and religion=* --- data/mapcss-mapping.csv | 8 ++++++++ data/styles/legacy/include/base_other.mapcss | 1 + generator/osm2meta.hpp | 10 ++++++++++ indexer/feature_meta.hpp | 1 + 4 files changed, 20 insertions(+) diff --git a/data/mapcss-mapping.csv b/data/mapcss-mapping.csv index 8343053310..d28c9734d2 100644 --- a/data/mapcss-mapping.csv +++ b/data/mapcss-mapping.csv @@ -1040,3 +1040,11 @@ barrier|border_control;[barrier=border_control];;name;int_name;1039; shop|laundry;[shop=laundry];;name;int_name;1040; amenity|vending_machine|parking_tickets;[amenity=vending_machine][vending=parking_tickets];;name;int_name;1041; amenity|vending_machine|public_transport_tickets;[amenity=vending_machine][vending=public_transport_tickets];;name;int_name;1042; +building:part;[building:part];;name;int_name;1043; +amenity|place_of_worship|christian;[amenity=place_of_worship][religion=christian];;name;int_name;1044; +amenity|place_of_worship|muslim;[amenity=place_of_worship][religion=muslim];;name;int_name;1045; +amenity|place_of_worship|buddhist;[amenity=place_of_worship][religion=buddhist];;name;int_name;1046; +amenity|place_of_worship|hindu;[amenity=place_of_worship][religion=hindu];;name;int_name;1047; +amenity|place_of_worship|shinto;[amenity=place_of_worship][religion=shinto];;name;int_name;1048; +amenity|place_of_worship|jewish;[amenity=place_of_worship][religion=jewish];;name;int_name;1049; +amenity|place_of_worship|taoist;[amenity=place_of_worship][religion=taoist];;name;int_name;1050; diff --git a/data/styles/legacy/include/base_other.mapcss b/data/styles/legacy/include/base_other.mapcss index a432bc7fbd..6d5efc1b9b 100644 --- a/data/styles/legacy/include/base_other.mapcss +++ b/data/styles/legacy/include/base_other.mapcss @@ -574,6 +574,7 @@ node|z15-[leisure=nature_reserve] { icon-image: bird.svg; } +area|z15-[building:part], area|z15-[building], node|z15-[building] { diff --git a/generator/osm2meta.hpp b/generator/osm2meta.hpp index 818331ede4..9a898e3b22 100644 --- a/generator/osm2meta.hpp +++ b/generator/osm2meta.hpp @@ -140,6 +140,12 @@ public: md.Set(Metadata::FMD_HEIGHT, value); } } + else if (k == "denomination") + { + string const & value = ValidateAndFormat_denomination(v); + if (!value.empty()) + md.Set(Metadata::FMD_DENOMINATION, value); + } return false; } @@ -249,5 +255,9 @@ protected: ss << fixed << setw(2) << setprecision(1) << (val * 3 /*levels multiplied by 3 meters per level*/); return ss.str(); } + string ValidateAndFormat_denomination(string const & v) const + { + return v; + } string ValidateAndFormat_wikipedia(string v) const; }; diff --git a/indexer/feature_meta.hpp b/indexer/feature_meta.hpp index 27e1c850d5..6da5b0ea36 100644 --- a/indexer/feature_meta.hpp +++ b/indexer/feature_meta.hpp @@ -38,6 +38,7 @@ namespace feature FMD_MAXSPEED = 17, FMD_FLATS = 18, FMD_HEIGHT = 19, + FMD_DENOMINATION = 20, FMD_COUNT }; From 7169223390a352fb5eff232393d4bd2f4d1aab46 Mon Sep 17 00:00:00 2001 From: Ilya Zverev Date: Tue, 15 Dec 2015 14:25:19 +0300 Subject: [PATCH 2/4] [styles] Rebuild styles with building:part and religion=* --- data/classificator.txt | 11 +- data/drules_proto.bin | Bin 206995 -> 208311 bytes data/drules_proto.txt | 444 +++++++++++++++++++++++++++++ data/drules_proto_clear.bin | Bin 193203 -> 195251 bytes data/drules_proto_clear.txt | 553 ++++++++++++++++++++++++++++++++++++ data/drules_proto_dark.bin | Bin 189824 -> 191872 bytes data/drules_proto_dark.txt | 553 ++++++++++++++++++++++++++++++++++++ data/types.txt | 8 + data/visibility.txt | 11 +- 9 files changed, 1578 insertions(+), 2 deletions(-) diff --git a/data/classificator.txt b/data/classificator.txt index 0887fb853d..6b9438277b 100644 --- a/data/classificator.txt +++ b/data/classificator.txt @@ -69,7 +69,15 @@ world + {} {} pharmacy - - place_of_worship - + place_of_worship + + buddhist - + christian - + hindu - + jewish - + muslim - + shinto - + taoist - + {} police - post_box - post_office - @@ -155,6 +163,7 @@ world + building + address - {} + building:part - communication + line + underground - diff --git a/data/drules_proto.bin b/data/drules_proto.bin index ffee4328816d127ea1081af1cd10c072413df925..603f615b29cce6e249ad3fb5fa5d0a865e6db347 100644 GIT binary patch delta 261 zcmbPyk!SmDo(&iDS=KRfDNfeWm*CV*Doshr$Sf|I?4sYpvYwGk2_(#=o19Su6wFM_ z1BE~$&CE&3%uBZ_NGvK5;^E+z;^5dadpn!NOLibn0EH)r!V^N_2_tyT RThiONq%&^clFoGh002VNPz?Y8 delta 27 lcmV+$0ObF-+YFP@46x8Ivz;{MH-p)1huLfax7ln0-oVSm4vzo; diff --git a/data/drules_proto.txt b/data/drules_proto.txt index 5e1fb02957..431801c501 100644 --- a/data/drules_proto.txt +++ b/data/drules_proto.txt @@ -4124,6 +4124,412 @@ cont { } } } +cont { + name: "amenity-place_of_worship-buddhist" + element { + scale: 16 + symbol { + name: "religion" + priority: 16000 + } + } + element { + scale: 17 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } + element { + scale: 18 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } + element { + scale: 19 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } +} +cont { + name: "amenity-place_of_worship-christian" + element { + scale: 16 + symbol { + name: "religion" + priority: 16000 + } + } + element { + scale: 17 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } + element { + scale: 18 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } + element { + scale: 19 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } +} +cont { + name: "amenity-place_of_worship-hindu" + element { + scale: 16 + symbol { + name: "religion" + priority: 16000 + } + } + element { + scale: 17 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } + element { + scale: 18 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } + element { + scale: 19 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } +} +cont { + name: "amenity-place_of_worship-jewish" + element { + scale: 16 + symbol { + name: "religion" + priority: 16000 + } + } + element { + scale: 17 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } + element { + scale: 18 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } + element { + scale: 19 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } +} +cont { + name: "amenity-place_of_worship-muslim" + element { + scale: 16 + symbol { + name: "religion" + priority: 16000 + } + } + element { + scale: 17 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } + element { + scale: 18 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } + element { + scale: 19 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } +} +cont { + name: "amenity-place_of_worship-shinto" + element { + scale: 16 + symbol { + name: "religion" + priority: 16000 + } + } + element { + scale: 17 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } + element { + scale: 18 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } + element { + scale: 19 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } +} +cont { + name: "amenity-place_of_worship-taoist" + element { + scale: 16 + symbol { + name: "religion" + priority: 16000 + } + } + element { + scale: 17 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } + element { + scale: 18 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } + element { + scale: 19 + symbol { + name: "religion" + priority: 16003 + } + caption { + primary { + height: 11 + color: 4210752 + stroke_color: 16777215 + offset_y: 10 + } + priority: 15003 + } + } +} cont { name: "amenity-police" element { @@ -8404,6 +8810,44 @@ cont { } } } +cont { + name: "building:part" + element { + scale: 15 + area { + color: 13487540 + priority: 1001 + } + } + element { + scale: 16 + area { + color: 13487540 + priority: 1001 + } + } + element { + scale: 17 + area { + color: 13487540 + priority: 1001 + } + } + element { + scale: 18 + area { + color: 13487540 + priority: 1001 + } + } + element { + scale: 19 + area { + color: 13487540 + priority: 1001 + } + } +} cont { name: "communication-line" element { diff --git a/data/drules_proto_clear.bin b/data/drules_proto_clear.bin index fb5938364d3dc598a8924d846865cc395bd999c0..c9a05698086dacdc5bf7f4fa272e6f95ab888b60 100644 GIT binary patch delta 308 zcmdn|lza16?hTWTR2MUGDJJHo=4F;t>K5cACa1>dr^T1&7Zqn@7U(9Grle$K7MEY2YP+`Bts^}g8*u_a!~*P delta 26 icmdn|m3#A3?hTWTChxZ6Zk}h=KF^AA`#dWq(E|XiGYfZGN2fqLS diff --git a/data/drules_proto_dark.txt b/data/drules_proto_dark.txt index 512c51b339..b34497a863 100644 --- a/data/drules_proto_dark.txt +++ b/data/drules_proto_dark.txt @@ -4144,6 +4144,559 @@ cont { } } } +cont { + name: "amenity-place_of_worship-buddhist" + element { + scale: 16 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-m" + priority: 16864 + } + caption { + primary { + height: 10 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 17 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 10 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 18 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 11 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 19 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 11 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } +} +cont { + name: "amenity-place_of_worship-christian" + element { + scale: 16 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-m" + priority: 16864 + } + caption { + primary { + height: 10 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 17 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 10 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 18 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 11 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 19 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 11 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } +} +cont { + name: "amenity-place_of_worship-hindu" + element { + scale: 16 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-m" + priority: 16864 + } + caption { + primary { + height: 10 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 17 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 10 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 18 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 11 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 19 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 11 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } +} +cont { + name: "amenity-place_of_worship-jewish" + element { + scale: 16 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-m" + priority: 16864 + } + caption { + primary { + height: 10 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 17 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 10 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 18 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 11 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 19 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 11 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } +} +cont { + name: "amenity-place_of_worship-muslim" + element { + scale: 16 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-m" + priority: 16864 + } + caption { + primary { + height: 10 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 17 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 10 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 18 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 11 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 19 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 11 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } +} +cont { + name: "amenity-place_of_worship-shinto" + element { + scale: 16 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-m" + priority: 16864 + } + caption { + primary { + height: 10 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 17 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 10 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 18 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 11 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 19 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 11 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } +} +cont { + name: "amenity-place_of_worship-taoist" + element { + scale: 16 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-m" + priority: 16864 + } + caption { + primary { + height: 10 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 17 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 10 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 18 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 11 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } + element { + scale: 19 + area { + color: 3355426 + priority: -15136 + } + symbol { + name: "place-of-worship-l" + priority: 16864 + } + caption { + primary { + height: 11 + color: 5592405 + offset_y: 10 + } + priority: 15864 + } + } +} cont { name: "amenity-police" element { diff --git a/data/types.txt b/data/types.txt index 17095d87ef..71d9de1ec4 100644 --- a/data/types.txt +++ b/data/types.txt @@ -1040,3 +1040,11 @@ barrier|border_control shop|laundry amenity|vending_machine|parking_tickets amenity|vending_machine|public_transport_tickets +building:part +amenity|place_of_worship|christian +amenity|place_of_worship|muslim +amenity|place_of_worship|buddhist +amenity|place_of_worship|hindu +amenity|place_of_worship|shinto +amenity|place_of_worship|jewish +amenity|place_of_worship|taoist diff --git a/data/visibility.txt b/data/visibility.txt index e7c1a65385..442a67b403 100644 --- a/data/visibility.txt +++ b/data/visibility.txt @@ -69,7 +69,15 @@ world 00000000000000000000 + {} {} pharmacy 00000000000000001111 - - place_of_worship 00000000000000001111 - + place_of_worship 00000000000000001111 + + buddhist 00000000000000001111 - + christian 00000000000000001111 - + hindu 00000000000000001111 - + jewish 00000000000000001111 - + muslim 00000000000000001111 - + shinto 00000000000000001111 - + taoist 00000000000000001111 - + {} police 00000000000000000111 - post_box 00000000000000000111 - post_office 00000000000000001111 - @@ -155,6 +163,7 @@ world 00000000000000000000 + building 00000000000000011111 + address 00000000000000001111 - {} + building:part 00000000000000011111 - communication 00000000000000000000 + line 00000000000000001111 + underground 00000000000000001111 - From 6c5f5982b7073f6a572b6bb482ac66d38803cd52 Mon Sep 17 00:00:00 2001 From: Ilya Zverev Date: Tue, 15 Dec 2015 14:44:13 +0300 Subject: [PATCH 3/4] [styles] Support min_height and building:min_level in metadata --- generator/osm2meta.hpp | 17 +++++++++++++++++ indexer/feature_meta.hpp | 3 ++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/generator/osm2meta.hpp b/generator/osm2meta.hpp index 9a898e3b22..f2e1b03dca 100644 --- a/generator/osm2meta.hpp +++ b/generator/osm2meta.hpp @@ -140,6 +140,23 @@ public: md.Set(Metadata::FMD_HEIGHT, value); } } + else if (k == "min_height") + { + string const & value = ValidateAndFormat_height(v); + if (!value.empty()) + md.Set(Metadata::FMD_MIN_HEIGHT, value); + } + else if (k == "building:min_level") + { + // Ignoring if FMD_HEIGHT already set + if (md.Get(Metadata::FMD_HEIGHT).empty()) + { + // Converting this attribute into height + string const & value = ValidateAndFormat_building_levels(v); + if (!value.empty()) + md.Set(Metadata::FMD_MIN_HEIGHT, value); + } + } else if (k == "denomination") { string const & value = ValidateAndFormat_denomination(v); diff --git a/indexer/feature_meta.hpp b/indexer/feature_meta.hpp index 6da5b0ea36..98c8008c06 100644 --- a/indexer/feature_meta.hpp +++ b/indexer/feature_meta.hpp @@ -38,7 +38,8 @@ namespace feature FMD_MAXSPEED = 17, FMD_FLATS = 18, FMD_HEIGHT = 19, - FMD_DENOMINATION = 20, + FMD_MIN_HEIGHT = 20, + FMD_DENOMINATION = 21, FMD_COUNT }; From b1e6c50858b75eac8421dd2bf69bebf008e76a6b Mon Sep 17 00:00:00 2001 From: Ilya Zverev Date: Tue, 15 Dec 2015 14:46:07 +0300 Subject: [PATCH 4/4] [styles] Fix a typo --- generator/osm2meta.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generator/osm2meta.hpp b/generator/osm2meta.hpp index f2e1b03dca..5973a6e41d 100644 --- a/generator/osm2meta.hpp +++ b/generator/osm2meta.hpp @@ -148,8 +148,8 @@ public: } else if (k == "building:min_level") { - // Ignoring if FMD_HEIGHT already set - if (md.Get(Metadata::FMD_HEIGHT).empty()) + // Ignoring if min_height was already set + if (md.Get(Metadata::FMD_MIN_HEIGHT).empty()) { // Converting this attribute into height string const & value = ValidateAndFormat_building_levels(v);