Changeset 171 in Sophya


Ignore:
Timestamp:
Dec 21, 1998, 9:49:55 AM (27 years ago)
Author:
ercodmgr
Message:

Adaptation a PDynLinkMgr Reza 21/12/98

Location:
trunk/SophyaPI/PIext
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/PIext/dlftypes.h

    r165 r171  
    1414#endif
    1515
    16 typedef void (* DlFunction) (void);
    1716typedef double (* DlFunctionOfX) (double x);
    1817typedef double (* DlFunctionOfXY) (double x, double y);
  • trunk/SophyaPI/PIext/piacmd.cc

    r165 r171  
    22#include <stdlib.h>
    33#include <math.h>
    4 
    5 #include <dlfcn.h>
    64
    75#include <iostream.h>
     
    4240else { mObjMgr = new NamedObjMgr;  mOmg = true; }
    4341mImgApp = 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 += '/';
    5042system("cp history.pic hisold.pic");
    5143hist.open("history.pic");
    5244trace = false;   timing = false;
    5345gltimer = NULL;
    54 dlhandle = NULL;
     46dynlink = NULL;
    5547}
    5648
     
    605597                          string& func4, string& func5)
    606598{
    607 string fnamesol = TmpDir + "spiup.so";
    608599string cmd;
    609600int rc;
    610601
    611 if (dlhandle) dlclose(dlhandle);    dlhandle = NULL;
     602if (dynlink) delete dynlink;    dynlink = NULL;
    612603usfmap.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
     605dynlink = new PDynLinkMgr(fnameso, true);
     606if (dynlink == NULL) {
     607  string sn = fnameso;
    620608  cerr << "PIACmd/LinkUserFuncs_Erreur: Erreur ouverture SO " << sn << endl;
    621609  sn = dlerror();
     
    630618if ((func1.length() < 1) || (func1 == "-") || (func1 == ".") )  goto fin;
    631619// f = (DlUserProcFunction)  dlsym(dlhandle, func1.c_str());
    632 f = (DlFunction)  dlsym(dlhandle, func1.c_str());
     620f = dynlink->GetFunction(func1);
    633621if (f) { nok++;  usfmap[func1] = f; }
    634622else cerr << "PIACmd/LinkUserFuncs_Erreur: Erreur linking " << func1 << endl;
     
    636624if ((func2.length() < 1) || (func2 == "-") || (func2 == ".") )  goto fin;
    637625// f = (DlUserProcFunction)  dlsym(dlhandle, func2.c_str());
    638 f = (DlFunction)  dlsym(dlhandle, func2.c_str());
     626f = dynlink->GetFunction(func2);
    639627if (f) { nok++;  usfmap[func2] = f; }
    640628else cerr << "PIACmd/LinkUserFuncs_Erreur: Erreur linking " << func2 << endl;
     
    642630if ((func3.length() < 1) || (func3 == "-") || (func3 == ".") )  goto fin;
    643631// f = (DlUserProcFunction)  dlsym(dlhandle, func3.c_str());
    644 f = (DlFunction)  dlsym(dlhandle, func3.c_str());
     632f = dynlink->GetFunction(func3);
    645633if (f) { nok++;  usfmap[func3] = f; }
    646634else cerr << "PIACmd/LinkUserFuncs_Erreur: Erreur linking " << func3 << endl;
     
    648636if ((func4.length() < 1) || (func4 == "-") || (func4 == ".") )  goto fin;
    649637// f = (DlUserProcFunction)  dlsym(dlhandle, func4.c_str());
    650 f = (DlFunction)  dlsym(dlhandle, func4.c_str());
     638f = dynlink->GetFunction(func4);
    651639if (f) { nok++;  usfmap[func4] = f; }
    652640else cerr << "PIACmd/LinkUserFuncs_Erreur: Erreur linking " << func4 << endl;
     
    654642if ((func5.length() < 1) || (func5 == "-") || (func5 == ".") )  goto fin;
    655643// f = (DlUserProcFunction)  dlsym(dlhandle, func5.c_str());
    656 f = (DlFunction)  dlsym(dlhandle, func5.c_str());
     644f = dynlink->GetFunction(func5);
    657645if (f) { nok++;  usfmap[func5] = f; }
    658646else cerr << "PIACmd/LinkUserFuncs_Erreur: Erreur linking " << func5 << endl;
    659647
    660648fin:
    661 if (nok < 1) { dlclose(dlhandle);    dlhandle = NULL; return(3); }
     649if (nok < 1) { if (dynlink) delete dynlink;    dynlink = NULL; return(3); }
    662650else return(0);
    663651}
  • trunk/SophyaPI/PIext/piacmd.h

    r165 r171  
    1616#include <map.h>
    1717#endif
     18
     19#include "pdlmgr.h"
    1820
    1921#include "ctimer.h"
     
    5052// typedef map<string, DlUserProcFunction, less<string> > UsFmap;
    5153typedef map<string, DlFunction, less<string> > UsFmap;
    52   void *dlhandle;      // Pour le link dynamique
     54  PDynLinkMgr* dynlink;
    5355  UsFmap usfmap;
    54   string TmpDir;       // Repertoire pour les compilations / link dynamique
    55 
    5656
    5757};
  • trunk/SophyaPI/PIext/pigfd2.cc

    r165 r171  
    5353Set3DView((xmin+xmax)/2., (ymin+ymax)/2, (zmin+zmax)/2.,
    5454          (xmin+xmax)/2.+D , (ymin+ymax)/2.+2.*D , zmin+(zmax-zmin)*0.2, 0.3, 0.3); 
     55
     56xMin = xmin - 0.05*(xmax-xmin);
     57xMax = xmax + 0.05*(xmax-xmin);
     58yMin = ymin - 0.05*(ymax-ymin);
     59yMax = ymax + 0.05*(ymax-ymin);
     60zMin = zmin - 0.05*(zmax-zmin);
     61zMax = zmax + 0.05*(zmax-zmin);
     62
    5563}
    5664
  • trunk/SophyaPI/PIext/pintup3d.cc

    r165 r171  
    6868  Set3DView((xmin+xmax)/2., (ymin+ymax)/2, (zmin+zmax)/2.,
    6969            (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
    7078//  printf("PINTuple3D::UpdateLimits() : %g-%g  %g-%g  %g-%g (%g) \n", xmin,xmax,ymin,ymax,zmin,zmax,D);
    7179//  printf("PINTuple3D::UpdateLimits() :  %g %g %g << %g %g %g \n",
  • trunk/SophyaPI/PIext/servnobjm.cc

    r165 r171  
    22#include <stdlib.h>
    33#include <ctype.h>
    4 
    5 #include <dlfcn.h>
    64
    75#include <iostream.h>
     
    4442{
    4543TmpDir = tmpdir;
     44PDynLinkMgr::SetTmpDir(tmpdir);
    4645mImgapp = app;
    47 dlhandle = NULL;
     46dynlink = NULL;
    4847InitGrAttNames();
    4948}
     
    339338string fnameobj = fnamer + ".o" ;
    340339string fnameso = fnamer + ".so";
    341 string cmd;
    342 int rc;
    343 
    344 
    345 // Compilation du fichier
    346 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 #else
    356   cmd = "ld -shared -o " + fnameso + " " + fnameobj + " -lm -lc";
    357 #endif
    358 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   }
    363340
    364341//  Le link dynamique
    365342CloseDLL();
    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;
     343dynlink = PDynLinkMgr::BuildFromCFile(fname);
     344if (dynlink == NULL) {
     345  cerr << "NamedObjMgr/LinkFunctionFromFile_Erreur: Erreur ouverture SO " << endl;
    372346  return(NULL);
    373347  }
    374348
    375 DlFunction retfunc = (DlFunction) dlsym(dlhandle, funcname);
     349DlFunction retfunc = dynlink->GetFunction(funcname);
    376350if (retfunc == NULL) {
    377351  string sn = funcname;
     
    386360void Services2NObjMgr::CloseDLL()
    387361{
    388 if (dlhandle) dlclose(dlhandle);    dlhandle = NULL;
     362if (dynlink) delete dynlink;   dynlink = NULL;
    389363}
    390364
  • trunk/SophyaPI/PIext/servnobjm.h

    r165 r171  
    1212#include "ctimer.h"
    1313
     14#include "pdlmgr.h"
    1415#include "dlftypes.h"
    1516
     
    5758  GrAttNames GrAzoom; 
    5859
    59   void* dlhandle;  // shared-lib lib.so
    60   string TmpDir;   // Pour le link dynamique
     60  PDynLinkMgr * dynlink;  // shared-lib lib.so
     61  string TmpDir;          // Pour fichiers temporaires
    6162
    6263  PIStdImgApp* mImgapp;
Note: See TracChangeset for help on using the changeset viewer.