|
From: | Razvan Cojocaru |
Subject: | [chmspec-devel] $FIftiMain |
Date: | Fri, 12 Sep 2003 18:57:29 +0300 |
User-agent: | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 |
Hello.Pabs, here are the things I think the $FIftiMain section of chmspec could use or that I thought lack clarity.
As a minor observation I think that the way to decode integers such as the big endian ENCINT and the scale/root integers should be presented closer to the places where they appear in the file structures, not the 1st thing in the file.
That being said, we turn to Table 5.19.I could not tell that I should start with the node pointed to by location 0x14 (DWORD). "Offset to the last word tree block" doesn't tell me it's the one I should try first. Also, the description of what the depth of the tree blocks are seems insufficient to me, and I had to look at the chmdeco code to figure out what you meant. My critique to this kind of things is basically that you should be more detailed. They probably seem obvious to you since you reversed engineered it but it's not that obvious to people who haven't had such low level experience with the chm format.
Then you keep talking about what follows in the file (WLC entries) and describe them. That's all well and good but at this point you haven't introduced index and leaf nodes and the concept of a WLC means nothing to me. As a developer, I was interested in the steps to take to make a search happen using $FIftiMain but from the spec I could only figure out some of the layout of the $FIftiMain file. I think the section could use a reorganization about the way the code would flow to get the pages of a word: read the index node, iterate through the entries, get the leaf node, go to WLC, etc. Also, an example of how words are represented would be useful. More and clearer examples would be welcome. Not complex stuff, but like we talked on the xchm-general mailing list - like word1 is animal and word2 is antitrust, and the word in the second leaf is titrust, starting at position 2 in the previous word, etc.
The windows.chm example you presented doesn't quite illustrate many of your points. I think a fictitious example would have perhaps illustrated the concepts better.
Hope it helps. I'll think about it more when I get some time and see if I've left anything out here.
Cheers, Razvan
[Prev in Thread] | Current Thread | [Next in Thread] |