mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	FDHandle class (non-portable) moved here from lib/Support/FileUtilities git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19107 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //===- 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
 |