[
https://issues.apache.org/jira/browse/THRIFT-2062?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vitali Lovich reopened THRIFT-2062:
-----------------------------------
The compiler doesn't generate std::hash, so that piece is still missing.
> cpp flag for using unordered_set instead of set
> -----------------------------------------------
>
> Key: THRIFT-2062
> URL: https://issues.apache.org/jira/browse/THRIFT-2062
> Project: Thrift
> Issue Type: Improvement
> Components: C++ - Compiler
> Reporter: Vitali Lovich
> Assignee: Randy Abernethy
> Fix For: 0.9.2
>
>
> It would be nice if the cpp compiler could generate code to use unordered_set
> instead of set. unordered_set is faster & usually an unordered_set is wanted
> rather than an ordered one. Furthermore, since unordered_set only needs a
> hash function, we could generate one for every type.
> The hash code generated can be along the lines of what Eclipse does for
> auto-generated hash codes:
> struct ThriftObj {
> 1: string f1;
> 2: i32 f2;
> 3: SomeOtherThriftObj f3;
> }
> // header file:
> namespace std {
> template <> struct hash<ThriftObj> {
> size_t operator()(const ThriftObj& o);
> }
> }
> // cpp file:
> namespace std {
> template <> struct hash<ThriftObj> {
> size_t operator()(const ThriftObj& o)
> constexpr size_t prime = 31;
> size_t hashcode = 1;
> hashcode += o.__isset.f1 ? prime *
> std::hash<decltype(o.f1)>()(o.f1) : 0;
> hashcode += o.__isset.f2 ? prime *
> std::hash<decltype(o.f1)>()(o.f2) : 0;
> hashcode += o.__isset.f3 ? prime *
> std::hash<decltype(o.f1)>()(o.f3) : 0;
> }
> }
> }
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)