Isis 3 Programmer Reference
EmbreeTargetManager.h
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
70 : m_fullFilePath(""),
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;
91 };
92
93 QString fullFilePath(const QString &filePath) const;
94 void removeTargetShape(const QString &shapeFile);
95
97 QMap<QString, EmbreeTargetShapeContainer> m_targeCache;
100 };
101
102};
103
104#endif
Class for managing the construction and destruction of EmbreeTargetShapes.
int maxCacheSize() const
Return the maximum number of stored EmbreeTargetShapes.
void removeTargetShape(const QString &shapeFile)
Method for removing an EmbreeTargetShape from the internal cache.
EmbreeTargetShape * create(const QString &shapeFile)
Get a pointer to an EmbreeTargetShape containing the information from a shape file.
static void DieAtExit()
Exit termination routine.
EmbreeTargetManager()
This constructor will initialize the EmbreeTargetManager object to default values.
QString fullFilePath(const QString &filePath) const
Helper function that takes a file path and returns the full file path.
bool inCache(const QString &shapeFile) const
Check if there is an already created EmbreeTargetShape for a file.
void free(const QString &shapeFile)
Notify the manager that an EmbreeTargetShape is no longer in use.
int m_maxCacheSize
!< The cache of created target shapes.
void setMaxCacheSize(const int &numShapes)
Set the maximum number of stored EmbreeTargetShapes.
static EmbreeTargetManager * getInstance()
Retrieve reference to Singleton instance of this object.
int currentCacheSize() const
Return the number of currently stored EmbreeTargetShapes.
static EmbreeTargetManager * m_maker
Initialize the singleton factory pointer.
QMap< QString, EmbreeTargetShapeContainer > m_targeCache
!< Pointer to the singleton factory.
~EmbreeTargetManager()
Destructor that frees all of the EmbreeTargetShapes managed by this object.
Embree Target Shape for planetary bodies.
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
Reference counting container for EmbreeTargetShapes.
EmbreeTargetShape * m_targetShape
!< The full path to the file used to construct the EmbreeTargetShape.
EmbreeTargetShapeContainer(const QString &fullPath, EmbreeTargetShape *targetShape)
Constructs a container for a target shape and path.