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

/magnus/back_end/SMApps/include/FNWP.h

Go to the documentation of this file.
00001 /*
00002  *   $Id: FNWP.h,v 1.1 1999/11/23 22:29:59 bormotov Exp $
00003  */
00004  
00005 // Copyright (C) 1999 The New York Group Theory Cooperative
00006 // See magnus/doc/COPYRIGHT for the full notice.
00007 //
00008 // Contents: Declaration of classes FNWPArcer,FNWPCM
00009 //
00010 // Principal Author: Dmitry Bormotov
00011 //
00012 // Status: in use
00013 //
00014 // Revision History:
00015 //
00016 
00017 
00018 #ifndef _FNWP_h_
00019 #define _FNWP_h_
00020 
00021 #include "Supervisor.h"
00022 #include "SMWord.h"
00023 #include "ARCer.h"
00024 
00025 
00026 // ----------------------------- FNWPArcer --------------------------------- //
00027 
00028 
00029 class FNWPArcer : public ARCer {
00030 
00031 public:
00032 
00033   /////////////////////////////////////////////////////////////////////////
00034   //                                                                     //
00035   // Constructors:                                                       //
00036   //                                                                     //
00037   /////////////////////////////////////////////////////////////////////////
00038 
00039   FNWPArcer( ComputationManager& );
00040 
00041   // no destructor
00042 
00043 
00044   /////////////////////////////////////////////////////////////////////////
00045   //                                                                     //
00046   // Accessors:                                                          //
00047   //                                                                     //
00048   /////////////////////////////////////////////////////////////////////////
00049 
00050   void setArguments( const FreeGroup&, int nClass, const SetOf<Word>& ); 
00051 
00052   Trichotomy getRetValue() { return retValue; }
00053 
00054   // Inherited from ARCer:
00055   // bool takeControl( );
00056 
00057 
00058   /////////////////////////////////////////////////////////////////////////
00059   //                                                                     //
00060   // IPC interaction members:                                            //
00061   //                                                                     //
00062   /////////////////////////////////////////////////////////////////////////
00063 
00064   void runComputation( );
00065 
00066   void writeResults( ostream& );
00067 
00068   void readResults( istream& );
00069 
00070   
00071 private:
00072 
00073   /////////////////////////////////////////////////////////////////////////
00074   //                                                                     //
00075   // Private functions:                                                  //
00076   //                                                                     //
00077   /////////////////////////////////////////////////////////////////////////
00078 
00079   /////////////////////////////////////////////////////////////////////////
00080   //                                                                     //
00081   // Data Members:                                                       //
00082   //                                                                     //
00083   /////////////////////////////////////////////////////////////////////////
00084 
00085   FreeGroup theGroup;
00086   int c;
00087   SetOf<Word> theWords;
00088   Trichotomy retValue;
00089 };
00090 
00091 
00092 // ------------------------------ FNWPCM ----------------------------------- //
00093 
00094 
00095 class FNWPCM : public ComputationManager {
00096 
00097 public:
00098 
00099   /////////////////////////////////////////////////////////////////////////
00100   //                                                                     //
00101   // Constructors:                                                       //
00102   //                                                                     //
00103   /////////////////////////////////////////////////////////////////////////
00104 
00105   FNWPCM( class Supervisor& boss );
00106 
00107 
00108   /////////////////////////////////////////////////////////////////////////
00109   //                                                                     //
00110   // Accessors:                                                          //
00111   //                                                                     //
00112   /////////////////////////////////////////////////////////////////////////
00113 
00114   void init( const FreeGroup& group, int nClass, const SetOf<Word> words );
00115   // you must call this function before any other accessor
00116 
00117   Trichotomy areTrivial( ) { return tAreTrivial; }
00118 
00119 
00120   /////////////////////////////////////////////////////////////////////////
00121   //                                                                     //
00122   // Control:                                                            //
00123   //                                                                     //
00124   /////////////////////////////////////////////////////////////////////////
00125 
00126   void takeControl( );         // overrides ComputationManager
00127 
00128   /////////////////////////////////////////////////////////////////////////
00129   //                                                                     //
00130   // State Transitions:                                                  //
00131   //                                                                     //
00132   /////////////////////////////////////////////////////////////////////////
00133 
00134   void start( );              // overrides ComputationManager
00135 
00136   void terminate( );          // overrides ComputationManager
00137 
00138 
00139 private:
00140 
00141   /////////////////////////////////////////////////////////////////////////
00142   //                                                                     //
00143   // Data Members:                                                       //
00144   //                                                                     //
00145   /////////////////////////////////////////////////////////////////////////
00146 
00147   FreeGroup theGroup;
00148   int c;
00149   SetOf<Word> theWords;
00150   const Supervisor& theBoss;
00151   
00152   Trichotomy tAreTrivial;
00153   bool bStarted;
00154   bool bInited;
00155   
00156   FNWPArcer arcer;
00157 };
00158 
00159 
00160 #endif
00161 
00162 

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