提交 0c258724 编写于 作者: 饶先宏's avatar 饶先宏

202105212120

上级 52dfe16c
cmake_minimum_required (VERSION 3.8)
add_library (lcom STATIC "include/dlist.h" "include/eiid.h" "include/guid.h"
"include/object.h" "src/dlist.c" "src/object.c")
add_library (lcom STATIC
"include/dlist.h"
"include/eiid.h"
"include/guid.h"
"include/object.h"
"src/dlist.c"
"src/object.c"
)
/*
/*
** LCOM: 轻量级组件对象模型
** Copyright (C) 2021-2021, raoxianhong<raoxianhong@163.net>
** All rights reserved.
......
/*
/*
** LCOM: 轻量级组件对象模型
** Copyright (C) 2021-2021, raoxianhong<raoxianhong@163.net>
** All rights reserved.
......
/*
/*
** LCOM: 轻量级组件对象模型
** Copyright (C) 2021-2021, raoxianhong<raoxianhong@163.net>
** All rights reserved.
......@@ -45,14 +45,14 @@
#ifdef IMPLEMENT_GUID
#if _BYTE_ORDER == _BIG_ENDIAN
#define DEFINE_GUID(name, L, s1, s2, b1, b2, b3, b4, b5, b6, b7, b8) \
const Ouint32_t name[4] = {L, \
Ouint32_t name[4] = {L, \
((s2) << 0) | (s1 << 16), \
((b1) << 0) | ((b2) << 8) | ((b3) << 16) | ((b4) << 24), \
((b5) << 0) | ((b6) << 8) | ((b7) << 16) | ((b8) << 24), \
};
#else
#define DEFINE_GUID(name, L, s1, s2, b1, b2, b3, b4, b5, b6, b7, b8) \
const Ouint32_t name[4] = {L, \
Ouint32_t name[4] = {L, \
((s1) << 0) | (s2 << 16), \
((b4) << 0) | ((b3) << 8) | ((b2) << 16) | ((b1) << 24), \
((b8) << 0) | ((b7) << 8) | ((b6) << 16) | ((b5) << 24), \
......@@ -61,7 +61,7 @@ const Ouint32_t name[4] = {L, \
#else
#define DEFINE_GUID(name, L, s1, s2, b1, b2, b3, b4, b5, b6, b7, b8) \
extern const Ouint32_t name[4];
extern Ouint32_t name[4];
#endif
......@@ -68,7 +68,7 @@ typedef void (*OVOIDFUNCPTR)();
#ifndef _ASMLANGUAGE
typedef const Ouint32_t* IIDTYPE;
typedef Ouint32_t* IIDTYPE;
/* 判断GUID相等时,应比较它们的16字节是否一致 */
......@@ -335,6 +335,14 @@ int objectCreateEx(IIDTYPE clsid, const PARAMITEM * pParams, int paramcount, IID
*/
int objectQueryCreator(IIDTYPE clsid, FObjectCreate * pObjectCreator);
/*
把一个"7691029B-DAE3-4AC9-9A81-411C1B529039"格式的IID转换成一个IIDTYPE
返回值:
0 -- 成功
否则 -- 格式不对
*/
int str2iid(const char* str, IIDTYPE iid);
/*
以下代码辅助实现一个Object
*/
......
......@@ -324,3 +324,30 @@ void _Assert(const char * pszExpr, const char *pszFileName, unsigned int nLine)
logMsg("Assertion Failed: \"%s\"\nFile=%s, Line=%d\n", pszExpr, pszFileName, nLine);
}
#endif
/*
把一个"7691029B-DAE3-4AC9-9A81-411C1B529039"格式的IID转换成一个IIDTYPE
返回值:
0 -- 成功
否则 -- 格式不对
*/
int str2iid(const char* str, IIDTYPE iid)
{
unsigned int L;
unsigned int s[2];
unsigned int b[8];
if (sscanf_s(str, "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X", &L, &s[0], &s[1],
&b[0], &b[1], &b[2], &b[3], &b[4], &b[5], &b[6], &b[7]) != 11)
return -1;
#define IMPLEMENT_GUID
#include "../include/guid.h"
{
DEFINE_GUID(temp, L, s[0], s[1], b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7]);
iid[0] = temp[0];
iid[1] = temp[1];
iid[2] = temp[2];
iid[3] = temp[3];
}
#undef IMPLEMENT_GUID
return 0;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册