A method and system for efficiently resolving the multi-method dispatching
problem provided. The dispatching problem is reduced to geometric problems
on multi-dimensional grids and new data structures are provided for the
resulting geometric problems. In particular, methods having the same name
are mapped to a set of rectangles based on a pair of numbers associated
with each argument. The pair of numbers is an interval identifying the
position of the argument in a class hierarchy tree. The interval is found
by computing an Euler Tour of the class hierarchy tree. For a given method
invocation in an object-oriented program, the method invocation is mapped
to a point based on one of the numbers in the interval associated with
each argument in the invocation. The problem of finding the most specific
method for the method invocation is thus transformed into the so-called
point enclosure problem in geometry, in which the smallest rectangle is
found which encloses a given point. To help find efficient solutions to
the point enclosure problem, the set of rectangles is broken into a number
of subsets having certain geometric properties and stored in efficient
data structures. Queries are performed on the various data structures to
find the smallest or minimal rectangle, if any, in the various subsets.
The result is either the identification of the minimal rectangle overall,
or of an ambiguity requiring resolution by the programmer.
Une méthode et un système pour résoudre efficacement la multi-méthode expédiant le problème fourni. Le problème d'expédition est réduit aux problèmes géométriques sur des grilles multidimensionnelles et de nouvelles structures de données sont données pour les problèmes géométriques résultants. En particulier, des méthodes ayant le même nom sont tracées à un ensemble de rectangles basés sur une paire de nombres liés à chaque argument. La paire de nombres est un intervalle identifiant la position de l'argument dans un arbre de hiérarchie de classe. L'intervalle est trouvé en calculant une excursion d'Euler de l'arbre de hiérarchie de classe. Pour une invocation donnée de méthode dans un programme orienté objectivement, l'invocation de méthode est tracée à un point basé sur un des nombres dans l'intervalle lié à chaque argument dans l'invocation. Le problème de trouver la méthode la plus spécifique pour l'invocation de méthode est ainsi transformé en prétendu problème de clôture de point dans la géométrie, dans laquelle on trouve le plus petit rectangle qui enferme un point donné. Pour aider à trouver les solutions efficaces au problème de clôture de point, l'ensemble de rectangles est cassé dans un certain nombre de sous-ensembles ayant certaines propriétés géométriques et entreposés en structures de données efficaces. Des questions sont exécutées sur les diverses structures de données pour trouver le plus petit ou minimal rectangle, le cas échéant, dans les divers sous-ensembles. Le résultat est l'identification du rectangle minimal en général, ou d'une ambiguïté exigeant la résolution par le programmeur.