close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Changes between Version 3 and Version 4 of LoadDynLib


Ignore:
Timestamp:
Aug 2, 2010, 11:21:22 AM (15 years ago)
Author:
Víctor de Buen Remiro
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • LoadDynLib

    v3 v4  
    5050== Creación de librerías C++ built-in TOL ==
    5151
     52Las macros de creación de operadores y las sentencias usadas en el código C++ de TOL para
     53la creación de variables están pensadas para generarlo todo en el ámbito global pero este
     54tipo de librerías deben restringirse a un uso local, por lo que es necesario hacer algún
     55trabajo previo que indique al sistema lo que debe hacer.
     56
     57La existencia de la macro LOCAL_NAMEBLOCK indicará a la macro de definición de métodos
     58{{{DefExtOpr}}} que se encuentran en un ámbito local correspondiente al NameBlock
     59especificado como _local_nameblock_. Por lo tanto, debe llamarse antes de hacer la
     60inclusión de las mismas. Como sólo es una macro no es necesario que la variable C++
     61_local_nameblock_ exista de antemano, basta con que exista antes de llamar a la macro
     62{{{DefExtOpr}}}.
     63
     64La macro de creación de miembros {{{DeclareLocalMember}}} se encarga de crear la
     65variable TOL y de añadirla al NameBlock _local_nameblock_.
     66
     67Los métodos sólo necesitan llamar cuál es el NameBlock al que pertenecen para acceder al resto
     68de métodos y miembros.
     69
     70El siguiente código puede servir de plantilla para la creación de estas librerías
     71
    5272{{{
    5373#!cpp
     
    5878*/
    5979
     80//Starts local namebock scope
    6081#define LOCAL_NAMEBLOCK _local_nameblock_
    6182
     83#include <tol/tol_bnameblock.h>
     84...
     85#include ...
     86
     87//Creates local nameblock container
    6288static BUserNameBlock* _local_unb_ = new BGraContensP<BNameBlock>("", new BNameBlock);
     89
     90//Creates the reference to local nameblock
    6391static BNameBlock& _local_nameblock_ = _local_unb_->Contens();
    6492
     
    7098}
    7199
    72 //Internal operator declaration
    73 DeclareContensClass(...)
    74 DefIntOpr(...)
     100//Member declaration
     101DeclareLocalMember(TYPE, MEMBER_NAME, MEMBER_DESCRIPTION, MEMBER);
    75102
    76103//External operator declaration
    77 DeclareContensClass(...)
    78 DefExtOpr(...)
     104DeclareContensClass(ANY , BTMPCLASS, BCONTENSCLASS)
     105DefExtOpr(ORD,BCONTENSCLASS,NAME,MINARG,MAXARG,LISTGRA,LISTARGS,DES,CL)
     106void BCONTENSCLASS::CalcContens()
     107{
     108  TYPE aux = MEMBER_NAME;
     109  ...
     110}
    79111
    80 //Member declaration
    81 DeclareLocalMember(<TYPE>, <MEMBER_NAME>, <MEMBER_DESCRIPTION>, <MEMBER>)
     112
    82113
    83114}}}