En un programa tengo una cuadrícula, y en cada cuadro de la cuadrícula puedo tener un y sólo un objeto (procesos). Puedo guardar un array bidimensional con referencias a los procesos en cada elemento. El problema es que los objetos que puedo tener en la cuadrícula no son de un solo tipo de proceso; y me gustaría, cuando leo la cuadrícula y encuentro un proceso, saber de qué tipo es.
Sí, puedo hacerme otro array donde guarde un enum de qué tipo de objeto hay en cada cuadro, pero eso me parece un poco feo; sobre todo si es posible, dado el id de un proceso; averiguar de qué tipo es.
Gracias ;)
puedes crearte una variable local con el tipo de cada proceso, y una vez q tienes el ID del proceso, leer la variable local para saber q tipo es.
nativamente no hay forma salvo la mencionada por KeoH... aunque puede que pronto meta alguna funcion o variable local interna...
Ok, dado que el tipo de procesos que puedo meter en esa cuadrícula es limitado, supongo que de momento me haré una "cuadrícula de tipos" donde indique de qué tipo es el proceso en cada hueco.
Gracias.
Pero si creo recordar que existe una variable local RESERVADA que lo dice. Ojo, que al ser reservada es crítico no andar jugando con ella (sólo lectura, WARNING). Lo que ya no se es si se puede comparar con "type mi_proceso".
Habilitad el modo debug, escribid locals y revisad la estructura RESERVED.
Pero la solución de KeoH es la más elegante: defines tus propios valores, y si lo haces bien, puedes usar comparadores > y < o operaciones binarias para obtener un grupo de procesos (múltiplos de 4, los que tengan el tercer bit a 1, los que tengan módulo 3...).
es correcto, la local reserved.process_type coincide con el (type proceso)... me habia olvidado de eso...
pero hay que tener mucho cuidado con esta variable, no cambiar su valor por ninguna circunstancia.
es mas las agregue al mod_proc y mod_grproc, pero nunca le di uso... se ve que algo tenia pensado hacer con ellas... y bueno... ya no recuerdo que era.
O sea, que puedo decir...
id = array_de_ids[4][5]
switch(id.process_type)
{
case type manzana: comer(); break;
case type manzana_podrida: no_comer(); break;
}
(no recuerdo la sintaxis del switch en bennu xD, pero entendéis lo que quiero decir... )
id.reserved.process_type
y es
case ..:
end
Quote from: SplinterGU on November 01, 2011, 03:25:06 PM
id.reserved.process_type
y es
case ..:
end
Ok, muchas gracias!