[llvm-commits] CVS: llvm/lib/Debugger/FDHandle.h FDHandle.cpp
Reid Spencer
reid at x10sys.com
Wed Dec 22 02:25:05 PST 2004
Changes in directory llvm/lib/Debugger:
FDHandle.h added (r1.1)
FDHandle.cpp added (r1.1)
---
Log message:
For PR351: http://llvm.cs.uiuc.edu/PR351 :
FDHandle class (non-portable) moved here from lib/Support/FileUtilities
---
Diffs of the changes: (+96 -0)
Index: llvm/lib/Debugger/FDHandle.h
diff -c /dev/null llvm/lib/Debugger/FDHandle.h:1.1
*** /dev/null Wed Dec 22 04:25:05 2004
--- llvm/lib/Debugger/FDHandle.h Wed Dec 22 04:24:55 2004
***************
*** 0 ****
--- 1,62 ----
+ //===- lib/Debugger/FDHandle.h - File Descriptor Handle ---------*- 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 LIB_DEBUGGER_FDHANDLE_H
+ #define LIB_DEBUGGER_FDHANDLE_H
+
+ #include "llvm/System/Path.h"
+
+ namespace llvm {
+
+ /// FDHandle - Simple handle class to make sure a file descriptor gets closed
+ /// when the object is destroyed. This handle acts similarly to an
+ /// std::auto_ptr, in that the copy constructor and assignment operators
+ /// transfer ownership of the handle. This means that FDHandle's do not have
+ /// value semantics.
+ ///
+ class FDHandle {
+ int FD;
+ public:
+ FDHandle() : FD(-1) {}
+ FDHandle(int fd) : FD(fd) {}
+ FDHandle(FDHandle &RHS) : FD(RHS.FD) {
+ RHS.FD = -1; // Transfer ownership
+ }
+
+ ~FDHandle() throw();
+
+ /// get - Get the current file descriptor, without releasing ownership of it.
+ int get() const { return FD; }
+ operator int() const { return FD; }
+
+ FDHandle &operator=(int fd) throw();
+
+ FDHandle &operator=(FDHandle &RHS) {
+ int fd = RHS.FD;
+ RHS.FD = -1; // Transfer ownership
+ return operator=(fd);
+ }
+
+ /// release - Take ownership of the file descriptor away from the FDHandle
+ /// object, so that the file is not closed when the FDHandle is destroyed.
+ int release() {
+ int Ret = FD;
+ FD = -1;
+ return Ret;
+ }
+ };
+
+ } // End llvm namespace
+
+ #endif
Index: llvm/lib/Debugger/FDHandle.cpp
diff -c /dev/null llvm/lib/Debugger/FDHandle.cpp:1.1
*** /dev/null Wed Dec 22 04:25:05 2004
--- llvm/lib/Debugger/FDHandle.cpp Wed Dec 22 04:24:55 2004
***************
*** 0 ****
--- 1,34 ----
+ //===- Support/FileUtilities.cpp - File System Utilities ------------------===//
+ //
+ // 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 implements a family of utility functions which are useful for doing
+ // various things with files.
+ //
+ //===----------------------------------------------------------------------===//
+
+ #include "FDHandle.h"
+ #include <unistd.h>
+
+ using namespace llvm;
+
+ //===----------------------------------------------------------------------===//
+ // FDHandle class implementation
+ //
+
+ FDHandle::~FDHandle() throw() {
+ if (FD != -1)
+ ::close(FD);
+ }
+
+ FDHandle &FDHandle::operator=(int fd) throw() {
+ if (FD != -1)
+ ::close(FD);
+ FD = fd;
+ return *this;
+ }
More information about the llvm-commits
mailing list