Author: allison
Date: Fri Aug 15 05:15:46 2008
New Revision: 30250

Modified:
   trunk/docs/pdds/pdd27_multiple_dispatch.pod

Log:
[pdd] Refine the interface for MultiSubs, providing lookups for dispatch
alternates without invocation.


Modified: trunk/docs/pdds/pdd27_multiple_dispatch.pod
==============================================================================
--- trunk/docs/pdds/pdd27_multiple_dispatch.pod (original)
+++ trunk/docs/pdds/pdd27_multiple_dispatch.pod Fri Aug 15 05:15:46 2008
@@ -29,18 +29,21 @@
 
 =over 4
 
-=item - Parrot supports multiple dispatch in opcodes and user-defined routines
+=item - Parrot supports multiple dispatch in opcodes and user-defined routines.
 
-=item - A single dispatch system supports MMD in both contexts
+=item - A single dispatch system supports MMD in both contexts.
 
 =item - For user-defined subroutines and methods, the dispatch system is
-pluggable, allowing users to swap in their own type-matching algorithms
+pluggable, allowing users to swap in their own type-matching algorithms.
 
 =item - For opcodes, the dispatch system is merely extensible, allowing users
-to define alternates with their own types
+to define alternates with their own types.
 
-=item Dispatch considers both low-level (register) types and high-level (PMC)
-types, as well as inherited and composed types
+=item - Dispatch considers both low-level (register) types and high-level (PMC)
+types, as well as inherited and composed types.
+
+=item - Dispatch does not consider argument values. HLLs with dispatch systems
+that do consider argument values will implement their own pluggable matching.
 
 =back
 
@@ -84,23 +87,45 @@
 Add a Sub or NCI sub to the list of candidates. Throw an exception if the
 value passed in is anything other than a Sub or NCI sub.
 
-=item set_pmc_keyed_int
+=item set_pmc_keyed_int [deprecated]
 
 Add a Sub or NCI sub to the list of candidates at a particular position in the
 list. Throw an exception if the value passed in is anything other than a Sub
 or NCI sub.
 
+{{ NOTE: deprecated because MultiSub is no longer an array. }}
+
+=item get_pmc
+
+Return an array of matching candidates, sorted from best matching to worst
+matching, for the current call arguments.
+
+=item get_pmc_keyed
+
+Return an array of matching candidates, sorted from best matching to worst
+matching, for a passed in signature. The signature passed in is an array of
+PMCs, and the types are extracted from the types of the array elements.
+
+=item get_pmc_keyed_string
+
+Return an array of matching candidates, sorted from best matching to worst
+matching, for a passed in signature. The signature passed in is a string of
+space-delimited type names.
+
 =item invoke
 
-Invoke the best matching candidate for the current call arguments. This vtable
+Return a function pointer to the best matching candidate for the current call
+arguments, and set up the interpreter preparing for invocation. This vtable
 function calls C<Parrot_mmd_sort_candidate_list> from the public MMD API, but
 may be changed to call C<Parrot_mmd_invoke>.
 
-=item set_integer_keyed_int, set_number_keyed_int, set_string_keyed_int
+=item set_integer_keyed_int, set_number_keyed_int, set_string_keyed_int 
[deprecated]
 
 Throw an exception, as an integer, float, or string value is not a Sub or NCI
 sub. (Masks the vtable functions inherited from ResizablePMCArray.)
 
+{{NOTE: no longer needed, since not inheriting from ResizablePMCArray.}}
+
 =back
 
 =head3 PIR subroutine attributes

Reply via email to