5.17.2010

complian 一下 .... 無關的東西...其實是自己不好 XD

有點詞窮..
 {array Node;
...
struct node* Platform;
...}
Node 這個詞到處在用,還分大小寫..當 structure name,又當 variable name...
懷疑是不是故意的..
最好是 struct node* Platform 實際上是從 array Node 中挑出一個來的。

好像有用到 Singletone pattern,用 struct context *Context() 取出唯一的 context 指標。

用 C++寫就好,幹嘛要用C寫,然後又要做出C++的東西 (default constructer,class hierachy,function overwrite.. abstrator overwrite etc)。

用 define function 作 cast pointer 真是糟糕,看起來是 argument,卻拿來作 cast name。

然後整個 project sourcecode 就是 node 來 node 去的,什麼名字都有node,也就等於什麼名字都沒有 node...(難怪會重寫)

Module Name 先放在 string table裡,每個 id 代表一個 Module Name,然後再用 Id 來 load module。

還有..
 stringdef Def;
stringdef* Ptr = &Def;
..
(,,, &Ptr,,,)
這樣的code..

nodedef : node的定義,包含..
  • load setting
  • ID
  • parent class (的ID)
  • priority (?)
  • 這個 node (class?) 的 create function
  • delete function
ID 系統,使用 FOURCC : 四個 char (0x00~0xFF) 組成 8x4=32 bit (一個 int)。

又有node,又有 class,node define 的東西是 class。

static function,第一個 argument 在所有的caller 都是一樣的值,那為什麼不直接 reference ? 還要多一個標準?

NodeClass 就要用 FindClass 來操作。 -- 因為 FindClass 內部只對 NodeClass 這個 member 操作。(隱含的)

一堆 node, class 都 initial 完後,在 global unique variable - Context( ) 的 array xxx 就已經都註冊好所有 id 和對應的 create function。

NoteCreate( classid) 會從 context array 中找到那個 classid 的 node..
  1. LoadLibrary
  2. Call DLLRegister
  3. load parent class/node (recursive)
  4. call node 的 Create( )
所有都 Initialize 完後,call INTERFACE_ID 這個 class 起來 --- 這個 class 用 WinPopupClass( ) 叫起
又是一個 特例。所以 interface 這個 node 要用 NodeCreate( ) 出來後,要手動 cast 成 (win*) 然後取出 Popup( )

沒有留言: