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

Opened 15 years ago

Closed 14 years ago

#325 closed task (fixed)

obtención de direcciones de objetos

Reported by: josp Owned by: Pedro Gea
Priority: major Milestone: Development 0.6
Component: General Keywords: ObjectAddress
Cc: livanr68

Description

Desde el GUI se necesita obtener las direcciones de las instancia de objetos MMS. Cuando decimos direcciones nos referimos al resultado de la funcion nativa GetObjectAddress.

Pudiera ser algo como:

Text MMS::GetObjectAddress( Anything ObjectReference );

lo cual retornaría la dirección de un objeto referenciado por ObjectReference, ó

Set MMS::GetAllObjectAddress( Set Objects );

que retornaría las direcciones de los objetos referenciados en el conjunto Objects, pudiera estar implementado a partir de la función anterior.

Change History (7)

comment:1 Changed 15 years ago by Pedro Gea

Para obtener esa lista de direcciones de memoria basta con aplicar GetAddressFromObject a los respectivos métodos GetObject o GetObjects. Por ejemplo:

// Los modelos:
Set models = MMS::Container::GetModels(?);
// Sus direcciones:
Set model_addresses = EvalSet(MMS::Container::GetModels(?), GetAddressFromObject);

ó simplemente:

// Un modelo:
MMS::@Model model.1 = MMS::Container::GetModel(1);
// Sus dirección:
Text model.1_address = GetAddressFromObject(MMS::Container::GetModel(1));

Si se considera podrían hacerse funciones locales a la GUI para obtener con una sola llamada estas direcciones de memoria, aunque el uso de las expresiones anteriores no parece muy engorroso.

comment:2 Changed 15 years ago by Pedro Gea

Status: newaccepted

Se plantea una solución alternativa a la dirección de memoria del objeto.
Se trata de un nombre TOL único que permite el acceso sin ambigüedad al objeto.

Por ejemplo:

MMS::Container::_.models::Mat.Veh__1.0::_.submodels::Veh.Tur.Mat::_.expTerms::Pib.es.Men::_.parametersLinear::Linear.0

identificaría al parámetro lineal de un término explicativo del modelo de ejemplo de matriculación de vehículos.
Entiendo que esto es tan útil como tener la dirección de memoria y quizá menos propenso
a "fracasos" o problemas de referencias que dejan de existir.

comment:3 Changed 15 years ago by Pedro Gea

(In [1723]) Se introduce el método "GetAbsoluteIdentifier" en el módulo de modelos.
Éste proporciona un nombre único para cada objeto MMS de modo que pueda
accederse sin ambigüedad desde cualquier punto.
Se solucionan también pequeños errores encontrados en el camino.
Refs #325

comment:4 Changed 14 years ago by Pedro Gea

(In [1800]) Se completa el método GetAbsoluteIdentifier en otras clases.
Se implementa un método para construir un dataset con las previsiones obtenidas.
Refs #325, #176

comment:5 Changed 14 years ago by Pedro Gea

(In [1881]) Se introduce el método ::GetAbsoluteIdentifier en algunas clases de resultados y previsiones.
El método no puede implementarse como en otras clases al ser clases adaptadoras y no puede
generalizarse ya que el nombre del objeto adaptado "_<objectType>_" varía de una clase a otra.
Así que de momento los añadimos clase a clase según la necesidad.
Refs #325

comment:6 Changed 14 years ago by Pedro Gea

Priority: criticalmajor

El método ::GetAbsoluteIdentifier está incluido en la mayoría de las clases que se desplegarán en la GUI de MMS.
Falta el método en algunas clases de resultados y previsiones que pudieran aparecer en la GUI y que se tratarán cuando aparezca la necesidad.
También falta en las clases tipo Strategy, Settings y ResultsAdapter y en las clases diseñadas como clases independientes: @Transformation, @Interval, @NonLinearFilter y las clases de RandVar.
Para estas últimas habría que idear un mecanismo adecuado o buscar una alternativa válida para la interfaz gráfica.

comment:7 Changed 14 years ago by Pedro Gea

Resolution: fixed
Status: acceptedclosed

Las instancias de @Transformation, @Interval, @NonLinearFilter, @Settings o incluso de las variables aleatorias (como las del condicionamiento) se pueden tratar desde el formulario de su objeto padre o desde un formulario tipo tabla, de modo que no es necesario desplegarlas en forma de árbol.
Por esta razón se cierra el tique sin incorporar el método ::GetAbsoluteIdentifier a estas clases.
Créese un tique nuevo si surge cualquier necesidad respecto a este método o estás clases.

Note: See TracTickets for help on using tickets.