aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_private.hpp
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2017-02-16 18:07:13 +0300
committerWohlstand <admin@wohlnet.ru>2017-02-16 18:07:13 +0300
commit88a117c706328e8ccead5280490a447ab8a28383 (patch)
treed9b87df76527f17fc83c5392154cadc572e368bb /src/adlmidi_private.hpp
parent4091cf15cd5273f1381f1ed6d3e836774f9ac0e8 (diff)
downloadlibADLMIDI-88a117c706328e8ccead5280490a447ab8a28383.tar.gz
libADLMIDI-88a117c706328e8ccead5280490a447ab8a28383.tar.bz2
libADLMIDI-88a117c706328e8ccead5280490a447ab8a28383.zip
Remove usage of std::shared_ptr
because it is not supported on Android NDK, yet (even C++11 usagae is enabled!)
Diffstat (limited to 'src/adlmidi_private.hpp')
-rw-r--r--src/adlmidi_private.hpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/adlmidi_private.hpp b/src/adlmidi_private.hpp
index 4f89cae..2d6ecae 100644
--- a/src/adlmidi_private.hpp
+++ b/src/adlmidi_private.hpp
@@ -68,6 +68,33 @@
extern std::string ADLMIDI_ErrorString;
+/*
+ Smart pointer for C heaps, created with malloc() call.
+ FAQ: Why not std::shared_ptr? Because of Android NDK now doesn't supports it
+*/
+template<class PTR>
+class AdlMIDI_CPtr
+{
+ PTR* m_p;
+public:
+ AdlMIDI_CPtr() : m_p(NULL) {}
+ ~AdlMIDI_CPtr()
+ {
+ reset(NULL);
+ }
+
+ void reset(PTR *p = NULL)
+ {
+ if(m_p)
+ free(m_p);
+ m_p = p;
+ }
+
+ PTR* get() { return m_p;}
+ PTR& operator*() { return *m_p; }
+ PTR* operator->() { return m_p; }
+};
+
class MIDIplay;
struct OPL3
{