Calificación de plantilla de GDL
Una plantilla y todas las plantillas que se derivan directa o indirectamente de esa plantilla forman un árbol de herencia o subárbol. Sin embargo, las plantillas derivadas que han redefinido *Construcciones name se excluyen de este árbol.
Cuando una plantilla se denomina en una lista *Miembros, el analizador de GDL considera la plantilla con nombre y cada plantilla derivada de la plantilla con nombre como candidato para la asociación. Si hay más de una plantilla en este árbol de herencia que califica, el analizador seleccionará la plantilla que mejor se ajuste a los criterios para asociar con la entrada de datos. Para calificar como la plantilla que representará una entrada de datos determinada, la plantilla debe cumplir los siguientes criterios:
Una plantilla declarada como *Virtual se descalifica automáticamente. Sin embargo, se tienen en cuenta las plantillas derivadas.
La construcción *Name de la plantilla debe coincidir con la palabra clave de la entrada de datos. Tenga en cuenta que el *Nombre se puede heredar.
Si la entrada de datos es una construcción, un elemento de la lista *Instancias de la plantilla debe coincidir con el nombre de instancia de la construcción de datos. Además, todas las plantillas base de las que hereda la plantilla apta también deben cumplir este requisito. No todas las plantillas de una cadena de herencia deben tener una entrada *Instances; se supone que los que no tienen esta entrada cumplen este requisito de forma predeterminada.
Si hay más de una plantilla en un árbol de herencia calificado, se tienen en cuenta los siguientes criterios adicionales:
- Si una plantilla califica haciendo que cada plantilla de su cadena de herencia cumpla el requisito de nombre de instancia de forma predeterminada o mediante el carácter comodín <ANY> y si otra plantilla apta tiene una o varias plantillas en su cadena de herencia cumplen el requisito de nombre de instancia con una coincidencia explícita, se usará la plantilla que usa la coincidencia explícita.
- De las plantillas aptas restantes, se usará la plantilla más derivada.
- De las plantillas aptas restantes, se usará la plantilla definida más recientemente.