Changeset c566d35 in tol


Ignore:
Timestamp:
Aug 4, 2010, 11:45:43 PM (16 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
1a564aa
Parents:
21dc548
Message:

Refs #956
Refs #957
DefMethod must return an instance of BUserCode
Calling lt_dlinit
Prefixing messages

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@2450 be4846ae-f051-483a-831f-b64e7d08527f

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tol/LoadDynLib/LoadDynLib.cpp

    r21dc548 rc566d35  
    2929#endif
    3030
     31#include "tol_LoadDynLib.h"
    3132#include <tol/tol_bnameblock.h>
    3233#include <tol/tol_blanguag.h>
    … …  
    3839typedef void* (*get_nb_t)(void);
    3940
     41static int  lt_dlinit_ =  lt_dlinit();
    4042
    4143//--------------------------------------------------------------------
    42 BExternalOperator* NewExternalOperator(
     44TOL_API BUserCode* NewMethod(
     45  BNameBlock& nb,
     46  const BText& file,
    4347  const BText& name,
    4448  BGrammar* gra,
    … …  
    4953  const BText& args,
    5054  const BText& desc,
    51   BOperClassify* cl       )
     55  BOperClassify* cl)
    5256//--------------------------------------------------------------------
    5357{
    54   return(new BExternalOperator(
    55     name,gra,grammars,evaluator,min,max,args,desc,cl));
     58  BExternalOperator* opr = new BExternalOperator(
     59    "",gra,grammars,evaluator,min,max,args,desc,cl);
     60  opr->PutCppFile(file),   
     61  opr->PutName(name);
     62  BCode code;
     63  BUserCode* uCode = new BContensCode("", code, desc);
     64  uCode->Contens().PutOperator(opr);
     65  uCode->PutName(name);
     66  uCode->PutDescription(desc);
     67  nb.AddElement(uCode,true);
     68  return(uCode);
    5669}
    5770
    … …  
    98111    libraryName = Text(Car(Cdr(arg)));
    99112  }
     113//Std(BText("\nTRACE BLoadDynLib::Evaluator 1 libraryPath=")+libraryPath);
     114//Std(BText("\nTRACE BLoadDynLib::Evaluator 2 libraryName=")+libraryName);
    100115  BUserNameBlock* unb = NULL;
    101   //VBR: Jorge, inserta aquí el código que enlaza con la dll y pon
    102   //el resultado en unb para devolverlo
    103116
    104117  lt_dlhandle handleLib;
    … …  
    106119  // abro la DynLib
    107120  handleLib = lt_dlopen( libraryPath );
    108   if ( !handleLib ) {
     121  if ( !handleLib )
     122  {
     123  //Std(BText("\nTRACE BLoadDynLib::Evaluator 3 lt_dlerror='")+lt_dlerror()+"'");
    109124    BText reason( lt_dlerror( ) );
    110     Error( reason );
    111   } else {
     125    Error(BText("[LoadDynLib] lt_dlerror:'")+reason+"'");
     126  }
     127  else
     128  {
    112129    // si OK, pido el nameblock
    113130    BText functionName( "GetDynLibNameBlock" );
    114131    functionName += libraryName;
    115  
     132  //Std(BText("\nTRACE BLoadDynLib::Evaluator 4 functionName=")+functionName);
    116133    get_nb_t getNameBlock =
    117134      reinterpret_cast<get_nb_t>( lt_dlsym( handleLib, functionName ) );
    118     if ( !getNameBlock ) {
     135    if ( !getNameBlock )
     136    {
     137    //Std(BText("\nTRACE BLoadDynLib::Evaluator 5 lt_dlerror='")+lt_dlerror()+"'");
    119138      BText reason( lt_dlerror( ) );
    120       Error( reason );
    121     } else {
     139      Error(BText("[LoadDynLib] lt_dlerror:'")+reason+"'");
     140    }
     141    else
     142    {
     143    //Std(BText("\nTRACE BLoadDynLib::Evaluator 6"));
    122144      unb = reinterpret_cast<BUserNameBlock*>((*getNameBlock)());
    123       if ( !unb ) {
    124         Error( "No se pudo convertir a NameBlock: dynamic_cast<BUserNameBlock*>" );
     145      if ( !unb )
     146      {
     147      //Std(BText("\nTRACE BLoadDynLib::Evaluator 7"));
     148        Error(BText("[LoadDynLib]")+
     149              "No se pudo convertir a NameBlock: dynamic_cast<BUserNameBlock*>" );
    125150      }
    126151    }
    127152  }
     153//Std(BText("\nTRACE BLoadDynLib::Evaluator 8"));
    128154  //Al final hay que destruir la lista de argumentos antes de salir
    129155  DESTROY(arg);
Note: See TracChangeset for help on using the changeset viewer.