Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
ac1e6586
L
libvirt
项目概览
openeuler
/
libvirt
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
libvirt
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ac1e6586
编写于
4月 10, 2011
作者:
M
Matthias Bolte
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
esx: Cleanup and refactor CastFromAnyType macros
Add CastFromAnyType functions for the String type.
上级
a8ad5a40
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
51 addition
and
20 deletion
+51
-20
src/esx/esx_vi_generator.py
src/esx/esx_vi_generator.py
+2
-3
src/esx/esx_vi_types.c
src/esx/esx_vi_types.c
+47
-17
src/esx/esx_vi_types.h
src/esx/esx_vi_types.h
+2
-0
未找到文件。
src/esx/esx_vi_generator.py
浏览文件 @
ac1e6586
...
...
@@ -773,12 +773,11 @@ class Object(Base):
# cast from any type
if
self
.
features
&
Object
.
FEATURE__ANY_TYPE
:
source
+=
"/* esxVI_%s_CastFromAnyType */
\n
"
%
self
.
name
source
+=
"ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE(%s,
\n
"
%
self
.
name
if
self
.
extended_by
is
None
:
source
+=
"{
\n
"
source
+=
"})
\n\n
"
source
+=
"ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE(%s)
\n\n
"
%
self
.
name
else
:
source
+=
"ESX_VI__TEMPLATE__DYNAMIC_CAST_FROM_ANY_TYPE(%s,
\n
"
%
self
.
name
source
+=
"{
\n
"
for
extended_by
in
self
.
extended_by
:
...
...
src/esx/esx_vi_types.c
浏览文件 @
ac1e6586
...
...
@@ -183,32 +183,53 @@
#define ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE(_type, _dispatch) \
#define ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE_EXTRA(_type, _dest_type, _extra, \
_dest_extra) \
int \
esxVI_##_type##_Cast
FromAnyType(esxVI_AnyType *anyType,
\
esxVI_##_type **ptrptr)
\
esxVI_##_type##_Cast
##_dest_extra##FromAnyType(esxVI_AnyType *anyType,
\
_dest_type **ptrptr)
\
{ \
_dest_type *item; \
\
if (anyType == NULL || ptrptr == NULL || *ptrptr != NULL) { \
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, "%s", \
_("Invalid argument")); \
return -1; \
} \
\
switch (anyType->type) { \
_dispatch \
item = *ptrptr; \
\
case esxVI_Type_##_type: \
break; \
_extra \
\
default: \
return esxVI_##_type##_Deserialize##_dest_extra(anyType->node, \
ptrptr); \
}
#define ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE(_type) \
ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE_EXTRA(_type, esxVI_##_type, \
{ \
if (anyType->type != esxVI_Type_##_type) { \
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, \
_("Call to %s for unexpected type '%s'"), \
__FUNCTION__, anyType->other); \
return -1; \
} \
\
return esxVI_##_type##_Deserialize(anyType->node, ptrptr); \
}
},
/* nothing */
)
#define ESX_VI__TEMPLATE__CAST_VALUE_FROM_ANY_TYPE(_type, _value_type) \
ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE_EXTRA(_type, _value_type, \
{ \
if (anyType->type != esxVI_Type_##_type) { \
ESX_VI_ERROR(VIR_ERR_INTERNAL_ERROR, \
_("Call to %s for unexpected type '%s'"), \
__FUNCTION__, anyType->other); \
return -1; \
} \
}, Value)
...
...
@@ -591,6 +612,13 @@
#define ESX_VI__TEMPLATE__DYNAMIC_CAST_FROM_ANY_TYPE(__type, _dispatch) \
ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE_EXTRA(__type, esxVI_##__type, \
ESX_VI__TEMPLATE__DISPATCH(__type, _dispatch, -1), \
/* nothing */
)
#define ESX_VI__TEMPLATE__DYNAMIC_SERIALIZE(__type, _dispatch, _serialize) \
ESX_VI__TEMPLATE__SERIALIZE_EXTRA(__type, \
ESX_VI__TEMPLATE__DISPATCH(__type, _dispatch, -1), \
...
...
@@ -1111,6 +1139,12 @@ esxVI_String_DeepCopyValue(char **dest, const char *src)
return
0
;
}
/* esxVI_String_CastFromAnyType */
ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE
(
String
)
/* esxVI_String_CastValueFromAnyType */
ESX_VI__TEMPLATE__CAST_VALUE_FROM_ANY_TYPE
(
String
,
char
)
int
esxVI_String_Serialize
(
esxVI_String
*
string
,
const
char
*
element
,
virBufferPtr
output
)
...
...
@@ -1240,9 +1274,7 @@ ESX_VI__TEMPLATE__VALIDATE(Long,
ESX_VI__TEMPLATE__LIST__APPEND
(
Long
)
/* esxVI_Long_CastFromAnyType */
ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE
(
Long
,
{
})
ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE
(
Long
)
/* esxVI_Long_Serialize */
ESX_VI__TEMPLATE__SERIALIZE
(
Long
,
...
...
@@ -1522,9 +1554,7 @@ ESX_VI__TEMPLATE__DEEP_COPY(ManagedObjectReference,
ESX_VI__TEMPLATE__LIST__APPEND
(
ManagedObjectReference
)
/* esxVI_ManagedObjectReference_CastFromAnyType */
ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE
(
ManagedObjectReference
,
{
})
ESX_VI__TEMPLATE__CAST_FROM_ANY_TYPE
(
ManagedObjectReference
)
/* esxVI_ManagedObjectReference_CastListFromAnyType */
ESX_VI__TEMPLATE__LIST__CAST_FROM_ANY_TYPE
(
ManagedObjectReference
)
...
...
src/esx/esx_vi_types.h
浏览文件 @
ac1e6586
...
...
@@ -178,6 +178,8 @@ int esxVI_String_AppendValueListToList(esxVI_String **stringList,
int
esxVI_String_DeepCopy
(
esxVI_String
**
dest
,
esxVI_String
*
src
);
int
esxVI_String_DeepCopyList
(
esxVI_String
**
destList
,
esxVI_String
*
srcList
);
int
esxVI_String_DeepCopyValue
(
char
**
dest
,
const
char
*
src
);
int
esxVI_String_CastFromAnyType
(
esxVI_AnyType
*
anyType
,
esxVI_String
**
string
);
int
esxVI_String_CastValueFromAnyType
(
esxVI_AnyType
*
anyType
,
char
**
string
);
int
esxVI_String_Serialize
(
esxVI_String
*
string
,
const
char
*
element
,
virBufferPtr
output
);
int
esxVI_String_SerializeList
(
esxVI_String
*
stringList
,
const
char
*
element
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录