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

/magnus/back_end/SMApps/include/EquationsInFPProblem.h

Go to the documentation of this file.
00001 /*
00002  *   $Id: EquationsInFPProblem.h,v 1.2 2000/02/28 21:56:45 bormotov Exp $
00003  */
00004 
00005 // Copyright (C) 2000 The New York Group Theory Cooperative
00006 // See magnus/doc/COPYRIGHT for the full notice.
00007 
00008 // Contents: Declaration of the EqSystemInAbelianARCe, EqSystemInAbelianCM,
00009 //           EqSystemInFPProblem, EquationInAbelianCM, EquationInFPProblem 
00010 //           classes.
00011 //
00012 // Principal Authors: Denis Serbin
00013 //
00014 // Status: In progress
00015 //
00016 // Revision History:
00017 //
00018 // Special Notes:
00019 //
00020 //
00021 
00022 #ifndef _EquationsInFP_h_
00023 #define _EquationsInFP_h_
00024 
00025 #include "SMEqSystem.h"
00026 #include "AbelianEquations.h"
00027 
00028 
00029 //--------------------------EqSystemInAbelianARCer-------------------------//
00030 
00031 class EqSystemInAbelianARCer : public ARCer
00032 {
00033 public:
00034 
00035   /////////////////////////////////////////////////////////////////////////
00036   //                                                                     //
00037   // Constructors:                                                       //
00038   //                                                                     //
00039   /////////////////////////////////////////////////////////////////////////
00040   
00041   EqSystemInAbelianARCer( ComputationManager& boss ) 
00042     : ARCer( boss ),
00043       retValue( 0 ),
00044       file()
00045     { } 
00046   
00047   void setArguments( const AbelianEquationsSolver& );
00048   
00049   ~EqSystemInAbelianARCer()
00050     {
00051       file << end;
00052     }
00053 
00054   /////////////////////////////////////////////////////////////////////////
00055   //                                                                     //
00056   // Accessors:                                                          //
00057   //                                                                     //
00058   /////////////////////////////////////////////////////////////////////////
00059   
00060   Chars getFileName() const
00061     { return file.getFileName(); }
00062   
00063   // Inherited from ARCer:
00064   // bool takeControl( );
00065  
00066   bool getRetValue() const
00067     { return retValue; }
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   File file;
00091   bool retValue;
00092   AbelianEquationsSolver AES;
00093 };
00094 
00095 //---------------------------EqSystemInAbelianCM-----------------------------//
00096 
00097 class EqSystemInAbelianCM : public ComputationManager
00098 {
00099 public:
00100 
00101   /////////////////////////////////////////////////////////////////////////
00102   //                                                                     //
00103   // Constructors:                                                       //
00104   //                                                                     //
00105   /////////////////////////////////////////////////////////////////////////
00106   
00107   EqSystemInAbelianCM( class EqSystemInFPProblem& p );
00108   
00109   /////////////////////////////////////////////////////////////////////////
00110   //                                                                     //
00111   // Accessors:                                                          //
00112   //                                                                     //
00113   /////////////////////////////////////////////////////////////////////////
00114   
00115   Chars getFileName() const { return arcer.getFileName(); }
00116 
00117   Trichotomy haveSolutions() const { return answer; }
00118   
00119   /////////////////////////////////////////////////////////////////////////
00120   //                                                                     //
00121   // Front End Interfacing:                                              //
00122   //                                                                     //
00123   /////////////////////////////////////////////////////////////////////////
00124   
00125   void viewStructure(ostream& ostr) const { }  // overrides SMObject
00126 
00127   /////////////////////////////////////////////////////////////////////////
00128   //                                                                     //
00129   // Control:                                                            //
00130   //                                                                     //
00131   /////////////////////////////////////////////////////////////////////////
00132 
00133   void takeControl( );  // overrides ComputationManager
00134 
00135   /////////////////////////////////////////////////////////////////////////
00136   //                                                                     //
00137   // State Transitions:                                                  //
00138   //                                                                     //
00139   /////////////////////////////////////////////////////////////////////////
00140 
00141   void start( ) { }              // overrides ComputationManager
00142   
00143   void terminate( ) { }       // overrides ComputationManager
00144 
00145 private:
00146   
00147   /////////////////////////////////////////////////////////////////////////
00148   //                                                                     //
00149   // Data Members:                                                       //
00150   //                                                                     //
00151   /////////////////////////////////////////////////////////////////////////
00152 
00153   SMEqSystem& theSystem;
00154   EqSystemInAbelianARCer arcer;
00155   
00156   bool answer;
00157 };
00158 
00159 //--------------------------EqSystemInFPProblem-------------------------//
00160 
00161 class EqSystemInFPProblem : public Supervisor
00162 {
00163 public:
00164 
00165   /////////////////////////////////////////////////////////////////////////
00166   //                                                                     //
00167   // Constructors:                                                       //
00168   //                                                                     //
00169   /////////////////////////////////////////////////////////////////////////
00170   
00171   EqSystemInFPProblem( SMEqSystem& s );
00172 
00173   /////////////////////////////////////////////////////////////////////////
00174   //                                                                     //
00175   // Accessors:                                                          //
00176   //                                                                     //
00177   /////////////////////////////////////////////////////////////////////////
00178 
00179   SMEqSystem& getSystem() const { return theSystem; }
00180   
00181   /////////////////////////////////////////////////////////////////////////
00182   //                                                                     //
00183   // Front End Interfacing:                                              //
00184   //                                                                     //
00185   /////////////////////////////////////////////////////////////////////////
00186 
00187   void viewStructure(ostream& ostr) const;  // overrides SMObject
00188 
00189   /////////////////////////////////////////////////////////////////////////
00190   //                                                                     //
00191   // Control:                                                            //
00192   //                                                                     //
00193   /////////////////////////////////////////////////////////////////////////
00194 
00195   void takeControl( );  // overrides ComputationManager
00196 
00197 private:
00198   
00199   /////////////////////////////////////////////////////////////////////////
00200   //                                                                     //
00201   // Data Members:                                                       //
00202   //                                                                     //
00203   /////////////////////////////////////////////////////////////////////////
00204 
00205   SMEqSystem& theSystem;
00206   
00207   Subordinate<EqSystemInFPProblem , EqSystemInAbelianCM> abelianCM;
00208 };
00209 
00210 
00211 //---------------------------EquationInAbelianCM-----------------------------//
00212 
00213 class EquationInAbelianCM : public ComputationManager
00214 {
00215 public:
00216 
00217   /////////////////////////////////////////////////////////////////////////
00218   //                                                                     //
00219   // Constructors:                                                       //
00220   //                                                                     //
00221   /////////////////////////////////////////////////////////////////////////
00222   
00223   EquationInAbelianCM( class EquationInFPProblem& p );
00224   
00225   /////////////////////////////////////////////////////////////////////////
00226   //                                                                     //
00227   // Accessors:                                                          //
00228   //                                                                     //
00229   /////////////////////////////////////////////////////////////////////////
00230   
00231   Chars getFileName() const { return arcer.getFileName(); }
00232 
00233   Trichotomy haveSolutions() const { return answer; }
00234   
00235   /////////////////////////////////////////////////////////////////////////
00236   //                                                                     //
00237   // Front End Interfacing:                                              //
00238   //                                                                     //
00239   /////////////////////////////////////////////////////////////////////////
00240   
00241   void viewStructure(ostream& ostr) const { }  // overrides SMObject
00242 
00243   /////////////////////////////////////////////////////////////////////////
00244   //                                                                     //
00245   // Control:                                                            //
00246   //                                                                     //
00247   /////////////////////////////////////////////////////////////////////////
00248 
00249   void takeControl( );  // overrides ComputationManager
00250 
00251   /////////////////////////////////////////////////////////////////////////
00252   //                                                                     //
00253   // State Transitions:                                                  //
00254   //                                                                     //
00255   /////////////////////////////////////////////////////////////////////////
00256 
00257   void start( ) { }              // overrides ComputationManager
00258   
00259   void terminate( ) { }       // overrides ComputationManager
00260 
00261 private:
00262   
00263   /////////////////////////////////////////////////////////////////////////
00264   //                                                                     //
00265   // Data Members:                                                       //
00266   //                                                                     //
00267   /////////////////////////////////////////////////////////////////////////
00268 
00269   SMEquation2& theEquation;
00270   EqSystemInAbelianARCer arcer;
00271   
00272   bool answer;
00273 };
00274 
00275 //--------------------------EquationInFPProblem-------------------------//
00276 
00277 class EquationInFPProblem : public Supervisor
00278 {
00279 public:
00280 
00281   /////////////////////////////////////////////////////////////////////////
00282   //                                                                     //
00283   // Constructors:                                                       //
00284   //                                                                     //
00285   /////////////////////////////////////////////////////////////////////////
00286   
00287   EquationInFPProblem( SMEquation2& s );
00288 
00289   /////////////////////////////////////////////////////////////////////////
00290   //                                                                     //
00291   // Accessors:                                                          //
00292   //                                                                     //
00293   /////////////////////////////////////////////////////////////////////////
00294 
00295   SMEquation2& getEquation() const { return theEquation; }
00296   
00297   /////////////////////////////////////////////////////////////////////////
00298   //                                                                     //
00299   // Front End Interfacing:                                              //
00300   //                                                                     //
00301   /////////////////////////////////////////////////////////////////////////
00302 
00303   void viewStructure(ostream& ostr) const;  // overrides SMObject
00304 
00305   /////////////////////////////////////////////////////////////////////////
00306   //                                                                     //
00307   // Control:                                                            //
00308   //                                                                     //
00309   /////////////////////////////////////////////////////////////////////////
00310 
00311   void takeControl( );  // overrides ComputationManager
00312 
00313 private:
00314   
00315   /////////////////////////////////////////////////////////////////////////
00316   //                                                                     //
00317   // Data Members:                                                       //
00318   //                                                                     //
00319   /////////////////////////////////////////////////////////////////////////
00320 
00321   SMEquation2& theEquation;
00322   
00323   Subordinate<EquationInFPProblem , EquationInAbelianCM> abelianCM;
00324 };
00325 
00326 #endif

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