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

/magnus/back_end/SMApps/include/AGModule.h

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

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