Isis Developer Reference
EmbreeTargetManager.h
Go to the documentation of this file.
1 #ifndef EmbreeTargetManager_h
2 #define EmbreeTargetManager_h
3 
8 /* SPDX-License-Identifier: CC0-1.0 */
9 
10 #include <QMap>
11 
12 #include "EmbreeTargetShape.h"
13 
14 namespace 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;
99  int m_maxCacheSize;
100  };
101 
102 };
103 
104 #endif
FileName.h
Isis::EmbreeTargetManager::maxCacheSize
int maxCacheSize() const
Return the maximum number of stored EmbreeTargetShapes.
Definition: EmbreeTargetManager.cpp:243
QList< QString >
Isis::FileName
File name manipulation and expansion.
Definition: FileName.h:100
Isis::EmbreeTargetManager::inCache
bool inCache(const QString &shapeFile) const
Check if there is an already created EmbreeTargetShape for a file.
Definition: EmbreeTargetManager.cpp:266
Isis::EmbreeTargetManager::currentCacheSize
int currentCacheSize() const
Return the number of currently stored EmbreeTargetShapes.
Definition: EmbreeTargetManager.cpp:233
EmbreeTargetShape.h
Isis::EmbreeTargetManager
Class for managing the construction and destruction of EmbreeTargetShapes.
Definition: EmbreeTargetManager.h:37
Isis::EmbreeTargetManager::getInstance
static EmbreeTargetManager * getInstance()
Retrieve reference to Singleton instance of this object.
Definition: EmbreeTargetManager.cpp:77
_FILEINFO_
#define _FILEINFO_
Macro for the filename and line number.
Definition: IException.h:24
Isis::EmbreeTargetManager::create
EmbreeTargetShape * create(const QString &shapeFile)
Get a pointer to an EmbreeTargetShape containing the information from a shape file.
Definition: EmbreeTargetManager.cpp:129
EmbreeTargetManager.h
Isis::IException
Isis exception class.
Definition: IException.h:91
Isis::EmbreeTargetShape
Embree Target Shape for planetary bodies.
Definition: EmbreeTargetShape.h:139
Isis::EmbreeTargetManager::setMaxCacheSize
void setMaxCacheSize(const int &numShapes)
Set the maximum number of stored EmbreeTargetShapes.
Definition: EmbreeTargetManager.cpp:256
IException.h
Isis::IException::Programmer
@ Programmer
This error is for when a programmer made an API call that was illegal.
Definition: IException.h:146
std
Namespace for the standard library.
Isis::EmbreeTargetManager::free
void free(const QString &shapeFile)
Notify the manager that an EmbreeTargetShape is no longer in use.
Definition: EmbreeTargetManager.cpp:173
QMap< QString, EmbreeTargetShapeContainer >
Isis
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16