_obj_managers.h

来自「http代理程序」· C头文件 代码 · 共 94 行

H
94
字号
#ifndef ___obj_managers_h__
#define ___obj_managers_h__

/*
Generic object manager
Traits for the managed objects the object
*/
template< class T >
struct _object_manager
{
	// Managed type
	typedef T managed_type;	

	// Function name	: init_object
	// Description	    : Init the managed object
	// Return type		: void 
	// Argument         : managed_type& a
	void init_object( managed_type& a )
	{
	}

	// Function name	: delete_object
	// Description	    : Destroys the managed object
	// Return type		: void 
	// Argument         : managed_type& a
	void delete_object( managed_type& a )
	{
	}
};

/*
Pointer manager
*/
template< class T >
struct _pointer_manager :
	public _object_manager< T >
{

	// Function name	: init_object
	// Description	    : Init the managed object
	// Return type		: void 
	// Argument         : managed_type& a
	void init_object( managed_type& a )
	{
		a = NULL;
	}

	// Function name	: delete_object
	// Description	    : Deletes the pointer
	// Return type		: void 
	// Argument         : managed_type& a
	void delete_object( managed_type& a )
	{
		if( a != NULL )
		{
			delete a;
			a = NULL;
		}
	}
};

/*
Array manager
*/
template< class T >
struct _array_manager :
	public _object_manager< T >
{

	// Function name	: init_object
	// Description	    : Init the managed object
	// Return type		: void 
	// Argument         : managed_type& a
	void init_object( managed_type& a )
	{
		a = NULL;
	}

	// Function name	: delete_object
	// Description	    : Deletes the array
	// Return type		: void 
	// Argument         : managed_type& a
	void delete_object( managed_type& a )
	{
		if( a != NULL )
		{
			delete[] a;
			a = NULL;
		}
	}
};


#endif // ___obj_managers_h__

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?