Merge lp:~jamesh/unity-scopes-api/expose-filter-deserialize into lp:unity-scopes-api

Proposed by James Henstridge
Status: Merged
Approved by: Michi Henning
Approved revision: 278
Merged at revision: 285
Proposed branch: lp:~jamesh/unity-scopes-api/expose-filter-deserialize
Merge into: lp:unity-scopes-api
Diff against target: 137 lines (+19/-7)
6 files modified
debian/libunity-scopes3.symbols (+2/-0)
include/unity/scopes/FilterBase.h (+1/-0)
include/unity/scopes/FilterState.h (+1/-0)
src/scopes/FilterBase.cpp (+4/-0)
src/scopes/FilterState.cpp (+4/-0)
test/gtest/scopes/Filters/Filters_test.cpp (+7/-7)
To merge this branch: bzr merge lp:~jamesh/unity-scopes-api/expose-filter-deserialize
Reviewer Review Type Date Requested Status
PS Jenkins bot (community) continuous-integration Approve
Michi Henning (community) Approve
Review via email: mp+245845@code.launchpad.net

Commit message

Expose the deserialize() static method on FilterBase and FilterState for use by the Go bindings.

Description of the change

To reduce the size of the C shim in the Go binding, it would be useful to be able to construct filter objects from a VariantMap.

This way rather than creating C shims for each individual filter class, I can implement the filters in Go and just have them produce the serialised representation to pass down to C and then C++.

All I needed for this was to expose FilterBaseImpl::deserialize() on the public FilterBase class, which is what this branch does.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
277. By James Henstridge

Update symbols file.

278. By James Henstridge

Also expose FilterState::deserialize().

Revision history for this message
Michi Henning (michihenning) wrote :

Looks good, thanks!

I think we should bump the micro version?

review: Needs Information
Revision history for this message
Michi Henning (michihenning) wrote :

Ah, right, no need. We have plenty of version bumps in the other branches waiting to be reviewed.

review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
279. By James Henstridge

Merge from trunk

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'debian/libunity-scopes3.symbols'
--- debian/libunity-scopes3.symbols 2015-01-19 08:09:07 +0000
+++ debian/libunity-scopes3.symbols 2015-01-21 12:33:34 +0000
@@ -306,6 +306,7 @@
306 (c++)"unity::scopes::experimental::ValueSliderFilter::~ValueSliderFilter()@Base" 0.5.0+14.10.20140619306 (c++)"unity::scopes::experimental::ValueSliderFilter::~ValueSliderFilter()@Base" 0.5.0+14.10.20140619
307 (c++)"unity::scopes::experimental::ValueSliderFilter::ValueSliderFilter(unity::scopes::internal::ValueSliderFilterImpl*)@Base" 0.5.0+14.10.20140619307 (c++)"unity::scopes::experimental::ValueSliderFilter::ValueSliderFilter(unity::scopes::internal::ValueSliderFilterImpl*)@Base" 0.5.0+14.10.20140619
308 (c++)"unity::scopes::experimental::ValueSliderFilter::value(unity::scopes::FilterState const&) const@Base" 0.5.0+14.10.20140619308 (c++)"unity::scopes::experimental::ValueSliderFilter::value(unity::scopes::FilterState const&) const@Base" 0.5.0+14.10.20140619
309 (c++)"unity::scopes::FilterBase::deserialize(std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unity::scopes::Variant, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unity::scopes::Variant> > > const&)@Base" 0replaceme
309 (c++)"unity::scopes::FilterBase::display_hints() const@Base" 0.4.6+14.10.20140519310 (c++)"unity::scopes::FilterBase::display_hints() const@Base" 0.4.6+14.10.20140519
310 (c++)"unity::scopes::FilterBase::~FilterBase()@Base" 0.4.0+14.04.20140312.1311 (c++)"unity::scopes::FilterBase::~FilterBase()@Base" 0.4.0+14.04.20140312.1
311 (c++)"unity::scopes::FilterBase::FilterBase(unity::scopes::internal::FilterBaseImpl*)@Base" 0.4.0+14.04.20140312.1312 (c++)"unity::scopes::FilterBase::FilterBase(unity::scopes::internal::FilterBaseImpl*)@Base" 0.4.0+14.04.20140312.1
@@ -317,6 +318,7 @@
317 (c++)"unity::scopes::FilterOption::FilterOption(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.4.0+14.04.20140312.1318 (c++)"unity::scopes::FilterOption::FilterOption(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.4.0+14.04.20140312.1
318 (c++)"unity::scopes::FilterOption::id() const@Base" 0.4.0+14.04.20140312.1319 (c++)"unity::scopes::FilterOption::id() const@Base" 0.4.0+14.04.20140312.1
319 (c++)"unity::scopes::FilterOption::label() const@Base" 0.4.0+14.04.20140312.1320 (c++)"unity::scopes::FilterOption::label() const@Base" 0.4.0+14.04.20140312.1
321 (c++)"unity::scopes::FilterState::deserialize(std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unity::scopes::Variant, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unity::scopes::Variant> > > const&)@Base" 0replaceme
320 (c++)"unity::scopes::FilterState::~FilterState()@Base" 0.4.0+14.04.20140312.1322 (c++)"unity::scopes::FilterState::~FilterState()@Base" 0.4.0+14.04.20140312.1
321 (c++)"unity::scopes::FilterState::FilterState()@Base" 0.4.0+14.04.20140312.1323 (c++)"unity::scopes::FilterState::FilterState()@Base" 0.4.0+14.04.20140312.1
322 (c++)"unity::scopes::FilterState::FilterState(unity::scopes::FilterState&&)@Base" 0.4.0+14.04.20140312.1324 (c++)"unity::scopes::FilterState::FilterState(unity::scopes::FilterState&&)@Base" 0.4.0+14.04.20140312.1
323325
=== modified file 'include/unity/scopes/FilterBase.h'
--- include/unity/scopes/FilterBase.h 2014-11-03 05:31:30 +0000
+++ include/unity/scopes/FilterBase.h 2015-01-21 12:33:34 +0000
@@ -82,6 +82,7 @@
8282
83 /// @cond83 /// @cond
84 VariantMap serialize() const;84 VariantMap serialize() const;
85 static FilterBase::SCPtr deserialize(VariantMap const& var);
85 /// @endcond86 /// @endcond
8687
87 /**88 /**
8889
=== modified file 'include/unity/scopes/FilterState.h'
--- include/unity/scopes/FilterState.h 2014-11-03 05:31:30 +0000
+++ include/unity/scopes/FilterState.h 2015-01-21 12:33:34 +0000
@@ -51,6 +51,7 @@
5151
52 ~FilterState();52 ~FilterState();
53 VariantMap serialize() const;53 VariantMap serialize() const;
54 static FilterState deserialize(VariantMap const& var);
54 /// @endcond55 /// @endcond
5556
56 /**57 /**
5758
=== modified file 'src/scopes/FilterBase.cpp'
--- src/scopes/FilterBase.cpp 2014-05-02 10:19:46 +0000
+++ src/scopes/FilterBase.cpp 2015-01-21 12:33:34 +0000
@@ -36,6 +36,10 @@
36 return p->serialize();36 return p->serialize();
37}37}
3838
39FilterBase::SCPtr FilterBase::deserialize(VariantMap const& var) {
40 return internal::FilterBaseImpl::deserialize(var);
41}
42
39FilterBase::~FilterBase() = default;43FilterBase::~FilterBase() = default;
40/// @endcond44/// @endcond
4145
4246
=== modified file 'src/scopes/FilterState.cpp'
--- src/scopes/FilterState.cpp 2014-03-10 04:17:09 +0000
+++ src/scopes/FilterState.cpp 2015-01-21 12:33:34 +0000
@@ -62,6 +62,10 @@
62 return p->serialize();62 return p->serialize();
63}63}
6464
65FilterState FilterState::deserialize(VariantMap const& var) {
66 return internal::FilterStateImpl::deserialize(var);
67}
68
65/// @endcond69/// @endcond
6670
67bool FilterState::has_filter(std::string const& id) const71bool FilterState::has_filter(std::string const& id) const
6872
=== modified file 'test/gtest/scopes/Filters/Filters_test.cpp'
--- test/gtest/scopes/Filters/Filters_test.cpp 2015-01-09 03:16:51 +0000
+++ test/gtest/scopes/Filters/Filters_test.cpp 2015-01-21 12:33:34 +0000
@@ -162,13 +162,13 @@
162162
163TEST(Filters, deserialize)163TEST(Filters, deserialize)
164{164{
165 // check that FilterBaseImpl::deserialize() creates valid instances of all filter types165 // check that FilterBase::deserialize() creates valid instances of all filter types
166 {166 {
167 OptionSelectorFilter::SPtr filter1 = OptionSelectorFilter::create("f1", "Options", false);167 OptionSelectorFilter::SPtr filter1 = OptionSelectorFilter::create("f1", "Options", false);
168 auto option1 = filter1->add_option("1", "Option 1");168 auto option1 = filter1->add_option("1", "Option 1");
169 auto var = filter1->serialize();169 auto var = filter1->serialize();
170170
171 auto f = internal::FilterBaseImpl::deserialize(var);171 auto f = FilterBase::deserialize(var);
172 EXPECT_TRUE(std::dynamic_pointer_cast<OptionSelectorFilter const>(f) != nullptr);172 EXPECT_TRUE(std::dynamic_pointer_cast<OptionSelectorFilter const>(f) != nullptr);
173 EXPECT_EQ("option_selector", f->filter_type());173 EXPECT_EQ("option_selector", f->filter_type());
174174
@@ -181,7 +181,7 @@
181 auto option1 = filter1->add_option("1", "Option 1");181 auto option1 = filter1->add_option("1", "Option 1");
182 auto var = filter1->serialize();182 auto var = filter1->serialize();
183183
184 auto f = internal::FilterBaseImpl::deserialize(var);184 auto f = FilterBase::deserialize(var);
185 EXPECT_TRUE(std::dynamic_pointer_cast<RadioButtonsFilter const>(f) != nullptr);185 EXPECT_TRUE(std::dynamic_pointer_cast<RadioButtonsFilter const>(f) != nullptr);
186 EXPECT_EQ("radio_buttons", f->filter_type());186 EXPECT_EQ("radio_buttons", f->filter_type());
187187
@@ -193,7 +193,7 @@
193 RatingFilter::SPtr filter1 = RatingFilter::create("f1", "Options", 5);193 RatingFilter::SPtr filter1 = RatingFilter::create("f1", "Options", 5);
194 auto var = filter1->serialize();194 auto var = filter1->serialize();
195195
196 auto f = internal::FilterBaseImpl::deserialize(var);196 auto f = FilterBase::deserialize(var);
197 EXPECT_TRUE(std::dynamic_pointer_cast<RatingFilter const>(f) != nullptr);197 EXPECT_TRUE(std::dynamic_pointer_cast<RatingFilter const>(f) != nullptr);
198 EXPECT_EQ("rating", f->filter_type());198 EXPECT_EQ("rating", f->filter_type());
199199
@@ -205,7 +205,7 @@
205 SwitchFilter::SPtr filter1 = SwitchFilter::create("f1", "Latest");205 SwitchFilter::SPtr filter1 = SwitchFilter::create("f1", "Latest");
206 auto var = filter1->serialize();206 auto var = filter1->serialize();
207207
208 auto f = internal::FilterBaseImpl::deserialize(var);208 auto f = FilterBase::deserialize(var);
209 EXPECT_TRUE(std::dynamic_pointer_cast<SwitchFilter const>(f) != nullptr);209 EXPECT_TRUE(std::dynamic_pointer_cast<SwitchFilter const>(f) != nullptr);
210 EXPECT_EQ("switch", f->filter_type());210 EXPECT_EQ("switch", f->filter_type());
211211
@@ -217,7 +217,7 @@
217 ValueSliderFilter::SPtr filter1 = ValueSliderFilter::create("f1", "Max size", "Less than %f", 0.0f, 100.0f);217 ValueSliderFilter::SPtr filter1 = ValueSliderFilter::create("f1", "Max size", "Less than %f", 0.0f, 100.0f);
218 auto var = filter1->serialize();218 auto var = filter1->serialize();
219219
220 auto f = internal::FilterBaseImpl::deserialize(var);220 auto f = FilterBase::deserialize(var);
221 EXPECT_TRUE(std::dynamic_pointer_cast<ValueSliderFilter const>(f) != nullptr);221 EXPECT_TRUE(std::dynamic_pointer_cast<ValueSliderFilter const>(f) != nullptr);
222 EXPECT_EQ("value_slider", f->filter_type());222 EXPECT_EQ("value_slider", f->filter_type());
223223
@@ -228,7 +228,7 @@
228 {228 {
229 // invalid data (no filter_type)229 // invalid data (no filter_type)
230 VariantMap var;230 VariantMap var;
231 EXPECT_THROW(internal::FilterBaseImpl::deserialize(var), unity::LogicException);231 EXPECT_THROW(FilterBase::deserialize(var), unity::LogicException);
232 }232 }
233}233}
234234

Subscribers

People subscribed via source and target branches

to all changes: