⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fwpackdata.h

📁 一个用HLA编写的聊天程序
💻 H
📖 第 1 页 / 共 2 页
字号:
			ASSERT(theHandle != ATTRNOHANDLE); \
			PackStructFixedSet(theAdds, data, theHandle, num); \
		}
#define PACKING_STRING_ATTRIBUTEDATA(data, dataName, updateFlag) \
		if(theName == dataName && updateFlag) { \
			theHandle = FindAttributeHandle(dataName); \
			ASSERT(theHandle != ATTRNOHANDLE); \
			PackString(theAdds, data, theHandle); \
		}
#define PACKING_STRINGARRAY_ATTRIBUTEDATA(data, dataName, updateFlag) \
		if(theName == dataName && updateFlag) { \
			theHandle = FindAttributeHandle(dataName); \
			ASSERT(theHandle != ATTRNOHANDLE); \
			PackStringArray(theAdds, data, theHandle); \
		}
#define PACKING_STRINGFIXEDSET_ATTRIBUTEDATA(data, dataName, updateFlag, num) \
		if(theName == dataName && updateFlag) { \
			theHandle = FindAttributeHandle(dataName); \
			ASSERT(theHandle != ATTRNOHANDLE); \
			PackStringFixedSet(theAdds, data, theHandle, num); \
		}
#define END_PACKING_ATTRIBUTES_DATA() \
	} \
}

#define BEGIN_UNPACKING_ATTRIBUTES_DATA(pAttributes) \
{ \
	RTI::AttributeHandle theHandle = ATTRNOHANDLE, id = ATTRNOHANDLE; \
	const RTI::AttributeHandleValuePairSet* theGets = pAttributes; \
	ASSERT(theGets != NULL); \
	for (unsigned int i = 0; i < theGets->size(); i++) { \
		theHandle = theGets->getHandle(i);
#define UNPACKING_BASIC_ATTRIBUTEDATA(data, dataName) \
		id = FindAttributeHandle(dataName); \
		if(theHandle == id) { \
			UnpackBasic(theGets, data, i); \
		} 
#define UNPACKING_BASICFIXEDSET_ATTRIBUTEDATA(data, dataName, num, sizeType) \
		id = FindAttributeHandle(dataName); \
		if(theHandle == id) { \
			UnpackBasicFixedSet(theGets, data, i, num, sizeType); \
		}
#define UNPACKING_BASICARRAY_ATTRIBUTEDATA(data, dataName, sizeType) \
		id = FindAttributeHandle(dataName); \
		if(theHandle == id) { \
			UnpackBasicArray(theGets, data, i, sizeType); \
		}
#define UNPACKING_STRUCT_ATTRIBUTEDATA(data, dataName) \
		id = FindAttributeHandle(dataName); \
		if(theHandle == id) { \
			UnpackStruct(theGets, data, i); \
		}
#define UNPACKING_STRUCTFIXEDSET_ATTRIBUTEDATA(data, dataName, num) \
		id = FindAttributeHandle(dataName); \
		if(theHandle == id) { \
			UnpackStructFixedSet(theGets, data, i, num); \
		}
#define UNPACKING_STRUCTARRAY_ATTRIBUTEDATA(data, dataName) \
		id = FindAttributeHandle(dataName); \
		if(theHandle == id) { \
			UnpackStructArray(theGets, data, i); \
		}
#define UNPACKING_STRING_ATTRIBUTEDATA(data, dataName) \
		id = FindAttributeHandle(dataName); \
		if(theHandle == id) { \
			UnpackString(theGets, data, i); \
		}
#define UNPACKING_STRINGFIXEDSET_ATTRIBUTEDATA(data, dataName, num) \
		id = FindAttributeHandle(dataName); \
		if(theHandle == id) { \
			UnpackStringFixedSet(theGets, data, i, num); \
		}
#define UNPACKING_STRINGARRAY_ATTRIBUTEDATA(data, dataName) \
		id = FindAttributeHandle(dataName); \
		if(theHandle == id) { \
			UnpackStringArray(theGets, data, i); \
		}
#define END_UNPACKING_ATTRIBUTES_DATA() \
	} \
}

#define BEGIN_PACKING_PARAMETERS_DATA(pParameters) \
{ \
	RTI::ParameterHandle theHandle = PARANOHANDLE; \
	RTI::ParameterHandleValuePairSet* theAdds = pParameters; \
	ASSERT(theAdds != NULL);
#define PACKING_BASIC_PARAMETERDATA(data, dataName, sizeType) \
	theHandle = FindParameterHandle(dataName); \
	ASSERT(theHandle != PARANOHANDLE); \
	PackBasic(theAdds, data, theHandle, sizeType);
#define PACKING_BASICARRAY_PARAMETERDATA(data, dataName, sizeType) \
	theHandle = FindParameterHandle(dataName); \
	ASSERT(theHandle != PARANOHANDLE); \
	PackBasicArray(theAdds, data, theHandle, sizeType);
#define PACKING_BASICFIXEDSET_PARAMETERDATA(data, dataName, num, sizeType) \
	theHandle = FindParameterHandle(dataName); \
	ASSERT(theHandle != PARANOHANDLE); \
	PackBasicFixedSet(theAdds, data, theHandle, num, sizeType);
#define PACKING_STRUCT_PARAMETERDATA(data, dataName) \
	theHandle = FindParameterHandle(dataName); \
	ASSERT(theHandle != PARANOHANDLE); \
	PackStruct(theAdds, data, theHandle);
#define PACKING_STRUCTARRAY_PARAMETERDATA(data, dataName) \
	theHandle = FindParameterHandle(dataName); \
	ASSERT(theHandle != PARANOHANDLE); \
	PackStructArray(theAdds, data, theHandle);
#define PACKING_STRUCTFIXEDSET_PARAMETERDATA(data, dataName, num) \
	theHandle = FindParameterHandle(dataName); \
	ASSERT(theHandle != PARANOHANDLE); \
	PackStructFixedSet(theAdds, data, theHandle, num);
#define PACKING_STRING_PARAMETERDATA(data, dataName) \
	theHandle = FindParameterHandle(dataName); \
	ASSERT(theHandle != PARANOHANDLE); \
	PackString(theAdds, data, theHandle);
#define PACKING_STRINGARRAY_PARAMETERDATA(data, dataName) \
	theHandle = FindParameterHandle(dataName); \
	ASSERT(theHandle != PARANOHANDLE); \
	PackStringArray(theAdds, data, theHandle);
#define PACKING_STRINGFIXEDSET_PARAMETERDATA(data, dataName, num) \
	theHandle = FindParameterHandle(dataName); \
	ASSERT(theHandle != PARANOHANDLE); \
	PackStringFixedSet(theAdds, data, theHandle, num);
#define END_PACKING_PARAMETERS_DATA() \
}

#define BEGIN_UNPACKING_PARAMETERS_DATA(pParameters) \
{ \
	RTI::ParameterHandle theHandle = PARANOHANDLE, id = PARANOHANDLE; \
	const RTI::ParameterHandleValuePairSet* theGets = pParameters; \
	ASSERT(theGets != NULL); \
	for (unsigned int i = 0; i < theGets->size(); i++) { \
		theHandle = theGets->getHandle(i);
#define UNPACKING_BASIC_PARAMETERDATA(data, dataName) \
		id = FindParameterHandle(dataName); \
		if(theHandle == id) { \
			UnpackBasic(theGets, data, i); \
		} 
#define UNPACKING_BASICFIXEDSET_PARAMETERDATA(data, dataName, num, sizeType) \
		id = FindParameterHandle(dataName); \
		if(theHandle == id) { \
			UnpackBasicFixedSet(theGets, data, i, num, sizeType); \
		}
#define UNPACKING_BASICARRAY_PARAMETERDATA(data, dataName, sizeType) \
		id = FindParameterHandle(dataName); \
		if(theHandle == id) { \
			UnpackBasicArray(theGets, data, i, sizeType); \
		}
#define UNPACKING_STRUCT_PARAMETERDATA(data, dataName) \
		id = FindParameterHandle(dataName); \
		if(theHandle == id) { \
			UnpackStruct(theGets, data, i); \
		}
#define UNPACKING_STRUCTFIXEDSET_PARAMETERDATA(data, dataName, num) \
		id = FindParameterHandle(dataName); \
		if(theHandle == id) { \
			UnpackStructFixedSet(theGets, data, i, num); \
		}
#define UNPACKING_STRUCTARRAY_PARAMETERDATA(data, dataName) \
		id = FindParameterHandle(dataName); \
		if(theHandle == id) { \
			UnpackStructArray(theGets, data, i); \
		}
#define UNPACKING_STRING_PARAMETERDATA(data, dataName) \
		id = FindParameterHandle(dataName); \
		if(theHandle == id) { \
			UnpackString(theGets, data, i); \
		}
#define UNPACKING_STRINGFIXEDSET_PARAMETERDATA(data, dataName, num) \
		id = FindParameterHandle(dataName); \
		if(theHandle == id) { \
			UnpackStringFixedSet(theGets, data, i, num); \
		}
#define UNPACKING_STRINGARRAY_PARAMETERDATA(data, dataName) \
		id = FindParameterHandle(dataName); \
		if(theHandle == id) { \
			UnpackStringArray(theGets, data, i); \
		}
#define END_UNPACKING_PARAMETERS_DATA() \
	}\
}

#define BEGIN_PACKING_COMPLEX_DATA() \
{ \
	unsigned long numOfData = 0; \
	unsigned long num = 0; \
	char *charbuffer = NULL; \
	m_Pack.ClearPack();
#define PACKING_BASIC_COMPLEXDATA(data, sizeType) \
{ \
	m_Pack.PackBasicData(&data, sizeType); \
}
#define PACKING_BASICARRAY_COMPLEXDATA(data, sizeType) \
{ \
	num = data.size(); \
	m_Pack.PackBasicData(&num, sizeof(unsigned long)); \
	for(int k = 0; k < num; k++) { \
		m_Pack.PackBasicData(&data[k], sizeType); \
	} \
}
#define PACKING_BASICFIXEDSET_COMPLEXDATA(data, num, sizeType) \
{ \
	for(int k = 0; k < num; k++) { \
		m_Pack.PackBasicData(&data[k], sizeType); \
	} \
}
#define PACKING_STRUCT_COMPLEXDATA(data) \
{ \
	charbuffer = data.PackData(); \
	numOfData = data.GetSizeOfData(); \
	m_Pack.PackBasicData(&numOfData, sizeof(unsigned long)); \
	m_Pack.PackBasicData((void*)charbuffer, numOfData); \
	data.ClearPack(); \
}
#define PACKING_STRUCTARRAY_COMPLEXDATA(data) \
{ \
	num = data.size(); \
	m_Pack.PackBasicData(&num, sizeof(unsigned long)); \
	for(int k = 0; k < num; k++) { \
		charbuffer = data[k].PackData(); \
		numOfData = data[k].GetSizeOfData(); \
		m_Pack.PackBasicData(&numOfData, sizeof(unsigned long)); \
		m_Pack.PackBasicData((void*)charbuffer, numOfData); \
		data[k].ClearPack(); \
	} \
}
#define PACKING_STRUCTFIXEDSET_COMPLEXDATA(data, num) \
{ \
	for(int k = 0; k < num; k++) { \
		charbuffer = data[k].PackData(); \
		numOfData = data[k].GetSizeOfData(); \
		m_Pack.PackBasicData(&numOfData, sizeof(unsigned long)); \
		m_Pack.PackBasicData((void*)charbuffer, numOfData); \
		data[k].ClearPack(); \
	} \
}
#define PACKING_STRING_COMPLEXDATA(data) \
{ \
	numOfData = data.size(); \
	m_Pack.PackBasicData(&numOfData, sizeof(unsigned long)); \
	m_Pack.PackBasicData((void*)(data.c_str()), numOfData); \
}
#define PACKING_STRINGARRAY_COMPLEXDATA(data) \
{ \
	num = data.size(); \
	m_Pack.PackBasicData(&num, sizeof(unsigned long)); \
	for(int k = 0; k < num; k++) { \
		numOfData = data[k].size(); \
		m_Pack.PackBasicData(&numOfData, sizeof(unsigned long)); \
		m_Pack.PackBasicData((void*)(data[k].c_str()), numOfData); \
	} \
}
#define PACKING_STRINGFIXEDSET_COMPLEXDATA(data, num) \
{ \
	for(int k = 0; k < num; k++) { \
		numOfData = data[k].size(); \
		m_Pack.PackBasicData(&numOfData, sizeof(unsigned long)); \
		m_Pack.PackBasicData((void*)(data[k].c_str()), numOfData); \
	} \
}
#define END_PACKING_COMPLEX_DATA() \
	m_Pack.SaveDirty(); \
	return m_Pack.GetBufData(); \
}

#define BEGIN_UNPACKING_COMPLEX_DATA(pBuffer) \
{ \
	unsigned long numOfData = 0; \
	unsigned long num = 0; \
	char *charbuffer = NULL; \
	char *dataBuffer = pBuffer; \
	m_Pack.ClearPack();
#define UNPACKING_BASIC_COMPLEXDATA(data, sizeType) \
{ \
	m_Pack.UnpackBasicData(dataBuffer, &data, sizeType); \
}
#define UNPACKING_BASICFIXEDSET_COMPLEXDATA(data, num, sizeType) \
{ \
	for(int k = 0; k < num; k++) { \
		m_Pack.UnpackBasicData (dataBuffer, &data[k], sizeType); \
	} \
}
#define UNPACKING_BASICARRAY_COMPLEXDATA(data, sizeType) \
{ \
	m_Pack.UnpackBasicData (dataBuffer, &num, sizeof(unsigned long)); \
	for(int k = 0; k < num; k++) { \
		m_Pack.UnpackBasicData (dataBuffer, &data[k], sizeType); \
	} \
}
#define UNPACKING_STRUCT_COMPLEXDATA(data) \
{ \
	m_Pack.UnpackBasicData(dataBuffer, &numOfData, sizeof(unsigned long)); \
	charbuffer = new char[numOfData + 1]; \
	memset(charbuffer, 0, numOfData + 1); \
	m_Pack.UnpackBasicData(dataBuffer, (void*)(charbuffer), numOfData); \
	data.UnpackData(charbuffer); \
	delete[] charbuffer; \
	charbuffer = NULL; \
}
#define UNPACKING_STRUCTFIXEDSET_COMPLEXDATA(data, num) \
{ \
	for(int k = 0; k < num; k++) { \
		m_Pack.UnpackBasicData(dataBuffer, &numOfData, sizeof(unsigned long)); \
		charbuffer = new char[numOfData + 1]; \
		memset(charbuffer, 0, numOfData + 1); \
		m_Pack.UnpackBasicData(dataBuffer, (void*)(charbuffer), numOfData); \
		data[k].UnpackData(charbuffer); \
		delete[] charbuffer; \
		charbuffer = NULL; \
	} \
}
#define UNPACKING_STRUCTARRAY_COMPLEXDATA(data) \
{ \
	m_Pack.UnpackBasicData(dataBuffer, &num, sizeof(unsigned long)); \
	data.clear(); \
	data.resize(num); \
	for(int k = 0; k < num; k++) { \
		m_Pack.UnpackBasicData(dataBuffer, &numOfData, sizeof(unsigned long)); \
		charbuffer = new char[numOfData + 1]; \
		memset(charbuffer, 0, numOfData + 1); \
		m_Pack.UnpackBasicData(dataBuffer, (void*)(charbuffer), numOfData); \
		data[k].UnpackData(charbuffer); \
		delete[] charbuffer; \
		charbuffer = NULL; \
	} \
}
#define UNPACKING_STRING_COMPLEXDATA(data) \
{ \
	m_Pack.UnpackBasicData(dataBuffer, &numOfData, sizeof(unsigned long)); \
	charbuffer = new char [numOfData + 1]; \
	memset(charbuffer, 0, numOfData + 1); \
	m_Pack.UnpackBasicData(dataBuffer, (void*)(charbuffer), numOfData); \
	data = charbuffer; \
	delete[] charbuffer; \
	charbuffer = NULL; \
}
#define UNPACKING_STRINGFIXEDSET_COMPLEXDATA(data, num) \
{ \
	for(int k = 0; k < num; k++) { \
		m_Pack.UnpackBasicData(dataBuffer, &numOfData, sizeof(unsigned long)); \
		charbuffer = new char[numOfData + 1]; \
		memset(charbuffer, 0, numOfData + 1); \
		m_Pack.UnpackBasicData(dataBuffer, (void*)(charbuffer), numOfData); \
		data[k] = charbuffer; \
		delete[] charbuffer; \
		charbuffer = NULL; \
	} \
}
#define UNPACKING_STRINGARRAY_COMPLEXDATA(data) \
{ \
	m_Pack.UnpackBasicData(dataBuffer, &num, sizeof(unsigned long)); \
	data.clear(); \
	data.resize(num); \
	for(int k = 0; k < num; k++) { \
		m_Pack.UnpackBasicData(dataBuffer, &numOfData, sizeof(unsigned long)); \
		charbuffer = new char [numOfData + 1]; \
		memset(charbuffer, 0, numOfData + 1); \
		m_Pack.UnpackBasicData(dataBuffer, (void*)(charbuffer), numOfData); \
		data[k] = charbuffer; \
		delete[] charbuffer; \
		charbuffer = NULL; \
	} \
}
#define END_UNPACKING_COMPLEX_DATA() \
}
//}}FW_DATA_PACKING_END
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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