 020721565a
			
		
	
	020721565a
	
	
	
		
			
			- Trailing whitespace - Trailing empty lines - Missing newline at EOF - Missing svn:eol-style native
		
			
				
	
	
		
			114 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* $Id$ */
 | |
| 
 | |
| struct CFsaItem
 | |
| {
 | |
| 	int i;
 | |
| 
 | |
| 	FORCEINLINE static int& NumInstances() { static int num_instances = 0; return num_instances; };
 | |
| 
 | |
| 	FORCEINLINE CFsaItem(int i = 0)
 | |
| 	{
 | |
| 		this->i = i;
 | |
| 		NumInstances()++;
 | |
| 		DBG("(*)");
 | |
| 	}
 | |
| 
 | |
| 	FORCEINLINE CFsaItem(const CFsaItem& src)
 | |
| 	{
 | |
| 		this->i = src.i;
 | |
| 		NumInstances()++;
 | |
| 		DBG("(c)");
 | |
| 	}
 | |
| 
 | |
| 	FORCEINLINE ~CFsaItem()
 | |
| 	{
 | |
| 		NumInstances()--;
 | |
| 		DBG("(-)");
 | |
| 	}
 | |
| };
 | |
| 
 | |
| typedef CFixedSizeArrayT<CFsaItem, 4> CSubArray;
 | |
| typedef CFixedSizeArrayT<CSubArray, 4> CSuperArray;
 | |
| 
 | |
| static int TestFixedSizeArray(bool silent)
 | |
| {
 | |
| 	int res = 0;
 | |
| 	{
 | |
| 		CSuperArray a;
 | |
| 
 | |
| 		CHECK_INT(0, a.IsFull(), false);
 | |
| 		CHECK_INT(1, a.IsEmpty(), true);
 | |
| 
 | |
| 		CSubArray& b1 = a.Add();
 | |
| 		b1.Add().i = 1;
 | |
| 		new(&b1.AddNC())CFsaItem(2);
 | |
| 
 | |
| 		CSubArray& b2 = a.Add();
 | |
| 		new(&b2.AddNC())CFsaItem(3);
 | |
| 		b2.Add().i = 4;
 | |
| 
 | |
| 		CSubArray& b3 = a.AddNC();
 | |
| 		new(&b3)CSubArray(b1);
 | |
| 
 | |
| 		CSubArray& b4 = a.AddNC();
 | |
| 		new(&b4)CSubArray(b2);
 | |
| 
 | |
| 		CHECK_INT(2, a[0][0].i, 1);
 | |
| 		CHECK_INT(3, b1[1].i, 2);
 | |
| 		CHECK_INT(4, b1.Size(), 2);
 | |
| 		CHECK_INT(5, a[3][0].i, 3);
 | |
| 		CHECK_INT(6, a[3][1].i, 4);
 | |
| 		CHECK_INT(7, CFsaItem::NumInstances(), 4);
 | |
| 		CHECK_INT(8, a.IsFull(), true);
 | |
| 		CHECK_INT(9, a.IsEmpty(), false);
 | |
| 		CHECK_INT(10, a[3].IsFull(), false);
 | |
| 		CHECK_INT(11, a[3].IsEmpty(), false);
 | |
| 	}
 | |
| 	CHECK_INT(12, CFsaItem::NumInstances(), 0);
 | |
| 
 | |
| 	return res;
 | |
| }
 | |
| 
 | |
| typedef CArrayT<CFsaItem, 2> CArray;
 | |
| 
 | |
| static int TestArray(bool silent)
 | |
| {
 | |
| 	int res = 0;
 | |
| 	{
 | |
| 		CArray a;
 | |
| 
 | |
| 		CHECK_INT(0, a.IsFull(), false);
 | |
| 		CHECK_INT(1, a.IsEmpty(), true);
 | |
| 
 | |
| 		CHECK_INT(2, a.Size(), 0);
 | |
| 
 | |
| 		a.Add().i = 1;
 | |
| 		CHECK_INT(3, a.Size(), 1);
 | |
| 
 | |
| 		new(&a.AddNC())CFsaItem(2);
 | |
| 		CHECK_INT(4, a.Size(), 2);
 | |
| 
 | |
| 		CHECK_INT(5, a.IsFull(), false);
 | |
| 		CHECK_INT(6, a.IsEmpty(), false);
 | |
| 
 | |
| 		a.Add().i = 3;
 | |
| 		CHECK_INT(7, a.Size(), 3);
 | |
| 
 | |
| 		new(&a.AddNC())CFsaItem(4);
 | |
| 		CHECK_INT(8, a.Size(), 4);
 | |
| 
 | |
| 		CHECK_INT(9, a[0].i, 1);
 | |
| 		CHECK_INT(10, a[1].i, 2);
 | |
| 		CHECK_INT(11, a[2].i, 3);
 | |
| 		CHECK_INT(12, a[3].i, 4);
 | |
| 
 | |
| 		CHECK_INT(13, a.IsFull(), true);
 | |
| 		CHECK_INT(14, a.IsEmpty(), false);
 | |
| 
 | |
| 		CHECK_INT(15, CFsaItem::NumInstances(), 4);
 | |
| 	}
 | |
| 	CHECK_INT(16, CFsaItem::NumInstances(), 0);
 | |
| 
 | |
| 	return res;
 | |
| }
 |