Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

/magnus/back_end/SMApps/include/KBModule.h

Go to the documentation of this file.
00001 /*
00002  *   $Id: KBModule.h,v 1.1.1.1 1996/12/05 19:45:05 bormotov Exp $
00003  */
00004  
00005 // Copyright (C) 1995 The New York Group Theory Cooperative
00006 // See magnus/doc/COPYRIGHT for the full notice.
00007 //
00008 // Contents: Declarations of classes KBSupervisor, KBProblem
00009 //
00010 // Principal Author: Dmitry Bormotov
00011 //
00012 // Status: in progress
00013 //
00014 // Revision History:
00015 //
00016 // * 7/96 Dmitry B. made porting to gcc 2.7.2.
00017 //
00018 
00019 
00020 #ifndef _KBMODULE_H_
00021 #define _KBMODULE_H_
00022 
00023 #include <signal.h>
00024 #include <unistd.h>
00025 #include "Timer.h"
00026 
00027 #include "Supervisor.h"
00028 #include "RKBPackage.h"
00029 #include "KBMachine.h"
00030 #include "List.h"
00031 #include "ARCer.h"
00032 #include "FPGroup.h"
00033 
00034 
00035 // ------------------------ KBSupervisorARCer ------------------------------ //
00036 
00037 
00038 class KBSupervisorARCer : public ARCer
00039 {
00040 public:
00041 
00042   /////////////////////////////////////////////////////////////////////////
00043   //                                                                     //
00044   // Constructors:                                                       //
00045   //                                                                     //
00046   /////////////////////////////////////////////////////////////////////////
00047 
00048   KBSupervisorARCer( ComputationManager& boss ) : ARCer( boss ) { } 
00049 
00050 
00051   /////////////////////////////////////////////////////////////////////////
00052   //                                                                     //
00053   // Accessors:                                                          //
00054   //                                                                     //
00055   /////////////////////////////////////////////////////////////////////////
00056 
00057   void setArguments( const FPGroup& );
00058 
00059   // Inherited from ARCer:
00060   // bool takeControl( );
00061 
00062   KBMachine getKBMachine() { return KBM; }
00063 
00064   
00065   /////////////////////////////////////////////////////////////////////////
00066   //                                                                     //
00067   // IPC interaction members:                                            //
00068   //                                                                     //
00069   /////////////////////////////////////////////////////////////////////////
00070 
00071   void runComputation( );
00072  
00073   void writeResults( ostream& );
00074 
00075   void readResults( istream& );
00076 
00077 
00078 private:
00079 
00080   /////////////////////////////////////////////////////////////////////////
00081   //                                                                     //
00082   // Data Members:                                                       //
00083   //                                                                     //
00084   /////////////////////////////////////////////////////////////////////////
00085 
00086   FPGroup G;
00087 
00088   RKBPackage* RKBP;
00089   // Wraps the Rutgers Knuth-Bendix Package.
00090 
00091   KBMachine KBM;
00092 
00093 };
00094 
00095 
00096 //--------------------------- KBSupervisor ----------------------------------//
00097 
00098 
00099 class KBSupervisor : public ComputationManager
00100 {
00101 public:
00102 
00103   /////////////////////////////////////////////////////////////////////////
00104   //                                                                     //
00105   // Constructors:                                                       //
00106   //                                                                     //
00107   /////////////////////////////////////////////////////////////////////////
00108 
00109   KBSupervisor(class GCM& gcm);
00110 
00111    
00112   /////////////////////////////////////////////////////////////////////////
00113   //                                                                     //
00114   // Accessors:                                                          //
00115   //                                                                     //
00116   /////////////////////////////////////////////////////////////////////////
00117 
00118   /////////////////////////////////////////////////////////////////////////
00119   //                                                                     //
00120   // Front End Interfacing:                                              //
00121   //                                                                     //
00122   /////////////////////////////////////////////////////////////////////////
00123 
00124   void viewStructure(ostream& ostr) const { }  // overrides SMObject
00125 
00126   /////////////////////////////////////////////////////////////////////////
00127   //                                                                     //
00128   // Control:                                                            //
00129   //                                                                     //
00130   /////////////////////////////////////////////////////////////////////////
00131 
00132   void takeControl( );         // overrides ComputationManager
00133 
00134   /////////////////////////////////////////////////////////////////////////
00135   //                                                                     //
00136   // State Transitions:                                                  //
00137   //                                                                     //
00138   /////////////////////////////////////////////////////////////////////////
00139 
00140   void start( );              // overrides ComputationManager
00141 
00142   void terminate( );          // overrides ComputationManager
00143 
00144   
00145 private:
00146 
00147   /////////////////////////////////////////////////////////////////////////
00148   //                                                                     //
00149   // Data Members:                                                       //
00150   //                                                                     //
00151   /////////////////////////////////////////////////////////////////////////
00152 
00153   SMFPGroup& theGroup;
00154 
00155   KBSupervisorARCer arcer;
00156 };
00157 
00158 
00159 //---------------------------- KBProblem ------------------------------------//
00160 
00161 
00162 class KBProblem : public Supervisor
00163 {
00164 public:
00165 
00166   /////////////////////////////////////////////////////////////////////////
00167   //                                                                     //
00168   // Constructors:                                                       //
00169   //                                                                     //
00170   /////////////////////////////////////////////////////////////////////////
00171 
00172   KBProblem(class SMFPGroup& G);
00173 
00174   /////////////////////////////////////////////////////////////////////////
00175   //                                                                     //
00176   // Front End Interfacing:                                              //
00177   //                                                                     //
00178   /////////////////////////////////////////////////////////////////////////
00179 
00180   void viewStructure(ostream& ostr) const;  // overrides SMObject
00181 
00182   /////////////////////////////////////////////////////////////////////////
00183   //                                                                     //
00184   // Control:                                                            //
00185   //                                                                     //
00186   /////////////////////////////////////////////////////////////////////////
00187 
00188   void takeControl( );         // overrides ComputationManager
00189 
00190   /////////////////////////////////////////////////////////////////////////
00191   //                                                                     //
00192   // State Transitions:                                                  //
00193   //                                                                     //
00194   /////////////////////////////////////////////////////////////////////////
00195 
00196   void start( );              // overrides ComputationManager
00197 
00198   void terminate( ) { };      // overrides ComputationManager
00199 
00200 
00201 private:
00202 
00203   /////////////////////////////////////////////////////////////////////////
00204   //                                                                     //
00205   // Data Members:                                                       //
00206   //                                                                     //
00207   /////////////////////////////////////////////////////////////////////////
00208 
00209   SMFPGroup& theGroup;
00210 
00211   MirrorSubordinate kbSupervisor;
00212 
00213 };
00214 
00215 #endif

Generated at Tue Jun 19 09:49:42 2001 for Magnus Classes by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001