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.

Opened 14 years ago

Closed 14 years ago

#1014 closed enhancement (fixed)

Extensión de UsingNameBlock a miembros no públicos

Reported by: Víctor de Buen Remiro Owned by: Víctor de Buen Remiro
Priority: highest Milestone: Mantainance
Component: OOP Version:
Severity: blocker Keywords:
Cc:

Description

UsingNameBlock sólo permite usar los miembros públicos pero a veces puede ser útil exportar los de sólo lectura y los privados.

Por ejemplo en la depuración de código puede ser muy útil para poder correr trozos de código en el ámbito global.

Change History (3)

comment:1 Changed 14 years ago by Víctor de Buen Remiro

(In [2689]) Refs #1014

comment:2 Changed 14 years ago by Víctor de Buen Remiro

(In [2690]) Refs #1014
just description

comment:3 Changed 14 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: newclosed

La API de la función queda ahora sí:

Real UsingNameBlock(
  NameBlock nameBlock [, 
  Real usingAlsoReadOnly = False,
  Real usingAlsoPrivate = False])

En determinadas circunstancias los miembros públicos de un NameBlock pueden pasar al ámbito global, es decir, se puede acceder a ellos sin explicitarlo con ::
Ello se logra con el operador

  Real UsingNameBlock(<nameblock_id>)

El operador UsingNameBlock devuelve cierto si es compatible con el resto de variables de tipo NameBlock actualmente globalizadas, es decir, si no contiene ningún miembro público con el mismo nombre que otro o que una variable global.
Los miembros que ya estuvieran presentes no serán accesibles de forma implícita pero sí mediante :: y se mostrará un mensaje de aviso para advertirlo.
Este operador no surte efecto si se llama en ambiente local, lo cual incluye dentro de un NameBlock, y devolverá un error si se intenta.
Si usingAlsoReadOnly es cierto los miembros de solo lectura también serán exportados.
Si usingAlsoPrivate es cierto los miembros privados también serán exportados.

ATENCION: No se puede usar esta función varias veces con diferentes argumentos para un mismo NameBlock en una misma sesión TOL. TOL se cae y no veo forma de evitarlo. Como se trata de una herramienta de depuración para usuarios expertos de momento se quedará así.

Note: See TracTickets for help on using tickets.