mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-11 08:29:25 +00:00
Get rid of the difference between file paths and directory paths. The Path class now simply stores a path that can refer to either a file or a directory. This required various changes in the implementation and interface of the class with the corresponding impact to its users. Doxygen comments were also updated to reflect these changes. Interface changes are: appendDirectory -> appendComponent appendFile -> appendComponent elideDirectory -> eraseComponent elideFile -> eraseComponent elideSuffix -> eraseSuffix renameFile -> rename setDirectory -> set setFile -> set Changes pass Dejagnu and llvm-test/SingleSource tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22349 91177308-0d34-0410-b5e6-96231b3b80d8
59 lines
2.1 KiB
C++
59 lines
2.1 KiB
C++
//===- llvm/Support/FileUtilities.h - File System Utilities -----*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file was developed by the LLVM research group and is distributed under
|
|
// the University of Illinois Open Source License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines a family of utility functions which are useful for doing
|
|
// various things with files.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_SUPPORT_FILEUTILITIES_H
|
|
#define LLVM_SUPPORT_FILEUTILITIES_H
|
|
|
|
#include "llvm/System/Path.h"
|
|
|
|
namespace llvm {
|
|
|
|
/// DiffFilesWithTolerance - Compare the two files specified, returning 0 if
|
|
/// the files match, 1 if they are different, and 2 if there is a file error.
|
|
/// This function allows you to specify an absolete and relative FP error that
|
|
/// is allowed to exist. If you specify a string to fill in for the error
|
|
/// option, it will set the string to an error message if an error occurs, or
|
|
/// if the files are different.
|
|
///
|
|
int DiffFilesWithTolerance(const sys::Path &FileA, const sys::Path &FileB,
|
|
double AbsTol, double RelTol,
|
|
std::string *Error = 0);
|
|
|
|
|
|
/// FileRemover - This class is a simple object meant to be stack allocated.
|
|
/// If an exception is thrown from a region, the object removes the filename
|
|
/// specified (if deleteIt is true).
|
|
///
|
|
class FileRemover {
|
|
sys::Path Filename;
|
|
bool DeleteIt;
|
|
public:
|
|
FileRemover(const sys::Path &filename, bool deleteIt = true)
|
|
: Filename(filename), DeleteIt(deleteIt) {}
|
|
|
|
~FileRemover() {
|
|
if (DeleteIt)
|
|
try {
|
|
Filename.destroy();
|
|
} catch (...) {} // Ignore problems deleting the file.
|
|
}
|
|
|
|
/// releaseFile - Take ownership of the file away from the FileRemover so it
|
|
/// will not be removed when the object is destroyed.
|
|
void releaseFile() { DeleteIt = false; }
|
|
};
|
|
} // End llvm namespace
|
|
|
|
#endif
|