Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
ed955be3
提交
ed955be3
2月 12, 2012
创建
作者:
Silas Boyd-Wickizer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
xns::iterator
上级
8d482ffb
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
67 行增加
和
0 行删除
+67
-0
ns.hh
ns.hh
+67
-0
没有找到文件。
ns.hh
浏览文件 @
ed955be3
...
@@ -165,4 +165,71 @@ class xns : public rcu_freed {
...
@@ -165,4 +165,71 @@ class xns : public rcu_freed {
e
=
e
->
next
;
e
=
e
->
next
;
}
}
}
}
class
iterator
{
private
:
xns
<
K
,
V
,
HF
>
*
ns_
;
xelem
<
K
,
V
>
*
chain_
;
int
ndx_
;
public
:
iterator
(
xns
<
K
,
V
,
HF
>
*
ns
)
{
if
(
ns_
)
gc_begin_epoch
();
ns_
=
ns
;
ndx_
=
0
;
chain_
=
ns
->
table
[
ndx_
++
].
chain
;
for
(;
chain_
==
0
&&
ndx_
<
NHASH
;
ndx_
++
)
chain_
=
ns_
->
table
[
ndx_
].
chain
;
}
iterator
()
{
ns_
=
0
;
ndx_
=
NHASH
;
chain_
=
0
;
}
~
iterator
()
{
if
(
ns_
)
gc_end_epoch
();
}
bool
operator
!=
(
const
iterator
&
other
)
const
{
return
other
.
chain_
!=
this
->
chain_
;
}
iterator
&
operator
++
()
{
for
(
chain_
=
chain_
->
next
;
chain_
==
0
&&
ndx_
<
NHASH
;
ndx_
++
)
chain_
=
ns_
->
table
[
ndx_
].
chain
;
return
*
this
;
}
V
&
operator
*
()
{
return
chain_
->
val
;
}
};
iterator
begin
()
{
return
iterator
(
this
);
}
iterator
end
()
{
return
iterator
();
}
};
};
template
<
class
K
,
class
V
,
u64
(
*
HF
)(
const
K
&
)
>
static
inline
typename
xns
<
K
,
V
,
HF
>::
iterator
begin
(
xns
<
K
,
V
,
HF
>
*&
ns
)
{
return
ns
->
begin
();
}
template
<
class
K
,
class
V
,
u64
(
*
HF
)(
const
K
&
)
>
static
inline
typename
xns
<
K
,
V
,
HF
>::
iterator
end
(
xns
<
K
,
V
,
HF
>
*&
ns
)
{
return
ns
->
end
();
}
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论