摘要: 今天展示一下如何使用這里描寫的庫實現一個簡單的聊天工具。Callback Interface是昨晚才加的,但是還有一些features沒實現,等做完了再做一個Demo,然后提供源代碼。
使用這個東西可以開發一些C/S模式的程序,然后只需要將服務器和客戶端看成同一個程序,將客戶端認為是很多個線程就行了。服務器端提供一些類給客戶端創建并使用,當這些服務類要求回調的時候,客戶端只需要按照回調的接口實現回調,然后將指針提供給服務類就行了。剩下來的鏈接啊調度啊網絡傳輸的問題就全部不用管了,非常方便。
閱讀全文
posted @
2009-07-17 18:20 陳梓瀚(vczh) 閱讀(3653) |
評論 (10) |
編輯 收藏
摘要: 這次展示如何將一個服務器端的C++類讓客戶端調用。使用早上剛剛開發完的工具,用戶可以不用處理任何傳輸過程中的連接和編碼解碼等操作。這次實現一個四則運算的語法分析器,客戶端發送表達式,服務器端傳回語法樹(繼承樹那個模型),客戶端將語法樹傳回去,服務器端傳回運算結果。
閱讀全文
posted @
2009-07-03 18:07 陳梓瀚(vczh) 閱讀(4121) |
評論 (14) |
編輯 收藏
摘要: 現在不僅可以閱讀類的成員,也可以用函數名的字符串去調用函數并取得結果了。代碼與這篇文章的實例類似,因此只貼出更改的部分以及程序截圖。
閱讀全文
posted @
2009-06-29 20:47 陳梓瀚(vczh) 閱讀(4788) |
評論 (0) |
編輯 收藏
摘要: 為了給C++的反射做Demo,不得不研究一下HTTP的協議。后來發現Windows自帶了API可以用,于是就寫了個小東西。程序打開之后,如果檢測到【http://localhost:8080/vczh/FILENAME】這樣子的請求,就將一個目錄下面的東西讀出來,然后返回。于是就可以用IE來運行某個地方的網頁了。代碼如下:
閱讀全文
posted @
2009-06-29 05:19 陳梓瀚(vczh) 閱讀(3896) |
評論 (4) |
編輯 收藏
摘要: 跟上一篇文章一樣,一樣的數據結構,但是添加了對數組、列表和映射的更多的支持。首先是代碼,然后是序列化后的XML文件。
閱讀全文
posted @
2009-06-28 20:12 陳梓瀚(vczh) 閱讀(6495) |
評論 (10) |
編輯 收藏
摘要: 所謂的反射當然不是自動化的,而是需要自己打標記的。下面會展示兩份文件,告訴大家我這個做了一半的反射是怎么工作的。寫這個東西的主要目的是,將來可以實現序列化,譬如說序列化到流,或者序列化到XML文件,或者做其他的事情等等(譬如說使用類名創建對象并進行修改)。
閱讀全文
posted @
2009-06-25 06:48 陳梓瀚(vczh) 閱讀(3576) |
評論 (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) 閱讀(3040) |
評論 (4) |
編輯 收藏
摘要: 說明:CMinus是一個讀入修改過語法的C源程序,然后編譯成x86指令集寫入內存,最后用__stdcall調用約定跟C++互相交流的腳本引擎。
目標:CMinus的定位是中間語言,用于將其他語言編譯到CMinus上,享受本地指令帶來的好處。
進度:完成所有功能,但是由于指令集生成的算法不好,打算修改。
下載:【內詳】。
閱讀全文
posted @
2009-05-22 00:32 陳梓瀚(vczh) 閱讀(9924) |
評論 (24) |
編輯 收藏
摘要: 雖然CMinus到中間指令的代碼是精心控制的,但是中間指令到x86的代碼卻是很隨意寫出來的。現在看來用窺孔優化只是一種治標不治本的方法。打算在CMinus整個都完成了之后,將中間指令到x86的代碼生成那部分重寫,使用一種廣為人知的寄存器分配算法來做。下面是冒泡排序的程序:
閱讀全文
posted @
2009-05-19 16:51 陳梓瀚(vczh) 閱讀(2979) |
評論 (3) |
編輯 收藏
摘要: 目前其實只能編譯單目運算符和return語句,主要是為了看看整個大框架有沒有錯誤。如果沒有發現錯誤的話,其他種類的表達式和語句的代碼生成很容易加上去。下面是一個CMinus程序的例子和編譯結果(匯編):
閱讀全文
posted @
2009-05-17 23:00 陳梓瀚(vczh) 閱讀(2597) |
評論 (1) |
編輯 收藏