Version 3 (modified by 15 years ago) (diff) | ,
---|
Librerías C++ built-in TOL de enlace dinámico
Las librerías de enlace dinámico en TOL permiten la carga de objetos y funciones creados en C++ para implementar tareas específicas que resulten demasiado lentas en TOL y no sean lo suficientemente generalizables como para formar parte de las utilidades globales del núcleo de TOL.
Carga de librerías C++ built-in TOL
La función built-in de TOL
NameBlock LoadDynLib(Text libraryPath)
devuelve un NameBlock métodos y miembros escritos en C++ en una librería previamente compilada para su enlace dinámico. Una vez cargado el Nameblock no tiene nada de particular y puede ser usado como cualquier otro creado en el propio lenguaje TOL.
Uso de librerías C++ built-in TOL dentro de paquetes
No es posible crear un paquete de forma directa pero sí se puede usar como un miembro dentro de un paquete, adjuntándolo como recurso externo e incluyendo la llamada dentro del método StartActions.
NameBlock MyPackage = [[ ... //At creation time is initialized as trivial NameBlock NameBlock Tools = [[ Real _unused]]; ... Set _.autodoc.nonTolResources = { [[ Set CrossPlatform = { [[ Text cpp="cpp" ]] } ... Real StartActions(Real void) { NameBlock Tools := LoadDynLib("cpp/tools.dll"); ... }; ]];
Creación de librerías C++ built-in TOL
/* TOL Dynamic Library <NAME>.cpp Purpose: ... */ #define LOCAL_NAMEBLOCK _local_nameblock_ static BUserNameBlock* _local_unb_ = new BGraContensP<BNameBlock>("", new BNameBlock); static BNameBlock& _local_nameblock_ = _local_unb_->Contens(); //Entry point of library returns the NameBlock to LoadDynLib //This is the only one exported function BUserNameBlock* get_local_unb_<NAME>() { return(_local_unb_); } //Internal operator declaration DeclareContensClass(...) DefIntOpr(...) //External operator declaration DeclareContensClass(...) DefExtOpr(...) //Member declaration DeclareLocalMember(<TYPE>, <MEMBER_NAME>, <MEMBER_DESCRIPTION>, <MEMBER>)