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

/magnus/back_end/Enumerators/include/ORConsequencesEnumerator.h

Go to the documentation of this file.
00001 /*
00002  *   $Id: 
00003  */
00004 
00005 // Copyright (C) 1998 The New York Group Theory Cooperative
00006 // See magnus/doc/COPYRIGHT for the full notice.
00007 
00008 // Contents: 
00009 //
00010 // Principal Author: 
00011 //
00012 // Status: in progress
00013 //
00014 // Revision History:
00015 //
00016 
00017 
00018 #ifndef _OR_CONS_ENUMERATOR_H_
00019 #define _OR_CONS_ENUMERATOR_H_
00020 
00021 
00022 #include "OneRelatorGroup.h"
00023 #include "Supervisor.h"
00024 #include "SMSubgroup.h"
00025 #include "SMEnumerator.h"
00026 #include "File.h"
00027 
00028 
00029 //--------------------------------------------------------------------------//
00030 //---------------------- ORConsequencesEnumeratorARCer ---------------------//
00031 //--------------------------------------------------------------------------//
00032 
00033 
00034 
00035 class ORConsequencesEnumeratorARCer : public EnumeratorARCer
00036 {
00037 public:
00038 
00039   /////////////////////////////////////////////////////////////////////////
00040   //                                                                     //
00041   // Constructors:                                                       //
00042   //                                                                     //
00043   /////////////////////////////////////////////////////////////////////////
00044 
00045   ORConsequencesEnumeratorARCer( ComputationManager& boss,SMListData& d,
00046                                  const OneRelatorGroup& g ) 
00047     : EnumeratorARCer( boss, d ),
00048       theEnumerator( g ),   
00049       theGroup( g ),
00050       counter( 1 ),
00051       numberOfAll( 100 ){ } 
00052   
00053 
00054   /////////////////////////////////////////////////////////////////////////
00055   //                                                                     //
00056   // Accessors:                                                          //
00057   //                                                                     //
00058   /////////////////////////////////////////////////////////////////////////
00059 
00060 
00061   Chars getFileName() const {return file.getFileName();}
00062   // Inherited from ARCer:
00063   // bool takeControl( );
00064   void setNumberOfAll( int n ) { numberOfAll = n; }
00065 
00066   /////////////////////////////////////////////////////////////////////////
00067   //                                                                     //
00068   // IPC interaction members:                                            //
00069   //                                                                     //
00070   /////////////////////////////////////////////////////////////////////////
00071 
00072  
00073   void writeResults( ostream& );
00074 
00075   void readResults( istream& );
00076 
00077 
00078 protected:
00079   
00080   void enumerate();
00081   
00082 private:
00083 
00084 
00085   /////////////////////////////////////////////////////////////////////////
00086   //                                                                     //
00087   // Data Members:                                                       //
00088   //                                                                     //
00089   /////////////////////////////////////////////////////////////////////////
00090   EnumeratorOfConsequences theEnumerator;
00091   OneRelatorGroup theGroup;
00092 
00093   File file;
00094   int counter;
00095   int numberOfAll;
00096 };
00097 
00098 
00099 //--------------------------------------------------------------------------//
00100 //----------------------- ORConsequencesEnumerator -------------------------//
00101 //--------------------------------------------------------------------------//
00102 
00103 class ORConsequencesEnumerator : public  EnumeratorProblem< Word >
00104 {
00105 public:
00106 
00107   /////////////////////////////////////////////////////////////////////////
00108   //                                                                     //
00109   // Constructors:                                                       //
00110   //                                                                     //
00111   /////////////////////////////////////////////////////////////////////////
00112 
00113   ORConsequencesEnumerator( SMFPGroup&);
00114 
00115   /////////////////////////////////////////////////////////////////////////
00116   //                                                                     //
00117   // Front End Interfacing:                                              //
00118   //                                                                     //
00119   /////////////////////////////////////////////////////////////////////////
00120 
00121   void viewStructure(ostream& ostr) const;  // overrides SMObject
00122 
00123   /////////////////////////////////////////////////////////////////////////
00124   //                                                                     //
00125   // Accessors:                                                          //
00126   //                                                                     //
00127   /////////////////////////////////////////////////////////////////////////
00128 
00129   class SMFPGroup& getGroup() const { return theSMFPGroup;}
00130 
00131   /////////////////////////////////////////////////////////////////////////
00132   //                                                                     //
00133   // Control:                                                            //
00134   //                                                                     //
00135   /////////////////////////////////////////////////////////////////////////
00136 
00137   void takeControl( );         // overrides ComputationManager
00138 
00139 
00140   /////////////////////////////////////////////////////////////////////////
00141   //                                                                     //
00142   // State Transitions:                                                  //
00143   //                                                                     //
00144   /////////////////////////////////////////////////////////////////////////
00145 
00146   void start( ) {       // overrides ComputationManager
00147     int totalNum = getParameters().getValue("numberOfAll");
00148     arcer.setNumberOfAll( totalNum );
00149   }       
00150   
00151   void terminate( ) { }       // overrides ComputationManager
00152 
00153   void resume() {
00154     arcer.submitSignal();
00155     
00156     int totalNum = getParameters().getValue("numberOfAll");
00157     arcer.setNumberOfAll( totalNum );
00158 
00159   }
00160 
00161 private:
00162 
00163   /////////////////////////////////////////////////////////////////////////
00164   //                                                                     //
00165   // Data Members:                                                       //
00166   //                                                                     //
00167   /////////////////////////////////////////////////////////////////////////
00168 
00169   SMFPGroup& theSMFPGroup;
00170   ORConsequencesEnumeratorARCer arcer;
00171   bool started;
00172 };
00173 
00174 #endif

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