-*- 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 : Sat Apr 15 17:39:20 1995
* Last Modified By: Blair MacIntyre
* Last Modified On: Thu Jun 18 19:04:27 1998
* Update Count : 137
*
* $Source: /usr/cvs/cm3/doc/help/gen_html/events/src/EventStubLib.m3.html,v $
* $Date: 2003/07/16 13:16:57 $
* $Author: wagner $
* $Revision: 1.2 $
*
* $Log: EventStubLib.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.7 1998/07/02 21:41:13 bm
* small bug fixes
*
* Revision 1.6 1997/08/04 20:15:12 bm
* Fixed BRANDs
*
* Revision 1.5 1997/03/12 21:46:56 bm
* bug fix -- object in same process as sequencer, race condition
*
* Revision 1.4 1997/01/23 15:26:39 bm
* Lots of little bug fixes.
*
*
* HISTORY
* Large parts were gratuitously stolen from the NetObject StubLib.m3.
* The copyright in it is this:
Copyright 1992 Digital Equipment Corporation.
Distributed only by permission.
StubLib.m3
Last modified on Tue Jan 31 08:47:30 PST 1995 by kalsow
modified on Wed Aug 31 16:52:41 PDT 1994 by wobber
modified on Wed Feb 10 17:10:17 PST 1993 by owicki
UNSAFE MODULE EventStubLib EXPORTS EventStubLib, EventProtocol, EventIO;
(* unsafe because of marshalling code *)
IMPORT Pickle2 AS Pickle, Event, EventRd, EventWr, EventHandle, EventNumber,
EventNumberF;
IMPORT Atom, AtomList, Rd, RTType, Wr, Text, (* TextF, *)
Thread, RdClass, WrClass, UnsafeRd, UnsafeWr,
FloatMode, Swap, Text8;
IMPORT IO, Fmt;
REVEAL RdClass.Private <: MUTEX;
REVEAL WrClass.Private <: MUTEX;
Most if not all of the following could be inline in stub code
A Handle
is returned to a client when it wants to send an event.
Clients of Handle
must avoid accessing the streams concurrently,
so we lock the embedded streams before giving them to the client.
REVEAL
Handle = EventHandle.Public BRANDED "EventStubLib.Handle" OBJECT next: Handle END;
Pickle.Reader and Pickle.Writer subtypes and free list headers
TYPE SpecWr = Pickle.Writer OBJECT
next: SpecWr;
END;
TYPE SpecRd = Pickle.Reader OBJECT
next: SpecRd;
END;
VAR mu: MUTEX;
freeWr: SpecWr := NIL;
freeRd: SpecRd := NIL;
freeHandle: Handle := NIL;
PROCEDURE StartCreate() : Handle =
VAR c := NewHandle(Event.New());
BEGIN
c.wr := EventRd.ToWr(c.event.rd);
IF c.wr = NIL THEN
c.wr := NEW(EventWr.T).init();
END;
RETURN c;
END StartCreate;
PROCEDURE EndCreate(c: Handle; id: Byte8; stubProt: StubProtocol;
num: EventNumber.T): Event.T =
VAR ev := c.event;
<*FATAL Wr.Failure, Thread.Alerted *>
BEGIN
ev.init(id, stubProt, num);
Wr.Flush(c.wr);
IF ev.rd # NIL THEN
EVAL ev.rd.init(c.wr);
ELSE
ev.rd := EventRd.New(c.wr);
END;
FreeHandle(c);
RETURN ev;
END EndCreate;
PROCEDURE StartRead(ev: Event.T) : Handle =
VAR c := NewHandle(ev);
BEGIN
ev.addRef();
(* Don't do the seek here -- it's unprotected, and unnecessary *)
(* EVAL ev.rd.seek(0, FALSE); *)
RETURN c;
END StartRead;
PROCEDURE EndRead(c: Handle) =
BEGIN
c.event.dropRef();
FreeHandle(c);
END EndRead;
PROCEDURE NewHandle(ev: Event.T): Handle =
VAR ph: Handle;
BEGIN
LOCK mu DO
IF freeHandle # NIL THEN
ph := freeHandle; freeHandle := freeHandle.next;
ELSE
ph := NEW(Handle, next:=NIL);
END;
END;
ph.event := ev;
ph.cur := 0;
ph.wr := NIL;
RETURN ph;
END NewHandle;
PROCEDURE FreeHandle(h: Handle) =
BEGIN
LOCK mu DO
(* Don't free the event, since we could (conceptually) have
multiple handles on one event. Basically, a handle is either
used to create an event, in which case we don't free it, or
to read an event, in which case there could be multiple
readers. *)
h.event := NIL;
h.wr := NIL;
h.next := freeHandle;
freeHandle := h;
END;
END FreeHandle;
PROCEDURE ChangeNumber(ev: Event.T; en: EventNumber.T) =
BEGIN
(* Assign the new event number. *)
EVAL ev.num.init(en);
ev.hdr.numLo := ev.num.lo;
ev.hdr.numHi := ev.num.hi;
(* Store it in the header in the correct format for the event.
Remember, the data in the event must be in the format of the
sending machine! *)
IF ev.hdr.rep.intFmt # NativeRep.intFmt THEN
IF NOT NativeEndian(ev.hdr.rep) THEN
ev.hdr.numLo := Swap.Swap4(ev.num.lo);
ev.hdr.numHi := Swap.Swap4(ev.num.hi);
END;
END;
END ChangeNumber;
Can't use RdCopy.ToProc(), which this is an almost exact copy of,
since it locks the stream. This means we cannot lock it before the
call, which we need to do to guarantee another reader does not read
some first.
PROCEDURE ToProc (rd : Rd.T;
proc: PROCEDURE (READONLY a: ARRAY OF CHAR)
RAISES {Wr.Failure, Thread.Alerted};
length: CARDINAL := LAST(CARDINAL)): CARDINAL
RAISES {Wr.Failure, Rd.Failure, Thread.Alerted} =
VAR i := 0;
BEGIN
(*RdClass.Lock(rd);*)
EVAL rd.seek(0, FALSE); (* reset so we read it all! *)
TRY
LOOP
WITH len = MIN(length - i, rd.hi - rd.cur) DO
IF len > 0 THEN
proc(SUBARRAY(rd.buff^, rd.st + rd.cur - rd.lo, len));
INC(i, len);
INC(rd.cur, len);
END;
END;
IF i = length OR rd.seek(rd.cur, FALSE) = RdClass.SeekResult.Eof THEN
EXIT;
END;
END;
FINALLY
(*RdClass.Unlock(rd);*)
END;
RETURN i;
END ToProc;
PROCEDURE Write (wr: Wr.T; ev: Event.T)
RAISES {Rd.Failure, Wr.Failure, Thread.Alerted} =
VAR
h: UNTRACED REF MsgHeader;
from := LOOPHOLE(ADR(ev.from), UNTRACED REF ARRAY [0..65535] OF CHAR);
ts := LOOPHOLE(ADR(ev.ts), UNTRACED REF ARRAY [0..65535] OF CHAR);
count: INTEGER := 0;
PROCEDURE PutString (READONLY a: ARRAY OF CHAR)
RAISES {Wr.Failure, Thread.Alerted} =
BEGIN
UnsafeWr.FastPutString(wr, a);
END PutString;
BEGIN
LOCK wr DO
h := LOOPHOLE(ADR(wr.buff[wr.st + wr.cur - wr.lo]),
UNTRACED REF MsgHeader);
IF wr.hi - wr.cur < BYTESIZE(MsgHeader) THEN
RAISE Wr.Failure(AtomList.List1(
Atom.FromText("not enough buffer space")));
END;
h^ := ev.hdr;
INC(wr.cur, BYTESIZE(MsgHeader));
wr.putString(SUBARRAY(from^, 0, NUMBER(ev.from.byte)));
wr.putString(SUBARRAY(ts^, 0, NUMBER(ev.ts.r)));
WITH c = StartRead(ev) DO
TRY
TRY
AcquireRd(c);
count := ToProc(ev.rd, PutString);
EXCEPT
| Event.Error => <*ASSERT FALSE*>
(* should never happen, since AcquireRd should end up
trying to seek(0), if anything, since it's a new handle *)
END;
FINALLY
ReleaseRd(c);
EndRead(c);
END;
END;
(* IO.Put("EventStubLib.Write put " & Fmt.Int(count) & " bytes\n");*)
END;
END Write;
PROCEDURE Read (rd: Rd.T): Event.T RAISES {Event.Error, Rd.Failure,
Thread.Alerted} =
VAR ev := Event.New();
hi, lo: Word32;
BEGIN
IF rd.hi - rd.cur < BYTESIZE(MsgHeader) THEN
WITH hdrChar = LOOPHOLE(ADR(ev.hdr),
UNTRACED REF ARRAY [0..65535] OF CHAR) DO
IF rd.getSub(SUBARRAY(hdrChar^, 0,
BYTESIZE(MsgHeader))) # BYTESIZE(MsgHeader) THEN
RaiseUnmarshalFailure();
END;
END;
ELSE
WITH hdr = LOOPHOLE(ADR(rd.buff[rd.st+rd.cur-rd.lo]),
UNTRACED REF MsgHeader) DO
ev.hdr := hdr^;
INC(rd.cur, BYTESIZE(MsgHeader));
END;
END;
WITH from = LOOPHOLE(ADR(ev.from),
UNTRACED REF ARRAY [0..65535] OF CHAR) DO
IF rd.getSub(SUBARRAY(from^, 0,
NUMBER(ev.from.byte))) # NUMBER(ev.from.byte) THEN
RaiseUnmarshalFailure();
END;
END;
WITH ts = LOOPHOLE(ADR(ev.ts), UNTRACED REF ARRAY [0..65535] OF CHAR) DO
IF rd.getSub(SUBARRAY(ts^, 0, NUMBER(ev.ts.r))) # NUMBER(ev.ts.r) THEN
RaiseUnmarshalFailure();
END;
END;
ev.prot := ev.hdr.prot;
hi := ev.hdr.numHi;
lo := ev.hdr.numLo;
IF ev.hdr.rep.intFmt # NativeRep.intFmt THEN
IF NOT NativeEndian(ev.hdr.rep) THEN
ev.prot := Swap.Swap4(ev.prot);
hi := Swap.Swap4(hi);
lo := Swap.Swap4(lo);
END;
END;
(* ev.num := NEW(EventNumber.T, hi := hi, lo := lo); *)
ev.num.hi := hi;
ev.num.lo := lo;
ev.rd := EventRd.FromRd(rd, ev.rd);
RETURN ev;
END Read;
---------marshalling/unmarshalling routines-----------
PROCEDURE AcquireRd(c: Handle) RAISES {Event.Error, Rd.Failure,
Thread.Alerted} =
BEGIN
Thread.Acquire(c);
WITH rd = c.event.rd DO
Thread.Acquire(rd.extMu);
RdClass.Lock(rd);
IF rd.cur # c.cur THEN
IF rd.seek(c.cur, FALSE) # RdClass.SeekResult.Ready THEN
RaiseUnmarshalFailure();
END;
END;
END;
END AcquireRd;
PROCEDURE ReleaseRd(c: Handle) =
BEGIN
WITH rd = c.event.rd DO
c.cur := rd.cur;
RdClass.Unlock(rd);
Thread.Release(rd.extMu);
Thread.Release(c);
END;
END ReleaseRd;
PROCEDURE FastGetSub(c: Handle; VAR (*OUT*) str: ARRAY OF CHAR): CARDINAL
RAISES {Rd.Failure, Thread.Alerted} =
VAR ret: CARDINAL;
BEGIN
LOCK c DO
WITH rd = c.event.rd DO
LOCK rd.extMu DO
LOCK rd DO
IF rd.cur # c.cur THEN
IF rd.seek(c.cur, FALSE) # RdClass.SeekResult.Ready THEN
(* A CARDINAL guaranteed to be # NUMBER(str) *)
RETURN LAST(CARDINAL)-NUMBER(str);
END;
END;
ret := UnsafeRd.FastGetSub(rd, str);
c.cur := rd.cur;
END;
END;
END;
END;
RETURN ret;
END FastGetSub;
PROCEDURE FastGetChar(c: Handle): CHAR
RAISES {Rd.EndOfFile, Rd.Failure, Thread.Alerted} =
VAR ret: CHAR;
BEGIN
LOCK c DO
WITH rd = c.event.rd DO
LOCK rd.extMu DO
LOCK rd DO
IF rd.cur # c.cur THEN
EVAL rd.seek(c.cur, FALSE);
END;
ret := UnsafeRd.FastGetChar(rd);
c.cur := rd.cur;
END;
END;
END;
END;
RETURN ret;
END FastGetChar;
PROCEDURE InChars(c: Handle; VAR arr: ARRAY OF CHAR)
RAISES {Event.Error, Rd.Failure, Thread.Alerted} =
BEGIN
IF c.event.hdr.rep.charSet # NativeRep.charSet THEN
RaiseUnsupportedDataRep();
END;
IF FastGetSub(c, arr) # NUMBER(arr) THEN
RaiseUnmarshalFailure();
END;
END InChars;
PROCEDURE OutChars(c: Handle; READONLY arr: ARRAY OF CHAR)
RAISES {Wr.Failure, Thread.Alerted} =
BEGIN
c.wr.putString(arr);
END OutChars;
PROCEDURE OutTextI(c: Handle; READONLY t: TEXT)
RAISES {Wr.Failure, Thread.Alerted} =
BEGIN
Wr.PutText(c.wr, t);
END OutTextI;
PROCEDURE InBytes(c: Handle; VAR arr: ARRAY OF Byte8)
RAISES {Event.Error, Rd.Failure, Thread.Alerted} =
VAR p := LOOPHOLE(ADR(arr[0]), UNTRACED REF ARRAY [0..65335] OF CHAR);
BEGIN
IF FastGetSub(c, SUBARRAY(p^, 0, NUMBER(arr))) # NUMBER(arr) THEN
RaiseUnmarshalFailure();
END;
END InBytes;
PROCEDURE OutBytes(c: Handle; READONLY arr: ARRAY OF Byte8)
RAISES {Wr.Failure, Thread.Alerted} =
VAR p := LOOPHOLE(ADR(arr[0]), UNTRACED REF ARRAY [0..65335] OF CHAR);
BEGIN
c.wr.putString(SUBARRAY(p^, 0, NUMBER(arr)));
END OutBytes;
CONST
BigEndianFmt = 16;
IntFmt32Little = 0;
IntFmt64Little = 1;
IntFmt32Big = BigEndianFmt;
IntFmt64Big = BigEndianFmt + 1;
FloatIEEE = 0;
FloatOther = 1;
TYPE
Int64 = ARRAY [0..1] OF Int32;
this code is integer-length dependent
we also rely on the invariant that MsgRd/MsgWr will
provide contiguous 8-byte chunks at proper alignment ..
as long as there is no intervening flush
PROCEDURE InInteger(c: Handle;
min := FIRST(INTEGER);
max := LAST(INTEGER)): INTEGER
RAISES {Event.Error, Rd.Failure, Thread.Alerted} =
VAR i: INTEGER;
BEGIN
WITH e = c.event, hdr = e.hdr, rd = e.rd, rep = hdr.rep DO
TRY
AcquireRd(c);
IF rep.intFmt = NativeRep.intFmt THEN
i := LOOPHOLE(AlignRd(rd, BYTESIZE(INTEGER)), UNTRACED REF INTEGER)^;
INC(rd.cur, BYTESIZE(INTEGER));
ELSE
CASE rep.intFmt OF
| IntFmt32Little, IntFmt32Big =>
VAR ii: Int32 :=
LOOPHOLE(AlignRd(rd, BYTESIZE(Int32)), UNTRACED REF Int32)^;
BEGIN
INC(rd.cur, BYTESIZE(Int32));
IF NOT NativeEndian(rep) THEN ii := Swap.Swap4(ii); END;
i := ii;
END;
| IntFmt64Little =>
(* this can only be 64 -> 32 bit conversion *)
(* no 64 -> 64 bit byte swap at this point in time *)
VAR
ip := LOOPHOLE(AlignRd(rd, BYTESIZE(Int64)), UNTRACED REF Int64);
BEGIN
INC(rd.cur, BYTESIZE(Int64));
IF (ip[0] < 0 AND ip[1] # -1) OR (ip[0] >= 0 AND ip[1] # 0) THEN
RaiseUnsupportedDataRep();
END;
IF NativeEndian(rep) THEN
i := ip[0];
ELSE
i := Swap.Swap4(ip[0]);
END;
END;
ELSE
RaiseUnsupportedDataRep();
END;
END;
IF i < min OR i > max THEN RaiseUnmarshalFailure(); END;
RETURN i;
FINALLY
ReleaseRd(c);
END;
END;
END InInteger;
PROCEDURE InInt32(c: Handle;
min := FIRST(Int32);
max := LAST(Int32)): Int32
RAISES {Event.Error, Rd.Failure, Thread.Alerted} =
VAR i: Int32;
BEGIN
WITH e = c.event, hdr = e.hdr, rd = e.rd, rep = hdr.rep DO
TRY
AcquireRd(c);
IF rep.intFmt = NativeRep.intFmt THEN
i := LOOPHOLE(AlignRd(rd, BYTESIZE(Int32)), UNTRACED REF Int32)^;
INC(rd.cur, BYTESIZE(Int32));
ELSE
CASE rep.intFmt OF
| IntFmt32Little, IntFmt32Big, IntFmt64Little =>
i := LOOPHOLE(AlignRd(rd, BYTESIZE(Int32)), UNTRACED REF Int32)^;
INC(rd.cur, BYTESIZE(Int32));
IF NOT NativeEndian(rep) THEN i := Swap.Swap4(i); END;
ELSE
RaiseUnsupportedDataRep();
END;
END;
IF i < min OR i > max THEN RaiseUnmarshalFailure(); END;
RETURN i;
FINALLY
ReleaseRd(c);
END;
END;
END InInt32;
PROCEDURE AlignRd(rd: Rd.T; nb: CARDINAL) : ADDRESS
RAISES {Event.Error, Rd.Failure, Thread.Alerted} =
VAR diff := rd.cur MOD nb;
res: ADDRESS;
BEGIN
(*
* Original comment said
* "Here we rely on the alignment invariants of MsgRd.T"
* I think that the invariants are held for "EventRd.T", but I'm
* not positive. Time will tell.
*)
IF diff # 0 THEN
VAR n := rd.cur + nb - diff; BEGIN
IF n > rd.hi THEN RaiseUnmarshalFailure(); END;
rd.cur := n;
END;
END;
IF rd.cur = rd.hi THEN EVAL rd.seek(rd.cur, FALSE); END;
IF rd.hi - rd.cur < nb THEN RaiseUnmarshalFailure(); END;
res := ADR(rd.buff[rd.st + rd.cur - rd.lo]);
RETURN res;
END AlignRd;
(*
A MsgRd fragment must be 64-bit aligned. Fragments of types call, return,
or call-failed, must either be a multiple of 8 bytes in length, or else
contain the end-of-message. MsgRd buffers must be 64-bit aligned in
length.
*)
(* NOTE: The previous comment, again, is not very relevant. Our
EventRd buffers are 64-bit aligned, but definition. Each
message is in it's own EventRd.T, so its header is definately
aligned.
*)
PROCEDURE OutInteger(c: Handle; i: INTEGER)
RAISES {Wr.Failure, Thread.Alerted} =
VAR ip := LOOPHOLE(AlignWr(c.wr, BYTESIZE(INTEGER)), UNTRACED REF INTEGER);
BEGIN
ip^ := i;
INC(c.wr.cur, BYTESIZE(INTEGER));
END OutInteger;
PROCEDURE OutEventNumber(c: Handle; n: EventNumber.T)
RAISES {Wr.Failure, Thread.Alerted} =
BEGIN
OutInteger(c, n.lo);
OutInteger(c, n.hi);
END OutEventNumber;
PROCEDURE InEventNumber(c: Handle): EventNumber.T
RAISES {Event.Error, Rd.Failure, Thread.Alerted} =
BEGIN
RETURN NEW(EventNumber.T, lo := InInteger(c), hi := InInteger(c));
END InEventNumber;
PROCEDURE OutInt32(c: Handle; i: Int32)
RAISES {Wr.Failure, Thread.Alerted} =
VAR ip := LOOPHOLE(AlignWr(c.wr, BYTESIZE(Int32)), UNTRACED REF Int32);
BEGIN
ip^ := i;
INC(c.wr.cur, BYTESIZE(Int32));
END OutInt32;
PROCEDURE AlignWr(wr: Wr.T; align: CARDINAL) : ADDRESS
RAISES {Wr.Failure, Thread.Alerted} =
VAR diff := wr.cur MOD align;
res: ADDRESS;
BEGIN
(*
* Original comment said
* "here we rely on the alignment invariants of MsgWr.T"
* I think that the invariants are held for "EventWr.T", but I'm
* not positive. Time will tell.
*)
IF diff # 0 THEN INC(wr.cur, align-diff); END;
IF wr.cur = wr.hi THEN wr.seek(wr.cur); END;
res := ADR(wr.buff[wr.st + wr.cur - wr.lo]);
RETURN res;
END AlignWr;
(*
A MsgWr fragment must be 64-bit aligned. Fragments of types call, return,
or call-failed, must either be a multiple of 8 bytes in length, or else
contain the end-of-message. MsgWr buffers must be 64-bit aligned in
length.
*)
(* NOTE: The previous comment, again, is not very relevant. Our
EventWr buffers are 64-bit aligned, but definition. Each
message is written into a new EventWr.T, so its header is definately
aligned.
*)
PROCEDURE InByte(c: Handle;
max := LAST(Byte8)): Byte8
RAISES {Event.Error, Rd.Failure, Thread.Alerted} =
VAR b: Byte8;
BEGIN
TRY
b := LOOPHOLE(FastGetChar(c), Byte8);
EXCEPT
| Rd.EndOfFile => RaiseUnmarshalFailure();
END;
IF b > max THEN
RaiseUnmarshalFailure();
END;
RETURN b
END InByte;
PROCEDURE OutByte(c: Handle; b: Byte8)
RAISES {Wr.Failure, Thread.Alerted} =
BEGIN
UnsafeWr.FastPutChar(c.wr, LOOPHOLE(b, CHAR));
END OutByte;
TYPE MSpec = {Pickle, Text, Texts};
PROCEDURE InRef(c: Handle; tc: INTEGER): REFANY
RAISES {Event.Error, Rd.Failure, Thread.Alerted} =
VAR r: REFANY;
srd: SpecRd;
BEGIN
CASE InByte(c) OF
| ORD(MSpec.Pickle) =>
TRY
srd := NewRd(c);
VAR ok := FALSE; BEGIN
TRY
AcquireRd(c);
RdClass.Unlock(c.event.rd);
r := srd.read();
ok := TRUE;
FINALLY
IF ok THEN FreeRd(srd); END;
RdClass.Lock(c.event.rd);
ReleaseRd(c);
END;
END;
EXCEPT
| Rd.EndOfFile => RaiseUnmarshalFailure();
| Pickle.Error(cause) =>
RAISE Event.Error(
AtomList.List2(UnmarshalFailure, Atom.FromText(cause)));
END;
IF tc # -1 AND NOT RTType.IsSubtype(TYPECODE(r), tc) THEN
RaiseUnmarshalFailure();
END;
| ORD(MSpec.Text) => r := InText(c);
| ORD(MSpec.Texts) => r := InTexts(c);
ELSE RaiseUnmarshalFailure();
END;
RETURN r;
END InRef;
PROCEDURE OutRef(c: Handle; r: REFANY)
RAISES {Wr.Failure, Thread.Alerted} =
BEGIN
TYPECASE r OF
| TEXT(x) => OutByte(c, ORD(MSpec.Text)); OutText(c, x);
| REF ARRAY OF TEXT(x) => OutByte(c, ORD(MSpec.Texts)); OutTexts(c, x);
ELSE
OutByte(c, ORD(MSpec.Pickle));
TRY
VAR swr := NewWr(c); ok := FALSE; BEGIN
TRY
swr.write(r);
ok := TRUE;
FINALLY
IF ok THEN FreeWr(swr); END;
END;
END;
EXCEPT
| Pickle.Error(cause) =>
RAISE Wr.Failure(AtomList.List1(Atom.FromText(cause)));
END;
END;
END OutRef;
PROCEDURE InCardinal(c: Handle;
lim: CARDINAL := LAST(CARDINAL)): CARDINAL
RAISES {Event.Error, Rd.Failure, Thread.Alerted} =
BEGIN
RETURN InInteger(c, 0, lim);
END InCardinal;
PROCEDURE OutCardinal(c: Handle; card: CARDINAL)
RAISES {Wr.Failure, Thread.Alerted} =
BEGIN
OutInteger(c, card);
END OutCardinal;
PROCEDURE InReal(c: Handle): REAL
RAISES {Event.Error, Rd.Failure, Thread.Alerted} =
VAR i: REAL;
BEGIN
IF c.event.hdr.rep.floatFmt # NativeRep.floatFmt THEN
RaiseUnsupportedDataRep();
END;
IF FastGetSub(c, LOOPHOLE(i, ARRAY [0..BYTESIZE(REAL)-1] OF CHAR)) #
BYTESIZE(REAL) THEN
RaiseUnmarshalFailure();
END;
IF NOT NativeEndian(c.event.hdr.rep) THEN i := SwapReal(i); END;
RETURN i;
END InReal;
PROCEDURE OutReal(c: Handle; i: REAL)
RAISES {Wr.Failure, Thread.Alerted} =
BEGIN
c.wr.putString(LOOPHOLE(i, ARRAY [0..BYTESIZE(REAL)-1] OF CHAR));
END OutReal;
PROCEDURE InLongreal(c: Handle): LONGREAL
RAISES {Event.Error, Rd.Failure, Thread.Alerted} =
VAR i: LONGREAL;
BEGIN
IF c.event.hdr.rep.floatFmt # NativeRep.floatFmt THEN
RaiseUnsupportedDataRep();
END;
IF FastGetSub(c,
LOOPHOLE(i, ARRAY [0..BYTESIZE(LONGREAL)-1] OF CHAR)) #
BYTESIZE(LONGREAL) THEN
RaiseUnmarshalFailure();
END;
IF NOT NativeEndian(c.event.hdr.rep) THEN i := SwapLongReal(i); END;
RETURN i;
END InLongreal;
PROCEDURE OutLongreal(c: Handle; i: LONGREAL)
RAISES {Wr.Failure, Thread.Alerted} =
BEGIN
c.wr.putString(LOOPHOLE(i, ARRAY [0..BYTESIZE(LONGREAL)-1] OF CHAR));
END OutLongreal;
PROCEDURE InExtended(c: Handle): EXTENDED
RAISES {Event.Error, Rd.Failure, Thread.Alerted} =
BEGIN
RETURN LOOPHOLE(InLongreal(c), EXTENDED);
END InExtended;
PROCEDURE OutExtended(c: Handle; i: EXTENDED)
RAISES {Wr.Failure, Thread.Alerted} =
BEGIN
c.wr.putString(LOOPHOLE(i, ARRAY [0..BYTESIZE(EXTENDED)-1] OF CHAR));
END OutExtended;
PROCEDURE InBoolean(c: Handle) : BOOLEAN
RAISES {Event.Error, Rd.Failure, Thread.Alerted} =
VAR res: BOOLEAN;
BEGIN
TRY
res := FastGetChar(c) # '\000';
EXCEPT
| Rd.EndOfFile => RaiseUnmarshalFailure();
END;
RETURN res;
END InBoolean;
PROCEDURE OutBoolean(c: Handle; bool: BOOLEAN)
RAISES {Wr.Failure, Thread.Alerted} =
BEGIN
IF bool THEN
UnsafeWr.FastPutChar(c.wr, '\001');
ELSE
UnsafeWr.FastPutChar(c.wr, '\000');
END;
END OutBoolean;
PROCEDURE InText(c: Handle) : TEXT
RAISES {Event.Error, Rd.Failure, Thread.Alerted} =
VAR len: INTEGER;
VAR text: TEXT;
VAR buf: REF ARRAY OF CHAR;
BEGIN
len := InInt32(c);
IF len = -1 THEN
RETURN NIL;
ELSIF len < 0 THEN
RaiseUnmarshalFailure();
ELSE
buf := NEW(REF ARRAY OF CHAR, len+1);
InChars(c, buf^);
buf[len] := '\000';
text := Text8.New(buf^);
END;
RETURN text;
END InText;
PROCEDURE OutText(c: Handle; text: TEXT)
RAISES {Wr.Failure, Thread.Alerted} =
VAR len: INTEGER;
BEGIN
IF text # NIL THEN
len := Text.Length(text);
ELSE
len := -1;
END;
OutInt32(c, len);
IF len > 0 THEN OutTextI(c, text); END;
END OutText;
PROCEDURE InTexts(c: Handle) : REF ARRAY OF TEXT
RAISES {Event.Error, Rd.Failure, Thread.Alerted} =
VAR n: CARDINAL;
VAR rt: REF ARRAY OF TEXT;
BEGIN
n := InInt32(c, 0);
IF n = 0 THEN
RETURN NIL;
END;
rt := NEW(REF ARRAY OF TEXT, n);
IF n > 0 THEN
FOR i := 0 TO n-1 DO rt[i] := InText(c); END;
END;
RETURN rt;
END InTexts;
PROCEDURE OutTexts(c: Handle; rt: REF ARRAY OF TEXT)
RAISES {Wr.Failure, Thread.Alerted} =
VAR n: CARDINAL;
BEGIN
IF (rt = NIL) THEN n := 0 ELSE n := NUMBER(rt^); END;
OutInt32(c, n);
IF n > 0 THEN
FOR i := 0 TO n-1 DO OutText(c, rt[i]); END;
END;
END OutTexts;
Procedures for Pickling -- free list management
PROCEDURE IsEventWriter(wr: Pickle.Writer): BOOLEAN =
BEGIN
RETURN ISTYPE(wr, SpecWr);
END IsEventWriter;
PROCEDURE IsEventReader(rd: Pickle.Reader): BOOLEAN =
BEGIN
RETURN ISTYPE(rd, SpecRd);
END IsEventReader;
PROCEDURE NewWr(c: Handle): SpecWr =
VAR pwr: SpecWr;
BEGIN
LOCK mu DO
IF freeWr # NIL THEN
pwr := freeWr; freeWr := freeWr.next;
ELSE
pwr := NEW(SpecWr, next:=NIL);
END;
END;
pwr.wr := c.wr;
RETURN pwr
END NewWr;
PROCEDURE FreeWr(pwr: SpecWr) =
BEGIN
LOCK mu DO
pwr.next := freeWr;
pwr.wr := NIL;
freeWr := pwr;
END;
END FreeWr;
PROCEDURE NewRd(c: Handle): SpecRd =
VAR prd: SpecRd;
BEGIN
LOCK mu DO
IF freeRd # NIL THEN
prd := freeRd; freeRd := freeRd.next;
ELSE
prd := NEW(SpecRd, next:=NIL);
END;
END;
prd.rd := c.event.rd;
RETURN prd
END NewRd;
PROCEDURE FreeRd(prd: SpecRd) =
BEGIN
LOCK mu DO
prd.rd := NIL;
prd.next := freeRd;
freeRd := prd;
END;
END FreeRd;
PROCEDURE RaiseUnmarshalFailure() RAISES {Event.Error} =
BEGIN
RaiseError(UnmarshalFailure);
END RaiseUnmarshalFailure;
PROCEDURE RaiseUnsupportedDataRep() RAISES {Event.Error} =
BEGIN
RaiseError(UnsupportedDataRep);
END RaiseUnsupportedDataRep;
PROCEDURE RaiseError(a: Atom.T) RAISES {Event.Error} =
BEGIN
RAISE Event.Error(AtomList.List1(a));
END RaiseError;
PROCEDURE SwapReal(i: REAL) : REAL =
BEGIN
RETURN LOOPHOLE(Swap.Swap4(LOOPHOLE(i, Int32)), REAL);
END SwapReal;
TYPE LR = RECORD a, b: Int32; END;
PROCEDURE SwapLongReal(i: LONGREAL) : LONGREAL =
VAR res: LONGREAL;
BEGIN
WITH p = LOOPHOLE(ADR(i), UNTRACED REF LR) DO
WITH r = LOOPHOLE(ADR(res), UNTRACED REF LR) DO
r.a := Swap.Swap4(p.b);
r.b := Swap.Swap4(p.a);
END;
END;
RETURN res;
END SwapLongReal;
PROCEDURE NativeEndian(rep: DataRep) : BOOLEAN =
BEGIN
RETURN (rep.intFmt >= BigEndianFmt) = (Swap.endian = Swap.Endian.Big);
END NativeEndian;
PROCEDURE ChooseIntFmt(): Byte8 =
BEGIN
IF BYTESIZE(INTEGER) = 8 THEN
IF Swap.endian = Swap.Endian.Little THEN
RETURN IntFmt64Little;
ELSE
RETURN IntFmt64Big;
END;
ELSE
IF Swap.endian = Swap.Endian.Little THEN
RETURN IntFmt32Little;
ELSE
RETURN IntFmt32Big;
END;
END;
END ChooseIntFmt;
PROCEDURE ChooseFloatFmt(): Byte8 =
BEGIN
IF FloatMode.IEEE THEN
RETURN FloatIEEE;
ELSE
RETURN FloatOther;
END;
END ChooseFloatFmt;
BEGIN
NativeRep := DataRep{id := 0,
intFmt := ChooseIntFmt(),
charSet := 0,
floatFmt := ChooseFloatFmt()};
UnmarshalFailure := Atom.FromText("EventStubLib.UnmarshalFailure");
UnsupportedDataRep := Atom.FromText("EventStubLib.UnsupportedDataRep");
(* Initialization for Pickle specials and free list *)
mu := NEW(MUTEX);
(* IO.Put("EventStubLib.m3 Initialization: NativeRep=0+" &
Fmt.Int(NativeRep.intFmt, 16) & "+" &
Fmt.Int(NativeRep.floatFmt, 16) & "+0\n"); *)
END EventStubLib.