X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FDepTable.h;h=7f687ccec233083ff62d2f79d06db74e7733ed53;hb=0c7bd9a57f2a308bb9659200eda3b7e45f8d5d3c;hp=49cd4e73d9aadacd56f8a443c4f44efa233111fb;hpb=27de1486ca34aaad446adb798d71a77d6f6304da;p=lyx.git diff --git a/src/DepTable.h b/src/DepTable.h index 49cd4e73d9..7f687ccec2 100644 --- a/src/DepTable.h +++ b/src/DepTable.h @@ -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 +#include -#include "LString.h" -#include + +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. + long mtime_cur; + /// + bool changed() const; + }; /// - DepTable *next; - + typedef std::map DepList; /// - void write(FILE *f); + DepList deplist; }; + +} // namespace lyx + #endif