Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
726002a6
T
Third Party Harfbuzz
项目概览
OpenHarmony
/
Third Party Harfbuzz
接近 2 年 前同步成功
通知
1
Star
18
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Harfbuzz
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
726002a6
编写于
5月 09, 2019
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[iter] Make hb_is_iterator_of() check is_convertible
Instead of is_cr_convertible.
上级
70a49f2e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
9 addition
and
9 deletion
+9
-9
src/hb-array.hh
src/hb-array.hh
+4
-4
src/hb-iter.hh
src/hb-iter.hh
+1
-1
src/hb-meta.hh
src/hb-meta.hh
+4
-4
未找到文件。
src/hb-array.hh
浏览文件 @
726002a6
...
...
@@ -47,12 +47,12 @@ struct hb_array_t : hb_iter_with_fallback_t<hb_array_t<Type>, Type&>
template
<
unsigned
int
length_
>
hb_array_t
(
Type
(
&
array_
)[
length_
])
:
arrayZ
(
array_
),
length
(
length_
)
{}
template
<
typename
U
,
hb_enable_if
(
hb_is_cr_convertible
_to
(
U
,
Type
))>
hb_enable_if
(
hb_is_cr_convertible
(
U
,
Type
))>
hb_array_t
(
const
hb_array_t
<
U
>
&
o
)
:
hb_iter_with_fallback_t
<
hb_array_t
<
Type
>
,
Type
&>
(),
arrayZ
(
o
.
arrayZ
),
length
(
o
.
length
)
{}
template
<
typename
U
,
hb_enable_if
(
hb_is_cr_convertible
_to
(
U
,
Type
))>
hb_enable_if
(
hb_is_cr_convertible
(
U
,
Type
))>
hb_array_t
&
operator
=
(
const
hb_array_t
<
U
>
&
o
)
{
arrayZ
=
o
.
arrayZ
;
length
=
o
.
length
;
return
*
this
;
}
...
...
@@ -228,12 +228,12 @@ struct hb_sorted_array_t :
template
<
unsigned
int
length_
>
hb_sorted_array_t
(
Type
(
&
array_
)[
length_
])
:
hb_array_t
<
Type
>
(
array_
)
{}
template
<
typename
U
,
hb_enable_if
(
hb_is_cr_convertible
_to
(
U
,
Type
))>
hb_enable_if
(
hb_is_cr_convertible
(
U
,
Type
))>
hb_sorted_array_t
(
const
hb_array_t
<
U
>
&
o
)
:
hb_iter_t
<
hb_sorted_array_t
<
Type
>
,
Type
&>
(),
hb_array_t
<
Type
>
(
o
)
{}
template
<
typename
U
,
hb_enable_if
(
hb_is_cr_convertible
_to
(
U
,
Type
))>
hb_enable_if
(
hb_is_cr_convertible
(
U
,
Type
))>
hb_sorted_array_t
&
operator
=
(
const
hb_array_t
<
U
>
&
o
)
{
hb_array_t
<
Type
>
(
*
this
)
=
o
;
return
*
this
;
}
...
...
src/hb-iter.hh
浏览文件 @
726002a6
...
...
@@ -266,7 +266,7 @@ static inline char _hb_is_iterator_of (hb_priority<0>, const void *) { return 0;
template
<
typename
Iter
,
typename
Item
,
typename
Item2
=
typename
Iter
::
item_t
,
hb_enable_if
(
hb_is_c
r_convertible_to
(
Item2
,
Item
))>
hb_enable_if
(
hb_is_c
onvertible
(
Item2
,
Item
))>
static
inline
int
_hb_is_iterator_of
(
hb_priority
<
2
>
,
hb_iter_t
<
Iter
,
Item2
>
*
)
{
return
0
;
}
template
<
typename
Iter
,
typename
Item
>
...
...
src/hb-meta.hh
浏览文件 @
726002a6
...
...
@@ -116,10 +116,10 @@ template <typename T> using hb_remove_pointer = typename hb_match_pointer<T>::ty
/* TODO Add feature-parity to std::decay. */
template
<
typename
T
>
using
hb_decay
=
hb_remove_const
<
hb_remove_reference
<
T
>>
;
#define hb_is_cr_convertible
_to(A, B
) ( \
hb_is_same (hb_decay<
A>, hb_decay<B
>) && \
hb_is_const (
A) <= hb_is_const (B
) && \
hb_is_reference (
A) >= hb_is_reference (B
))
#define hb_is_cr_convertible
(From, To
) ( \
hb_is_same (hb_decay<
From>, hb_decay<To
>) && \
hb_is_const (
From) <= hb_is_const (To
) && \
hb_is_reference (
From) >= hb_is_reference (To
))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录