// file : xsd/xsd.hxx // author : Boris Kolpackov // copyright : Copyright (c) 2005-2009 Code Synthesis Tools CC // license : GNU GPL v2 + exceptions; see accompanying LICENSE file #ifndef XSD_HXX #define XSD_HXX #include // Path #include #include #include #include // std::remove using namespace Cult::Types; // // typedef Cult::Containers::Set WarningSet; // // typedef Cult::Containers::Vector FileList; // // struct AutoUnlink { AutoUnlink (XSDFrontend::SemanticGraph::Path const& file) : file_ (file), canceled_ (false) { } ~AutoUnlink () { if (!canceled_) { std::remove (file_.native_file_string ().c_str ()); } } void cancel () { canceled_ = true; } private: XSDFrontend::SemanticGraph::Path file_; Boolean canceled_; }; // // struct AutoUnlinks { Void add (XSDFrontend::SemanticGraph::Path const& file) { unlinks_.push_back (Evptr (new AutoUnlink (file))); } Void cancel () { for (Unlinks::Iterator i (unlinks_.begin ()); i != unlinks_.end (); ++i) { (*i)->cancel (); } } private: typedef Cult::Containers::Vector > Unlinks; Unlinks unlinks_; }; #endif // XSD_HXX