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

/magnus/back_end/SMApps/include/TTProblem.h

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

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