// -*- C++ -*-
-/* This file is part of
- * ======================================================
- *
- * LyX, The Document Processor
- * Copyright (C) 1995 Matthias Ettrich
- *
- * This file is Copyright (C) 1996-1998
- * Lars Gullik Bjønnes
+/**
+ * \file DepTable.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- * ======================================================
+ * \author Lars Gullik Bjønnes
+ * \author Jean-Marc Lasgouttes
+ *
+ * Full author contact details are available in file CREDITS.
*/
#ifndef DEP_TABLE_H
#define DEP_TABLE_H
-#include "LString.h"
+#include "support/FileName.h"
+
#include <map>
-using std::map;
-using std::pair;
+#include <string>
-#ifdef __GNUG__
-#pragma interface
-#endif
+
+namespace lyx {
///
class DepTable {
/** This one is a little bit harder since we need the absolute
filename. Should we insert files with .sty .cls etc as
extension? */
- void insert(string const & f,
- bool upd = false,
- unsigned long one = 0,
- unsigned long two = 0);
+ void insert(support::FileName const & f, bool upd = false);
///
void update();
///
- void write(string const & f) const;
- ///
- void read(string const & f);
+ void write(support::FileName const & f) const;
+ /// returns true if dep file was read successfully
+ bool read(support::FileName const & f);
/// returns true if any of the files has changed
bool sumchange() const;
/// return true if fil has changed.
- bool haschanged(string const & fil) const;
+ bool haschanged(support::FileName const & fil) const;
/// return true if a file with extension ext has changed.
- bool extchanged(string const & ext) const;
+ bool extchanged(std::string const & ext) const;
///
- bool exist(string const & fil) const;
+ bool exist(support::FileName const & fil) const;
+ /// returns true if any files with ext exist
+ bool ext_exist(std::string const & ext) const;
///
- void remove_files_with_extension(string const &);
+ void remove_files_with_extension(std::string const &);
+ ///
+ void remove_file(support::FileName const &);
private:
///
- typedef map<string, pair<unsigned long, unsigned long> > DepList;
+ class dep_info {
+ public:
+ /// Previously calculated CRC value
+ unsigned long crc_prev;
+ /// Current CRC value - only re-computed if mtime has changed.
+ unsigned long crc_cur;
+ /// mtime from last time current CRC was calculated.
+ long mtime_cur;
+ ///
+ bool changed() const;
+ };
+ ///
+ typedef std::map<support::FileName, dep_info> DepList;
///
DepList deplist;
};
+
+} // namespace lyx
+
#endif