📄 objectguid.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 + -