def __init__(self, Candidate): StateA = Candidate.state_a StateB = Candidate.state_b my_index = index.get() self.__state_a = StateA self.__state_b = StateB self.__state_index_sequence = StateA.state_index_sequence( ) + StateB.state_index_sequence() self.__state_index_to_state_key_db = dict( (state_index, i) for i, state_index in enumerate(self.__state_index_sequence)) # Combined DropOut and Entry schemes are generated by the same function entry = TemplateState_Entry(my_index, self.__state_index_to_state_key_db, StateA.entry, StateB.entry) drop_out = MegaState_DropOut(StateA, StateB) MegaState.__init__(self, entry, drop_out, my_index) self.__transition_map, \ self.__target_scheme_n = combine_maps(self.__state_a, self.__state_b) # Compatible with AnalyzerState # (A template state can never mimik an init state) self.__engine_type = None # StateA.engine_type # self.input = None # StateA.input # get_input_action(StateA.engine_type, InitStateF=False) MegaState.bad_company_set( self, self.__state_a.bad_company().union(self.__state_b.bad_company()))
def __init__(self, StartState, StartCharacter, AdaptedTransitionMap): if StartState is None: return # Only for Clone assert StartState is None or isinstance(StartState, AnalyzerState) assert StartCharacter is None or isinstance(StartCharacter, (int, long)) assert AdaptedTransitionMap is None or isinstance(AdaptedTransitionMap, list) self.index = index.get() self.entry = PathWalkerState_Entry(self.index, StartState.entry) self.drop_out = MegaState_DropOut(StartState) self.__sequence = [ CharacterPathElement(StartState.index, StartCharacter) ] self.__transition_map = AdaptedTransitionMap # Set the 'void' target to indicate wildcard. self.__wildcard_char = StartCharacter transition_map_tools.set(self.__transition_map, StartCharacter, E_StateIndices.VOID)