/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2011-2014, Tomasz Sowa * All rights reserved. * */ #include "changepatterns.h" namespace Winix { void ChangePatterns::SetPatterns(Patterns * ppatterns) { patterns = ppatterns; } void ChangePatterns::Add(long mount_dir_id, const std::wstring & old_pattern_name, const std::wstring & new_pattern_name) { Value & value = pat_tab[mount_dir_id]; std::pair res = value.insert(std::make_pair(old_pattern_name, Template())); Template & tmpl = res.first->second; tmpl.to_delete = false; if( res.second || new_pattern_name != patterns->GetFileName(tmpl.index) ) tmpl.index = patterns->Add(new_pattern_name); } Ezc::Pattern * ChangePatterns::Get(long mount_dir_id, const std::wstring & old_pattern_name, size_t locale_index) { PatTab::iterator i = pat_tab.find(mount_dir_id); if( i == pat_tab.end() ) return 0; Value & value = i->second; Value::iterator v = value.find(old_pattern_name); if( v == value.end() ) return 0; Template & tmpl = v->second; log << log4 << "ChangePatterns: changing " << old_pattern_name << " to " << patterns->GetFileName(tmpl.index) << logend; return patterns->Get(tmpl.index, locale_index); } void ChangePatterns::MarkAllToDelete() { PatTab::iterator i; Value::iterator v; for(i=pat_tab.begin() ; i != pat_tab.end() ; ++i) { Value & value = i->second; for(v=value.begin() ; v != value.end() ; ++v) v->second.to_delete = true; } } void ChangePatterns::DeleteMarked() { PatTab::iterator i; Value::iterator v, next; for(i=pat_tab.begin() ; i != pat_tab.end() ; ++i) { Value & value = i->second; for(v=value.begin() ; v != value.end() ; ) { next = v; ++next; if( v->second.to_delete ) { patterns->Erase(v->second.index); value.erase(v); } v = next; } } } void ChangePatterns::Clear() { pat_tab.clear(); } } // namespace Winix