/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2010-2014, Tomasz Sowa * All rights reserved. * */ #include "indexpatterns.h" #include "core/log.h" namespace Winix { void IndexPatterns::SetPatterns(Patterns * ppatterns) { patterns = ppatterns; } Ezc::Pattern * IndexPatterns::Get(const std::wstring & file, size_t lang) { Tab::iterator i = tab.find(file); if( i == tab.end() ) return 0; return patterns->Get(i->second.index, lang); } void IndexPatterns::Add(const std::wstring & file) { std::pair res = tab.insert( std::make_pair(file, Template()) ); Template & tmpl = res.first->second; // mark the pattern to not delete tmpl.to_delete = false; if( res.second ) tmpl.index = patterns->Add(file); } void IndexPatterns::MarkAllToDelete() { Tab::iterator i; for(i=tab.begin() ; i!=tab.end() ; ++i) i->second.to_delete = true; } void IndexPatterns::DeleteMarked() { Tab::iterator i = tab.begin(); Tab::iterator next; while( i != tab.end() ) { next = i; ++next; if( i->second.to_delete ) { patterns->Erase(i->second.index); tab.erase(i); } i = next; } } void IndexPatterns::Clear() { tab.clear(); } } // namespace Winix