size_t RecordHashFunction::operator()(const Record& r) const { size_t n = 0; const Record::FieldVector& fields = r.getFields(); for(Record::FieldVector::const_iterator i = fields.begin(), i_end = fields.end(); i != i_end; ++i) { n = (n << 3) ^ TypeHashFunction()((*i).second); } return n; }
size_t EmptySetHashFunction::operator()(const EmptySet& es) const { return TypeHashFunction()(es.getType()); }
size_t ArrayStoreAllHashFunction::operator()(const ArrayStoreAll& asa) const { return TypeHashFunction()(asa.getType()) * ExprHashFunction()(asa.getExpr()); }