File size: 544 Bytes
fd49381
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "ug_thread_safe_counter.h"
#pragma once
// obsolete once intrusive_ref_counter is available everywhere

namespace Moses {

  class reference_counter
  {
  public:
    friend void intrusive_ptr_add_ref(reference_counter const* p)
    {
      if (p) ++p->m_refcount;
    }
    friend void intrusive_ptr_release(reference_counter const* p)
    {
      if (p && --p->m_refcount == 0) 
	delete p;
    }
  protected:
    reference_counter() {}
    virtual ~reference_counter() {};
  private:
    mutable ThreadSafeCounter m_refcount;
  };
}