#endif const irept::subt &sub=get_sub(); const irept::named_subt &named_sub=get_named_sub(); std::size_t result=hash_string(id()); forall_irep(it, sub) result=hash_combine(result, it->hash()); forall_named_irep(it, named_sub) { result=hash_combine(result, hash_string(it->first)); result=hash_combine(result, it->second.hash()); } result=hash_finalize(result, named_sub.size()+sub.size()); #ifdef HASH_CODE read().hash_code=result; #endif #ifdef IREP_HASH_STATS ++irep_hash_cnt; #endif return result; } /*******************************************************************\ Function: irept::full_hash Inputs:
void hash_free(hash *ths) { ths = hash_finalize(ths); FREE(ths); }