int main(int argc, const char **argv) { clang_enableStackTraces(); if (argc > 2 && strstr(argv[1], "-code-completion-at=") == argv[1]) return perform_code_completion(argc, argv); if (argc > 2 && strstr(argv[1], "-cursor-at=") == argv[1]) return inspect_cursor_at(argc, argv); else if (argc >= 4 && strncmp(argv[1], "-test-load-tu", 13) == 0) { CXCursorVisitor I = GetVisitor(argv[1] + 13); if (I) return perform_test_load_tu(argv[2], argv[3], argc >= 5 ? argv[4] : 0, I, NULL); } else if (argc >= 4 && strncmp(argv[1], "-test-load-source", 17) == 0) { CXCursorVisitor I = GetVisitor(argv[1] + 17); if (I) return perform_test_load_source(argc - 3, argv + 3, argv[2], I, NULL); } else if (argc >= 4 && strcmp(argv[1], "-test-file-scan") == 0) return perform_file_scan(argv[2], argv[3], argc >= 5 ? argv[4] : 0); else if (argc > 2 && strstr(argv[1], "-test-annotate-tokens=") == argv[1]) return perform_token_annotation(argc, argv); else if (argc > 2 && strcmp(argv[1], "-test-inclusion-stack-source") == 0) return perform_test_load_source(argc - 2, argv + 2, "all", NULL, PrintInclusionStack); else if (argc > 2 && strcmp(argv[1], "-test-inclusion-stack-tu") == 0) return perform_test_load_tu(argv[2], "all", NULL, NULL, PrintInclusionStack); print_usage(); return 1; }
//method called by Passenger to update visitor's location, state. int VisitorTerminalBehavior::update( ElapsedTime _time, Point _OwnerPreLocation, bool _bBackup ) { int nNextState = GetOwner()->getState(); PaxTerminalBehavior* spTerminalBehavior = (PaxTerminalBehavior*)GetOwner()->getBehavior(MobElementBehavior::TerminalBehavior); if (spTerminalBehavior == NULL) { return 1; } if (IfHaveOwnFlow(_time)) { //////create ConvergePair,and add to GreetPool. 6.21.2004 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ TrayHostList* pTrayHostList = m_pTerm->GetTrayHostList(); if (pTrayHostList->IfNonPaxExsit(m_pPerson->getType().GetTypeIndex()) && !m_bInTray) { spTerminalBehavior->CopyVisitListToTrayHost(_time); } if (pTrayHostList->FindHostItem(m_pPerson->getType().GetTypeIndex()) || !pTrayHostList->IfNonPaxExsit(m_pPerson->getType().GetTypeIndex())\ || (pTrayHostList->IfNonPaxExsit(m_pPerson->getType().GetTypeIndex()) && !m_bInTray)) { if (!spTerminalBehavior->StickForDestProcsOverload(_time) && !StickNonPaxDestProcsOverload(_time)) { GetVisitor()->NewConvergePair(GetOwnerId(),true); if(GetOwner()) GetOwner()->NewConvergePair(m_pPerson->getID(),m_pPerson->getType().GetTypeIndex()); m_pPerson->setState(FreeMoving); m_nFreeMoving = 1; m_nFreeMovingIndex = m_pPerson->getLogEntry().getCurrentCount(); // m_bWithOwner = false; m_pPerson->m_pGroupInfo->SetFollowerWithOwner(false); setDestination(_OwnerPreLocation); ElapsedTime eTime = _time + moveTime(); generateEvent(eTime,false); if( getNextProcessor( eTime ) ) generateEvent( eTime+moveTime(),false );// return 0; } return 1; } return 0; } m_pPerson->setState(nNextState); m_nQueuePathSegmentIndex = spTerminalBehavior->getCurrentIndex(); m_pProcessor = spTerminalBehavior->getProcessor(); CString sstr1= m_pProcessor->getID()->GetIDString(); // write log entry //writeLog( _time ); //CString _strOwnerProcessor = m_pOwnerPax->getProcessor()->getID()->GetIDString(); GetVisitor()->writeVisitorLog( _time,_OwnerPreLocation, _bBackup, false); return 1; }
bool VisitorTerminalBehavior::IfHaveOwnFlow(ElapsedTime _time) { int nNextState = GetVisitor()->GetOwner()->getState(); //bool bFreeMovingANDHasDest = nNextState == FreeMoving && m_iPreState != WalkOnPipe&& m_pProcessor->HasDestination( m_type, m_nInGateDetailMode ); bool bFreeMovingANDHasDest = nNextState == LeaveServer && m_pPerson->getPreState()!= WalkOnPipe&& m_pProcessor->HasDestination( m_pPerson->getType(), m_nInGateDetailMode ); //if the group in the processor,cann't be apart bFreeMovingANDHasDest = bFreeMovingANDHasDest &&GetVisitor()->GetOwner()!= NULL; //// only to sender, if visitor time less than _time, freemoving (but ,if greet before ,want to next processor depart) bool bFreeMovingANDTypeIndex = nNextState == FreeMoving && m_pPerson->getPreState() != WalkOnPipe&& m_pPerson->getType().GetTypeIndex()== 1 && m_pPerson->getType().isDeparture() && (GetVisitor()->getVisiteTime()>=ElapsedTime(0l)) && ( GetVisitor()->getVisiteTime() < _time)&&(!GetGreetingTag()); return (bFreeMovingANDHasDest || bFreeMovingANDTypeIndex); }