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

📄 objectguid.cpp

📁 .net 方面的开发说明资料。
💻 CPP
字号:
// ======================================================
// Object Server Guid implementation
// ======================================================

#include <memory.h>
#include <stdlib.h>
#include <string.h>

#include "ObjectServer.h"

// --------------------------------------------------------
// Compare two guids and return true if they are equal
// --------------------------------------------------------

SERVER_API bool DLL_CALLCONV  
EpEqualGuid(GUID guid1, GUID guid2) {
	return
	  (static_cast<const unsigned int*>(&guid1.data0)[0] == static_cast<const unsigned int*>(&guid2.data0)[0]) &&
	  (static_cast<const unsigned int*>(&guid1.data0)[1] == static_cast<const unsigned int*>(&guid2.data0)[1]) &&
	  (static_cast<const unsigned int*>(&guid1.data0)[2] == static_cast<const unsigned int*>(&guid2.data0)[2]) &&
	  (static_cast<const unsigned int*>(&guid1.data0)[3] == static_cast<const unsigned int*>(&guid2.data0)[3]);
};

// --------------------------------------------------------
// Convert a string to a guid
// --------------------------------------------------------

SERVER_API void DLL_CALLCONV  
EpGuidFromString(GUID guid, const char *str) {
	char tmp[3];
	char *end;
	bool format1 = false;
	bool ok = false;

	do {
		if(*str == '{') {
			++str;

			guid.data0 = strtoul(str, &end, 16);

			if (end != str + 8)
				break;

			str = end;

			if (*str != '-')
				break;

			++str;

			guid.data1 = static_cast<unsigned short>(strtoul(str, &end, 16));

			if (end != str + 4)
				break;

			str = end;

			if (*str != '-')
				break;

			++str;

			guid.data2 = static_cast<unsigned short>(strtoul(str, &end, 16));

			if(end != str + 4)
				break;

			str = end;

			if (*str != '-')
				break;

			++str;

			tmp[2] = 0;

			strncpy(tmp, str, 2);

			guid.data3[0] = static_cast<unsigned char>(strtoul(tmp, &end, 16));

			if (end != tmp + 2)
				break;

			str += 2;

			strncpy(tmp, str, 2);

			guid.data3[1] = static_cast<unsigned char>(strtoul(tmp, &end, 16));

			if (end != tmp + 2)
				break;
				
			str += 2;

			if (*str != '-')
				break;

			++str;

			for (int i = 2; i < 8; ++i) {
				strncpy(tmp, str, 2);
				guid.data3[i] = static_cast<unsigned char>(strtoul(tmp, &end, 16));

				if(end != tmp + 2)
					break;

				str += 2;
			}

			if(*str != '}')
				break;

			++str;

			if (*str != 0)
				break;
		}

		ok = true;
	} while(0);

	if(!ok)
		memset(&guid, 0, sizeof(GUID));
}

// --------------------------------------------------------
// Convert a guid to a string
// --------------------------------------------------------

SERVER_API void DLL_CALLCONV 
EpStringFromGuid(char *str, GUID guid) {
	static const char hexchars[] = "0123456789abcdef";

	if (str) {
		str[0] = '{';
		str[1] = hexchars[guid.data0 >> 28];
		str[2] = hexchars[(guid.data0 >> 24) & 0xf];
		str[3] = hexchars[(guid.data0 >> 20) & 0xf];
		str[4] = hexchars[(guid.data0 >> 16) & 0xf];
		str[5] = hexchars[(guid.data0 >> 12) & 0xf];
		str[6] = hexchars[(guid.data0 >> 8) & 0xf];
		str[7] = hexchars[(guid.data0 >> 4) & 0xf];
		str[8] = hexchars[guid.data0 & 0xf];
		str[9] = '-';
		str[10] = hexchars[(guid.data1 >> 12) & 0xf];
		str[11] = hexchars[(guid.data1 >> 8) & 0xf];
		str[12] = hexchars[(guid.data1 >> 4) & 0xf];
		str[13] = hexchars[guid.data1 & 0xf];
		str[14] = '-';
		str[15] = hexchars[(guid.data2 >> 12) & 0xf];
		str[16] = hexchars[(guid.data2 >> 8) & 0xf];
		str[17] = hexchars[(guid.data2 >> 4) & 0xf];
		str[18] = hexchars[guid.data2 & 0xf];
		str[19] = '-';
		str[20] = hexchars[guid.data3[0] >> 4];
		str[21] = hexchars[guid.data3[0] & 0xf];
		str[22] = hexchars[guid.data3[1] >> 4];
		str[23] = hexchars[guid.data3[1] & 0xf];
		str[24] = '-';
		str[25] = hexchars[guid.data3[2] >> 4];
		str[26] = hexchars[guid.data3[2] & 0xf];
		str[27] = hexchars[guid.data3[3] >> 4];
		str[28] = hexchars[guid.data3[3] & 0xf];
		str[29] = hexchars[guid.data3[4] >> 4];
		str[30] = hexchars[guid.data3[4] & 0xf];
		str[31] = hexchars[guid.data3[5] >> 4];
		str[32] = hexchars[guid.data3[5] & 0xf];
		str[33] = hexchars[guid.data3[6] >> 4];
		str[34] = hexchars[guid.data3[6] & 0xf];
		str[35] = hexchars[guid.data3[7] >> 4];
		str[36] = hexchars[guid.data3[7] & 0xf];
		str[37] = '}';
		str[38] = 0;
	}
}

⌨️ 快捷键说明

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