摘要: 今天展示一下如何使用这里描写的库实现一个简单的聊天工具。Callback Interface是昨晚才加的,但是还有一些features没实现,等做完了再做一个Demo,然后提供源代码。
使用这个东西可以开发一些C/S模式的程序,然后只需要将服务器和客户端看成同一个程序,将客户端认为是很多个线程就行了。服务器端提供一些类给客户端创建并使用,当这些服务类要求回调的时候,客户端只需要按照回调的接口实现回调,然后将指针提供给服务类就行了。剩下来的链接啊调度啊网络传输的问题就全部不用管了,非常方便。
阅读全文
posted @
2009-07-17 18:20 陈梓瀚(vczh) 阅读(3617) |
评论 (10) |
编辑 收藏
摘要: 这次展示如何将一个服务器端的C++类让客户端调用。使用早上刚刚开发完的工具,用户可以不用处理任何传输过程中的连接和编码解码等操作。这次实现一个四则运算的语法分析器,客户端发送表达式,服务器端传回语法树(继承树那个模型),客户端将语法树传回去,服务器端传回运算结果。
阅读全文
posted @
2009-07-03 18:07 陈梓瀚(vczh) 阅读(4092) |
评论 (14) |
编辑 收藏
摘要: 现在不仅可以阅读类的成员,也可以用函数名的字符串去调用函数并取得结果了。代码与这篇文章的实例类似,因此只贴出更改的部分以及程序截图。
阅读全文
posted @
2009-06-29 20:47 陈梓瀚(vczh) 阅读(4777) |
评论 (0) |
编辑 收藏
摘要: 为了给C++的反射做Demo,不得不研究一下HTTP的协议。后来发现Windows自带了API可以用,于是就写了个小东西。程序打开之后,如果检测到【http://localhost:8080/vczh/FILENAME】这样子的请求,就将一个目录下面的东西读出来,然后返回。于是就可以用IE来运行某个地方的网页了。代码如下:
阅读全文
posted @
2009-06-29 05:19 陈梓瀚(vczh) 阅读(3880) |
评论 (4) |
编辑 收藏
摘要: 跟上一篇文章一样,一样的数据结构,但是添加了对数组、列表和映射的更多的支持。首先是代码,然后是序列化后的XML文件。
阅读全文
posted @
2009-06-28 20:12 陈梓瀚(vczh) 阅读(6454) |
评论 (10) |
编辑 收藏
摘要: 所谓的反射当然不是自动化的,而是需要自己打标记的。下面会展示两份文件,告诉大家我这个做了一半的反射是怎么工作的。写这个东西的主要目的是,将来可以实现序列化,譬如说序列化到流,或者序列化到XML文件,或者做其他的事情等等(譬如说使用类名创建对象并进行修改)。
阅读全文
posted @
2009-06-25 06:48 陈梓瀚(vczh) 阅读(3558) |
评论 (4) |
编辑 收藏
摘要: 查了MSDN,发现Windows支持Drag and Drop的方法是四个COM:IEnumFORMATETC、IDataObject、IDropSource和IDropTarget。为了让自己做的一个代码编辑文本框里面的代码可以被拖出去拖进来,无奈之下只好实现了这四个东西。
实现了之后,程序刚开始需要调用OldInitialize(NULL);,结束的时候调用OnUninitialize();,控件创建的时候调用RegisterDragDrop,控件结束的时候调用RevokeDragDrop。然后就可以通过这些COM来做Drag and Drop了。下面是接口的实现:
阅读全文
posted @
2009-05-29 21:17 陈梓瀚(vczh) 阅读(3030) |
评论 (4) |
编辑 收藏
摘要: 说明:CMinus是一个读入修改过语法的C源程序,然后编译成x86指令集写入内存,最后用__stdcall调用约定跟C++互相交流的脚本引擎。
目标:CMinus的定位是中间语言,用于将其他语言编译到CMinus上,享受本地指令带来的好处。
进度:完成所有功能,但是由于指令集生成的算法不好,打算修改。
下载:【内详】。
阅读全文
posted @
2009-05-22 00:32 陈梓瀚(vczh) 阅读(9893) |
评论 (24) |
编辑 收藏
摘要: 虽然CMinus到中间指令的代码是精心控制的,但是中间指令到x86的代码却是很随意写出来的。现在看来用窥孔优化只是一种治标不治本的方法。打算在CMinus整个都完成了之后,将中间指令到x86的代码生成那部分重写,使用一种广为人知的寄存器分配算法来做。下面是冒泡排序的程序:
阅读全文
posted @
2009-05-19 16:51 陈梓瀚(vczh) 阅读(2959) |
评论 (3) |
编辑 收藏
摘要: 目前其实只能编译单目运算符和return语句,主要是为了看看整个大框架有没有错误。如果没有发现错误的话,其他种类的表达式和语句的代码生成很容易加上去。下面是一个CMinus程序的例子和编译结果(汇编):
阅读全文
posted @
2009-05-17 23:00 陈梓瀚(vczh) 阅读(2580) |
评论 (1) |
编辑 收藏