Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
bda24240
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,发现更多精彩内容 >>
提交
bda24240
编写于
7月 16, 2018
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Implement C++11 <atomic> operations
Fixes
https://github.com/harfbuzz/harfbuzz/issues/345
上级
52441122
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
26 addition
and
5 deletion
+26
-5
src/hb-atomic-private.hh
src/hb-atomic-private.hh
+24
-3
src/hb-open-type-private.hh
src/hb-open-type-private.hh
+1
-1
src/hb-ot-shape-complex-arabic.cc
src/hb-ot-shape-complex-arabic.cc
+1
-1
未找到文件。
src/hb-atomic-private.hh
浏览文件 @
bda24240
...
@@ -46,6 +46,25 @@
...
@@ -46,6 +46,25 @@
/* Defined externally, i.e. in config.h; must have typedef'ed hb_atomic_int_impl_t as well. */
/* Defined externally, i.e. in config.h; must have typedef'ed hb_atomic_int_impl_t as well. */
#elif !defined(HB_NO_MT) && __cplusplus >= 201103L
/* Prefer C++11 atomics. */
#include <atomic>
typedef
int
hb_atomic_int_impl_t
;
#define hb_atomic_int_impl_add(AI, V) (reinterpret_cast<std::atomic<int> *> (&AI)->fetch_add (V))
#define hb_atomic_ptr_impl_get(P) (reinterpret_cast<std::atomic<void*> *> (P)->load ())
static
inline
bool
_hb_atomic_ptr_impl_cmplexch
(
const
void
**
P
,
const
void
*
O_
,
const
void
*
N
)
{
const
void
*
O
=
O_
;
// Need lvalue
return
reinterpret_cast
<
std
::
atomic
<
const
void
*>
*>
(
P
)
->
compare_exchange_weak
((
O
),
(
N
));
}
#define hb_atomic_ptr_impl_cmpexch(P,O,N) (_hb_atomic_ptr_impl_cmplexch ((const void **) (P), (O), (N)))
#elif !defined(HB_NO_MT) && (defined(_WIN32) || defined(__CYGWIN__))
#elif !defined(HB_NO_MT) && (defined(_WIN32) || defined(__CYGWIN__))
#include <windows.h>
#include <windows.h>
...
@@ -162,16 +181,18 @@ typedef int hb_atomic_int_impl_t;
...
@@ -162,16 +181,18 @@ typedef int hb_atomic_int_impl_t;
#endif
#endif
#ifndef HB_ATOMIC_INT_INIT
#define HB_ATOMIC_INT_INIT(V) {V}
#define HB_ATOMIC_INT_INIT(V) {V}
#endif
struct
hb_atomic_int_t
struct
hb_atomic_int_t
{
{
hb_atomic_int_impl_t
v
;
mutable
hb_atomic_int_impl_t
v
;
inline
void
set_unsafe
(
int
v_
)
{
v
=
v_
;
}
inline
void
set_unsafe
(
int
v_
)
{
v
=
v_
;
}
inline
int
get_unsafe
(
void
)
const
{
return
v
;
}
inline
int
get_unsafe
(
void
)
const
{
return
v
;
}
inline
int
inc
(
void
)
{
return
hb_atomic_int_impl_add
(
const_cast
<
hb_atomic_int_impl_t
&>
(
v
)
,
1
);
}
inline
int
inc
(
void
)
{
return
hb_atomic_int_impl_add
(
v
,
1
);
}
inline
int
dec
(
void
)
{
return
hb_atomic_int_impl_add
(
const_cast
<
hb_atomic_int_impl_t
&>
(
v
)
,
-
1
);
}
inline
int
dec
(
void
)
{
return
hb_atomic_int_impl_add
(
v
,
-
1
);
}
};
};
...
...
src/hb-open-type-private.hh
浏览文件 @
bda24240
...
@@ -1247,7 +1247,7 @@ struct hb_lazy_loader_t
...
@@ -1247,7 +1247,7 @@ struct hb_lazy_loader_t
private:
private:
hb_face_t
*
face
;
hb_face_t
*
face
;
T
*
instance
;
mutable
T
*
instance
;
};
};
/* Logic is shared between hb_lazy_loader_t and hb_table_lazy_loader_t */
/* Logic is shared between hb_lazy_loader_t and hb_table_lazy_loader_t */
...
...
src/hb-ot-shape-complex-arabic.cc
浏览文件 @
bda24240
...
@@ -250,7 +250,7 @@ struct arabic_shape_plan_t
...
@@ -250,7 +250,7 @@ struct arabic_shape_plan_t
* mask_array[NONE] == 0. */
* mask_array[NONE] == 0. */
hb_mask_t
mask_array
[
ARABIC_NUM_FEATURES
+
1
];
hb_mask_t
mask_array
[
ARABIC_NUM_FEATURES
+
1
];
arabic_fallback_plan_t
*
fallback_plan
;
mutable
arabic_fallback_plan_t
*
fallback_plan
;
unsigned
int
do_fallback
:
1
;
unsigned
int
do_fallback
:
1
;
unsigned
int
has_stch
:
1
;
unsigned
int
has_stch
:
1
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录