#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include //#include //#include //#include #include #include #include #include #include #include #include #include // ####################################################################### // ## ## // ## ## // ## FUNCTIONS ## // ## ## // ## ## // ####################################################################### //======================================================================= //function : xinit //======================================================================= static IFSelect_ReturnStatus XSControl_xinit(const Handle(IFSelect_SessionPilot)& pilot) { Standard_Integer argc = pilot->NbWords(); const Standard_CString arg1 = pilot->Arg(1); // **** xinit **** if (argc > 1) return (XSControl::Session(pilot)->SelectNorm(arg1) ? IFSelect_RetDone : IFSelect_RetFail); Handle(Message_Messenger) sout = Message::DefaultMessenger(); sout<<"Selected Norm:"<SelectedNorm()<NbWords(); const Standard_CString arg1 = pilot->Arg(1); // **** xnorm **** Handle(XSControl_WorkSession) WS = XSControl::Session(pilot); Handle(XSControl_Controller) control = WS->NormAdaptor(); Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (argc == 1) sout<<"Current Norm. xnorm newnorm [profile] to change , xnorm ? for the list"<Name(Standard_False)<Name(Standard_True)<Length(); sout<<"Short Proper Names (complete names) : "<Value(i)->ToCString(); sout<Length(); sout<<"Long Proper Names (resource names) : "<Value(i)->ToCString(); sout<Length(); sout<<"All Norm Names (short, long and aliases) "<Value(i)->ToCString(); sout<SetController(control); sout<<"new norm : "<Name()< 2) { const Standard_CString arg2 = pilot->Arg(2); if (!control->Profile()->SetCurrent (arg2)) sout<<"profile could not be set to "<Profile()->Current()<SelectedNorm(Standard_True)); return IFSelect_RetDone; } return IFSelect_RetVoid; } //======================================================================= //function : xprofile //======================================================================= static IFSelect_ReturnStatus XSControl_xprofile(const Handle(IFSelect_SessionPilot)& pilot) { Standard_Integer argc = pilot->NbWords(); const Standard_CString arg1 = pilot->Arg(1); // **** xprofile **** Handle(XSControl_WorkSession) WS = XSControl::Session(pilot); Handle(XSControl_Controller) control = WS->NormAdaptor(); if (control.IsNull()) return IFSelect_RetFail; Handle(IFSelect_Profile) prof = control->Profile(); Handle(Message_Messenger) sout = Message::DefaultMessenger(); sout<<"Current Profile : "<Current().ToCString()<ConfList(); Standard_Integer i, nb = confs->Length(); sout<<"List of Available Profile Configurations : "<Value(i).ToCString()<ApplyProfile(WS,".")) { sout<<"Applying current profile has failed"<ApplyProfile(WS,arg1)) { sout<<"Setting "<Arg(2); // List the definition of a profile if (arg2[0] == '?') { Handle(TColStd_HSequenceOfAsciiString) opts, cases; prof->SwitchList (arg1,opts,cases); Standard_Integer i,nb = opts->Length(); sout<<"Option -- Case -- ("<Value(i).ToCString()<<" "<Value(i).ToCString()<ClearConf(arg1)) { sout<<"Clearing profile "<HasConf (arg1)) prof->AddConf (arg1); if (!prof->AddFromOtherConf (arg1,arg2)) { sout<<"Merging profile "<Arg(2); const Standard_CString arg3 = pilot->Arg(3); // Removing a switch if (arg2[0] == '-' && arg2[1] == '\0') { if (!prof->RemoveSwitch (arg1,arg3)) { sout<<"Removing switch on option "<AddSwitch (arg1,arg2,arg3)) { sout<<"Setting profile "<NbWords(); const Standard_CString arg1 = pilot->Arg(1); const Standard_CString arg2 = pilot->Arg(2); const Standard_CString arg3 = pilot->Arg(3); // **** xoption **** Handle(XSControl_WorkSession) WS = XSControl::Session(pilot); Handle(XSControl_Controller) control = WS->NormAdaptor(); if (control.IsNull()) return IFSelect_RetFail; Handle(IFSelect_Profile) prof = control->Profile(); Handle(Message_Messenger) sout = Message::DefaultMessenger(); sout<<"Current Profile : "<Current().ToCString()<OptionList(); Standard_Integer iopt, nbopt = optlist->Length(); sout<<"Total : "<Value(iopt); Handle(IFSelect_Option) opt = prof->Option (optname.ToCString()); sout<CaseName()<Option (arg1); if (opt.IsNull()) { sout<<"Not a recorded Option : "<ItemList(); Standard_Integer icase, nbcase = caselist->Length(); Handle(MoniTool_TypedValue) tv = opt->TypedValue(); if (tv.IsNull()) sout<<"Option : "<Type()->Name(); else sout<<"Option : "<Name()<Definition(); sout<CaseName()<<" Total : "<Value(icase); sout<Aliases(acase.ToCString()); Standard_Integer ial, nbal = (aliases.IsNull() ? 0 : aliases->Length()); if (nbal > 0) sout<<" - Alias:"; for (ial = 1; ial <= nbal; ial ++) sout<<" "<Value(ial); if (!tv.IsNull()) { // TypedValue : on peut afficher la valeur Handle(TCollection_HAsciiString) str; opt->Item (acase.ToCString(),str); if (!str.IsNull()) sout<<" - Value:"<ToCString(); } sout<= 3 && arg1[0] == '+' && arg1[1] == '\0') { Standard_CString parname = pilot->Arg(argc-1); Handle(Interface_Static) param = Interface_Static::Static(parname); if (param.IsNull()) { sout<<"No static parameter is named "<AddOption (opt); return IFSelect_RetDone; } // xoption optname + case [val] if (argc >= 4 && arg2[0] == '+' && arg2[1] == '\0') { Handle(IFSelect_Option) opt = prof->Option (arg1); if (opt.IsNull()) { sout<<"Not a recorded Option : "<TypedValue(); if (tv.IsNull()) { sout<<"Option not for a Parameter : "<Arg(argc-1); if (!opt->AddBasic (arg3,valname)) { sout<<"Option "<Option (arg1); if (opt.IsNull()) { sout<<"Not a recorded Option : "<Switch (arg2)) { sout<<"Option : "<NewModel().IsNull()) return IFSelect_RetDone; Handle(Message_Messenger) sout = Message::DefaultMessenger(); sout<<"No new Model produced"<Word(0).Value(2) == 'w') modew = Standard_True; Handle(Transfer_FinderProcess) FP = XSControl::Session(pilot)->MapWriter(); Handle(Transfer_TransientProcess) TP = XSControl::Session(pilot)->MapReader(); Handle(Message_Messenger) sout = Message::DefaultMessenger(); if ( modew) { if(!FP.IsNull()) FP->Clear(); else sout<<"No Transfer Write"<Clear(); else sout<<"No Transfer Read"<NbWords(); const Standard_CString arg1 = pilot->Arg(1); //const Standard_CString arg2 = pilot->Arg(2); Handle(Transfer_TransientProcess) TP= XSControl::Session(pilot)->MapReader(); Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (TP.IsNull()) { sout<<"No Transfer Read"< 1) { char a2 = arg1[1]; if (a2 == '\0') a2 = '!'; switch (arg1[0]) { case 'g' : mod1 = 0; break; case 'c' : mod1 = 4; mod2 = 4; break; case 'C' : mod1 = 4; mod2 = 2; break; case 'f' : mod1 = 5; mod2 = 4; break; case 'F' : mod1 = 5; mod2 = 2; break; case '*' : mod1 = 2; break; case '?' : mod1 = 3; break; default : mod1 = 1; if (argc > 2) mod1 = 2; a2 = arg1[0]; break; } if (mod1 < 1 || mod1 > 3) a2 = '!'; switch (a2) { case 'n' : mod2 = 0; break; case 's' : mod2 = 1; break; case 'b' : mod2 = 2; break; case 't' : mod2 = 3; break; case 'r' : mod2 = 4; break; case 'l' : mod2 = 5; break; case 'L' : mod2 = 6; break; case '!' : break; case '?' : mod1 = -1; break; default : mod1 = -2; break; } } // A present help eventuel if (mod1 < -1) sout<<"Unknown Mode"<Model() != pilot->Session()->Model()) sout<<"Model differs from the session"; Handle(TColStd_HSequenceOfTransient) list = IFSelect_Functions::GiveList(pilot->Session(),pilot->CommandPart(2)); XSControl_TransferReader::PrintStatsOnList (TP,list,mod1,mod2); // TP->PrintStats (1,sout); } else sout<<"TransferRead : not defined"<NbWords(); const Standard_CString arg1 = pilot->Arg(1); Handle(Transfer_TransientProcess) TP= XSControl::Session(pilot)->MapReader(); // **** tpent **** Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (TP.IsNull()) { sout<<"No Transfer Read"<Model(); if (model.IsNull()) return IFSelect_RetFail; if (argc < 2) { sout<<"Give ENTITY NUMBER (IN MODEL TransferProcess)"< model->NbEntities()) { sout<<"Number not in [1 - "<NbEntities()<<"]"<Value(num); Standard_Integer index = TP->MapIndex (ent); if (index == 0) sout<<"Entity "<PrintTransferStatus (index,Standard_False,sout); return IFSelect_RetVoid; } //======================================================================= //function : tpitem //======================================================================= static IFSelect_ReturnStatus XSControl_tpitem(const Handle(IFSelect_SessionPilot)& pilot) { Standard_Integer argc = pilot->NbWords(); const Standard_CString arg1 = pilot->Arg(1); // **** tpitem/tproot/twitem/twroot **** Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (argc < 2) { sout<<"Give ITEM NUMBER (in TransferProcess)"<Word(0).Value(3) == 'r') num = -num; Standard_Boolean modew = Standard_False; if (pilot->Word(0).Value(2) == 'w') modew = Standard_True; Handle(Transfer_Binder) binder; Handle(Transfer_Finder) finder; Handle(Standard_Transient) ent; if (!XSControl::Session(pilot)->PrintTransferStatus(num,modew,sout)) sout<<" - Num="<NbWords(); const Standard_CString arg1 = pilot->Arg(1); Handle(XSControl_WorkSession) WS = XSControl::Session(pilot); Handle(Transfer_TransientProcess) TP = WS->MapReader(); Handle(Message_Messenger) sout = Message::DefaultMessenger(); // tpatr tout court : liste tous les attributs // tpatr nomatr : sur cet attribut, liste les valeurs par entite if (argc < 2) { Handle(Dico_DictionaryOfInteger) list = TP->Attributes(); for (Dico_IteratorOfDictionaryOfInteger iter(list); iter.More(); iter.Next()) { TCollection_AsciiString name = iter.Name(); Standard_Integer nbatr = iter.Value(); Interface_ParamType aty = TP->AttributeType (name.ToCString()); sout<<"Name : "<NextItemWithAttribute(arg1,0); num > 0; num = TP->NextItemWithAttribute(arg1,num)) { nb ++; sout<<"Item "<Model()->Print(TP->Mapped(num),sout); Handle(Transfer_Binder) bnd = TP->MapItem (num); Interface_ParamType aty = bnd->AttributeType(arg1); switch (aty) { case Interface_ParamInteger : sout<<" Integer="<IntegerAttribute(arg1); break; case Interface_ParamReal : sout<<" Real="<RealAttribute(arg1); break; case Interface_ParamIdent : sout<<" Object,Type:"<Attribute(arg1)->DynamicType()->Name(); break; case Interface_ParamText : sout<<" String="<StringAttribute(arg1); default : sout<<"(none)"; break; } sout<NbWords(); const Standard_CString arg1 = pilot->Arg(1); Handle(Transfer_TransientProcess) TP = XSControl::Session(pilot)->MapReader(); // **** trecord : TransferReader **** Standard_Boolean tous = (argc == 1); Standard_Integer num = -1; Handle(Interface_InterfaceModel) mdl = XSControl::Session(pilot)->Model(); Handle(XSControl_TransferReader) TR = XSControl::Session(pilot)->TransferReader(); Handle(Standard_Transient) ent; Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (mdl.IsNull() || TR.IsNull() || TP.IsNull()) { sout<<" init not done"<NbRoots(); sout<<" Recording "<Root(i); if (TR->RecordResult (ent)) sout<<" Root n0."< mdl->NbEntities()) sout<<"incorrect number:"<RecordResult(mdl->Value(num))) sout<<" Entity n0."<NbWords(); const Standard_CString arg1 = pilot->Arg(1); Handle(Message_Messenger) sout = Message::DefaultMessenger(); // **** trstat : TransferReader **** Handle(XSControl_TransferReader) TR = XSControl::Session(pilot)->TransferReader(); if (TR.IsNull()) { sout<<" init not done"<Model(); if (mdl.IsNull()) { sout<<" No model"<FileName()<PrintStats(10,0); } else { // stats unitaires Standard_Integer num = atoi(arg1); if (num < 1 || num > mdl->NbEntities()) { sout<<" incorrect number:"<Value(num); if (!TR->IsRecorded(ent)) { sout<<" Entity "<FinalResult(ent); Handle(TColStd_HSequenceOfTransient) list = TR->CheckedList(ent); Standard_Integer i, nb = list->Length(); if (nb > 0) sout<<" Entities implied by Check/Result :"<Print(list->Value(i),sout); } sout<CheckList(Standard_False); pilot->Session()->PrintCheckList(chl,Standard_False,IFSelect_EntitiesByItem); } return IFSelect_RetVoid; } //======================================================================= //function : trbegin //======================================================================= static IFSelect_ReturnStatus XSControl_trbegin(const Handle(IFSelect_SessionPilot)& pilot) { // **** trbegin : TransferReader **** Handle(XSControl_TransferReader) TR = XSControl::Session(pilot)->TransferReader(); Standard_Boolean init = TR.IsNull(); if (pilot->NbWords() > 1) { if (pilot->Arg(1)[0] == 'i') init = Standard_True; } if (init) { XSControl::Session(pilot)->InitTransferReader (0); TR = XSControl::Session(pilot)->TransferReader(); if (TR.IsNull()) { Handle(Message_Messenger) sout = Message::DefaultMessenger(); sout<<" init not done or failed"<BeginTransfer(); return IFSelect_RetDone; } //======================================================================= //function : tread //======================================================================= static IFSelect_ReturnStatus XSControl_tread(const Handle(IFSelect_SessionPilot)& pilot) { Standard_Integer argc = pilot->NbWords(); //const Standard_CString arg1 = pilot->Arg(1); // **** tread : TransferReader **** Handle(Message_Messenger) sout = Message::DefaultMessenger(); Handle(XSControl_TransferReader) TR = XSControl::Session(pilot)->TransferReader(); if (TR.IsNull()) { sout<<" init not done"<Model(); if (mdl.IsNull()) { sout<<" No model"<Session()->NamedItem("xst-model-roots")); Handle(Standard_Transient) sel = pilot->Session()->NamedItem("xst-model-roots"); if (sel.IsNull()) { sout<<"Select Roots absent"<Session()->GiveList(sel); sout<<" Transferring all roots i.e. : "<TransferList(list)<Session(),pilot->CommandPart(1)); sout<<" Transfer of "<Length()<<" entities"<TransferList(list); sout<<" Gives "< TProcess **** Handle(XSControl_TransferReader) TR = XSControl::Session(pilot)->TransferReader(); Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (TR.IsNull()) sout<<" No TransferReader"<TransientProcess().IsNull()) sout<<" Transfer Reader without Process"<TransientProcess()); return IFSelect_RetDone; } return IFSelect_RetVoid; } //======================================================================= //function : tptr //======================================================================= static IFSelect_ReturnStatus XSControl_tptr(const Handle(IFSelect_SessionPilot)& pilot) { // **** TProcess -> TReader **** XSControl::Session(pilot)->InitTransferReader (3); return IFSelect_RetDone; } //======================================================================= //function : twmode //======================================================================= static IFSelect_ReturnStatus XSControl_twmode(const Handle(IFSelect_SessionPilot)& pilot) { Standard_Integer argc = pilot->NbWords(); const Standard_CString arg1 = pilot->Arg(1); // **** twmode **** Handle(XSControl_TransferWriter) TW = XSControl::Session(pilot)->TransferWriter(); Handle(XSControl_Controller) control = XSControl::Session(pilot)->NormAdaptor(); Standard_Integer modemin,modemax; Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (control->ModeWriteBounds (modemin,modemax)) { sout<<"Write Mode : allowed values "<ModeWriteHelp (modd)< "<SetTransferMode(mod); if (!control->IsModeWrite (mod)) sout<<"Warning : this new value is not supported"<NbWords(); //const Standard_CString arg1 = pilot->Arg(1); //const Standard_CString arg2 = pilot->Arg(2); Handle(Transfer_FinderProcess) FP = XSControl::Session(pilot)->MapWriter(); // **** twstat **** // Pour Write Handle(Message_Messenger) sout = Message::DefaultMessenger(); if (!FP.IsNull()) { sout<<"TransferWrite:"; // XSControl_TransferWriter::PrintStatsProcess (FP,mod1,mod2); FP->PrintStats (1,sout); } else sout<<"TransferWrite: not defined"<RecordItem(new XSControl_SelectForTransfer(XSControl::Session(pilot)->TransferReader())); } static int initactor = 0; //======================================================================= //function : Init //purpose : //======================================================================= void XSControl_Functions::Init () { if (initactor) return; initactor = 1; IFSelect_Act::SetGroup("DE: General"); IFSelect_Act::AddFunc ("xinit","[norm:string to change norme] reinitialises according to the norm",XSControl_xinit); IFSelect_Act::AddFunc ("xnorm","displays current norm +norm : changes it",XSControl_xnorm); IFSelect_Act::AddFunc ("xprofile","displays current profile +prof : changes it",XSControl_xprofile); IFSelect_Act::AddFunc ("xoption","lists options +opt : lists cases +case : changes current case",XSControl_xoption); IFSelect_Act::AddFunc ("newmodel","produces a new empty model, for the session",XSControl_newmodel); IFSelect_Act::AddFunc ("tpclear","Clears TransferProcess (READ)",XSControl_tpclear); IFSelect_Act::AddFunc ("twclear","Clears TransferProcess (WRITE)",XSControl_tpclear); IFSelect_Act::AddFunc ("tpstat","Statistics on TransferProcess (READ)",XSControl_tpstat); IFSelect_Act::AddFunc ("tpent","[num:integer] Statistics on an entity of the model (READ)",XSControl_tpent); IFSelect_Act::AddFunc ("tpitem","[num:integer] Statistics on ITEM of transfer (READ)" ,XSControl_tpitem); IFSelect_Act::AddFunc ("tproot","[num:integer] Statistics on a ROOT of transfert (READ)" ,XSControl_tpitem); IFSelect_Act::AddFunc ("twitem","[num:integer] Statistics on an ITEM of transfer (WRITE)" ,XSControl_tpitem); IFSelect_Act::AddFunc ("twroot","[num:integer] Statistics on a ROOT of transfer (WRITE)",XSControl_tpitem); IFSelect_Act::AddFunc ("tpatr","[name] List all Attributes, or values for a Name",XSControl_tpatr); IFSelect_Act::AddFunc ("trecord","record : all root results; or num : for entity n0.num",XSControl_trecord); IFSelect_Act::AddFunc ("trstat","general statistics; or num : stats on entity n0 num",XSControl_trstat); IFSelect_Act::AddFunc ("trbegin","begin-transfer-reader [init]",XSControl_trbegin); IFSelect_Act::AddFunc ("tread","transfers all roots, or num|sel|sel num : entity list, by transfer-reader",XSControl_tread); IFSelect_Act::AddFunc ("trtp","feeds commands tp... with results from tr...",XSControl_trtp); IFSelect_Act::AddFunc ("tptr","feeds tr... from tp... (may be incomplete)",XSControl_tptr); IFSelect_Act::AddFunc ("twmode","displays mode transfer write, + num changes it",XSControl_twmode); IFSelect_Act::AddFunc ("twstat","Statistics on TransferProcess (WRITE)",XSControl_twstat); IFSelect_Act::AddFSet ("selecttransfer","selection (recognize from transfer actor)",XSControl_settransfert); }