Since the table source file is going to be receiving a lot of changes, the immediate goal is eliminate the auto-generated code enumeration header file so that the entire project doesn't need to be recompiled for each change to the table source file. This will be accomplished by changing how code enumerators (indexes) are handled.
A code enumeration will still be required for a limited number of codes that are referenced throughout, for example, the special operators like Comma, Equal, Semicolon, End-of-Line, etc. So there will still be a code enumeration, but it will not be used as an index to codes. Currently however, there are many more code enumerators that are used, specifically the range code enumerators and the code enumerators used for the associated code arrays.
The range code enumerators will be removed first. To accomplish this, the search mechanism will be changed, which currently searches for a name within three different ranges (plain words, parentheses words, and symbols) of the table entry array. The new mechanism will have one-word names in a name to table entry pointer map. The two-word names will be in a separate two-word names map. These maps will be static table members. The table entry structure members will eventually be in the new table class, so these table entry pointers will become table instance pointers.
When the table consists of many code table instances, the base table class constructor will setup these maps when the constructor of the code classes calls it. For now, these maps will be setup in the current single instance table constructor when it iterates the table entry array.
Similarly, there will be maps from code table instance pointers to vectors of table instance pointers for alternate codes (the new name for associated codes). These static member maps will also be setup by the new base table class constructor, but will temporarily by setup in the current table constructor.
Wednesday, December 10, 2014
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
All comments and feedback welcomed, whether positive or negative.
(Anonymous comments are allowed, but comments with URL links or unrelated comments will be removed.)