================
Comment at: clang-tidy/ClangTidy.h:73-80
@@ +72,10 @@
+ /// \p Default.
+ bool get(StringRef LocalName, bool Default) const {
+ std::string Value = get(LocalName, "");
+ if (Value == "true")
+ return true;
+ if (Value == "false")
+ return false;
+ return Default;
+ }
+
----------------
curdeius wrote:
> curdeius wrote:
> > Couldn't we just generalize this approach to all the types that specialize
> > `llvm::yaml::XYZTraits` (XYZ being one of Scalar/ScalarEnumeration/...) ?
> >
> > An ugly hack (working at least for `enum`s specializing
> > `ScalarEnumerationTraits`) would be:
> >
> > ```
> > template <typename T>
> > typename std::enable_if<!std::is_integral<T>::value &&
> > !std::is_convertible<T, std::string>::value,
> > T>::type
> > get(StringRef LocalName, T Default) const {
> > std::string Value = get(LocalName, "");
> > T Result = Default;
> > if (!Value.empty()) {
> > std::stringstream Content;
> > Content << LocalName.str() << ": " << Value;
> > llvm::yaml::Input Input(Content.str());
> > Input.setCurrentDocument();
> > Input.mapOptional(LocalName.data(), Result);
> > if (Input.error())
> > Result = Default;
> > }
> > return Result;
> > }
> > ```
> >
> > The hack is ugly since it uses `Input::setCurrentDocument()` (which should
> > probably be private) and `Input::mapOptional()` and not
> > `Input::operator>>`. That is so, because otherwise we would need creating a
> > type specializing `llvm::yaml::MappingTraits` which would essentially do an
> > operation equivalent to `Input.mapOptional(LocalName.str(), Result);`.
> That's essentially the same code as in `llvm/lib/Support/YAMLTraits.cpp::651`.
> Couldn't we just generalize this approach to all the types that specialize
> llvm::yaml::XYZTraits (XYZ being one of Scalar/ScalarEnumeration/...) ?
That sounds interesting. I'll try something along these lines.
http://reviews.llvm.org/D5602
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits