All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
SceneModelResourceBase.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include <string>
7 
8 namespace Eegeo
9 {
10  namespace Rendering
11  {
12  namespace SceneModels
13  {
15  {
16  public:
17 
18  SceneModelResourceBase(const std::string& name)
19  : m_name(name)
20  , m_refCount(0)
21  {
22  }
23 
24  virtual ~SceneModelResourceBase() {}
25 
26  const std::string& GetName() const
27  {
28  return m_name;
29  };
30 
31  void IncrementReferenceCount()
32  {
33  Eegeo_ASSERT(m_refCount >= 0, "invalid ref count -- mismatched Increment/Decrement");
34  ++m_refCount;
35  }
36 
37  void DecrementReferenceCount()
38  {
39  --m_refCount;
40  Eegeo_ASSERT(m_refCount >= 0, "invalid ref count -- mismatched Increment/Decrement");
41  }
42 
43  bool IsReferenced() const
44  {
45  Eegeo_ASSERT(m_refCount >= 0, "invalid ref count -- mismatched Increment/Decrement");
46  return m_refCount > 0;
47  }
48 
49  protected:
50 
51  std::string m_name;
52  int m_refCount;
53  };
54  }
55  }
56 }