Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
0f520ada
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看板
提交
0f520ada
编写于
9月 11, 2018
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Revert "Remove unused hb_cache_t"
This reverts commit
473b17af
. Updates to recent changes.
上级
cfdea884
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
77 addition
and
0 deletion
+77
-0
src/Makefile.sources
src/Makefile.sources
+1
-0
src/hb-cache.hh
src/hb-cache.hh
+75
-0
src/hb-ft.cc
src/hb-ft.cc
+1
-0
未找到文件。
src/Makefile.sources
浏览文件 @
0f520ada
...
@@ -7,6 +7,7 @@ HB_BASE_sources = \
...
@@ -7,6 +7,7 @@ HB_BASE_sources = \
hb-buffer.hh
\
hb-buffer.hh
\
hb-buffer-serialize.cc
\
hb-buffer-serialize.cc
\
hb-buffer.cc
\
hb-buffer.cc
\
hb-cache.hh
\
hb-common.cc
\
hb-common.cc
\
hb-debug.hh
\
hb-debug.hh
\
hb-dsalgs.hh
\
hb-dsalgs.hh
\
...
...
src/hb-cache.hh
0 → 100644
浏览文件 @
0f520ada
/*
* Copyright © 2012 Google, Inc.
*
* This is part of HarfBuzz, a text shaping library.
*
* Permission is hereby granted, without written agreement and without
* license or royalty fees, to use, copy, modify, and distribute this
* software and its documentation for any purpose, provided that the
* above copyright notice and the following two paragraphs appear in
* all copies of this software.
*
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*
* Google Author(s): Behdad Esfahbod
*/
#ifndef HB_CACHE_HH
#define HB_CACHE_HH
#include "hb.hh"
/* Implements a lock-free cache for int->int functions. */
template
<
unsigned
int
key_bits
,
unsigned
int
value_bits
,
unsigned
int
cache_bits
>
struct
hb_cache_t
{
static_assert
((
key_bits
>=
cache_bits
),
""
);
static_assert
((
key_bits
+
value_bits
-
cache_bits
<
8
*
sizeof
(
unsigned
int
)),
""
);
inline
void
init
(
void
)
{
clear
();
}
inline
void
fini
(
void
)
{}
inline
void
clear
(
void
)
{
memset
(
values
,
255
,
sizeof
(
values
));
}
inline
bool
get
(
unsigned
int
key
,
unsigned
int
*
value
)
{
unsigned
int
k
=
key
&
((
1u
<<
cache_bits
)
-
1
);
unsigned
int
v
=
values
[
k
].
get_relaxed
();
if
((
v
>>
value_bits
)
!=
(
key
>>
cache_bits
))
return
false
;
*
value
=
v
&
((
1u
<<
value_bits
)
-
1
);
return
true
;
}
inline
bool
set
(
unsigned
int
key
,
unsigned
int
value
)
{
if
(
unlikely
((
key
>>
key_bits
)
||
(
value
>>
value_bits
)))
return
false
;
/* Overflows */
unsigned
int
k
=
key
&
((
1u
<<
cache_bits
)
-
1
);
unsigned
int
v
=
((
key
>>
cache_bits
)
<<
value_bits
)
|
value
;
values
[
k
].
set_relaxed
(
v
);
return
true
;
}
private:
hb_atomic_int_t
values
[
1u
<<
cache_bits
];
};
typedef
hb_cache_t
<
21
,
16
,
8
>
hb_cmap_cache_t
;
typedef
hb_cache_t
<
16
,
24
,
8
>
hb_advance_cache_t
;
#endif
/* HB_CACHE_HH */
src/hb-ft.cc
浏览文件 @
0f520ada
...
@@ -33,6 +33,7 @@
...
@@ -33,6 +33,7 @@
#include "hb-font.hh"
#include "hb-font.hh"
#include "hb-machinery.hh"
#include "hb-machinery.hh"
#include "hb-cache.hh"
#include FT_ADVANCES_H
#include FT_ADVANCES_H
#include FT_MULTIPLE_MASTERS_H
#include FT_MULTIPLE_MASTERS_H
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录