暴力双分派再论TList

原创 2007年09月20日 13:30:00

TypeList是Loki从外星引进的强大引擎, TypeList由模板支持构建,但是被构建出来的TypeList给了模板神奇的能力,Loki给予新知,源于模板,Loki给予震撼,源于TypeList。

其实TList很简单,但是它给我们带来的便利让我们如何赞扬它都不为过。

其实,在暴力双分派的对称处理中,我们只使用了TList::IndexOf工具,为了支持对称分派,我们在调用的时候做手脚:

template    <bool swapArgs,class SomeLhs,class SomeRhs>
struct    InvocationTraits
...{
    
static    void    DoDispatch(SomeLhs& lhs,SomeRhs& rhs,Executor& exec)
    
...{
        exec.Fire(lhs,rhs);
    }

}
;
template    
<class SomeLhs,class SomeRhs>
struct    InvocationTraits<true,SomeLhs,SomeRhs>
...{
    
static    void    DoDispatch(SomeLhs& lhs,SomeRhs& rhs,Executor& exec)
    
...{
        exec.Fire(rhs,lhs);
    }

}
;

这非常简单,编译器的选择操作。神奇之处在于bool值的获得方法:

static    void    DispatchRhs(BaseLhs& lhs,BaseRhs& rhs,Executor exec)
...{
    
if (Head* p2 =dynamic_cast<Head*>(&rhs))
    
...{
        
enum    ...{swapArgs    = IndexOf<Head,RTList>::result < IndexOf<BaseLhs,LTList>::result};
        InvocationTraits
<swapArgs,BaseLhs,Head>::DoDispatch(lhs,*p2);
    }

}

Loki对这个操作有更精致的做法。

仅此一处对IndexOf的使用,就足以说明,对TypeList学习时间的付出是完全值得的。

Delphi中的TList演示实例

  • 2010年06月17日 10:03
  • 173KB
  • 下载

linux命令Tlist的安装

TagList插件,是一款基于ctags,在vim代码窗口旁以分隔窗口形式显示当前文件的代码结构概览,增加代码浏览的便利程度的Vim插件。官方网址:Tag List,当前最新可用版本为v4.5. 1...

TList对象的缺点与改进

在C++ Builder中,VCL库包含一个TList类,用于管理指针列表。然而,TList类含有许多缺点,其中最严重的缺点是TList缺乏类型的安全性及内存空间的自动释放。本文将探讨TList类的缺...

Delphi容器类之---TList、TObjectList、TComponentList、TClassList的使用

从Delphi5开始VCL中增加了新的Contnrs单元,单元中定义了8个新的类,全部都是基于标准的TList类。 TList                          TList类实际上就是...

控制TList的限量多选

大家知道TWaver Java总的TList继承自Swing的JList,所以我们可以很容易控制其选择,例如单选、多选等。但是本文介绍如何控制按指定数量进行选择。 人生就是一个不停选择的过程。所以,...

TList 使用

TList包含对象指针列表。 Tlist用于存储和维护对象列表。TList引入属隆和方法以执行以下操作: (1)在列表中增加或删除对象。 (2)在列表中重排对象。 (3)在列表中定位和获得对象...

TList类

TList类 标签: integerdelphifunctioninsertclassconstructor 2012-05-08 09:59 1401人阅读 评论(0) 收藏 举报 ...

delphi中Tlist的使用。

我在上面的BLOG中写到了使用指针的方法。在DELPHI中指针最常见的就是和类TLIST结合起来使用。下面是一个很简单的例子,希望对这个例子的分析能让大家对使用TLIST类有一个简单的认识。 代...

ctags、vim、Tlist的使用

ctags、vim、Tlist的使用:首先安装ctags和Tlist:http://linux.chinaunix.net/techdoc/desktop/2009/01/05/1056779.sht...
  • dedlous
  • dedlous
  • 2011年07月20日 18:44
  • 4123

查看进程工具tlist.exe

  • 2015年11月03日 13:37
  • 7KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:暴力双分派再论TList
举报原因:
原因补充:

(最多只允许输入30个字)