Changeset 171 in Sophya
- Timestamp:
- Dec 21, 1998, 9:49:55 AM (27 years ago)
- Location:
- trunk/SophyaPI/PIext
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PIext/dlftypes.h
r165 r171 14 14 #endif 15 15 16 typedef void (* DlFunction) (void);17 16 typedef double (* DlFunctionOfX) (double x); 18 17 typedef double (* DlFunctionOfXY) (double x, double y); -
trunk/SophyaPI/PIext/piacmd.cc
r165 r171 2 2 #include <stdlib.h> 3 3 #include <math.h> 4 5 #include <dlfcn.h>6 4 7 5 #include <iostream.h> … … 42 40 else { mObjMgr = new NamedObjMgr; mOmg = true; } 43 41 mImgApp = app; 44 char* varenv;45 TmpDir = "";46 if ( (varenv=getenv("PEIDA_TMP")) != NULL ) TmpDir = varenv;47 else if ( (varenv=getenv("TMPDIR")) != NULL ) TmpDir = varenv;48 int l = TmpDir.length();49 if ( (l>0) && (TmpDir[l-1] != '/') ) TmpDir += '/';50 42 system("cp history.pic hisold.pic"); 51 43 hist.open("history.pic"); 52 44 trace = false; timing = false; 53 45 gltimer = NULL; 54 d lhandle= NULL;46 dynlink = NULL; 55 47 } 56 48 … … 605 597 string& func4, string& func5) 606 598 { 607 string fnamesol = TmpDir + "spiup.so";608 599 string cmd; 609 600 int rc; 610 601 611 if (d lhandle) dlclose(dlhandle); dlhandle= NULL;602 if (dynlink) delete dynlink; dynlink = NULL; 612 603 usfmap.clear(); 613 cmd = "cp " + fnameso + " " + fnamesol; 614 rc = system(cmd.c_str()); 615 if (rc != 0) { cerr << "PIACmd::LinkUserFuncs() Error system(" << cmd << ") Rc= " << rc << endl; return(1); } 616 617 dlhandle = dlopen(fnamesol.c_str(), RTLD_NOW); 618 if (dlhandle == NULL) { 619 string sn = fnamesol; 604 605 dynlink = new PDynLinkMgr(fnameso, true); 606 if (dynlink == NULL) { 607 string sn = fnameso; 620 608 cerr << "PIACmd/LinkUserFuncs_Erreur: Erreur ouverture SO " << sn << endl; 621 609 sn = dlerror(); … … 630 618 if ((func1.length() < 1) || (func1 == "-") || (func1 == ".") ) goto fin; 631 619 // f = (DlUserProcFunction) dlsym(dlhandle, func1.c_str()); 632 f = (DlFunction) dlsym(dlhandle, func1.c_str());620 f = dynlink->GetFunction(func1); 633 621 if (f) { nok++; usfmap[func1] = f; } 634 622 else cerr << "PIACmd/LinkUserFuncs_Erreur: Erreur linking " << func1 << endl; … … 636 624 if ((func2.length() < 1) || (func2 == "-") || (func2 == ".") ) goto fin; 637 625 // f = (DlUserProcFunction) dlsym(dlhandle, func2.c_str()); 638 f = (DlFunction) dlsym(dlhandle, func2.c_str());626 f = dynlink->GetFunction(func2); 639 627 if (f) { nok++; usfmap[func2] = f; } 640 628 else cerr << "PIACmd/LinkUserFuncs_Erreur: Erreur linking " << func2 << endl; … … 642 630 if ((func3.length() < 1) || (func3 == "-") || (func3 == ".") ) goto fin; 643 631 // f = (DlUserProcFunction) dlsym(dlhandle, func3.c_str()); 644 f = (DlFunction) dlsym(dlhandle, func3.c_str());632 f = dynlink->GetFunction(func3); 645 633 if (f) { nok++; usfmap[func3] = f; } 646 634 else cerr << "PIACmd/LinkUserFuncs_Erreur: Erreur linking " << func3 << endl; … … 648 636 if ((func4.length() < 1) || (func4 == "-") || (func4 == ".") ) goto fin; 649 637 // f = (DlUserProcFunction) dlsym(dlhandle, func4.c_str()); 650 f = (DlFunction) dlsym(dlhandle, func4.c_str());638 f = dynlink->GetFunction(func4); 651 639 if (f) { nok++; usfmap[func4] = f; } 652 640 else cerr << "PIACmd/LinkUserFuncs_Erreur: Erreur linking " << func4 << endl; … … 654 642 if ((func5.length() < 1) || (func5 == "-") || (func5 == ".") ) goto fin; 655 643 // f = (DlUserProcFunction) dlsym(dlhandle, func5.c_str()); 656 f = (DlFunction) dlsym(dlhandle, func5.c_str());644 f = dynlink->GetFunction(func5); 657 645 if (f) { nok++; usfmap[func5] = f; } 658 646 else cerr << "PIACmd/LinkUserFuncs_Erreur: Erreur linking " << func5 << endl; 659 647 660 648 fin: 661 if (nok < 1) { dlclose(dlhandle); dlhandle = NULL;return(3); }649 if (nok < 1) { if (dynlink) delete dynlink; dynlink = NULL; return(3); } 662 650 else return(0); 663 651 } -
trunk/SophyaPI/PIext/piacmd.h
r165 r171 16 16 #include <map.h> 17 17 #endif 18 19 #include "pdlmgr.h" 18 20 19 21 #include "ctimer.h" … … 50 52 // typedef map<string, DlUserProcFunction, less<string> > UsFmap; 51 53 typedef map<string, DlFunction, less<string> > UsFmap; 52 void *dlhandle; // Pour le link dynamique54 PDynLinkMgr* dynlink; 53 55 UsFmap usfmap; 54 string TmpDir; // Repertoire pour les compilations / link dynamique55 56 56 57 57 }; -
trunk/SophyaPI/PIext/pigfd2.cc
r165 r171 53 53 Set3DView((xmin+xmax)/2., (ymin+ymax)/2, (zmin+zmax)/2., 54 54 (xmin+xmax)/2.+D , (ymin+ymax)/2.+2.*D , zmin+(zmax-zmin)*0.2, 0.3, 0.3); 55 56 xMin = xmin - 0.05*(xmax-xmin); 57 xMax = xmax + 0.05*(xmax-xmin); 58 yMin = ymin - 0.05*(ymax-ymin); 59 yMax = ymax + 0.05*(ymax-ymin); 60 zMin = zmin - 0.05*(zmax-zmin); 61 zMax = zmax + 0.05*(zmax-zmin); 62 55 63 } 56 64 -
trunk/SophyaPI/PIext/pintup3d.cc
r165 r171 68 68 Set3DView((xmin+xmax)/2., (ymin+ymax)/2, (zmin+zmax)/2., 69 69 (xmin+xmax)/2.+D , (ymin+ymax)/2.+2.*D , zmin+(zmax-zmin)*0.2, 0.3, 0.3); 70 71 xMin = xmin - 0.05*(xmax-xmin); 72 xMax = xmax + 0.05*(xmax-xmin); 73 yMin = ymin - 0.05*(ymax-ymin); 74 yMax = ymax + 0.05*(ymax-ymin); 75 zMin = zmin - 0.05*(zmax-zmin); 76 zMax = zmax + 0.05*(zmax-zmin); 77 70 78 // printf("PINTuple3D::UpdateLimits() : %g-%g %g-%g %g-%g (%g) \n", xmin,xmax,ymin,ymax,zmin,zmax,D); 71 79 // printf("PINTuple3D::UpdateLimits() : %g %g %g << %g %g %g \n", -
trunk/SophyaPI/PIext/servnobjm.cc
r165 r171 2 2 #include <stdlib.h> 3 3 #include <ctype.h> 4 5 #include <dlfcn.h>6 4 7 5 #include <iostream.h> … … 44 42 { 45 43 TmpDir = tmpdir; 44 PDynLinkMgr::SetTmpDir(tmpdir); 46 45 mImgapp = app; 47 d lhandle= NULL;46 dynlink = NULL; 48 47 InitGrAttNames(); 49 48 } … … 339 338 string fnameobj = fnamer + ".o" ; 340 339 string fnameso = fnamer + ".so"; 341 string cmd;342 int rc;343 344 345 // Compilation du fichier346 cmd = "cc -c -o " + fnameobj + " " + fname;347 rc = system(cmd.c_str());348 349 if (rc != 0) {350 printf("LinkFunctionFromFile_Do> %s (Rc=%d)\n", cmd.c_str(), rc);351 return(NULL);352 }353 #if defined(OSF1)354 cmd = "ld -shared -o " + fnameso + " -all " + fnameobj + " -none -lm -lc";355 #else356 cmd = "ld -shared -o " + fnameso + " " + fnameobj + " -lm -lc";357 #endif358 rc = system(cmd.c_str());359 if (rc != 0 ) {360 printf("LinkFunctionFromFile_Do> %s (Rc=%d)\n", cmd.c_str(), rc);361 return(NULL);362 }363 340 364 341 // Le link dynamique 365 342 CloseDLL(); 366 dlhandle = dlopen(fnameso.c_str(), RTLD_NOW); 367 if (dlhandle == NULL) { 368 string sn = fnameso; 369 cerr << "NamedObjMgr/FunctionFromFile_Erreur: Erreur ouverture SO " << sn << endl; 370 sn = dlerror(); 371 cerr << "Loader Error (dlerror()) :" << sn; 343 dynlink = PDynLinkMgr::BuildFromCFile(fname); 344 if (dynlink == NULL) { 345 cerr << "NamedObjMgr/LinkFunctionFromFile_Erreur: Erreur ouverture SO " << endl; 372 346 return(NULL); 373 347 } 374 348 375 DlFunction retfunc = (DlFunction) dlsym(dlhandle,funcname);349 DlFunction retfunc = dynlink->GetFunction(funcname); 376 350 if (retfunc == NULL) { 377 351 string sn = funcname; … … 386 360 void Services2NObjMgr::CloseDLL() 387 361 { 388 if (d lhandle) dlclose(dlhandle); dlhandle= NULL;362 if (dynlink) delete dynlink; dynlink = NULL; 389 363 } 390 364 -
trunk/SophyaPI/PIext/servnobjm.h
r165 r171 12 12 #include "ctimer.h" 13 13 14 #include "pdlmgr.h" 14 15 #include "dlftypes.h" 15 16 … … 57 58 GrAttNames GrAzoom; 58 59 59 void* dlhandle; // shared-lib lib.so60 string TmpDir; // Pour le link dynamique60 PDynLinkMgr * dynlink; // shared-lib lib.so 61 string TmpDir; // Pour fichiers temporaires 61 62 62 63 PIStdImgApp* mImgapp;
Note:
See TracChangeset
for help on using the changeset viewer.