`
qiezi
  • 浏览: 492064 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表
D语言是由Walter Bright开发的,他也是Symantec C++编译器的作者,仅凭这一点就知道D语言一定不错。 D语言的介绍最好是看uframer的blog,他翻译了D语言的大部分文档。当然由于D语言目前一直处于测试版,文档和最新的编译器之间可 ...
工作忙,学习也忙。1、Ruby on Rails前阵子看了一下Ruby on Rails,不禁为其深深折服,为Ruby,也为Rails。照着Four Days on Rails做了一遍,虽然对Ruby不甚熟悉,不过一路下来感觉非常轻松,在搞明白:xxx和"xxx"是同一个意思以后, ...
本篇没什么清晰的目的,只是解释一下前面的几个问题,并提出一些新的目标。在“asgard项目遗留问题”中,我简单提到了几个问题,并且想了一些解决方案。其中,最首要解决的是第2条“服务对象的大小”和第5条“全局元信息”,这2条将影响到调用机制、call对象的生成。一个调用将生成一个call对象,由线程池来处理,同步调用将由异步调用来模拟。在call对象中,保存了所有in/out参数的包装对象。当处理同步调用时,由于out参数可能是一个栈上对象(或简单类型,这里统称对象),所以需要另一个包装类——outret模板类,它保存out参数的引用。当同步调用发生时,生成一个call对象(当然out参数的 ...
很久以前看到有人问“如何在C++中实现动态加载类”时,简单地做了一个。不过当时没有去考虑动态加载DLL的情况。今天在cpp@codingnow.com中也有人问到这个问题,就把它给做完了。当然只是简单地做到了“从全局类型库中,根据类名创建实例,支持动态DLL加载”,说得更明白点:在应用程序App1中,向全局类型库中注册一个类型"Test",在另一个隐式链接的DLL中(即App1一启动就加载的DLL),向全局类型库中注册另外几个类型。这时可以在App1中通过类型的名字生成实例。在另一个显式加载的DLL中(即调用LoadLibrary加载),向全局类型库中注册其它几个类型。 ...
asgard项目已经准备了一段时间了,不过有些基本问题还需要考虑,也有一些是新发现的问题,以及自认为比较好的解决办法。通过第2、第4条的仔细研究,已经渐渐完善、明确了动态部分和静态部分的关系,使得Method包装类所 ...
如《为C++实现一个IDL(三)》一文中所说,还剩最后一个问题,还是使用前面的测试代码说明。async_call函数的原型是: typedef void(*FUNC_TYPE)(int, char, string, short);void async_call (int v0, char v1, string v2, FUNC_TYPE func);这是模板类根据in/out来产生的。在异步调用中,参数是和操作保存在一起的,因为要交给线程处理。前面已经说过,Method模板类中将保有这些参数,Method的定义如下(以例子中4个参数的特化版本来说明): template 
一、修正错误。首先修正第二篇中的一些错误,错误的内容可见第二篇的评论。在Base类中,FUNC_TYPE需要所有的in/out类型,如果Method的模板参数——即函数类型参数——的返回值不是void,则把它装配成out参数,作为FUNC_TYPE函数类型的最后一个参数,这可以通过偏特化来实现。修改Method模板类,把所有类型包装成一个Typelist,直接传递给Base模板类,由Base去推导出in类型的Typelist。Method模板类修改如下: template <class T>struct Method{    Loki::CompileTimeError < ...
说明:要看懂后面那部分代码,即使用Typelist的部分,最好预先看过《C++设计新思维》,英文版名为《Modern C++ Design》。If模板类在写完后想起来好像在哪见过,早晨去公司查阅了一下,在《产生式编程——方法、工具与应用》一书中有讲,英文名为《Generative Programming -- Methods, Tools, and Applications》基本和本篇中一个样。前2篇乱七八糟地讲了一些,有一个遗留问题,函数原型的推导。简要描述如下: Method < void(in<int>, in<char>, inout<strin ...
“为C++实现一个IDL”这个主题,我已经考虑得差不多了,最后几个问题也解决了,打算建立一个项目来实现它。项目命名为ancients,字面意思是“远古的,旧的”,实际上这个主题也算是旧的了。原本打算命名为C++ Remoting,不 ...
前面简单写了点静态结构,这一次将主要关注动态模型以及调用方式。 这个系列的名字叫“为C++实现一个IDL”,实际上应该叫“为C++实现一个Remoting”可能更好一些,说是IDL,主要是想通过宏,使用简单的类型定义达到自动生成调用代码的目的。 一、首先来看看调用习惯。 从调用习惯入手,主要是因为看到目前有很多库/工具包在调用上都有很多不便之处。假如能在一开始就从这点出发,就能把调用接口设计得更好一些。 先来看看服务端如何开放一个服务。 int main (){    // 发布为SOAP服务,先生成一个服务容器。    // 服务将发布在localhost的7911上,localhost ...
一、问题。这段时间考虑实现一个纯C++的分布式服务包装库,简要描述如下: 有如下类和函数: struct Test{    void test1 (/*in*/ int v1, /*in*/ int* v2);    int test2 (/*in*/ int& v1, /*out*/ int* v2);};int test_func (/*in*/ int*
Global site tag (gtag.js) - Google Analytics