$CASE/gen/ver_11/aareadme.genv11_history - Updated by RJL 990804: chgen version history since $CASE/gen/ver_10: --------------------------------------------- $CASE/gen/ver_10 added an option -meta that emitted metaschema table definitions to file input_schema.msdat This is a .dat file containing the input_schema content stored as rows of tables SV, TT and TA, also Table TS (Table Statistics (e.g., row-count of table TT etc.) and table VV (View Version) (data from a metaschema viewdefs file that pr_init needs to read). Applications can read the .msdat file by using chgen library support. this has many ramifications: In the most recent $CASE/99s523/genmerge project, KSpinney bootstrapped chgenv10 into a chgenv11 application; genv10 provides a pr_* and metaschema.h library based on metaschema.sch that can be used by genv11. Genv11 can call pr_load to load and then access the definitions of tables TT and TA when it generates a new schema,h file and pr*.c code for the application. Chgenv11 currently still navigates its hcg_structs (tt_list and ta_list) during code generation, but chgenv12 will replacethese refs by references to its new internal metatables TT and TA, after it (like genv10) populates them by parsing the application schema. gen/ver_10 created the library including metaschema.h and pr_*.c and gen/ver_11 was built as a genv10 application linked to the pr_loaded meta-data-base. Any application linked to the pr_* library generated by gen/ver11 has access to the definitions of its own database tables as data. This reflective power is necessary so the pr_*.c library code created by new chgenv11 routines in src/gen_pr_log.c can interpret the ASCII fields of pr_set events during log-file replay (see src/gen_pr_log.c). The code in $CASE/99s523/genmerge/chgenv11/chgen/src also incorporates the latest version of code to support application data logging and replay. It has merged this code from rrassman in $CASE/98f523 into the CVS repository version of chgen. See $CASE/99s523/genmerge/doc for test status and details. -------------------------------------------------- Past History: The first significant genlog project [see $CASE/gen/aareadme.genlog] was by Denise Nelson/Bill Rideout/Mike Murphy of GTE but was not checked into CVS. They created file src/gen_pr_log.c which both logged and replayed pr_add/delete events to support entire record or table row add/deletes. CTWang slightly extended that genlog project by also logging field updates (conditionally, inside new pr_set_* macros) but he did not provide support to replay pr_set* events. RRassman added routines to gen_pr_log.c which KSpinney/Jkarner later merged into $CASE/gen/ver_10log/chgen/src, (in $CASE/99s523/genmerge). Now a pr_*.c library produced by $CASE/gen/ver_11 can replay pr_set events logged by ctwang's code. An example of a logged data file is in $CASE/gen/ver_10log/rrassman/enroll/enroll.txt (I linked this node to $CASE/98f/genreplay/rrassman - RJL 990804). (This test extends the previous version in $CASE/99s523/genmerge/chgenv11/chgen/test/enroll). The 99s523/genmerge project added Rassman's new log_do_set_* routines to file gen_pr_log.c within gen/ver_11. ---------------------------------------------------- Future Plans: Bdelog: (bde + genlog) ------------- 1. RRassman's version of genlog works for terminal emulator applications but not for bde which requires X11. Bde currently lacks menu support for logging and replay. Yicheng Xu in $CASE/99s523/yxu is trying to modify bde to add log/replay and build it with rrassman's version to test the log/replay concept. This involves at least: (1) adding a WorkProcess callback to X11 to read the log file input and call functions pr_add/delete/set_* during bde replay; (2) getting around lack of bde GUI menu support for log/replay. (3) extension of BDE to multi-user distributed editing (DBDE) through reuse of genv11's new logging and replay features. 2. The chgen-refactoring project will explore the use of ghost variables during chgen code migration: to replace hcg_structs by tables TT and TA throughout all existing chgen code modules (eliminating hcg-structs). 3. Other future extensions of bde: (1) Distributed bde (2) Bde OO-menu extensions for log/replay flexibility. (3) Add support for logging of mouse events and X11 event history. This involves copying data to new schema-defined event-instance table rows so genlog support logs them as well. (4) Logging event struct or class instances that hold parameters of bde method/function/action calls to provide additional debug support.