Boost Phoenix 入门 (2)

Phoenix 库有着优雅的设计,它的11个模块分为4层,模块的功能之间完全正交,没有循环依赖。低层模块不依赖高层模块,同一层的模块之间也不互相依赖。这意味着用户可以自由选用自己需要的模块,而不需要把其余部分包含进来。

 

Core

位于 Phoenix 库最底层(第一层)的是 Actor 模块,它是对于 Phoenix functor 的原型定义,做了一个 functor 最基本的工作:重载 operator()。
Actor 分为两种:Primitives 和 Composites,这两个模块构成 Phoenix 库的第二层。第一层和第二层称为 Phoenix 的 Core。

Primitives 提供了 Phoenix 库的功能“砖头”,而 Composites 则是“水泥”,把砖头粘接起来形成更大的功能块。

 

功能模块

Primitives 包括3种:Function,Operator 和 Statement。
Function --- 用来支持 Lazy functions (例如 add)
Operator --- 用来支持 Lazy operators (例如 +)
Statement --- 用来支持 Lazy statements (例如 if_, while_)
Composites 也包括3种:Object,Scope 和 Bind。
Object --- 支持 Lazy cast(例如 static_cast_)以及对象的创建和销毁(new_ 和 delete_)
Scope --- 支持作用域,本地变量和 lambda-lambda
Bind --- 有点类似 boost::bind,用来把普通函数,成员函数和成员变量包装成 lazy functions

以上的6个模块位于 Phoenix 的第三层

 

"Lazy" STL

在 Phoenix 的最高层(第四层),是两个模仿 STL 的模块:Container(也称为 Intrinsic)和 Algorithm。

Container 提供的不是容器,而是容器的方法的 lazy 版本,例如 push_back
Algorithm 就是 STL 算法的 lazy 版本

 

包含文件

Core   #include <boost/spirit/home/phoenix/core.hpp>
Function   #include <boost/spirit/home/phoenix/function.hpp>
Operator   #include <boost/spirit/home/phoenix/operator.hpp>
Statement   #include <boost/spirit/home/phoenix/statement.hpp>

Object   #include <boost/spirit/home/phoenix/object.hpp>
Scope   #include <boost/spirit/home/phoenix/scope.hpp>
Bind   #include <boost/spirit/home/phoenix/bind.hpp>
Container   #include <boost/spirit/home/phoenix/container.hpp>
Algorithm   #include <boost/spirit/home/phoenix/algorithm.hpp>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值