SourceXtractorPlusPlus
0.12
Please provide a description of the project.
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
SEFramework
src
lib
FITS
FitsFileManager.cpp
Go to the documentation of this file.
1
17
/*
18
* FitsFileManager.cpp
19
*
20
* Created on: Sep 19, 2019
21
* Author: mschefer
22
*/
23
24
#include <iostream>
25
#include <assert.h>
26
27
#include "
ElementsKernel/Exception.h
"
28
29
#include "
SEFramework/FITS/FitsFile.h
"
30
31
#include "
SEFramework/FITS/FitsFileManager.h
"
32
33
namespace
SourceXtractor {
34
35
std::shared_ptr<FitsFileManager>
FitsFileManager::s_instance
;
36
37
FitsFileManager::FitsFileManager
(
unsigned
int
max_open_files) : m_max_open_files(max_open_files) {
38
}
39
40
FitsFileManager::~FitsFileManager
() {
41
closeAllFiles
();
42
}
43
44
void
FitsFileManager::closeAllFiles
() {
45
for
(
auto
& file :
m_fits_files
) {
46
file.second->close();
47
}
48
}
49
50
std::shared_ptr<FitsFile>
FitsFileManager::getFitsFile
(
const
std::string
&
filename
,
bool
writeable) {
51
if
(
m_fits_files
.find(filename) !=
m_fits_files
.end()) {
52
auto
fits_file =
m_fits_files
.at(filename);
53
if
(writeable) {
54
fits_file->setWriteMode();
55
}
56
57
return
fits_file;
58
}
else
{
59
auto
new_fits_file =
std::shared_ptr<FitsFile>
(
new
FitsFile
(filename, writeable,
shared_from_this
()));
60
m_fits_files
[
filename
] = new_fits_file;
61
return
new_fits_file;
62
}
63
}
64
65
66
void
FitsFileManager::closeExtraFiles
() {
67
while
(
m_open_files
.size() >
m_max_open_files
) {
68
auto
& file_to_close =
m_fits_files
[
m_open_files
.back()];
69
file_to_close->close();
70
m_open_files
.pop_back();
71
}
72
}
73
74
}
std::shared_ptr
std::enable_shared_from_this< FitsFileManager >::shared_from_this
T shared_from_this(T...args)
FitsFileManager.h
SourceXtractor::FitsFileManager::getFitsFile
std::shared_ptr< FitsFile > getFitsFile(const std::string &filename, bool writeable=false)
Definition:
FitsFileManager.cpp:50
SourceXtractor::FitsFileManager::m_max_open_files
unsigned int m_max_open_files
Definition:
FitsFileManager.h:59
SourceXtractor::FitsFileManager::s_instance
static std::shared_ptr< FitsFileManager > s_instance
Definition:
FitsFileManager.h:62
std::string
STL class.
FitsFile.h
conf.filename
string filename
Definition:
conf.py:63
SourceXtractor::FitsFile
represents access to a whole FITS file and handles loading and caching FITS headers ...
Definition:
FitsFile.h:44
SourceXtractor::FitsFileManager::m_open_files
std::list< std::string > m_open_files
Definition:
FitsFileManager.h:60
SourceXtractor::FitsFileManager::closeExtraFiles
void closeExtraFiles()
Definition:
FitsFileManager.cpp:66
SourceXtractor::FitsFileManager::~FitsFileManager
virtual ~FitsFileManager()
Definition:
FitsFileManager.cpp:40
SourceXtractor::FitsFileManager::FitsFileManager
FitsFileManager(unsigned int max_open_files=500)
Definition:
FitsFileManager.cpp:37
SourceXtractor::FitsFileManager::m_fits_files
std::unordered_map< std::string, std::shared_ptr< FitsFile > > m_fits_files
Definition:
FitsFileManager.h:57
Exception.h
SourceXtractor::FitsFileManager::closeAllFiles
void closeAllFiles()
Definition:
FitsFileManager.cpp:44
Generated by
1.8.5