Serious-Engine/Sources/Depend/Dependency.h

84 lines
2.7 KiB
C
Raw Permalink Normal View History

2016-03-12 01:20:51 +01:00
/* Copyright (c) 2002-2012 Croteam Ltd.
This program is free software; you can redistribute it and/or modify
it under the terms of version 2 of the GNU General Public License as published by
the Free Software Foundation
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */
2016-03-11 14:57:17 +01:00
#ifndef SE_INCL_DEPENDENCY_H
#define SE_INCL_DEPENDENCY_H
#ifdef PRAGMA_ONCE
#pragma once
#endif
// adjust file path automatically for application path prefix
void AdjustFilePath_t(CTFileName &fnm);
class CDependInfo {
public:
// atributes
CListNode di_Node;
CTFileName di_fnFileName;
time_t di_tTime;
CTFileName di_fnParent;
// default constructor
CDependInfo( CTFileName fnFileName, CTFileName fnParent);
// if this file is updated
BOOL IsFileOnDiskUpdated(void);
// if time of given file is same
inline BOOL IsUpdated(const CDependInfo &diOther) {
return( diOther.di_tTime == di_tTime);};
// if given file is older
inline BOOL IsOlder(const CDependInfo &diOther) {
return( di_tTime < diOther.di_tTime);};
// Comparison operator.
inline BOOL operator==(const CDependInfo &diOther) const {
return( diOther.di_fnFileName == di_fnFileName);};
// read and write opertaions
inline void Read_t( CTStream *istrFile) {
*istrFile >> di_fnFileName;
istrFile->Read_t( &di_tTime, sizeof( time_t));
};
inline void Write_t( CTStream *ostrFile) const {
*ostrFile << di_fnFileName;
ostrFile->Write_t( &di_tTime, sizeof( time_t));
};
};
class CDependencyList {
public:
CListHead dl_ListHead;
// operations
void ExtractDependencies();
// remove updated files from list
void RemoveUpdatedFiles();
// create list from ascii file
void ImportASCII( CTFileName fnAsciiFile);
// export list members into ascii file in form sutable for archivers
void ExportASCII_t( CTFileName fnAsciiFile);
// substracts given list from this
void Substract( CDependencyList &dlToSubstract);
// extract translation strings from all files in list
void ExtractTranslations_t( const CTFileName &fnTranslations);
// clear dependency list
void Clear( void);
// if given file allready has its own DependInfo object linked in list
BOOL ExistsInList(CListHead &lh, CTFileName fnTestName) const;
// read and write opertaions
void Read_t( CTStream *istrFile); // throw char *
void Write_t( CTStream *ostrFile); // throw char *
};
#endif /* include-once check. */