Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
30b781f2
T
Third Party Harfbuzz
项目概览
OpenHarmony
/
Third Party Harfbuzz
1 年多 前同步成功
通知
0
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看板
提交
30b781f2
编写于
2月 01, 2019
作者:
M
Michiharu Ariza
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' into cff-retain-gids
上级
c1286265
1e062821
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
23 deletion
+9
-23
src/hb-dsalgs.hh
src/hb-dsalgs.hh
+9
-23
未找到文件。
src/hb-dsalgs.hh
浏览文件 @
30b781f2
...
...
@@ -299,33 +299,19 @@ hb_ceil_to_4 (unsigned int v)
}
template
<
typename
T
>
struct
hb_is_signed
;
template
<
>
struct
hb_is_signed
<
signed
char
>
{
enum
{
value
=
true
};
};
template
<
>
struct
hb_is_signed
<
signed
short
>
{
enum
{
value
=
true
};
};
template
<
>
struct
hb_is_signed
<
signed
int
>
{
enum
{
value
=
true
};
};
template
<
>
struct
hb_is_signed
<
signed
long
>
{
enum
{
value
=
true
};
};
template
<
>
struct
hb_is_signed
<
unsigned
char
>
{
enum
{
value
=
false
};
};
template
<
>
struct
hb_is_signed
<
unsigned
short
>
{
enum
{
value
=
false
};
};
template
<
>
struct
hb_is_signed
<
unsigned
int
>
{
enum
{
value
=
false
};
};
template
<
>
struct
hb_is_signed
<
unsigned
long
>
{
enum
{
value
=
false
};
};
/* We need to define hb_is_signed for the typedefs we use on pre-Visual
* Studio 2010 for the int8_t type, since __int8/__int64 is not considered
* the same as char/long. The previous lines will suffice for the other
* types, though. Note that somehow, unsigned __int8 is considered same
* as unsigned char.
* https://github.com/harfbuzz/harfbuzz/pull/1499
*/
#if defined(_MSC_VER) && (_MSC_VER < 1600)
template
<
>
struct
hb_is_signed
<
__int8
>
{
enum
{
value
=
true
};
};
#endif
/* https://github.com/harfbuzz/harfbuzz/issues/1535 */
template
<
>
struct
hb_is_signed
<
int8_t
>
{
enum
{
value
=
true
};
};
template
<
>
struct
hb_is_signed
<
int16_t
>
{
enum
{
value
=
true
};
};
template
<
>
struct
hb_is_signed
<
int32_t
>
{
enum
{
value
=
true
};
};
template
<
>
struct
hb_is_signed
<
int64_t
>
{
enum
{
value
=
true
};
};
template
<
>
struct
hb_is_signed
<
uint8_t
>
{
enum
{
value
=
false
};
};
template
<
>
struct
hb_is_signed
<
uint16_t
>
{
enum
{
value
=
false
};
};
template
<
>
struct
hb_is_signed
<
uint32_t
>
{
enum
{
value
=
false
};
};
template
<
>
struct
hb_is_signed
<
uint64_t
>
{
enum
{
value
=
false
};
};
template
<
typename
T
>
static
inline
bool
hb_in_range
(
T
u
,
T
lo
,
T
hi
)
{
/* The sizeof() is here to force template instantiation.
* I'm sure there are better ways to do this but can't think of
* one right now. Declaring a variable won't work as HB_UNUSED
* is unusable on some platforms and unused types are less likely
* to generate a warning than unused variables. */
static_assert
(
!
hb_is_signed
<
T
>::
value
,
""
);
/* The casts below are important as if T is smaller than int,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录