events/src/EventCounter.m3


                            -*- Mode: Modula-3 -*- 
 * 
 * For information about this program, contact Blair MacIntyre            
 * (bm@cs.columbia.edu) or Steven Feiner (feiner@cs.columbia.edu)         
 * at the Computer Science Dept., Columbia University,                    
 * 1214 Amsterdam Ave. Mailstop 0401, New York, NY, 10027.                
 *                                                                        
 * Copyright (C) 1995, 1996 by The Trustees of Columbia University in the 
 * City of New York.  Blair MacIntyre, Computer Science Department.       
 * See file COPYRIGHT-COLUMBIA for details.
 * 
 * Author          : Blair MacIntyre
 * Created On      : Thu May 11 11:19:21 1995
 * Last Modified By: Blair MacIntyre
 * Last Modified On: Mon Aug  4 12:30:02 1997
 * Update Count    : 119
 * 
 * $Source: /usr/cvs/cm3/doc/help/gen_html/events/src/EventCounter.m3.html,v $
 * $Date: 2003/07/16 13:16:57 $
 * $Author: wagner $
 * $Revision: 1.2 $
 * 
 * $Log: EventCounter.m3.html,v $
 * Revision 1.2  2003/07/16 13:16:57  wagner
 * update generated docs for release 5.2.6
 *
 * added: doc/PkgDesc
 * added: doc/help/gen_html/db/src/DB.m3.html
 * added: doc/help/gen_html/db/src/MySQLDB.i3.html
 * added: doc/help/gen_html/db/src/MySQLDBStub.m3.html
 * added: doc/help/gen_html/db/src/ODBCDB.i3.html
 * added: doc/help/gen_html/db/src/PostgreSQLDB.i3.html
 * added: doc/help/gen_html/db/src/PostgreSQLDBStub.m3.html
 * added: doc/help/gen_html/db/src/odbc/ODBCDB.m3.html
 * added: doc/help/gen_html/db/src/odbc/ODBCDBRep.i3.html
 * added: doc/help/gen_html/href/I3_231.html
 * added: doc/help/gen_html/href/I3_232.html
 * added: doc/help/gen_html/href/I3_233.html
 * added: doc/help/gen_html/href/I3_234.html
 * added: doc/help/gen_html/href/I3_235.html
 * added: doc/help/gen_html/href/I3_236.html
 * added: doc/help/gen_html/href/I3_237.html
 * added: doc/help/gen_html/href/I3_238.html
 * added: doc/help/gen_html/href/I3_239.html
 * added: doc/help/gen_html/href/I3_240.html
 * added: doc/help/gen_html/href/I3_241.html
 * added: doc/help/gen_html/href/I3_242.html
 * added: doc/help/gen_html/href/I3_243.html
 * added: doc/help/gen_html/href/I3_244.html
 * added: doc/help/gen_html/href/I3_245.html
 * added: doc/help/gen_html/href/I3_246.html
 * added: doc/help/gen_html/href/I3_247.html
 * added: doc/help/gen_html/href/I3_248.html
 * added: doc/help/gen_html/href/I3_249.html
 * added: doc/help/gen_html/href/I3_250.html
 * added: doc/help/gen_html/href/I3_251.html
 * added: doc/help/gen_html/href/I3_252.html
 * added: doc/help/gen_html/href/I3_253.html
 * added: doc/help/gen_html/href/I3_254.html
 * added: doc/help/gen_html/href/I3_255.html
 * added: doc/help/gen_html/href/I3_256.html
 * added: doc/help/gen_html/href/I3_257.html
 * added: doc/help/gen_html/href/I3_258.html
 * added: doc/help/gen_html/href/I3_259.html
 * added: doc/help/gen_html/href/I3_260.html
 * added: doc/help/gen_html/href/I3_261.html
 * added: doc/help/gen_html/href/I3_262.html
 * added: doc/help/gen_html/href/I3_263.html
 * added: doc/help/gen_html/href/I3_264.html
 * added: doc/help/gen_html/href/I3_265.html
 * added: doc/help/gen_html/href/I3_266.html
 * added: doc/help/gen_html/href/I3_267.html
 * added: doc/help/gen_html/href/I3_268.html
 * added: doc/help/gen_html/href/I3_269.html
 * added: doc/help/gen_html/href/I3_270.html
 * added: doc/help/gen_html/href/I3_271.html
 * added: doc/help/gen_html/href/M3_142.html
 * added: doc/help/gen_html/href/M3_143.html
 * added: doc/help/gen_html/href/M3_144.html
 * added: doc/help/gen_html/href/M3_145.html
 * added: doc/help/gen_html/href/M3_146.html
 * added: doc/help/gen_html/href/M3_147.html
 * added: doc/help/gen_html/href/M3_148.html
 * added: doc/help/gen_html/href/M3_149.html
 * added: doc/help/gen_html/href/M3_150.html
 * added: doc/help/gen_html/href/M3_151.html
 * added: doc/help/gen_html/href/M3_152.html
 * added: doc/help/gen_html/href/M3_153.html
 * added: doc/help/gen_html/href/M3_154.html
 * added: doc/help/gen_html/href/M3_155.html
 * added: doc/help/gen_html/href/M3_156.html
 * added: doc/help/gen_html/href/M3_157.html
 * added: doc/help/gen_html/href/M3_158.html
 * added: doc/help/gen_html/href/M3_159.html
 * added: doc/help/gen_html/href/M3_160.html
 * added: doc/help/gen_html/href/M3_161.html
 * added: doc/help/gen_html/href/M3_162.html
 * added: doc/help/gen_html/href/M3_163.html
 * added: doc/help/gen_html/href/M3_164.html
 * added: doc/help/gen_html/href/M3_165.html
 * added: doc/help/gen_html/href/M3_166.html
 * added: doc/help/gen_html/href/M3_167.html
 * added: doc/help/gen_html/href/M3_168.html
 * added: doc/help/gen_html/href/M3_169.html
 * added: doc/help/gen_html/href/M3_170.html
 * added: doc/help/gen_html/href/M3_171.html
 * added: doc/help/gen_html/href/M3_172.html
 * added: doc/help/gen_html/href/M3_173.html
 * added: doc/help/gen_html/href/M3_174.html
 * added: doc/help/gen_html/href/M3_175.html
 * added: doc/help/gen_html/href/M3_176.html
 * added: doc/help/gen_html/href/M3_177.html
 * added: doc/help/gen_html/href/M3_178.html
 * added: doc/help/gen_html/href/M3_179.html
 * added: doc/help/gen_html/href/M3_180.html
 * added: doc/help/gen_html/href/M3_181.html
 * added: doc/help/gen_html/href/M3_182.html
 * added: doc/help/gen_html/href/M3_183.html
 * added: doc/help/gen_html/href/M3_184.html
 * added: doc/help/gen_html/href/M3_185.html
 * added: doc/help/gen_html/libm3/src/uid/POSIX/MachineIDPosixC.c.html
 * added: doc/help/gen_html/libm3/src/uid/POSIX/MachineIDPosixC.i3.html
 * added: doc/help/gen_html/m3core/src/C/Common/CerrnoC.c.html
 * added: doc/help/gen_html/m3core/src/unix/linux-libc6/Utermio.i3.html
 * added: doc/help/gen_html/m3core/src/unix/linux-libc6-le/Uin.m3.html
 * added: doc/help/gen_html/mentor/derived/BinpackAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/BinpackAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/BinpackDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/BinpackDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/BinpackIE.i3.html
 * added: doc/help/gen_html/mentor/derived/BinpackIE.m3.html
 * added: doc/help/gen_html/mentor/derived/BinpackTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/BinpackTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/BinpackViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/BinpackViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/BinpackmyviewObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/BinpackmyviewObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/BresenhamAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/BresenhamAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/BresenhamDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/BresenhamDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/BresenhamIE.i3.html
 * added: doc/help/gen_html/mentor/derived/BresenhamIE.m3.html
 * added: doc/help/gen_html/mentor/derived/BresenhamTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/BresenhamTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/BresenhamViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/BresenhamViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/CPAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/CPAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/CPDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/CPDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/CPIE.i3.html
 * added: doc/help/gen_html/mentor/derived/CPIE.m3.html
 * added: doc/help/gen_html/mentor/derived/CPTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/CPTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/CPViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/CPViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/DGraphAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/DGraphAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/DGraphDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/DGraphDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/DGraphIE.i3.html
 * added: doc/help/gen_html/mentor/derived/DGraphIE.m3.html
 * added: doc/help/gen_html/mentor/derived/DGraphTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/DGraphTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/DGraphViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/DGraphViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/EuclidAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/EuclidAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/EuclidDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/EuclidDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/EuclidIE.i3.html
 * added: doc/help/gen_html/mentor/derived/EuclidIE.m3.html
 * added: doc/help/gen_html/mentor/derived/EuclidTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/EuclidTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/EuclidViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/EuclidViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/HashAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/HashAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/HashDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/HashDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/HashIE.i3.html
 * added: doc/help/gen_html/mentor/derived/HashIE.m3.html
 * added: doc/help/gen_html/mentor/derived/HashTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/HashTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/HashViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/HashViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/HullAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/HullAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/HullDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/HullDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/HullIE.i3.html
 * added: doc/help/gen_html/mentor/derived/HullIE.m3.html
 * added: doc/help/gen_html/mentor/derived/HullTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/HullTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/HullViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/HullViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/MatchAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/MatchAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/MatchDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/MatchDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/MatchIE.i3.html
 * added: doc/help/gen_html/mentor/derived/MatchIE.m3.html
 * added: doc/help/gen_html/mentor/derived/MatchTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/MatchTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/MatchViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/MatchViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/MaxflowAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/MaxflowAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/MaxflowDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/MaxflowDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/MaxflowIE.i3.html
 * added: doc/help/gen_html/mentor/derived/MaxflowIE.m3.html
 * added: doc/help/gen_html/mentor/derived/MaxflowTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/MaxflowTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/MaxflowViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/MaxflowViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/MentorBundle.i3.html
 * added: doc/help/gen_html/mentor/derived/MentorBundle.m3.html
 * added: doc/help/gen_html/mentor/derived/MinimaxAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/MinimaxAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/MinimaxDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/MinimaxDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/MinimaxIE.i3.html
 * added: doc/help/gen_html/mentor/derived/MinimaxIE.m3.html
 * added: doc/help/gen_html/mentor/derived/MinimaxTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/MinimaxTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/MinimaxViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/MinimaxViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/MinimaxViewColorScaleObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/MinimaxViewColorScaleObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/MinimaxViewGameTreeAObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/MinimaxViewGameTreeAObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/MinimaxViewGameTreeBObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/MinimaxViewGameTreeBObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/PQueueAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/PQueueAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/PQueueDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/PQueueDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/PQueueIE.i3.html
 * added: doc/help/gen_html/mentor/derived/PQueueIE.m3.html
 * added: doc/help/gen_html/mentor/derived/PQueueTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/PQueueTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/PQueueViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/PQueueViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/ParseAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/ParseAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/ParseDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/ParseDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/ParseIE.i3.html
 * added: doc/help/gen_html/mentor/derived/ParseIE.m3.html
 * added: doc/help/gen_html/mentor/derived/ParseTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/ParseTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/ParseViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/ParseViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/PktRouteAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/PktRouteAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/PktRouteDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/PktRouteDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/PktRouteIE.i3.html
 * added: doc/help/gen_html/mentor/derived/PktRouteIE.m3.html
 * added: doc/help/gen_html/mentor/derived/PktRouteManyPacketsMoveObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/PktRouteManyPacketsMoveObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/PktRouteManyPacketsStepObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/PktRouteManyPacketsStepObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/PktRoutePacketMoveObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/PktRoutePacketMoveObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/PktRoutePacketRouteObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/PktRoutePacketRouteObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/PktRoutePacketStepObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/PktRoutePacketStepObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/PktRoutePacketTraceObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/PktRoutePacketTraceObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/PktRouteQueueSizesObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/PktRouteQueueSizesObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/PktRouteTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/PktRouteTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/PktRouteViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/PktRouteViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/RealList.i3.html
 * added: doc/help/gen_html/mentor/derived/RealList.m3.html
 * added: doc/help/gen_html/mentor/derived/RealPQ.i3.html
 * added: doc/help/gen_html/mentor/derived/RealPQ.m3.html
 * added: doc/help/gen_html/mentor/derived/RealPQRep.i3.html
 * added: doc/help/gen_html/mentor/derived/SearchTreeAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/SearchTreeAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/SearchTreeDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/SearchTreeDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/SearchTreeIE.i3.html
 * added: doc/help/gen_html/mentor/derived/SearchTreeIE.m3.html
 * added: doc/help/gen_html/mentor/derived/SearchTreeTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/SearchTreeTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/SearchTreeViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/SearchTreeViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/ShortestPathAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/ShortestPathAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/ShortestPathDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/ShortestPathDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/ShortestPathIE.i3.html
 * added: doc/help/gen_html/mentor/derived/ShortestPathIE.m3.html
 * added: doc/help/gen_html/mentor/derived/ShortestPathSPGraphObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/ShortestPathSPGraphObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/ShortestPathTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/ShortestPathTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/ShortestPathViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/ShortestPathViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/SiteList.i3.html
 * added: doc/help/gen_html/mentor/derived/SiteList.m3.html
 * added: doc/help/gen_html/mentor/derived/SortAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/SortAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/SortDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/SortDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/SortIE.i3.html
 * added: doc/help/gen_html/mentor/derived/SortIE.m3.html
 * added: doc/help/gen_html/mentor/derived/SortTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/SortTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/SortViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/SortViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/StringSearchAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/StringSearchAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/StringSearchDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/StringSearchDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/StringSearchIE.i3.html
 * added: doc/help/gen_html/mentor/derived/StringSearchIE.m3.html
 * added: doc/help/gen_html/mentor/derived/StringSearchTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/StringSearchTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/StringSearchViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/StringSearchViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/SubtypeAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/SubtypeAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/SubtypeDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/SubtypeDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/SubtypeIE.i3.html
 * added: doc/help/gen_html/mentor/derived/SubtypeIE.m3.html
 * added: doc/help/gen_html/mentor/derived/SubtypeTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/SubtypeTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/SubtypeViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/SubtypeViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/Subtypeview1ObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/Subtypeview1ObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindAverageDepthObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindAverageDepthObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindBigTreeObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindBigTreeObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindChangeParentObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindChangeParentObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindFindLengthObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindFindLengthObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindIE.i3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindIE.m3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindNodeDepthObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindNodeDepthObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindTreeObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindTreeObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/UnionFindViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/WheelerAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/WheelerAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/WheelerCompressObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/WheelerCompressObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/WheelerDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/WheelerDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/WheelerDecompressObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/WheelerDecompressObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/WheelerIE.i3.html
 * added: doc/help/gen_html/mentor/derived/WheelerIE.m3.html
 * added: doc/help/gen_html/mentor/derived/WheelerTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/WheelerTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/WheelerViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/WheelerViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/WheelerWhyDecompressWorksObliqView.i3.html
 * added: doc/help/gen_html/mentor/derived/WheelerWhyDecompressWorksObliqView.m3.html
 * added: doc/help/gen_html/mentor/derived/ZPaperAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/ZPaperAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/ZPaperDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/ZPaperDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/ZPaperIE.i3.html
 * added: doc/help/gen_html/mentor/derived/ZPaperIE.m3.html
 * added: doc/help/gen_html/mentor/derived/ZPaperTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/ZPaperTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/ZPaperViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/ZPaperViewClass.m3.html
 * added: doc/help/gen_html/mentor/derived/logoAlgClass.i3.html
 * added: doc/help/gen_html/mentor/derived/logoAlgClass.m3.html
 * added: doc/help/gen_html/mentor/derived/logoDataView.i3.html
 * added: doc/help/gen_html/mentor/derived/logoDataView.m3.html
 * added: doc/help/gen_html/mentor/derived/logoIE.i3.html
 * added: doc/help/gen_html/mentor/derived/logoIE.m3.html
 * added: doc/help/gen_html/mentor/derived/logoTranscriptView.i3.html
 * added: doc/help/gen_html/mentor/derived/logoTranscriptView.m3.html
 * added: doc/help/gen_html/mentor/derived/logoViewClass.i3.html
 * added: doc/help/gen_html/mentor/derived/logoViewClass.m3.html
 * added: doc/help/gen_html/mentor/src/Main.m3.html
 * added: doc/help/gen_html/mentor/src/binpack/AlgFF.i3.html
 * added: doc/help/gen_html/mentor/src/binpack/AlgFF.m3.html
 * added: doc/help/gen_html/mentor/src/binpack/AlgFFCodeView.i3.html
 * added: doc/help/gen_html/mentor/src/binpack/AlgFFCodeView.m3.html
 * added: doc/help/gen_html/mentor/src/binpack/AlgFFPromptForWeights.i3.html
 * added: doc/help/gen_html/mentor/src/binpack/AlgFFPromptForWeights.m3.html
 * added: doc/help/gen_html/mentor/src/binpack/AlgFFSimple.i3.html
 * added: doc/help/gen_html/mentor/src/binpack/AlgFFSimple.m3.html
 * added: doc/help/gen_html/mentor/src/binpack/BinpackAux.i3.html
 * added: doc/help/gen_html/mentor/src/binpack/BinpackAux.m3.html
 * added: doc/help/gen_html/mentor/src/binpack/PackingView1.i3.html
 * added: doc/help/gen_html/mentor/src/binpack/PackingView1.m3.html
 * added: doc/help/gen_html/mentor/src/binpack/PackingView2.i3.html
 * added: doc/help/gen_html/mentor/src/binpack/PackingView2.m3.html
 * added: doc/help/gen_html/mentor/src/binpack/PackingView3.i3.html
 * added: doc/help/gen_html/mentor/src/binpack/PackingView3.m3.html
 * added: doc/help/gen_html/mentor/src/binpack/PackingView4.i3.html
 * added: doc/help/gen_html/mentor/src/binpack/PackingView4.m3.html
 * added: doc/help/gen_html/mentor/src/bresenham/AlgBresenham.i3.html
 * added: doc/help/gen_html/mentor/src/bresenham/AlgBresenham.m3.html
 * added: doc/help/gen_html/mentor/src/bresenham/ViewError.i3.html
 * added: doc/help/gen_html/mentor/src/bresenham/ViewError.m3.html
 * added: doc/help/gen_html/mentor/src/bresenham/ViewIncrementalReal.i3.html
 * added: doc/help/gen_html/mentor/src/bresenham/ViewIncrementalReal.m3.html
 * added: doc/help/gen_html/mentor/src/bresenham/ViewLine.i3.html
 * added: doc/help/gen_html/mentor/src/bresenham/ViewLine.m3.html
 * added: doc/help/gen_html/mentor/src/bresenham/ViewOnlyLine.i3.html
 * added: doc/help/gen_html/mentor/src/bresenham/ViewOnlyLine.m3.html
 * added: doc/help/gen_html/mentor/src/closestpoint/CPAlg.i3.html
 * added: doc/help/gen_html/mentor/src/closestpoint/CPAlg.m3.html
 * added: doc/help/gen_html/mentor/src/closestpoint/CPView.i3.html
 * added: doc/help/gen_html/mentor/src/closestpoint/CPView.m3.html
 * added: doc/help/gen_html/mentor/src/dgraph/AdjMatrix.i3.html
 * added: doc/help/gen_html/mentor/src/dgraph/AdjMatrix.m3.html
 * added: doc/help/gen_html/mentor/src/dgraph/AdjMatrixVBT.i3.html
 * added: doc/help/gen_html/mentor/src/dgraph/AdjMatrixVBT.m3.html
 * added: doc/help/gen_html/mentor/src/dgraph/AdjMatrixView.i3.html
 * added: doc/help/gen_html/mentor/src/dgraph/AdjMatrixView.m3.html
 * added: doc/help/gen_html/mentor/src/dgraph/AdjMatrixView01.i3.html
 * added: doc/help/gen_html/mentor/src/dgraph/AdjMatrixView01.m3.html
 * added: doc/help/gen_html/mentor/src/dgraph/AdjMatrixView01_K.i3.html
 * added: doc/help/gen_html/mentor/src/dgraph/AdjMatrixView01_K.m3.html
 * added: doc/help/gen_html/mentor/src/dgraph/DFS.i3.html
 * added: doc/help/gen_html/mentor/src/dgraph/DFS.m3.html
 * added: doc/help/gen_html/mentor/src/dgraph/DFSTC.i3.html
 * added: doc/help/gen_html/mentor/src/dgraph/DFSTC.m3.html
 * added: doc/help/gen_html/mentor/src/dgraph/DFSTreeView.i3.html
 * added: doc/help/gen_html/mentor/src/dgraph/DFSTreeView.m3.html
 * added: doc/help/gen_html/mentor/src/dgraph/DepthToColor.i3.html
 * added: doc/help/gen_html/mentor/src/dgraph/DepthToColor.m3.html
 * added: doc/help/gen_html/mentor/src/dgraph/GraphView.i3.html
 * added: doc/help/gen_html/mentor/src/dgraph/GraphView.m3.html
 * added: doc/help/gen_html/mentor/src/dgraph/GridMJJ.i3.html
 * added: doc/help/gen_html/mentor/src/dgraph/GridMJJ.m3.html
 * added: doc/help/gen_html/mentor/src/dgraph/ReadGraph.i3.html
 * added: doc/help/gen_html/mentor/src/dgraph/ReadGraph.m3.html
 * added: doc/help/gen_html/mentor/src/dgraph/Warshall.i3.html
 * added: doc/help/gen_html/mentor/src/dgraph/Warshall.m3.html
 * added: doc/help/gen_html/mentor/src/euclid/Euclid.i3.html
 * added: doc/help/gen_html/mentor/src/euclid/EuclidAlg.m3.html
 * added: doc/help/gen_html/mentor/src/euclid/EuclidView.m3.html
 * added: doc/help/gen_html/mentor/src/hash/HashAlgs.i3.html
 * added: doc/help/gen_html/mentor/src/hash/HashAlgs.m3.html
 * added: doc/help/gen_html/mentor/src/hash/HashFmt.i3.html
 * added: doc/help/gen_html/mentor/src/hash/HashFmt.m3.html
 * added: doc/help/gen_html/mentor/src/hash/HashStatsView.i3.html
 * added: doc/help/gen_html/mentor/src/hash/HashStatsView.m3.html
 * added: doc/help/gen_html/mentor/src/hash/HashViews.i3.html
 * added: doc/help/gen_html/mentor/src/hash/HashViews.m3.html
 * added: doc/help/gen_html/mentor/src/hull/AlgTypes.i3.html
 * added: doc/help/gen_html/mentor/src/hull/AlgTypes.m3.html
 * added: doc/help/gen_html/mentor/src/hull/ArrayView.i3.html
 * added: doc/help/gen_html/mentor/src/hull/ArrayView.m3.html
 * added: doc/help/gen_html/mentor/src/hull/GeomView.i3.html
 * added: doc/help/gen_html/mentor/src/hull/GeomView.m3.html
 * added: doc/help/gen_html/mentor/src/hull/HullFmt.i3.html
 * added: doc/help/gen_html/mentor/src/hull/HullFmt.m3.html
 * added: doc/help/gen_html/mentor/src/hull/HullInput.i3.html
 * added: doc/help/gen_html/mentor/src/hull/HullInput.m3.html
 * added: doc/help/gen_html/mentor/src/hull/MyColors.i3.html
 * added: doc/help/gen_html/mentor/src/hull/MyColors.m3.html
 * added: doc/help/gen_html/mentor/src/hull/RubberAlg.i3.html
 * added: doc/help/gen_html/mentor/src/hull/RubberAlg.m3.html
 * added: doc/help/gen_html/mentor/src/hull/Site.i3.html
 * added: doc/help/gen_html/mentor/src/hull/Site.m3.html
 * added: doc/help/gen_html/mentor/src/hull/WrapAlg.i3.html
 * added: doc/help/gen_html/mentor/src/hull/WrapAlg.m3.html
 * added: doc/help/gen_html/mentor/src/kpaths/AtomEdgeTbl.i3.html
 * added: doc/help/gen_html/mentor/src/kpaths/AtomEdgeTbl.m3.html
 * added: doc/help/gen_html/mentor/src/kpaths/AtomVertexTbl.i3.html
 * added: doc/help/gen_html/mentor/src/kpaths/AtomVertexTbl.m3.html
 * added: doc/help/gen_html/mentor/src/kpaths/Edge.i3.html
 * added: doc/help/gen_html/mentor/src/kpaths/EdgeSeq.i3.html
 * added: doc/help/gen_html/mentor/src/kpaths/EdgeSeq.m3.html
 * added: doc/help/gen_html/mentor/src/kpaths/EdgeSeqRep.i3.html
 * added: doc/help/gen_html/mentor/src/kpaths/ShortestPath.i3.html
 * added: doc/help/gen_html/mentor/src/kpaths/ShortestPath.m3.html
 * added: doc/help/gen_html/mentor/src/kpaths/Vertex.i3.html
 * added: doc/help/gen_html/mentor/src/kpaths/VertexSeq.i3.html
 * added: doc/help/gen_html/mentor/src/kpaths/VertexSeq.m3.html
 * added: doc/help/gen_html/mentor/src/kpaths/VertexSeqRep.i3.html
 * added: doc/help/gen_html/mentor/src/logo/Logo.i3.html
 * added: doc/help/gen_html/mentor/src/logo/Logo.m3.html
 * added: doc/help/gen_html/mentor/src/match/AlgMatch.i3.html
 * added: doc/help/gen_html/mentor/src/match/AlgMatch.m3.html
 * added: doc/help/gen_html/mentor/src/match/Match.i3.html
 * added: doc/help/gen_html/mentor/src/match/Match.m3.html
 * added: doc/help/gen_html/mentor/src/match/MatchRect.i3.html
 * added: doc/help/gen_html/mentor/src/match/MatchSelector.i3.html
 * added: doc/help/gen_html/mentor/src/match/MatchSelector.m3.html
 * added: doc/help/gen_html/mentor/src/match/ViewMatch.i3.html
 * added: doc/help/gen_html/mentor/src/match/ViewMatch.m3.html
 * added: doc/help/gen_html/mentor/src/maxflow/MFAlgs.i3.html
 * added: doc/help/gen_html/mentor/src/maxflow/MFAlgs.m3.html
 * added: doc/help/gen_html/mentor/src/maxflow/MFBarView.i3.html
 * added: doc/help/gen_html/mentor/src/maxflow/MFBarView.m3.html
 * added: doc/help/gen_html/mentor/src/maxflow/MFEdgeView.i3.html
 * added: doc/help/gen_html/mentor/src/maxflow/MFEdgeView.m3.html
 * added: doc/help/gen_html/mentor/src/maxflow/MFFmt.i3.html
 * added: doc/help/gen_html/mentor/src/maxflow/MFFmt.m3.html
 * added: doc/help/gen_html/mentor/src/maxflow/MFGraph.i3.html
 * added: doc/help/gen_html/mentor/src/maxflow/MFGraph.m3.html
 * added: doc/help/gen_html/mentor/src/maxflow/MFLegendView.i3.html
 * added: doc/help/gen_html/mentor/src/maxflow/MFLegendView.m3.html
 * added: doc/help/gen_html/mentor/src/maxflow/MFViews.i3.html
 * added: doc/help/gen_html/mentor/src/maxflow/MFViews.m3.html
 * added: doc/help/gen_html/mentor/src/maxflow/MFViews2.i3.html
 * added: doc/help/gen_html/mentor/src/maxflow/MFViews2.m3.html
 * added: doc/help/gen_html/mentor/src/minimax/AlgMinimax.i3.html
 * added: doc/help/gen_html/mentor/src/minimax/AlgMinimax.m3.html
 * added: doc/help/gen_html/mentor/src/minimax/GameBoard.i3.html
 * added: doc/help/gen_html/mentor/src/minimax/GameBoard.m3.html
 * added: doc/help/gen_html/mentor/src/minimax/GameBoardPrivate.i3.html
 * added: doc/help/gen_html/mentor/src/minimax/GameMove.i3.html
 * added: doc/help/gen_html/mentor/src/minimax/GameMove.m3.html
 * added: doc/help/gen_html/mentor/src/minimax/GamePlay.i3.html
 * added: doc/help/gen_html/mentor/src/minimax/GamePlay.m3.html
 * added: doc/help/gen_html/mentor/src/minimax/HumanPlayer.i3.html
 * added: doc/help/gen_html/mentor/src/minimax/HumanPlayer.m3.html
 * added: doc/help/gen_html/mentor/src/minimax/Minimax.i3.html
 * added: doc/help/gen_html/mentor/src/minimax/Minimax.m3.html
 * added: doc/help/gen_html/mentor/src/minimax/MoveList.i3.html
 * added: doc/help/gen_html/mentor/src/minimax/MoveList.m3.html
 * added: doc/help/gen_html/mentor/src/minimax/TypeFmt.i3.html
 * added: doc/help/gen_html/mentor/src/minimax/TypeFmt.m3.html
 * added: doc/help/gen_html/mentor/src/minimax/ViewGameBoard.i3.html
 * added: doc/help/gen_html/mentor/src/minimax/ViewGameBoard.m3.html
 * added: doc/help/gen_html/mentor/src/parse/A_BottomUp.i3.html
 * added: doc/help/gen_html/mentor/src/parse/A_BottomUp.m3.html
 * added: doc/help/gen_html/mentor/src/parse/A_RecDescent.i3.html
 * added: doc/help/gen_html/mentor/src/parse/A_RecDescent.m3.html
 * added: doc/help/gen_html/mentor/src/parse/A_TopDown.i3.html
 * added: doc/help/gen_html/mentor/src/parse/A_TopDown.m3.html
 * added: doc/help/gen_html/mentor/src/parse/Parse.i3.html
 * added: doc/help/gen_html/mentor/src/parse/Parse.m3.html
 * added: doc/help/gen_html/mentor/src/parse/ParseColor.i3.html
 * added: doc/help/gen_html/mentor/src/parse/ParseColor.m3.html
 * added: doc/help/gen_html/mentor/src/parse/Token.i3.html
 * added: doc/help/gen_html/mentor/src/parse/Token.m3.html
 * added: doc/help/gen_html/mentor/src/parse/V_Input.i3.html
 * added: doc/help/gen_html/mentor/src/parse/V_Input.m3.html
 * added: doc/help/gen_html/mentor/src/parse/V_Stack.i3.html
 * added: doc/help/gen_html/mentor/src/parse/V_Stack.m3.html
 * added: doc/help/gen_html/mentor/src/parse/V_Tree.i3.html
 * added: doc/help/gen_html/mentor/src/parse/V_Tree.m3.html
 * added: doc/help/gen_html/mentor/src/pktroute/ASP.i3.html
 * added: doc/help/gen_html/mentor/src/pktroute/ASP.m3.html
 * added: doc/help/gen_html/mentor/src/pktroute/AlgGreedy.i3.html
 * added: doc/help/gen_html/mentor/src/pktroute/AlgGreedy.m3.html
 * added: doc/help/gen_html/mentor/src/pktroute/AlgTwoPhase.i3.html
 * added: doc/help/gen_html/mentor/src/pktroute/AlgTwoPhase.m3.html
 * added: doc/help/gen_html/mentor/src/pktroute/Graph.i3.html
 * added: doc/help/gen_html/mentor/src/pktroute/Graph.m3.html
 * added: doc/help/gen_html/mentor/src/pktroute/GraphRep.i3.html
 * added: doc/help/gen_html/mentor/src/pktroute/IntListUtils.i3.html
 * added: doc/help/gen_html/mentor/src/pktroute/IntListUtils.m3.html
 * added: doc/help/gen_html/mentor/src/pktroute/MakePackets.i3.html
 * added: doc/help/gen_html/mentor/src/pktroute/MakePackets.m3.html
 * added: doc/help/gen_html/mentor/src/pktroute/MyReal.i3.html
 * added: doc/help/gen_html/mentor/src/pktroute/MyReal.m3.html
 * added: doc/help/gen_html/mentor/src/pktroute/OblFmt.i3.html
 * added: doc/help/gen_html/mentor/src/pktroute/OblFmt.m3.html
 * added: doc/help/gen_html/mentor/src/pktroute/ObliqExtension.i3.html
 * added: doc/help/gen_html/mentor/src/pktroute/ObliqExtension.m3.html
 * added: doc/help/gen_html/mentor/src/pktroute/Packet.i3.html
 * added: doc/help/gen_html/mentor/src/pktroute/Packet.m3.html
 * added: doc/help/gen_html/mentor/src/pktroute/PacketRep.i3.html
 * added: doc/help/gen_html/mentor/src/pktroute/RefIntArray.i3.html
 * added: doc/help/gen_html/mentor/src/pktroute/RefIntArray.m3.html
 * added: doc/help/gen_html/mentor/src/pktroute/Topology.i3.html
 * added: doc/help/gen_html/mentor/src/pktroute/Topology.m3.html
 * added: doc/help/gen_html/mentor/src/pktroute/VertexSizeAnim.i3.html
 * added: doc/help/gen_html/mentor/src/pktroute/VertexSizeAnim.m3.html
 * added: doc/help/gen_html/mentor/src/pqueue/PQAlgs.i3.html
 * added: doc/help/gen_html/mentor/src/pqueue/PQAlgs.m3.html
 * added: doc/help/gen_html/mentor/src/pqueue/PQBarView.i3.html
 * added: doc/help/gen_html/mentor/src/pqueue/PQBarView.m3.html
 * added: doc/help/gen_html/mentor/src/pqueue/PQViews.i3.html
 * added: doc/help/gen_html/mentor/src/pqueue/PQViews.m3.html
 * added: doc/help/gen_html/mentor/src/pqueue/PQueue.i3.html
 * added: doc/help/gen_html/mentor/src/pqueue/PQueue.m3.html
 * added: doc/help/gen_html/mentor/src/searchtree/BSTAlg.i3.html
 * added: doc/help/gen_html/mentor/src/searchtree/BSTAlg.m3.html
 * added: doc/help/gen_html/mentor/src/searchtree/BSTView.i3.html
 * added: doc/help/gen_html/mentor/src/searchtree/BSTView.m3.html
 * added: doc/help/gen_html/mentor/src/searchtree/RedBlackAlg.i3.html
 * added: doc/help/gen_html/mentor/src/searchtree/RedBlackAlg.m3.html
 * added: doc/help/gen_html/mentor/src/searchtree/STView.i3.html
 * added: doc/help/gen_html/mentor/src/searchtree/STView.m3.html
 * added: doc/help/gen_html/mentor/src/searchtree/SkelView.i3.html
 * added: doc/help/gen_html/mentor/src/searchtree/SkelView.m3.html
 * added: doc/help/gen_html/mentor/src/searchtree/SkinnyBinTree.i3.html
 * added: doc/help/gen_html/mentor/src/searchtree/SkinnyBinTree.m3.html
 * added: doc/help/gen_html/mentor/src/searchtree/UnbalancedAlg.i3.html
 * added: doc/help/gen_html/mentor/src/searchtree/UnbalancedAlg.m3.html
 * added: doc/help/gen_html/mentor/src/sorting/ChipsView.i3.html
 * added: doc/help/gen_html/mentor/src/sorting/ChipsView.m3.html
 * added: doc/help/gen_html/mentor/src/sorting/DotsView.i3.html
 * added: doc/help/gen_html/mentor/src/sorting/DotsView.m3.html
 * added: doc/help/gen_html/mentor/src/sorting/Sort.i3.html
 * added: doc/help/gen_html/mentor/src/sorting/SortAlgs.i3.html
 * added: doc/help/gen_html/mentor/src/sorting/SortAlgs.m3.html
 * added: doc/help/gen_html/mentor/src/sorting/SticksView.i3.html
 * added: doc/help/gen_html/mentor/src/sorting/SticksView.m3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/AlgsBase.i3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/AlgsBase.m3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/AutoView.i3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/AutoView.m3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/BM.i3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/BM.m3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/BruteForce.i3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/BruteForce.m3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/KMP.i3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/KMP.m3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/PrefixView.i3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/PrefixView.m3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/SliderView.i3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/SliderView.m3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/TextView.i3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/TextView.m3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/TouchView.i3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/TouchView.m3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/ViewsBase.i3.html
 * added: doc/help/gen_html/mentor/src/stringsearch/ViewsBase.m3.html
 * added: doc/help/gen_html/mentor/src/subtype/AlgSubtype.i3.html
 * added: doc/help/gen_html/mentor/src/subtype/AlgSubtype.m3.html
 * added: doc/help/gen_html/mentor/src/unionfind/AlgBoth.i3.html
 * added: doc/help/gen_html/mentor/src/unionfind/AlgBoth.m3.html
 * added: doc/help/gen_html/mentor/src/unionfind/AlgCompress.i3.html
 * added: doc/help/gen_html/mentor/src/unionfind/AlgCompress.m3.html
 * added: doc/help/gen_html/mentor/src/unionfind/AlgList.i3.html
 * added: doc/help/gen_html/mentor/src/unionfind/AlgList.m3.html
 * added: doc/help/gen_html/mentor/src/unionfind/AlgQuickFind.i3.html
 * added: doc/help/gen_html/mentor/src/unionfind/AlgQuickFind.m3.html
 * added: doc/help/gen_html/mentor/src/unionfind/AlgSimple.i3.html
 * added: doc/help/gen_html/mentor/src/unionfind/AlgSimple.m3.html
 * added: doc/help/gen_html/mentor/src/unionfind/AlgUnionByRank.i3.html
 * added: doc/help/gen_html/mentor/src/unionfind/AlgUnionByRank.m3.html
 * added: doc/help/gen_html/mentor/src/unionfind/TreeNode.i3.html
 * added: doc/help/gen_html/mentor/src/unionfind/UFInput.i3.html
 * added: doc/help/gen_html/mentor/src/unionfind/UFInput.m3.html
 * added: doc/help/gen_html/mentor/src/wheeler/CharArraySort.i3.html
 * added: doc/help/gen_html/mentor/src/wheeler/CharArraySort.m3.html
 * added: doc/help/gen_html/mentor/src/wheeler/MiscFmt.i3.html
 * added: doc/help/gen_html/mentor/src/wheeler/MiscFmt.m3.html
 * added: doc/help/gen_html/mentor/src/wheeler/Wheeler.i3.html
 * added: doc/help/gen_html/mentor/src/wheeler/Wheeler.m3.html
 * added: doc/help/gen_html/mentor/src/zpaper/AlgFn.i3.html
 * added: doc/help/gen_html/mentor/src/zpaper/AlgFn.m3.html
 * added: doc/help/gen_html/mentor/src/zpaper/Fn.i3.html
 * added: doc/help/gen_html/mentor/src/zpaper/ViewFn.i3.html
 * added: doc/help/gen_html/mentor/src/zpaper/ViewFn.m3.html
 * added: doc/help/gen_html/mentor/src/zpaper/ViewHisto.i3.html
 * added: doc/help/gen_html/mentor/src/zpaper/ViewHisto.m3.html
 * added: doc/help/gen_html/mentor/src/zpaper/ViewMFn.i3.html
 * added: doc/help/gen_html/mentor/src/zpaper/ViewMFn.m3.html
 * added: doc/help/gen_html/tcp/src/POSIX/HerrnoC.c.html
 * modified: doc/help/gen_html/INDEX.html
 * modified: doc/help/gen_html/m3db
 * modified: doc/help/gen_html/cm3/src/Builder.m3.html
 * modified: doc/help/gen_html/cm3/src/Dirs.m3.html
 * modified: doc/help/gen_html/cm3/src/M3Build.m3.html
 * modified: doc/help/gen_html/cm3/src/Makefile.m3.html
 * modified: doc/help/gen_html/cm3/src/Msg.i3.html
 * modified: doc/help/gen_html/cm3/src/Msg.m3.html
 * modified: doc/help/gen_html/db/src/DB.i3.html
 * modified: doc/help/gen_html/debug/src/Debug.i3.html
 * modified: doc/help/gen_html/debug/src/Debug.m3.html
 * modified: doc/help/gen_html/embutils/src/EmbProxiedObj.m3.html
 * modified: doc/help/gen_html/events/src/Event.i3.html
 * modified: doc/help/gen_html/events/src/Event.m3.html
 * modified: doc/help/gen_html/events/src/EventConn.i3.html
 * modified: doc/help/gen_html/events/src/EventConn.m3.html
 * modified: doc/help/gen_html/events/src/EventCounter.i3.html
 * modified: doc/help/gen_html/events/src/EventCounter.m3.html
 * modified: doc/help/gen_html/events/src/EventHandle.i3.html
 * modified: doc/help/gen_html/events/src/EventIO.i3.html
 * modified: doc/help/gen_html/events/src/EventNumber.i3.html
 * modified: doc/help/gen_html/events/src/EventNumber.m3.html
 * modified: doc/help/gen_html/events/src/EventNumberF.i3.html
 * modified: doc/help/gen_html/events/src/EventPort.i3.html
 * modified: doc/help/gen_html/events/src/EventPort.m3.html
 * modified: doc/help/gen_html/events/src/EventProtocol.i3.html
 * modified: doc/help/gen_html/events/src/EventRd.i3.html
 * modified: doc/help/gen_html/events/src/EventRd.m3.html
 * modified: doc/help/gen_html/events/src/EventSpaceID.i3.html
 * modified: doc/help/gen_html/events/src/EventSpaceID.m3.html
 * modified: doc/help/gen_html/events/src/EventStubLib.i3.html
 * modified: doc/help/gen_html/events/src/EventStubLib.m3.html
 * modified: doc/help/gen_html/events/src/EventWireRep.i3.html
 * modified: doc/help/gen_html/events/src/EventWireRep.m3.html
 * modified: doc/help/gen_html/events/src/EventWr.i3.html
 * modified: doc/help/gen_html/events/src/EventWr.m3.html
 * modified: doc/help/gen_html/events/src/EventWrF.i3.html
 * modified: doc/help/gen_html/events/src/HostInfo.i3.html
 * modified: doc/help/gen_html/events/src/HostInfo.m3.html
 * modified: doc/help/gen_html/events/src/RdWrMutex.i3.html
 * modified: doc/help/gen_html/events/src/RdWrMutex.m3.html
 * modified: doc/help/gen_html/events/src/Work.i3.html
 * modified: doc/help/gen_html/events/src/WorkerPool.i3.html
 * modified: doc/help/gen_html/events/src/WorkerPool.m3.html
 * modified: doc/help/gen_html/events/src/Zombie.i3.html
 * modified: doc/help/gen_html/fisheye/derived/FisheyeBundle.m3.html
 * modified: doc/help/gen_html/formsedit/derived/formseditBundle.m3.html
 * modified: doc/help/gen_html/href/I3_1.html
 * modified: doc/help/gen_html/href/I3_10.html
 * modified: doc/help/gen_html/href/I3_100.html
 * modified: doc/help/gen_html/href/I3_101.html
 * modified: doc/help/gen_html/href/I3_102.html
 * modified: doc/help/gen_html/href/I3_103.html
 * modified: doc/help/gen_html/href/I3_104.html
 * modified: doc/help/gen_html/href/I3_105.html
 * modified: doc/help/gen_html/href/I3_106.html
 * modified: doc/help/gen_html/href/I3_107.html
 * modified: doc/help/gen_html/href/I3_108.html
 * modified: doc/help/gen_html/href/I3_109.html
 * modified: doc/help/gen_html/href/I3_11.html
 * modified: doc/help/gen_html/href/I3_110.html
 * modified: doc/help/gen_html/href/I3_111.html
 * modified: doc/help/gen_html/href/I3_112.html
 * modified: doc/help/gen_html/href/I3_113.html
 * modified: doc/help/gen_html/href/I3_114.html
 * modified: doc/help/gen_html/href/I3_115.html
 * modified: doc/help/gen_html/href/I3_116.html
 * modified: doc/help/gen_html/href/I3_117.html
 * modified: doc/help/gen_html/href/I3_118.html
 * modified: doc/help/gen_html/href/I3_119.html
 * modified: doc/help/gen_html/href/I3_12.html
 * modified: doc/help/gen_html/href/I3_120.html
 * modified: doc/help/gen_html/href/I3_121.html
 * modified: doc/help/gen_html/href/I3_122.html
 * modified: doc/help/gen_html/href/I3_123.html
 * modified: doc/help/gen_html/href/I3_124.html
 * modified: doc/help/gen_html/href/I3_125.html
 * modified: doc/help/gen_html/href/I3_126.html
 * modified: doc/help/gen_html/href/I3_127.html
 * modified: doc/help/gen_html/href/I3_128.html
 * modified: doc/help/gen_html/href/I3_129.html
 * modified: doc/help/gen_html/href/I3_130.html
 * modified: doc/help/gen_html/href/I3_131.html
 * modified: doc/help/gen_html/href/I3_132.html
 * modified: doc/help/gen_html/href/I3_133.html
 * modified: doc/help/gen_html/href/I3_134.html
 * modified: doc/help/gen_html/href/I3_135.html
 * modified: doc/help/gen_html/href/I3_136.html
 * modified: doc/help/gen_html/href/I3_137.html
 * modified: doc/help/gen_html/href/I3_138.html
 * modified: doc/help/gen_html/href/I3_139.html
 * modified: doc/help/gen_html/href/I3_14.html
 * modified: doc/help/gen_html/href/I3_140.html
 * modified: doc/help/gen_html/href/I3_141.html
 * modified: doc/help/gen_html/href/I3_142.html
 * modified: doc/help/gen_html/href/I3_143.html
 * modified: doc/help/gen_html/href/I3_144.html
 * modified: doc/help/gen_html/href/I3_145.html
 * modified: doc/help/gen_html/href/I3_146.html
 * modified: doc/help/gen_html/href/I3_147.html
 * modified: doc/help/gen_html/href/I3_148.html
 * modified: doc/help/gen_html/href/I3_149.html
 * modified: doc/help/gen_html/href/I3_150.html
 * modified: doc/help/gen_html/href/I3_151.html
 * modified: doc/help/gen_html/href/I3_152.html
 * modified: doc/help/gen_html/href/I3_153.html
 * modified: doc/help/gen_html/href/I3_154.html
 * modified: doc/help/gen_html/href/I3_155.html
 * modified: doc/help/gen_html/href/I3_156.html
 * modified: doc/help/gen_html/href/I3_157.html
 * modified: doc/help/gen_html/href/I3_158.html
 * modified: doc/help/gen_html/href/I3_159.html
 * modified: doc/help/gen_html/href/I3_160.html
 * modified: doc/help/gen_html/href/I3_161.html
 * modified: doc/help/gen_html/href/I3_162.html
 * modified: doc/help/gen_html/href/I3_163.html
 * modified: doc/help/gen_html/href/I3_164.html
 * modified: doc/help/gen_html/href/I3_165.html
 * modified: doc/help/gen_html/href/I3_166.html
 * modified: doc/help/gen_html/href/I3_167.html
 * modified: doc/help/gen_html/href/I3_168.html
 * modified: doc/help/gen_html/href/I3_169.html
 * modified: doc/help/gen_html/href/I3_17.html
 * modified: doc/help/gen_html/href/I3_170.html
 * modified: doc/help/gen_html/href/I3_171.html
 * modified: doc/help/gen_html/href/I3_172.html
 * modified: doc/help/gen_html/href/I3_173.html
 * modified: doc/help/gen_html/href/I3_174.html
 * modified: doc/help/gen_html/href/I3_175.html
 * modified: doc/help/gen_html/href/I3_176.html
 * modified: doc/help/gen_html/href/I3_177.html
 * modified: doc/help/gen_html/href/I3_178.html
 * modified: doc/help/gen_html/href/I3_179.html
 * modified: doc/help/gen_html/href/I3_18.html
 * modified: doc/help/gen_html/href/I3_180.html
 * modified: doc/help/gen_html/href/I3_181.html
 * modified: doc/help/gen_html/href/I3_182.html
 * modified: doc/help/gen_html/href/I3_183.html
 * modified: doc/help/gen_html/href/I3_184.html
 * modified: doc/help/gen_html/href/I3_185.html
 * modified: doc/help/gen_html/href/I3_186.html
 * modified: doc/help/gen_html/href/I3_187.html
 * modified: doc/help/gen_html/href/I3_188.html
 * modified: doc/help/gen_html/href/I3_189.html
 * modified: doc/help/gen_html/href/I3_19.html
 * modified: doc/help/gen_html/href/I3_190.html
 * modified: doc/help/gen_html/href/I3_191.html
 * modified: doc/help/gen_html/href/I3_192.html
 * modified: doc/help/gen_html/href/I3_193.html
 * modified: doc/help/gen_html/href/I3_194.html
 * modified: doc/help/gen_html/href/I3_195.html
 * modified: doc/help/gen_html/href/I3_196.html
 * modified: doc/help/gen_html/href/I3_197.html
 * modified: doc/help/gen_html/href/I3_198.html
 * modified: doc/help/gen_html/href/I3_199.html
 * modified: doc/help/gen_html/href/I3_20.html
 * modified: doc/help/gen_html/href/I3_200.html
 * modified: doc/help/gen_html/href/I3_201.html
 * modified: doc/help/gen_html/href/I3_202.html
 * modified: doc/help/gen_html/href/I3_203.html
 * modified: doc/help/gen_html/href/I3_204.html
 * modified: doc/help/gen_html/href/I3_205.html
 * modified: doc/help/gen_html/href/I3_206.html
 * modified: doc/help/gen_html/href/I3_207.html
 * modified: doc/help/gen_html/href/I3_208.html
 * modified: doc/help/gen_html/href/I3_209.html
 * modified: doc/help/gen_html/href/I3_210.html
 * modified: doc/help/gen_html/href/I3_211.html
 * modified: doc/help/gen_html/href/I3_212.html
 * modified: doc/help/gen_html/href/I3_213.html
 * modified: doc/help/gen_html/href/I3_214.html
 * modified: doc/help/gen_html/href/I3_215.html
 * modified: doc/help/gen_html/href/I3_216.html
 * modified: doc/help/gen_html/href/I3_217.html
 * modified: doc/help/gen_html/href/I3_218.html
 * modified: doc/help/gen_html/href/I3_219.html
 * modified: doc/help/gen_html/href/I3_220.html
 * modified: doc/help/gen_html/href/I3_221.html
 * modified: doc/help/gen_html/href/I3_222.html
 * modified: doc/help/gen_html/href/I3_223.html
 * modified: doc/help/gen_html/href/I3_224.html
 * modified: doc/help/gen_html/href/I3_225.html
 * modified: doc/help/gen_html/href/I3_226.html
 * modified: doc/help/gen_html/href/I3_227.html
 * modified: doc/help/gen_html/href/I3_228.html
 * modified: doc/help/gen_html/href/I3_229.html
 * modified: doc/help/gen_html/href/I3_230.html
 * modified: doc/help/gen_html/href/I3_25.html
 * modified: doc/help/gen_html/href/I3_26.html
 * modified: doc/help/gen_html/href/I3_27.html
 * modified: doc/help/gen_html/href/I3_28.html
 * modified: doc/help/gen_html/href/I3_29.html
 * modified: doc/help/gen_html/href/I3_30.html
 * modified: doc/help/gen_html/href/I3_31.html
 * modified: doc/help/gen_html/href/I3_32.html
 * modified: doc/help/gen_html/href/I3_33.html
 * modified: doc/help/gen_html/href/I3_34.html
 * modified: doc/help/gen_html/href/I3_35.html
 * modified: doc/help/gen_html/href/I3_36.html
 * modified: doc/help/gen_html/href/I3_37.html
 * modified: doc/help/gen_html/href/I3_38.html
 * modified: doc/help/gen_html/href/I3_39.html
 * modified: doc/help/gen_html/href/I3_40.html
 * modified: doc/help/gen_html/href/I3_41.html
 * modified: doc/help/gen_html/href/I3_42.html
 * modified: doc/help/gen_html/href/I3_43.html
 * modified: doc/help/gen_html/href/I3_44.html
 * modified: doc/help/gen_html/href/I3_45.html
 * modified: doc/help/gen_html/href/I3_46.html
 * modified: doc/help/gen_html/href/I3_47.html
 * modified: doc/help/gen_html/href/I3_48.html
 * modified: doc/help/gen_html/href/I3_49.html
 * modified: doc/help/gen_html/href/I3_5.html
 * modified: doc/help/gen_html/href/I3_50.html
 * modified: doc/help/gen_html/href/I3_51.html
 * modified: doc/help/gen_html/href/I3_52.html
 * modified: doc/help/gen_html/href/I3_53.html
 * modified: doc/help/gen_html/href/I3_54.html
 * modified: doc/help/gen_html/href/I3_55.html
 * modified: doc/help/gen_html/href/I3_56.html
 * modified: doc/help/gen_html/href/I3_57.html
 * modified: doc/help/gen_html/href/I3_58.html
 * modified: doc/help/gen_html/href/I3_59.html
 * modified: doc/help/gen_html/href/I3_60.html
 * modified: doc/help/gen_html/href/I3_61.html
 * modified: doc/help/gen_html/href/I3_62.html
 * modified: doc/help/gen_html/href/I3_63.html
 * modified: doc/help/gen_html/href/I3_64.html
 * modified: doc/help/gen_html/href/I3_65.html
 * modified: doc/help/gen_html/href/I3_66.html
 * modified: doc/help/gen_html/href/I3_67.html
 * modified: doc/help/gen_html/href/I3_68.html
 * modified: doc/help/gen_html/href/I3_69.html
 * modified: doc/help/gen_html/href/I3_70.html
 * modified: doc/help/gen_html/href/I3_71.html
 * modified: doc/help/gen_html/href/I3_72.html
 * modified: doc/help/gen_html/href/I3_73.html
 * modified: doc/help/gen_html/href/I3_74.html
 * modified: doc/help/gen_html/href/I3_75.html
 * modified: doc/help/gen_html/href/I3_76.html
 * modified: doc/help/gen_html/href/I3_77.html
 * modified: doc/help/gen_html/href/I3_78.html
 * modified: doc/help/gen_html/href/I3_79.html
 * modified: doc/help/gen_html/href/I3_80.html
 * modified: doc/help/gen_html/href/I3_81.html
 * modified: doc/help/gen_html/href/I3_82.html
 * modified: doc/help/gen_html/href/I3_83.html
 * modified: doc/help/gen_html/href/I3_84.html
 * modified: doc/help/gen_html/href/I3_85.html
 * modified: doc/help/gen_html/href/I3_86.html
 * modified: doc/help/gen_html/href/I3_87.html
 * modified: doc/help/gen_html/href/I3_88.html
 * modified: doc/help/gen_html/href/I3_89.html
 * modified: doc/help/gen_html/href/I3_9.html
 * modified: doc/help/gen_html/href/I3_90.html
 * modified: doc/help/gen_html/href/I3_91.html
 * modified: doc/help/gen_html/href/I3_92.html
 * modified: doc/help/gen_html/href/I3_93.html
 * modified: doc/help/gen_html/href/I3_94.html
 * modified: doc/help/gen_html/href/I3_95.html
 * modified: doc/help/gen_html/href/I3_96.html
 * modified: doc/help/gen_html/href/I3_97.html
 * modified: doc/help/gen_html/href/I3_98.html
 * modified: doc/help/gen_html/href/I3_99.html
 * modified: doc/help/gen_html/href/M3_10.html
 * modified: doc/help/gen_html/href/M3_100.html
 * modified: doc/help/gen_html/href/M3_101.html
 * modified: doc/help/gen_html/href/M3_102.html
 * modified: doc/help/gen_html/href/M3_103.html
 * modified: doc/help/gen_html/href/M3_104.html
 * modified: doc/help/gen_html/href/M3_105.html
 * modified: doc/help/gen_html/href/M3_106.html
 * modified: doc/help/gen_html/href/M3_107.html
 * modified: doc/help/gen_html/href/M3_108.html
 * modified: doc/help/gen_html/href/M3_109.html
 * modified: doc/help/gen_html/href/M3_11.html
 * modified: doc/help/gen_html/href/M3_110.html
 * modified: doc/help/gen_html/href/M3_111.html
 * modified: doc/help/gen_html/href/M3_112.html
 * modified: doc/help/gen_html/href/M3_113.html
 * modified: doc/help/gen_html/href/M3_114.html
 * modified: doc/help/gen_html/href/M3_115.html
 * modified: doc/help/gen_html/href/M3_116.html
 * modified: doc/help/gen_html/href/M3_117.html
 * modified: doc/help/gen_html/href/M3_118.html
 * modified: doc/help/gen_html/href/M3_119.html
 * modified: doc/help/gen_html/href/M3_12.html
 * modified: doc/help/gen_html/href/M3_120.html
 * modified: doc/help/gen_html/href/M3_121.html
 * modified: doc/help/gen_html/href/M3_122.html
 * modified: doc/help/gen_html/href/M3_123.html
 * modified: doc/help/gen_html/href/M3_124.html
 * modified: doc/help/gen_html/href/M3_125.html
 * modified: doc/help/gen_html/href/M3_126.html
 * modified: doc/help/gen_html/href/M3_127.html
 * modified: doc/help/gen_html/href/M3_128.html
 * modified: doc/help/gen_html/href/M3_129.html
 * modified: doc/help/gen_html/href/M3_13.html
 * modified: doc/help/gen_html/href/M3_130.html
 * modified: doc/help/gen_html/href/M3_131.html
 * modified: doc/help/gen_html/href/M3_132.html
 * modified: doc/help/gen_html/href/M3_133.html
 * modified: doc/help/gen_html/href/M3_134.html
 * modified: doc/help/gen_html/href/M3_135.html
 * modified: doc/help/gen_html/href/M3_136.html
 * modified: doc/help/gen_html/href/M3_137.html
 * modified: doc/help/gen_html/href/M3_138.html
 * modified: doc/help/gen_html/href/M3_139.html
 * modified: doc/help/gen_html/href/M3_14.html
 * modified: doc/help/gen_html/href/M3_140.html
 * modified: doc/help/gen_html/href/M3_141.html
 * modified: doc/help/gen_html/href/M3_15.html
 * modified: doc/help/gen_html/href/M3_16.html
 * modified: doc/help/gen_html/href/M3_17.html
 * modified: doc/help/gen_html/href/M3_18.html
 * modified: doc/help/gen_html/href/M3_19.html
 * modified: doc/help/gen_html/href/M3_20.html
 * modified: doc/help/gen_html/href/M3_21.html
 * modified: doc/help/gen_html/href/M3_22.html
 * modified: doc/help/gen_html/href/M3_23.html
 * modified: doc/help/gen_html/href/M3_24.html
 * modified: doc/help/gen_html/href/M3_25.html
 * modified: doc/help/gen_html/href/M3_26.html
 * modified: doc/help/gen_html/href/M3_27.html
 * modified: doc/help/gen_html/href/M3_28.html
 * modified: doc/help/gen_html/href/M3_29.html
 * modified: doc/help/gen_html/href/M3_3.html
 * modified: doc/help/gen_html/href/M3_30.html
 * modified: doc/help/gen_html/href/M3_31.html
 * modified: doc/help/gen_html/href/M3_32.html
 * modified: doc/help/gen_html/href/M3_33.html
 * modified: doc/help/gen_html/href/M3_34.html
 * modified: doc/help/gen_html/href/M3_35.html
 * modified: doc/help/gen_html/href/M3_36.html
 * modified: doc/help/gen_html/href/M3_37.html
 * modified: doc/help/gen_html/href/M3_38.html
 * modified: doc/help/gen_html/href/M3_39.html
 * modified: doc/help/gen_html/href/M3_40.html
 * modified: doc/help/gen_html/href/M3_41.html
 * modified: doc/help/gen_html/href/M3_42.html
 * modified: doc/help/gen_html/href/M3_43.html
 * modified: doc/help/gen_html/href/M3_44.html
 * modified: doc/help/gen_html/href/M3_45.html
 * modified: doc/help/gen_html/href/M3_46.html
 * modified: doc/help/gen_html/href/M3_47.html
 * modified: doc/help/gen_html/href/M3_48.html
 * modified: doc/help/gen_html/href/M3_49.html
 * modified: doc/help/gen_html/href/M3_5.html
 * modified: doc/help/gen_html/href/M3_50.html
 * modified: doc/help/gen_html/href/M3_51.html
 * modified: doc/help/gen_html/href/M3_52.html
 * modified: doc/help/gen_html/href/M3_53.html
 * modified: doc/help/gen_html/href/M3_54.html
 * modified: doc/help/gen_html/href/M3_55.html
 * modified: doc/help/gen_html/href/M3_56.html
 * modified: doc/help/gen_html/href/M3_57.html
 * modified: doc/help/gen_html/href/M3_58.html
 * modified: doc/help/gen_html/href/M3_59.html
 * modified: doc/help/gen_html/href/M3_6.html
 * modified: doc/help/gen_html/href/M3_60.html
 * modified: doc/help/gen_html/href/M3_61.html
 * modified: doc/help/gen_html/href/M3_62.html
 * modified: doc/help/gen_html/href/M3_63.html
 * modified: doc/help/gen_html/href/M3_64.html
 * modified: doc/help/gen_html/href/M3_65.html
 * modified: doc/help/gen_html/href/M3_66.html
 * modified: doc/help/gen_html/href/M3_67.html
 * modified: doc/help/gen_html/href/M3_68.html
 * modified: doc/help/gen_html/href/M3_69.html
 * modified: doc/help/gen_html/href/M3_7.html
 * modified: doc/help/gen_html/href/M3_70.html
 * modified: doc/help/gen_html/href/M3_71.html
 * modified: doc/help/gen_html/href/M3_72.html
 * modified: doc/help/gen_html/href/M3_73.html
 * modified: doc/help/gen_html/href/M3_74.html
 * modified: doc/help/gen_html/href/M3_75.html
 * modified: doc/help/gen_html/href/M3_76.html
 * modified: doc/help/gen_html/href/M3_77.html
 * modified: doc/help/gen_html/href/M3_78.html
 * modified: doc/help/gen_html/href/M3_79.html
 * modified: doc/help/gen_html/href/M3_8.html
 * modified: doc/help/gen_html/href/M3_80.html
 * modified: doc/help/gen_html/href/M3_81.html
 * modified: doc/help/gen_html/href/M3_82.html
 * modified: doc/help/gen_html/href/M3_83.html
 * modified: doc/help/gen_html/href/M3_84.html
 * modified: doc/help/gen_html/href/M3_85.html
 * modified: doc/help/gen_html/href/M3_86.html
 * modified: doc/help/gen_html/href/M3_87.html
 * modified: doc/help/gen_html/href/M3_88.html
 * modified: doc/help/gen_html/href/M3_89.html
 * modified: doc/help/gen_html/href/M3_9.html
 * modified: doc/help/gen_html/href/M3_90.html
 * modified: doc/help/gen_html/href/M3_91.html
 * modified: doc/help/gen_html/href/M3_92.html
 * modified: doc/help/gen_html/href/M3_93.html
 * modified: doc/help/gen_html/href/M3_94.html
 * modified: doc/help/gen_html/href/M3_95.html
 * modified: doc/help/gen_html/href/M3_96.html
 * modified: doc/help/gen_html/href/M3_97.html
 * modified: doc/help/gen_html/href/M3_98.html
 * modified: doc/help/gen_html/href/M3_99.html
 * modified: doc/help/gen_html/href/MG_2.html
 * modified: doc/help/gen_html/juno-app/derived/JunoBundle.m3.html
 * modified: doc/help/gen_html/libm3/src/os/POSIX/FSPosix.m3.html
 * modified: doc/help/gen_html/libm3/src/os/POSIX/FilePosix.m3.html
 * modified: doc/help/gen_html/libm3/src/os/POSIX/OSConfigPosix.m3.html
 * modified: doc/help/gen_html/libm3/src/os/POSIX/OSErrorPosix.i3.html
 * modified: doc/help/gen_html/libm3/src/os/POSIX/OSErrorPosix.m3.html
 * modified: doc/help/gen_html/libm3/src/os/POSIX/ProcessPosix.m3.html
 * modified: doc/help/gen_html/libm3/src/os/POSIX/SocketPosix.m3.html
 * modified: doc/help/gen_html/libm3/src/params/Env.m3.html
 * modified: doc/help/gen_html/libm3/src/pickle/ver2/Pickle2.m3.html
 * modified: doc/help/gen_html/libm3/src/uid/POSIX/MachineIDPosix.m3.html
 * modified: doc/help/gen_html/listfuncs/src/ListFuncs.ig.html
 * modified: doc/help/gen_html/listfuncs/src/ListFuncs.mg.html
 * modified: doc/help/gen_html/m3bundle/src/m3bundle.m3.html
 * modified: doc/help/gen_html/m3core/derived/Compiler.i3.html
 * modified: doc/help/gen_html/m3core/src/C/Common/Cerrno.i3.html
 * modified: doc/help/gen_html/m3core/src/Csupport/Common/hand.c.html
 * modified: doc/help/gen_html/m3core/src/main/Main.i3.html
 * modified: doc/help/gen_html/m3core/src/runtime/POSIX/RTOS.m3.html
 * modified: doc/help/gen_html/m3core/src/runtime/common/RT0.i3.html
 * modified: doc/help/gen_html/m3core/src/runtime/common/RTLinker.i3.html
 * modified: doc/help/gen_html/m3core/src/runtime/common/RTLinker.m3.html
 * modified: doc/help/gen_html/m3core/src/runtime/common/RTLinkerX.i3.html
 * modified: doc/help/gen_html/m3core/src/thread/POSIX/ThreadPosix.m3.html
 * modified: doc/help/gen_html/m3core/src/unix/linux-libc6/Uerror.i3.html
 * modified: doc/help/gen_html/m3core/src/unix/linux-libc6/Uerror.m3.html
 * modified: doc/help/gen_html/m3core/src/unix/linux-libc6/Uexec.i3.html
 * modified: doc/help/gen_html/m3core/src/unix/linux-libc6/Uin.i3.html
 * modified: doc/help/gen_html/m3front/src/builtinInfo/InfoModule.m3.html
 * modified: doc/help/gen_html/m3front/src/exprs/ExprParse.m3.html
 * modified: doc/help/gen_html/m3front/src/misc/CG.m3.html
 * modified: doc/help/gen_html/m3front/src/misc/ESet.m3.html
 * modified: doc/help/gen_html/m3front/src/misc/M3Front.m3.html
 * modified: doc/help/gen_html/m3front/src/misc/M3Header.m3.html
 * modified: doc/help/gen_html/m3front/src/misc/Scanner.i3.html
 * modified: doc/help/gen_html/m3front/src/misc/Scanner.m3.html
 * modified: doc/help/gen_html/m3front/src/misc/Token.i3.html
 * modified: doc/help/gen_html/m3front/src/misc/Token.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/AssertStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/AssignStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/BlockStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/CaseStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/DebugStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/EvalStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/ExitStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/ForStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/IfStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/LockStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/LoopStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/RaiseStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/RepeatStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/ReturnStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/Stmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/TryFinStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/TryStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/TypeCaseStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/WhileStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/stmts/WithStmt.m3.html
 * modified: doc/help/gen_html/m3front/src/types/ArrayType.m3.html
 * modified: doc/help/gen_html/m3front/src/types/Brand.m3.html
 * modified: doc/help/gen_html/m3front/src/types/EnumType.m3.html
 * modified: doc/help/gen_html/m3front/src/types/NamedType.m3.html
 * modified: doc/help/gen_html/m3front/src/types/ObjectType.m3.html
 * modified: doc/help/gen_html/m3front/src/types/PackedType.m3.html
 * modified: doc/help/gen_html/m3front/src/types/ProcType.m3.html
 * modified: doc/help/gen_html/m3front/src/types/RecordType.i3.html
 * modified: doc/help/gen_html/m3front/src/types/RecordType.m3.html
 * modified: doc/help/gen_html/m3front/src/types/RefType.m3.html
 * modified: doc/help/gen_html/m3front/src/types/SetType.m3.html
 * modified: doc/help/gen_html/m3front/src/types/SubrangeType.m3.html
 * modified: doc/help/gen_html/m3front/src/types/Type.i3.html
 * modified: doc/help/gen_html/m3front/src/types/Type.m3.html
 * modified: doc/help/gen_html/m3front/src/values/Constant.m3.html
 * modified: doc/help/gen_html/m3front/src/values/Decl.i3.html
 * modified: doc/help/gen_html/m3front/src/values/Decl.m3.html
 * modified: doc/help/gen_html/m3front/src/values/Exceptionz.m3.html
 * modified: doc/help/gen_html/m3front/src/values/External.m3.html
 * modified: doc/help/gen_html/m3front/src/values/Formal.m3.html
 * modified: doc/help/gen_html/m3front/src/values/Ident.m3.html
 * modified: doc/help/gen_html/m3front/src/values/Module.i3.html
 * modified: doc/help/gen_html/m3front/src/values/Module.m3.html
 * modified: doc/help/gen_html/m3front/src/values/Procedure.m3.html
 * modified: doc/help/gen_html/m3front/src/values/Revelation.m3.html
 * modified: doc/help/gen_html/m3front/src/values/Tipe.i3.html
 * modified: doc/help/gen_html/m3front/src/values/Tipe.m3.html
 * modified: doc/help/gen_html/m3front/src/values/ValueRep.i3.html
 * modified: doc/help/gen_html/m3front/src/values/Variable.m3.html
 * modified: doc/help/gen_html/m3gc-enhanced/src/runtime/LINUXLIBC6/RTHeapDepC.c.html
 * modified: doc/help/gen_html/m3gc-simple/src/runtime/LINUXLIBC6/sysdeps.c.html
 * modified: doc/help/gen_html/m3linker/src/MxGen.i3.html
 * modified: doc/help/gen_html/m3linker/src/MxGen.m3.html
 * modified: doc/help/gen_html/m3middle/src/M3File.m3.html
 * modified: doc/help/gen_html/m3middle/src/Target.i3.html
 * modified: doc/help/gen_html/m3middle/src/Target.m3.html
 * modified: doc/help/gen_html/m3quake/src/QMachine.m3.html
 * modified: doc/help/gen_html/m3totex/derived/B.m3.html
 * modified: doc/help/gen_html/m3zume/derived/ZoomBundle.m3.html
 * modified: doc/help/gen_html/netobj/src/netobjrt/NetObjF.i3.html
 * modified: doc/help/gen_html/obliq/derived/ObliqBdl2.m3.html
 * modified: doc/help/gen_html/obliqlibemb/derived/ObEmbBundle.m3.html
 * modified: doc/help/gen_html/obliqlibemb/src/LibEmbDirs.i3.html
 * modified: doc/help/gen_html/obliqlibemb/src/LibEmbDirsPosix.m3.html
 * modified: doc/help/gen_html/obliqlibemb/src/ObLibEmb.i3.html
 * modified: doc/help/gen_html/obliqlibemb/src/ObLibEmb.m3.html
 * modified: doc/help/gen_html/obliqlibemb/src/ObLoader.i3.html
 * modified: doc/help/gen_html/obliqlibemb/src/ObLoader.m3.html
 * modified: doc/help/gen_html/obliqrt/derived/ObValueCB.i3.html
 * modified: doc/help/gen_html/obliqrt/derived/ObValueCB.m3.html
 * modified: doc/help/gen_html/obliqrt/derived/ObValueCBProxy.i3.html
 * modified: doc/help/gen_html/obliqrt/derived/ObValuePickle.i3.html
 * modified: doc/help/gen_html/obliqrt/derived/ObValueProxy.i3.html
 * modified: doc/help/gen_html/obliqrt/derived/ObValueSO.m3.html
 * modified: doc/help/gen_html/obliqrt/src/ObValue.m3.html
 * modified: doc/help/gen_html/obliqrt/src/ObValueNotify.i3.html
 * modified: doc/help/gen_html/obliqrt/src/ObValueNotify.m3.html
 * modified: doc/help/gen_html/obliqrt/src/ObValueRep.i3.html
 * modified: doc/help/gen_html/patternmatching/src/Glob.i3.html
 * modified: doc/help/gen_html/patternmatching/src/Glob.m3.html
 * modified: doc/help/gen_html/patternmatching/src/GlobTree.i3.html
 * modified: doc/help/gen_html/patternmatching/src/GlobTree.m3.html
 * modified: doc/help/gen_html/patternmatching/src/Uglob.i3.html
 * modified: doc/help/gen_html/patternmatching/src/libglob/fnmatch.c.html
 * modified: doc/help/gen_html/pkl-fonts/derived/PklFontsBundle.m3.html
 * modified: doc/help/gen_html/rdwr/src/RdWrPipe.i3.html
 * modified: doc/help/gen_html/rdwr/src/RdWrPipe.m3.html
 * modified: doc/help/gen_html/rdwr/src/SimpleMsgRW.i3.html
 * modified: doc/help/gen_html/rdwr/src/SimpleMsgRW.m3.html
 * modified: doc/help/gen_html/rdwr/src/TeeWr.i3.html
 * modified: doc/help/gen_html/rdwr/src/TeeWr.m3.html
 * modified: doc/help/gen_html/sharedobj/src/LocalObjectSpace.i3.html
 * modified: doc/help/gen_html/sharedobj/src/LocalObjectSpace.m3.html
 * modified: doc/help/gen_html/sharedobj/src/Message.i3.html
 * modified: doc/help/gen_html/sharedobj/src/Message.m3.html
 * modified: doc/help/gen_html/sharedobj/src/ObjCopy.i3.html
 * modified: doc/help/gen_html/sharedobj/src/ObjCopy.m3.html
 * modified: doc/help/gen_html/sharedobj/src/ObjectInfo.i3.html
 * modified: doc/help/gen_html/sharedobj/src/ObjectInfo.m3.html
 * modified: doc/help/gen_html/sharedobj/src/ObjectSpace.i3.html
 * modified: doc/help/gen_html/sharedobj/src/SharedObj.i3.html
 * modified: doc/help/gen_html/sharedobj/src/SharedObjError.i3.html
 * modified: doc/help/gen_html/sharedobj/src/SharedObjF.i3.html
 * modified: doc/help/gen_html/sharedobj/src/SharedObjF.m3.html
 * modified: doc/help/gen_html/sharedobj/src/SharedObjRT.i3.html
 * modified: doc/help/gen_html/sharedobj/src/SharedObjRT.m3.html
 * modified: doc/help/gen_html/sharedobj/src/SharedObjRTF.i3.html
 * modified: doc/help/gen_html/sharedobj/src/SharedObjRep.i3.html
 * modified: doc/help/gen_html/sharedobj/src/SharedObjRep.m3.html
 * modified: doc/help/gen_html/sharedobj/src/SharedObjStubLib.i3.html
 * modified: doc/help/gen_html/sharedobj/src/SharedObjStubLib.m3.html
 * modified: doc/help/gen_html/sharedobj/src/SpaceConn.i3.html
 * modified: doc/help/gen_html/sharedobj/src/SpaceConn.m3.html
 * modified: doc/help/gen_html/sharedobj/src/WeakerRef.i3.html
 * modified: doc/help/gen_html/sharedobj/src/WeakerRef.m3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxCodeFiles.i3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxCodeFiles.m3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxCodeGenError.i3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxCodeGenError.m3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxCodeUtils.i3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxCodeUtils.m3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxCoder.i3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxDummyCode.i3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxDummyCode.m3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxIntfCBCode.i3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxIntfCBCode.m3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxIntfCBProxyCode.i3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxIntfCBProxyCode.m3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxIntfPklCode.i3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxIntfPklCode.m3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxIntfProxyCode.i3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxIntfProxyCode.m3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxModuleCBCode.i3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxModuleCBCode.m3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxModuleSOCode.i3.html
 * modified: doc/help/gen_html/sharedobjgen/src/SOxModuleSOCode.m3.html
 * modified: doc/help/gen_html/sharedobjgen/src/StubGenTool.i3.html
 * modified: doc/help/gen_html/sharedobjgen/src/StubGenTool.m3.html
 * modified: doc/help/gen_html/tcp/src/POSIX/Herrno.i3.html
 * modified: doc/help/gen_html/tcp/src/POSIX/IP.m3.html
 * modified: doc/help/gen_html/tcp/src/POSIX/IPErrorPosix.m3.html
 * modified: doc/help/gen_html/tcp/src/POSIX/TCP.m3.html
 * modified: doc/help/gen_html/tcp/src/POSIX/TCPHack.i3.html
 * modified: doc/help/gen_html/udp/src/POSIX/UDPPosix.m3.html
 * modified: doc/help/gen_html/vbtkit/derived/VBTKitBundle.m3.html
 * modified: doc/help/gen_html/visualobliq/derived/DialogBundle.m3.html
 * modified: doc/help/gen_html/vocgi/derived/VOCgiBundle.m3.html
 * modified: doc/help/gen_html/vorun/derived/VORunBundle.m3.html
 * modified: doc/help/gen_html/webvbt/derived/ResourceBundle.m3.html
 * modified: doc/help/gen_html/zeus/derived/ZeusBundle.m3.html
 * modified: doc/help/gen_html/zeus/src/ZeusPanel.m3.html
 *
 * Revision 1.2  2001/12/02 00:20:37  wagner
 * add copyright notes, fix overrides for cm3, and make everything compile
 *
 * added: events/COPYRIGHT-COLUMBIA
 * added: events/src/COPYRIGHT-COLUMBIA
 * modified: events/src/Event.i3
 * modified: events/src/Event.m3
 * modified: events/src/EventConn.i3
 * modified: events/src/EventConn.m3
 * modified: events/src/EventCounter.i3
 * modified: events/src/EventCounter.m3
 * modified: events/src/EventHandle.i3
 * modified: events/src/EventIO.i3
 * modified: events/src/EventNumber.i3
 * modified: events/src/EventNumber.m3
 * modified: events/src/EventNumberF.i3
 * modified: events/src/EventPort.i3
 * modified: events/src/EventPort.m3
 * modified: events/src/EventProtocol.i3
 * modified: events/src/EventRd.i3
 * modified: events/src/EventRd.m3
 * modified: events/src/EventSpaceID.i3
 * modified: events/src/EventSpaceID.m3
 * modified: events/src/EventStubLib.i3
 * modified: events/src/EventStubLib.m3
 * modified: events/src/EventWireRep.i3
 * modified: events/src/EventWireRep.m3
 * modified: events/src/EventWr.i3
 * modified: events/src/EventWr.m3
 * modified: events/src/EventWrF.i3
 * modified: events/src/HostInfo.i3
 * modified: events/src/HostInfo.m3
 * modified: events/src/RdWrMutex.i3
 * modified: events/src/RdWrMutex.m3
 * modified: events/src/Work.i3
 * modified: events/src/WorkerPool.i3
 * modified: events/src/WorkerPool.m3
 * modified: events/src/Zombie.i3
 * modified: events/src/m3makefile
 * modified: events/src/m3overrides
 *
 * Revision 1.1.1.1  2001/12/02 00:06:45  wagner
 * Blair MacIntyre's events library
 *
 * Revision 1.3  1997/08/04 20:15:08  bm
 * Fixed BRANDs
 *
 * Revision 1.2  1997/01/23 15:26:35  bm
 * Lots of little bug fixes.
 *
 * 
 * HISTORY
 * We use a Priority Queue to hold the blocked threads.  Each thread
 * has its own entry in the queue, and its own condition variable.
 * Threads blocked because of Acquire use priority value, wait := FALSE.
 * Threads blocked because of Wait use priority value+1, wait := TRUE.
 * Equal priorities are ordered with wait before non-wait.  
 * Thus, they don't get in each others way, and are obtained in the
 * correct order.
 

MODULE EventCounter;

IMPORT Thread, EventPQ, EventPQRep, EventNumber, Fmt, Process, Text,
       RdWrMutex;
IMPORT IO;
TYPE
  ThreadWaiting = EventPQ.Elt OBJECT cv: Thread.Condition;  END;
  EventWaiting = EventPQ.Elt OBJECT handler: Handler  END;

REVEAL
  T = Public BRANDED "EventCounter.T" OBJECT
        locker : Thread.T;
        mu     : RdWrMutex.T;
        wmu    : Thread.Mutex;
        val    : EventNumWait;
        waiting: EventPQ.Default;
      OVERRIDES
        init    := Init;
        tryAcquire := TryAcquire;
        enqueueAction := EnqueueAction;
        acquire := Acquire;
        release := Release;
        wait    := Wait;
        value   := Value;
        set     := Set;
      END;

TYPE
  EventNumWait = EventNumber.T OBJECT
    wait: BOOLEAN := FALSE;
  OVERRIDES
    compare := Compare;
    fmt := Format;
  END;

PROCEDURE Compare(self: EventNumWait; en: EventNumber.T): [-1..1] =
  VAR cmp := EventNumber.Compare(self, en);
  BEGIN
    (* IO.Put("Comparing " & self.fmt() & " and " & en.fmt() & "\n"); *)
    (* If the EventNumber part is different, they are different! *)
    IF cmp # 0 THEN
      RETURN cmp;
    END;
    TYPECASE en OF
    | EventNumWait(p2) =>
      (* "wait" is greater than non-"wait" values. *)
      IF self.wait = p2.wait THEN
        RETURN 0;
      ELSIF self.wait THEN
        RETURN -1;
      ELSE
        RETURN 1;
      END;
    ELSE
      (* "wait" is greater than normal EventNumber.T, non-"wait" is
         equal. *)
      IF self.wait THEN
        RETURN -1;
      ELSE
        RETURN 0;
      END;
    END;
  END Compare;

PROCEDURE Format(self: EventNumWait; base: Fmt.Base): Text.T =
  BEGIN
    RETURN EventNumber.T.fmt(self, base) & "." & Fmt.Bool(self.wait);
  END Format;

PROCEDURE Init (self: T; mu: RdWrMutex.T; value: EventNumber.T): T =
  BEGIN
    self.val := NEW(EventNumWait, wait := FALSE).init(value);
    self.waiting := NEW(EventPQ.Default).init();
    self.mu := mu;
    self.wmu := NEW(Thread.Mutex);
    self.locker := NIL;
    RETURN self;
  END Init;

PROCEDURE New(mu: RdWrMutex.T; t: EventNumber.T): T =
  BEGIN
    RETURN NEW(T).init(mu, t);
  END New;

PROCEDURE TryAcquire (self: T; value: EventNumber.T): BOOLEAN
  RAISES {Duplicate} =
  BEGIN
    LOCK self.wmu DO
      (* Make sure we don't try to recursively grab the counter. *)
      IF self.locker = Thread.Self() THEN
        Process.Crash(
          "Thread #" (* & Fmt.Int(ThreadF.MyId()) *)
            & " is trying to acquire an event counter it already holds.\n");
      END;
      (* If the counter has already passed this value, raise Duplicate. *)
      CASE value.compare(self.val) OF
      | -1 => RAISE Duplicate;
      |  1 => RETURN FALSE;
      ELSE (* drop through *)
      END;
    END;

    self.mu.acquireWrite();
    Thread.Acquire(self.wmu);
    (* Need to check again after acquiring the lock.
       If the counter has already passed this value, raise Duplicate. *)
    IF value.compare(self.val) = -1 THEN
      Thread.Release(self.wmu);
      self.mu.releaseWrite();
      RAISE Duplicate;
    END;
    self.locker := Thread.Self();
    Thread.Release(self.wmu);
    RETURN TRUE;
  END TryAcquire;

PROCEDURE Acquire (self: T; value: EventNumber.T) RAISES {Duplicate} =
  BEGIN
    LOCK self.wmu DO
      (* Make sure we don't try to recursively grab the counter. *)
      IF self.locker = Thread.Self() THEN
        Process.Crash(
          "Thread #" (* & Fmt.Int(ThreadF.MyId()) *)
            & " is trying to acquire an event counter it already holds.\n");
      END;
      (* If the counter has already passed this value, raise Duplicate. *)
      IF value.compare(self.val) = -1 THEN
        RAISE Duplicate;
      END;
    END;

    self.mu.acquireWrite();
    Thread.Acquire(self.wmu);
    (* Need to check again after acquiring the lock.
       If the counter has already passed this value, raise Duplicate. *)
    IF value.compare(self.val) = -1 THEN
      Thread.Release(self.wmu);
      self.mu.releaseWrite();
      RAISE Duplicate;
    ELSIF value.compare(self.val) = 1 THEN
      WITH newSleeper = NEW(ThreadWaiting, cv := NEW(Thread.Condition),
                            priority := NEW(EventNumWait,
                                            wait := FALSE).init(value)) DO
        self.waiting.insert(newSleeper);
        self.mu.wait(self.wmu, newSleeper.cv);

        (* If multiple threads block trying to acquire the same value, one
           of them will return from wait first and eventually release the
           counter (incrementing it).  All others will see self.val >
           value when they eventually get to run.  These release the lock
           and raise Duplicate. *)
        IF value.compare(self.val) = 0 THEN
          self.locker := Thread.Self();
          Thread.Release(self.wmu);
          RETURN;
        END;
        Thread.Release(self.wmu);
        self.mu.releaseWrite();
        RAISE Duplicate;
      END;
    END;
    self.locker := Thread.Self();
    Thread.Release(self.wmu);
  END Acquire;
The algorithm is this: Acquire self.wmu. Now, check the eventnumber. - If we could run right now, release the lock, try to Acquire the counter, execute the update, Release the counter and return. - If not, enqueue it.
PROCEDURE EnqueueAction(self: T; value: EventNumber.T;
                        handler: Handler) RAISES {Duplicate} =
  BEGIN
    LOCK self.wmu DO
      IF self.locker = Thread.Self() THEN
        Process.Crash("Thread #" (* & Fmt.Int(ThreadF.MyId()) *)
            & " is trying to wait for an event counter it already holds.\n");
      END;
      CASE value.compare(self.val) OF
      | -1 => RAISE Duplicate;
      |  1 =>
        (* we really can't execute this action yet, so enqueue it *)
        WITH newEvent = NEW(EventWaiting, handler := handler,
                            priority := NEW(EventNumWait,
                                            wait := FALSE).init(value)) DO
          self.waiting.insert(newEvent);
        END;
        RETURN;
      ELSE (* drop through *)
      END;
    END;

    (* We are actually next in line, so just try to acquire the lock
       and execute the event *)
    Acquire(self, value);
    handler.handle();
    Release(self);
  END EnqueueAction;

PROCEDURE Wait (self: T; value: EventNumber.T) =
  BEGIN
    LOCK self.wmu DO
      (* Make sure only the owner releases the counter. *)
      IF self.locker = Thread.Self() THEN
        Process.Crash(
          "Thread #" (* & Fmt.Int(ThreadF.MyId()) *)
            & " is trying to wait for an event counter it already holds.\n");
      END;
      IF value.compare(self.val) >= 0 THEN
        WITH newSleeper = NEW(ThreadWaiting, cv := NEW(Thread.Condition),
                              priority := NEW(EventNumWait,
                                              wait := TRUE).init(value)) DO
          (* Increment this so it comes after the blocked sleepers trying
             to acquire the lock. *)
          TRY
            newSleeper.priority.inc();
          EXCEPT
          | EventNumber.Overflow =>
            Process.Crash("EventCounter overflowed on wait().");
          END;
          self.waiting.insert(newSleeper);
          (* IO.Put("EC.Wait(" & Fmt.Int(value) & ") blocked\n"); *)
          Thread.Wait(self.wmu, newSleeper.cv);
        END;
      END;
    END;
  END Wait;
Advance as far through the queue as possible, waking up waiters and anyone attempting to acquire the lock, and executing actions.
PROCEDURE AdvanceQueue(self: T): ThreadWaiting =
  VAR
    sleeper   : ThreadWaiting := NIL;
  BEGIN
    LOOP
      IF self.waiting.size() = 0 THEN RETURN sleeper END;

      WITH minElt = NARROW(self.waiting.min(), EventPQ.Elt) DO
        IF minElt.priority.compare(self.val) > 0 THEN
          RETURN sleeper;
        END;

        TYPECASE self.waiting.deleteMin() OF
        | ThreadWaiting(minSleeper) =>
          IF sleeper = NIL THEN
            (* Wake this one up after we leave loop. *)
            sleeper := minSleeper;
          ELSE
            (* Wake up any more. *)
            Thread.Signal(minSleeper.cv);
          END;
        | EventWaiting(minEvent) =>
          (* If this event is the current one we are waiting for,
             process it.  If we've already hit this number, then
             call the duplicate method. *)
          IF minEvent.priority.compare(self.val) = 0 THEN
            (* an event we can process! *)
            minEvent.handler.handle();

            (* after processing, increment our counter *)
            TRY
              self.val.inc();
            EXCEPT
            | EventNumber.Overflow =>
              Process.Crash("EventCounter overflowed on release().");
            END;

            (* If we had a sleeper, wake it since it's now going to
               just raise Duplicate when it's turn comes, and we may
               want to give someone else a chance to be the sleeper *)
            IF sleeper # NIL THEN
              Thread.Signal(sleeper.cv);
              sleeper := NIL;
            END;
          ELSE
            minEvent.handler.duplicate();
          END;
        ELSE
          <*ASSERT FALSE*>
        END;
      END;
    END;
  END AdvanceQueue;
These should never happen.
<* FATAL EventPQ.Empty *>

PROCEDURE Release (self: T) =
  VAR
    sleeper   : ThreadWaiting := NIL;
  BEGIN
    LOCK self.wmu DO
      (* Make sure only the owner releases the counter. *)
      IF self.locker = NIL THEN
        Process.Crash(
          "Thread #" (* & Fmt.Int(ThreadF.MyId()) *)
            & " is trying to release an event counter that is not held.\n");
      END;

      (* Increment the value of the event counter. *)
      TRY
        self.val.inc();
      EXCEPT
      | EventNumber.Overflow =>
        Process.Crash("EventCounter overflowed on release().");
      END;
      sleeper := AdvanceQueue(self);

      self.locker := NIL;
    END;

    (* Release the lock, signal a sleeper if one should wake. *)
    self.mu.releaseWrite();
    IF sleeper # NIL THEN Thread.Signal(sleeper.cv); END;
  END Release;

PROCEDURE Set (self: T; val: EventNumber.T) RAISES {Invalid} =
  BEGIN
    LOCK self.wmu DO
      (* Make sure only the owner releases the counter. *)
      IF self.locker = Thread.Self() THEN
        Process.Crash(
          "Thread #" (* & Fmt.Int(ThreadF.MyId()) *)
            & " is trying to set an event counter it already holds.\n");
      END;
    END;
    self.mu.acquireWrite();
    Thread.Acquire(self.wmu);
    (* If the counter is at, or has already passed, this value, raise
       Invalid. *)
    IF val.compare(self.val) <= 0 THEN
      Thread.Release(self.wmu);
      self.mu.releaseWrite();
      RAISE Invalid;
    END;

    (* Set the value of the event counter minus 1, so release will
       leave it at the correct value. *)
    TRY
      self.val := NEW(EventNumWait, wait := FALSE).init(val);
      self.val.dec();
    EXCEPT
    | EventNumber.Overflow => RAISE Invalid;
    END;

    self.locker := Thread.Self();
    Thread.Release(self.wmu);

    (*  we used to lock, set and then unlock.  We now treat set
        similarly to acquire, and require that the programmer call
        release as well.  This stuff is no longer needed:
    sleeper := AdvanceQueue(self);

    Thread.Release(self.wmu);
    self.mu.releaseWrite();
    IF sleeper # NIL THEN Thread.Signal(sleeper.cv); END;
    *)
  END Set;

PROCEDURE Value(self: T): EventNumber.T =
  BEGIN
    LOCK self.wmu DO
      RETURN NEW(EventNumber.T).init(self.val);
    END;
  END Value;

PROCEDURE DefaultHandlerHandle(<*UNUSED*>self: Handler) =
  BEGIN
  END DefaultHandlerHandle;

PROCEDURE DefaultHandlerDuplicate(<*UNUSED*>self: Handler) =
  BEGIN
  END DefaultHandlerDuplicate;

PROCEDURE ToText(self: T): TEXT =
  VAR t := "{";
  BEGIN
    LOCK self.wmu DO
      IF self.locker # NIL THEN t := t & "(locked)" END;
      t := t & "curr=" & self.val.fmt(10) & ",";
      IF self.waiting.size() = 0 THEN
        t := t & "<none blocked>";
      ELSE
        WITH minElt = NARROW(self.waiting.min(), EventPQ.Elt) DO
          t := t & "queue=" & minElt.priority.fmt(10) & "+" &
                   Fmt.Int(self.waiting.size()) & "[";
          WITH arr = self.waiting.heap DO
            FOR i := 1 TO self.waiting.sz DO
              TYPECASE arr[i] OF
              | ThreadWaiting(tw) =>
                t := t & "waiting(" & tw.priority.fmt(10) & ")";
              | EventWaiting(tw) =>
                t := t & "event(" & tw.priority.fmt(10) & ")";
              ELSE <*ASSERT FALSE*>
              END;
            END;
          END;
        END;
      END;
    END;
    RETURN t & "}";
  END ToText;

BEGIN
END EventCounter.