Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
20fdb0f4
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
20fdb0f4
编写于
5月 17, 2012
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add a lock-free cache type for int->int functions
To be used for cmap and advance caching if desired.
上级
bd908b4f
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
77 addition
and
0 deletion
+77
-0
TODO
TODO
+2
-0
src/Makefile.am
src/Makefile.am
+1
-0
src/hb-cache-private.hh
src/hb-cache-private.hh
+72
-0
src/hb-font.cc
src/hb-font.cc
+2
-0
未找到文件。
TODO
浏览文件 @
20fdb0f4
...
...
@@ -91,6 +91,8 @@ Tests to write:
- hb_set_t
- hb_cache_t and relatives
Optimizations:
=============
...
...
src/Makefile.am
浏览文件 @
20fdb0f4
...
...
@@ -19,6 +19,7 @@ HBSOURCES = \
hb-blob.cc
\
hb-buffer-private.hh
\
hb-buffer.cc
\
hb-cache-private.hh
\
hb-common.cc
\
hb-fallback-shape-private.hh
\
hb-fallback-shape.cc
\
...
...
src/hb-cache-private.hh
0 → 100644
浏览文件 @
20fdb0f4
/*
* 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_PRIVATE_HH
#define HB_CACHE_PRIVATE_HH
#include "hb-private.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
{
ASSERT_STATIC
(
key_bits
>=
cache_bits
);
ASSERT_STATIC
(
key_bits
+
value_bits
-
cache_bits
<
8
*
sizeof
(
hb_atomic_int_t
));
inline
void
clear
(
void
)
{
memset
(
values
,
255
,
sizeof
(
values
));
}
inline
bool
get
(
unsigned
int
key
,
unsigned
int
*
value
)
{
unsigned
int
k
=
key
&
((
1
<<
cache_bits
)
-
1
);
unsigned
int
v
=
hb_atomic_int_get
(
values
[
k
]);
if
((
v
>>
value_bits
)
!=
(
key
>>
cache_bits
))
return
false
;
}
inline
bool
set
(
unsigned
int
key
,
unsigned
int
value
)
{
if
(
unlikely
((
key
>>
key_bits
)
||
(
value
>>
value_bits
)))
return
false
;
/* Overflows */
unsigned
int
k
=
key
&
((
1
<<
cache_bits
)
-
1
);
unsigned
int
v
=
((
key
>>
cache_bits
)
<<
value_bits
)
|
value
;
hb_atomic_int_set
(
values
[
k
],
v
);
return
true
;
}
private:
hb_atomic_int_t
values
[
1
<<
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_PRIVATE_HH */
src/hb-font.cc
浏览文件 @
20fdb0f4
...
...
@@ -33,6 +33,8 @@
#include "hb-open-file-private.hh"
#include "hb-ot-head-table.hh"
#include "hb-cache-private.hh"
#include <string.h>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录