// ********************************************************************** // // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved. // // This copy of Ice is licensed to you under the terms described in the // ICE_LICENSE file included in this distribution. // // ********************************************************************** #ifndef FILE_TRACKER_H #define FILE_TRACKER_H #include #include namespace Slice { class FileException : public ::IceUtil::Exception { public: FileException(const char*, int, const std::string&); #ifndef ICE_CPP11_COMPILER ~FileException() throw(); #endif virtual std::string ice_id() const; virtual void ice_print(std::ostream&) const; #ifndef ICE_CPP11_MAPPING virtual FileException* ice_clone() const; #endif virtual void ice_throw() const; std::string reason() const; private: static const char* _name; const std::string _reason; }; class FileTracker; typedef IceUtil::Handle FileTrackerPtr; class FileTracker : public ::IceUtil::SimpleShared { public: FileTracker(); ~FileTracker(); static FileTrackerPtr instance(); void setSource(const std::string&); void addFile(const std::string&); void addDirectory(const std::string&); void error(); void cleanup(); void dumpxml(); private: std::list > _files; std::string _source; std::map > _generated; std::map >::iterator _curr; }; } #endif