spot  1.99.4
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
tmpfile.hh
1 // -*- coding: utf-8 -*-
2 // Copyright (C) 2013, 2015 Laboratoire de Recherche et Développement
3 // de l'Epita (LRDE).
4 //
5 // This file is part of Spot, a model checking library.
6 //
7 // Spot is free software; you can redistribute it and/or modify it
8 // under the terms of the GNU General Public License as published by
9 // the Free Software Foundation; either version 3 of the License, or
10 // (at your option) any later version.
11 //
12 // Spot is distributed in the hope that it will be useful, but WITHOUT
13 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 // License for more details.
16 //
17 // You should have received a copy of the GNU General Public License
18 // along with this program. If not, see <http://www.gnu.org/licenses/>.
19 
20 #pragma once
21 
22 #include "common.hh"
23 #include <new>
24 #include <stdexcept>
25 #include <iostream>
26 #include <list>
27 #include "formater.hh"
28 
29 namespace spot
30 {
33 
49  class SPOT_API temporary_file: public printable
50  {
51  public:
52  typedef std::list<temporary_file*>::iterator cleanpos_t;
53 
54  SPOT_LOCAL temporary_file(char* name, cleanpos_t cp);
55  virtual ~temporary_file() override;
56 
57  const char* name() const
58  {
59  return name_;
60  }
61 
62  friend std::ostream& operator<<(std::ostream& os, const temporary_file* f)
63  {
64  os << f->name();
65  return os;
66  }
67 
68  virtual void
69  print(std::ostream& os, const char*) const final override
70  {
71  os << this;
72  }
73 
74  protected:
75  char* name_;
76  cleanpos_t cleanpos_;
77  };
78 
86  class SPOT_API open_temporary_file final: public temporary_file
87  {
88  public:
89  SPOT_LOCAL open_temporary_file(char* name, cleanpos_t cp, int fd);
90  virtual ~open_temporary_file() override;
91 
92  void close();
93 
94  int fd() const
95  {
96  return fd_;
97  }
98 
99  protected:
100  int fd_;
101  };
102 
111  SPOT_API temporary_file*
112  create_tmpfile(const char* prefix, const char* suffix = nullptr)
113  throw(std::bad_alloc, std::runtime_error);
114 
119  SPOT_API open_temporary_file*
120  create_open_tmpfile(const char* prefix, const char* suffix = nullptr)
121  throw(std::bad_alloc, std::runtime_error);
122 
135  SPOT_API void
136  cleanup_tmpfiles();
137 
139 }
Definition: graph.hh:31
Temporary file name.
Definition: tmpfile.hh:49
Open temporary file.
Definition: tmpfile.hh:86
Definition: formula.hh:1539
Definition: formater.hh:29

Please direct any question, comment, or bug report to the Spot mailing list at spot@lrde.epita.fr.
Generated on Thu Oct 1 2015 05:49:14 for spot by doxygen 1.8.8