EPICS ARCHIVER V4
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups
AutoFilePtr.h
1 // -*- c++ -*-
2 
3 #ifndef __AUTO_FILE_PRT_H__
4 #define __AUTO_FILE_PRT_H__
5 
6 // system
7 #include <stdio.h>
8 
9 // tool
10 #include "tools/NoCopy.h"
11 
13 
16 {
17 public:
18 
22  AutoFilePtr(const char *filename, const char *mode)
23  : f(0)
24  {
25  open(filename, mode);
26  }
27 
30  AutoFilePtr(FILE *f = 0) : f(f) {}
31 
34  {
35  close();
36  }
37 
39  bool open(const char *filename, const char *mode)
40  {
41  set(fopen(filename, mode));
42  return f != 0;
43  }
44 
46  void close()
47  {
48  set(0);
49  }
50 
53  void set(FILE *new_f)
54  {
55  if (f)
56  fclose(f);
57  f = new_f;
58  }
59 
61  operator bool () const
62  {
63  return f != 0;
64  }
65 
67  operator FILE * () const
68  {
69  return f;
70  }
71 private:
72  PROHIBIT_DEFAULT_COPY(AutoFilePtr);
73  FILE *f;
74 };
75 
76 #endif
~AutoFilePtr()
Destructor closes the FILE under control of this AutoFilePtr.
Definition: AutoFilePtr.h:33
Auto-close FILE pointer wrapper.
Definition: AutoFilePtr.h:15
void set(FILE *new_f)
Release control of the current file, closing it, and switch to a new file.
Definition: AutoFilePtr.h:53
bool open(const char *filename, const char *mode)
Open a (new) file.
Definition: AutoFilePtr.h:39
void close()
Close the current file.
Definition: AutoFilePtr.h:46
AutoFilePtr(const char *filename, const char *mode)
Construct AutoFilePtr for given filename and mode.
Definition: AutoFilePtr.h:22
AutoFilePtr(FILE *f=0)
Construct AutoFilePtr for existing FILE, which is now controlled by the AutoFilePtr.
Definition: AutoFilePtr.h:30