From a966a0f888beb25e829a298aef599fb06d580755 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Thu, 21 Jul 2016 20:26:57 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/libs@102 a8b55f48-bf90-11e4-a774-851b48703e85 --- cd_utils/cdutils_k_types.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/cd_utils/cdutils_k_types.cpp b/cd_utils/cdutils_k_types.cpp index 6db7c65..0f321fe 100644 --- a/cd_utils/cdutils_k_types.cpp +++ b/cd_utils/cdutils_k_types.cpp @@ -79,7 +79,28 @@ void KSection::read(const void * ep) { void KSection::update(KSection & v, bool keep_names) { - + PIMap vk_ids; + PIMap::iterator i; + for (i = v.k.begin(); i != v.k.end(); ++i) + vk_ids[i.value().name()] = i.value().formula(); + for (i = k.begin(); i != k.end(); ++i) { + bool f = false; + if (keep_names) { + if (vk_ids.contains(i.value().name())) { + k[i.key()].formula_ = vk_ids[i.value().name()]; + f = true; + } + } + if (!f) { + if (v.k.contains(i.key())) + k[i.key()].formula_ = v.k[i.key()].formula_; + } + } + PIMap::iterator j; + for (j = s.begin(); j != s.end(); ++j) { + if (v.s.contains(j.key())) + j.value().update(v.s[j.key()], keep_names); + } }