Files @ r4548:6a33e364fba5
Branch filter:

Location: cpp/openttd-patchpack/source/yapf/unittest/test_autocopyptr.h

rubidium
(svn r6380) -Codechange: unify all ways to quit OTTD.
This means that in the intro menu the 'Quit' button immediatelly quits
and the 'Quit' in the menu of the normal game and scenario editor
immediatelly quits when the 'autosave_on_exit' patch is turned on.
This is the same way as the OS/window manager initiated quits, like
alt-F4 and the 'x' in the (OS/window manager drawn) title bar of OTTD.
/* $Id$ */

struct CData
{
	int val;

	FORCEINLINE CData() : val(0)                       {NumInstances()++; /*DBG("DCata::ctor()\n");*/}
	FORCEINLINE CData(const CData& src) : val(src.val) {NumInstances()++; /*DBG("DCata::ctor(%d)\n", val);*/}
	FORCEINLINE ~CData()                               {NumInstances()--; /*DBG("DCata::dtor(%d)\n", val);*/}

	FORCEINLINE bool operator < (const CData& other) const {return (val < other.val);}

	FORCEINLINE static int& NumInstances() { static int num_instances = 0; return num_instances; };

};

typedef CAutoCopyPtrT<CData> PData;

static int TestAutoCopyPtr(bool silent)
{
	int res = 0;
	{
		PData p1, p3;
		p1->val = 4;
		PData p2; p2 = p1;
		p2->val = 6;
		DBG("\n%d, %d", p1->val, p2->val);
		CHECK_INT(0, p1->val, 4);
		CHECK_INT(1, p2->val, 6);

		p2 = p1;
		p3 = p1;
		p2->val = 7;
		DBG("\n%d, %d", p1->val, p2->val);
		CHECK_INT(2, p3->val, 4);
		CHECK_INT(3, p2->val, 7);

		CHECK_INT(4, CData::NumInstances(), 3);
	}
	CHECK_INT(5, CData::NumInstances(), 0);
	return res;
}