Isis Developer Reference
EmbreeTargetManager.h
Go to the documentation of this file.
1#ifndef EmbreeTargetManager_h
2#define EmbreeTargetManager_h
8/* SPDX-License-Identifier: CC0-1.0 */
9
10#include <QMap>
11
12#include "EmbreeTargetShape.h"
13
14namespace Isis {
15
38 public:
40
41 EmbreeTargetShape *create(const QString &shapeFile);
42 void free(const QString &shapeFile);
43
44 int currentCacheSize() const;
45 int maxCacheSize() const;
46 bool inCache(const QString &shapeFile) const;
47 void setMaxCacheSize(const int &numShapes);
48
49 private:
50 // This factory is a singleton, so the constructor and destructor are private.
51 // To get an instance of this class use the static getInstance() method.
54
55 // This method deletes the singleton factory when QT exits
56 static void DieAtExit();
57
65 struct EmbreeTargetShapeContainer {
69 EmbreeTargetShapeContainer()
70 : m_fullFilePath(""),
71 m_targetShape(0),
72 m_referenceCount(0) { }
73
80 EmbreeTargetShapeContainer(const QString &fullPath,
81 EmbreeTargetShape *targetShape)
82 : m_fullFilePath(fullPath),
83 m_targetShape(targetShape),
84 m_referenceCount(0) { }
85
86 QString m_fullFilePath;
88 EmbreeTargetShape *m_targetShape;
89 int m_referenceCount;
91 };
92
93 QString fullFilePath(const QString &filePath) const;
94 void removeTargetShape(const QString &shapeFile);
95
96 static EmbreeTargetManager *m_maker;
97 QMap<QString, EmbreeTargetShapeContainer> m_targeCache;
99 int m_maxCacheSize;
100 };
101
102};
103
104#endif
Class for managing the construction and destruction of EmbreeTargetShapes.
Definition EmbreeTargetManager.h:37
int maxCacheSize() const
Return the maximum number of stored EmbreeTargetShapes.
Definition EmbreeTargetManager.cpp:243
EmbreeTargetShape * create(const QString &shapeFile)
Get a pointer to an EmbreeTargetShape containing the information from a shape file.
Definition EmbreeTargetManager.cpp:129
bool inCache(const QString &shapeFile) const
Check if there is an already created EmbreeTargetShape for a file.
Definition EmbreeTargetManager.cpp:266
void free(const QString &shapeFile)
Notify the manager that an EmbreeTargetShape is no longer in use.
Definition EmbreeTargetManager.cpp:173
void setMaxCacheSize(const int &numShapes)
Set the maximum number of stored EmbreeTargetShapes.
Definition EmbreeTargetManager.cpp:256
static EmbreeTargetManager * getInstance()
Retrieve reference to Singleton instance of this object.
Definition EmbreeTargetManager.cpp:77
int currentCacheSize() const
Return the number of currently stored EmbreeTargetShapes.
Definition EmbreeTargetManager.cpp:233
Embree Target Shape for planetary bodies.
Definition EmbreeTargetShape.h:139
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16