34 lines
		
	
	
		
			380 B
		
	
	
	
		
			C++
		
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
		
			380 B
		
	
	
	
		
			C++
		
	
	
	
|  | #include "..\e2dobject.h"
 | ||
|  | 
 | ||
|  | e2d::Ref::Ref() | ||
|  | 	: ref_count_(0) | ||
|  | { | ||
|  | } | ||
|  | 
 | ||
|  | e2d::Ref::~Ref() | ||
|  | { | ||
|  | } | ||
|  | 
 | ||
|  | LONG e2d::Ref::Retain() | ||
|  | { | ||
|  | 	return ::InterlockedIncrement(&ref_count_); | ||
|  | } | ||
|  | 
 | ||
|  | LONG e2d::Ref::Release() | ||
|  | { | ||
|  | 	LONG new_count = ::InterlockedDecrement(&ref_count_); | ||
|  | 
 | ||
|  | 	if (new_count <= 0) | ||
|  | 	{ | ||
|  | 		delete this; | ||
|  | 		return 0; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	return new_count; | ||
|  | } | ||
|  | 
 | ||
|  | LONG e2d::Ref::GetRefCount() const | ||
|  | { | ||
|  | 	return ref_count_; | ||
|  | } |