diff options
author | John Hodge <tpg@mutabah.net> | 2016-12-07 07:15:35 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-12-07 07:15:35 +0800 |
commit | 4fcbd6a038e4ea0c4aaf6602dd0ea0c2f24d3ec0 (patch) | |
tree | e25237ab40e3366201698c9dd66edb5ee0f961f6 /src/hir/serialise.cpp | |
parent | b43ff7f871f4c9630dc3fdd715ab793d47169299 (diff) | |
download | mrust-4fcbd6a038e4ea0c4aaf6602dd0ea0c2f24d3ec0.tar.gz |
HIR VTables - Handle traits with duplicate method names form different sub-traits
Diffstat (limited to 'src/hir/serialise.cpp')
-rw-r--r-- | src/hir/serialise.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/hir/serialise.cpp b/src/hir/serialise.cpp index 33f8123f..35acaa93 100644 --- a/src/hir/serialise.cpp +++ b/src/hir/serialise.cpp @@ -40,6 +40,16 @@ namespace { serialise(v.second); } } + template<typename V> + void serialise_strmap(const ::std::unordered_multimap< ::std::string,V>& map) + { + m_out.write_count(map.size()); + for(const auto& v : map) { + DEBUG("- " << v.first); + m_out.write_string(v.first); + serialise(v.second); + } + } template<typename T> void serialise_vec(const ::std::vector<T>& vec) { @@ -62,6 +72,11 @@ namespace { m_out.write_string(e.first); serialise(e.second); } + template<typename T> + void serialise(const ::std::pair<unsigned int, T>& e) { + m_out.write_count(e.first); + serialise(e.second); + } void serialise_type(const ::HIR::TypeRef& ty) { @@ -150,6 +165,7 @@ namespace { serialise_simplepath(path.m_path); serialise_pathparams(path.m_params); } + void serialise(const ::HIR::GenericPath& path) { serialise_genericpath(path); } void serialise_traitpath(const ::HIR::TraitPath& path) { serialise_genericpath(path.m_path); |