{array Node;Node 這個詞到處在用,還分大小寫..當 structure name,又當 variable name...
...
struct node* Platform;
...}
懷疑是不是故意的..
最好是 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;這樣的code..
stringdef* Ptr = &Def;
..
(,,, &Ptr,,,)
nodedef : node的定義,包含..
- load setting
- ID
- parent class (的ID)
- priority (?)
- 這個 node (class?) 的 create function
- delete function
又有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..
- LoadLibrary
- Call DLLRegister
- load parent class/node (recursive)
- call node 的 Create( )
又是一個 特例。所以 interface 這個 node 要用 NodeCreate( ) 出來後,要手動 cast 成 (win*) 然後取出 Popup( )
沒有留言:
張貼留言