summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Geyer <jensg@apache.org>2014-08-01 22:25:51 +0200
committerJens Geyer <jensg@apache.org>2014-08-01 22:25:51 +0200
commit790a3881b2bd8d0e0f868e9f28205ea60cfb0f2d (patch)
treebcd3431d7d59068ec5be496f5744bea520a5b845
parent57e68b2500ca941e313651370ac4d52139a060eb (diff)
downloadthrift-hier.tar.gz
THRIFT-2621 Add basic default hash code method to pythonhier
Client: Python Patch: Kishor Patil & Jens Geyer
-rw-r--r--compiler/cpp/src/generate/t_py_generator.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/compiler/cpp/src/generate/t_py_generator.cc b/compiler/cpp/src/generate/t_py_generator.cc
index 5d23366a4..4d155e09b 100644
--- a/compiler/cpp/src/generate/t_py_generator.cc
+++ b/compiler/cpp/src/generate/t_py_generator.cc
@@ -797,6 +797,17 @@ void t_py_generator::generate_py_struct_definition(ofstream& out,
endl;
}
+ out << indent() << "def __hash__(self):" << endl;
+ indent_up();
+ indent(out) << "value = PYTHONHASHSEED" << endl;
+ for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
+ indent(out) << "value = (value * 31) ^ hash(self." << (*m_iter)->get_name() + ")" << endl;
+ }
+ indent(out) << "return value" << endl;
+ indent_down();
+ out << endl;
+
+
if (!gen_slots_) {
// Printing utilities so that on the command line thrift
// structs look pretty like dictionaries