00001 /* 00002 * Copyright (C) 2000 KOM/Darmstadt University of Technology 00003 * 00004 * This program is free software; you can redistribute it and/or modify it 00005 * under the terms of the GNU General Public License as published by the 00006 * Free Software Foundation; either version 2, or (at your option) any 00007 * later version. 00008 * 00009 * This program is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 * GNU General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU General Public License 00015 * along with this program; if not, write to the Free Software 00016 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 00017 * USA. 00018 */ 00019 #ifndef V2_STATE_COLLECTOR_H 00020 #define V2_STATE_COLLECTOR_H 00021 00022 #include "V1States.h" 00023 #include "MNArray.h" 00024 #include "MNList.h" 00025 00026 class V1Transition; 00027 00028 class V2StateCollector; 00029 class V2StateVector; 00030 00031 /*********************************************************************** 00032 * StateArrayEntry 00033 ***********************************************************************/ 00034 00035 class StateArrayEntry 00036 { 00037 int _kind; 00038 V2StateVector* _vector; 00039 00040 public: 00041 StateArrayEntry( int kind, V2StateVector* vector ); 00042 00043 int kind(); 00044 V2StateVector* vector(); 00045 }; 00046 00047 /*********************************************************************** 00048 * StateTransitionArray 00049 ***********************************************************************/ 00050 00051 class StateTransitionArray : public MNArrayN<StateArrayEntry*> 00052 { 00053 int _dim_count_WSD; // with signal dimension 00054 int* _dimensions; 00055 public: 00056 StateTransitionArray( ); 00057 00058 MNArrayN<StateArrayEntry*>& array(); 00059 int dimCount( ); 00060 int dimCountWithSignals( ); 00061 int* dimensions( ); 00062 }; 00063 00064 /*********************************************************************** 00065 * V2StateCollector 00066 ***********************************************************************/ 00067 00068 class V2StateCollector 00069 { 00070 MNList<V2StateVector*> _source; 00071 MNList<V2StateVector*> _target; 00072 V2StateVector* _initial; 00073 00074 private: 00075 int v2verifyGTOrecursive ( int d, 00076 int maxd, 00077 int* p, 00078 MNArrayN<StateArrayEntry*>& array, 00079 V2StateVector* v ); 00080 int v2verifyGTOinitialized ( int d, 00081 int maxd, 00082 int* p, 00083 MNArrayN<StateArrayEntry*>& array ); 00084 00085 StateTransitionArray* v2createTransitionArray(); 00086 00087 public: 00088 V2StateCollector( V1StateCollector& v1col ); 00089 00090 V2StateVector* getInitial( ); 00091 void v2verifyGenericTransitionOverlap ( StateTransitionArray* sta ); 00092 }; 00093 00094 #endif /* V2_STATE_COLLECTOR_H */ 00095