]> git.lyx.org Git - lyx.git/blobdiff - src/DepTable.h
Account for old versions of Pygments
[lyx.git] / src / DepTable.h
index 49cd4e73d9aadacd56f8a443c4f44efa233111fb..0d78ab8f5365fa4552b32a92027d842a120aec77 100644 (file)
@@ -1,63 +1,74 @@
 // -*- 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
+#ifndef DEP_TABLE_H
+#define DEP_TABLE_H
+
+#include "support/FileName.h"
+
+#include <map>
+#include <string>
 
-#include "LString.h"
-#include <stdio.h>
+
+namespace lyx {
 
 ///
 class DepTable {
 public:
-       ///
-       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(LString 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(LString const &f);
-       ///
-       void read(LString 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();
+       bool sumchange() const;
+       /// return true if fil has changed.
+       bool haschanged(support::FileName const & fil) const;
+       /// return true if a file with extension ext has changed.
+       bool extchanged(std::string const & ext) const;
        ///
-       bool haschanged(LString const &fil);
-private:
+       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(std::string const &);
        ///
-       DepTable(LString const &f,
-                bool upd,
-                unsigned long one,
-                unsigned long two);
+       void remove_file(support::FileName const &);
+private:
        ///
-       LString file;
-       /// The files new checksum
-       unsigned long new_sum;
-       /// The files old checksum
-       unsigned long old_sum;
+       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.
+               std::time_t mtime_cur;
+               ///
+               bool changed() const;
+       };
        ///
-       DepTable *next;
-               
+       typedef std::map<support::FileName, dep_info> DepList;
        ///
-       void write(FILE *f);
+       DepList deplist;
 };
 
+
+} // namespace lyx
+
 #endif