[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