Changeset 2491 in Sophya
- Timestamp:
- Jan 4, 2004, 8:02:44 PM (22 years ago)
- Location:
- trunk/SophyaPI/PIext
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PIext/nobjmgr.cc
r2490 r2491 36 36 #include "pigfd1.h" 37 37 #include "pigfd2.h" 38 39 #include "zthread.h" 38 40 39 41 … … 94 96 static string* TmpDir; // Repertoire pour les compilations / link dynamique 95 97 98 // Pour gestion multithread 99 static ZMutex* myMutex; 96 100 // .................................................................. 97 101 … … 119 123 currDir = new string("home"); 120 124 string dirn = "home"; 121 CreateDir (dirn);125 CreateDir_P(dirn); 122 126 SetKeepOldDirAtt(dirn, false); 123 127 dirn = "tmp"; 124 CreateDir (dirn);128 CreateDir_P(dirn); 125 129 SetKeepOldDirAtt(dirn, false); 126 130 dirn = "autoc"; 127 CreateDir (dirn);131 CreateDir_P(dirn); 128 132 SetKeepOldDirAtt(dirn, false); 129 133 dirn = "old"; 130 CreateDir (dirn);134 CreateDir_P(dirn); 131 135 SetKeepOldDirAtt(dirn, false); 132 136 dirn = "home"; … … 138 142 int l = (*TmpDir).length(); 139 143 if ( (l>0) && ((*TmpDir)[l-1] != '/') ) (*TmpDir) += '/'; 140 servnobjm = new Services2NObjMgr(this, (*TmpDir)); 144 servnobjm = new Services2NObjMgr(*TmpDir); 145 myMutex = new ZMutex; 141 146 } 142 147 fgOInit++; … … 154 159 delete myDirs; 155 160 delete myVars; 161 delete myMutex; 156 162 } 157 163 } … … 223 229 return(false); 224 230 } 231 ZSync(*myMutex); 225 232 #ifdef SANS_EVOLPLANCK 226 233 bool fg = true; … … 240 247 return(false); 241 248 } 249 ZSync(*myMutex); 242 250 #ifdef SANS_EVOLPLANCK 243 251 DVList::ValList::const_iterator it; … … 257 265 return(false); 258 266 } 267 ZSync(*myMutex); 259 268 #ifdef SANS_EVOLPLANCK 260 269 return(false); … … 271 280 return(""); 272 281 } 282 ZSync(*myMutex); 273 283 // cout << " DEBUG::GetVar " << *myVars << endl; 274 284 return(myVars->GetS(key)); … … 279 289 { 280 290 // cout << " DEBUG::GetVarList " << *myVars << endl; 291 ZSync(*myMutex); 281 292 return(*myVars); 282 293 } … … 284 295 /* --Methode-- */ 285 296 bool NamedObjMgr::CreateDir(string & dirname) 297 { 298 ZSync(*myMutex); 299 return CreateDir_P(dirname); 300 } 301 302 /* --Methode-- */ 303 bool NamedObjMgr::CreateDir_P(string & dirname) 286 304 { 287 305 if ( !CheckDirName(dirname) ) { … … 317 335 return(false); 318 336 } 337 ZSync(*myMutex); 319 338 NObjDirList::iterator it = myDirs->find(dirname); 320 339 if (it == myDirs->end()) { … … 347 366 void NamedObjMgr::LockDir(string & dirname) 348 367 { 368 ZSync(*myMutex); 349 369 if ( !CheckDirName(dirname) ) return; 350 370 NObjDirList::iterator it = myDirs->find(dirname); … … 358 378 void NamedObjMgr::UnlockDir(string & dirname) 359 379 { 380 ZSync(*myMutex); 360 381 if ( !CheckDirName(dirname) ) return; 361 382 NObjDirList::iterator it = myDirs->find(dirname); … … 369 390 void NamedObjMgr::SetKeepOldDirAtt(string & dirname, bool keepold) 370 391 { 392 ZSync(*myMutex); 371 393 if ( !CheckDirName(dirname) ) return; 372 394 NObjDirList::iterator it = myDirs->find(dirname); … … 384 406 bool NamedObjMgr::SetCurrentDir(string & dirname) 385 407 { 408 ZSync(*myMutex); 386 409 if ( !CheckDirName(dirname) ) { 387 410 cout << "NamedObjMgr::SetCurrentDir( " << dirname << ") Error - Invalid name !" << endl; … … 401 424 void NamedObjMgr::GetCurrentDir(string & dirname) 402 425 { 426 ZSync(*myMutex); 403 427 dirname = *currDir; 404 428 } … … 407 431 void NamedObjMgr::ListDirs(string & patt) 408 432 { 433 ZSync(*myMutex); 409 434 NObjDirList::iterator it; 410 435 string cn; … … 426 451 void NamedObjMgr::GetDirList(string & patt, vector<string>& lstd) 427 452 { 453 ZSync(*myMutex); 428 454 NObjDirList::iterator it; 429 455 string cn; … … 437 463 /* --Methode-- */ 438 464 void NamedObjMgr::CleanDir(string & dirname) 465 { 466 ZSync(*myMutex); 467 CleanDir_P(dirname); 468 } 469 470 /* --Methode-- */ 471 void NamedObjMgr::CleanDir_P(string & dirname) 439 472 { 440 473 if ( !CheckDirName(dirname) ) { … … 493 526 //-- 494 527 495 496 528 /* --Methode-- */ 497 529 bool NamedObjMgr::AddObj(AnyDataObj* obj, string & nom, bool crd) 530 { 531 ZSync(*myMutex); 532 return AddObj_P(obj, nom, crd); 533 } 534 535 /* --Methode-- */ 536 bool NamedObjMgr::AddObj_P(AnyDataObj* obj, string & nom, bool crd) 498 537 { 499 538 … … 516 555 return(false); 517 556 } 518 else { CreateDir (nrep); did = myDirId; }557 else { CreateDir_P(nrep); did = myDirId; } 519 558 } 520 559 521 560 // Si c'est le repertoire /autoc, on nettoie 522 561 if (nrep == "autoc") { 523 CleanDir (nrep);562 CleanDir_P(nrep); 524 563 } 525 564 … … 543 582 sprintf(buff, "%d", (*it).second.oid); 544 583 string nomnew = "/autoc/" + nobj + buff; 545 RenameObj (nom, nomnew);584 RenameObj_P(nom, nomnew); 546 585 } 547 586 else if ( (*itr).second.keepold ) { // On met l'ancien objet dans /old … … 550 589 sprintf(buff, "%d", (*it).second.oid); 551 590 string nomnew = "/old/" + nobj + buff; 552 RenameObj (nom, nomnew);591 RenameObj_P(nom, nomnew); 553 592 } 554 593 else { // Sinon, on remplace l'objet 555 594 cout << "NamedObjMgr::AddObj() - Replacing " << nom << endl; 556 DelObj (nom);595 DelObj_P(nom); 557 596 } 558 597 } … … 581 620 bool NamedObjMgr::AddObj(AnyDataObj& obj, string & nom, bool crd) 582 621 { 622 ZSync(*myMutex); 583 623 NObjMgrAdapter* adap = GetServiceObj()->GetAdapter(&obj); 584 624 if (adap == NULL) { … … 592 632 return(false); 593 633 } 594 return ( AddObj (cloneobj , nom, crd) );634 return ( AddObj_P(cloneobj , nom, crd) ); 595 635 } 596 636 597 637 /* --Methode-- */ 598 638 bool NamedObjMgr::RenameObj(string & nom, string& nomnew) 639 { 640 ZSync(*myMutex); 641 return RenameObj_P(nom, nomnew); 642 } 643 644 /* --Methode-- */ 645 bool NamedObjMgr::RenameObj_P(string & nom, string& nomnew) 599 646 { 600 647 string n1,r1,n2,r2; … … 657 704 bool NamedObjMgr::CopyObj(string & nom, string& nomcp) 658 705 { 706 ZSync(*myMutex); 659 707 if(nomcp.length()<=0) 660 708 {cout<<"NamedObjMgr::CopyObj() Error, copied obj name "<<nomcp<<" not valid"<<endl; … … 666 714 AnyDataObj* obnomcp = obnom->CloneDataObj(); 667 715 if(obnomcp==NULL) return(false); 668 if(! AddObj (obnomcp,nomcp) ) {delete obnomcp; return(false);}716 if(! AddObj_P(obnomcp,nomcp,false) ) {delete obnomcp; return(false);} 669 717 return true; 670 718 } 671 719 672 673 720 /* --Methode-- */ 674 721 bool NamedObjMgr::DelObj(string & nom, bool fgd) 722 { 723 ZSync(*myMutex); 724 return DelObj_P(nom, fgd); 725 } 726 727 /* --Methode-- */ 728 bool NamedObjMgr::DelObj_P(string & nom, bool fgd) 675 729 { 676 730 string n1,r1; … … 713 767 bool NamedObjMgr::DelObj_Id(int oid) 714 768 { 769 ZSync(*myMutex); 715 770 NObjList::iterator it; 716 771 string nom; … … 728 783 void NamedObjMgr::DelObjects(string & patt, bool fgd) 729 784 { 785 ZSync(*myMutex); 730 786 string n1,r1; 731 787 ParseObjectName(patt, r1, n1); … … 739 795 } 740 796 list<string>::iterator ii; 741 for(ii=odel.begin(); ii != odel.end(); ii++) DelObj (*ii, fgd);797 for(ii=odel.begin(); ii != odel.end(); ii++) DelObj_P(*ii, fgd); 742 798 } 743 799 … … 745 801 AnyDataObj* NamedObjMgr::GetObj(string & nom) 746 802 { 803 ZSync(*myMutex); 747 804 string n1,r1; 748 805 ParseObjectName(nom, r1, n1); … … 756 813 NObjMgrAdapter* NamedObjMgr::GetObjAdapter(string & nom) 757 814 { 815 ZSync(*myMutex); 758 816 string n1,r1; 759 817 ParseObjectName(nom, r1, n1); … … 767 825 void NamedObjMgr::ListObjs(string & patt) 768 826 { 827 ZSync(*myMutex); 769 828 int k; 770 829 AnyDataObj* obj=NULL; … … 795 854 void NamedObjMgr::GetObjList(string & patt, vector<string> &lst) 796 855 { 856 ZSync(*myMutex); 797 857 string n1,r1; 798 858 if (patt.length() < 1) return; … … 830 890 void NamedObjMgr::ReadObj(string const & flnm, string & nobj) 831 891 { 892 ZSync(*myMutex); 832 893 PPersist* ppobj=NULL; 833 894 bool ok = true; … … 852 913 if (!ok) return; 853 914 if (nobj.length()<1) nobj = servnobjm->FileName2Name(flnm); 854 AddObj (ppobj->DataObj(), nobj, true);915 AddObj_P(ppobj->DataObj(), nobj, true); 855 916 cout << "NamedObjMgr::ReadObj(...) object " << nobj << " read from file " << endl; 856 917 return; … … 860 921 void NamedObjMgr::ReadObj(PInPersist& s, int num) 861 922 { 923 ZSync(*myMutex); 862 924 int_4 i; // $CHECK$ int -> int_4 a cause de TagKey 863 925 #ifdef SANS_EVOLPLANCK … … 903 965 if (!ok) return; 904 966 nom = ""; 905 AddObj (obj->DataObj(), nom);967 AddObj_P(obj->DataObj(), nom, false); 906 968 nread++; 907 969 } … … 933 995 } 934 996 #endif 935 if (ok) { AddObj (obj->DataObj(), nom, true); nread++; }997 if (ok) { AddObj_P(obj->DataObj(), nom, true); nread++; } 936 998 } 937 999 … … 942 1004 void NamedObjMgr::ReadAll(string const & flnm) 943 1005 { 1006 ZSync(*myMutex); 944 1007 bool ok = true; 945 1008 PPersist* obj=NULL; … … 968 1031 if (obj) { 969 1032 string nom = servnobjm->FileName2Name(flnm); 970 AddObj (obj->DataObj(), nom);1033 AddObj_P(obj->DataObj(), nom, false); 971 1034 } 972 1035 else ReadObj((*ppin), -1); … … 978 1041 void NamedObjMgr::ReadFits(string const & flnm, string & nobj) 979 1042 { 980 1043 ZSync(*myMutex); 981 1044 #ifdef SANS_EVOLPLANCK 982 1045 bool ok = false; … … 993 1056 if (ok && (obj != NULL)) { 994 1057 if (nobj.length()<1) nobj = servnobjm->FileName2Name(flnm); 995 AddObj ((AnyDataObj*)obj, nobj);1058 AddObj_P((AnyDataObj*)obj, nobj); 996 1059 } 997 1060 #else … … 1018 1081 } 1019 1082 else name = nobj; 1020 AddObj (obj, name);1083 AddObj_P(obj, name, false); 1021 1084 kon++; 1022 1085 } … … 1035 1098 } 1036 1099 1100 /* --Methode-- */ 1101 void NamedObjMgr::SaveObj(string & nom, POutPersist& s, bool keeppath) 1102 { 1103 ZSync(*myMutex); 1104 SaveObj_P(nom, s, keeppath); 1105 } 1037 1106 1038 1107 static int key_for_write = 5000; 1039 1108 /* --Methode-- */ 1040 void NamedObjMgr::SaveObj (string & nom, POutPersist& s, bool keeppath)1109 void NamedObjMgr::SaveObj_P(string & nom, POutPersist& s, bool keeppath) 1041 1110 { 1042 1111 if (nom.length() < 1) return; … … 1057 1126 void NamedObjMgr::SaveObjects(string & patt, string const& flnm) 1058 1127 { 1128 ZSync(*myMutex); 1059 1129 string n1,r1; 1060 1130 if (patt.length() < 1) return; … … 1086 1156 cn = (*it).first; 1087 1157 if (csh_parse(cn.c_str(), patt.c_str()) == 0) continue; 1088 SaveObj (cn, (*pout), keeppath);1158 SaveObj_P(cn, (*pout), keeppath); 1089 1159 } 1090 1160 delete pout; … … 1095 1165 void NamedObjMgr::SaveAll(string const& flnm) 1096 1166 { 1167 ZSync(*myMutex); 1097 1168 bool ok = true; 1098 1169 … … 1118 1189 for(it = myObjs->begin(); it != myObjs->end(); it++) { 1119 1190 no = (*it).first; 1120 SaveObj (no, (*pout), true);1191 SaveObj_P(no, (*pout), true); 1121 1192 } 1122 1193 delete pout; … … 1127 1198 void NamedObjMgr::SaveFits(string& nom, string const & flnm) 1128 1199 { 1200 ZSync(*myMutex); 1201 1129 1202 NObjMgrAdapter* obja=NULL; 1130 1203 obja = GetObjAdapter(nom); … … 1139 1212 void NamedObjMgr::PrintObj(string& nom) 1140 1213 { 1214 ZSync(*myMutex); 1141 1215 NObjMgrAdapter* obja=NULL; 1142 1216 obja = GetObjAdapter(nom); … … 1157 1231 void NamedObjMgr::DisplayObj(string& nom, string dopt) 1158 1232 { 1233 ZSync(*myMutex); 1234 1159 1235 NObjMgrAdapter* obja=NULL; 1160 1236 obja = GetObjAdapter(nom); … … 1185 1261 ParseObjectName(nom, r1, n1); 1186 1262 1263 // Si appel venant de PIStdImgApp, il ne faut pas locker le Mutex global de la boucle d'evts 1264 bool fglock = (_fgimgapp) ? false : true; 1265 1187 1266 if (dr) { 1188 1267 PIDrawer3D * dr3 = dynamic_cast<PIDrawer3D *>(dr); 1189 if(dr3) wrsid = myImgApp->Disp3DDrawer(dr3, n1, dopt );1190 else wrsid = myImgApp->DispScDrawer( dr, n1, dopt );1191 } 1192 else if (arr) wrsid = myImgApp->DispImage(arr, n1, dopt );1268 if(dr3) wrsid = myImgApp->Disp3DDrawer(dr3, n1, dopt, "", 0, fglock); 1269 else wrsid = myImgApp->DispScDrawer( dr, n1, dopt, "", 0, fglock); 1270 } 1271 else if (arr) wrsid = myImgApp->DispImage(arr, n1, dopt, 0, fglock); 1193 1272 1194 1273 AddWRsId(nom, wrsid); … … 1199 1278 void NamedObjMgr::DisplayImage(string& nom, string dopt) 1200 1279 { 1280 ZSync(*myMutex); 1281 1201 1282 NObjMgrAdapter* obja=NULL; 1202 1283 obja = GetObjAdapter(nom); … … 1222 1303 ParseObjectName(nom, r1, n1); 1223 1304 1305 // Si appel venant de PIStdImgApp, il ne faut pas locker le Mutex global de la boucle d'evts 1306 bool fglock = (_fgimgapp) ? false : true; 1307 1224 1308 int wrsid = 0; 1225 wrsid = myImgApp->DispImage(arr, n1, dopt );1309 wrsid = myImgApp->DispImage(arr, n1, dopt, 0, fglock); 1226 1310 1227 1311 AddWRsId(nom, wrsid); … … 1231 1315 void NamedObjMgr::DisplaySurf3D(string& nom, string dopt) 1232 1316 { 1317 ZSync(*myMutex); 1318 1233 1319 NObjMgrAdapter* obja=NULL; 1234 1320 obja = GetObjAdapter(nom); … … 1261 1347 ParseObjectName(nom, r1, n1); 1262 1348 1349 // Si appel venant de PIStdImgApp, il ne faut pas locker le Mutex global de la boucle d'evts 1350 bool fglock = (_fgimgapp) ? false : true; 1351 1263 1352 int wrsid = 0; 1264 1353 PISurfaceDrawer* sdr = new PISurfaceDrawer(arr, true, true, true); 1265 wrsid = myImgApp->Disp3DDrawer(sdr, n1, dopt );1354 wrsid = myImgApp->Disp3DDrawer(sdr, n1, dopt, "", 0, fglock); 1266 1355 AddWRsId(nom, wrsid); 1267 1356 return; … … 1273 1362 string& label, string dopt, bool fg3d) 1274 1363 { 1364 ZSync(*myMutex); 1365 1275 1366 AnyDataObj* obj=GetObj(nom); 1276 1367 if (obj == NULL) { … … 1293 1384 string n1,r1; 1294 1385 ParseObjectName(nom, r1, n1); 1386 1387 // Si appel venant de PIStdImgApp, il ne faut pas locker le Mutex global de la boucle d'evts 1388 bool fglock = (_fgimgapp) ? false : true; 1295 1389 1296 1390 if ( fg3d && (nmz.length()>0) ) { // Display 3D … … 1301 1395 pin->SelectErrBar(erx.c_str(), ery.c_str(), erz.c_str()); 1302 1396 string titre = nmz + "%" + nmy + "%" + nmz; 1303 wrsid = myImgApp->Disp3DDrawer(pin, n1, dopt, titre );1397 wrsid = myImgApp->Disp3DDrawer(pin, n1, dopt, titre, 0, fglock); 1304 1398 } 1305 1399 else { … … 1310 1404 pin->SelectErrBar(erx.c_str(), ery.c_str()); 1311 1405 string titre = nmy + "%" + nmx; 1312 wrsid = myImgApp->DispScDrawer( (PIDrawer*)pin, n1, dopt, titre );1406 wrsid = myImgApp->DispScDrawer( (PIDrawer*)pin, n1, dopt, titre, 0, fglock); 1313 1407 } 1314 1408 … … 1331 1425 //| opt = options generales pour le display. 1332 1426 { 1427 ZSync(*myMutex); 1428 1333 1429 AnyDataObj* obj=GetObj(nom); 1334 1430 if(obj == NULL) … … 1356 1452 string n1,r1; 1357 1453 ParseObjectName(nom, r1, n1); 1454 // Si appel venant de PIStdImgApp, il ne faut pas locker le Mutex global de la boucle d'evts 1455 bool fglock = (_fgimgapp) ? false : true; 1358 1456 1359 1457 int wrsid = 0; … … 1362 1460 pigfd->SelectXY(numvx,numvy); 1363 1461 pigfd->SelectErrBar(errx,erry,errz); 1364 wrsid = myImgApp->Disp3DDrawer(pigfd,n1,dopt );1462 wrsid = myImgApp->Disp3DDrawer(pigfd,n1,dopt,"",0,fglock); 1365 1463 } else { // display 2D 1366 1464 PIGenFitDat* pigfd = new PIGenFitDat(((GeneralFitData*)obj),false); 1367 1465 pigfd->SelectX(numvx); 1368 1466 pigfd->SelectErrBar(errx,erry); 1369 wrsid = myImgApp->DispScDrawer((PIDrawer*)pigfd,n1,dopt );1467 wrsid = myImgApp->DispScDrawer((PIDrawer*)pigfd,n1,dopt,"",0,fglock); 1370 1468 } 1371 1469 … … 1380 1478 // nomvx et nomvy 1381 1479 { 1480 ZSync(*myMutex); 1481 1382 1482 #ifdef SANS_EVOLPLANCK 1383 1483 cerr << " NamedObjMgr::DisplayVector() Error: Not implemented with PEIDA " << endl; … … 1439 1539 ParseObjectName(nomvy, ry, ny); 1440 1540 1541 // Si appel venant de PIStdImgApp, il ne faut pas locker le Mutex global de la boucle d'evts 1542 bool fglock = (_fgimgapp) ? false : true; 1543 1441 1544 string title = ny + " (Y) vs. " + nx + " (X)"; 1442 1545 // display 2D 1443 myImgApp->DispScDrawer(vxydrw, title, dopt );1546 myImgApp->DispScDrawer(vxydrw, title, dopt, "", 0, fglock); 1444 1547 1445 1548 return; … … 1489 1592 { 1490 1593 if (!myImgApp) return; 1594 ZSync(*myMutex); 1491 1595 if ( !_fgimgapp ) ZSync(myImgApp->getMutex(),2); 1492 1596 -
trunk/SophyaPI/PIext/nobjmgr.h
r2490 r2491 109 109 110 110 protected: 111 virtual bool CreateDir_P(string & dirname); 112 virtual void CleanDir_P(string & dirname); 113 virtual bool AddObj_P(AnyDataObj* obj, string & nom, bool crd); 114 virtual bool RenameObj_P(string & nom, string& nomnew); 115 virtual bool DelObj_P(string & nom, bool fgd=true); 116 virtual void SaveObj_P(string & nom, POutPersist& s, bool keeppath=false); 117 111 118 bool _fgimgapp; // true -> cree par PIStdImgApp / pour gestion de thread 112 119 }; -
trunk/SophyaPI/PIext/pistdimgapp.cc
r2490 r2491 383 383 } 384 384 385 /* 385 386 class RunAlarm : public Periodic { 386 387 public: … … 393 394 PIStdImgApp* _app; 394 395 }; 395 396 */ 397 398 class Reveil : public ZThread { 399 public: 400 Reveil(PIStdImgApp* app) : 401 ZThread() 402 { _app = app; _fgstop = false; } 403 virtual ~Reveil() { } 404 inline void Stop() { _fgstop = true; } 405 virtual void run() 406 { 407 while (!_fgstop) { 408 usleep(1000); 409 _app->getMutex().broadcast(); 410 } 411 } 412 413 PIStdImgApp* _app; 414 bool _fgstop; 415 }; 396 416 /* --Methode-- */ 397 417 void PIStdImgApp::Run() … … 409 429 // Creation et demarrage de l'objet de reveil periodique 410 430 // de la boucle d'evts 411 RunAlarm * mru = new RunAlarm(this); 412 //mru->Start(); 431 /* RunAlarm * mru = new RunAlarm(this); 432 mru->Start(); */ 433 Reveil* mrv = new Reveil(this); 434 mrv->start(); 413 435 // Demarrage du thread de l'interpreteur 414 436 CmdInterpreter()->start(); … … 420 442 421 443 444 thr_glsyn.lock(); // <ZThread> 445 //DBG int klp = 0; 422 446 while (mStop) { 423 thr_glsyn.lock(); // <ZThread>424 447 fg_glsynlock = true; 448 int nevtproc = 0; 425 449 while (XtAppPending(*appctx) != 0) { 426 450 XtAppNextEvent(*appctx, &evt); 427 451 XtDispatchEvent(&evt); 452 nevtproc++; 453 if (nevtproc >= 50) break; 428 454 } 429 455 fg_glsynlock = false; 430 thr_glsyn.unlock(); // <ZThread> 431 // thr_glsyn.wait(); 432 usleep(1000); 433 } 434 435 delete mru; 456 thr_glsyn.wait(); // <ZThread> 457 // cout << "DBG-Run:: Out of wait " << ++klp << endl; 458 // usleep(1000); 459 } 460 461 thr_glsyn.unlock(); // <ZThread> 462 mrv->Stop(); 463 delete mrv; 464 // delete mru; 436 465 return; 437 466 } … … 599 628 600 629 /* --Methode-- */ 601 int PIStdImgApp::DispImage(P2DArrayAdapter* nouv, string const & name, string const& sop, int oid) 630 int PIStdImgApp::DispImage(P2DArrayAdapter* nouv, string const & name, string const& sop, 631 int oid, bool fglock) 602 632 { 603 633 PIImage* pii; … … 626 656 627 657 // <ZThread> global PIApplication event loop synchronisation 628 ZSync zs(thr_glsyn, 2);658 if (fglock) ZSync zs(thr_glsyn, 2); 629 659 630 660 // Choix de la taille de fenetre … … 682 712 /* --Methode-- */ 683 713 int PIStdImgApp::DispScDrawer(PIDrawer* scd, string const & name, string const& sop, 684 string title, int oid )714 string title, int oid, bool fglock) 685 715 { 686 716 if (scd == NULL) … … 696 726 697 727 // <ZThread> global PIApplication event loop synchronisation 698 ZSync zs(thr_glsyn, 2);728 if (fglock) ZSync zs(thr_glsyn, 2); 699 729 700 730 // Trace en superpoistion … … 785 815 /* --Methode-- */ 786 816 int PIStdImgApp::Disp3DDrawer(PIDrawer3D* dr3, string const & name, string const& sop, 787 string title, int oid )817 string title, int oid, bool fglock) 788 818 { 789 819 if (dr3 == NULL) … … 800 830 801 831 // <ZThread> global PIApplication event loop synchronisation 802 ZSync zs(thr_glsyn, 2);832 if (fglock) ZSync zs(thr_glsyn, 2); 803 833 804 834 // Trace en superpoistion -
trunk/SophyaPI/PIext/pistdimgapp.h
r2490 r2491 61 61 62 62 // Methodes d'Affichage generique 63 int DispImage(P2DArrayAdapter* nouv, string const & name, string const & opt, int oid=0); 63 int DispImage(P2DArrayAdapter* nouv, string const & name, string const & opt, 64 int oid=0, bool fglock=true); 64 65 int DispScDrawer(PIDrawer* scd, string const & name, string const & opt, 65 string title="", int oid=0 );66 string title="", int oid=0, bool fglock=true); 66 67 int Disp3DDrawer(PIDrawer3D* scd, string const & name, string const & opt, 67 string title="", int oid=0 );68 string title="", int oid=0, bool fglock=true); 68 69 69 70 // Specification (de l'exterieur) de commande a executer -
trunk/SophyaPI/PIext/servnobjm.cc
r2419 r2491 47 47 48 48 /* --Methode-- */ 49 Services2NObjMgr::Services2NObjMgr( NamedObjMgr* omg,string& tmpdir)49 Services2NObjMgr::Services2NObjMgr(string& tmpdir) 50 50 { 51 51 SetTmpDir(tmpdir); 52 52 mImgapp = NULL; 53 mOmg = omg;53 mOmg = NULL; 54 54 dynlink = NULL; 55 55 } … … 59 59 { 60 60 CloseDLL(); 61 if (mOmg) delete mOmg; 61 62 } 62 63 … … 237 238 int rsid = mImgapp->DispScDrawer(dr, titre, dopt); 238 239 if (nom.length() > 0) { 239 mOmg->AddObj(vpy, nom);240 mOmg->AddWRsId(nom, rsid);240 MyObjMgr()->AddObj(vpy, nom); 241 MyObjMgr()->AddWRsId(nom, rsid); 241 242 } 242 243 } … … 304 305 int rsid = mImgapp->Disp3DDrawer(sdr, titre, dopt); 305 306 if (nom.length() > 0) { 306 mOmg->AddObj(mtx, nom);307 mOmg->AddWRsId(nom, rsid);307 MyObjMgr()->AddObj(mtx, nom); 308 MyObjMgr()->AddWRsId(nom, rsid); 308 309 } 309 310 } … … 327 328 fprintf(fip,"double %s(double ___dummy_variable___) \n{\n",func.c_str()); 328 329 // Add all variables already declared 329 DVList& varlist = mOmg->GetVarList();330 DVList& varlist = MyObjMgr()->GetVarList(); 330 331 DVList::ValList::const_iterator it; 331 332 for(it = varlist.Begin(); it != varlist.End(); it++) { … … 363 364 // Eventually store the result into variable or just print it 364 365 if(resultvarname.size()>0) { 365 if( mOmg->HasVar(resultvarname)) mOmg->DeleteVar(resultvarname);366 if(MyObjMgr()->HasVar(resultvarname)) MyObjMgr()->DeleteVar(resultvarname); 366 367 char str[512]; 367 368 if(result==0.) sprintf(str,"%f",result); … … 371 372 else sprintf(str,"%.17e",result); 372 373 } 373 mOmg->SetVar(resultvarname,(string)str);374 MyObjMgr()->SetVar(resultvarname,(string)str); 374 375 } else cout<<result<<" = "<<expval<<endl; 375 376 … … 382 383 { 383 384 NObjMgrAdapter* obja=NULL; 384 obja = mOmg->GetObjAdapter(nom);385 obja = MyObjMgr()->GetObjAdapter(nom); 385 386 if (obja == NULL) { 386 387 cout << "Services2NObjMgr::DisplayPoints2D() Error , No such object " << nom << endl; … … 422 423 { 423 424 NObjMgrAdapter* obja=NULL; 424 obja = mOmg->GetObjAdapter(nom);425 obja = MyObjMgr()->GetObjAdapter(nom); 425 426 if (obja == NULL) { 426 427 cout << "Services2NObjMgr::DisplayPoints3D() Error , No such object " << nom << endl; … … 461 462 { 462 463 NObjMgrAdapter* obja=NULL; 463 obja = mOmg->GetObjAdapter(nom);464 obja = MyObjMgr()->GetObjAdapter(nom); 464 465 if (obja == NULL) { 465 466 cout << "Services2NObjMgr::DisplayPoints2DW() Error , No such object " << nom << endl; … … 494 495 { 495 496 NObjMgrAdapter* obja=NULL; 496 obja = mOmg->GetObjAdapter(nom);497 obja = MyObjMgr()->GetObjAdapter(nom); 497 498 if (obja == NULL) { 498 499 cout << "Services2NObjMgr::ProjectH1() Error , No such object " << nom << endl; … … 504 505 NTuple* nt = NULL; 505 506 AnyDataObj* oh = NULL; 506 if (nomh1.length() > 0) oh= mOmg->GetObj(nomh1);507 if (nomh1.length() > 0) oh=MyObjMgr()->GetObj(nomh1); 507 508 else nomh1 = "/tmp/projh1d"; 508 509 if ( (oh != NULL) && (typeid(*oh) == typeid(Histo)) ) h1 = (Histo*)oh; // Pas de remise a zero ! h1->Zero(); … … 531 532 } 532 533 delete nt; 533 mOmg->AddObj(h1, nomh1);534 } 535 536 mOmg->DisplayObj(nomh1, dopt);534 MyObjMgr()->AddObj(h1, nomh1); 535 } 536 537 MyObjMgr()->DisplayObj(nomh1, dopt); 537 538 return; 538 539 } … … 543 544 { 544 545 NObjMgrAdapter* obja=NULL; 545 obja = mOmg->GetObjAdapter(nom);546 obja = MyObjMgr()->GetObjAdapter(nom); 546 547 if (obja == NULL) { 547 548 cout << "Services2NObjMgr::ProjectH2() Error , No such object " << nom << endl; … … 553 554 NTuple* nt = NULL; 554 555 AnyDataObj* oh = NULL; 555 if (nomh2.length() > 0) oh= mOmg->GetObj(nomh2);556 if (nomh2.length() > 0) oh=MyObjMgr()->GetObj(nomh2); 556 557 else nomh2 = "/tmp/projh2d"; 557 558 if ( (oh != NULL) && (typeid(*oh) == typeid(Histo2D)) ) h2 = (Histo2D*)oh; // Pas de remise a zero ! h2->Zero(); … … 581 582 } 582 583 delete nt; 583 mOmg->AddObj(h2, nomh2);584 } 585 586 mOmg->DisplayObj(nomh2, dopt);584 MyObjMgr()->AddObj(h2, nomh2); 585 } 586 587 MyObjMgr()->DisplayObj(nomh2, dopt); 587 588 return; 588 589 … … 604 605 { 605 606 NObjMgrAdapter* obja=NULL; 606 obja = mOmg->GetObjAdapter(nom);607 obja = MyObjMgr()->GetObjAdapter(nom); 607 608 if (obja == NULL) { 608 609 cout << "Services2NObjMgr::ProjectHProf() Error , No such object " << nom << endl; … … 614 615 NTuple* nt = NULL; 615 616 AnyDataObj* oh = NULL; 616 if (nomprof.length() > 0) oh= mOmg->GetObj(nomprof);617 if (nomprof.length() > 0) oh=MyObjMgr()->GetObj(nomprof); 617 618 else nomprof = "/tmp/projprof"; 618 619 if( (oh!=NULL) && (typeid(*oh) == typeid(HProf)) ) hprof = (HProf*)oh; … … 641 642 } 642 643 delete nt; 643 mOmg->AddObj(hprof, nomprof);644 MyObjMgr()->AddObj(hprof, nomprof); 644 645 } 645 646 hprof->UpdateHisto(); 646 647 647 mOmg->DisplayObj(nomprof, dopt);648 MyObjMgr()->DisplayObj(nomprof, dopt); 648 649 return; 649 650 } … … 655 656 { 656 657 NObjMgrAdapter* obja=NULL; 657 obja = mOmg->GetObjAdapter(nom);658 obja = MyObjMgr()->GetObjAdapter(nom); 658 659 if (obja == NULL) { 659 660 cout << "Services2NObjMgr::FillVect() Error , No such object: " << nom << endl; … … 664 665 Vector* v1 = NULL; 665 666 AnyDataObj* ov = NULL; 666 ov= mOmg->GetObj(nomvec);667 ov=MyObjMgr()->GetObj(nomvec); 667 668 if (ov != NULL) v1 = dynamic_cast<Vector *>(ov); 668 669 if (v1 == NULL) { … … 695 696 696 697 697 mOmg->DisplayObj(nomvec, dopt);698 MyObjMgr()->DisplayObj(nomvec, dopt); 698 699 return; 699 700 } … … 704 705 { 705 706 NObjMgrAdapter* obja=NULL; 706 obja = mOmg->GetObjAdapter(nom);707 obja = MyObjMgr()->GetObjAdapter(nom); 707 708 if (obja == NULL) { 708 709 cout << "Services2NObjMgr::FillMatx() Error , No such objet " << nom << endl; … … 713 714 Matrix* mtx = NULL; 714 715 AnyDataObj* om = NULL; 715 om= mOmg->GetObj(nommtx);716 om=MyObjMgr()->GetObj(nommtx); 716 717 if (om != NULL) mtx = dynamic_cast<Matrix *>(om); 717 718 if (mtx == NULL) { … … 746 747 747 748 748 mOmg->DisplayObj(nommtx, dopt);749 MyObjMgr()->DisplayObj(nommtx, dopt); 749 750 return; 750 751 … … 756 757 { 757 758 NObjMgrAdapter* obja=NULL; 758 obja = mOmg->GetObjAdapter(nom);759 obja = MyObjMgr()->GetObjAdapter(nom); 759 760 if (obja == NULL) { 760 761 cout << "Services2NObjMgr::ExpressionToVector() Error , No such object " << nom << endl; … … 789 790 } 790 791 delete nt; 791 mOmg->AddObj(vec, nomvec);792 mOmg->DisplayObj(nomvec, dopt);792 MyObjMgr()->AddObj(vec, nomvec); 793 MyObjMgr()->DisplayObj(nomvec, dopt); 793 794 return; 794 795 } … … 801 802 // les sur-numeraires sont mises a "def_val" par defaut. 802 803 { 803 AnyDataObj* mobj = mOmg->GetObj(nom);804 AnyDataObj* mobj = MyObjMgr()->GetObj(nom); 804 805 if(mobj == NULL) 805 806 {cout<<"NtFromASCIIFile() Error, object "<<nom<<" not existing"<<endl; … … 820 821 { 821 822 NObjMgrAdapter* obja=NULL; 822 obja = mOmg->GetObjAdapter(nom);823 obja = MyObjMgr()->GetObjAdapter(nom); 823 824 if (obja == NULL) { 824 825 cout << "Services2NObjMgr::FillNT() Error , No such object " << nom << endl; … … 830 831 NTuple* nt = NULL; 831 832 AnyDataObj* oh = NULL; 832 if (nomnt.length() > 0) oh= mOmg->GetObj(nomnt);833 if (nomnt.length() > 0) oh=MyObjMgr()->GetObj(nomnt); 833 834 else nomnt = "/tmp/fillnt"; 834 835 if ( (oh != NULL) && (typeid(*oh) == typeid(NTuple)) ) { … … 847 848 ComputeExpressions(obja, expx, expy, expz, expt, expcut, loop, nt, NULL, NULL); 848 849 849 if (fgnnt) mOmg->AddObj(nt, nomnt);850 if (fgnnt) MyObjMgr()->AddObj(nt, nomnt); 850 851 return; 851 852 … … 859 860 860 861 NObjMgrAdapter* obja=NULL; 861 obja = mOmg->GetObjAdapter(nom);862 obja = MyObjMgr()->GetObjAdapter(nom); 862 863 if (obja == NULL) { 863 864 cout << "Services2NObjMgr::FillNTFrCFile( " << nom << "...) No such object" <<endl; … … 882 883 if (nomnt.length() > 0) { 883 884 AnyDataObj* oh = NULL; 884 oh= mOmg->GetObj(nomnt);885 oh=MyObjMgr()->GetObj(nomnt); 885 886 if ( (oh != NULL) && (typeid(*oh) == typeid(NTuple)) ) { 886 887 nt = (NTuple*)oh; … … 953 954 mImgapp->RedirectStdOutErr(red); 954 955 955 if (fgnnt) mOmg->AddObj(nt, nomnt);956 if (fgnnt) MyObjMgr()->AddObj(nt, nomnt); 956 957 return; 957 958 } … … 962 963 { 963 964 NObjMgrAdapter* obja=NULL; 964 obja = mOmg->GetObjAdapter(nom);965 obja = MyObjMgr()->GetObjAdapter(nom); 965 966 if (obja == NULL) { 966 967 cout << "Services2NObjMgr::PrepareNTExpressionCFile( " << nom << "...) No such object" <<endl; … … 1044 1045 { 1045 1046 NObjMgrAdapter* obja=NULL; 1046 obja = mOmg->GetObjAdapter(nom);1047 obja = MyObjMgr()->GetObjAdapter(nom); 1047 1048 if (obja == NULL) { 1048 1049 cout << "Services2NObjMgr::FillGFD() Error , No such object "<<nom<<endl; … … 1082 1083 // Menage et table d'objets 1083 1084 delete nt; 1084 mOmg->AddObj(gfd, nomgfd);1085 MyObjMgr()->AddObj(gfd, nomgfd); 1085 1086 return; 1086 1087 } … … 1154 1155 // Menage et table d'objets 1155 1156 if( omg.GetObj(nomgfd) != NULL ) omg.DelObj(nomgfd); 1156 mOmg->AddObj(gfd,nomgfd);1157 MyObjMgr()->AddObj(gfd,nomgfd); 1157 1158 return; 1158 1159 } -
trunk/SophyaPI/PIext/servnobjm.h
r2419 r2491 13 13 #include <functional> 14 14 15 #include "nobjmgr.h" 15 16 #include "pdlmgr.h" 16 17 #include "dlftypes.h" … … 31 32 #endif 32 33 33 class NamedObjMgr;34 34 class PIStdImgApp; 35 35 class NObjMgrAdapter; … … 37 37 class Services2NObjMgr { 38 38 public: 39 Services2NObjMgr( NamedObjMgr* omg,string& tmpdir);39 Services2NObjMgr(string& tmpdir); 40 40 virtual ~Services2NObjMgr(); 41 41 … … 47 47 inline void SetImgApp(PIStdImgApp* app) {mImgapp = app; } 48 48 void SetTmpDir(string const & tmpdir); 49 49 inline NamedObjMgr* MyObjMgr() 50 { 51 if (mOmg == NULL) mOmg = new NamedObjMgr; 52 return mOmg; 53 } 50 54 // Trace de fonctions 1-D , 2-D 51 55 virtual void PlotFunc(string const & expfunc, string & nom, double xmin, double xmax,
Note:
See TracChangeset
for help on using the changeset viewer.