10 #include <boost/any.hpp>
19 template <
typename TYPE>
20 static TYPE
get(boost::any var)
22 return var.type() ==
typeid(TYPE) ? boost::any_cast<TYPE>(var) : TYPE();
25 template <
typename TYPE,
typename VAR>
26 static TYPE
get(VAR var)
28 return var.type() ==
typeid(TYPE) ? boost::get<TYPE>(var) : TYPE();
31 template <
typename TYPE,
typename VAR>
34 return (var.type() ==
typeid(TYPE));
47 template <
typename VAR>
50 return typeOf<VariantNull>(var);
53 template <
typename VAR>
56 if (typeOf<String>(var))
58 if (typeOf<int32_t>(var))
59 return get<int32_t>(var);
60 if (typeOf<int64_t>(var))
61 return (int32_t)get<int64_t>(var);
62 if (typeOf<double>(var))
65 return (int32_t)(longBits ^ (longBits >> 32));
70 return get< Collection<int32_t> >(var).hashCode();
72 return get< Collection<int64_t> >(var).hashCode();
74 return get< Collection<double> >(var).hashCode();
76 return get< Collection<String> >(var).hashCode();
77 if (typeOf<LuceneObjectPtr>(var))
78 return get<LuceneObjectPtr>(var)->hashCode();
82 template <
typename FIRST,
typename SECOND>
85 return (first.type() == second.type());
88 template <
typename FIRST,
typename SECOND>
89 static bool equals(FIRST first, SECOND second)
91 return first.type() == second.type() ? (first == second) :
false;
94 template <
typename VAR>
97 return first < second ? -1 : (first == second ? 0 : 1);